@react-typed-forms/schemas 16.2.1 → 16.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/util.ts","../src/controlBuilder.ts","../src/controlRender.tsx","../src/renderers.tsx","../src/createFormRenderer.tsx","../src/RenderForm.tsx"],"sourcesContent":["import {\n CompoundField,\n ControlDataVisitor,\n ControlDefinition,\n ControlDefinitionType,\n createSchemaTree,\n DataControlDefinition,\n DataRenderType,\n DisplayOnlyRenderOptions,\n EntityExpression,\n FieldOption,\n fieldPathForDefinition,\n findField,\n FormContextData,\n getGroupRendererOptions,\n getTagParam,\n GroupRenderOptions,\n isAutoCompleteClasses,\n isCheckEntryClasses,\n isCompoundField,\n isCompoundNode,\n isDataControl,\n isDataGroupRenderer,\n isDisplayOnlyRenderer,\n isGridRenderer,\n isGroupControl,\n isScalarField,\n relativePath,\n SchemaDataNode,\n SchemaField,\n schemaForFieldPath,\n SchemaNode,\n SchemaTags,\n} from \"@astroapps/forms-core\";\nimport { MutableRefObject, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport {\n Control,\n ControlChange,\n createScopedEffect,\n ensureMetaValue,\n getElementIndex,\n newControl,\n useControl,\n} from \"@react-typed-forms/core\";\nimport {\n ActionRendererProps,\n ControlActionHandler,\n RunExpression,\n} from \"./types\";\nimport { Expression } from \"jsonata\";\n\n/**\n * Interface representing the classes for a control.\n */\nexport interface ControlClasses {\n styleClass?: string;\n layoutClass?: string;\n labelClass?: string;\n textClass?: string;\n labelTextClass?: string;\n}\n\n/**\n * Applies default values to the given record based on the provided schema fields.\n * @param v - The record to apply default values to.\n * @param fields - The schema fields to use for applying default values.\n * @param doneSet - A set to keep track of processed records.\n * @returns The record with default values applied.\n */\nexport function applyDefaultValues(\n v: Record<string, any> | undefined,\n fields: SchemaField[],\n doneSet?: Set<Record<string, any>>,\n): any {\n if (!v) return defaultValueForFields(fields);\n if (doneSet && doneSet.has(v)) return v;\n doneSet ??= new Set();\n doneSet.add(v);\n const applyValue = fields.filter(\n (x) => isCompoundField(x) || !(x.field in v),\n );\n if (!applyValue.length) return v;\n const out = { ...v };\n applyValue.forEach((x) => {\n out[x.field] =\n x.field in v\n ? applyDefaultForField(v[x.field], x, fields, false, doneSet)\n : defaultValueForField(x);\n });\n return out;\n}\n\n/**\n * Applies default values to a specific field based on the provided schema field.\n * @param v - The value to apply default values to.\n * @param field - The schema field to use for applying default values.\n * @param parent - The parent schema fields.\n * @param notElement - Flag indicating if the field is not an element.\n * @param doneSet - A set to keep track of processed records.\n * @returns The value with default values applied.\n */\nexport function applyDefaultForField(\n v: any,\n field: SchemaField,\n parent: SchemaField[],\n notElement?: boolean,\n doneSet?: Set<Record<string, any>>,\n): any {\n if (field.collection && !notElement) {\n return ((v as any[]) ?? []).map((x) =>\n applyDefaultForField(x, field, parent, true, doneSet),\n );\n }\n if (isCompoundField(field)) {\n if (!v && !field.required) return v;\n return applyDefaultValues(\n v,\n field.treeChildren ? parent : field.children,\n doneSet,\n );\n }\n return defaultValueForField(field);\n}\n\n/**\n * Returns the default values for the provided schema fields.\n * @param fields - The schema fields to get default values for.\n * @returns The default values for the schema fields.\n */\nexport function defaultValueForFields(fields: SchemaField[]): any {\n return Object.fromEntries(\n fields.map((x) => [x.field, defaultValueForField(x)]),\n );\n}\n\n/**\n * Returns the default value for a specific schema field.\n * @param sf - The schema field to get the default value for.\n * @param required - Flag indicating if the field is required.\n * @returns The default value for the schema field.\n */\nexport function defaultValueForField(\n sf: SchemaField,\n required?: boolean | null,\n): any {\n if (sf.defaultValue !== undefined) return sf.defaultValue;\n const isRequired = !!(required || sf.required);\n if (isCompoundField(sf)) {\n if (isRequired) {\n const childValue = defaultValueForFields(sf.children ?? []);\n return sf.collection ? [childValue] : childValue;\n }\n return sf.notNullable ? (sf.collection ? [] : {}) : undefined;\n }\n if (sf.collection && sf.notNullable) {\n return [];\n }\n return undefined;\n}\n\n/**\n * Returns the element value for a specific schema field.\n * @param sf - The schema field to get the element value for.\n * @returns The element value for the schema field.\n */\nexport function elementValueForField(sf: SchemaField): any {\n if (isCompoundField(sf)) {\n return defaultValueForFields(sf.children ?? []);\n }\n return sf.defaultValue;\n}\n\n/**\n * Finds a scalar field in the provided schema fields.\n * @param fields - The schema fields to search in.\n * @param field - The field name to search for.\n * @returns The found scalar field, or undefined if not found.\n */\nexport function findScalarField(\n fields: SchemaField[],\n field: string,\n): SchemaField | undefined {\n return findField(fields, field);\n}\n\n/**\n * Finds a compound field in the provided schema fields.\n * @param fields - The schema fields to search in.\n * @param field - The field name to search for.\n * @returns The found compound field, or undefined if not found.\n */\nexport function findCompoundField(\n fields: SchemaField[],\n field: string,\n): CompoundField | undefined {\n return findField(fields, field) as CompoundField | undefined;\n}\n\n/**\n * Checks if a field has a specific tag.\n * @param field - The field to check.\n * @param tag - The tag to check for.\n * @returns True if the field has the tag, false otherwise.\n */\nexport function fieldHasTag(field: SchemaField, tag: string) {\n return Boolean(field.tags?.includes(tag));\n}\n\n/**\n * Returns the display name for a specific field.\n * @param field - The field to get the display name for.\n * @returns The display name for the field.\n */\nexport function fieldDisplayName(field: SchemaField) {\n return field.displayName ?? field.field;\n}\n\n/**\n * Checks if an object has options.\n * @param o - The object to check.\n * @returns True if the object has options, false otherwise.\n */\nexport function hasOptions(o: { options: FieldOption[] | undefined | null }) {\n return (o.options?.length ?? 0) > 0;\n}\n\n/**\n * Returns the default control definition for a specific schema field.\n * @param sf - The schema field to get the default control definition for.\n * @param noChildren - Flag indicating if children should not be included.\n * @returns The default control definition for the schema field.\n */\nexport function defaultControlForField(\n sf: SchemaField,\n noChildren?: boolean,\n): DataControlDefinition {\n if (isCompoundField(sf)) {\n const ref = getTagParam(sf, SchemaTags.ControlRef);\n return {\n type: ControlDefinitionType.Data,\n title: sf.displayName,\n field: sf.field,\n required: sf.required,\n childRefId: ref,\n children:\n !noChildren && !ref\n ? sf.children\n .filter((x) => !fieldHasTag(x, SchemaTags.NoControl))\n .map((x) => defaultControlForField(x))\n : undefined,\n };\n } else if (isScalarField(sf)) {\n const htmlEditor = fieldHasTag(sf, SchemaTags.HtmlEditor);\n return {\n type: ControlDefinitionType.Data,\n title: sf.displayName,\n field: sf.field,\n required: sf.required,\n renderOptions: {\n type: htmlEditor ? DataRenderType.HtmlEditor : DataRenderType.Standard,\n },\n };\n }\n throw \"Unknown schema field\";\n}\n\n/**\n * Finds a referenced control in the provided control definition.\n * @param field - The field name to search for.\n * @param control - The control definition to search in.\n * @returns The found control definition, or undefined if not found.\n */\nfunction findReferencedControl(\n field: string,\n control: ControlDefinition,\n): ControlDefinition | undefined {\n if (isDataControl(control) && field === control.field) return control;\n if (isGroupControl(control)) {\n if (control.compoundField)\n return field === control.compoundField ? control : undefined;\n return findReferencedControlInArray(field, control.children ?? []);\n }\n return undefined;\n}\n\n/**\n * Finds a referenced control in an array of control definitions.\n * @param field - The field name to search for.\n * @param controls - The array of control definitions to search in.\n * @returns The found control definition, or undefined if not found.\n */\nfunction findReferencedControlInArray(\n field: string,\n controls: ControlDefinition[],\n): ControlDefinition | undefined {\n for (const c of controls) {\n const ref = findReferencedControl(field, c);\n if (ref) return ref;\n }\n return undefined;\n}\n\nexport function findControlsForCompound(\n compound: SchemaNode,\n definition: ControlDefinition,\n): ControlDefinition[] {\n if (isDataControl(definition) && compound.field.field === definition.field) {\n return [definition];\n }\n if (isGroupControl(definition)) {\n if (definition.compoundField === compound.field.field) return [definition];\n return (\n definition.children?.flatMap((d) =>\n findControlsForCompound(compound, d),\n ) ?? []\n );\n }\n return [];\n}\n\n/**\n * Finds non-data groups in the provided control definitions.\n * @param controls - The control definitions to search in.\n * @returns An array of found non-data groups.\n */\nexport function findNonDataGroups(\n controls: ControlDefinition[],\n): ControlDefinition[] {\n return controls.flatMap((control) =>\n isGroupControl(control) && !control.compoundField\n ? [control, ...findNonDataGroups(control.children ?? [])]\n : [],\n );\n}\n\n/**\n * Adds missing controls to the provided control definitions based on the schema fields.\n * @param fields - The schema fields to use for adding missing controls.\n * @param controls - The control definitions to add missing controls to.\n * @param warning - An optional function to call with warning messages.\n * @returns The control definitions with missing controls added.\n */\nexport function addMissingControls(\n fields: SchemaField[],\n controls: ControlDefinition[],\n warning?: (msg: string) => void,\n) {\n return addMissingControlsForSchema(\n createSchemaTree(fields).rootNode,\n controls,\n warning,\n );\n}\n\ninterface ControlAndSchema {\n control: ControlDefinition;\n children: ControlAndSchema[];\n schema?: SchemaNode;\n parent?: ControlAndSchema;\n}\n\n/**\n * Adds missing controls to the provided control definitions based on the schema fields.\n * @param schema - The root schema node to use for adding missing controls.\n * @param controls - The control definitions to add missing controls to.\n * @param warning - An optional function to call with warning messages.\n * @returns The control definitions with missing controls added.\n */\nexport function addMissingControlsForSchema(\n schema: SchemaNode,\n controls: ControlDefinition[],\n warning?: (msg: string) => void,\n): ControlDefinition[] {\n const controlMap: { [k: string]: ControlAndSchema } = {};\n const schemaControlMap: { [k: string]: ControlAndSchema[] } = {};\n const rootControls = controls.map((c) => toControlAndSchema(c, schema));\n const rootSchema = { schema, children: rootControls } as ControlAndSchema;\n addSchemaMapEntry(\"\", rootSchema);\n rootControls.forEach(addReferences);\n const fields = schema.getChildNodes();\n fields.forEach(addMissing);\n return rootControls.map(toDefinition);\n\n function toDefinition(c: ControlAndSchema): ControlDefinition {\n const children = c.children.length ? c.children.map(toDefinition) : null;\n return { ...c.control, children };\n }\n\n function addMissing(schemaNode: SchemaNode) {\n if (fieldHasTag(schemaNode.field, SchemaTags.NoControl)) return;\n let skipChildren = false;\n const existingControls = schemaControlMap[schemaNode.id];\n if (!existingControls) {\n const eligibleParents = getEligibleParents(schemaNode);\n const desiredGroup = getTagParam(\n schemaNode.field,\n SchemaTags.ControlGroup,\n );\n let parentGroup = desiredGroup ? controlMap[desiredGroup] : undefined;\n if (!parentGroup && desiredGroup)\n warning?.(\"No group '\" + desiredGroup + \"' for \" + schemaNode.id);\n if (parentGroup && eligibleParents.indexOf(parentGroup.schema!.id) < 0) {\n warning?.(\n `Target group '${desiredGroup}' is not an eligible parent for '${schemaNode.id}'`,\n );\n parentGroup = undefined;\n }\n if (!parentGroup && eligibleParents.length) {\n parentGroup = schemaControlMap[eligibleParents[0]]?.[0];\n }\n if (parentGroup) {\n const newControl = defaultControlForField(schemaNode.field, true);\n skipChildren = !!newControl.childRefId;\n newControl.field = relativePath(parentGroup.schema!, schemaNode);\n parentGroup.children.push(\n toControlAndSchema(newControl, parentGroup.schema!, parentGroup),\n );\n } else warning?.(\"Could not find a parent group for: \" + schemaNode.id);\n } else {\n skipChildren = existingControls.some((x) => x.control.childRefId);\n }\n if (!skipChildren) schemaNode.getChildNodes().forEach(addMissing);\n }\n\n function getEligibleParents(schemaNode: SchemaNode) {\n const eligibleParents: string[] = [];\n let parent = schemaNode.parent;\n while (parent) {\n eligibleParents.push(parent.id);\n if (parent.field.collection) break;\n if (!parent.parent) parent.getChildNodes().forEach(addCompound);\n parent = parent.parent;\n }\n return eligibleParents;\n\n function addCompound(node: SchemaNode) {\n if (isCompoundNode(node) && !node.field.collection) {\n eligibleParents.push(node.id);\n node.getChildNodes().forEach(addCompound);\n }\n }\n }\n\n function addReferences(c: ControlAndSchema) {\n c.children.forEach(addReferences);\n if (c.control.childRefId) {\n const ref = controlMap[c.control.childRefId];\n if (ref) {\n ref.children.forEach((x) =>\n toControlAndSchema(x.control, c.schema!, c, true),\n );\n return;\n }\n console.warn(\"Missing reference\", c.control.childRefId);\n }\n }\n\n function addSchemaMapEntry(schemaId: string, entry: ControlAndSchema) {\n if (!schemaControlMap[schemaId]) schemaControlMap[schemaId] = [];\n schemaControlMap[schemaId].push(entry);\n }\n function toControlAndSchema(\n c: ControlDefinition,\n parentSchema: SchemaNode,\n parentNode?: ControlAndSchema,\n dontRegister?: boolean,\n ): ControlAndSchema {\n const controlPath = fieldPathForDefinition(c);\n let dataSchema = controlPath\n ? schemaForFieldPath(controlPath, parentSchema)\n : undefined;\n if (isGroupControl(c) && dataSchema == null) dataSchema = parentSchema;\n const entry: ControlAndSchema = {\n schema: dataSchema,\n control: c,\n children: [],\n parent: parentNode,\n };\n entry.children =\n c.children?.map((x) =>\n toControlAndSchema(x, dataSchema ?? parentSchema, entry, dontRegister),\n ) ?? [];\n if (!dontRegister && c.id) controlMap[c.id] = entry;\n if (dataSchema) {\n addSchemaMapEntry(dataSchema.id, entry);\n }\n return entry;\n }\n}\n\n/**\n * Custom hook to use an updated reference.\n * @param a - The value to create a reference for.\n * @returns A mutable reference object.\n */\nexport function useUpdatedRef<A>(a: A): MutableRefObject<A> {\n const r = useRef(a);\n r.current = a;\n return r;\n}\n\n/**\n * Cleans data for a schema based on the provided schema fields.\n * @param v - The data to clean.\n * @param schemaNode\n * @param removeIfDefault - Flag indicating if default values should be removed.\n * @returns The cleaned data.\n */\nexport function cleanDataForSchema(\n v: { [k: string]: any } | undefined,\n schemaNode: SchemaNode,\n removeIfDefault?: boolean,\n): any {\n if (!v) return v;\n const fields = schemaNode.getResolvedFields();\n const typeField = fields.find((x) => x.isTypeField)?.field;\n const typeValue = typeField ? v[typeField] : undefined;\n const cleanableFields = !removeIfDefault\n ? fields.filter(\n (x) => isCompoundField(x) || (x.onlyForTypes?.length ?? 0) > 0,\n )\n : fields;\n if (!cleanableFields.length) return v;\n const out = { ...v };\n cleanableFields.forEach((x) => {\n const childValue = v[x.field];\n if (\n x.onlyForTypes?.includes(typeValue) === false ||\n (!x.notNullable && canBeNull())\n ) {\n delete out[x.field];\n return;\n }\n if (isCompoundField(x)) {\n const childNode = schemaNode.createChildNode(x);\n if (x.collection) {\n if (Array.isArray(childValue)) {\n out[x.field] = childValue.map((cv) =>\n cleanDataForSchema(cv, childNode, removeIfDefault),\n );\n }\n } else {\n out[x.field] = cleanDataForSchema(\n childValue,\n childNode,\n removeIfDefault,\n );\n }\n }\n function canBeNull() {\n return (\n (removeIfDefault && x.defaultValue === childValue) ||\n (x.collection && Array.isArray(childValue) && !childValue.length)\n //|| (x.type === FieldType.Bool && childValue === false)\n );\n }\n });\n return out;\n}\n\n/**\n * Returns all referenced classes for a control definition.\n * @param c - The control definition to get the referenced classes for.\n * @param collectExtra - Optional function to collect extra classes.\n * @returns An array of referenced classes.\n */\nexport function getAllReferencedClasses(\n c: ControlDefinition,\n collectExtra?: (c: ControlDefinition) => (string | undefined | null)[],\n): string[] {\n const childClasses = c.children?.flatMap((x) =>\n getAllReferencedClasses(x, collectExtra),\n );\n const go = getGroupClassOverrides(c);\n\n const { entryWrapperClass, selectedClass, notSelectedClass } =\n isDataControl(c) && isCheckEntryClasses(c.renderOptions)\n ? c.renderOptions\n : {};\n const groupOptions = isGroupControl(c) ? c.groupOptions : undefined;\n const gridClasses =\n groupOptions && isGridRenderer(groupOptions) ? [groupOptions.rowClass] : [];\n\n const {\n listContainerClass,\n listEntryClass,\n chipContainerClass,\n chipCloseButtonClass,\n } =\n isDataControl(c) && isAutoCompleteClasses(c.renderOptions)\n ? c.renderOptions\n : {};\n\n const tc = clsx(\n [\n c.styleClass,\n c.layoutClass,\n c.labelClass,\n c.textClass,\n c.labelTextClass,\n ...gridClasses,\n ...Object.values(go),\n ...(collectExtra?.(c) ?? []),\n entryWrapperClass,\n selectedClass,\n notSelectedClass,\n listContainerClass,\n listEntryClass,\n chipContainerClass,\n chipCloseButtonClass,\n ].map(getOverrideClass),\n );\n if (childClasses && !tc) return childClasses;\n if (!tc) return [];\n if (childClasses) return [tc, ...childClasses];\n return [tc];\n}\n\n/**\n * Finds a child control definition within a parent control definition.\n * @param parent - The parent control definition.\n * @param childPath - The path to the child control definition, either as a single index or an array of indices.\n * @returns The found child control definition.\n */\nexport function findChildDefinition(\n parent: ControlDefinition,\n childPath: number | number[],\n): ControlDefinition {\n if (Array.isArray(childPath)) {\n let base = parent;\n childPath.forEach((x) => (base = base.children![x]));\n return base;\n }\n return parent.children![childPath];\n}\n\n/**\n * Returns the override class name if the class name starts with \"@ \".\n * Otherwise, returns the original class name.\n * @param className - The class name to check and potentially modify.\n * @returns The override class name or the original class name.\n */\nexport function getOverrideClass(className?: string | null) {\n if (className && className.startsWith(\"@ \")) {\n return className.substring(2);\n }\n return className;\n}\n\n/**\n * Returns the appropriate class name for a renderer.\n * If the global class name starts with \"@ \", it overrides the control class name.\n * Otherwise, it combines the control class name and the global class name.\n *\n * @param controlClass - The class name for the control.\n * @param globalClass - The global class name.\n * @returns The appropriate class name for the renderer.\n */\nexport function rendererClass(\n controlClass?: string | null,\n globalClass?: string | null,\n) {\n const gc = getOverrideClass(globalClass);\n if (gc !== globalClass) return globalClass ? globalClass : undefined;\n const oc = getOverrideClass(controlClass);\n if (oc === controlClass) return clsx(controlClass, globalClass);\n return oc ? oc : undefined;\n}\n\n/**\n * Applies length restrictions to a value.\n * @template Min - The type of the minimum value.\n * @template Max - The type of the maximum value.\n * @param {number} length - The length to check.\n * @param {number | null | undefined} min - The minimum length.\n * @param {number | null | undefined} max - The maximum length.\n * @param {Min} minValue - The value to return if the length is greater than the minimum.\n * @param {Max} maxValue - The value to return if the length is less than the maximum.\n * @returns {[Min | undefined, Max | undefined]} - An array containing the minimum and maximum values if the length restrictions are met.\n */\nexport function applyLengthRestrictions<Min, Max>(\n length: number,\n min: number | null | undefined,\n max: number | null | undefined,\n minValue: Min,\n maxValue: Max,\n): [Min | undefined, Max | undefined] {\n return [\n min == null || length > min ? minValue : undefined,\n max == null || length < max ? maxValue : undefined,\n ];\n}\n\n/**\n * Finds the path to a field in the schema fields.\n * @param {SchemaField[]} fields - The schema fields to search in.\n * @param {string | undefined} fieldPath - The path to the field.\n * @returns {SchemaField[] | undefined} - An array of schema fields representing the path, or undefined if not found.\n */\nexport function findFieldPath(\n fields: SchemaField[],\n fieldPath: string | undefined,\n): SchemaField[] | undefined {\n if (!fieldPath) return undefined;\n const fieldNames = fieldPath.split(\"/\");\n const foundFields: SchemaField[] = [];\n let i = 0;\n let currentFields: SchemaField[] | undefined = fields;\n while (i < fieldNames.length && currentFields) {\n const cf = fieldNames[i];\n const nextField = findField(currentFields, cf);\n if (!nextField) return undefined;\n foundFields.push(nextField);\n currentFields =\n isCompoundField(nextField) && !nextField.collection\n ? nextField.children\n : undefined;\n i++;\n }\n return foundFields.length === fieldNames.length ? foundFields : undefined;\n}\n\n/**\n * Merges two objects.\n * @template A - The type of the objects to merge.\n * @param {A} o1 - The first object.\n * @param {A} o2 - The second object.\n * @param {(k: keyof NonNullable<A>, v1: unknown, v2: unknown) => unknown} [doMerge] - Optional function to merge values.\n * @returns {A} - The merged object.\n */\nexport function mergeObjects<A extends Record<string, any> | undefined>(\n o1: A,\n o2: A,\n doMerge: (k: keyof NonNullable<A>, v1: unknown, v2: unknown) => unknown = (\n _,\n v1,\n v2,\n ) => v1 ?? v2,\n): A {\n if (!o1) return o2;\n if (!o2) return o1;\n const result = { ...o1 };\n for (const key in o2) {\n if (o2.hasOwnProperty(key)) {\n const value1 = o1[key];\n const value2 = o2[key];\n result[key] = doMerge(key, value1, value2) as any;\n }\n }\n return result;\n}\n\nexport function deepMerge<A>(value: A, fallback: A): A {\n if (value == null) return fallback;\n if (typeof value !== \"object\") return value;\n // concat arrays\n if (Array.isArray(value)) {\n return (value as any[]).concat(fallback as any) as A;\n }\n return mergeObjects(value as A, fallback as any, (_, v1, fv) =>\n deepMerge(v1, fv),\n ) as A;\n}\n\n/**\n * Coerces a value to a string.\n * @param {unknown} v - The value to coerce.\n * @returns {string} - The coerced string.\n */\nexport function coerceToString(v: unknown) {\n return v == null\n ? \"\"\n : typeof v === \"object\"\n ? \"error: \" + JSON.stringify(v)\n : v.toString();\n}\n\n/**\n * Returns the group class overrides for a control definition.\n * @param {ControlDefinition} def - The control definition to get the group class overrides for.\n * @returns {ControlClasses} - The group class overrides.\n */\nexport function getGroupClassOverrides(def: ControlDefinition): ControlClasses {\n let go = getGroupRendererOptions(def);\n\n if (!go) return {};\n const { childLayoutClass, childStyleClass, childLabelClass } = go;\n const out: ControlClasses = {};\n if (childLayoutClass) out.layoutClass = childLayoutClass;\n if (childStyleClass) out.styleClass = childStyleClass;\n if (childLabelClass) out.labelClass = childLabelClass;\n return out;\n}\n\n/**\n * Combines multiple action handlers into a single handler.\n * @param {...(ControlActionHandler | undefined)[]} handlers - The action handlers to combine.\n * @returns {ControlActionHandler} - The combined action handler.\n */\nexport function actionHandlers(\n ...handlers: (ControlActionHandler | undefined)[]\n): ControlActionHandler | undefined {\n const nonNullHandlers = handlers.filter((x) => x != null);\n if (nonNullHandlers.length === 0) return undefined;\n return (actionId, actionData, ctx) => {\n for (let i = 0; i < nonNullHandlers.length; i++) {\n const res = nonNullHandlers[i](actionId, actionData, ctx);\n if (res) return res;\n }\n return undefined;\n };\n}\n\nexport function getDiffObject(dataNode: SchemaDataNode, force?: boolean): any {\n const c = dataNode.control;\n const sf = dataNode.schema.field;\n if (!c.dirty && !force) return undefined;\n if (c.isNull) return null;\n if (sf.collection && dataNode.elementIndex == null) {\n const idField = getTagParam(sf, SchemaTags.IdField);\n return c.as<any[]>().elements.map((x, i) => {\n const change = getDiffObject(\n dataNode.getChildElement(i),\n idField !== undefined,\n );\n return idField != null\n ? change\n : { old: getElementIndex(x)?.initialIndex, edit: change };\n });\n } else if (isCompoundField(sf)) {\n const children = dataNode.schema.getChildNodes();\n const idField = getTagParam(sf, SchemaTags.IdField);\n return Object.fromEntries(\n children.flatMap((c) => {\n const diff = getDiffObject(\n dataNode.getChild(c),\n idField === c.field.field,\n );\n return diff !== undefined ? [[c.field.field, diff]] : [];\n }),\n );\n }\n return c.value;\n}\n\nexport function getNullToggler(c: Control<any>): Control<boolean> {\n return ensureMetaValue(c, \"$nullToggler\", () => {\n const lastDefined = getLastDefinedValue(c);\n const isEditing = getIsEditing(c);\n const currentNotNull = c.current.value != null;\n c.disabled = !currentNotNull;\n const notNull = newControl(currentNotNull);\n if (!currentNotNull) c.value = null;\n disableIfNotEditing();\n isEditing.subscribe(disableIfNotEditing, ControlChange.Value);\n notNull.subscribe(() => {\n const currentNotNull = notNull.current.value;\n c.value = currentNotNull ? lastDefined.current.value : null;\n c.disabled = !currentNotNull;\n }, ControlChange.Value);\n c.subscribe(() => {\n notNull.value = c.current.value != null;\n }, ControlChange.Value);\n return notNull;\n function disableIfNotEditing() {\n notNull.disabled = isEditing.current.value === false;\n }\n });\n}\n\nexport interface ExternalEditAction {\n action: ActionRendererProps;\n dontValidate?: boolean;\n}\nexport interface ExternalEditData {\n data: unknown;\n actions: ExternalEditAction[];\n}\n\nexport function getExternalEditData(\n c: Control<any>,\n): Control<ExternalEditData | undefined> {\n return ensureMetaValue(c, \"$externalEditIndex\", () => newControl(undefined));\n}\n\nexport function getLastDefinedValue<V>(control: Control<V>): Control<V> {\n return ensureMetaValue(control, \"$lastDefined\", () => {\n const lastDefined = newControl(control.current.value);\n control.subscribe(() => {\n const nv = control.current.value;\n if (nv != null) lastDefined.value = nv;\n }, ControlChange.Value);\n return lastDefined;\n });\n}\n\nexport function getIsEditing(\n control: Control<any>,\n): Control<boolean | undefined> {\n const lastDefined = getLastDefinedValue(control);\n return ensureMetaValue(control, \"$willEdit\", () => {\n const c = newControl(undefined);\n c.subscribe(() => {\n const currentEdit = c.current.value;\n if (currentEdit !== undefined) {\n control.value = currentEdit\n ? lastDefined.current.value\n : control.initialValue;\n }\n }, ControlChange.Value);\n return c;\n });\n}\n\nexport function getAllValues(control: Control<any>): Control<unknown[]> {\n return ensureMetaValue(control, \"$allValues\", () =>\n newControl([control.value]),\n );\n}\n\nexport function clearMultiValues(dataNode: SchemaDataNode): void {\n const c = dataNode.control;\n const sf = dataNode.schema.field;\n if (sf.collection) {\n return;\n } else if (isCompoundField(sf)) {\n dataNode.schema.getChildNodes().forEach((c) => {\n clearMultiValues(dataNode.getChild(c));\n });\n } else {\n const allValues = getAllValues(c);\n allValues.setValue((x) => [c.current.value]);\n }\n}\n\nexport function applyValues(dataNode: SchemaDataNode, value: unknown): void {\n const c = dataNode.control;\n const sf = dataNode.schema.field;\n if (c.isEqual(c.initialValue, value)) return;\n if (sf.collection) {\n return;\n } else if (isCompoundField(sf)) {\n if (value == null) return;\n dataNode.schema.getChildNodes().forEach((c) => {\n applyValues(\n dataNode.getChild(c),\n (value as Record<string, unknown>)[c.field.field],\n );\n });\n } else {\n const allValues = getAllValues(c);\n allValues.setValue((changes) =>\n changes.every((x) => !c.isEqual(x, value))\n ? [...changes, value]\n : changes,\n );\n }\n}\n\nexport function collectDifferences(\n dataNode: SchemaDataNode,\n values: unknown[],\n): () => { editable: number; editing: number } {\n values.forEach((v, i) => {\n if (i == 0) {\n dataNode.control.setInitialValue(v);\n clearMultiValues(dataNode);\n } else applyValues(dataNode, v);\n });\n const allEdits: Control<boolean | undefined>[] = [];\n resetMultiValues(dataNode);\n return () => {\n let editable = 0;\n let editing = 0;\n allEdits.forEach((x) => {\n const b = x.value;\n if (b === undefined) return;\n editable++;\n if (b) editing++;\n });\n return { editing, editable };\n };\n\n function resetMultiValues(dataNode: SchemaDataNode): void {\n const c = dataNode.control;\n const sf = dataNode.schema.field;\n if (sf.collection) {\n return;\n } else if (isCompoundField(sf)) {\n if (c.value == null) return;\n dataNode.schema.getChildNodes().forEach((c) => {\n resetMultiValues(dataNode.getChild(c));\n });\n } else {\n allEdits.push(getIsEditing(c));\n const allValues = getAllValues(c);\n if (allValues.value.length > 1) {\n c.setInitialValue(undefined);\n getLastDefinedValue(c).value = null;\n }\n }\n }\n}\n\nexport function validationVisitor(\n onInvalid: (data: Control<unknown>) => void,\n): ControlDataVisitor<any> {\n return (s) => {\n if (isCompoundNode(s.schema)) return undefined;\n const v = s.control;\n v.touched = true;\n if (!v.validate()) {\n onInvalid(v);\n }\n return undefined;\n };\n}\n\nexport function useExpression<T>(\n defaultValue: T,\n runExpression: RunExpression,\n expression: EntityExpression | null | undefined,\n coerce: (x: any) => T,\n bindings?: Record<string, any>,\n): Control<T> {\n const value = useControl<T>(defaultValue);\n createScopedEffect((scope) => {\n if (expression?.type)\n runExpression(\n scope,\n expression,\n (x) => (value.value = coerce(x)),\n bindings,\n );\n else value.value = defaultValue;\n }, value);\n return value;\n}\n","import {\n AccordionAdornment,\n ActionControlDefinition,\n AutocompleteRenderOptions,\n CheckListRenderOptions,\n ControlAdornmentType,\n ControlDefinition,\n ControlDefinitionType,\n DataControlDefinition,\n DataExpression,\n DataMatchExpression,\n DataRenderType,\n DateValidator,\n DisplayControlDefinition,\n DisplayDataType,\n DisplayOnlyRenderOptions,\n DynamicProperty,\n DynamicPropertyType,\n EntityExpression,\n ExpressionType,\n GroupedControlsDefinition,\n GroupRenderType,\n HtmlDisplay,\n JsonataExpression,\n JsonataRenderOptions,\n JsonataValidator,\n LengthValidator,\n mergeOption,\n RadioButtonRenderOptions,\n RenderOptions,\n SchemaField,\n SchemaMap,\n SchemaNode,\n TextDisplay,\n TextfieldRenderOptions,\n ValidatorType,\n} from \"@astroapps/forms-core\";\nimport { useMemo } from \"react\";\nimport { addMissingControls } from \"./util\";\nimport { mergeFields, resolveSchemas } from \"@astroapps/forms-core\";\nimport { ActionRendererProps } from \"./types\";\n\nexport function dataControl(\n field: string,\n title?: string | null,\n options?: Partial<DataControlDefinition>,\n): DataControlDefinition {\n return { type: ControlDefinitionType.Data, field, title, ...options };\n}\n\nexport function validatorOptions<A extends { type: string }>(\n type: ValidatorType,\n): (options: Omit<A, \"type\">) => A {\n return (o) => ({ type, ...o }) as A;\n}\n\nexport function adornmentOptions<A extends { type: string }>(\n type: ControlAdornmentType,\n): (options: Omit<A, \"type\">) => A {\n return (o) => ({ type, ...o }) as A;\n}\n\nexport function renderOptionsFor<A extends RenderOptions>(\n type: DataRenderType,\n): (options: Omit<A, \"type\">) => { renderOptions: A } {\n return (o) => ({ renderOptions: { type, ...o } as A });\n}\n\nexport const autocompleteOptions = renderOptionsFor<AutocompleteRenderOptions>(\n DataRenderType.Autocomplete,\n);\n\nexport const checkListOptions = renderOptionsFor<CheckListRenderOptions>(\n DataRenderType.CheckList,\n);\n\nexport const radioButtonOptions = renderOptionsFor<RadioButtonRenderOptions>(\n DataRenderType.Radio,\n);\n\nexport const lengthValidatorOptions = validatorOptions<LengthValidator>(\n ValidatorType.Length,\n);\n\nexport const jsonataValidatorOptions = validatorOptions<JsonataValidator>(\n ValidatorType.Jsonata,\n);\n\nexport const dateValidatorOptions = validatorOptions<DateValidator>(\n ValidatorType.Date,\n);\n\nexport const accordionOptions = adornmentOptions<AccordionAdornment>(\n ControlAdornmentType.Accordion,\n);\n\nexport const textfieldOptions = renderOptionsFor<TextfieldRenderOptions>(\n DataRenderType.Textfield,\n);\n\nexport const displayOnlyOptions = renderOptionsFor<DisplayOnlyRenderOptions>(\n DataRenderType.DisplayOnly,\n);\n\nexport const jsonataOptions = renderOptionsFor<JsonataRenderOptions>(\n DataRenderType.Jsonata,\n);\n\nexport function textDisplayControl(\n text: string,\n options?: Partial<DisplayControlDefinition>,\n): DisplayControlDefinition {\n return {\n type: ControlDefinitionType.Display,\n displayData: { type: DisplayDataType.Text, text } as TextDisplay,\n ...options,\n };\n}\n\nexport function htmlDisplayControl(\n html: string,\n options?: Partial<DisplayControlDefinition>,\n): DisplayControlDefinition {\n return {\n type: ControlDefinitionType.Display,\n displayData: { type: DisplayDataType.Html, html } as HtmlDisplay,\n ...options,\n };\n}\n\nexport function dynamicDefaultValue(expr: EntityExpression): DynamicProperty {\n return { type: DynamicPropertyType.DefaultValue, expr };\n}\n\nexport function dynamicReadonly(expr: EntityExpression): DynamicProperty {\n return { type: DynamicPropertyType.Readonly, expr };\n}\n\nexport function dynamicVisibility(expr: EntityExpression): DynamicProperty {\n return { type: DynamicPropertyType.Visible, expr };\n}\n\nexport function dynamicDisabled(expr: EntityExpression): DynamicProperty {\n return { type: DynamicPropertyType.Disabled, expr };\n}\n\nexport function fieldExpr(field: string): DataExpression {\n return { type: ExpressionType.Data, field };\n}\n\nexport function fieldEqExpr(field: string, value: any): DataMatchExpression {\n return { type: ExpressionType.DataMatch, field, value };\n}\nexport function jsonataExpr(expression: string): JsonataExpression {\n return { type: ExpressionType.Jsonata, expression };\n}\n\nexport function groupedControl(\n children: ControlDefinition[],\n title?: string,\n options?: Partial<GroupedControlsDefinition>,\n): GroupedControlsDefinition {\n return {\n type: ControlDefinitionType.Group,\n children,\n title,\n groupOptions: { type: \"Standard\", hideTitle: !title },\n ...options,\n };\n}\nexport function compoundControl(\n field: string,\n title: string | undefined,\n children: ControlDefinition[],\n options?: Partial<DataControlDefinition>,\n): DataControlDefinition {\n return {\n type: ControlDefinitionType.Data,\n field,\n children,\n title,\n renderOptions: { type: \"Standard\" },\n ...options,\n };\n}\n\nexport function actionControl(\n actionText: string,\n actionId: string,\n options?: Partial<ActionControlDefinition>,\n): ActionControlDefinition {\n return {\n type: ControlDefinitionType.Action,\n title: actionText,\n actionId,\n ...options,\n };\n}\nexport function createAction(\n actionId: string,\n onClick: () => void,\n actionText?: string | null,\n options?: Partial<ActionRendererProps>,\n): ActionRendererProps {\n return {\n actionId,\n onClick,\n actionText: actionText ?? actionId,\n ...options,\n };\n}\n\nexport const emptyGroupDefinition: GroupedControlsDefinition = {\n type: ControlDefinitionType.Group,\n children: [],\n groupOptions: { type: GroupRenderType.Standard, hideTitle: true },\n};\n\nexport function useControlDefinitionForSchema(\n sf: SchemaField[],\n definition: GroupedControlsDefinition = emptyGroupDefinition,\n): GroupedControlsDefinition {\n return useMemo<GroupedControlsDefinition>(\n () => ({\n ...definition,\n children: addMissingControls(sf, definition.children ?? []),\n }),\n [sf, definition],\n );\n}\n\nexport interface EditorGroup {\n parent: string;\n group: ControlDefinition;\n}\n\nexport interface CustomRenderOptions {\n value: string;\n name: string;\n fields?: SchemaField[];\n groups?: EditorGroup[];\n applies?: (sf: SchemaNode) => boolean;\n optionField?: string;\n}\n\nexport type ControlDefinitionExtension = {\n RenderOptions?: CustomRenderOptions | CustomRenderOptions[];\n GroupRenderOptions?: CustomRenderOptions | CustomRenderOptions[];\n ControlAdornment?: CustomRenderOptions | CustomRenderOptions[];\n SchemaValidator?: CustomRenderOptions | CustomRenderOptions[];\n DisplayData?: CustomRenderOptions | CustomRenderOptions[];\n IconReference?: CustomRenderOptions | CustomRenderOptions[];\n};\n\nexport function applyExtensionToSchema<A extends SchemaMap>(\n schemaMap: A,\n extension: ControlDefinitionExtension,\n): A {\n const outMap = { ...schemaMap };\n Object.entries(extension).forEach(([field, cro]) => {\n outMap[field as keyof A] = (Array.isArray(cro) ? cro : [cro]).reduce(\n (a, cr) =>\n cr.optionField\n ? mergeOption(a, cr.name, cr.value, cr.optionField)\n : mergeFields(a, cr.name, cr.value, cr.fields ?? []),\n outMap[field],\n ) as A[string];\n });\n return outMap;\n}\n\nexport function applyExtensionsToSchema<A extends SchemaMap>(\n schemaMap: A,\n extensions: ControlDefinitionExtension[],\n) {\n return resolveSchemas(extensions.reduce(applyExtensionToSchema, schemaMap));\n}\n\nexport function createIconLibraryExtension(\n name: string,\n value: string,\n): ControlDefinitionExtension {\n return {\n IconReference: {\n optionField: \"library\",\n name,\n value,\n },\n };\n}\n","import React, {\n ComponentType,\n ElementType,\n Fragment,\n HTMLAttributes,\n Key,\n ReactElement,\n ReactNode,\n} from \"react\";\nimport {\n addElement,\n Control,\n removeElement,\n RenderArrayElements,\n} from \"@react-typed-forms/core\";\nimport {\n ActionStyle,\n AdornmentPlacement,\n ArrayActionOptions,\n ControlAdornment,\n ControlDefinition,\n ControlDefinitionType,\n ControlState,\n CustomDisplay,\n DataControlDefinition,\n defaultSchemaInterface,\n DisplayData,\n DisplayDataType,\n FieldOption,\n FormContextOptions,\n FormNode,\n FormState,\n GroupRenderOptions,\n GroupRenderType,\n isActionControl,\n isDataControl,\n isDisplayControl,\n isGroupControl,\n JsonPath,\n LengthValidator,\n lookupDataNode,\n RenderOptions,\n SchemaDataNode,\n SchemaField,\n SchemaInterface,\n ValidatorType,\n} from \"@astroapps/forms-core\";\nimport {\n applyLengthRestrictions,\n ControlClasses,\n elementValueForField,\n ExternalEditAction,\n fieldDisplayName,\n getExternalEditData,\n rendererClass,\n} from \"./util\";\nimport { createAction, dataControl } from \"./controlBuilder\";\nimport {\n ActionRendererProps,\n ControlActionHandler,\n ControlDataContext,\n RunExpression,\n} from \"./types\";\n\nexport interface HtmlIconProperties {\n className?: string;\n style?: React.CSSProperties;\n iconLibrary?: string;\n iconName?: string;\n}\n\nexport interface HtmlLabelProperties {\n htmlFor?: string;\n className?: string;\n textClass?: string;\n children?: ReactNode;\n}\n\nexport interface HtmlDivProperties {\n id?: string;\n className?: string;\n textClass?: string;\n style?: React.CSSProperties;\n children?: ReactNode;\n text?: string;\n html?: string;\n nativeRef?: (e: HTMLElement | null) => void;\n inline?: boolean;\n}\n\nexport interface HtmlInputProperties {\n id?: string;\n className?: string;\n textClass?: string;\n name?: string;\n type?: string;\n checked?: boolean;\n style?: React.CSSProperties;\n readOnly?: boolean;\n placeholder?: string;\n value?: string | number;\n onBlur?: () => void;\n disabled?: boolean;\n inputRef?: (e: HTMLElement | null) => void;\n onChangeValue?: (value: string) => void;\n onChangeChecked?: (checked: boolean) => void;\n}\n\nexport interface HtmlButtonProperties {\n className?: string;\n textClass?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n onClick?: () => void;\n inline?: boolean;\n children?: ReactNode;\n title?: string;\n notWrapInText?: boolean;\n androidRippleColor?: string;\n nonTextContent?: boolean;\n}\nexport interface HtmlComponents {\n Div: ComponentType<HtmlDivProperties>;\n Span: ElementType<HTMLAttributes<HTMLSpanElement>>;\n Button: ComponentType<HtmlButtonProperties>;\n I: ComponentType<HtmlIconProperties>;\n Label: ComponentType<HtmlLabelProperties>;\n B: ElementType<HTMLAttributes<HTMLElement>>;\n H1: ElementType<HTMLAttributes<HTMLElement>>;\n Input: ComponentType<HtmlInputProperties>;\n}\n/**\n * Interface for rendering different types of form controls.\n */\nexport interface FormRenderer {\n /**\n * Renders data control.\n * @param props - Properties for data renderer.\n * @returns A function that takes layout properties and returns layout properties.\n */\n renderData: (\n props: DataRendererProps,\n ) => (layout: ControlLayoutProps) => ControlLayoutProps;\n\n /**\n * Renders group control.\n * @param props - Properties for group renderer.\n * @returns A function that takes layout properties and returns layout properties.\n */\n renderGroup: (\n props: GroupRendererProps,\n ) => (layout: ControlLayoutProps) => ControlLayoutProps;\n\n /**\n * Renders display control.\n * @param props - Properties for display renderer.\n * @returns A React node.\n */\n renderDisplay: (props: DisplayRendererProps) => ReactNode;\n\n /**\n * Renders action control.\n * @param props - Properties for action renderer.\n * @returns A React node.\n */\n renderAction: (props: ActionRendererProps) => ReactNode;\n\n /**\n * Renders array control.\n * @param props - Properties for array renderer.\n * @returns A React node.\n */\n renderArray: (props: ArrayRendererProps) => ReactNode;\n\n /**\n * Renders adornment.\n * @param props - Properties for adornment renderer.\n * @returns An adornment renderer.\n */\n renderAdornment: (props: AdornmentProps) => AdornmentRenderer;\n\n /**\n * Renders label.\n * @param props - Properties for label renderer.\n * @param labelStart - React node to render at the start of the label.\n * @param labelEnd - React node to render at the end of the label.\n * @returns A React node.\n */\n renderLabel: (\n props: LabelRendererProps,\n labelStart?: ReactNode,\n labelEnd?: ReactNode,\n ) => ReactNode;\n\n /**\n * Renders layout.\n * @param props - Properties for control layout.\n * @returns A rendered control.\n */\n renderLayout: (props: ControlLayoutProps) => RenderedControl;\n\n /**\n * Renders visibility control.\n * @param props - Properties for visibility renderer.\n * @returns A React node.\n */\n renderVisibility: (props: VisibilityRendererProps) => ReactNode;\n\n /**\n * Renders label text.\n * @param props - React node for label text.\n * @returns A React node.\n */\n renderLabelText: (props: ReactNode) => ReactNode;\n\n html: HtmlComponents;\n}\n\nexport interface AdornmentProps {\n adornment: ControlAdornment;\n dataContext: ControlDataContext;\n runExpression?: RunExpression;\n designMode?: boolean;\n formOptions: FormContextOptions;\n}\n\nexport const AppendAdornmentPriority = 0;\nexport const WrapAdornmentPriority = 1000;\n\nexport interface AdornmentRenderer {\n apply(children: RenderedLayout): void;\n adornment?: ControlAdornment;\n priority: number;\n}\n\nexport interface ArrayRendererProps {\n addAction?: ActionRendererProps;\n required: boolean;\n removeAction?: (elemIndex: number) => ActionRendererProps;\n editAction?: (elemIndex: number) => ActionRendererProps;\n renderElement: (\n elemIndex: number,\n wrapEntry: (children: ReactNode) => ReactNode,\n ) => ReactNode;\n arrayControl: Control<any[] | undefined | null>;\n className?: string;\n style?: React.CSSProperties;\n min?: number | null;\n max?: number | null;\n disabled?: boolean;\n}\nexport interface Visibility {\n visible: boolean;\n showing: boolean;\n}\n\nexport interface RenderedLayout {\n labelStart?: ReactNode;\n labelEnd?: ReactNode;\n controlStart?: ReactNode;\n controlEnd?: ReactNode;\n label?: ReactNode;\n children?: ReactNode;\n errorControl?: Control<any>;\n className?: string;\n style?: React.CSSProperties;\n wrapLayout: (layout: ReactElement) => ReactElement;\n inline?: boolean;\n}\n\nexport interface RenderedControl {\n children: ReactNode;\n className?: string;\n style?: React.CSSProperties;\n divRef?: (cb: HTMLElement | null) => void;\n inline?: boolean;\n}\n\nexport interface VisibilityRendererProps extends RenderedControl {\n visibility: Control<Visibility | undefined>;\n}\n\nexport interface ControlLayoutProps {\n label?: LabelRendererProps;\n errorControl?: Control<any>;\n adornments?: AdornmentRenderer[];\n children?: ReactNode;\n processLayout?: (props: ControlLayoutProps) => ControlLayoutProps;\n className?: string | null;\n style?: React.CSSProperties;\n inline?: boolean;\n}\n\n/**\n * Enum representing the types of labels that can be rendered.\n */\nexport enum LabelType {\n /**\n * Label for a control.\n */\n Control,\n\n /**\n * Label for a group.\n */\n Group,\n\n /**\n * Label for text.\n */\n Text,\n}\n\n/**\n * Properties for label renderers.\n */\nexport interface LabelRendererProps {\n /**\n * The type of the label.\n */\n type: LabelType;\n\n /**\n * Whether to hide the label.\n */\n hide?: boolean | null;\n\n /**\n * The content of the label.\n */\n label: ReactNode;\n\n /**\n * Whether to show the label as being required.\n * E.g. show an asterisk next to the label.\n */\n required?: boolean | null;\n\n /**\n * The ID of the element the label is for.\n */\n forId?: string;\n\n /**\n * The CSS class name for the label.\n */\n className?: string;\n\n /**\n * The CSS class name for the label text.\n */\n textClass?: string;\n}\n\n/**\n * Properties for display renderers.\n */\nexport interface DisplayRendererProps {\n /**\n * The data to be displayed.\n */\n data: DisplayData;\n\n /**\n * A control with dynamic value for display.\n */\n display?: Control<string | undefined>;\n\n /**\n * The context for the control data.\n */\n dataContext: ControlDataContext;\n\n /**\n * The CSS class name for the display renderer.\n */\n className?: string;\n\n textClass?: string;\n\n /**\n * The CSS styles for the display renderer.\n */\n style?: React.CSSProperties;\n inline?: boolean;\n}\n\nexport interface ParentRendererProps {\n formNode: FormNode;\n state: ControlState;\n renderChild: ChildRenderer;\n className?: string;\n textClass?: string;\n style?: React.CSSProperties;\n dataContext: ControlDataContext;\n getChildState(node: FormNode, parent?: SchemaDataNode): ControlState;\n runExpression: RunExpression;\n designMode?: boolean;\n actionOnClick?: ControlActionHandler;\n}\n\nexport interface GroupRendererProps extends ParentRendererProps {\n definition: ControlDefinition;\n renderOptions: GroupRenderOptions;\n}\n\nexport interface DataRendererProps extends ParentRendererProps {\n renderOptions: RenderOptions;\n definition: DataControlDefinition;\n field: SchemaField;\n id: string;\n control: Control<any>;\n readonly: boolean;\n required: boolean;\n options: FieldOption[] | undefined | null;\n hidden: boolean;\n dataNode: SchemaDataNode;\n displayOnly: boolean;\n inline: boolean;\n}\n\nexport interface ControlRenderProps {\n control: Control<any>;\n parentPath?: JsonPath[];\n}\n\nexport type CreateDataProps = (\n controlProps: RenderLayoutProps,\n definition: DataControlDefinition,\n control: Control<any>,\n) => DataRendererProps;\n\nexport interface ControlRenderOptions extends ControlClasses {\n formState?: FormState;\n useDataHook?: (c: ControlDefinition) => CreateDataProps;\n actionOnClick?: ControlActionHandler;\n customDisplay?: (\n customId: string,\n displayProps: DisplayRendererProps,\n ) => ReactNode;\n adjustLayout?: (\n context: ControlDataContext,\n layout: ControlLayoutProps,\n ) => ControlLayoutProps;\n readonly?: boolean | null;\n hidden?: boolean | null;\n disabled?: boolean | null;\n displayOnly?: boolean;\n inline?: boolean;\n clearHidden?: boolean;\n stateKey?: string;\n schemaInterface?: SchemaInterface;\n variables?: Record<string, any>;\n}\n\nexport function defaultDataProps(\n {\n formOptions,\n style,\n allowedOptions,\n schemaInterface = defaultSchemaInterface,\n styleClass,\n textClass: tc,\n displayOnly,\n inline,\n ...props\n }: RenderLayoutProps,\n definition: DataControlDefinition,\n control: Control<any>,\n): DataRendererProps {\n const dataNode = props.dataContext.dataNode!;\n const field = dataNode.schema.field;\n const className = rendererClass(styleClass, definition.styleClass);\n const textClass = rendererClass(tc, definition.textClass);\n const required = !!definition.required && !displayOnly;\n const fieldOptions = schemaInterface.getDataOptions(dataNode);\n const _allowed = allowedOptions ?? [];\n const allowed = Array.isArray(_allowed) ? _allowed : [_allowed];\n return {\n dataNode,\n definition,\n control,\n field,\n id: \"c\" + control.uniqueId,\n inline: !!inline,\n options:\n allowed.length > 0\n ? allowed\n .map((x) =>\n typeof x === \"object\"\n ? x\n : fieldOptions?.find((y) => y.value == x) ?? {\n name: x.toString(),\n value: x,\n },\n )\n .filter((x) => x != null)\n : fieldOptions,\n readonly: !!formOptions.readonly,\n displayOnly: !!displayOnly,\n renderOptions: definition.renderOptions ?? { type: \"Standard\" },\n required,\n hidden: !!formOptions.hidden,\n className,\n textClass,\n style,\n ...props,\n };\n}\n\nexport interface ChildRendererOptions {\n parentDataNode?: SchemaDataNode;\n inline?: boolean;\n displayOnly?: boolean;\n styleClass?: string;\n layoutClass?: string;\n labelClass?: string;\n labelTextClass?: string;\n actionOnClick?: ControlActionHandler;\n stateKey?: string;\n variables?: Record<string, any>;\n}\n\nexport type ChildRenderer = (\n k: Key,\n child: FormNode,\n options?: ChildRendererOptions,\n) => ReactNode;\n\nexport interface RenderLayoutProps {\n formNode: FormNode;\n renderer: FormRenderer;\n state: ControlState;\n renderChild: ChildRenderer;\n createDataProps: CreateDataProps;\n formOptions: FormContextOptions;\n dataContext: ControlDataContext;\n control?: Control<any>;\n style?: React.CSSProperties;\n allowedOptions?: any[];\n getChildState(node: FormNode, parent?: SchemaDataNode): ControlState;\n runExpression: RunExpression;\n\n actionOnClick?: ControlActionHandler;\n schemaInterface?: SchemaInterface;\n designMode?: boolean;\n customDisplay?: (\n customId: string,\n displayProps: DisplayRendererProps,\n ) => ReactNode;\n labelClass?: string;\n labelTextClass?: string;\n styleClass?: string;\n textClass?: string;\n inline?: boolean;\n displayOnly?: boolean;\n}\nexport function renderControlLayout(\n props: RenderLayoutProps,\n): ControlLayoutProps {\n const {\n renderer,\n renderChild,\n control,\n dataContext,\n createDataProps: dataProps,\n style,\n designMode,\n customDisplay,\n runExpression,\n labelClass,\n labelTextClass,\n styleClass,\n textClass,\n formNode,\n formOptions,\n actionOnClick,\n state,\n getChildState,\n inline,\n displayOnly,\n } = props;\n const c = state.definition;\n if (isDataControl(c)) {\n return renderData(c);\n }\n if (isGroupControl(c)) {\n if (c.compoundField) {\n return renderData(\n dataControl(c.compoundField, c.title, {\n children: c.children,\n hideTitle: c.groupOptions?.hideTitle,\n }),\n );\n }\n\n return {\n inline,\n processLayout: renderer.renderGroup({\n formNode,\n state,\n definition: c,\n renderChild,\n runExpression,\n dataContext,\n renderOptions: c.groupOptions ?? { type: \"Standard\" },\n className: rendererClass(styleClass, c.styleClass),\n textClass: rendererClass(textClass, c.textClass),\n style,\n designMode,\n actionOnClick,\n getChildState,\n }),\n label: {\n label: c.title,\n className: rendererClass(labelClass, c.labelClass),\n textClass: rendererClass(labelTextClass, c.labelTextClass),\n type: LabelType.Group,\n hide: c.groupOptions?.hideTitle,\n },\n };\n }\n if (isActionControl(c)) {\n const actionData = c.actionData;\n const actionStyle = c.actionStyle ?? ActionStyle.Button;\n const actionContent =\n actionStyle == ActionStyle.Group ? renderActionGroup() : undefined;\n return {\n inline,\n children: renderer.renderAction({\n actionText: c.title ?? c.actionId,\n actionId: c.actionId,\n actionData,\n actionContent,\n actionStyle,\n textClass: rendererClass(textClass, c.textClass),\n iconPlacement: c.iconPlacement,\n icon: c.icon,\n inline,\n onClick:\n props.actionOnClick?.(c.actionId, actionData, dataContext) ??\n (() => {}),\n className: rendererClass(styleClass, c.styleClass),\n style,\n }),\n };\n\n function renderActionGroup() {\n const childDefs = formNode.getResolvedChildren();\n const childDef = {\n type: ControlDefinitionType.Group,\n groupOptions: { type: GroupRenderType.Contents, hideTitle: true },\n children: childDefs,\n };\n const childNode: FormNode = formNode.createChildNode(\"child\", childDef);\n return renderChild(\"child\", childNode, {});\n }\n }\n if (isDisplayControl(c)) {\n const data = c.displayData ?? {};\n const displayProps = {\n data,\n className: rendererClass(styleClass, c.styleClass),\n textClass: rendererClass(textClass, c.textClass),\n style,\n dataContext,\n inline,\n };\n if (data.type === DisplayDataType.Custom && customDisplay) {\n return {\n inline,\n children: customDisplay((data as CustomDisplay).customId, displayProps),\n };\n }\n return {\n inline,\n children: renderer.renderDisplay(displayProps),\n };\n }\n return {};\n\n function renderData(c: DataControlDefinition): ControlLayoutProps {\n if (!control) return { children: \"No control for: \" + c.field };\n const rendererProps = dataProps(props, c, control);\n const label = !c.hideTitle\n ? controlTitle(c.title, props.dataContext.dataNode!.schema.field)\n : undefined;\n return {\n inline,\n processLayout: renderer.renderData(rendererProps),\n label: {\n type:\n (c.children?.length ?? 0) > 0 ? LabelType.Group : LabelType.Control,\n label,\n forId: rendererProps.id,\n required: c.required && !displayOnly,\n hide: c.hideTitle,\n className: rendererClass(labelClass, c.labelClass),\n textClass: rendererClass(labelTextClass, c.labelTextClass),\n },\n errorControl: control,\n };\n }\n}\n\ntype MarkupKeys = keyof Omit<\n RenderedLayout,\n | \"errorControl\"\n | \"style\"\n | \"className\"\n | \"wrapLayout\"\n | \"readonly\"\n | \"disabled\"\n | \"inline\"\n>;\nexport function appendMarkup(\n k: MarkupKeys,\n markup: ReactNode,\n): (layout: RenderedLayout) => void {\n return (layout) =>\n (layout[k] = (\n <>\n {layout[k]}\n {markup}\n </>\n ));\n}\n\nexport function wrapMarkup(\n k: MarkupKeys,\n wrap: (ex: ReactNode) => ReactNode,\n): (layout: RenderedLayout) => void {\n return (layout) => (layout[k] = wrap(layout[k]));\n}\n\nexport function layoutKeyForPlacement(pos: AdornmentPlacement): MarkupKeys {\n switch (pos) {\n case AdornmentPlacement.ControlEnd:\n return \"controlEnd\";\n case AdornmentPlacement.ControlStart:\n return \"controlStart\";\n case AdornmentPlacement.LabelStart:\n return \"labelStart\";\n case AdornmentPlacement.LabelEnd:\n return \"labelEnd\";\n }\n}\n\nexport function wrapLayout(\n wrap: (layout: ReactElement) => ReactElement,\n): (renderedLayout: RenderedLayout) => void {\n return (rl) => {\n const orig = rl.wrapLayout;\n rl.wrapLayout = (x) => wrap(orig(x));\n };\n}\n\nexport function appendMarkupAt(\n pos: AdornmentPlacement,\n markup: ReactNode,\n): (layout: RenderedLayout) => void {\n return appendMarkup(layoutKeyForPlacement(pos), markup);\n}\n\nexport function wrapMarkupAt(\n pos: AdornmentPlacement,\n wrap: (ex: ReactNode) => ReactNode,\n): (layout: RenderedLayout) => void {\n return wrapMarkup(layoutKeyForPlacement(pos), wrap);\n}\n\nexport function renderLayoutParts(\n props: ControlLayoutProps,\n renderer: FormRenderer,\n): RenderedLayout {\n const {\n className,\n children,\n style,\n errorControl,\n label,\n adornments,\n inline,\n } = props.processLayout?.(props) ?? props;\n const layout: RenderedLayout = {\n children,\n errorControl,\n style,\n className: className!,\n inline,\n wrapLayout: (x) => x,\n };\n (adornments ?? [])\n .sort((a, b) => a.priority - b.priority)\n .forEach((x) => x.apply(layout));\n layout.label =\n label && !label.hide\n ? renderer.renderLabel(label, layout.labelStart, layout.labelEnd)\n : undefined;\n return layout;\n}\n\nexport function controlTitle(\n title: string | undefined | null,\n field: SchemaField,\n) {\n return title ? title : fieldDisplayName(field);\n}\n\nexport function getLengthRestrictions(definition: DataControlDefinition) {\n const lengthVal = definition.validators?.find(\n (x) => x.type === ValidatorType.Length,\n ) as LengthValidator | undefined;\n\n return { min: lengthVal?.min, max: lengthVal?.max };\n}\n\nexport function createArrayActions(\n control: Control<any[]>,\n field: SchemaField,\n options?: ArrayActionOptions,\n): Pick<\n ArrayRendererProps,\n \"addAction\" | \"removeAction\" | \"editAction\" | \"arrayControl\"\n> {\n const noun = field.displayName ?? field.field;\n const {\n addText,\n noAdd,\n removeText,\n noRemove,\n removeActionId,\n addActionId,\n editActionId,\n editText,\n disabled,\n readonly,\n designMode,\n editExternal,\n } = options ?? {};\n return {\n arrayControl: control,\n addAction:\n !readonly && !noAdd\n ? makeAdd(() => {\n if (!designMode) {\n const newValue = elementValueForField(field);\n\n if (editExternal) {\n const editData = getExternalEditData(control);\n editData.value = {\n data: [elementValueForField(field)],\n actions: [\n makeCancel(),\n {\n action: makeAdd(() => {\n const newValue = (\n editData.fields.data.value as any[]\n )[0];\n addElement(control, newValue);\n editData.value = undefined;\n }),\n },\n ],\n };\n } else {\n addElement(control, newValue);\n }\n }\n })\n : undefined,\n editAction: editExternal\n ? (i: number) => ({\n actionId: editActionId ? editActionId : \"edit\",\n actionText: editText ? editText : \"Edit\",\n onClick: () => {\n if (!designMode) {\n const editData = getExternalEditData(control);\n const elementToEdit = control.as<any[]>().elements[i];\n editData.value = {\n data: [elementToEdit.current.value],\n actions: [\n makeCancel(),\n {\n action: createAction(\n \"apply\",\n () => {\n elementToEdit.value = (\n editData.fields.data.value as any[]\n )[0];\n editData.value = undefined;\n },\n \"Apply\",\n ),\n },\n ],\n };\n }\n },\n })\n : undefined,\n removeAction:\n !readonly && !noRemove\n ? (i: number) => ({\n actionId: removeActionId ? removeActionId : \"remove\",\n actionText: removeText ? removeText : \"Remove\",\n onClick: () => {\n if (!designMode) {\n removeElement(control, i);\n }\n },\n disabled,\n })\n : undefined,\n };\n\n function makeAdd(onClick: () => void): ActionRendererProps {\n return createAction(\n addActionId ? addActionId : \"add\",\n onClick,\n addText ? addText : \"Add \" + noun,\n { disabled },\n );\n }\n\n function makeCancel(): ExternalEditAction {\n return {\n dontValidate: true,\n action: {\n actionId: \"cancel\",\n actionText: \"Cancel\",\n onClick: () => {\n getExternalEditData(control).value = undefined;\n },\n disabled,\n },\n };\n }\n}\n\nexport function applyArrayLengthRestrictions(\n {\n arrayControl,\n min,\n max,\n editAction,\n addAction: aa,\n removeAction: ra,\n required,\n }: Pick<\n ArrayRendererProps,\n | \"addAction\"\n | \"removeAction\"\n | \"editAction\"\n | \"arrayControl\"\n | \"min\"\n | \"max\"\n | \"required\"\n >,\n disable?: boolean,\n): Pick<ArrayRendererProps, \"addAction\" | \"removeAction\" | \"editAction\"> & {\n addDisabled: boolean;\n removeDisabled: boolean;\n} {\n const [removeAllowed, addAllowed] = applyLengthRestrictions(\n arrayControl.elements?.length ?? 0,\n min == null && required ? 1 : min,\n max,\n true,\n true,\n );\n return {\n addAction: disable || addAllowed ? aa : undefined,\n removeAction: disable || removeAllowed ? ra : undefined,\n removeDisabled: !removeAllowed,\n addDisabled: !addAllowed,\n editAction,\n };\n}\n\nexport function fieldOptionAdornment(p: DataRendererProps) {\n return (o: FieldOption, fieldIndex: number, selected: boolean) => (\n <RenderArrayElements\n array={p.formNode.getChildNodes()}\n children={(cd, i) =>\n p.renderChild(i, cd, {\n parentDataNode: p.dataContext.parentNode,\n stateKey: fieldIndex.toString(),\n variables: { formData: { option: o, optionSelected: selected } },\n })\n }\n />\n );\n}\n\nexport function lookupChildDataContext(\n dataContext: ControlDataContext,\n c: ControlDefinition,\n): ControlDataContext {\n const parentNode = dataContext.dataNode ?? dataContext.parentNode;\n const dataNode = lookupDataNode(c, parentNode);\n return { ...dataContext, parentNode, dataNode };\n}\n","import { ReactElement, ReactNode } from \"react\";\nimport {\n AdornmentProps,\n AdornmentRenderer,\n ArrayRendererProps,\n ControlLayoutProps,\n DataRendererProps,\n DisplayRendererProps,\n FormRenderer,\n GroupRendererProps,\n HtmlComponents,\n LabelRendererProps,\n LabelType,\n RenderedControl,\n VisibilityRendererProps,\n} from \"./controlRender\";\nimport {\n AccordionAdornment,\n ControlAdornment,\n ControlAdornmentType,\n IconAdornment,\n OptionalAdornment,\n RenderOptions,\n SetFieldAdornment,\n} from \"@astroapps/forms-core\";\nimport { ActionRendererProps } from \"./types\";\n\nexport interface DefaultRenderers {\n data: DataRendererRegistration;\n label: LabelRendererRegistration;\n action: ActionRendererRegistration;\n array: ArrayRendererRegistration;\n group: GroupRendererRegistration;\n display: DisplayRendererRegistration;\n adornment: AdornmentRendererRegistration;\n renderLayout: LayoutRendererRegistration;\n visibility: VisibilityRendererRegistration;\n extraRenderers: RendererRegistration[];\n html: HtmlComponents;\n}\n\nexport interface LayoutRendererRegistration {\n type: \"layout\";\n match?: (props: ControlLayoutProps) => boolean;\n render: (\n props: ControlLayoutProps,\n renderers: FormRenderer,\n ) => RenderedControl;\n}\nexport interface DataRendererRegistration {\n type: \"data\";\n schemaType?: string | string[];\n renderType?: string | string[];\n options?: boolean;\n collection?: boolean;\n match?: (props: DataRendererProps, renderOptions: RenderOptions) => boolean;\n render: (\n props: DataRendererProps,\n renderers: FormRenderer,\n ) => ReactNode | ((layout: ControlLayoutProps) => ControlLayoutProps);\n}\n\nexport interface LabelRendererRegistration {\n type: \"label\";\n labelType?: LabelType | LabelType[];\n render: (\n labelProps: LabelRendererProps,\n labelStart: ReactNode,\n labelEnd: ReactNode,\n renderers: FormRenderer,\n ) => ReactNode;\n}\n\nexport interface ActionRendererRegistration {\n type: \"action\";\n actionType?: string | string[];\n render: (props: ActionRendererProps, renderers: FormRenderer) => ReactElement;\n}\n\nexport interface ArrayRendererRegistration {\n type: \"array\";\n render: (props: ArrayRendererProps, renderers: FormRenderer) => ReactElement;\n}\n\nexport interface GroupRendererRegistration {\n type: \"group\";\n renderType?: string | string[];\n render: (\n props: GroupRendererProps,\n renderers: FormRenderer,\n ) => ReactElement | ((layout: ControlLayoutProps) => ControlLayoutProps);\n}\n\nexport interface DisplayRendererRegistration {\n type: \"display\";\n renderType?: string | string[];\n render: (\n props: DisplayRendererProps,\n renderers: FormRenderer,\n ) => ReactElement;\n}\n\nexport interface AdornmentRendererRegistration {\n type: \"adornment\";\n adornmentType?: string | string[];\n render: (props: AdornmentProps, renderers: FormRenderer) => AdornmentRenderer;\n}\n\nexport interface VisibilityRendererRegistration {\n type: \"visibility\";\n render: (props: VisibilityRendererProps, renderer: FormRenderer) => ReactNode;\n}\n\nexport type RendererRegistration =\n | DataRendererRegistration\n | GroupRendererRegistration\n | DisplayRendererRegistration\n | ActionRendererRegistration\n | LabelRendererRegistration\n | ArrayRendererRegistration\n | AdornmentRendererRegistration\n | LayoutRendererRegistration\n | VisibilityRendererRegistration;\n\nexport function isIconAdornment(a: ControlAdornment): a is IconAdornment {\n return a.type === ControlAdornmentType.Icon;\n}\n\nexport function isAccordionAdornment(\n a: ControlAdornment,\n): a is AccordionAdornment {\n return a.type === ControlAdornmentType.Accordion;\n}\n\nexport function isSetFieldAdornment(\n a: ControlAdornment,\n): a is SetFieldAdornment {\n return a.type === ControlAdornmentType.SetField;\n}\n\nexport function isOptionalAdornment(\n a: ControlAdornment,\n): a is OptionalAdornment {\n return a.type === ControlAdornmentType.Optional;\n}\n\nexport function createLayoutRenderer(\n render: LayoutRendererRegistration[\"render\"],\n options?: Partial<LayoutRendererRegistration>,\n): LayoutRendererRegistration {\n return { type: \"layout\", render, ...options };\n}\n\nexport function createActionRenderer(\n actionId: string | string[] | undefined,\n render: ActionRendererRegistration[\"render\"],\n options?: Partial<ActionRendererRegistration>,\n): ActionRendererRegistration {\n return { type: \"action\", actionType: actionId, render, ...options };\n}\n\nexport function createArrayRenderer(\n render: ArrayRendererRegistration[\"render\"],\n options?: Partial<ArrayRendererRegistration>,\n): ArrayRendererRegistration {\n return { type: \"array\", render, ...options };\n}\n\nexport function createDataRenderer(\n render: DataRendererRegistration[\"render\"],\n options?: Partial<DataRendererRegistration>,\n): DataRendererRegistration {\n return { type: \"data\", render, ...options };\n}\n\nexport function createGroupRenderer(\n render: GroupRendererRegistration[\"render\"],\n options?: Partial<GroupRendererRegistration>,\n): GroupRendererRegistration {\n return { type: \"group\", render, ...options };\n}\n\nexport function createDisplayRenderer(\n render: DisplayRendererRegistration[\"render\"],\n options?: Partial<DisplayRendererRegistration>,\n): DisplayRendererRegistration {\n return { type: \"display\", render, ...options };\n}\n\nexport function createLabelRenderer(\n render: LabelRendererRegistration[\"render\"],\n options?: Partial<LabelRendererRegistration>,\n): LabelRendererRegistration {\n return { type: \"label\", render, ...options };\n}\n\nexport function createVisibilityRenderer(\n render: VisibilityRendererRegistration[\"render\"],\n options?: Partial<VisibilityRendererRegistration>,\n): VisibilityRendererRegistration {\n return { type: \"visibility\", render, ...options };\n}\n\nexport function createAdornmentRenderer(\n render: AdornmentRendererRegistration[\"render\"],\n options?: Partial<AdornmentRendererRegistration>,\n): AdornmentRendererRegistration {\n return { type: \"adornment\", ...options, render };\n}\n","import { ReactNode } from \"react\";\nimport {\n AdornmentProps,\n AdornmentRenderer,\n ArrayRendererProps,\n ControlLayoutProps,\n DataRendererProps,\n DisplayRendererProps,\n FormRenderer,\n GroupRendererProps,\n LabelRendererProps,\n LabelType,\n VisibilityRendererProps,\n} from \"./controlRender\";\nimport { hasOptions } from \"./util\";\nimport {\n ActionRendererRegistration,\n AdornmentRendererRegistration,\n ArrayRendererRegistration,\n DataRendererRegistration,\n DefaultRenderers,\n DisplayRendererRegistration,\n GroupRendererRegistration,\n LabelRendererRegistration,\n LayoutRendererRegistration,\n RendererRegistration,\n VisibilityRendererRegistration,\n} from \"./renderers\";\nimport { DataRenderType } from \"@astroapps/forms-core\";\nimport { ActionRendererProps } from \"./types\";\n\nexport function createFormRenderer(\n customRenderers: RendererRegistration[] = [],\n defaultRenderers: DefaultRenderers,\n): FormRenderer {\n const allRenderers = [\n ...customRenderers,\n ...(defaultRenderers.extraRenderers ?? []),\n ];\n const dataRegistrations = allRenderers.filter(isDataRegistration);\n const groupRegistrations = allRenderers.filter(isGroupRegistration);\n const adornmentRegistrations = allRenderers.filter(isAdornmentRegistration);\n const displayRegistrations = allRenderers.filter(isDisplayRegistration);\n const labelRenderers = allRenderers.filter(isLabelRegistration);\n const arrayRenderers = allRenderers.filter(isArrayRegistration);\n const actionRenderers = allRenderers.filter(isActionRegistration);\n const layoutRenderers = allRenderers.filter(isLayoutRegistration);\n const visibilityRenderer =\n allRenderers.find(isVisibilityRegistration) ?? defaultRenderers.visibility;\n\n const formRenderers: FormRenderer = {\n renderAction,\n renderData,\n renderGroup,\n renderDisplay,\n renderLabel,\n renderArray,\n renderAdornment,\n renderLayout,\n renderVisibility,\n renderLabelText,\n html: defaultRenderers.html,\n };\n\n function renderVisibility(props: VisibilityRendererProps) {\n return visibilityRenderer.render(props, formRenderers);\n }\n\n function renderLabelText(label: ReactNode) {\n return renderLabel({ label, type: LabelType.Text }, undefined, undefined);\n }\n\n function renderLayout(props: ControlLayoutProps) {\n const renderer =\n layoutRenderers.find((x) => !x.match || x.match(props)) ??\n defaultRenderers.renderLayout;\n return renderer.render(props, formRenderers);\n }\n\n function renderAdornment(props: AdornmentProps): AdornmentRenderer {\n const renderer =\n adornmentRegistrations.find((x) =>\n isOneOf(x.adornmentType, props.adornment.type),\n ) ?? defaultRenderers.adornment;\n return renderer.render(props, formRenderers);\n }\n\n function renderArray(props: ArrayRendererProps) {\n return (arrayRenderers[0] ?? defaultRenderers.array).render(\n props,\n formRenderers,\n );\n }\n\n function renderLabel(\n props: LabelRendererProps,\n labelStart: ReactNode,\n labelEnd: ReactNode,\n ) {\n const renderer =\n labelRenderers.find((x) => isOneOf(x.labelType, props.type)) ??\n defaultRenderers.label;\n return renderer.render(props, labelStart, labelEnd, formRenderers);\n }\n\n function renderData(\n props: DataRendererProps,\n ): (layout: ControlLayoutProps) => ControlLayoutProps {\n const { renderOptions, field } = props;\n\n const options = hasOptions(props);\n const renderType = renderOptions.type;\n const renderer = dataRegistrations.find(matchesRenderer);\n\n const result = (renderer ?? defaultRenderers.data).render(\n props,\n formRenderers,\n );\n if (typeof result === \"function\") return result;\n return (l) => ({ ...l, children: result });\n\n function matchesRenderer(x: DataRendererRegistration) {\n const noMatch = x.match ? !x.match(props, renderOptions) : undefined;\n if (noMatch === true) return false;\n const matchCollection =\n (x.collection ?? false) ===\n (props.dataNode.elementIndex == null && (field.collection ?? false));\n const isSchemaAllowed =\n !!x.schemaType && renderType == DataRenderType.Standard\n ? isOneOf(x.schemaType, field.type)\n : undefined;\n const isRendererAllowed =\n !!x.renderType && isOneOf(x.renderType, renderType);\n return (\n matchCollection &&\n (x.options ?? false) === options &&\n (isSchemaAllowed ||\n isRendererAllowed ||\n (!x.renderType && !x.schemaType && noMatch === false))\n );\n }\n }\n\n function renderGroup(\n props: GroupRendererProps,\n ): (layout: ControlLayoutProps) => ControlLayoutProps {\n const renderType = props.renderOptions.type;\n const renderer =\n groupRegistrations.find((x) => isOneOf(x.renderType, renderType)) ??\n defaultRenderers.group;\n const result = renderer.render(props, formRenderers);\n if (typeof result === \"function\") return result;\n return (l) => ({ ...l, children: result });\n }\n\n function renderAction(props: ActionRendererProps) {\n const renderer =\n actionRenderers.find((x) => isOneOf(x.actionType, props.actionId)) ??\n defaultRenderers.action;\n return renderer.render(props, formRenderers);\n }\n\n function renderDisplay(props: DisplayRendererProps) {\n const renderType = props.data.type;\n const renderer =\n displayRegistrations.find((x) => isOneOf(x.renderType, renderType)) ??\n defaultRenderers.display;\n return renderer.render(props, formRenderers);\n }\n\n return formRenderers;\n}\n\nfunction isOneOf<A>(x: A | A[] | undefined, v: A) {\n return x == null ? true : Array.isArray(x) ? x.includes(v) : v === x;\n}\n\nfunction isAdornmentRegistration(\n x: RendererRegistration,\n): x is AdornmentRendererRegistration {\n return x.type === \"adornment\";\n}\n\nfunction isDataRegistration(\n x: RendererRegistration,\n): x is DataRendererRegistration {\n return x.type === \"data\";\n}\n\nfunction isGroupRegistration(\n x: RendererRegistration,\n): x is GroupRendererRegistration {\n return x.type === \"group\";\n}\n\nfunction isLabelRegistration(\n x: RendererRegistration,\n): x is LabelRendererRegistration {\n return x.type === \"label\";\n}\n\nfunction isLayoutRegistration(\n x: RendererRegistration,\n): x is LayoutRendererRegistration {\n return x.type === \"layout\";\n}\n\nfunction isVisibilityRegistration(\n x: RendererRegistration,\n): x is VisibilityRendererRegistration {\n return x.type === \"visibility\";\n}\n\nfunction isActionRegistration(\n x: RendererRegistration,\n): x is ActionRendererRegistration {\n return x.type === \"action\";\n}\n\nfunction isDisplayRegistration(\n x: RendererRegistration,\n): x is DisplayRendererRegistration {\n return x.type === \"display\";\n}\n\nfunction isArrayRegistration(\n x: RendererRegistration,\n): x is ArrayRendererRegistration {\n return x.type === \"array\";\n}\n","import {\n ControlLayoutProps,\n ControlRenderOptions,\n ControlRenderProps,\n defaultDataProps,\n FormRenderer,\n renderControlLayout,\n Visibility,\n} from \"./controlRender\";\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n ControlDefinition,\n ControlState,\n createFormState,\n createSchemaDataNode,\n createSchemaTree,\n defaultSchemaInterface,\n FormNode,\n FormState,\n isDataControl,\n JsonPath,\n legacyFormNode,\n SchemaDataNode,\n SchemaField,\n} from \"@astroapps/forms-core\";\nimport { ControlDataContext } from \"./types\";\nimport {\n actionHandlers,\n getGroupClassOverrides,\n rendererClass,\n useUpdatedRef,\n} from \"./util\";\nimport { Control, useControl } from \"@react-typed-forms/core\";\n\nexport interface RenderFormProps {\n data: SchemaDataNode;\n form: FormNode;\n renderer: FormRenderer;\n options?: ControlRenderOptions;\n}\n\n/* @trackControls */\nexport function RenderForm({\n data,\n form,\n renderer,\n options = {},\n}: RenderFormProps) {\n const schemaInterface = options.schemaInterface ?? defaultSchemaInterface;\n const [formState, setFormState] = useState(\n () => options?.formState ?? createFormState(schemaInterface),\n );\n let effects: (() => void)[] | undefined = [];\n const runAsync = (cb: () => void) => {\n if (effects) effects.push(cb);\n else cb();\n };\n const state = formState.getControlState(data, form, options, runAsync);\n\n useEffect(() => {\n if (!options?.formState) {\n return () => formState.cleanup();\n }\n }, [formState, options?.formState]);\n\n const definition = state.definition;\n\n const visible = !state.hidden;\n\n const visibility = useControl<Visibility | undefined>(() =>\n visible != null\n ? {\n visible,\n showing: visible,\n }\n : undefined,\n );\n visibility.fields.visible.value = visible;\n\n const dataContext: ControlDataContext = {\n schemaInterface: state.schemaInterface,\n dataNode: state.dataNode,\n parentNode: data,\n variables: state.variables,\n };\n\n const adornments =\n definition.adornments?.map((x) =>\n renderer.renderAdornment({\n adornment: x,\n dataContext,\n formOptions: state,\n }),\n ) ?? [];\n\n const {\n styleClass,\n labelClass,\n layoutClass,\n labelTextClass,\n textClass,\n ...inheritableOptions\n } = options;\n const { readonly, hidden, disabled, variables } = state;\n const childOptions: ControlRenderOptions = {\n ...inheritableOptions,\n readonly,\n disabled,\n variables,\n formState,\n hidden,\n };\n\n const labelAndChildren = renderControlLayout({\n formNode: form,\n renderer,\n state,\n renderChild: (k, child, options) => {\n const overrideClasses = getGroupClassOverrides(definition);\n const { parentDataNode, actionOnClick, variables, ...renderOptions } =\n options ?? {};\n const dContext = parentDataNode ?? dataContext.dataNode ?? data;\n const allChildOptions = {\n ...childOptions,\n ...overrideClasses,\n ...renderOptions,\n variables: { ...childOptions.variables, ...variables },\n actionOnClick: actionHandlers(\n actionOnClick,\n childOptions.actionOnClick,\n ),\n };\n return (\n <RenderForm\n key={k}\n form={child}\n renderer={renderer}\n data={dContext}\n options={allChildOptions}\n />\n );\n },\n inline: options?.inline,\n displayOnly: options?.displayOnly,\n createDataProps: defaultDataProps,\n formOptions: state,\n dataContext,\n control: dataContext.dataNode?.control,\n schemaInterface,\n style: state.style,\n allowedOptions: state.allowedOptions,\n customDisplay: options.customDisplay,\n actionOnClick: options.actionOnClick,\n styleClass: styleClass,\n labelClass: labelClass,\n labelTextClass: labelTextClass,\n textClass: textClass,\n getChildState(child: FormNode, parent?: SchemaDataNode): ControlState {\n return formState.getControlState(\n parent ?? state.dataNode ?? data,\n child,\n childOptions,\n runAsync,\n );\n },\n runExpression: (scope, expr, returnResult) => {\n if (expr?.type) {\n formState.evalExpression(expr, {\n scope,\n dataNode: data,\n schemaInterface,\n returnResult,\n runAsync,\n });\n }\n },\n });\n const layoutProps: ControlLayoutProps = {\n ...labelAndChildren,\n adornments,\n className: rendererClass(options.layoutClass, definition.layoutClass),\n style: state.layoutStyle,\n };\n const renderedControl = renderer.renderLayout(\n options.adjustLayout?.(dataContext, layoutProps) ?? layoutProps,\n );\n const rendered = renderer.renderVisibility({\n visibility,\n ...renderedControl,\n });\n useEffect(() => {\n if (effects) {\n const toRun = effects;\n effects = undefined;\n toRun.forEach((cb) => cb());\n }\n }, [effects]);\n return rendered;\n}\n\n/**\n * @deprecated Use RenderForm instead.\n */\nexport function useControlRendererComponent(\n controlOrFormNode: ControlDefinition | FormNode,\n renderer: FormRenderer,\n options: ControlRenderOptions = {},\n parentDataNode: SchemaDataNode,\n): FC<{}> {\n const [definition, formNode] =\n \"definition\" in controlOrFormNode\n ? [controlOrFormNode.definition, controlOrFormNode]\n : [controlOrFormNode, legacyFormNode(controlOrFormNode)];\n\n const r = useUpdatedRef({\n options,\n renderer,\n parentDataNode,\n formNode,\n });\n\n return useMemo(\n () => () => {\n const { options, parentDataNode, formNode, renderer } = r.current;\n return (\n <RenderForm\n data={parentDataNode}\n form={formNode}\n renderer={renderer}\n options={options}\n />\n );\n },\n [r],\n );\n}\n\n/**\n * @deprecated Use RenderForm instead.\n */\nexport function ControlRenderer({\n definition,\n fields,\n renderer,\n options,\n control,\n parentPath,\n}: {\n definition: ControlDefinition;\n fields: SchemaField[];\n renderer: FormRenderer;\n options?: ControlRenderOptions;\n control: Control<any>;\n parentPath?: JsonPath[];\n}) {\n const schemaDataNode = createSchemaDataNode(\n createSchemaTree(fields).rootNode,\n control,\n );\n const Render = useControlRendererComponent(\n definition,\n renderer,\n options,\n schemaDataNode,\n );\n return <Render />;\n}\n\n/**\n * @deprecated Use RenderForm instead.\n */\nexport function NewControlRenderer({\n definition,\n renderer,\n options,\n parentDataNode,\n}: {\n definition: ControlDefinition | FormNode;\n renderer: FormRenderer;\n options?: ControlRenderOptions;\n parentDataNode: SchemaDataNode;\n}) {\n const Render = useControlRendererComponent(\n definition,\n renderer,\n options,\n parentDataNode,\n );\n return <Render />;\n}\n\n/**\n * @deprecated Use RenderForm instead.\n */\nexport function useControlRenderer(\n definition: ControlDefinition,\n fields: SchemaField[],\n renderer: FormRenderer,\n options: ControlRenderOptions = {},\n): FC<ControlRenderProps> {\n const r = useUpdatedRef({ definition, fields, renderer, options });\n return useCallback(\n ({ control, parentPath }) => {\n return (\n <ControlRenderer\n {...r.current}\n control={control}\n parentPath={parentPath}\n />\n );\n },\n [r],\n );\n}\n"],"names":["applyDefaultValues","v","fields","doneSet","_doneSet","defaultValueForFields","has","Set","add","applyValue","filter","x","isCompoundField","field","length","out","_extends","forEach","applyDefaultForField","defaultValueForField","parent","notElement","collection","map","required","treeChildren","children","Object","fromEntries","sf","defaultValue","undefined","isRequired","_sf$children","childValue","notNullable","elementValueForField","_sf$children2","findScalarField","findField","findCompoundField","fieldHasTag","tag","_field$tags","Boolean","tags","includes","fieldDisplayName","_field$displayName","displayName","hasOptions","o","_o$options$length","_o$options","options","defaultControlForField","noChildren","ref","getTagParam","SchemaTags","ControlRef","type","ControlDefinitionType","Data","title","childRefId","NoControl","isScalarField","htmlEditor","HtmlEditor","renderOptions","DataRenderType","Standard","findControlsForCompound","compound","definition","isDataControl","isGroupControl","_definition$children$","_definition$children","compoundField","flatMap","d","findNonDataGroups","controls","control","_control$children2","concat","addMissingControls","warning","addMissingControlsForSchema","createSchemaTree","rootNode","schema","controlMap","schemaControlMap","rootControls","c","toControlAndSchema","rootSchema","addSchemaMapEntry","addReferences","getChildNodes","addMissing","toDefinition","schemaNode","skipChildren","existingControls","id","eligibleParents","getEligibleParents","desiredGroup","ControlGroup","parentGroup","indexOf","_schemaControlMap$eli","newControl","relativePath","push","some","addCompound","node","isCompoundNode","console","warn","schemaId","entry","parentSchema","parentNode","dontRegister","_c$children$map","_c$children","controlPath","fieldPathForDefinition","dataSchema","schemaForFieldPath","_dataSchema","useUpdatedRef","a","r","useRef","current","cleanDataForSchema","removeIfDefault","_fields$find","getResolvedFields","typeField","find","isTypeField","typeValue","cleanableFields","_x$onlyForTypes$lengt","_x$onlyForTypes","onlyForTypes","_x$onlyForTypes2","canBeNull","childNode","createChildNode","Array","isArray","cv","getAllReferencedClasses","collectExtra","_c$children2","_collectExtra","childClasses","go","getGroupClassOverrides","_ref","isCheckEntryClasses","entryWrapperClass","selectedClass","notSelectedClass","groupOptions","gridClasses","isGridRenderer","rowClass","_ref2","isAutoCompleteClasses","listContainerClass","listEntryClass","chipContainerClass","chipCloseButtonClass","tc","clsx","styleClass","layoutClass","labelClass","textClass","labelTextClass","values","getOverrideClass","findChildDefinition","childPath","base","className","startsWith","substring","rendererClass","controlClass","globalClass","gc","oc","applyLengthRestrictions","min","max","minValue","maxValue","findFieldPath","fieldPath","fieldNames","split","foundFields","i","currentFields","cf","nextField","mergeObjects","o1","o2","doMerge","_","v1","v2","result","key","hasOwnProperty","value1","value2","deepMerge","value","fallback","fv","coerceToString","JSON","stringify","toString","def","getGroupRendererOptions","childLayoutClass","childStyleClass","childLabelClass","actionHandlers","nonNullHandlers","slice","call","arguments","actionId","actionData","ctx","res","getDiffObject","dataNode","force","dirty","isNull","elementIndex","idField","IdField","as","elements","_getElementIndex","change","getChildElement","old","getElementIndex","initialIndex","edit","diff","getChild","getNullToggler","ensureMetaValue","lastDefined","getLastDefinedValue","isEditing","getIsEditing","currentNotNull","disabled","notNull","disableIfNotEditing","subscribe","ControlChange","Value","getExternalEditData","nv","currentEdit","initialValue","getAllValues","clearMultiValues","allValues","setValue","applyValues","isEqual","changes","every","collectDifferences","setInitialValue","allEdits","resetMultiValues","editable","editing","b","validationVisitor","onInvalid","s","touched","validate","useExpression","runExpression","expression","coerce","bindings","useControl","createScopedEffect","scope","dataControl","validatorOptions","adornmentOptions","renderOptionsFor","autocompleteOptions","Autocomplete","checkListOptions","CheckList","radioButtonOptions","Radio","lengthValidatorOptions","ValidatorType","Length","jsonataValidatorOptions","Jsonata","dateValidatorOptions","Date","accordionOptions","ControlAdornmentType","Accordion","textfieldOptions","Textfield","displayOnlyOptions","DisplayOnly","jsonataOptions","textDisplayControl","text","Display","displayData","DisplayDataType","Text","htmlDisplayControl","html","Html","dynamicDefaultValue","expr","DynamicPropertyType","DefaultValue","dynamicReadonly","Readonly","dynamicVisibility","Visible","dynamicDisabled","Disabled","fieldExpr","ExpressionType","fieldEqExpr","DataMatch","jsonataExpr","groupedControl","Group","hideTitle","compoundControl","actionControl","actionText","Action","createAction","onClick","emptyGroupDefinition","GroupRenderType","useControlDefinitionForSchema","useMemo","applyExtensionToSchema","schemaMap","extension","outMap","entries","cro","reduce","cr","_cr$fields","optionField","mergeOption","name","mergeFields","applyExtensionsToSchema","extensions","resolveSchemas","createIconLibraryExtension","IconReference","AppendAdornmentPriority","WrapAdornmentPriority","LabelType","defaultDataProps","_definition$renderOpt","formOptions","style","allowedOptions","_ref$schemaInterface","schemaInterface","defaultSchemaInterface","displayOnly","inline","props","_objectWithoutPropertiesLoose","_excluded","dataContext","fieldOptions","getDataOptions","_allowed","allowed","uniqueId","_fieldOptions$find","y","readonly","hidden","renderControlLayout","renderer","renderChild","dataProps","createDataProps","designMode","customDisplay","formNode","actionOnClick","state","getChildState","renderData","_c$groupOptions2","_c$groupOptions3","_c$groupOptions","processLayout","renderGroup","label","hide","isActionControl","_c$actionStyle","_c$title","_props$actionOnClick","renderActionGroup","childDefs","getResolvedChildren","childDef","Contents","actionStyle","ActionStyle","Button","actionContent","renderAction","iconPlacement","icon","isDisplayControl","_c$displayData","data","displayProps","Custom","customId","renderDisplay","_c$children$length","rendererProps","controlTitle","Control","forId","errorControl","appendMarkup","k","markup","layout","_jsxs","_Fragment","wrapMarkup","wrap","layoutKeyForPlacement","pos","AdornmentPlacement","ControlEnd","ControlStart","LabelStart","LabelEnd","wrapLayout","rl","orig","appendMarkupAt","wrapMarkupAt","renderLayoutParts","_props$processLayout","adornments","sort","priority","apply","renderLabel","labelStart","labelEnd","getLengthRestrictions","_definition$validator","lengthVal","validators","createArrayActions","noun","_ref3","addText","noAdd","removeText","noRemove","removeActionId","addActionId","editActionId","editText","editExternal","arrayControl","addAction","makeAdd","newValue","editData","actions","makeCancel","action","addElement","editAction","elementToEdit","removeAction","removeElement","dontValidate","applyArrayLengthRestrictions","_ref4","disable","_arrayControl$element","_arrayControl$element2","aa","ra","_applyLengthRestricti","removeAllowed","addAllowed","removeDisabled","addDisabled","fieldOptionAdornment","p","fieldIndex","selected","_jsx","RenderArrayElements","array","cd","parentDataNode","stateKey","variables","formData","option","optionSelected","lookupChildDataContext","_dataContext$dataNode","lookupDataNode","isIconAdornment","Icon","isAccordionAdornment","isSetFieldAdornment","SetField","isOptionalAdornment","Optional","createLayoutRenderer","render","createActionRenderer","actionType","createArrayRenderer","createDataRenderer","createGroupRenderer","createDisplayRenderer","createLabelRenderer","createVisibilityRenderer","createAdornmentRenderer","createFormRenderer","customRenderers","defaultRenderers","_defaultRenderers$ext","_allRenderers$find","allRenderers","extraRenderers","dataRegistrations","isDataRegistration","groupRegistrations","isGroupRegistration","adornmentRegistrations","isAdornmentRegistration","displayRegistrations","isDisplayRegistration","labelRenderers","isLabelRegistration","arrayRenderers","isArrayRegistration","actionRenderers","isActionRegistration","layoutRenderers","isLayoutRegistration","visibilityRenderer","isVisibilityRegistration","visibility","formRenderers","renderArray","renderAdornment","renderLayout","renderVisibility","renderLabelText","_layoutRenderers$find","match","_adornmentRegistratio","isOneOf","adornmentType","adornment","_arrayRenderers$","_labelRenderers$find","labelType","renderType","matchesRenderer","l","_x$collection","_field$collection","_x$options","noMatch","matchCollection","isSchemaAllowed","schemaType","isRendererAllowed","_groupRegistrations$f","group","_actionRenderers$find","_displayRegistrations","display","RenderForm","_effect","_useComponentTracking","_options$schemaInterf","_definition$adornment","_definition$adornment2","_options$adjustLayout","form","_ref$options","_useState","useState","_options$formState","formState","createFormState","setFormState","effects","runAsync","cb","getControlState","useEffect","cleanup","visible","showing","inheritableOptions","childOptions","labelAndChildren","child","overrideClasses","_excluded2","dContext","allChildOptions","returnResult","evalExpression","layoutProps","layoutStyle","renderedControl","adjustLayout","rendered","toRun","useControlRendererComponent","controlOrFormNode","_ref5","legacyFormNode","_r$current","ControlRenderer","_ref6","_effect2","parentPath","schemaDataNode","createSchemaDataNode","Render","NewControlRenderer","_ref7","_effect3","useControlRenderer","useCallback","_ref8"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/util.ts","../src/controlBuilder.ts","../src/controlRender.tsx","../src/renderers.tsx","../src/createFormRenderer.tsx","../src/RenderForm.tsx"],"sourcesContent":["import {\n CompoundField,\n ControlDataVisitor,\n ControlDefinition,\n ControlDefinitionType,\n createSchemaTree,\n DataControlDefinition,\n DataRenderType,\n DisplayOnlyRenderOptions,\n EntityExpression,\n FieldOption,\n fieldPathForDefinition,\n findField,\n FormContextData,\n getGroupRendererOptions,\n getTagParam,\n GroupRenderOptions,\n isAutoCompleteClasses,\n isCheckEntryClasses,\n isCompoundField,\n isCompoundNode,\n isDataControl,\n isDataGroupRenderer,\n isDisplayOnlyRenderer,\n isGridRenderer,\n isGroupControl,\n isScalarField,\n relativePath,\n SchemaDataNode,\n SchemaField,\n schemaForFieldPath,\n SchemaNode,\n SchemaTags,\n} from \"@astroapps/forms-core\";\nimport { MutableRefObject, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport {\n Control,\n ControlChange,\n createScopedEffect,\n ensureMetaValue,\n getElementIndex,\n newControl,\n useControl,\n} from \"@react-typed-forms/core\";\nimport {\n ActionRendererProps,\n ControlActionHandler,\n RunExpression,\n} from \"./types\";\nimport { Expression } from \"jsonata\";\n\n/**\n * Interface representing the classes for a control.\n */\nexport interface ControlClasses {\n styleClass?: string;\n layoutClass?: string;\n labelClass?: string;\n textClass?: string;\n labelTextClass?: string;\n}\n\n/**\n * Applies default values to the given record based on the provided schema fields.\n * @param v - The record to apply default values to.\n * @param fields - The schema fields to use for applying default values.\n * @param doneSet - A set to keep track of processed records.\n * @returns The record with default values applied.\n */\nexport function applyDefaultValues(\n v: Record<string, any> | undefined,\n fields: SchemaField[],\n doneSet?: Set<Record<string, any>>,\n): any {\n if (!v) return defaultValueForFields(fields);\n if (doneSet && doneSet.has(v)) return v;\n doneSet ??= new Set();\n doneSet.add(v);\n const applyValue = fields.filter(\n (x) => isCompoundField(x) || !(x.field in v),\n );\n if (!applyValue.length) return v;\n const out = { ...v };\n applyValue.forEach((x) => {\n out[x.field] =\n x.field in v\n ? applyDefaultForField(v[x.field], x, fields, false, doneSet)\n : defaultValueForField(x);\n });\n return out;\n}\n\n/**\n * Applies default values to a specific field based on the provided schema field.\n * @param v - The value to apply default values to.\n * @param field - The schema field to use for applying default values.\n * @param parent - The parent schema fields.\n * @param notElement - Flag indicating if the field is not an element.\n * @param doneSet - A set to keep track of processed records.\n * @returns The value with default values applied.\n */\nexport function applyDefaultForField(\n v: any,\n field: SchemaField,\n parent: SchemaField[],\n notElement?: boolean,\n doneSet?: Set<Record<string, any>>,\n): any {\n if (field.collection && !notElement) {\n return ((v as any[]) ?? []).map((x) =>\n applyDefaultForField(x, field, parent, true, doneSet),\n );\n }\n if (isCompoundField(field)) {\n if (!v && !field.required) return v;\n return applyDefaultValues(\n v,\n field.treeChildren ? parent : field.children,\n doneSet,\n );\n }\n return defaultValueForField(field);\n}\n\n/**\n * Returns the default values for the provided schema fields.\n * @param fields - The schema fields to get default values for.\n * @returns The default values for the schema fields.\n */\nexport function defaultValueForFields(fields: SchemaField[]): any {\n return Object.fromEntries(\n fields.map((x) => [x.field, defaultValueForField(x)]),\n );\n}\n\n/**\n * Returns the default value for a specific schema field.\n * @param sf - The schema field to get the default value for.\n * @param required - Flag indicating if the field is required.\n * @returns The default value for the schema field.\n */\nexport function defaultValueForField(\n sf: SchemaField,\n required?: boolean | null,\n): any {\n if (sf.defaultValue !== undefined) return sf.defaultValue;\n const isRequired = !!(required || sf.required);\n if (isCompoundField(sf)) {\n if (isRequired) {\n const childValue = defaultValueForFields(sf.children ?? []);\n return sf.collection ? [childValue] : childValue;\n }\n return sf.notNullable ? (sf.collection ? [] : {}) : undefined;\n }\n if (sf.collection && sf.notNullable) {\n return [];\n }\n return undefined;\n}\n\n/**\n * Returns the element value for a specific schema field.\n * @param sf - The schema field to get the element value for.\n * @returns The element value for the schema field.\n */\nexport function elementValueForField(sf: SchemaField): any {\n if (isCompoundField(sf)) {\n return defaultValueForFields(sf.children ?? []);\n }\n return sf.defaultValue;\n}\n\n/**\n * Finds a scalar field in the provided schema fields.\n * @param fields - The schema fields to search in.\n * @param field - The field name to search for.\n * @returns The found scalar field, or undefined if not found.\n */\nexport function findScalarField(\n fields: SchemaField[],\n field: string,\n): SchemaField | undefined {\n return findField(fields, field);\n}\n\n/**\n * Finds a compound field in the provided schema fields.\n * @param fields - The schema fields to search in.\n * @param field - The field name to search for.\n * @returns The found compound field, or undefined if not found.\n */\nexport function findCompoundField(\n fields: SchemaField[],\n field: string,\n): CompoundField | undefined {\n return findField(fields, field) as CompoundField | undefined;\n}\n\n/**\n * Checks if a field has a specific tag.\n * @param field - The field to check.\n * @param tag - The tag to check for.\n * @returns True if the field has the tag, false otherwise.\n */\nexport function fieldHasTag(field: SchemaField, tag: string) {\n return Boolean(field.tags?.includes(tag));\n}\n\n/**\n * Returns the display name for a specific field.\n * @param field - The field to get the display name for.\n * @returns The display name for the field.\n */\nexport function fieldDisplayName(field: SchemaField) {\n return field.displayName ?? field.field;\n}\n\n/**\n * Checks if an object has options.\n * @param o - The object to check.\n * @returns True if the object has options, false otherwise.\n */\nexport function hasOptions(o: { options: FieldOption[] | undefined | null }) {\n return (o.options?.length ?? 0) > 0;\n}\n\n/**\n * Returns the default control definition for a specific schema field.\n * @param sf - The schema field to get the default control definition for.\n * @param noChildren - Flag indicating if children should not be included.\n * @returns The default control definition for the schema field.\n */\nexport function defaultControlForField(\n sf: SchemaField,\n noChildren?: boolean,\n): DataControlDefinition {\n if (isCompoundField(sf)) {\n const ref = getTagParam(sf, SchemaTags.ControlRef);\n return {\n type: ControlDefinitionType.Data,\n title: sf.displayName,\n field: sf.field,\n required: sf.required,\n childRefId: ref,\n children:\n !noChildren && !ref\n ? sf.children\n .filter((x) => !fieldHasTag(x, SchemaTags.NoControl))\n .map((x) => defaultControlForField(x))\n : undefined,\n };\n } else if (isScalarField(sf)) {\n const htmlEditor = fieldHasTag(sf, SchemaTags.HtmlEditor);\n return {\n type: ControlDefinitionType.Data,\n title: sf.displayName,\n field: sf.field,\n required: sf.required,\n renderOptions: {\n type: htmlEditor ? DataRenderType.HtmlEditor : DataRenderType.Standard,\n },\n };\n }\n throw \"Unknown schema field\";\n}\n\n/**\n * Finds a referenced control in the provided control definition.\n * @param field - The field name to search for.\n * @param control - The control definition to search in.\n * @returns The found control definition, or undefined if not found.\n */\nfunction findReferencedControl(\n field: string,\n control: ControlDefinition,\n): ControlDefinition | undefined {\n if (isDataControl(control) && field === control.field) return control;\n if (isGroupControl(control)) {\n if (control.compoundField)\n return field === control.compoundField ? control : undefined;\n return findReferencedControlInArray(field, control.children ?? []);\n }\n return undefined;\n}\n\n/**\n * Finds a referenced control in an array of control definitions.\n * @param field - The field name to search for.\n * @param controls - The array of control definitions to search in.\n * @returns The found control definition, or undefined if not found.\n */\nfunction findReferencedControlInArray(\n field: string,\n controls: ControlDefinition[],\n): ControlDefinition | undefined {\n for (const c of controls) {\n const ref = findReferencedControl(field, c);\n if (ref) return ref;\n }\n return undefined;\n}\n\nexport function findControlsForCompound(\n compound: SchemaNode,\n definition: ControlDefinition,\n): ControlDefinition[] {\n if (isDataControl(definition) && compound.field.field === definition.field) {\n return [definition];\n }\n if (isGroupControl(definition)) {\n if (definition.compoundField === compound.field.field) return [definition];\n return (\n definition.children?.flatMap((d) =>\n findControlsForCompound(compound, d),\n ) ?? []\n );\n }\n return [];\n}\n\n/**\n * Finds non-data groups in the provided control definitions.\n * @param controls - The control definitions to search in.\n * @returns An array of found non-data groups.\n */\nexport function findNonDataGroups(\n controls: ControlDefinition[],\n): ControlDefinition[] {\n return controls.flatMap((control) =>\n isGroupControl(control) && !control.compoundField\n ? [control, ...findNonDataGroups(control.children ?? [])]\n : [],\n );\n}\n\n/**\n * Adds missing controls to the provided control definitions based on the schema fields.\n * @param fields - The schema fields to use for adding missing controls.\n * @param controls - The control definitions to add missing controls to.\n * @param warning - An optional function to call with warning messages.\n * @returns The control definitions with missing controls added.\n */\nexport function addMissingControls(\n fields: SchemaField[],\n controls: ControlDefinition[],\n warning?: (msg: string) => void,\n) {\n return addMissingControlsForSchema(\n createSchemaTree(fields).rootNode,\n controls,\n warning,\n );\n}\n\ninterface ControlAndSchema {\n control: ControlDefinition;\n children: ControlAndSchema[];\n schema?: SchemaNode;\n parent?: ControlAndSchema;\n}\n\n/**\n * Adds missing controls to the provided control definitions based on the schema fields.\n * @param schema - The root schema node to use for adding missing controls.\n * @param controls - The control definitions to add missing controls to.\n * @param warning - An optional function to call with warning messages.\n * @returns The control definitions with missing controls added.\n */\nexport function addMissingControlsForSchema(\n schema: SchemaNode,\n controls: ControlDefinition[],\n warning?: (msg: string) => void,\n): ControlDefinition[] {\n const controlMap: { [k: string]: ControlAndSchema } = {};\n const schemaControlMap: { [k: string]: ControlAndSchema[] } = {};\n const rootControls = controls.map((c) => toControlAndSchema(c, schema));\n const rootSchema = { schema, children: rootControls } as ControlAndSchema;\n addSchemaMapEntry(\"\", rootSchema);\n rootControls.forEach(addReferences);\n const fields = schema.getChildNodes();\n fields.forEach(addMissing);\n return rootControls.map(toDefinition);\n\n function toDefinition(c: ControlAndSchema): ControlDefinition {\n const children = c.children.length ? c.children.map(toDefinition) : null;\n return { ...c.control, children };\n }\n\n function addMissing(schemaNode: SchemaNode) {\n if (fieldHasTag(schemaNode.field, SchemaTags.NoControl)) return;\n let skipChildren = false;\n const existingControls = schemaControlMap[schemaNode.id];\n if (!existingControls) {\n const eligibleParents = getEligibleParents(schemaNode);\n const desiredGroup = getTagParam(\n schemaNode.field,\n SchemaTags.ControlGroup,\n );\n let parentGroup = desiredGroup ? controlMap[desiredGroup] : undefined;\n if (!parentGroup && desiredGroup)\n warning?.(\"No group '\" + desiredGroup + \"' for \" + schemaNode.id);\n if (parentGroup && eligibleParents.indexOf(parentGroup.schema!.id) < 0) {\n warning?.(\n `Target group '${desiredGroup}' is not an eligible parent for '${schemaNode.id}'`,\n );\n parentGroup = undefined;\n }\n if (!parentGroup && eligibleParents.length) {\n parentGroup = schemaControlMap[eligibleParents[0]]?.[0];\n }\n if (parentGroup) {\n const newControl = defaultControlForField(schemaNode.field, true);\n skipChildren = !!newControl.childRefId;\n newControl.field = relativePath(parentGroup.schema!, schemaNode);\n parentGroup.children.push(\n toControlAndSchema(newControl, parentGroup.schema!, parentGroup),\n );\n } else warning?.(\"Could not find a parent group for: \" + schemaNode.id);\n } else {\n skipChildren = existingControls.some((x) => x.control.childRefId);\n }\n if (!skipChildren) schemaNode.getChildNodes().forEach(addMissing);\n }\n\n function getEligibleParents(schemaNode: SchemaNode) {\n const eligibleParents: string[] = [];\n let parent = schemaNode.parent;\n while (parent) {\n eligibleParents.push(parent.id);\n if (parent.field.collection) break;\n if (!parent.parent) parent.getChildNodes().forEach(addCompound);\n parent = parent.parent;\n }\n return eligibleParents;\n\n function addCompound(node: SchemaNode) {\n if (isCompoundNode(node) && !node.field.collection) {\n eligibleParents.push(node.id);\n node.getChildNodes().forEach(addCompound);\n }\n }\n }\n\n function addReferences(c: ControlAndSchema) {\n c.children.forEach(addReferences);\n if (c.control.childRefId) {\n const ref = controlMap[c.control.childRefId];\n if (ref) {\n ref.children.forEach((x) =>\n toControlAndSchema(x.control, c.schema!, c, true),\n );\n return;\n }\n console.warn(\"Missing reference\", c.control.childRefId);\n }\n }\n\n function addSchemaMapEntry(schemaId: string, entry: ControlAndSchema) {\n if (!schemaControlMap[schemaId]) schemaControlMap[schemaId] = [];\n schemaControlMap[schemaId].push(entry);\n }\n function toControlAndSchema(\n c: ControlDefinition,\n parentSchema: SchemaNode,\n parentNode?: ControlAndSchema,\n dontRegister?: boolean,\n ): ControlAndSchema {\n const controlPath = fieldPathForDefinition(c);\n let dataSchema = controlPath\n ? schemaForFieldPath(controlPath, parentSchema)\n : undefined;\n if (isGroupControl(c) && dataSchema == null) dataSchema = parentSchema;\n const entry: ControlAndSchema = {\n schema: dataSchema,\n control: c,\n children: [],\n parent: parentNode,\n };\n entry.children =\n c.children?.map((x) =>\n toControlAndSchema(x, dataSchema ?? parentSchema, entry, dontRegister),\n ) ?? [];\n if (!dontRegister && c.id) controlMap[c.id] = entry;\n if (dataSchema) {\n addSchemaMapEntry(dataSchema.id, entry);\n }\n return entry;\n }\n}\n\n/**\n * Custom hook to use an updated reference.\n * @param a - The value to create a reference for.\n * @returns A mutable reference object.\n */\nexport function useUpdatedRef<A>(a: A): MutableRefObject<A> {\n const r = useRef(a);\n r.current = a;\n return r;\n}\n\n/**\n * Cleans data for a schema based on the provided schema fields.\n * @param v - The data to clean.\n * @param schemaNode\n * @param removeIfDefault - Flag indicating if default values should be removed.\n * @returns The cleaned data.\n */\nexport function cleanDataForSchema(\n v: { [k: string]: any } | undefined,\n schemaNode: SchemaNode,\n removeIfDefault?: boolean,\n): any {\n if (!v) return v;\n const fields = schemaNode.getResolvedFields();\n const typeField = fields.find((x) => x.isTypeField)?.field;\n const typeValue = typeField ? v[typeField] : undefined;\n const cleanableFields = !removeIfDefault\n ? fields.filter(\n (x) => isCompoundField(x) || (x.onlyForTypes?.length ?? 0) > 0,\n )\n : fields;\n if (!cleanableFields.length) return v;\n const out = { ...v };\n cleanableFields.forEach((x) => {\n const childValue = v[x.field];\n if (\n x.onlyForTypes?.includes(typeValue) === false ||\n (!x.notNullable && canBeNull())\n ) {\n delete out[x.field];\n return;\n }\n if (isCompoundField(x)) {\n const childNode = schemaNode.createChildNode(x);\n if (x.collection) {\n if (Array.isArray(childValue)) {\n out[x.field] = childValue.map((cv) =>\n cleanDataForSchema(cv, childNode, removeIfDefault),\n );\n }\n } else {\n out[x.field] = cleanDataForSchema(\n childValue,\n childNode,\n removeIfDefault,\n );\n }\n }\n function canBeNull() {\n return (\n (removeIfDefault && x.defaultValue === childValue) ||\n (x.collection && Array.isArray(childValue) && !childValue.length)\n //|| (x.type === FieldType.Bool && childValue === false)\n );\n }\n });\n return out;\n}\n\n/**\n * Returns all referenced classes for a control definition.\n * @param c - The control definition to get the referenced classes for.\n * @param collectExtra - Optional function to collect extra classes.\n * @returns An array of referenced classes.\n */\nexport function getAllReferencedClasses(\n c: ControlDefinition,\n collectExtra?: (c: ControlDefinition) => (string | undefined | null)[],\n): string[] {\n const childClasses = c.children?.flatMap((x) =>\n getAllReferencedClasses(x, collectExtra),\n );\n const go = getGroupClassOverrides(c);\n\n const { entryWrapperClass, selectedClass, notSelectedClass } =\n isDataControl(c) && isCheckEntryClasses(c.renderOptions)\n ? c.renderOptions\n : {};\n const groupOptions = isGroupControl(c) ? c.groupOptions : undefined;\n const gridClasses =\n groupOptions && isGridRenderer(groupOptions) ? [groupOptions.rowClass] : [];\n\n const {\n listContainerClass,\n listEntryClass,\n chipContainerClass,\n chipCloseButtonClass,\n } =\n isDataControl(c) && isAutoCompleteClasses(c.renderOptions)\n ? c.renderOptions\n : {};\n\n const tc = clsx(\n [\n c.styleClass,\n c.layoutClass,\n c.labelClass,\n c.textClass,\n c.labelTextClass,\n ...gridClasses,\n ...Object.values(go),\n ...(collectExtra?.(c) ?? []),\n entryWrapperClass,\n selectedClass,\n notSelectedClass,\n listContainerClass,\n listEntryClass,\n chipContainerClass,\n chipCloseButtonClass,\n ].map(getOverrideClass),\n );\n if (childClasses && !tc) return childClasses;\n if (!tc) return [];\n if (childClasses) return [tc, ...childClasses];\n return [tc];\n}\n\n/**\n * Finds a child control definition within a parent control definition.\n * @param parent - The parent control definition.\n * @param childPath - The path to the child control definition, either as a single index or an array of indices.\n * @returns The found child control definition.\n */\nexport function findChildDefinition(\n parent: ControlDefinition,\n childPath: number | number[],\n): ControlDefinition {\n if (Array.isArray(childPath)) {\n let base = parent;\n childPath.forEach((x) => (base = base.children![x]));\n return base;\n }\n return parent.children![childPath];\n}\n\n/**\n * Returns the override class name if the class name starts with \"@ \".\n * Otherwise, returns the original class name.\n * @param className - The class name to check and potentially modify.\n * @returns The override class name or the original class name.\n */\nexport function getOverrideClass(className?: string | null) {\n if (className && className.startsWith(\"@ \")) {\n return className.substring(2);\n }\n return className;\n}\n\n/**\n * Returns the appropriate class name for a renderer.\n * If the global class name starts with \"@ \", it overrides the control class name.\n * Otherwise, it combines the control class name and the global class name.\n *\n * @param controlClass - The class name for the control.\n * @param globalClass - The global class name.\n * @returns The appropriate class name for the renderer.\n */\nexport function rendererClass(\n controlClass?: string | null,\n globalClass?: string | null,\n) {\n const gc = getOverrideClass(globalClass);\n if (gc !== globalClass) return globalClass ? globalClass : undefined;\n const oc = getOverrideClass(controlClass);\n if (oc === controlClass) return clsx(controlClass, globalClass);\n return oc ? oc : undefined;\n}\n\n/**\n * Applies length restrictions to a value.\n * @template Min - The type of the minimum value.\n * @template Max - The type of the maximum value.\n * @param {number} length - The length to check.\n * @param {number | null | undefined} min - The minimum length.\n * @param {number | null | undefined} max - The maximum length.\n * @param {Min} minValue - The value to return if the length is greater than the minimum.\n * @param {Max} maxValue - The value to return if the length is less than the maximum.\n * @returns {[Min | undefined, Max | undefined]} - An array containing the minimum and maximum values if the length restrictions are met.\n */\nexport function applyLengthRestrictions<Min, Max>(\n length: number,\n min: number | null | undefined,\n max: number | null | undefined,\n minValue: Min,\n maxValue: Max,\n): [Min | undefined, Max | undefined] {\n return [\n min == null || length > min ? minValue : undefined,\n max == null || length < max ? maxValue : undefined,\n ];\n}\n\n/**\n * Finds the path to a field in the schema fields.\n * @param {SchemaField[]} fields - The schema fields to search in.\n * @param {string | undefined} fieldPath - The path to the field.\n * @returns {SchemaField[] | undefined} - An array of schema fields representing the path, or undefined if not found.\n */\nexport function findFieldPath(\n fields: SchemaField[],\n fieldPath: string | undefined,\n): SchemaField[] | undefined {\n if (!fieldPath) return undefined;\n const fieldNames = fieldPath.split(\"/\");\n const foundFields: SchemaField[] = [];\n let i = 0;\n let currentFields: SchemaField[] | undefined = fields;\n while (i < fieldNames.length && currentFields) {\n const cf = fieldNames[i];\n const nextField = findField(currentFields, cf);\n if (!nextField) return undefined;\n foundFields.push(nextField);\n currentFields =\n isCompoundField(nextField) && !nextField.collection\n ? nextField.children\n : undefined;\n i++;\n }\n return foundFields.length === fieldNames.length ? foundFields : undefined;\n}\n\n/**\n * Merges two objects.\n * @template A - The type of the objects to merge.\n * @param {A} o1 - The first object.\n * @param {A} o2 - The second object.\n * @param {(k: keyof NonNullable<A>, v1: unknown, v2: unknown) => unknown} [doMerge] - Optional function to merge values.\n * @returns {A} - The merged object.\n */\nexport function mergeObjects<A extends Record<string, any> | undefined>(\n o1: A,\n o2: A,\n doMerge: (k: keyof NonNullable<A>, v1: unknown, v2: unknown) => unknown = (\n _,\n v1,\n v2,\n ) => v1 ?? v2,\n): A {\n if (!o1) return o2;\n if (!o2) return o1;\n const result = { ...o1 };\n for (const key in o2) {\n if (o2.hasOwnProperty(key)) {\n const value1 = o1[key];\n const value2 = o2[key];\n result[key] = doMerge(key, value1, value2) as any;\n }\n }\n return result;\n}\n\nexport function deepMerge<A>(value: A, fallback: A): A {\n if (value == null) return fallback;\n if (typeof value !== \"object\") return value;\n // concat arrays\n if (Array.isArray(value)) {\n return (value as any[]).concat(fallback as any) as A;\n }\n return mergeObjects(value as A, fallback as any, (_, v1, fv) =>\n deepMerge(v1, fv),\n ) as A;\n}\n\n/**\n * Coerces a value to a string.\n * @param {unknown} v - The value to coerce.\n * @returns {string} - The coerced string.\n */\nexport function coerceToString(v: unknown) {\n return v == null\n ? \"\"\n : typeof v === \"object\"\n ? \"error: \" + JSON.stringify(v)\n : v.toString();\n}\n\n/**\n * Returns the group class overrides for a control definition.\n * @param {ControlDefinition} def - The control definition to get the group class overrides for.\n * @returns {ControlClasses} - The group class overrides.\n */\nexport function getGroupClassOverrides(def: ControlDefinition): ControlClasses {\n let go = getGroupRendererOptions(def);\n\n if (!go) return {};\n const { childLayoutClass, childStyleClass, childLabelClass } = go;\n const out: ControlClasses = {};\n if (childLayoutClass) out.layoutClass = childLayoutClass;\n if (childStyleClass) out.styleClass = childStyleClass;\n if (childLabelClass) out.labelClass = childLabelClass;\n return out;\n}\n\n/**\n * Combines multiple action handlers into a single handler.\n * @param {...(ControlActionHandler | undefined)[]} handlers - The action handlers to combine.\n * @returns {ControlActionHandler} - The combined action handler.\n */\nexport function actionHandlers(\n ...handlers: (ControlActionHandler | undefined)[]\n): ControlActionHandler | undefined {\n const nonNullHandlers = handlers.filter((x) => x != null);\n if (nonNullHandlers.length === 0) return undefined;\n return (actionId, actionData, ctx) => {\n for (let i = 0; i < nonNullHandlers.length; i++) {\n const res = nonNullHandlers[i](actionId, actionData, ctx);\n if (res) return res;\n }\n return undefined;\n };\n}\n\nexport function getDiffObject(dataNode: SchemaDataNode, force?: boolean): any {\n const c = dataNode.control;\n const sf = dataNode.schema.field;\n if (!c.dirty && !force) return undefined;\n if (c.isNull) return null;\n if (sf.collection && dataNode.elementIndex == null) {\n const idField = getTagParam(sf, SchemaTags.IdField);\n return c.as<any[]>().elements.map((x, i) => {\n const change = getDiffObject(\n dataNode.getChildElement(i),\n idField !== undefined,\n );\n return idField != null\n ? change\n : { old: getElementIndex(x)?.initialIndex, edit: change };\n });\n } else if (isCompoundField(sf)) {\n const children = dataNode.schema.getChildNodes();\n const idField = getTagParam(sf, SchemaTags.IdField);\n return Object.fromEntries(\n children.flatMap((c) => {\n const diff = getDiffObject(\n dataNode.getChild(c),\n idField === c.field.field,\n );\n return diff !== undefined ? [[c.field.field, diff]] : [];\n }),\n );\n }\n return c.value;\n}\n\nexport function getNullToggler(c: Control<any>): Control<boolean> {\n return ensureMetaValue(c, \"$nullToggler\", () => {\n const lastDefined = getLastDefinedValue(c);\n const isEditing = getIsEditing(c);\n const currentNotNull = c.current.value != null;\n c.disabled = !currentNotNull;\n const notNull = newControl(currentNotNull);\n if (!currentNotNull) c.value = null;\n disableIfNotEditing();\n isEditing.subscribe(disableIfNotEditing, ControlChange.Value);\n notNull.subscribe(() => {\n const currentNotNull = notNull.current.value;\n c.value = currentNotNull ? lastDefined.current.value : null;\n c.disabled = !currentNotNull;\n }, ControlChange.Value);\n c.subscribe(() => {\n notNull.value = c.current.value != null;\n }, ControlChange.Value);\n return notNull;\n function disableIfNotEditing() {\n notNull.disabled = isEditing.current.value === false;\n }\n });\n}\n\nexport interface ExternalEditAction {\n action: ActionRendererProps;\n dontValidate?: boolean;\n}\nexport interface ExternalEditData {\n data: unknown;\n actions: ExternalEditAction[];\n}\n\nexport function getExternalEditData(\n c: Control<any>,\n): Control<ExternalEditData | undefined> {\n return ensureMetaValue(c, \"$externalEditIndex\", () => newControl(undefined));\n}\n\nexport function getLastDefinedValue<V>(control: Control<V>): Control<V> {\n return ensureMetaValue(control, \"$lastDefined\", () => {\n const lastDefined = newControl(control.current.value);\n control.subscribe(() => {\n const nv = control.current.value;\n if (nv != null) lastDefined.value = nv;\n }, ControlChange.Value);\n return lastDefined;\n });\n}\n\nexport function getIsEditing(\n control: Control<any>,\n): Control<boolean | undefined> {\n const lastDefined = getLastDefinedValue(control);\n return ensureMetaValue(control, \"$willEdit\", () => {\n const c = newControl(undefined);\n c.subscribe(() => {\n const currentEdit = c.current.value;\n if (currentEdit !== undefined) {\n control.value = currentEdit\n ? lastDefined.current.value\n : control.initialValue;\n }\n }, ControlChange.Value);\n return c;\n });\n}\n\nexport function getAllValues(control: Control<any>): Control<unknown[]> {\n return ensureMetaValue(control, \"$allValues\", () =>\n newControl([control.value]),\n );\n}\n\nexport function clearMultiValues(dataNode: SchemaDataNode): void {\n const c = dataNode.control;\n const sf = dataNode.schema.field;\n if (sf.collection) {\n return;\n } else if (isCompoundField(sf)) {\n dataNode.schema.getChildNodes().forEach((c) => {\n clearMultiValues(dataNode.getChild(c));\n });\n } else {\n const allValues = getAllValues(c);\n allValues.setValue((x) => [c.current.value]);\n }\n}\n\nexport function applyValues(dataNode: SchemaDataNode, value: unknown): void {\n const c = dataNode.control;\n const sf = dataNode.schema.field;\n if (c.isEqual(c.initialValue, value)) return;\n if (sf.collection) {\n return;\n } else if (isCompoundField(sf)) {\n if (value == null) return;\n dataNode.schema.getChildNodes().forEach((c) => {\n applyValues(\n dataNode.getChild(c),\n (value as Record<string, unknown>)[c.field.field],\n );\n });\n } else {\n const allValues = getAllValues(c);\n allValues.setValue((changes) =>\n changes.every((x) => !c.isEqual(x, value))\n ? [...changes, value]\n : changes,\n );\n }\n}\n\nexport function collectDifferences(\n dataNode: SchemaDataNode,\n values: unknown[],\n): () => { editable: number; editing: number } {\n values.forEach((v, i) => {\n if (i == 0) {\n dataNode.control.setInitialValue(v);\n clearMultiValues(dataNode);\n } else applyValues(dataNode, v);\n });\n const allEdits: Control<boolean | undefined>[] = [];\n resetMultiValues(dataNode);\n return () => {\n let editable = 0;\n let editing = 0;\n allEdits.forEach((x) => {\n const b = x.value;\n if (b === undefined) return;\n editable++;\n if (b) editing++;\n });\n return { editing, editable };\n };\n\n function resetMultiValues(dataNode: SchemaDataNode): void {\n const c = dataNode.control;\n const sf = dataNode.schema.field;\n if (sf.collection) {\n return;\n } else if (isCompoundField(sf)) {\n if (c.value == null) return;\n dataNode.schema.getChildNodes().forEach((c) => {\n resetMultiValues(dataNode.getChild(c));\n });\n } else {\n allEdits.push(getIsEditing(c));\n const allValues = getAllValues(c);\n if (allValues.value.length > 1) {\n c.setInitialValue(undefined);\n getLastDefinedValue(c).value = null;\n }\n }\n }\n}\n\nexport function validationVisitor(\n onInvalid: (data: Control<unknown>) => void,\n): ControlDataVisitor<any> {\n return (s) => {\n if (isCompoundNode(s.schema)) return undefined;\n const v = s.control;\n v.touched = true;\n if (!v.validate()) {\n onInvalid(v);\n }\n return undefined;\n };\n}\n\nexport function useExpression<T>(\n defaultValue: T,\n runExpression: RunExpression,\n expression: EntityExpression | null | undefined,\n coerce: (x: any) => T,\n bindings?: Record<string, any>,\n): Control<T> {\n const value = useControl<T>(defaultValue);\n createScopedEffect((scope) => {\n if (expression?.type)\n runExpression(\n scope,\n expression,\n (x) => (value.value = coerce(x)),\n bindings,\n );\n else value.value = defaultValue;\n }, value);\n return value;\n}\n","import {\n AccordionAdornment,\n ActionControlDefinition,\n AutocompleteRenderOptions,\n CheckListRenderOptions,\n ControlAdornmentType,\n ControlDefinition,\n ControlDefinitionType,\n DataControlDefinition,\n DataExpression,\n DataMatchExpression,\n DataRenderType,\n DateValidator,\n DisplayControlDefinition,\n DisplayDataType,\n DisplayOnlyRenderOptions,\n DynamicProperty,\n DynamicPropertyType,\n EntityExpression,\n ExpressionType,\n GroupedControlsDefinition,\n GroupRenderType,\n HtmlDisplay,\n JsonataExpression,\n JsonataRenderOptions,\n JsonataValidator,\n LengthValidator,\n mergeOption,\n RadioButtonRenderOptions,\n RenderOptions,\n SchemaField,\n SchemaMap,\n SchemaNode,\n TextDisplay,\n TextfieldRenderOptions,\n ValidatorType,\n} from \"@astroapps/forms-core\";\nimport { useMemo } from \"react\";\nimport { addMissingControls } from \"./util\";\nimport { mergeFields, resolveSchemas } from \"@astroapps/forms-core\";\nimport { ActionRendererProps } from \"./types\";\n\nexport function dataControl(\n field: string,\n title?: string | null,\n options?: Partial<DataControlDefinition>,\n): DataControlDefinition {\n return { type: ControlDefinitionType.Data, field, title, ...options };\n}\n\nexport function validatorOptions<A extends { type: string }>(\n type: ValidatorType,\n): (options: Omit<A, \"type\">) => A {\n return (o) => ({ type, ...o }) as A;\n}\n\nexport function adornmentOptions<A extends { type: string }>(\n type: ControlAdornmentType,\n): (options: Omit<A, \"type\">) => A {\n return (o) => ({ type, ...o }) as A;\n}\n\nexport function renderOptionsFor<A extends RenderOptions>(\n type: DataRenderType,\n): (options: Omit<A, \"type\">) => { renderOptions: A } {\n return (o) => ({ renderOptions: { type, ...o } as A });\n}\n\nexport const autocompleteOptions = renderOptionsFor<AutocompleteRenderOptions>(\n DataRenderType.Autocomplete,\n);\n\nexport const checkListOptions = renderOptionsFor<CheckListRenderOptions>(\n DataRenderType.CheckList,\n);\n\nexport const radioButtonOptions = renderOptionsFor<RadioButtonRenderOptions>(\n DataRenderType.Radio,\n);\n\nexport const lengthValidatorOptions = validatorOptions<LengthValidator>(\n ValidatorType.Length,\n);\n\nexport const jsonataValidatorOptions = validatorOptions<JsonataValidator>(\n ValidatorType.Jsonata,\n);\n\nexport const dateValidatorOptions = validatorOptions<DateValidator>(\n ValidatorType.Date,\n);\n\nexport const accordionOptions = adornmentOptions<AccordionAdornment>(\n ControlAdornmentType.Accordion,\n);\n\nexport const textfieldOptions = renderOptionsFor<TextfieldRenderOptions>(\n DataRenderType.Textfield,\n);\n\nexport const displayOnlyOptions = renderOptionsFor<DisplayOnlyRenderOptions>(\n DataRenderType.DisplayOnly,\n);\n\nexport const jsonataOptions = renderOptionsFor<JsonataRenderOptions>(\n DataRenderType.Jsonata,\n);\n\nexport function textDisplayControl(\n text: string,\n options?: Partial<DisplayControlDefinition>,\n): DisplayControlDefinition {\n return {\n type: ControlDefinitionType.Display,\n displayData: { type: DisplayDataType.Text, text } as TextDisplay,\n ...options,\n };\n}\n\nexport function htmlDisplayControl(\n html: string,\n options?: Partial<DisplayControlDefinition>,\n): DisplayControlDefinition {\n return {\n type: ControlDefinitionType.Display,\n displayData: { type: DisplayDataType.Html, html } as HtmlDisplay,\n ...options,\n };\n}\n\nexport function dynamicDefaultValue(expr: EntityExpression): DynamicProperty {\n return { type: DynamicPropertyType.DefaultValue, expr };\n}\n\nexport function dynamicReadonly(expr: EntityExpression): DynamicProperty {\n return { type: DynamicPropertyType.Readonly, expr };\n}\n\nexport function dynamicVisibility(expr: EntityExpression): DynamicProperty {\n return { type: DynamicPropertyType.Visible, expr };\n}\n\nexport function dynamicDisabled(expr: EntityExpression): DynamicProperty {\n return { type: DynamicPropertyType.Disabled, expr };\n}\n\nexport function fieldExpr(field: string): DataExpression {\n return { type: ExpressionType.Data, field };\n}\n\nexport function fieldEqExpr(field: string, value: any): DataMatchExpression {\n return { type: ExpressionType.DataMatch, field, value };\n}\nexport function jsonataExpr(expression: string): JsonataExpression {\n return { type: ExpressionType.Jsonata, expression };\n}\n\nexport function groupedControl(\n children: ControlDefinition[],\n title?: string,\n options?: Partial<GroupedControlsDefinition>,\n): GroupedControlsDefinition {\n return {\n type: ControlDefinitionType.Group,\n children,\n title,\n groupOptions: { type: \"Standard\", hideTitle: !title },\n ...options,\n };\n}\nexport function compoundControl(\n field: string,\n title: string | undefined,\n children: ControlDefinition[],\n options?: Partial<DataControlDefinition>,\n): DataControlDefinition {\n return {\n type: ControlDefinitionType.Data,\n field,\n children,\n title,\n renderOptions: { type: \"Standard\" },\n ...options,\n };\n}\n\nexport function actionControl(\n actionText: string,\n actionId: string,\n options?: Partial<ActionControlDefinition>,\n): ActionControlDefinition {\n return {\n type: ControlDefinitionType.Action,\n title: actionText,\n actionId,\n ...options,\n };\n}\nexport function createAction(\n actionId: string,\n onClick: () => void,\n actionText?: string | null,\n options?: Partial<ActionRendererProps>,\n): ActionRendererProps {\n return {\n actionId,\n onClick,\n actionText: actionText ?? actionId,\n ...options,\n };\n}\n\nexport const emptyGroupDefinition: GroupedControlsDefinition = {\n type: ControlDefinitionType.Group,\n children: [],\n groupOptions: { type: GroupRenderType.Standard, hideTitle: true },\n};\n\nexport function useControlDefinitionForSchema(\n sf: SchemaField[],\n definition: GroupedControlsDefinition = emptyGroupDefinition,\n): GroupedControlsDefinition {\n return useMemo<GroupedControlsDefinition>(\n () => ({\n ...definition,\n children: addMissingControls(sf, definition.children ?? []),\n }),\n [sf, definition],\n );\n}\n\nexport interface EditorGroup {\n parent: string;\n group: ControlDefinition;\n}\n\nexport interface CustomRenderOptions {\n value: string;\n name: string;\n fields?: SchemaField[];\n groups?: EditorGroup[];\n applies?: (sf: SchemaNode) => boolean;\n optionField?: string;\n}\n\nexport type ControlDefinitionExtension = {\n RenderOptions?: CustomRenderOptions | CustomRenderOptions[];\n GroupRenderOptions?: CustomRenderOptions | CustomRenderOptions[];\n ControlAdornment?: CustomRenderOptions | CustomRenderOptions[];\n SchemaValidator?: CustomRenderOptions | CustomRenderOptions[];\n DisplayData?: CustomRenderOptions | CustomRenderOptions[];\n IconReference?: CustomRenderOptions | CustomRenderOptions[];\n};\n\nexport function applyExtensionToSchema<A extends SchemaMap>(\n schemaMap: A,\n extension: ControlDefinitionExtension,\n): A {\n const outMap = { ...schemaMap };\n Object.entries(extension).forEach(([field, cro]) => {\n outMap[field as keyof A] = (Array.isArray(cro) ? cro : [cro]).reduce(\n (a, cr) =>\n cr.optionField\n ? mergeOption(a, cr.name, cr.value, cr.optionField)\n : mergeFields(a, cr.name, cr.value, cr.fields ?? []),\n outMap[field],\n ) as A[string];\n });\n return outMap;\n}\n\nexport function applyExtensionsToSchema<A extends SchemaMap>(\n schemaMap: A,\n extensions: ControlDefinitionExtension[],\n) {\n return resolveSchemas(extensions.reduce(applyExtensionToSchema, schemaMap));\n}\n\nexport function createIconLibraryExtension(\n name: string,\n value: string,\n): ControlDefinitionExtension {\n return {\n IconReference: {\n optionField: \"library\",\n name,\n value,\n },\n };\n}\n","import React, {\n ComponentType,\n ElementType,\n Fragment,\n HTMLAttributes,\n Key,\n ReactElement,\n ReactNode,\n} from \"react\";\nimport {\n addElement,\n Control,\n removeElement,\n RenderArrayElements,\n} from \"@react-typed-forms/core\";\nimport {\n ActionStyle,\n AdornmentPlacement,\n ArrayActionOptions,\n ControlAdornment,\n ControlDefinition,\n ControlDefinitionType,\n ControlState,\n CustomDisplay,\n DataControlDefinition,\n defaultSchemaInterface,\n DisplayData,\n DisplayDataType,\n FieldOption,\n FormContextOptions,\n FormNode,\n FormState,\n GroupRenderOptions,\n GroupRenderType,\n isActionControl,\n isDataControl,\n isDisplayControl,\n isGroupControl,\n JsonPath,\n LengthValidator,\n lookupDataNode,\n RenderOptions,\n SchemaDataNode,\n SchemaField,\n SchemaInterface,\n ValidatorType,\n} from \"@astroapps/forms-core\";\nimport {\n applyLengthRestrictions,\n ControlClasses,\n elementValueForField,\n ExternalEditAction,\n fieldDisplayName,\n getExternalEditData,\n rendererClass,\n} from \"./util\";\nimport { createAction, dataControl } from \"./controlBuilder\";\nimport {\n ActionRendererProps,\n ControlActionHandler,\n ControlDataContext,\n RunExpression,\n} from \"./types\";\n\nexport interface HtmlIconProperties {\n className?: string;\n style?: React.CSSProperties;\n iconLibrary?: string;\n iconName?: string;\n}\n\nexport interface HtmlLabelProperties {\n htmlFor?: string;\n className?: string;\n textClass?: string;\n children?: ReactNode;\n}\n\nexport interface HtmlDivProperties {\n id?: string;\n className?: string;\n textClass?: string;\n style?: React.CSSProperties;\n children?: ReactNode;\n text?: string;\n html?: string;\n nativeRef?: (e: HTMLElement | null) => void;\n inline?: boolean;\n}\n\nexport interface HtmlInputProperties {\n id?: string;\n className?: string;\n textClass?: string;\n name?: string;\n type?: string;\n checked?: boolean;\n style?: React.CSSProperties;\n readOnly?: boolean;\n placeholder?: string;\n value?: string | number;\n onBlur?: () => void;\n disabled?: boolean;\n inputRef?: (e: HTMLElement | null) => void;\n onChangeValue?: (value: string) => void;\n onChangeChecked?: (checked: boolean) => void;\n}\n\nexport interface HtmlButtonProperties {\n className?: string;\n textClass?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n onClick?: () => void;\n inline?: boolean;\n children?: ReactNode;\n title?: string;\n notWrapInText?: boolean;\n androidRippleColor?: string;\n nonTextContent?: boolean;\n}\nexport interface HtmlComponents {\n Div: ComponentType<HtmlDivProperties>;\n Span: ElementType<HTMLAttributes<HTMLSpanElement>>;\n Button: ComponentType<HtmlButtonProperties>;\n I: ComponentType<HtmlIconProperties>;\n Label: ComponentType<HtmlLabelProperties>;\n B: ElementType<HTMLAttributes<HTMLElement>>;\n H1: ElementType<HTMLAttributes<HTMLElement>>;\n Input: ComponentType<HtmlInputProperties>;\n}\n/**\n * Interface for rendering different types of form controls.\n */\nexport interface FormRenderer {\n /**\n * Renders data control.\n * @param props - Properties for data renderer.\n * @returns A function that takes layout properties and returns layout properties.\n */\n renderData: (\n props: DataRendererProps,\n ) => (layout: ControlLayoutProps) => ControlLayoutProps;\n\n /**\n * Renders group control.\n * @param props - Properties for group renderer.\n * @returns A function that takes layout properties and returns layout properties.\n */\n renderGroup: (\n props: GroupRendererProps,\n ) => (layout: ControlLayoutProps) => ControlLayoutProps;\n\n /**\n * Renders display control.\n * @param props - Properties for display renderer.\n * @returns A React node.\n */\n renderDisplay: (props: DisplayRendererProps) => ReactNode;\n\n /**\n * Renders action control.\n * @param props - Properties for action renderer.\n * @returns A React node.\n */\n renderAction: (props: ActionRendererProps) => ReactNode;\n\n /**\n * Renders array control.\n * @param props - Properties for array renderer.\n * @returns A React node.\n */\n renderArray: (props: ArrayRendererProps) => ReactNode;\n\n /**\n * Renders adornment.\n * @param props - Properties for adornment renderer.\n * @returns An adornment renderer.\n */\n renderAdornment: (props: AdornmentProps) => AdornmentRenderer;\n\n /**\n * Renders label.\n * @param props - Properties for label renderer.\n * @param labelStart - React node to render at the start of the label.\n * @param labelEnd - React node to render at the end of the label.\n * @returns A React node.\n */\n renderLabel: (\n props: LabelRendererProps,\n labelStart?: ReactNode,\n labelEnd?: ReactNode,\n ) => ReactNode;\n\n /**\n * Renders layout.\n * @param props - Properties for control layout.\n * @returns A rendered control.\n */\n renderLayout: (props: ControlLayoutProps) => RenderedControl;\n\n /**\n * Renders visibility control.\n * @param props - Properties for visibility renderer.\n * @returns A React node.\n */\n renderVisibility: (props: VisibilityRendererProps) => ReactNode;\n\n /**\n * Renders label text.\n * @param props - React node for label text.\n * @returns A React node.\n */\n renderLabelText: (props: ReactNode) => ReactNode;\n\n html: HtmlComponents;\n}\n\nexport interface AdornmentProps {\n adornment: ControlAdornment;\n dataContext: ControlDataContext;\n runExpression?: RunExpression;\n designMode?: boolean;\n formOptions: FormContextOptions;\n}\n\nexport const AppendAdornmentPriority = 0;\nexport const WrapAdornmentPriority = 1000;\n\nexport interface AdornmentRenderer {\n apply(children: RenderedLayout): void;\n adornment?: ControlAdornment;\n priority: number;\n}\n\nexport interface ArrayRendererProps {\n addAction?: ActionRendererProps;\n required: boolean;\n removeAction?: (elemIndex: number) => ActionRendererProps;\n editAction?: (elemIndex: number) => ActionRendererProps;\n renderElement: (\n elemIndex: number,\n wrapEntry: (children: ReactNode) => ReactNode,\n ) => ReactNode;\n arrayControl: Control<any[] | undefined | null>;\n className?: string;\n style?: React.CSSProperties;\n min?: number | null;\n max?: number | null;\n disabled?: boolean;\n}\nexport interface Visibility {\n visible: boolean;\n showing: boolean;\n}\n\nexport interface RenderedLayout {\n labelStart?: ReactNode;\n labelEnd?: ReactNode;\n controlStart?: ReactNode;\n controlEnd?: ReactNode;\n label?: ReactNode;\n children?: ReactNode;\n errorControl?: Control<any>;\n className?: string;\n style?: React.CSSProperties;\n wrapLayout: (layout: ReactElement) => ReactElement;\n inline?: boolean;\n}\n\nexport interface RenderedControl {\n children: ReactNode;\n className?: string;\n style?: React.CSSProperties;\n divRef?: (cb: HTMLElement | null) => void;\n inline?: boolean;\n}\n\nexport interface VisibilityRendererProps extends RenderedControl {\n visibility: Control<Visibility | undefined>;\n}\n\nexport interface ControlLayoutProps {\n label?: LabelRendererProps;\n errorControl?: Control<any>;\n adornments?: AdornmentRenderer[];\n children?: ReactNode;\n processLayout?: (props: ControlLayoutProps) => ControlLayoutProps;\n className?: string | null;\n style?: React.CSSProperties;\n inline?: boolean;\n}\n\n/**\n * Enum representing the types of labels that can be rendered.\n */\nexport enum LabelType {\n /**\n * Label for a control.\n */\n Control,\n\n /**\n * Label for a group.\n */\n Group,\n\n /**\n * Label for text.\n */\n Text,\n}\n\n/**\n * Properties for label renderers.\n */\nexport interface LabelRendererProps {\n /**\n * The type of the label.\n */\n type: LabelType;\n\n /**\n * Whether to hide the label.\n */\n hide?: boolean | null;\n\n /**\n * The content of the label.\n */\n label: ReactNode;\n\n /**\n * Whether to show the label as being required.\n * E.g. show an asterisk next to the label.\n */\n required?: boolean | null;\n\n /**\n * The ID of the element the label is for.\n */\n forId?: string;\n\n /**\n * The CSS class name for the label.\n */\n className?: string;\n\n /**\n * The CSS class name for the label text.\n */\n textClass?: string;\n}\n\n/**\n * Properties for display renderers.\n */\nexport interface DisplayRendererProps {\n /**\n * The data to be displayed.\n */\n data: DisplayData;\n\n /**\n * A control with dynamic value for display.\n */\n display?: Control<string | undefined>;\n\n /**\n * The context for the control data.\n */\n dataContext: ControlDataContext;\n\n /**\n * The CSS class name for the display renderer.\n */\n className?: string;\n\n textClass?: string;\n\n /**\n * The CSS styles for the display renderer.\n */\n style?: React.CSSProperties;\n inline?: boolean;\n}\n\nexport interface ParentRendererProps {\n formNode: FormNode;\n state: ControlState;\n renderChild: ChildRenderer;\n className?: string;\n textClass?: string;\n style?: React.CSSProperties;\n dataContext: ControlDataContext;\n getChildState(node: FormNode, parent?: SchemaDataNode): ControlState;\n runExpression: RunExpression;\n designMode?: boolean;\n actionOnClick?: ControlActionHandler;\n}\n\nexport interface GroupRendererProps extends ParentRendererProps {\n definition: ControlDefinition;\n renderOptions: GroupRenderOptions;\n}\n\nexport interface DataRendererProps extends ParentRendererProps {\n renderOptions: RenderOptions;\n definition: DataControlDefinition;\n field: SchemaField;\n id: string;\n control: Control<any>;\n readonly: boolean;\n required: boolean;\n options: FieldOption[] | undefined | null;\n hidden: boolean;\n dataNode: SchemaDataNode;\n displayOnly: boolean;\n inline: boolean;\n}\n\nexport interface ControlRenderProps {\n control: Control<any>;\n parentPath?: JsonPath[];\n}\n\nexport type CreateDataProps = (\n controlProps: RenderLayoutProps,\n definition: DataControlDefinition,\n control: Control<any>,\n) => DataRendererProps;\n\nexport interface ControlRenderOptions extends ControlClasses {\n formState?: FormState;\n useDataHook?: (c: ControlDefinition) => CreateDataProps;\n actionOnClick?: ControlActionHandler;\n customDisplay?: (\n customId: string,\n displayProps: DisplayRendererProps,\n ) => ReactNode;\n adjustLayout?: (\n context: ControlDataContext,\n layout: ControlLayoutProps,\n ) => ControlLayoutProps;\n readonly?: boolean | null;\n hidden?: boolean | null;\n disabled?: boolean | null;\n displayOnly?: boolean;\n inline?: boolean;\n clearHidden?: boolean;\n stateKey?: string;\n schemaInterface?: SchemaInterface;\n variables?: Record<string, any>;\n}\n\nexport function defaultDataProps(\n {\n formOptions,\n style,\n allowedOptions,\n schemaInterface = defaultSchemaInterface,\n styleClass,\n textClass: tc,\n displayOnly,\n inline,\n ...props\n }: RenderLayoutProps,\n definition: DataControlDefinition,\n control: Control<any>,\n): DataRendererProps {\n const dataNode = props.dataContext.dataNode!;\n const field = dataNode.schema.field;\n const className = rendererClass(styleClass, definition.styleClass);\n const textClass = rendererClass(tc, definition.textClass);\n const required = !!definition.required && !displayOnly;\n const fieldOptions = schemaInterface.getDataOptions(dataNode);\n const _allowed = allowedOptions ?? [];\n const allowed = Array.isArray(_allowed) ? _allowed : [_allowed];\n return {\n dataNode,\n definition,\n control,\n field,\n id: \"c\" + control.uniqueId,\n inline: !!inline,\n options:\n allowed.length > 0\n ? allowed\n .map((x) =>\n typeof x === \"object\"\n ? x\n : fieldOptions?.find((y) => y.value == x) ?? {\n name: x.toString(),\n value: x,\n },\n )\n .filter((x) => x != null)\n : fieldOptions,\n readonly: !!formOptions.readonly,\n displayOnly: !!displayOnly,\n renderOptions: definition.renderOptions ?? { type: \"Standard\" },\n required,\n hidden: !!formOptions.hidden,\n className,\n textClass,\n style,\n ...props,\n };\n}\n\nexport interface ChildRendererOptions {\n parentDataNode?: SchemaDataNode;\n inline?: boolean;\n displayOnly?: boolean;\n styleClass?: string;\n layoutClass?: string;\n labelClass?: string;\n labelTextClass?: string;\n actionOnClick?: ControlActionHandler;\n stateKey?: string;\n variables?: Record<string, any>;\n}\n\nexport type ChildRenderer = (\n k: Key,\n child: FormNode,\n options?: ChildRendererOptions,\n) => ReactNode;\n\nexport interface RenderLayoutProps {\n formNode: FormNode;\n renderer: FormRenderer;\n state: ControlState;\n renderChild: ChildRenderer;\n createDataProps: CreateDataProps;\n formOptions: FormContextOptions;\n dataContext: ControlDataContext;\n control?: Control<any>;\n style?: React.CSSProperties;\n allowedOptions?: any[];\n getChildState(node: FormNode, parent?: SchemaDataNode): ControlState;\n runExpression: RunExpression;\n\n actionOnClick?: ControlActionHandler;\n schemaInterface?: SchemaInterface;\n designMode?: boolean;\n customDisplay?: (\n customId: string,\n displayProps: DisplayRendererProps,\n ) => ReactNode;\n labelClass?: string;\n labelTextClass?: string;\n styleClass?: string;\n textClass?: string;\n inline?: boolean;\n displayOnly?: boolean;\n}\nexport function renderControlLayout(\n props: RenderLayoutProps,\n): ControlLayoutProps {\n const {\n renderer,\n renderChild,\n control,\n dataContext,\n createDataProps: dataProps,\n style,\n designMode,\n customDisplay,\n runExpression,\n labelClass,\n labelTextClass,\n styleClass,\n textClass,\n formNode,\n formOptions,\n actionOnClick,\n state,\n getChildState,\n inline,\n displayOnly,\n } = props;\n const c = state.definition;\n if (isDataControl(c)) {\n return renderData(c);\n }\n if (isGroupControl(c)) {\n if (c.compoundField) {\n return renderData(\n dataControl(c.compoundField, c.title, {\n children: c.children,\n hideTitle: c.groupOptions?.hideTitle,\n }),\n );\n }\n\n return {\n inline,\n processLayout: renderer.renderGroup({\n formNode,\n state,\n definition: c,\n renderChild,\n runExpression,\n dataContext,\n renderOptions: c.groupOptions ?? { type: \"Standard\" },\n className: rendererClass(styleClass, c.styleClass),\n textClass: rendererClass(textClass, c.textClass),\n style,\n designMode,\n actionOnClick,\n getChildState,\n }),\n label: {\n label: c.title,\n className: rendererClass(labelClass, c.labelClass),\n textClass: rendererClass(labelTextClass, c.labelTextClass),\n type: LabelType.Group,\n hide: c.groupOptions?.hideTitle,\n },\n };\n }\n if (isActionControl(c)) {\n const actionData = c.actionData;\n const actionStyle = c.actionStyle ?? ActionStyle.Button;\n const actionContent =\n actionStyle == ActionStyle.Group ? renderActionGroup() : undefined;\n return {\n inline,\n children: renderer.renderAction({\n actionText: c.title ?? c.actionId,\n actionId: c.actionId,\n actionData,\n actionContent,\n actionStyle,\n textClass: rendererClass(textClass, c.textClass),\n iconPlacement: c.iconPlacement,\n icon: c.icon,\n inline,\n disabled: state.disabled,\n onClick:\n props.actionOnClick?.(c.actionId, actionData, dataContext) ??\n (() => {}),\n className: rendererClass(styleClass, c.styleClass),\n style,\n }),\n };\n\n function renderActionGroup() {\n const childDefs = formNode.getResolvedChildren();\n const childDef = {\n type: ControlDefinitionType.Group,\n groupOptions: { type: GroupRenderType.Contents, hideTitle: true },\n children: childDefs,\n };\n const childNode: FormNode = formNode.createChildNode(\"child\", childDef);\n return renderChild(\"child\", childNode, {});\n }\n }\n if (isDisplayControl(c)) {\n const data = c.displayData ?? {};\n const displayProps = {\n data,\n className: rendererClass(styleClass, c.styleClass),\n textClass: rendererClass(textClass, c.textClass),\n style,\n dataContext,\n inline,\n };\n if (data.type === DisplayDataType.Custom && customDisplay) {\n return {\n inline,\n children: customDisplay((data as CustomDisplay).customId, displayProps),\n };\n }\n return {\n inline,\n children: renderer.renderDisplay(displayProps),\n };\n }\n return {};\n\n function renderData(c: DataControlDefinition): ControlLayoutProps {\n if (!control) return { children: \"No control for: \" + c.field };\n const rendererProps = dataProps(props, c, control);\n const label = !c.hideTitle\n ? controlTitle(c.title, props.dataContext.dataNode!.schema.field)\n : undefined;\n return {\n inline,\n processLayout: renderer.renderData(rendererProps),\n label: {\n type:\n (c.children?.length ?? 0) > 0 ? LabelType.Group : LabelType.Control,\n label,\n forId: rendererProps.id,\n required: c.required && !displayOnly,\n hide: c.hideTitle,\n className: rendererClass(labelClass, c.labelClass),\n textClass: rendererClass(labelTextClass, c.labelTextClass),\n },\n errorControl: control,\n };\n }\n}\n\ntype MarkupKeys = keyof Omit<\n RenderedLayout,\n | \"errorControl\"\n | \"style\"\n | \"className\"\n | \"wrapLayout\"\n | \"readonly\"\n | \"disabled\"\n | \"inline\"\n>;\nexport function appendMarkup(\n k: MarkupKeys,\n markup: ReactNode,\n): (layout: RenderedLayout) => void {\n return (layout) =>\n (layout[k] = (\n <>\n {layout[k]}\n {markup}\n </>\n ));\n}\n\nexport function wrapMarkup(\n k: MarkupKeys,\n wrap: (ex: ReactNode) => ReactNode,\n): (layout: RenderedLayout) => void {\n return (layout) => (layout[k] = wrap(layout[k]));\n}\n\nexport function layoutKeyForPlacement(pos: AdornmentPlacement): MarkupKeys {\n switch (pos) {\n case AdornmentPlacement.ControlEnd:\n return \"controlEnd\";\n case AdornmentPlacement.ControlStart:\n return \"controlStart\";\n case AdornmentPlacement.LabelStart:\n return \"labelStart\";\n case AdornmentPlacement.LabelEnd:\n return \"labelEnd\";\n }\n}\n\nexport function wrapLayout(\n wrap: (layout: ReactElement) => ReactElement,\n): (renderedLayout: RenderedLayout) => void {\n return (rl) => {\n const orig = rl.wrapLayout;\n rl.wrapLayout = (x) => wrap(orig(x));\n };\n}\n\nexport function appendMarkupAt(\n pos: AdornmentPlacement,\n markup: ReactNode,\n): (layout: RenderedLayout) => void {\n return appendMarkup(layoutKeyForPlacement(pos), markup);\n}\n\nexport function wrapMarkupAt(\n pos: AdornmentPlacement,\n wrap: (ex: ReactNode) => ReactNode,\n): (layout: RenderedLayout) => void {\n return wrapMarkup(layoutKeyForPlacement(pos), wrap);\n}\n\nexport function renderLayoutParts(\n props: ControlLayoutProps,\n renderer: FormRenderer,\n): RenderedLayout {\n const {\n className,\n children,\n style,\n errorControl,\n label,\n adornments,\n inline,\n } = props.processLayout?.(props) ?? props;\n const layout: RenderedLayout = {\n children,\n errorControl,\n style,\n className: className!,\n inline,\n wrapLayout: (x) => x,\n };\n (adornments ?? [])\n .sort((a, b) => a.priority - b.priority)\n .forEach((x) => x.apply(layout));\n layout.label =\n label && !label.hide\n ? renderer.renderLabel(label, layout.labelStart, layout.labelEnd)\n : undefined;\n return layout;\n}\n\nexport function controlTitle(\n title: string | undefined | null,\n field: SchemaField,\n) {\n return title ? title : fieldDisplayName(field);\n}\n\nexport function getLengthRestrictions(definition: DataControlDefinition) {\n const lengthVal = definition.validators?.find(\n (x) => x.type === ValidatorType.Length,\n ) as LengthValidator | undefined;\n\n return { min: lengthVal?.min, max: lengthVal?.max };\n}\n\nexport function createArrayActions(\n control: Control<any[]>,\n field: SchemaField,\n options?: ArrayActionOptions,\n): Pick<\n ArrayRendererProps,\n \"addAction\" | \"removeAction\" | \"editAction\" | \"arrayControl\"\n> {\n const noun = field.displayName ?? field.field;\n const {\n addText,\n noAdd,\n removeText,\n noRemove,\n removeActionId,\n addActionId,\n editActionId,\n editText,\n disabled,\n readonly,\n designMode,\n editExternal,\n } = options ?? {};\n return {\n arrayControl: control,\n addAction:\n !readonly && !noAdd\n ? makeAdd(() => {\n if (!designMode) {\n const newValue = elementValueForField(field);\n\n if (editExternal) {\n const editData = getExternalEditData(control);\n editData.value = {\n data: [elementValueForField(field)],\n actions: [\n makeCancel(),\n {\n action: makeAdd(() => {\n const newValue = (\n editData.fields.data.value as any[]\n )[0];\n addElement(control, newValue);\n editData.value = undefined;\n }),\n },\n ],\n };\n } else {\n addElement(control, newValue);\n }\n }\n })\n : undefined,\n editAction: editExternal\n ? (i: number) => ({\n actionId: editActionId ? editActionId : \"edit\",\n actionText: editText ? editText : \"Edit\",\n onClick: () => {\n if (!designMode) {\n const editData = getExternalEditData(control);\n const elementToEdit = control.as<any[]>().elements[i];\n editData.value = {\n data: [elementToEdit.current.value],\n actions: [\n makeCancel(),\n {\n action: createAction(\n \"apply\",\n () => {\n elementToEdit.value = (\n editData.fields.data.value as any[]\n )[0];\n editData.value = undefined;\n },\n \"Apply\",\n ),\n },\n ],\n };\n }\n },\n })\n : undefined,\n removeAction:\n !readonly && !noRemove\n ? (i: number) => ({\n actionId: removeActionId ? removeActionId : \"remove\",\n actionText: removeText ? removeText : \"Remove\",\n onClick: () => {\n if (!designMode) {\n removeElement(control, i);\n }\n },\n disabled,\n })\n : undefined,\n };\n\n function makeAdd(onClick: () => void): ActionRendererProps {\n return createAction(\n addActionId ? addActionId : \"add\",\n onClick,\n addText ? addText : \"Add \" + noun,\n { disabled },\n );\n }\n\n function makeCancel(): ExternalEditAction {\n return {\n dontValidate: true,\n action: {\n actionId: \"cancel\",\n actionText: \"Cancel\",\n onClick: () => {\n getExternalEditData(control).value = undefined;\n },\n disabled,\n },\n };\n }\n}\n\nexport function applyArrayLengthRestrictions(\n {\n arrayControl,\n min,\n max,\n editAction,\n addAction: aa,\n removeAction: ra,\n required,\n }: Pick<\n ArrayRendererProps,\n | \"addAction\"\n | \"removeAction\"\n | \"editAction\"\n | \"arrayControl\"\n | \"min\"\n | \"max\"\n | \"required\"\n >,\n disable?: boolean,\n): Pick<ArrayRendererProps, \"addAction\" | \"removeAction\" | \"editAction\"> & {\n addDisabled: boolean;\n removeDisabled: boolean;\n} {\n const [removeAllowed, addAllowed] = applyLengthRestrictions(\n arrayControl.elements?.length ?? 0,\n min == null && required ? 1 : min,\n max,\n true,\n true,\n );\n return {\n addAction: disable || addAllowed ? aa : undefined,\n removeAction: disable || removeAllowed ? ra : undefined,\n removeDisabled: !removeAllowed,\n addDisabled: !addAllowed,\n editAction,\n };\n}\n\nexport function fieldOptionAdornment(p: DataRendererProps) {\n return (o: FieldOption, fieldIndex: number, selected: boolean) => (\n <RenderArrayElements\n array={p.formNode.getChildNodes()}\n children={(cd, i) =>\n p.renderChild(i, cd, {\n parentDataNode: p.dataContext.parentNode,\n stateKey: fieldIndex.toString(),\n variables: { formData: { option: o, optionSelected: selected } },\n })\n }\n />\n );\n}\n\nexport function lookupChildDataContext(\n dataContext: ControlDataContext,\n c: ControlDefinition,\n): ControlDataContext {\n const parentNode = dataContext.dataNode ?? dataContext.parentNode;\n const dataNode = lookupDataNode(c, parentNode);\n return { ...dataContext, parentNode, dataNode };\n}\n","import { ReactElement, ReactNode } from \"react\";\nimport {\n AdornmentProps,\n AdornmentRenderer,\n ArrayRendererProps,\n ControlLayoutProps,\n DataRendererProps,\n DisplayRendererProps,\n FormRenderer,\n GroupRendererProps,\n HtmlComponents,\n LabelRendererProps,\n LabelType,\n RenderedControl,\n VisibilityRendererProps,\n} from \"./controlRender\";\nimport {\n AccordionAdornment,\n ControlAdornment,\n ControlAdornmentType,\n IconAdornment,\n OptionalAdornment,\n RenderOptions,\n SetFieldAdornment,\n} from \"@astroapps/forms-core\";\nimport { ActionRendererProps } from \"./types\";\n\nexport interface DefaultRenderers {\n data: DataRendererRegistration;\n label: LabelRendererRegistration;\n action: ActionRendererRegistration;\n array: ArrayRendererRegistration;\n group: GroupRendererRegistration;\n display: DisplayRendererRegistration;\n adornment: AdornmentRendererRegistration;\n renderLayout: LayoutRendererRegistration;\n visibility: VisibilityRendererRegistration;\n extraRenderers: RendererRegistration[];\n html: HtmlComponents;\n}\n\nexport interface LayoutRendererRegistration {\n type: \"layout\";\n match?: (props: ControlLayoutProps) => boolean;\n render: (\n props: ControlLayoutProps,\n renderers: FormRenderer,\n ) => RenderedControl;\n}\nexport interface DataRendererRegistration {\n type: \"data\";\n schemaType?: string | string[];\n renderType?: string | string[];\n options?: boolean;\n collection?: boolean;\n match?: (props: DataRendererProps, renderOptions: RenderOptions) => boolean;\n render: (\n props: DataRendererProps,\n renderers: FormRenderer,\n ) => ReactNode | ((layout: ControlLayoutProps) => ControlLayoutProps);\n}\n\nexport interface LabelRendererRegistration {\n type: \"label\";\n labelType?: LabelType | LabelType[];\n render: (\n labelProps: LabelRendererProps,\n labelStart: ReactNode,\n labelEnd: ReactNode,\n renderers: FormRenderer,\n ) => ReactNode;\n}\n\nexport interface ActionRendererRegistration {\n type: \"action\";\n actionType?: string | string[];\n render: (props: ActionRendererProps, renderers: FormRenderer) => ReactElement;\n}\n\nexport interface ArrayRendererRegistration {\n type: \"array\";\n render: (props: ArrayRendererProps, renderers: FormRenderer) => ReactElement;\n}\n\nexport interface GroupRendererRegistration {\n type: \"group\";\n renderType?: string | string[];\n render: (\n props: GroupRendererProps,\n renderers: FormRenderer,\n ) => ReactElement | ((layout: ControlLayoutProps) => ControlLayoutProps);\n}\n\nexport interface DisplayRendererRegistration {\n type: \"display\";\n renderType?: string | string[];\n render: (\n props: DisplayRendererProps,\n renderers: FormRenderer,\n ) => ReactElement;\n}\n\nexport interface AdornmentRendererRegistration {\n type: \"adornment\";\n adornmentType?: string | string[];\n render: (props: AdornmentProps, renderers: FormRenderer) => AdornmentRenderer;\n}\n\nexport interface VisibilityRendererRegistration {\n type: \"visibility\";\n render: (props: VisibilityRendererProps, renderer: FormRenderer) => ReactNode;\n}\n\nexport type RendererRegistration =\n | DataRendererRegistration\n | GroupRendererRegistration\n | DisplayRendererRegistration\n | ActionRendererRegistration\n | LabelRendererRegistration\n | ArrayRendererRegistration\n | AdornmentRendererRegistration\n | LayoutRendererRegistration\n | VisibilityRendererRegistration;\n\nexport function isIconAdornment(a: ControlAdornment): a is IconAdornment {\n return a.type === ControlAdornmentType.Icon;\n}\n\nexport function isAccordionAdornment(\n a: ControlAdornment,\n): a is AccordionAdornment {\n return a.type === ControlAdornmentType.Accordion;\n}\n\nexport function isSetFieldAdornment(\n a: ControlAdornment,\n): a is SetFieldAdornment {\n return a.type === ControlAdornmentType.SetField;\n}\n\nexport function isOptionalAdornment(\n a: ControlAdornment,\n): a is OptionalAdornment {\n return a.type === ControlAdornmentType.Optional;\n}\n\nexport function createLayoutRenderer(\n render: LayoutRendererRegistration[\"render\"],\n options?: Partial<LayoutRendererRegistration>,\n): LayoutRendererRegistration {\n return { type: \"layout\", render, ...options };\n}\n\nexport function createActionRenderer(\n actionId: string | string[] | undefined,\n render: ActionRendererRegistration[\"render\"],\n options?: Partial<ActionRendererRegistration>,\n): ActionRendererRegistration {\n return { type: \"action\", actionType: actionId, render, ...options };\n}\n\nexport function createArrayRenderer(\n render: ArrayRendererRegistration[\"render\"],\n options?: Partial<ArrayRendererRegistration>,\n): ArrayRendererRegistration {\n return { type: \"array\", render, ...options };\n}\n\nexport function createDataRenderer(\n render: DataRendererRegistration[\"render\"],\n options?: Partial<DataRendererRegistration>,\n): DataRendererRegistration {\n return { type: \"data\", render, ...options };\n}\n\nexport function createGroupRenderer(\n render: GroupRendererRegistration[\"render\"],\n options?: Partial<GroupRendererRegistration>,\n): GroupRendererRegistration {\n return { type: \"group\", render, ...options };\n}\n\nexport function createDisplayRenderer(\n render: DisplayRendererRegistration[\"render\"],\n options?: Partial<DisplayRendererRegistration>,\n): DisplayRendererRegistration {\n return { type: \"display\", render, ...options };\n}\n\nexport function createLabelRenderer(\n render: LabelRendererRegistration[\"render\"],\n options?: Partial<LabelRendererRegistration>,\n): LabelRendererRegistration {\n return { type: \"label\", render, ...options };\n}\n\nexport function createVisibilityRenderer(\n render: VisibilityRendererRegistration[\"render\"],\n options?: Partial<VisibilityRendererRegistration>,\n): VisibilityRendererRegistration {\n return { type: \"visibility\", render, ...options };\n}\n\nexport function createAdornmentRenderer(\n render: AdornmentRendererRegistration[\"render\"],\n options?: Partial<AdornmentRendererRegistration>,\n): AdornmentRendererRegistration {\n return { type: \"adornment\", ...options, render };\n}\n","import { ReactNode } from \"react\";\nimport {\n AdornmentProps,\n AdornmentRenderer,\n ArrayRendererProps,\n ControlLayoutProps,\n DataRendererProps,\n DisplayRendererProps,\n FormRenderer,\n GroupRendererProps,\n LabelRendererProps,\n LabelType,\n VisibilityRendererProps,\n} from \"./controlRender\";\nimport { hasOptions } from \"./util\";\nimport {\n ActionRendererRegistration,\n AdornmentRendererRegistration,\n ArrayRendererRegistration,\n DataRendererRegistration,\n DefaultRenderers,\n DisplayRendererRegistration,\n GroupRendererRegistration,\n LabelRendererRegistration,\n LayoutRendererRegistration,\n RendererRegistration,\n VisibilityRendererRegistration,\n} from \"./renderers\";\nimport { DataRenderType } from \"@astroapps/forms-core\";\nimport { ActionRendererProps } from \"./types\";\n\nexport function createFormRenderer(\n customRenderers: RendererRegistration[] = [],\n defaultRenderers: DefaultRenderers,\n): FormRenderer {\n const allRenderers = [\n ...customRenderers,\n ...(defaultRenderers.extraRenderers ?? []),\n ];\n const dataRegistrations = allRenderers.filter(isDataRegistration);\n const groupRegistrations = allRenderers.filter(isGroupRegistration);\n const adornmentRegistrations = allRenderers.filter(isAdornmentRegistration);\n const displayRegistrations = allRenderers.filter(isDisplayRegistration);\n const labelRenderers = allRenderers.filter(isLabelRegistration);\n const arrayRenderers = allRenderers.filter(isArrayRegistration);\n const actionRenderers = allRenderers.filter(isActionRegistration);\n const layoutRenderers = allRenderers.filter(isLayoutRegistration);\n const visibilityRenderer =\n allRenderers.find(isVisibilityRegistration) ?? defaultRenderers.visibility;\n\n const formRenderers: FormRenderer = {\n renderAction,\n renderData,\n renderGroup,\n renderDisplay,\n renderLabel,\n renderArray,\n renderAdornment,\n renderLayout,\n renderVisibility,\n renderLabelText,\n html: defaultRenderers.html,\n };\n\n function renderVisibility(props: VisibilityRendererProps) {\n return visibilityRenderer.render(props, formRenderers);\n }\n\n function renderLabelText(label: ReactNode) {\n return renderLabel({ label, type: LabelType.Text }, undefined, undefined);\n }\n\n function renderLayout(props: ControlLayoutProps) {\n const renderer =\n layoutRenderers.find((x) => !x.match || x.match(props)) ??\n defaultRenderers.renderLayout;\n return renderer.render(props, formRenderers);\n }\n\n function renderAdornment(props: AdornmentProps): AdornmentRenderer {\n const renderer =\n adornmentRegistrations.find((x) =>\n isOneOf(x.adornmentType, props.adornment.type),\n ) ?? defaultRenderers.adornment;\n return renderer.render(props, formRenderers);\n }\n\n function renderArray(props: ArrayRendererProps) {\n return (arrayRenderers[0] ?? defaultRenderers.array).render(\n props,\n formRenderers,\n );\n }\n\n function renderLabel(\n props: LabelRendererProps,\n labelStart: ReactNode,\n labelEnd: ReactNode,\n ) {\n const renderer =\n labelRenderers.find((x) => isOneOf(x.labelType, props.type)) ??\n defaultRenderers.label;\n return renderer.render(props, labelStart, labelEnd, formRenderers);\n }\n\n function renderData(\n props: DataRendererProps,\n ): (layout: ControlLayoutProps) => ControlLayoutProps {\n const { renderOptions, field } = props;\n\n const options = hasOptions(props);\n const renderType = renderOptions.type;\n const renderer = dataRegistrations.find(matchesRenderer);\n\n const result = (renderer ?? defaultRenderers.data).render(\n props,\n formRenderers,\n );\n if (typeof result === \"function\") return result;\n return (l) => ({ ...l, children: result });\n\n function matchesRenderer(x: DataRendererRegistration) {\n const noMatch = x.match ? !x.match(props, renderOptions) : undefined;\n if (noMatch === true) return false;\n const matchCollection =\n (x.collection ?? false) ===\n (props.dataNode.elementIndex == null && (field.collection ?? false));\n const isSchemaAllowed =\n !!x.schemaType && renderType == DataRenderType.Standard\n ? isOneOf(x.schemaType, field.type)\n : undefined;\n const isRendererAllowed =\n !!x.renderType && isOneOf(x.renderType, renderType);\n return (\n matchCollection &&\n (x.options ?? false) === options &&\n (isSchemaAllowed ||\n isRendererAllowed ||\n (!x.renderType && !x.schemaType && noMatch === false))\n );\n }\n }\n\n function renderGroup(\n props: GroupRendererProps,\n ): (layout: ControlLayoutProps) => ControlLayoutProps {\n const renderType = props.renderOptions.type;\n const renderer =\n groupRegistrations.find((x) => isOneOf(x.renderType, renderType)) ??\n defaultRenderers.group;\n const result = renderer.render(props, formRenderers);\n if (typeof result === \"function\") return result;\n return (l) => ({ ...l, children: result });\n }\n\n function renderAction(props: ActionRendererProps) {\n const renderer =\n actionRenderers.find((x) => isOneOf(x.actionType, props.actionId)) ??\n defaultRenderers.action;\n return renderer.render(props, formRenderers);\n }\n\n function renderDisplay(props: DisplayRendererProps) {\n const renderType = props.data.type;\n const renderer =\n displayRegistrations.find((x) => isOneOf(x.renderType, renderType)) ??\n defaultRenderers.display;\n return renderer.render(props, formRenderers);\n }\n\n return formRenderers;\n}\n\nfunction isOneOf<A>(x: A | A[] | undefined, v: A) {\n return x == null ? true : Array.isArray(x) ? x.includes(v) : v === x;\n}\n\nfunction isAdornmentRegistration(\n x: RendererRegistration,\n): x is AdornmentRendererRegistration {\n return x.type === \"adornment\";\n}\n\nfunction isDataRegistration(\n x: RendererRegistration,\n): x is DataRendererRegistration {\n return x.type === \"data\";\n}\n\nfunction isGroupRegistration(\n x: RendererRegistration,\n): x is GroupRendererRegistration {\n return x.type === \"group\";\n}\n\nfunction isLabelRegistration(\n x: RendererRegistration,\n): x is LabelRendererRegistration {\n return x.type === \"label\";\n}\n\nfunction isLayoutRegistration(\n x: RendererRegistration,\n): x is LayoutRendererRegistration {\n return x.type === \"layout\";\n}\n\nfunction isVisibilityRegistration(\n x: RendererRegistration,\n): x is VisibilityRendererRegistration {\n return x.type === \"visibility\";\n}\n\nfunction isActionRegistration(\n x: RendererRegistration,\n): x is ActionRendererRegistration {\n return x.type === \"action\";\n}\n\nfunction isDisplayRegistration(\n x: RendererRegistration,\n): x is DisplayRendererRegistration {\n return x.type === \"display\";\n}\n\nfunction isArrayRegistration(\n x: RendererRegistration,\n): x is ArrayRendererRegistration {\n return x.type === \"array\";\n}\n","import {\n ControlLayoutProps,\n ControlRenderOptions,\n ControlRenderProps,\n defaultDataProps,\n FormRenderer,\n renderControlLayout,\n Visibility,\n} from \"./controlRender\";\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n ControlDefinition,\n ControlState,\n createFormState,\n createSchemaDataNode,\n createSchemaTree,\n defaultSchemaInterface,\n FormNode,\n FormState,\n isDataControl,\n JsonPath,\n legacyFormNode,\n SchemaDataNode,\n SchemaField,\n} from \"@astroapps/forms-core\";\nimport { ControlDataContext } from \"./types\";\nimport {\n actionHandlers,\n getGroupClassOverrides,\n rendererClass,\n useUpdatedRef,\n} from \"./util\";\nimport { Control, useControl } from \"@react-typed-forms/core\";\n\nexport interface RenderFormProps {\n data: SchemaDataNode;\n form: FormNode;\n renderer: FormRenderer;\n options?: ControlRenderOptions;\n}\n\n/* @trackControls */\nexport function RenderForm({\n data,\n form,\n renderer,\n options = {},\n}: RenderFormProps) {\n const schemaInterface = options.schemaInterface ?? defaultSchemaInterface;\n const [formState, setFormState] = useState(\n () => options?.formState ?? createFormState(schemaInterface),\n );\n let effects: (() => void)[] | undefined = [];\n const runAsync = (cb: () => void) => {\n if (effects) effects.push(cb);\n else cb();\n };\n const state = formState.getControlState(data, form, options, runAsync);\n\n useEffect(() => {\n if (!options?.formState) {\n return () => formState.cleanup();\n }\n }, [formState, options?.formState]);\n\n const definition = state.definition;\n\n const visible = !state.hidden;\n\n const visibility = useControl<Visibility | undefined>(() =>\n visible != null\n ? {\n visible,\n showing: visible,\n }\n : undefined,\n );\n visibility.fields.visible.value = visible;\n\n const dataContext: ControlDataContext = {\n schemaInterface: state.schemaInterface,\n dataNode: state.dataNode,\n parentNode: data,\n variables: state.variables,\n };\n\n const adornments =\n definition.adornments?.map((x) =>\n renderer.renderAdornment({\n adornment: x,\n dataContext,\n formOptions: state,\n }),\n ) ?? [];\n\n const {\n styleClass,\n labelClass,\n layoutClass,\n labelTextClass,\n textClass,\n ...inheritableOptions\n } = options;\n const { readonly, hidden, disabled, variables } = state;\n const childOptions: ControlRenderOptions = {\n ...inheritableOptions,\n readonly,\n disabled,\n variables,\n formState,\n hidden,\n };\n\n const labelAndChildren = renderControlLayout({\n formNode: form,\n renderer,\n state,\n renderChild: (k, child, options) => {\n const overrideClasses = getGroupClassOverrides(definition);\n const { parentDataNode, actionOnClick, variables, ...renderOptions } =\n options ?? {};\n const dContext = parentDataNode ?? dataContext.dataNode ?? data;\n const allChildOptions = {\n ...childOptions,\n ...overrideClasses,\n ...renderOptions,\n variables: { ...childOptions.variables, ...variables },\n actionOnClick: actionHandlers(\n actionOnClick,\n childOptions.actionOnClick,\n ),\n };\n return (\n <RenderForm\n key={k}\n form={child}\n renderer={renderer}\n data={dContext}\n options={allChildOptions}\n />\n );\n },\n inline: options?.inline,\n displayOnly: options?.displayOnly,\n createDataProps: defaultDataProps,\n formOptions: state,\n dataContext,\n control: dataContext.dataNode?.control,\n schemaInterface,\n style: state.style,\n allowedOptions: state.allowedOptions,\n customDisplay: options.customDisplay,\n actionOnClick: options.actionOnClick,\n styleClass: styleClass,\n labelClass: labelClass,\n labelTextClass: labelTextClass,\n textClass: textClass,\n getChildState(child: FormNode, parent?: SchemaDataNode): ControlState {\n return formState.getControlState(\n parent ?? state.dataNode ?? data,\n child,\n childOptions,\n runAsync,\n );\n },\n runExpression: (scope, expr, returnResult) => {\n if (expr?.type) {\n formState.evalExpression(expr, {\n scope,\n dataNode: data,\n schemaInterface,\n returnResult,\n runAsync,\n });\n }\n },\n });\n const layoutProps: ControlLayoutProps = {\n ...labelAndChildren,\n adornments,\n className: rendererClass(options.layoutClass, definition.layoutClass),\n style: state.layoutStyle,\n };\n const renderedControl = renderer.renderLayout(\n options.adjustLayout?.(dataContext, layoutProps) ?? layoutProps,\n );\n const rendered = renderer.renderVisibility({\n visibility,\n ...renderedControl,\n });\n useEffect(() => {\n if (effects) {\n const toRun = effects;\n effects = undefined;\n toRun.forEach((cb) => cb());\n }\n }, [effects]);\n return rendered;\n}\n\n/**\n * @deprecated Use RenderForm instead.\n */\nexport function useControlRendererComponent(\n controlOrFormNode: ControlDefinition | FormNode,\n renderer: FormRenderer,\n options: ControlRenderOptions = {},\n parentDataNode: SchemaDataNode,\n): FC<{}> {\n const [definition, formNode] =\n \"definition\" in controlOrFormNode\n ? [controlOrFormNode.definition, controlOrFormNode]\n : [controlOrFormNode, legacyFormNode(controlOrFormNode)];\n\n const r = useUpdatedRef({\n options,\n renderer,\n parentDataNode,\n formNode,\n });\n\n return useMemo(\n () => () => {\n const { options, parentDataNode, formNode, renderer } = r.current;\n return (\n <RenderForm\n data={parentDataNode}\n form={formNode}\n renderer={renderer}\n options={options}\n />\n );\n },\n [r],\n );\n}\n\n/**\n * @deprecated Use RenderForm instead.\n */\nexport function ControlRenderer({\n definition,\n fields,\n renderer,\n options,\n control,\n parentPath,\n}: {\n definition: ControlDefinition;\n fields: SchemaField[];\n renderer: FormRenderer;\n options?: ControlRenderOptions;\n control: Control<any>;\n parentPath?: JsonPath[];\n}) {\n const schemaDataNode = createSchemaDataNode(\n createSchemaTree(fields).rootNode,\n control,\n );\n const Render = useControlRendererComponent(\n definition,\n renderer,\n options,\n schemaDataNode,\n );\n return <Render />;\n}\n\n/**\n * @deprecated Use RenderForm instead.\n */\nexport function NewControlRenderer({\n definition,\n renderer,\n options,\n parentDataNode,\n}: {\n definition: ControlDefinition | FormNode;\n renderer: FormRenderer;\n options?: ControlRenderOptions;\n parentDataNode: SchemaDataNode;\n}) {\n const Render = useControlRendererComponent(\n definition,\n renderer,\n options,\n parentDataNode,\n );\n return <Render />;\n}\n\n/**\n * @deprecated Use RenderForm instead.\n */\nexport function useControlRenderer(\n definition: ControlDefinition,\n fields: SchemaField[],\n renderer: FormRenderer,\n options: ControlRenderOptions = {},\n): FC<ControlRenderProps> {\n const r = useUpdatedRef({ definition, fields, renderer, options });\n return useCallback(\n ({ control, parentPath }) => {\n return (\n <ControlRenderer\n {...r.current}\n control={control}\n parentPath={parentPath}\n />\n );\n },\n [r],\n );\n}\n"],"names":["applyDefaultValues","v","fields","doneSet","_doneSet","defaultValueForFields","has","Set","add","applyValue","filter","x","isCompoundField","field","length","out","_extends","forEach","applyDefaultForField","defaultValueForField","parent","notElement","collection","map","required","treeChildren","children","Object","fromEntries","sf","defaultValue","undefined","isRequired","_sf$children","childValue","notNullable","elementValueForField","_sf$children2","findScalarField","findField","findCompoundField","fieldHasTag","tag","_field$tags","Boolean","tags","includes","fieldDisplayName","_field$displayName","displayName","hasOptions","o","_o$options$length","_o$options","options","defaultControlForField","noChildren","ref","getTagParam","SchemaTags","ControlRef","type","ControlDefinitionType","Data","title","childRefId","NoControl","isScalarField","htmlEditor","HtmlEditor","renderOptions","DataRenderType","Standard","findControlsForCompound","compound","definition","isDataControl","isGroupControl","_definition$children$","_definition$children","compoundField","flatMap","d","findNonDataGroups","controls","control","_control$children2","concat","addMissingControls","warning","addMissingControlsForSchema","createSchemaTree","rootNode","schema","controlMap","schemaControlMap","rootControls","c","toControlAndSchema","rootSchema","addSchemaMapEntry","addReferences","getChildNodes","addMissing","toDefinition","schemaNode","skipChildren","existingControls","id","eligibleParents","getEligibleParents","desiredGroup","ControlGroup","parentGroup","indexOf","_schemaControlMap$eli","newControl","relativePath","push","some","addCompound","node","isCompoundNode","console","warn","schemaId","entry","parentSchema","parentNode","dontRegister","_c$children$map","_c$children","controlPath","fieldPathForDefinition","dataSchema","schemaForFieldPath","_dataSchema","useUpdatedRef","a","r","useRef","current","cleanDataForSchema","removeIfDefault","_fields$find","getResolvedFields","typeField","find","isTypeField","typeValue","cleanableFields","_x$onlyForTypes$lengt","_x$onlyForTypes","onlyForTypes","_x$onlyForTypes2","canBeNull","childNode","createChildNode","Array","isArray","cv","getAllReferencedClasses","collectExtra","_c$children2","_collectExtra","childClasses","go","getGroupClassOverrides","_ref","isCheckEntryClasses","entryWrapperClass","selectedClass","notSelectedClass","groupOptions","gridClasses","isGridRenderer","rowClass","_ref2","isAutoCompleteClasses","listContainerClass","listEntryClass","chipContainerClass","chipCloseButtonClass","tc","clsx","styleClass","layoutClass","labelClass","textClass","labelTextClass","values","getOverrideClass","findChildDefinition","childPath","base","className","startsWith","substring","rendererClass","controlClass","globalClass","gc","oc","applyLengthRestrictions","min","max","minValue","maxValue","findFieldPath","fieldPath","fieldNames","split","foundFields","i","currentFields","cf","nextField","mergeObjects","o1","o2","doMerge","_","v1","v2","result","key","hasOwnProperty","value1","value2","deepMerge","value","fallback","fv","coerceToString","JSON","stringify","toString","def","getGroupRendererOptions","childLayoutClass","childStyleClass","childLabelClass","actionHandlers","nonNullHandlers","slice","call","arguments","actionId","actionData","ctx","res","getDiffObject","dataNode","force","dirty","isNull","elementIndex","idField","IdField","as","elements","_getElementIndex","change","getChildElement","old","getElementIndex","initialIndex","edit","diff","getChild","getNullToggler","ensureMetaValue","lastDefined","getLastDefinedValue","isEditing","getIsEditing","currentNotNull","disabled","notNull","disableIfNotEditing","subscribe","ControlChange","Value","getExternalEditData","nv","currentEdit","initialValue","getAllValues","clearMultiValues","allValues","setValue","applyValues","isEqual","changes","every","collectDifferences","setInitialValue","allEdits","resetMultiValues","editable","editing","b","validationVisitor","onInvalid","s","touched","validate","useExpression","runExpression","expression","coerce","bindings","useControl","createScopedEffect","scope","dataControl","validatorOptions","adornmentOptions","renderOptionsFor","autocompleteOptions","Autocomplete","checkListOptions","CheckList","radioButtonOptions","Radio","lengthValidatorOptions","ValidatorType","Length","jsonataValidatorOptions","Jsonata","dateValidatorOptions","Date","accordionOptions","ControlAdornmentType","Accordion","textfieldOptions","Textfield","displayOnlyOptions","DisplayOnly","jsonataOptions","textDisplayControl","text","Display","displayData","DisplayDataType","Text","htmlDisplayControl","html","Html","dynamicDefaultValue","expr","DynamicPropertyType","DefaultValue","dynamicReadonly","Readonly","dynamicVisibility","Visible","dynamicDisabled","Disabled","fieldExpr","ExpressionType","fieldEqExpr","DataMatch","jsonataExpr","groupedControl","Group","hideTitle","compoundControl","actionControl","actionText","Action","createAction","onClick","emptyGroupDefinition","GroupRenderType","useControlDefinitionForSchema","useMemo","applyExtensionToSchema","schemaMap","extension","outMap","entries","cro","reduce","cr","_cr$fields","optionField","mergeOption","name","mergeFields","applyExtensionsToSchema","extensions","resolveSchemas","createIconLibraryExtension","IconReference","AppendAdornmentPriority","WrapAdornmentPriority","LabelType","defaultDataProps","_definition$renderOpt","formOptions","style","allowedOptions","_ref$schemaInterface","schemaInterface","defaultSchemaInterface","displayOnly","inline","props","_objectWithoutPropertiesLoose","_excluded","dataContext","fieldOptions","getDataOptions","_allowed","allowed","uniqueId","_fieldOptions$find","y","readonly","hidden","renderControlLayout","renderer","renderChild","dataProps","createDataProps","designMode","customDisplay","formNode","actionOnClick","state","getChildState","renderData","_c$groupOptions2","_c$groupOptions3","_c$groupOptions","processLayout","renderGroup","label","hide","isActionControl","_c$actionStyle","_c$title","_props$actionOnClick","renderActionGroup","childDefs","getResolvedChildren","childDef","Contents","actionStyle","ActionStyle","Button","actionContent","renderAction","iconPlacement","icon","isDisplayControl","_c$displayData","data","displayProps","Custom","customId","renderDisplay","_c$children$length","rendererProps","controlTitle","Control","forId","errorControl","appendMarkup","k","markup","layout","_jsxs","_Fragment","wrapMarkup","wrap","layoutKeyForPlacement","pos","AdornmentPlacement","ControlEnd","ControlStart","LabelStart","LabelEnd","wrapLayout","rl","orig","appendMarkupAt","wrapMarkupAt","renderLayoutParts","_props$processLayout","adornments","sort","priority","apply","renderLabel","labelStart","labelEnd","getLengthRestrictions","_definition$validator","lengthVal","validators","createArrayActions","noun","_ref3","addText","noAdd","removeText","noRemove","removeActionId","addActionId","editActionId","editText","editExternal","arrayControl","addAction","makeAdd","newValue","editData","actions","makeCancel","action","addElement","editAction","elementToEdit","removeAction","removeElement","dontValidate","applyArrayLengthRestrictions","_ref4","disable","_arrayControl$element","_arrayControl$element2","aa","ra","_applyLengthRestricti","removeAllowed","addAllowed","removeDisabled","addDisabled","fieldOptionAdornment","p","fieldIndex","selected","_jsx","RenderArrayElements","array","cd","parentDataNode","stateKey","variables","formData","option","optionSelected","lookupChildDataContext","_dataContext$dataNode","lookupDataNode","isIconAdornment","Icon","isAccordionAdornment","isSetFieldAdornment","SetField","isOptionalAdornment","Optional","createLayoutRenderer","render","createActionRenderer","actionType","createArrayRenderer","createDataRenderer","createGroupRenderer","createDisplayRenderer","createLabelRenderer","createVisibilityRenderer","createAdornmentRenderer","createFormRenderer","customRenderers","defaultRenderers","_defaultRenderers$ext","_allRenderers$find","allRenderers","extraRenderers","dataRegistrations","isDataRegistration","groupRegistrations","isGroupRegistration","adornmentRegistrations","isAdornmentRegistration","displayRegistrations","isDisplayRegistration","labelRenderers","isLabelRegistration","arrayRenderers","isArrayRegistration","actionRenderers","isActionRegistration","layoutRenderers","isLayoutRegistration","visibilityRenderer","isVisibilityRegistration","visibility","formRenderers","renderArray","renderAdornment","renderLayout","renderVisibility","renderLabelText","_layoutRenderers$find","match","_adornmentRegistratio","isOneOf","adornmentType","adornment","_arrayRenderers$","_labelRenderers$find","labelType","renderType","matchesRenderer","l","_x$collection","_field$collection","_x$options","noMatch","matchCollection","isSchemaAllowed","schemaType","isRendererAllowed","_groupRegistrations$f","group","_actionRenderers$find","_displayRegistrations","display","RenderForm","_effect","_useComponentTracking","_options$schemaInterf","_definition$adornment","_definition$adornment2","_options$adjustLayout","form","_ref$options","_useState","useState","_options$formState","formState","createFormState","setFormState","effects","runAsync","cb","getControlState","useEffect","cleanup","visible","showing","inheritableOptions","childOptions","labelAndChildren","child","overrideClasses","_excluded2","dContext","allChildOptions","returnResult","evalExpression","layoutProps","layoutStyle","renderedControl","adjustLayout","rendered","toRun","useControlRendererComponent","controlOrFormNode","_ref5","legacyFormNode","_r$current","ControlRenderer","_ref6","_effect2","parentPath","schemaDataNode","createSchemaDataNode","Render","NewControlRenderer","_ref7","_effect3","useControlRenderer","useCallback","_ref8"],"mappings":"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"}