import uniqueId from 'lodash/uniqueId'; import { BaseOptionProps } from './types'; export function groupBy(option: TOption) { return option.group || option.componentType || 'other'; } // TODO: should write the type better. /** * @param {Record} groupedOptions The object containing group names as keys and options as values * @returns Array of options with the group and id properties added */ export function makeOptionsArray(groupedOptions?: Record) { if (!groupedOptions) return; const options = []; function addGroupToOptions(groupName: string, options: T[]) { return options.map(opt => ({ ...opt, group: opt.group || groupName, id: opt.id || uniqueId() })); } for (const [groupName, groupOptions] of Object.entries(groupedOptions)) { options.push(...addGroupToOptions(groupName, groupOptions)); } return options; }