in libs/designer-ui/src/lib/arrayeditor/util/util.ts [222:308]
key: guid(),
});
}
setItems(returnItems);
}
setIsValid?.(true);
} catch {
setIsValid?.(false);
setCollapsed?.(true);
}
};
export const initializeComplexArrayItems = (
initialValue: ValueSegment[],
itemSchema: ArrayItemSchema,
setItems: (items: ComplexArrayItems[]) => void,
setIsValid: (b: boolean) => void,
setCollapsed: (b: boolean) => void
): void => {
const nodeMap = new Map<string, ValueSegment>();
const stringifiedCollapsedValue = convertSegmentsToString(initialValue, nodeMap);
validationAndSerializeComplexArray(stringifiedCollapsedValue, nodeMap, itemSchema, setItems, setIsValid, setCollapsed);
};
export const validationAndSerializeComplexArray = (
editorString: string,
nodeMap: Map<string, ValueSegment>,
itemSchema: ArrayItemSchema,
setItems: (items: ComplexArrayItems[]) => void,
setIsValid: (b: boolean) => void,
setCollapsed?: (b: boolean) => void
): void => {
try {
const strippedEditorString = editorString.replace(/\s+/g, '');
if (
!strippedEditorString.length ||
strippedEditorString === '[]' ||
strippedEditorString === 'null' ||
strippedEditorString === '[null]'
) {
setItems([]);
} else {
const jsonEditor = JSON.parse(editorString);
const returnItems: ComplexArrayItems[] = [];
jsonEditor.forEach((jsonEditorItem: any) => {
const complexItem = convertObjectToComplexArrayItemArray(jsonEditorItem, itemSchema, nodeMap);
returnItems.push({ key: itemSchema.key, items: complexItem });
});
setItems(returnItems);
}
setIsValid?.(true);
} catch {
setIsValid?.(false);
setCollapsed?.(true);
}
};
const convertObjectToComplexArrayItemArray = (
obj: any,
itemSchema: ArrayItemSchema,
nodeMap: Map<string, ValueSegment>
): ComplexArrayItem[] => {
const items: ComplexArrayItem[] = [];
if (typeof obj === 'string') {
return [
{
key: itemSchema.key,
title: handleTitle(itemSchema.key, itemSchema.title),
description: itemSchema.description ?? '',
value: convertStringToSegments(obj, nodeMap, { tokensEnabled: true }),
},
];
}
Object.keys(obj).forEach((key: string) => {
const value = obj[key];
if (!itemSchema.properties) {
return;
}
const itemSchemaProperty = itemSchema.properties[key];
if (Array.isArray(value)) {
const arrayItems: ComplexArrayItems[] = [];
value.forEach((arrayItem: any) => {
if (itemSchemaProperty.items) {