UNPKG

first-npm-package-nicule

Version:

This isi first npm package

33 lines (30 loc) 1.18 kB
import { Hypermedia, HypermediaAction, HypermediaField } from 'first-npm-package-nicule/core'; export function groupAs(newName: string, fieldNamesToGroup: Array<string>, flex: Array<number> = [1]): (hypermediaAction: HypermediaAction, hypermedia: Hypermedia) => HypermediaAction { return (hypermediaAction: HypermediaAction) => { const { fields: oldFields, ...rest } = hypermediaAction; const fields = []; const groupedFields = []; let insertionIndex: number; oldFields.forEach((oldField, index) => { if (fieldNamesToGroup.includes(oldField.name)) { if (insertionIndex === undefined) { insertionIndex = index; } groupedFields.push(oldField); } else { fields.push(oldField); } }); const newField: HypermediaField = { name: newName, fields: groupedFields, type: 'group', flex }; fields.splice(insertionIndex, 0, newField); return { ...rest, fields }; }; }