@wener/ui
Version:
18 lines (17 loc) • 652 B
text/typescript
export type OptionLike = string[] | number[] | string[][] | Array<LabelValue>;
export type LabelValue = { label: string; value: any; [k: string]: any };
export function normalizeOptions(o: OptionLike): Array<LabelValue> {
if (o === null || o === undefined) {
return [];
}
if (typeof o?.[0] === 'string') {
return (o as string[]).map((value) => ({ label: value, value }));
}
if (typeof o?.[0] === 'number') {
return (o as number[]).map((value) => ({ label: String(value), value }));
}
if (Array.isArray(o?.[0])) {
return (o as string[][]).map(([value, label]) => ({ label, value }));
}
return o as Array<LabelValue>;
}