@react-typed-forms/schemas 12.0.0 → 12.0.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/hooks.d.ts +2 -2
- package/lib/index.cjs +1 -1
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/schemaInterface.d.ts +2 -1
- package/lib/treeNodes.d.ts +4 -1
- package/lib/types.d.ts +2 -1
- package/lib/util.d.ts +1 -21
- package/package.json +1 -1
package/lib/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/types.ts","../src/schemaBuilder.ts","../src/treeNodes.ts","../src/util.ts","../src/controlBuilder.ts","../src/hooks.tsx","../src/validators.ts","../src/internal.ts","../src/schemaInterface.ts","../src/controlRender.tsx","../src/renderers.tsx","../src/tailwind.tsx","../src/components/DefaultDisplay.tsx","../src/components/DefaultLayout.tsx","../src/components/DefaultVisibility.tsx","../src/components/SelectDataRenderer.tsx","../src/components/DefaultDisplayOnly.tsx","../src/components/ControlInput.tsx","../src/components/DefaultArrayRenderer.tsx","../src/components/CheckRenderer.tsx","../src/components/DefaultAccordion.tsx","../src/components/NullToggle.tsx","../src/components/MultilineTextfield.tsx","../src/components/JsonataRenderer.tsx","../src/createDefaultRenderers.tsx","../src/createFormRenderer.tsx"],"sourcesContent":["import { Control } from \"@react-typed-forms/core\";\n\nexport interface SchemaField {\n type: string;\n field: string;\n displayName?: string | null;\n tags?: string[] | null;\n system?: boolean | null;\n collection?: boolean | null;\n onlyForTypes?: string[] | null;\n required?: boolean | null;\n notNullable?: boolean | null;\n defaultValue?: any;\n isTypeField?: boolean | null;\n searchable?: boolean | null;\n options?: FieldOption[] | null;\n validators?: SchemaValidator[] | null;\n}\n\nexport type SchemaMap = Record<string, SchemaField[]>;\n\nexport enum FieldType {\n String = \"String\",\n Bool = \"Bool\",\n Int = \"Int\",\n Date = \"Date\",\n DateTime = \"DateTime\",\n Time = \"Time\",\n Double = \"Double\",\n EntityRef = \"EntityRef\",\n Compound = \"Compound\",\n AutoId = \"AutoId\",\n Image = \"Image\",\n Any = \"Any\",\n}\n\nexport interface EntityRefField extends SchemaField {\n type: FieldType.EntityRef;\n entityRefType: string;\n parentField: string;\n}\n\nexport interface FieldOption {\n name: string;\n value: any;\n description?: string | null;\n group?: string | null;\n disabled?: boolean | null;\n}\n\nexport interface CompoundField extends SchemaField {\n type: FieldType.Compound;\n children: SchemaField[];\n treeChildren?: boolean;\n schemaRef?: string;\n}\n\nexport type AnyControlDefinition =\n | DataControlDefinition\n | GroupedControlsDefinition\n | ActionControlDefinition\n | DisplayControlDefinition;\n\nexport enum ValidationMessageType {\n NotEmpty = \"NotEmpty\",\n MinLength = \"MinLength\",\n MaxLength = \"MaxLength\",\n NotAfterDate = \"NotAfterDate\",\n NotBeforeDate = \"NotBeforeDate\",\n}\nexport interface SchemaInterface {\n isEmptyValue(field: SchemaField, value: any): boolean;\n textValue(\n field: SchemaField,\n value: any,\n element?: boolean,\n ): string | undefined;\n controlLength(field: SchemaField, control: Control<any>): number;\n valueLength(field: SchemaField, value: any): number;\n getOptions(field: SchemaField): FieldOption[] | undefined | null;\n getFilterOptions(field: SchemaField): FieldOption[] | undefined | null;\n parseToMillis(field: SchemaField, v: string): number;\n validationMessageText(\n field: SchemaField,\n messageType: ValidationMessageType,\n actual: any,\n expected: any,\n ): string;\n}\nexport interface ControlDefinition {\n type: string;\n title?: string | null;\n styleClass?: string | null;\n layoutClass?: string | null;\n labelClass?: string | null;\n dynamic?: DynamicProperty[] | null;\n adornments?: ControlAdornment[] | null;\n children?: ControlDefinition[] | null;\n}\n\nexport enum ControlDefinitionType {\n Data = \"Data\",\n Group = \"Group\",\n Display = \"Display\",\n Action = \"Action\",\n}\n\nexport interface DynamicProperty {\n type: string;\n expr: EntityExpression;\n}\n\nexport enum DynamicPropertyType {\n Visible = \"Visible\",\n DefaultValue = \"DefaultValue\",\n Readonly = \"Readonly\",\n Disabled = \"Disabled\",\n Display = \"Display\",\n Style = \"Style\",\n LayoutStyle = \"LayoutStyle\",\n AllowedOptions = \"AllowedOptions\",\n Label = \"Label\",\n ActionData = \"ActionData\",\n}\n\nexport interface EntityExpression {\n type: string;\n}\n\nexport enum ExpressionType {\n Jsonata = \"Jsonata\",\n Data = \"Data\",\n DataMatch = \"FieldValue\",\n UserMatch = \"UserMatch\",\n NotEmpty = \"NotEmpty\",\n UUID = \"UUID\",\n}\n\nexport interface JsonataExpression extends EntityExpression {\n type: ExpressionType.Jsonata;\n expression: string;\n}\n\nexport interface DataExpression extends EntityExpression {\n type: ExpressionType.Data;\n field: string;\n}\n\nexport interface DataMatchExpression extends EntityExpression {\n type: ExpressionType.DataMatch;\n field: string;\n value: any;\n}\n\nexport interface NotEmptyExpression extends EntityExpression {\n type: ExpressionType.DataMatch;\n field: string;\n}\n\nexport interface UserMatchExpression extends EntityExpression {\n type: ExpressionType.UserMatch;\n userMatch: string;\n}\n\nexport interface ControlAdornment {\n type: string;\n}\n\nexport enum AdornmentPlacement {\n ControlStart = \"ControlStart\",\n ControlEnd = \"ControlEnd\",\n LabelStart = \"LabelStart\",\n LabelEnd = \"LabelEnd\",\n}\n\nexport enum ControlAdornmentType {\n Tooltip = \"Tooltip\",\n Accordion = \"Accordion\",\n HelpText = \"HelpText\",\n Icon = \"Icon\",\n SetField = \"SetField\",\n}\n\nexport interface IconAdornment extends ControlAdornment {\n type: ControlAdornmentType.Icon;\n iconClass: string;\n placement?: AdornmentPlacement | null;\n}\n\nexport interface TooltipAdornment extends ControlAdornment {\n type: ControlAdornmentType.Tooltip;\n tooltip: string;\n}\n\nexport interface AccordionAdornment extends ControlAdornment {\n type: ControlAdornmentType.Accordion;\n title: string;\n defaultExpanded?: boolean | null;\n}\n\nexport interface HelpTextAdornment extends ControlAdornment {\n type: ControlAdornmentType.HelpText;\n helpText: string;\n placement?: AdornmentPlacement | null;\n}\n\nexport interface SetFieldAdornment extends ControlAdornment {\n type: ControlAdornmentType.SetField;\n field: string;\n defaultOnly?: boolean | null;\n expression?: EntityExpression;\n}\n\nexport interface DataControlDefinition extends ControlDefinition {\n type: ControlDefinitionType.Data;\n field: string;\n required?: boolean | null;\n renderOptions?: RenderOptions | null;\n defaultValue?: any;\n readonly?: boolean | null;\n disabled?: boolean | null;\n validators?: SchemaValidator[] | null;\n hideTitle?: boolean | null;\n dontClearHidden?: boolean | null;\n}\n\nexport interface RenderOptions {\n type: string;\n}\n\nexport enum DataRenderType {\n Standard = \"Standard\",\n Textfield = \"Textfield\",\n Radio = \"Radio\",\n HtmlEditor = \"HtmlEditor\",\n IconList = \"IconList\",\n CheckList = \"CheckList\",\n UserSelection = \"UserSelection\",\n Synchronised = \"Synchronised\",\n IconSelector = \"IconSelector\",\n DateTime = \"DateTime\",\n Checkbox = \"Checkbox\",\n Dropdown = \"Dropdown\",\n DisplayOnly = \"DisplayOnly\",\n Group = \"Group\",\n NullToggle = \"NullToggle\",\n Jsonata = \"Jsonata\",\n Array = \"Array\",\n}\n\nexport interface TextfieldRenderOptions extends RenderOptions {\n type: DataRenderType.Textfield;\n placeholder?: string | null;\n multiline?: boolean | null;\n}\n\nexport interface RadioButtonRenderOptions extends RenderOptions {\n type: DataRenderType.Radio;\n}\n\nexport interface StandardRenderer extends RenderOptions {\n type: DataRenderType.Standard;\n}\n\nexport interface DataGroupRenderOptions extends RenderOptions {\n type: DataRenderType.Group;\n groupOptions?: GroupRenderOptions;\n}\n\nexport interface HtmlEditorRenderOptions extends RenderOptions {\n type: DataRenderType.HtmlEditor;\n allowImages: boolean;\n}\n\nexport interface DateTimeRenderOptions extends RenderOptions {\n type: DataRenderType.DateTime;\n format?: string | null;\n forceMidnight?: boolean;\n}\n\nexport interface IconListRenderOptions extends RenderOptions {\n type: DataRenderType.IconList;\n iconMappings: IconMapping[];\n}\n\nexport interface DisplayOnlyRenderOptions extends RenderOptions {\n type: DataRenderType.DisplayOnly;\n emptyText?: string | null;\n sampleText?: string | null;\n}\nexport interface IconMapping {\n value: string;\n materialIcon?: string | null;\n}\n\nexport interface JsonataRenderOptions extends RenderOptions {\n type: DataRenderType.Jsonata;\n expression: string;\n}\n\nexport interface JsonataRenderOptions extends RenderOptions {\n type: DataRenderType.Jsonata;\n expression: string;\n}\n\nexport interface ArrayRenderOptions extends RenderOptions {\n type: DataRenderType.Array;\n addText?: string | null;\n addActionId?: string | null;\n removeText?: string | null;\n removeActionId?: string | null;\n noAdd?: boolean | null;\n noRemove?: boolean | null;\n noReorder?: boolean | null;\n childOptions?: RenderOptions | null;\n}\n\nexport type ArrayActionOptions = Pick<\n ArrayRenderOptions,\n | \"addText\"\n | \"addActionId\"\n | \"removeText\"\n | \"removeActionId\"\n | \"noAdd\"\n | \"noRemove\"\n | \"noReorder\"\n>;\n\nexport interface CheckListRenderOptions extends RenderOptions {\n type: DataRenderType.CheckList;\n}\n\nexport interface SynchronisedRenderOptions extends RenderOptions {\n type: DataRenderType.Synchronised;\n fieldToSync: string;\n syncType: SyncTextType;\n}\n\nexport enum SyncTextType {\n Camel = \"Camel\",\n Snake = \"Snake\",\n Pascal = \"Pascal\",\n}\n\nexport interface UserSelectionRenderOptions extends RenderOptions {\n type: DataRenderType.UserSelection;\n noGroups: boolean;\n noUsers: boolean;\n}\n\nexport interface IconSelectionRenderOptions extends RenderOptions {\n type: DataRenderType.IconSelector;\n}\n\nexport interface GroupedControlsDefinition extends ControlDefinition {\n type: ControlDefinitionType.Group;\n compoundField?: string | null;\n groupOptions?: GroupRenderOptions;\n}\n\nexport interface GroupRenderOptions {\n type: string;\n hideTitle?: boolean | null;\n}\n\nexport enum GroupRenderType {\n Standard = \"Standard\",\n Grid = \"Grid\",\n Flex = \"Flex\",\n GroupElement = \"GroupElement\",\n}\n\nexport interface StandardGroupRenderer extends GroupRenderOptions {\n type: GroupRenderType.Standard;\n}\n\nexport interface FlexRenderer extends GroupRenderOptions {\n type: GroupRenderType.Flex;\n direction?: string | null;\n gap?: string | null;\n}\n\nexport interface GroupElementRenderer extends GroupRenderOptions {\n type: GroupRenderType.GroupElement;\n value: any;\n}\n\nexport interface GridRenderer extends GroupRenderOptions {\n type: GroupRenderType.Grid;\n columns?: number | null;\n}\n\nexport interface DisplayControlDefinition extends ControlDefinition {\n type: ControlDefinitionType.Display;\n displayData: DisplayData;\n}\n\nexport interface DisplayData {\n type: string;\n}\n\nexport enum DisplayDataType {\n Text = \"Text\",\n Html = \"Html\",\n Icon = \"Icon\",\n Custom = \"Custom\",\n}\nexport interface TextDisplay extends DisplayData {\n type: DisplayDataType.Text;\n text: string;\n}\n\nexport interface IconDisplay extends DisplayData {\n type: DisplayDataType.Icon;\n iconClass: string;\n}\n\nexport interface HtmlDisplay extends DisplayData {\n type: DisplayDataType.Html;\n html: string;\n}\n\nexport interface CustomDisplay extends DisplayData {\n type: DisplayDataType.Custom;\n customId: string;\n}\n\nexport interface ActionControlDefinition extends ControlDefinition {\n type: ControlDefinitionType.Action;\n actionId: string;\n actionData?: string | null;\n}\n\nexport enum ValidatorType {\n Jsonata = \"Jsonata\",\n Date = \"Date\",\n Length = \"Length\",\n}\nexport interface SchemaValidator {\n type: string;\n}\n\nexport interface JsonataValidator extends SchemaValidator {\n type: ValidatorType.Jsonata;\n expression: string;\n}\n\nexport interface LengthValidator extends SchemaValidator {\n type: ValidatorType.Length;\n min?: number | null;\n max?: number | null;\n}\n\nexport enum DateComparison {\n NotBefore = \"NotBefore\",\n NotAfter = \"NotAfter\",\n}\n\nexport interface DateValidator extends SchemaValidator {\n type: ValidatorType.Date;\n comparison: DateComparison;\n fixedDate?: string | null;\n daysFromCurrent?: number | null;\n}\n\nexport function isDataControlDefinition(\n x: ControlDefinition,\n): x is DataControlDefinition {\n return x.type === ControlDefinitionType.Data;\n}\n\nexport function isGroupControlsDefinition(\n x: ControlDefinition,\n): x is GroupedControlsDefinition {\n return x.type === ControlDefinitionType.Group;\n}\n\nexport function isDisplayControlsDefinition(\n x: ControlDefinition,\n): x is DisplayControlDefinition {\n return x.type === ControlDefinitionType.Display;\n}\n\nexport function isActionControlsDefinition(\n x: ControlDefinition,\n): x is ActionControlDefinition {\n return x.type === ControlDefinitionType.Action;\n}\n\nexport interface ControlVisitor<A> {\n data(d: DataControlDefinition): A;\n group(d: GroupedControlsDefinition): A;\n display(d: DisplayControlDefinition): A;\n action(d: ActionControlDefinition): A;\n}\n\nexport function visitControlDefinition<A>(\n x: ControlDefinition,\n visitor: ControlVisitor<A>,\n defaultValue: (c: ControlDefinition) => A,\n): A {\n switch (x.type) {\n case ControlDefinitionType.Action:\n return visitor.action(x as ActionControlDefinition);\n case ControlDefinitionType.Data:\n return visitor.data(x as DataControlDefinition);\n case ControlDefinitionType.Display:\n return visitor.display(x as DisplayControlDefinition);\n case ControlDefinitionType.Group:\n return visitor.group(x as GroupedControlsDefinition);\n default:\n return defaultValue(x);\n }\n}\nexport function isGridRenderer(\n options: GroupRenderOptions,\n): options is GridRenderer {\n return options.type === GroupRenderType.Grid;\n}\n\nexport function isFlexRenderer(\n options: GroupRenderOptions,\n): options is FlexRenderer {\n return options.type === GroupRenderType.Flex;\n}\n\nexport function isDisplayOnlyRenderer(\n options: RenderOptions,\n): options is DisplayOnlyRenderOptions {\n return options.type === DataRenderType.DisplayOnly;\n}\n\nexport function isTextfieldRenderer(\n options: RenderOptions,\n): options is TextfieldRenderOptions {\n return options.type === DataRenderType.Textfield;\n}\n\nexport function isDataGroupRenderer(\n options: RenderOptions,\n): options is DataGroupRenderOptions {\n return options.type === DataRenderType.Group;\n}\n\nexport function isArrayRenderer(\n options: RenderOptions,\n): options is ArrayRenderOptions {\n return options.type === DataRenderType.Array;\n}\n\nexport function findField(\n fields: SchemaField[],\n field: string,\n): SchemaField | undefined {\n return fields.find((x) => x.field === field);\n}\n\nexport function isScalarField(sf: SchemaField): sf is SchemaField {\n return !isCompoundField(sf);\n}\n\nexport function isCompoundField(sf: SchemaField): sf is CompoundField {\n return sf.type === FieldType.Compound;\n}\n\nexport function isDataControl(\n c: ControlDefinition,\n): c is DataControlDefinition {\n return c.type === ControlDefinitionType.Data;\n}\n\nexport function isGroupControl(\n c: ControlDefinition,\n): c is GroupedControlsDefinition {\n return c.type === ControlDefinitionType.Group;\n}\n","import {\n CompoundField,\n FieldOption,\n FieldType,\n SchemaField,\n SchemaMap,\n isCompoundField,\n} from \"./types\";\n\nexport type AllowedSchema<T> = T extends string\n ? SchemaField & {\n type:\n | FieldType.String\n | FieldType.Date\n | FieldType.DateTime\n | FieldType.Time;\n }\n : T extends number\n ? SchemaField & {\n type: FieldType.Int | FieldType.Double;\n }\n : T extends boolean\n ? SchemaField & {\n type: FieldType.Bool;\n }\n : T extends Array<infer E>\n ? AllowedSchema<E> & {\n collection: true;\n }\n : T extends { [key: string]: any }\n ? CompoundField & {\n type: FieldType.Compound;\n }\n : SchemaField & { type: FieldType.Any };\n\ntype AllowedField<T, K> = (\n name: string,\n) => (SchemaField & { type: K }) | AllowedSchema<T>;\n\nexport function buildSchema<T, Custom = \"\">(def: {\n [K in keyof T]-?: AllowedField<T[K], Custom>;\n}): SchemaField[] {\n return Object.entries(def).map((x) =>\n (x[1] as (n: string) => SchemaField)(x[0]),\n );\n}\n\nexport type FieldBuilder<T extends FieldType, K> = (\n name: string,\n) => Omit<SchemaField, \"type\"> & { type: T } & K;\n\nexport function stringField(\n displayName: string,\n): FieldBuilder<FieldType.String, {}>;\n\nexport function stringField<S extends Partial<SchemaField>>(\n displayName: string,\n options: S,\n): FieldBuilder<FieldType.String, S>;\n\nexport function stringField(displayName: string, options?: any) {\n return makeScalarField({\n type: FieldType.String,\n displayName,\n ...options,\n });\n}\n\nexport function stringOptionsField(\n displayName: string,\n ...options: FieldOption[]\n) {\n return makeScalarField({\n type: FieldType.String as const,\n displayName,\n options,\n });\n}\n\nexport function withScalarOptions<\n S extends SchemaField,\n S2 extends Partial<SchemaField>,\n>(options: S2, v: (name: string) => S): (name: string) => S & S2 {\n return (n) => ({ ...v(n), ...options });\n}\n\nexport function makeScalarField<S extends Partial<SchemaField>>(\n options: S,\n): (name: string) => SchemaField & S {\n return (n) => ({ ...defaultScalarField(n, n), ...options });\n}\n\nexport function makeCompoundField<S extends Partial<CompoundField>>(\n options: S,\n): (name: string) => CompoundField & {\n type: FieldType.Compound;\n} & S {\n return (n) => ({ ...defaultCompoundField(n, n, false), ...options });\n}\n\nexport function intField(displayName: string): FieldBuilder<FieldType.Int, {}>;\n\nexport function intField<S extends Partial<SchemaField>>(\n displayName: string,\n options: S,\n): FieldBuilder<FieldType.Int, S>;\n\nexport function intField<S extends Partial<SchemaField>>(\n displayName: string,\n options?: S,\n) {\n return makeScalarField({\n type: FieldType.Int as const,\n displayName,\n ...(options as S),\n });\n}\n\nexport function doubleField(\n displayName: string,\n): FieldBuilder<FieldType.Double, {}>;\n\nexport function doubleField<S extends Partial<SchemaField>>(\n displayName: string,\n options: S,\n): FieldBuilder<FieldType.Double, S>;\n\nexport function doubleField<S extends Partial<SchemaField>>(\n displayName: string,\n options?: S,\n) {\n return makeScalarField({\n type: FieldType.Double as const,\n displayName,\n ...(options as S),\n });\n}\n\nexport function dateField(\n displayName: string,\n): FieldBuilder<FieldType.Date, {}>;\n\nexport function dateField<S extends Partial<SchemaField>>(\n displayName: string,\n options: S,\n): FieldBuilder<FieldType.Date, S>;\n\nexport function dateField<S extends Partial<SchemaField>>(\n displayName: string,\n options?: S,\n) {\n return makeScalarField({\n type: FieldType.Date as const,\n displayName,\n ...(options as S),\n });\n}\n\nexport function timeField<S extends Partial<SchemaField>>(\n displayName: string,\n options?: S,\n) {\n return makeScalarField({\n type: FieldType.Time as const,\n displayName,\n ...(options as S),\n });\n}\n\nexport function dateTimeField<S extends Partial<SchemaField>>(\n displayName: string,\n options?: S,\n) {\n return makeScalarField({\n type: FieldType.DateTime as const,\n displayName,\n ...(options as S),\n });\n}\n\nexport function boolField(\n displayName: string,\n): FieldBuilder<FieldType.Bool, {}>;\n\nexport function boolField<S extends Partial<SchemaField>>(\n displayName: string,\n options: S,\n): FieldBuilder<FieldType.Bool, S>;\n\nexport function boolField(displayName: string, options?: any) {\n return makeScalarField({\n type: FieldType.Bool as const,\n displayName,\n ...options,\n });\n}\n\nexport function compoundField<\n Other extends Partial<Omit<CompoundField, \"type\" | \"schemaType\">>,\n>(\n displayName: string,\n fields: SchemaField[],\n other?: Other,\n): (name: string) => CompoundField & {\n collection: Other[\"collection\"];\n} {\n return (field) =>\n ({\n ...defaultCompoundField(field, displayName, false),\n ...other,\n children: fields,\n }) as any;\n}\n\nexport function defaultScalarField(\n field: string,\n displayName: string,\n): Omit<SchemaField, \"type\"> & {\n type: FieldType.String;\n} {\n return {\n field,\n displayName,\n type: FieldType.String,\n };\n}\n\nexport function defaultCompoundField(\n field: string,\n displayName: string,\n collection: boolean,\n): CompoundField & {\n type: FieldType.Compound;\n} {\n return {\n field,\n displayName,\n type: FieldType.Compound,\n collection,\n children: [],\n };\n}\n\nexport function mergeField(\n field: SchemaField,\n mergeInto: SchemaField[],\n): SchemaField[] {\n const existing = mergeInto.find((x) => x.field === field.field);\n if (existing) {\n return mergeInto.map((x) =>\n x !== existing\n ? x\n : {\n ...x,\n onlyForTypes: mergeTypes(x.onlyForTypes, field.onlyForTypes),\n },\n );\n }\n return [...mergeInto, field];\n\n function mergeTypes(f?: string[] | null, s?: string[] | null) {\n if (!f) return s;\n if (!s) return f;\n const extras = s.filter((x) => !f.includes(x));\n return extras.length ? [...f, ...extras] : f;\n }\n}\n\nexport function mergeFields(\n fields: SchemaField[],\n name: string,\n value: any,\n newFields: SchemaField[],\n): SchemaField[] {\n const withType = fields.map((x) =>\n x.isTypeField ? addFieldOption(x, name, value) : x,\n );\n return newFields\n .map((x) => ({ ...x, onlyForTypes: [value] }))\n .reduce((af, x) => mergeField(x, af), withType);\n}\n\nexport function addFieldOption(\n typeField: SchemaField,\n name: string,\n value: any,\n): SchemaField {\n const options = typeField.options ?? [];\n if (options.some((x) => x.value === value)) return typeField;\n return {\n ...typeField,\n options: [...options, { name, value }],\n };\n}\n\nexport function resolveSchemas<A extends SchemaMap>(schemaMap: A): A {\n const out: SchemaMap = {};\n function resolveSchemaType(type: string) {\n if (type in out) {\n return out[type];\n }\n const resolvedFields: SchemaField[] = [];\n out[type] = resolvedFields;\n schemaMap[type].forEach((x) => {\n if (isCompoundField(x) && x.schemaRef) {\n resolvedFields.push({\n ...x,\n children: resolveSchemaType(x.schemaRef),\n } as CompoundField);\n } else {\n resolvedFields.push(x);\n }\n });\n return resolvedFields;\n }\n Object.keys(schemaMap).forEach(resolveSchemaType);\n return out as A;\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport {\n CompoundField,\n ControlDefinition,\n ControlDefinitionType,\n FieldType,\n isDataControlDefinition,\n isGroupControlsDefinition,\n SchemaField,\n isCompoundField,\n} from \"./types\";\n\nconst MissingField: SchemaField = { field: \"__missing\", type: FieldType.Any };\n\nexport interface FormNode {\n definition: ControlDefinition;\n getChildNodes(): FormNode[];\n parent?: FormNode;\n}\n\nexport interface FormTreeLookup<A = string> {\n getForm(formId: A): FormTreeNode | undefined;\n}\nexport interface FormTreeNode extends FormTreeLookup {\n rootNode: FormNode;\n}\n\nexport interface SchemaTreeLookup<A = string> {\n getSchema(schemaId: A): SchemaNode | undefined;\n}\n\nexport interface SchemaNode extends SchemaTreeLookup {\n field: SchemaField;\n getChildNode(field: string): SchemaNode | undefined;\n getChildNodes(): SchemaNode[];\n parent?: SchemaNode;\n}\n\nexport interface SchemaDataNode {\n schema: SchemaNode;\n elementIndex?: number;\n control?: Control<unknown>;\n parent?: SchemaDataNode;\n getChild(node: SchemaNode): SchemaDataNode;\n getChildElement(index: number): SchemaDataNode;\n}\n\nfunction nodeForSchema(\n field: SchemaField,\n lookup: SchemaTreeLookup,\n parent: SchemaNode | undefined,\n): SchemaNode {\n const node = {\n field,\n getSchema: lookup.getSchema,\n parent,\n getChildNode,\n getChildNodes,\n };\n return node;\n\n function getChildNode(fieldName: string) {\n if (isCompoundField(field) && !field.schemaRef) {\n const childField = field.children.find((x) => x.field === fieldName);\n return childField ? nodeForSchema(childField, lookup, node) : undefined;\n }\n return getChildNodes().find((x) => x.field.field === fieldName);\n }\n function getChildNodes(): SchemaNode[] {\n if (isCompoundField(field)) {\n const otherRef = field.schemaRef && lookup.getSchema(field.schemaRef);\n if (otherRef) return otherRef.getChildNodes();\n return field.children.map((x) => nodeForSchema(x, lookup, node));\n }\n return [];\n }\n}\n\nexport function createSchemaLookup<A extends Record<string, SchemaField[]>>(\n schemaMap: A,\n): SchemaTreeLookup<keyof A> {\n const lookup = {\n getSchema,\n };\n return lookup;\n\n function getSchema(schemaId: keyof A): SchemaNode | undefined {\n const fields = schemaMap[schemaId];\n if (fields) {\n return rootSchemaNode(fields, lookup);\n }\n return undefined;\n }\n}\n\nfunction nodeForControl(\n definition: ControlDefinition,\n parent?: FormNode,\n): FormNode {\n const node = { definition, parent, getChildNodes };\n return node;\n function getChildNodes(): FormNode[] {\n return definition.children?.map((x) => nodeForControl(x, node)) ?? [];\n }\n}\nexport function createFormLookup<A extends Record<string, ControlDefinition[]>>(\n formMap: A,\n): FormTreeLookup<keyof A> {\n const lookup = {\n getForm,\n };\n return lookup;\n\n function getForm(formId: keyof A): FormTreeNode | undefined {\n const controls = formMap[formId];\n if (controls) {\n return {\n rootNode: nodeForControl({\n children: controls,\n type: ControlDefinitionType.Group,\n }),\n getForm,\n };\n }\n return undefined;\n }\n}\n\nexport function makeSchemaDataNode(\n schema: SchemaNode,\n control?: Control<unknown>,\n parent?: SchemaDataNode,\n elementIndex?: number,\n): SchemaDataNode {\n const dataNode = {\n schema,\n control,\n parent,\n elementIndex,\n getChild,\n getChildElement,\n };\n return dataNode;\n\n function getChild(schemaNode: SchemaNode): SchemaDataNode {\n const objControl = control as Control<Record<string, unknown>>;\n if (objControl && objControl.current.isNull) {\n objControl.value = {};\n }\n return makeSchemaDataNode(\n schemaNode,\n objControl?.fields?.[schemaNode.field.field],\n dataNode,\n );\n }\n function getChildElement(elementIndex: number): SchemaDataNode {\n return makeSchemaDataNode(\n schema,\n (control as Control<unknown[]>)?.elements?.[elementIndex],\n dataNode,\n elementIndex,\n );\n }\n}\n\nexport function fieldPathForDefinition(\n c: ControlDefinition,\n): string[] | undefined {\n const fieldName = isGroupControlsDefinition(c)\n ? c.compoundField\n : isDataControlDefinition(c)\n ? c.field\n : undefined;\n return fieldName?.split(\"/\");\n}\n\nexport function schemaDataForFieldRef(\n fieldRef: string | undefined,\n schema: SchemaDataNode,\n): SchemaDataNode {\n return schemaDataForFieldPath(fieldRef?.split(\"/\") ?? [], schema);\n}\n\nexport function schemaForFieldRef(\n fieldRef: string | undefined,\n schema: SchemaNode,\n): SchemaNode {\n return schemaForFieldPath(fieldRef?.split(\"/\") ?? [], schema);\n}\n\nexport function schemaDataForFieldPath(\n fieldPath: string[],\n schema: SchemaDataNode,\n): SchemaDataNode {\n let i = 0;\n while (i < fieldPath.length) {\n const nextField = fieldPath[i];\n const node = schema.schema;\n let childNode = node.getChildNode(nextField);\n if (!childNode) {\n childNode = nodeForSchema(MissingField, node, node);\n }\n schema = schema.getChild(childNode);\n i++;\n }\n return schema;\n}\n\nexport function schemaForFieldPath(\n fieldPath: string[],\n schema: SchemaNode,\n): SchemaNode {\n let i = 0;\n while (i < fieldPath.length) {\n const nextField = fieldPath[i];\n let childNode = schema.getChildNode(nextField);\n if (!childNode) {\n childNode = nodeForSchema(MissingField, schema, schema);\n }\n schema = childNode;\n i++;\n }\n return schema;\n}\n\nexport function traverseParents<A, B extends { parent?: B | undefined }>(\n current: B | undefined,\n get: (b: B) => A,\n until?: (b: B) => boolean,\n): A[] {\n let outArray: A[] = [];\n while (current && !until?.(current)) {\n outArray.push(get(current));\n current = current.parent;\n }\n return outArray.reverse();\n}\n\nexport function getRootDataNode(dataNode: SchemaDataNode) {\n while (dataNode.parent) {\n dataNode = dataNode.parent;\n }\n return dataNode;\n}\n\nexport function getJsonPath(dataNode: SchemaDataNode) {\n return traverseParents(\n dataNode,\n (d) => (d.elementIndex == null ? d.schema.field.field : d.elementIndex),\n (x) => !x.parent,\n );\n}\n\nexport function getSchemaFieldList(schema: SchemaNode): SchemaField[] {\n return schema.getChildNodes().map((x) => x.field);\n}\n\nexport function rootSchemaNode(\n fields: SchemaField[],\n lookup: SchemaTreeLookup = {\n getSchema(schemaId: string): SchemaNode | undefined {\n return undefined;\n },\n },\n): SchemaNode {\n return nodeForSchema(\n {\n type: FieldType.Compound,\n field: \"\",\n children: fields,\n } as CompoundField,\n lookup,\n undefined,\n );\n}\n","import {\n CompoundField,\n ControlDefinition,\n ControlDefinitionType,\n DataControlDefinition,\n DataRenderType,\n DisplayOnlyRenderOptions,\n FieldOption,\n findField,\n GroupedControlsDefinition,\n isCompoundField,\n isDataControl,\n isDataControlDefinition,\n isDisplayOnlyRenderer,\n isGroupControl,\n isGroupControlsDefinition,\n isScalarField,\n SchemaField,\n SchemaInterface,\n visitControlDefinition,\n} from \"./types\";\nimport { MutableRefObject, useCallback, useRef } from \"react\";\nimport {\n Control,\n ControlChange,\n trackControlChange,\n} from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\nimport {\n getJsonPath,\n getRootDataNode,\n getSchemaFieldList,\n SchemaDataNode,\n} from \"./treeNodes\";\n\nexport type JsonPath = string | number;\n\nexport interface DataContext {\n data: Control<any>;\n path: JsonPath[];\n}\n\nexport interface ControlDataContext extends DataContext {\n fields: SchemaField[];\n schemaInterface: SchemaInterface;\n dataNode: SchemaDataNode | undefined;\n parentNode: SchemaDataNode;\n}\n\nexport class ControlDataContextImpl implements ControlDataContext {\n constructor(\n public schemaInterface: SchemaInterface,\n public dataNode: SchemaDataNode | undefined,\n public parentNode: SchemaDataNode,\n ) {}\n\n get fields() {\n return getSchemaFieldList(this.parentNode.schema);\n }\n\n get data() {\n return getRootDataNode(this.parentNode).control!;\n }\n\n get path() {\n return getJsonPath(this.parentNode);\n }\n}\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\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\nexport function defaultValueForFields(fields: SchemaField[]): any {\n return Object.fromEntries(\n fields.map((x) => [x.field, defaultValueForField(x)]),\n );\n}\n\nexport function defaultValueForField(\n sf: SchemaField,\n required?: boolean | null,\n forceNotNull?: boolean,\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 || forceNotNull\n ? sf.collection\n ? []\n : {}\n : undefined;\n }\n if (sf.collection && sf.notNullable) {\n return [];\n }\n return undefined;\n}\n\nexport function elementValueForField(sf: SchemaField): any {\n if (isCompoundField(sf)) {\n return defaultValueForFields(sf.children);\n }\n return sf.defaultValue;\n}\n\nexport function findScalarField(\n fields: SchemaField[],\n field: string,\n): SchemaField | undefined {\n return findField(fields, field);\n}\n\nexport function findCompoundField(\n fields: SchemaField[],\n field: string,\n): CompoundField | undefined {\n return findField(fields, field) as CompoundField | undefined;\n}\n\nexport function fieldHasTag(field: SchemaField, tag: string) {\n return Boolean(field.tags?.includes(tag));\n}\n\nexport function fieldDisplayName(field: SchemaField) {\n return field.displayName ?? field.field;\n}\n\nexport function hasOptions(o: { options: FieldOption[] | undefined | null }) {\n return (o.options?.length ?? 0) > 0;\n}\n\nexport function defaultControlForField(sf: SchemaField): DataControlDefinition {\n if (isCompoundField(sf)) {\n return {\n type: ControlDefinitionType.Data,\n title: sf.displayName,\n field: sf.field,\n required: sf.required,\n children: sf.children.map(defaultControlForField),\n };\n } else if (isScalarField(sf)) {\n const htmlEditor = sf.tags?.includes(\"_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}\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\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: CompoundField,\n definition: ControlDefinition,\n): ControlDefinition[] {\n if (\n isDataControlDefinition(definition) &&\n compound.field === definition.field\n ) {\n return [definition];\n }\n if (isGroupControlsDefinition(definition)) {\n if (definition.compoundField === compound.field) return [definition];\n return (\n definition.children?.flatMap((d) =>\n findControlsForCompound(compound, d),\n ) ?? []\n );\n }\n return [];\n}\n\nexport interface ControlGroupLookup {\n groups: ControlDefinition[];\n children: Record<string, ControlGroupLookup>;\n}\nexport function findCompoundGroups(\n fields: SchemaField[],\n controls: ControlDefinition[],\n): Record<string, ControlGroupLookup> {\n return Object.fromEntries(\n fields.filter(isCompoundField).map((cf) => {\n const groups = controls.flatMap((x) => findControlsForCompound(cf, x));\n return [\n cf.field,\n {\n groups: groups.concat(\n findNonDataGroups(groups.flatMap((x) => x.children ?? [])),\n ),\n children: findCompoundGroups(\n cf.children,\n groups.flatMap((x) => x.children ?? []),\n ),\n },\n ];\n }),\n );\n}\n\nexport function existsInGroups(\n field: SchemaField,\n lookup: ControlGroupLookup,\n): [SchemaField, ControlGroupLookup][] {\n const itself = lookup.groups.find((c) =>\n c.children?.find(\n (x) =>\n (isDataControlDefinition(x) && x.field === field.field) ||\n (isGroupControlsDefinition(x) && x.compoundField === field.field),\n ),\n );\n if (!itself) return [[field, lookup]];\n if (isCompoundField(field)) {\n const childLookup = lookup.children[field.field];\n if (!childLookup) return [[field, lookup]];\n return field.children.flatMap((c) => existsInGroups(c, childLookup));\n }\n return [];\n}\n\nexport function findNonDataGroups(\n controls: ControlDefinition[],\n): ControlDefinition[] {\n return controls.flatMap((control) =>\n isGroupControlsDefinition(control) && !control.compoundField\n ? [control, ...findNonDataGroups(control.children ?? [])]\n : [],\n );\n}\n\nfunction cloneChildren(c: ControlDefinition): ControlDefinition {\n return { ...c, children: c.children?.map(cloneChildren) };\n}\n\nexport function addMissingControls(\n fields: SchemaField[],\n controls: ControlDefinition[],\n) {\n controls = controls.map(cloneChildren);\n const rootMapping = findCompoundGroups(fields, controls);\n const rootGroups = findNonDataGroups([\n {\n type: ControlDefinitionType.Group,\n children: controls,\n },\n ]);\n const rootLookup = { children: rootMapping, groups: rootGroups };\n const missingFields = fields\n .filter((x) => !fieldHasTag(x, \"_NoControl\"))\n .flatMap((x) => existsInGroups(x, rootLookup));\n missingFields.forEach(([f, lookup]) => {\n const groupToAdd = f.tags?.find((x) => x.startsWith(\"_ControlGroup:\"));\n let insertGroup: ControlDefinition | undefined = undefined;\n if (groupToAdd) {\n const groupName = groupToAdd.substring(14);\n insertGroup = lookup.groups.find((x) => x.title === groupName);\n }\n if (!insertGroup) insertGroup = lookup.groups[0];\n if (insertGroup) {\n const newControl = defaultControlForField(f);\n if (insertGroup.children) insertGroup.children.push(newControl);\n else insertGroup.children = [newControl];\n }\n });\n return controls;\n}\nexport function useUpdatedRef<A>(a: A): MutableRefObject<A> {\n const r = useRef(a);\n r.current = a;\n return r;\n}\n\nexport function isControlReadonly(c: ControlDefinition): boolean {\n return isDataControl(c) && !!c.readonly;\n}\n\nexport function isControlDisabled(c: ControlDefinition): boolean {\n return isDataControl(c) && !!c.disabled;\n}\n\nexport function getDisplayOnlyOptions(\n d: ControlDefinition,\n): DisplayOnlyRenderOptions | undefined {\n return isDataControlDefinition(d) &&\n d.renderOptions &&\n isDisplayOnlyRenderer(d.renderOptions)\n ? d.renderOptions\n : undefined;\n}\n\nexport function visitControlDataArray<A>(\n controls: ControlDefinition[] | undefined | null,\n context: ControlDataContext,\n cb: (\n definition: DataControlDefinition,\n field: SchemaField,\n control: Control<any>,\n element: boolean,\n ) => A | undefined,\n): A | undefined {\n if (!controls) return undefined;\n for (const c of controls) {\n const r = visitControlData(c, context, cb);\n if (r !== undefined) return r;\n }\n return undefined;\n}\n\nexport function visitControlData<A>(\n definition: ControlDefinition,\n ctx: ControlDataContext,\n cb: (\n definition: DataControlDefinition,\n field: SchemaField,\n control: Control<any>,\n element: boolean,\n ) => A | undefined,\n): A | undefined {\n return visitControlDefinition<A | undefined>(\n definition,\n {\n data(def: DataControlDefinition) {\n return processData(def, def.field, def.children);\n },\n group(d: GroupedControlsDefinition) {\n return processData(undefined, d.compoundField, d.children);\n },\n action: () => undefined,\n display: () => undefined,\n },\n () => undefined,\n );\n\n function processData(\n def: DataControlDefinition | undefined,\n fieldName: string | undefined | null,\n children: ControlDefinition[] | null | undefined,\n ) {\n const fieldData = fieldName ? findField(ctx.fields, fieldName) : undefined;\n if (!fieldData)\n return !fieldName ? visitControlDataArray(children, ctx, cb) : undefined;\n\n const thisPath = [...ctx.path, fieldData.field];\n const control = ctx.data.lookupControl(thisPath);\n if (!control) return undefined;\n const result = def ? cb(def, fieldData, control, false) : undefined;\n if (result !== undefined) return result;\n const compound = isCompoundField(fieldData);\n if (fieldData.collection) {\n let cIndex = 0;\n for (const c of control!.elements ?? []) {\n const elemResult = def ? cb(def, fieldData, c, true) : undefined;\n if (elemResult !== undefined) return elemResult;\n if (compound) {\n const cfResult = visitControlDataArray(\n children,\n {\n ...ctx,\n fields: fieldData.children,\n path: [...thisPath, cIndex],\n },\n cb,\n );\n if (cfResult !== undefined) return cfResult;\n }\n cIndex++;\n }\n } else if (compound) {\n return visitControlDataArray(\n children,\n {\n ...ctx,\n fields: fieldData.children,\n path: thisPath,\n },\n cb,\n );\n }\n return undefined;\n }\n}\n\nexport function lookupChildControl(\n data: DataContext,\n path: SchemaField[],\n element?: number,\n): Control<any> | undefined {\n const fieldPath = path.map((x) => x.field);\n return lookupChildControlPath(\n data,\n element == null ? fieldPath : [...fieldPath, element],\n );\n}\n\nexport function lookupChildControlPath(\n data: DataContext,\n jsonPath: JsonPath[],\n): Control<any> | undefined {\n const childPath = [...data.path, ...jsonPath];\n return watchControlLookup(data.data, childPath);\n}\n\nexport function cleanDataForSchema(\n v: { [k: string]: any } | undefined,\n fields: SchemaField[],\n removeIfDefault?: boolean,\n): any {\n if (!v) return v;\n const typeField = fields.find((x) => x.isTypeField);\n const typeValue = typeField ? v[typeField.field] : 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 childFields = x.treeChildren ? fields : x.children;\n if (x.collection) {\n if (Array.isArray(childValue)) {\n out[x.field] = childValue.map((cv) =>\n cleanDataForSchema(cv, childFields, removeIfDefault),\n );\n }\n } else {\n out[x.field] = cleanDataForSchema(\n childValue,\n childFields,\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\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 tc = clsx(\n [\n c.styleClass,\n c.layoutClass,\n c.labelClass,\n ...(collectExtra?.(c) ?? []),\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\nexport function jsonPathString(\n jsonPath: JsonPath[],\n customIndex?: (n: number) => string,\n) {\n let out = \"\";\n jsonPath.forEach((v, i) => {\n if (typeof v === \"number\") {\n out += customIndex?.(v) ?? \"[\" + v + \"]\";\n } else {\n if (i > 0) out += \".\";\n out += v;\n }\n });\n return out;\n}\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\nexport function getOverrideClass(className?: string | null) {\n if (className && className.startsWith(\"@ \")) {\n return className.substring(2);\n }\n return className;\n}\n\nexport function rendererClass(\n controlClass?: string | null,\n globalClass?: string | null,\n) {\n const oc = getOverrideClass(controlClass);\n if (oc === controlClass) return clsx(controlClass, globalClass);\n return oc ? oc : undefined;\n}\n\nexport function watchControlLookup(\n base: Control<any> | undefined,\n path: (string | number)[],\n): Control<any> | undefined {\n let index = 0;\n while (index < path.length && base) {\n const childId = path[index];\n const c = base.current;\n if (typeof childId === \"string\") {\n const next = c.fields?.[childId];\n if (!next) trackControlChange(base, ControlChange.Structure);\n base = next;\n } else {\n base = c.elements?.[childId];\n }\n index++;\n }\n return base;\n}\n\nexport type HookDep = string | number | undefined | null;\n\nexport interface DynamicHookGenerator<A, P> {\n deps: HookDep;\n state: any;\n runHook(ctx: P, state: any): A;\n}\n\nexport function makeHook<A, P, S = undefined>(\n runHook: (ctx: P, state: S) => A,\n state: S,\n deps?: HookDep,\n): DynamicHookGenerator<A, P> {\n return { deps, state, runHook };\n}\n\nexport type DynamicHookValue<A> =\n A extends DynamicHookGenerator<infer V, any> ? V : never;\n\nexport function makeHookDepString<A>(\n deps: A[],\n asHookDep: (a: A) => HookDep,\n): string {\n return deps.map((x) => toDepString(asHookDep(x))).join(\",\");\n}\nexport function useDynamicHooks<\n P,\n Hooks extends Record<string, DynamicHookGenerator<any, P>>,\n>(\n hooks: Hooks,\n): (p: P) => {\n [K in keyof Hooks]: DynamicHookValue<Hooks[K]>;\n} {\n const hookEntries = Object.entries(hooks);\n const deps = makeHookDepString(hookEntries, (x) => x[1].deps);\n const ref = useRef<Record<string, any>>({});\n const s = ref.current;\n hookEntries.forEach((x) => (s[x[0]] = x[1].state));\n return useCallback(\n (p: P) => {\n return Object.fromEntries(\n hookEntries.map(([f, hg]) => [f, hg.runHook(p, ref.current[f])]),\n ) as any;\n },\n [deps],\n );\n}\n\nexport function toDepString(x: any): string {\n if (x === undefined) return \"_\";\n if (x === null) return \"~\";\n return x.toString();\n}\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\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\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","import {\n AccordionAdornment,\n CheckListRenderOptions,\n ControlAdornmentType,\n ControlDefinition,\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 RadioButtonRenderOptions,\n RenderOptions,\n SchemaField,\n SchemaMap,\n TextDisplay,\n TextfieldRenderOptions,\n ValidatorType,\n} from \"./types\";\nimport { ActionRendererProps } from \"./controlRender\";\nimport { useMemo } from \"react\";\nimport { addMissingControls } from \"./util\";\nimport { mergeFields, resolveSchemas } from \"./schemaBuilder\";\nimport { ActionControlDefinition, ControlDefinitionType } 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 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,\n): ActionRendererProps {\n return { actionId, onClick, actionText: actionText ?? actionId };\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: GroupedControlsDefinition;\n}\n\nexport interface CustomRenderOptions {\n value: string;\n name: string;\n fields?: SchemaField[];\n groups?: EditorGroup[];\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};\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) => 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","import {\n ControlDefinition,\n DataExpression,\n DataMatchExpression,\n DynamicPropertyType,\n EntityExpression,\n ExpressionType,\n isDataControlDefinition,\n JsonataExpression,\n NotEmptyExpression,\n SchemaField,\n SchemaInterface,\n} from \"./types\";\nimport React, { useEffect, useMemo, useRef } from \"react\";\nimport {\n addAfterChangesCallback,\n collectChanges,\n Control,\n makeChangeTracker,\n trackedValue,\n useCalculatedControl,\n useComputed,\n useControl,\n useRefState,\n} from \"@react-typed-forms/core\";\n\nimport {\n ControlDataContext,\n DataContext,\n defaultValueForField,\n DynamicHookGenerator,\n elementValueForField,\n findFieldPath,\n getDisplayOnlyOptions,\n HookDep,\n isControlDisabled,\n isControlReadonly,\n jsonPathString,\n lookupChildControl,\n toDepString,\n} from \"./util\";\nimport jsonata from \"jsonata\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { schemaDataForFieldRef, SchemaDataNode } from \"./treeNodes\";\n\nexport type EvalExpressionHook<A = any> = DynamicHookGenerator<\n Control<A | undefined>,\n ControlDataContext\n>;\n\nexport type UseEvalExpressionHook = (\n expr: EntityExpression | undefined,\n coerce: (v: any) => any,\n) => DynamicHookGenerator<Control<any> | undefined, ControlDataContext>;\n\nexport function useEvalVisibilityHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n definition: ControlDefinition,\n overrideDataNode?: SchemaDataNode,\n): EvalExpressionHook<boolean> {\n const dynamicVisibility = useEvalDynamicBoolHook(\n definition,\n DynamicPropertyType.Visible,\n useEvalExpressionHook,\n );\n return makeDynamicPropertyHook(\n dynamicVisibility,\n (ctx, { definition, overrideDataNode }) =>\n useComputed(() => {\n const dataNode = overrideDataNode ?? ctx.dataNode;\n return (\n !dataNode ||\n (matchesType(dataNode) &&\n !hideDisplayOnly(dataNode, ctx.schemaInterface, definition))\n );\n }),\n { definition, overrideDataNode },\n );\n}\n\nexport function useEvalReadonlyHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n definition: ControlDefinition,\n): EvalExpressionHook<boolean> {\n const dynamicReadonly = useEvalDynamicBoolHook(\n definition,\n DynamicPropertyType.Readonly,\n useEvalExpressionHook,\n );\n return makeDynamicPropertyHook(\n dynamicReadonly,\n (ctx, { definition }) =>\n useCalculatedControl(() => isControlReadonly(definition)),\n { definition },\n );\n}\n\nexport function useEvalStyleHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n property: DynamicPropertyType,\n definition: ControlDefinition,\n): EvalExpressionHook<React.CSSProperties> {\n const dynamicStyle = useEvalDynamicHook(\n definition,\n property,\n useEvalExpressionHook,\n );\n return makeDynamicPropertyHook(\n dynamicStyle,\n () => useControl(undefined),\n undefined,\n );\n}\n\nexport function useEvalAllowedOptionsHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n definition: ControlDefinition,\n): EvalExpressionHook<any[]> {\n const dynamicAllowed = useEvalDynamicHook(\n definition,\n DynamicPropertyType.AllowedOptions,\n useEvalExpressionHook,\n );\n return makeDynamicPropertyHook(\n dynamicAllowed,\n () => useControl([]),\n undefined,\n );\n}\n\nexport function useEvalDisabledHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n definition: ControlDefinition,\n): EvalExpressionHook<boolean> {\n const dynamicDisabled = useEvalDynamicBoolHook(\n definition,\n DynamicPropertyType.Disabled,\n useEvalExpressionHook,\n );\n return makeDynamicPropertyHook(\n dynamicDisabled,\n (ctx) =>\n useComputed(() => {\n const dataControl = ctx.dataNode?.control;\n const setToNull = dataControl?.meta[\"nullControl\"]?.value === false;\n return setToNull || isControlDisabled(definition);\n }),\n undefined,\n );\n}\n\nexport function useEvalDisplayHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n definition: ControlDefinition,\n): DynamicHookGenerator<\n Control<string | undefined> | undefined,\n ControlDataContext\n> {\n return useEvalDynamicHook(\n definition,\n DynamicPropertyType.Display,\n useEvalExpressionHook,\n );\n}\nexport function useEvalDefaultValueHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n definition: ControlDefinition,\n): EvalExpressionHook {\n const dynamicValue = useEvalDynamicHook(\n definition,\n DynamicPropertyType.DefaultValue,\n useEvalExpressionHook,\n );\n return makeDynamicPropertyHook(\n dynamicValue,\n (ctx, { definition }) => {\n return useComputed(calcDefault);\n function calcDefault() {\n const [required, dcv] = isDataControlDefinition(definition)\n ? [definition.required, definition.defaultValue]\n : [false, undefined];\n const field = ctx.dataNode?.schema.field;\n return (\n dcv ??\n (field\n ? ctx.dataNode!.elementIndex != null\n ? elementValueForField(field)\n : defaultValueForField(field, required, true)\n : undefined)\n );\n }\n },\n { definition },\n );\n}\n\nfunction useDataExpression(\n fvExpr: DataExpression,\n node: SchemaDataNode,\n coerce: (v: any) => any = (x) => x,\n) {\n const otherField = schemaDataForFieldRef(fvExpr.field, node);\n return useCalculatedControl(() => coerce(otherField.control?.value));\n}\n\nfunction useDataMatchExpression(\n fvExpr: DataMatchExpression,\n node: SchemaDataNode,\n coerce: (v: any) => any = (x) => x,\n) {\n const otherField = schemaDataForFieldRef(fvExpr.field, node);\n return useCalculatedControl(() => {\n const fv = otherField.control?.value;\n return coerce(\n Array.isArray(fv) ? fv.includes(fvExpr.value) : fv === fvExpr.value,\n );\n });\n}\n\nfunction useNotEmptyExpression(\n fvExpr: NotEmptyExpression,\n fields: SchemaField[],\n schemaInterface: SchemaInterface,\n data: DataContext,\n coerce: (v: any) => any = (x) => x,\n) {\n const refField = findFieldPath(fields, fvExpr.field);\n const otherField = refField ? lookupChildControl(data, refField) : undefined;\n return useCalculatedControl(() => {\n const fv = otherField?.value;\n const field = refField?.at(-1);\n return coerce(field && !schemaInterface.isEmptyValue(field, fv));\n });\n}\n\nexport function defaultEvalHooks(\n expr: EntityExpression,\n context: ControlDataContext,\n coerce: (v: any) => any,\n) {\n switch (expr.type) {\n case ExpressionType.Jsonata:\n return useJsonataExpression(\n (expr as JsonataExpression).expression,\n context,\n undefined,\n coerce,\n );\n case ExpressionType.UUID:\n return useUuidExpression(coerce);\n case ExpressionType.Data:\n return useDataExpression(\n expr as DataExpression,\n context.parentNode,\n coerce,\n );\n case ExpressionType.DataMatch:\n return useDataMatchExpression(\n expr as DataMatchExpression,\n context.parentNode,\n coerce,\n );\n case ExpressionType.NotEmpty:\n return useNotEmptyExpression(\n expr as NotEmptyExpression,\n context.fields,\n context.schemaInterface,\n context,\n coerce,\n );\n default:\n return useControl(undefined);\n }\n}\n\nexport const defaultUseEvalExpressionHook =\n makeEvalExpressionHook(defaultEvalHooks);\n\nexport function makeEvalExpressionHook(\n f: (\n expr: EntityExpression,\n context: ControlDataContext,\n coerce: (v: any) => any,\n ) => Control<any>,\n): UseEvalExpressionHook {\n return (expr, coerce) => ({\n deps: expr != null ? expr.type : \"!\",\n state: expr,\n runHook: (ctx: ControlDataContext, state: EntityExpression | undefined) => {\n return state ? f(state, ctx, coerce) : undefined;\n },\n });\n}\n\nexport function useEvalDynamicBoolHook(\n definition: ControlDefinition,\n type: DynamicPropertyType,\n useEvalExpressionHook: UseEvalExpressionHook,\n): DynamicHookGenerator<Control<any> | undefined, ControlDataContext> {\n return useEvalDynamicHook(definition, type, useEvalExpressionHook, (x) =>\n Boolean(x),\n );\n}\n\nexport function useEvalDynamicHook(\n definition: ControlDefinition,\n type: DynamicPropertyType,\n useEvalExpressionHook: UseEvalExpressionHook,\n coerce: (v: any) => any = (x) => x,\n): DynamicHookGenerator<Control<any> | undefined, ControlDataContext> {\n const expression = definition.dynamic?.find((x) => x.type === type);\n return useEvalExpressionHook(expression?.expr, coerce);\n}\n\nexport function matchesType(context: SchemaDataNode): boolean {\n const types = context.schema.field.onlyForTypes;\n if (types == null || types.length === 0) return true;\n const parent = context.parent!;\n const typeNode = parent.schema\n .getChildNodes()\n .find((x) => x.field.isTypeField);\n if (typeNode == null) return true;\n const typeField = parent.getChild(typeNode).control as Control<string>;\n return typeField && types.includes(typeField.value);\n}\n\nexport function hideDisplayOnly(\n context: SchemaDataNode,\n schemaInterface: SchemaInterface,\n definition: ControlDefinition,\n) {\n const displayOptions = getDisplayOnlyOptions(definition);\n return (\n displayOptions &&\n !displayOptions.emptyText &&\n schemaInterface.isEmptyValue(context.schema.field, context.control?.value)\n );\n}\n\nexport function useUuidExpression(coerce: (v: any) => any = (x) => x) {\n return useControl(() => coerce(uuidv4()));\n}\n\nexport function useJsonataExpression(\n jExpr: string,\n dataContext: DataContext,\n bindings?: () => Record<string, any>,\n coerce: (v: any) => any = (x) => x,\n): Control<any> {\n const pathString = jsonPathString(dataContext.path, (x) => `#$i[${x}]`);\n const fullExpr = pathString ? pathString + \".(\" + jExpr + \")\" : jExpr;\n const compiledExpr = useMemo(() => {\n try {\n return jsonata(fullExpr);\n } catch (e) {\n console.error(e);\n return jsonata(\"null\");\n }\n }, [fullExpr]);\n const control = useControl();\n const listenerRef = useRef<() => void>();\n const updateRef = useRef(0);\n const [ref] = useRefState(() =>\n makeChangeTracker(() => {\n const l = listenerRef.current;\n if (l) {\n listenerRef.current = undefined;\n addAfterChangesCallback(() => {\n listenerRef.current = l;\n l();\n });\n }\n }),\n );\n useEffect(() => {\n listenerRef.current = apply;\n apply();\n async function apply() {\n const [collect, updateSubscriptions] = ref.current;\n try {\n updateRef.current++;\n const bindingData = bindings\n ? collectChanges(collect, bindings)\n : undefined;\n control.value = coerce(\n await compiledExpr.evaluate(\n trackedValue(dataContext.data, collect),\n bindingData,\n ),\n );\n } finally {\n if (!--updateRef.current) updateSubscriptions();\n }\n }\n return () => ref.current[1](true);\n }, [compiledExpr]);\n return control;\n}\n\nexport function useEvalActionHook(\n useExpr: UseEvalExpressionHook,\n definition: ControlDefinition,\n): EvalExpressionHook<string | null> {\n const dynamicValue = useEvalDynamicHook(\n definition,\n DynamicPropertyType.ActionData,\n useExpr,\n );\n return makeDynamicPropertyHook(\n dynamicValue,\n () => useControl(null),\n undefined,\n );\n}\n\nexport function useEvalLabelText(\n useExpr: UseEvalExpressionHook,\n definition: ControlDefinition,\n): EvalExpressionHook<string | null> {\n const dynamicValue = useEvalDynamicHook(\n definition,\n DynamicPropertyType.Label,\n useExpr,\n );\n return makeDynamicPropertyHook(\n dynamicValue,\n () => useControl(null),\n undefined,\n );\n}\n\nfunction makeDynamicPropertyHook<A, S = undefined>(\n dynamicValue: DynamicHookGenerator<\n Control<any> | undefined,\n ControlDataContext\n >,\n makeDefault: (ctx: ControlDataContext, s: S) => Control<A | undefined>,\n state: S,\n deps?: HookDep,\n): EvalExpressionHook<A> {\n return {\n deps:\n deps === undefined\n ? dynamicValue.deps\n : [deps, dynamicValue.deps].map(toDepString).join(),\n runHook: (ctx, s) => {\n return dynamicValue.runHook(ctx, s[0]) ?? makeDefault(ctx, s[1]);\n },\n state: [dynamicValue.state, state],\n };\n}\n","import {\n ControlDefinition,\n DataControlDefinition,\n DateComparison,\n DateValidator,\n isDataControlDefinition,\n JsonataValidator,\n LengthValidator,\n SchemaField,\n SchemaValidator,\n ValidationMessageType,\n ValidatorType,\n} from \"./types\";\nimport {\n Control,\n useValidator,\n useValueChangeEffect,\n} from \"@react-typed-forms/core\";\nimport { useCallback } from \"react\";\nimport { ControlDataContext, makeHookDepString, useUpdatedRef } from \"./util\";\nimport { useJsonataExpression } from \"./hooks\";\n\ninterface ValidationHookContext {\n hiddenControl: Control<boolean | null | undefined>;\n dataContext: ControlDataContext;\n control: Control<any>;\n}\n\nexport interface ValidationContext extends ValidationHookContext {\n definition: DataControlDefinition;\n field: SchemaField;\n index: number;\n}\n\nexport function useMakeValidationHook(\n definition: ControlDefinition,\n useValidatorFor: (\n validator: SchemaValidator,\n ctx: ValidationContext,\n ) => void = useDefaultValidator,\n): (ctx: ValidationHookContext) => void {\n const dd = isDataControlDefinition(definition) ? definition : undefined;\n const refData = useUpdatedRef({ dd, useValidatorFor });\n const depString = makeHookDepString(dd?.validators ?? [], (x) => x.type);\n return useCallback(\n (ctx) => {\n const field = ctx.dataContext.dataNode?.schema.field;\n const { dd } = refData.current;\n if (!dd || !field) return;\n const {\n control,\n hiddenControl,\n dataContext: { schemaInterface },\n } = ctx;\n\n useValueChangeEffect(control, () => control.setError(\"default\", \"\"));\n useValidator(\n control,\n (v) =>\n !hiddenControl.value &&\n dd.required &&\n schemaInterface.isEmptyValue(field, v)\n ? schemaInterface.validationMessageText(\n field,\n ValidationMessageType.NotEmpty,\n false,\n true,\n )\n : null,\n \"required\",\n undefined,\n [dd.required],\n );\n dd.validators?.forEach((v, i) =>\n useValidatorFor(v, { ...ctx, index: i, field, definition: dd }),\n );\n },\n [!!dd, depString, useValidatorFor],\n );\n}\n\nfunction useDefaultValidator(\n validator: SchemaValidator,\n ctx: ValidationContext,\n) {\n switch (validator.type) {\n case ValidatorType.Length:\n useLengthValidator(validator as LengthValidator, ctx);\n break;\n case ValidatorType.Jsonata:\n useJsonataValidator(validator as JsonataValidator, ctx);\n break;\n case ValidatorType.Date:\n useDateValidator(validator as DateValidator, ctx);\n break;\n }\n}\n\nexport function useJsonataValidator(\n validator: JsonataValidator,\n ctx: ValidationContext,\n) {\n const errorMsg = useJsonataExpression(\n validator.expression,\n ctx.dataContext,\n undefined,\n (v) => (v == null ? null : typeof v === \"string\" ? v : JSON.stringify(v)),\n );\n useValidator(\n ctx.control,\n () => (!ctx.hiddenControl.value ? errorMsg.value : null),\n \"jsonata\" + ctx.index,\n );\n}\n\nexport function useLengthValidator(\n lv: LengthValidator,\n ctx: ValidationContext,\n) {\n const {\n control,\n dataContext: { schemaInterface },\n hiddenControl,\n field,\n } = ctx;\n useValidator(\n control,\n (v) => {\n const len = schemaInterface.controlLength(field, control);\n const hidden = hiddenControl.value;\n if (hidden) {\n return undefined;\n }\n if (lv.min != null && len < lv.min) {\n if (field?.collection) {\n control.setValue((v) =>\n Array.isArray(v)\n ? v.concat(Array.from({ length: lv.min! - v.length }))\n : Array.from({ length: lv.min! }),\n );\n } else {\n return schemaInterface.validationMessageText(\n field,\n ValidationMessageType.MinLength,\n len,\n lv.min,\n );\n }\n } else if (lv.max != null && len > lv.max) {\n return schemaInterface.validationMessageText(\n field,\n ValidationMessageType.MaxLength,\n len,\n lv.max,\n );\n }\n return undefined;\n },\n \"length\" + ctx.index,\n );\n}\n\nexport function useDateValidator(dv: DateValidator, ctx: ValidationContext) {\n const {\n control,\n field,\n index,\n dataContext: { schemaInterface },\n } = ctx;\n let comparisonDate: number;\n if (dv.fixedDate) {\n comparisonDate = schemaInterface.parseToMillis(field, dv.fixedDate);\n } else {\n const nowDate = new Date();\n comparisonDate = Date.UTC(\n nowDate.getFullYear(),\n nowDate.getMonth(),\n nowDate.getDate(),\n );\n if (dv.daysFromCurrent) {\n comparisonDate += dv.daysFromCurrent * 86400000;\n }\n }\n useValidator(\n control,\n (v) => {\n if (v) {\n const selDate = schemaInterface.parseToMillis(field, v);\n const notAfter = dv.comparison === DateComparison.NotAfter;\n if (notAfter ? selDate > comparisonDate : selDate < comparisonDate) {\n return schemaInterface.validationMessageText(\n field,\n notAfter\n ? ValidationMessageType.NotAfterDate\n : ValidationMessageType.NotBeforeDate,\n selDate,\n comparisonDate,\n );\n }\n }\n return null;\n },\n \"date\" + index,\n );\n}\n","export function cc(n: string | null | undefined): string | undefined {\n return n ? n : undefined;\n}\n","import {\n FieldOption,\n FieldType,\n SchemaField,\n SchemaInterface,\n ValidationMessageType,\n} from \"./types\";\nimport { Control } from \"@react-typed-forms/core\";\n\nexport class DefaultSchemaInterface implements SchemaInterface {\n constructor(protected boolStrings: [string, string] = [\"No\", \"Yes\"]) {}\n\n parseToMillis(field: SchemaField, v: string): number {\n return Date.parse(v);\n }\n validationMessageText(\n field: SchemaField,\n messageType: ValidationMessageType,\n actual: any,\n expected: any,\n ): string {\n switch (messageType) {\n case ValidationMessageType.NotEmpty:\n return \"Please enter a value\";\n case ValidationMessageType.MinLength:\n return \"Length must be at least \" + expected;\n case ValidationMessageType.MaxLength:\n return \"Length must be less than \" + expected;\n case ValidationMessageType.NotBeforeDate:\n return `Date must not be before ${new Date(expected).toDateString()}`;\n case ValidationMessageType.NotAfterDate:\n return `Date must not be after ${new Date(expected).toDateString()}`;\n default:\n return \"Unknown error\";\n }\n }\n\n getOptions({ options }: SchemaField): FieldOption[] | null | undefined {\n return options && options.length > 0 ? options : null;\n }\n\n getFilterOptions(field: SchemaField): FieldOption[] | undefined | null {\n return this.getOptions(field);\n }\n\n isEmptyValue(f: SchemaField, value: any): boolean {\n if (f.collection)\n return Array.isArray(value) ? value.length === 0 : value == null;\n switch (f.type) {\n case FieldType.String:\n case FieldType.DateTime:\n case FieldType.Date:\n case FieldType.Time:\n return !value;\n default:\n return value == null;\n }\n }\n textValue(\n field: SchemaField,\n value: any,\n element?: boolean | undefined,\n ): string | undefined {\n switch (field.type) {\n case FieldType.Date:\n return value ? new Date(value).toLocaleDateString() : undefined;\n case FieldType.DateTime:\n return value ? new Date(value).toLocaleString() : undefined;\n case FieldType.Time:\n return value\n ? new Date(\"1970-01-01T\" + value).toLocaleTimeString()\n : undefined;\n case FieldType.Bool:\n return this.boolStrings[value ? 1 : 0];\n default:\n return value != null ? value.toString() : undefined;\n }\n }\n controlLength(f: SchemaField, control: Control<any>): number {\n return f.collection\n ? (control.elements?.length ?? 0)\n : this.valueLength(f, control.value);\n }\n valueLength(field: SchemaField, value: any): number {\n return (value && value?.length) ?? 0;\n }\n}\n\nexport const defaultSchemaInterface: SchemaInterface =\n new DefaultSchemaInterface();\n","import React, {\n FC,\n Fragment,\n Key,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n} from \"react\";\nimport {\n addElement,\n Control,\n newControl,\n removeElement,\n trackedValue,\n useCalculatedControl,\n useComponentTracking,\n useControl,\n useControlEffect,\n} from \"@react-typed-forms/core\";\nimport {\n AdornmentPlacement,\n ArrayRenderOptions,\n ControlAdornment,\n ControlDefinition,\n CustomDisplay,\n DataControlDefinition,\n DataRenderType,\n DisplayData,\n DisplayDataType,\n DynamicPropertyType,\n FieldOption,\n GroupRenderOptions,\n isActionControlsDefinition,\n isCompoundField,\n isDataControlDefinition,\n isDisplayControlsDefinition,\n isGroupControlsDefinition,\n LengthValidator,\n RenderOptions,\n SchemaField,\n SchemaInterface,\n SchemaValidator,\n ValidatorType,\n} from \"./types\";\nimport {\n applyLengthRestrictions,\n ControlDataContext,\n ControlDataContextImpl,\n elementValueForField,\n fieldDisplayName,\n findFieldPath,\n JsonPath,\n useDynamicHooks,\n useUpdatedRef,\n} from \"./util\";\nimport { dataControl } from \"./controlBuilder\";\nimport {\n defaultUseEvalExpressionHook,\n EvalExpressionHook,\n useEvalActionHook,\n useEvalAllowedOptionsHook,\n useEvalDefaultValueHook,\n useEvalDisabledHook,\n useEvalDisplayHook,\n UseEvalExpressionHook,\n useEvalLabelText,\n useEvalReadonlyHook,\n useEvalStyleHook,\n useEvalVisibilityHook,\n} from \"./hooks\";\nimport { useMakeValidationHook, ValidationContext } from \"./validators\";\nimport { cc } from \"./internal\";\nimport { defaultSchemaInterface } from \"./schemaInterface\";\nimport {\n createSchemaLookup,\n fieldPathForDefinition,\n makeSchemaDataNode,\n schemaDataForFieldPath,\n SchemaDataNode,\n} from \"./treeNodes\";\n\nexport interface FormRenderer {\n renderData: (\n props: DataRendererProps,\n ) => (layout: ControlLayoutProps) => ControlLayoutProps;\n renderGroup: (\n props: GroupRendererProps,\n ) => (layout: ControlLayoutProps) => ControlLayoutProps;\n renderDisplay: (props: DisplayRendererProps) => ReactNode;\n renderAction: (props: ActionRendererProps) => ReactNode;\n renderArray: (props: ArrayRendererProps) => ReactNode;\n renderAdornment: (props: AdornmentProps) => AdornmentRenderer;\n renderLabel: (\n props: LabelRendererProps,\n labelStart: ReactNode,\n labelEnd: ReactNode,\n ) => ReactNode;\n renderLayout: (props: ControlLayoutProps) => RenderedControl;\n renderVisibility: (props: VisibilityRendererProps) => ReactNode;\n renderLabelText: (props: ReactNode) => ReactNode;\n}\n\nexport interface AdornmentProps {\n adornment: ControlAdornment;\n dataContext: ControlDataContext;\n useExpr?: UseEvalExpressionHook;\n designMode?: boolean;\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 renderElement: (elemIndex: number) => ReactNode;\n arrayControl: Control<any[] | undefined | null>;\n className?: string;\n style?: React.CSSProperties;\n min?: number | null;\n max?: number | null;\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}\n\nexport interface RenderedControl {\n children: ReactNode;\n className?: string;\n style?: React.CSSProperties;\n divRef?: (cb: HTMLElement | null) => void;\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}\n\nexport enum LabelType {\n Control,\n Group,\n Text,\n}\nexport interface LabelRendererProps {\n type: LabelType;\n hide?: boolean | null;\n label: ReactNode;\n required?: boolean | null;\n forId?: string;\n className?: string;\n}\nexport interface DisplayRendererProps {\n data: DisplayData;\n display?: Control<string | undefined>;\n dataContext: ControlDataContext;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport type ChildVisibilityFunc = (\n child: ControlDefinition,\n parentNode?: SchemaDataNode,\n) => EvalExpressionHook<boolean>;\nexport interface ParentRendererProps {\n childDefinitions: ControlDefinition[];\n renderChild: ChildRenderer;\n className?: string;\n style?: React.CSSProperties;\n dataContext: ControlDataContext;\n useChildVisibility: ChildVisibilityFunc;\n useEvalExpression: UseEvalExpressionHook;\n designMode?: boolean;\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 elementIndex?: number;\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}\n\nexport interface ActionRendererProps {\n actionId: string;\n actionText: string;\n actionData?: any;\n onClick: () => void;\n className?: string | null;\n style?: React.CSSProperties;\n}\n\nexport interface ControlRenderProps {\n control: Control<any>;\n parentPath?: JsonPath[];\n}\n\nexport interface FormContextOptions {\n readonly?: boolean | null;\n hidden?: boolean | null;\n disabled?: boolean | null;\n}\n\nexport interface DataControlProps {\n definition: DataControlDefinition;\n dataContext: ControlDataContext;\n control: Control<any>;\n formOptions: FormContextOptions;\n style?: React.CSSProperties | undefined;\n renderChild: ChildRenderer;\n elementIndex?: number;\n allowedOptions?: Control<any[] | undefined>;\n useChildVisibility: ChildVisibilityFunc;\n useEvalExpression: UseEvalExpressionHook;\n schemaInterface?: SchemaInterface;\n designMode?: boolean;\n}\n\nexport type CreateDataProps = (\n controlProps: DataControlProps,\n) => DataRendererProps;\n\nexport interface ControlRenderOptions extends FormContextOptions {\n useDataHook?: (c: ControlDefinition) => CreateDataProps;\n actionOnClick?: (actionId: string, actionData: any) => () => void;\n customDisplay?: (\n customId: string,\n displayProps: DisplayRendererProps,\n ) => ReactNode;\n useValidationHook?: (\n validator: SchemaValidator,\n ctx: ValidationContext,\n ) => void;\n useEvalExpressionHook?: UseEvalExpressionHook;\n clearHidden?: boolean;\n schemaInterface?: SchemaInterface;\n elementIndex?: number;\n}\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}\nexport function useControlRendererComponent(\n definition: ControlDefinition,\n renderer: FormRenderer,\n options: ControlRenderOptions = {},\n parentDataNode: SchemaDataNode,\n): FC<{}> {\n const dataProps = options.useDataHook?.(definition) ?? defaultDataProps;\n const elementIndex = options.elementIndex;\n const schemaInterface = options.schemaInterface ?? defaultSchemaInterface;\n const useExpr = options.useEvalExpressionHook ?? defaultUseEvalExpressionHook;\n\n let dataNode: SchemaDataNode | undefined;\n if (elementIndex != null) {\n dataNode = parentDataNode.getChildElement(elementIndex);\n } else {\n const fieldNamePath = fieldPathForDefinition(definition);\n dataNode = fieldNamePath\n ? schemaDataForFieldPath(fieldNamePath, parentDataNode)\n : undefined;\n }\n const useValidation = useMakeValidationHook(\n definition,\n options.useValidationHook,\n );\n const dynamicHooks = useDynamicHooks({\n defaultValueControl: useEvalDefaultValueHook(useExpr, definition),\n visibleControl: useEvalVisibilityHook(useExpr, definition),\n readonlyControl: useEvalReadonlyHook(useExpr, definition),\n disabledControl: useEvalDisabledHook(useExpr, definition),\n allowedOptions: useEvalAllowedOptionsHook(useExpr, definition),\n labelText: useEvalLabelText(useExpr, definition),\n actionData: useEvalActionHook(useExpr, definition),\n customStyle: useEvalStyleHook(\n useExpr,\n DynamicPropertyType.Style,\n definition,\n ),\n layoutStyle: useEvalStyleHook(\n useExpr,\n DynamicPropertyType.LayoutStyle,\n definition,\n ),\n displayControl: useEvalDisplayHook(useExpr, definition),\n });\n\n const r = useUpdatedRef({\n options,\n definition,\n elementIndex,\n parentDataNode,\n dataNode,\n });\n\n const Component = useCallback(() => {\n const stopTracking = useComponentTracking();\n\n try {\n const {\n definition: c,\n options,\n elementIndex,\n parentDataNode: pdn,\n dataNode: dn,\n } = r.current;\n const dataContext = new ControlDataContextImpl(schemaInterface, dn, pdn);\n const {\n readonlyControl,\n disabledControl,\n visibleControl,\n displayControl,\n layoutStyle,\n labelText,\n customStyle,\n allowedOptions,\n defaultValueControl,\n actionData,\n } = dynamicHooks(dataContext);\n\n const visible = visibleControl.current.value;\n const visibility = useControl<Visibility | undefined>(() =>\n visible != null\n ? {\n visible,\n showing: visible,\n }\n : undefined,\n );\n useControlEffect(\n () => visibleControl.value,\n (visible) => {\n if (visible != null)\n visibility.setValue((ex) => ({\n visible,\n showing: ex ? ex.showing : visible,\n }));\n },\n );\n\n const parentControl = parentDataNode.control!;\n const control = dataNode?.control;\n useControlEffect(\n () => [\n visibility.value,\n defaultValueControl.value,\n control?.isNull,\n isDataControlDefinition(definition) && definition.dontClearHidden,\n isDataControlDefinition(definition) &&\n definition.renderOptions?.type == DataRenderType.NullToggle,\n parentControl.isNull,\n options.hidden,\n readonlyControl.value,\n ],\n ([vc, dv, _, dontClear, dontDefault, parentNull, hidden, ro]) => {\n if (!ro) {\n if (control) {\n if (vc && vc.visible === vc.showing) {\n if (hidden || !vc.visible) {\n control.setValue((x) =>\n options.clearHidden && !dontClear\n ? undefined\n : x == null && dontClear && !dontDefault\n ? dv\n : x,\n );\n } else if (!dontDefault)\n control.setValue((x) => (x != null ? x : dv));\n }\n } else if (parentNull) {\n parentControl.setValue((x) => x ?? {});\n }\n }\n },\n true,\n );\n const myOptionsControl = useCalculatedControl<FormContextOptions>(() => ({\n hidden: options.hidden || !visibility.fields?.showing.value,\n readonly: options.readonly || readonlyControl.value,\n disabled: options.disabled || disabledControl.value,\n }));\n const myOptions = trackedValue(myOptionsControl);\n useValidation({\n control: control ?? newControl(null),\n hiddenControl: myOptionsControl.fields.hidden,\n dataContext,\n });\n const childOptions: ControlRenderOptions = {\n ...options,\n ...myOptions,\n elementIndex: undefined,\n };\n\n useEffect(() => {\n if (\n control &&\n typeof myOptions.disabled === \"boolean\" &&\n control.disabled != myOptions.disabled\n )\n control.disabled = myOptions.disabled;\n }, [control, myOptions.disabled]);\n if (parentControl.isNull) return <></>;\n\n const adornments =\n definition.adornments?.map((x) =>\n renderer.renderAdornment({\n adornment: x,\n dataContext,\n useExpr,\n }),\n ) ?? [];\n const labelAndChildren = renderControlLayout({\n definition: c,\n renderer,\n renderChild: (k, child, options) => {\n if (control && control.isNull) return <Fragment key={k} />;\n const dContext =\n options?.parentDataNode ??\n dataContext.dataNode ??\n dataContext.parentNode;\n return (\n <NewControlRenderer\n key={k}\n definition={child}\n renderer={renderer}\n parentDataNode={dContext}\n options={\n options\n ? { ...childOptions, elementIndex: options?.elementIndex }\n : childOptions\n }\n />\n );\n },\n createDataProps: dataProps,\n formOptions: myOptions,\n dataContext,\n control: displayControl ?? control,\n elementIndex,\n schemaInterface,\n labelText,\n displayControl,\n style: customStyle.value,\n allowedOptions,\n customDisplay: options.customDisplay,\n actionDataControl: actionData,\n actionOnClick: options.actionOnClick,\n useEvalExpression: useExpr,\n useChildVisibility: (childDef, parentNode) => {\n const fieldNamePath = fieldPathForDefinition(childDef);\n const overrideNode = fieldNamePath\n ? schemaDataForFieldPath(\n fieldNamePath,\n parentNode ?? dataNode ?? parentDataNode,\n )\n : undefined;\n return useEvalVisibilityHook(useExpr, childDef, overrideNode);\n },\n });\n const renderedControl = renderer.renderLayout({\n ...labelAndChildren,\n adornments,\n className: c.layoutClass,\n style: layoutStyle.value,\n });\n return renderer.renderVisibility({ visibility, ...renderedControl });\n } finally {\n stopTracking();\n }\n }, [r, dataProps, useValidation, renderer, schemaInterface, dynamicHooks]);\n (Component as any).displayName = \"RenderControl\";\n return Component;\n}\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 = makeSchemaDataNode(\n createSchemaLookup({ \"\": fields }).getSchema(\"\")!,\n control,\n );\n const Render = useControlRendererComponent(\n definition,\n renderer,\n options,\n schemaDataNode,\n );\n return <Render />;\n}\n\nexport function NewControlRenderer({\n definition,\n renderer,\n options,\n parentDataNode,\n}: {\n definition: ControlDefinition;\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\nexport function defaultDataProps({\n definition,\n control,\n formOptions,\n style,\n allowedOptions,\n schemaInterface = defaultSchemaInterface,\n ...props\n}: DataControlProps): DataRendererProps {\n const dataNode = props.dataContext.dataNode!;\n const field = dataNode.schema.field;\n const className = cc(definition.styleClass);\n const required = !!definition.required;\n const fieldOptions = schemaInterface.getOptions(field);\n const _allowed = allowedOptions?.value ?? [];\n const allowed = Array.isArray(_allowed) ? _allowed : [_allowed];\n return {\n dataNode,\n definition,\n childDefinitions: definition.children ?? [],\n control,\n field,\n id: \"c\" + control.uniqueId,\n options:\n allowed.length > 0\n ? allowed.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 : fieldOptions,\n readonly: !!formOptions.readonly,\n renderOptions: definition.renderOptions ?? { type: \"Standard\" },\n required,\n hidden: !!formOptions.hidden,\n className,\n style,\n ...props,\n };\n}\n\nexport interface ChildRendererOptions {\n elementIndex?: number;\n parentDataNode?: SchemaDataNode;\n}\n\nexport type ChildRenderer = (\n k: Key,\n child: ControlDefinition,\n options?: ChildRendererOptions,\n) => ReactNode;\n\nexport interface RenderControlProps {\n definition: ControlDefinition;\n renderer: FormRenderer;\n renderChild: ChildRenderer;\n createDataProps: CreateDataProps;\n formOptions: FormContextOptions;\n dataContext: ControlDataContext;\n control?: Control<any>;\n labelText?: Control<string | null | undefined>;\n elementIndex?: number;\n displayControl?: Control<string | undefined>;\n style?: React.CSSProperties;\n allowedOptions?: Control<any[] | undefined>;\n actionDataControl?: Control<any | undefined | null>;\n useChildVisibility: ChildVisibilityFunc;\n useEvalExpression: UseEvalExpressionHook;\n actionOnClick?: (actionId: string, actionData: any) => () => void;\n schemaInterface?: SchemaInterface;\n designMode?: boolean;\n customDisplay?: (\n customId: string,\n displayProps: DisplayRendererProps,\n ) => ReactNode;\n}\nexport function renderControlLayout(\n props: RenderControlProps,\n): ControlLayoutProps {\n const {\n definition: c,\n renderer,\n renderChild,\n control,\n dataContext,\n createDataProps: dataProps,\n displayControl,\n style,\n labelText,\n useChildVisibility,\n designMode,\n customDisplay,\n useEvalExpression,\n } = props;\n\n if (isDataControlDefinition(c)) {\n return renderData(c);\n }\n if (isGroupControlsDefinition(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 return {\n processLayout: renderer.renderGroup({\n childDefinitions: c.children ?? [],\n definition: c,\n renderChild,\n useEvalExpression,\n dataContext,\n renderOptions: c.groupOptions ?? { type: \"Standard\" },\n className: cc(c.styleClass),\n useChildVisibility,\n style,\n designMode,\n }),\n label: {\n label: labelText?.value ?? c.title,\n className: cc(c.labelClass),\n type: LabelType.Group,\n hide: c.groupOptions?.hideTitle,\n },\n };\n }\n if (isActionControlsDefinition(c)) {\n const actionData = props.actionDataControl?.value ?? c.actionData;\n return {\n children: renderer.renderAction({\n actionText: labelText?.value ?? c.title ?? c.actionId,\n actionId: c.actionId,\n actionData,\n onClick: props.actionOnClick?.(c.actionId, actionData) ?? (() => {}),\n className: cc(c.styleClass),\n style,\n }),\n };\n }\n if (isDisplayControlsDefinition(c)) {\n const data = c.displayData ?? {};\n const displayProps = {\n data,\n className: cc(c.styleClass),\n style,\n display: displayControl,\n dataContext,\n };\n if (data.type === DisplayDataType.Custom && customDisplay) {\n return {\n children: customDisplay((data as CustomDisplay).customId, displayProps),\n };\n }\n return {\n children: renderer.renderDisplay(displayProps),\n };\n }\n return {};\n\n function renderData(c: DataControlDefinition) {\n if (!control) return { children: \"No control for: \" + c.field };\n const rendererProps = dataProps(\n props as RenderControlProps & {\n definition: DataControlDefinition;\n control: Control<any>;\n },\n );\n\n const label = !c.hideTitle\n ? controlTitle(\n labelText?.value ?? c.title,\n props.dataContext.dataNode!.schema.field,\n )\n : undefined;\n return {\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,\n hide: c.hideTitle,\n className: cc(c.labelClass),\n },\n errorControl: control,\n };\n }\n}\n\ntype MarkupKeys = keyof Omit<\n RenderedLayout,\n \"errorControl\" | \"style\" | \"className\" | \"wrapLayout\"\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 { className, children, style, errorControl, label, adornments } =\n props.processLayout?.(props) ?? props;\n const layout: RenderedLayout = {\n children,\n errorControl,\n style,\n className: cc(className),\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}\nexport function createArrayActions(\n control: Control<any[]>,\n field: SchemaField,\n options?: Pick<\n ArrayRenderOptions,\n | \"addText\"\n | \"removeText\"\n | \"noAdd\"\n | \"noRemove\"\n | \"addActionId\"\n | \"removeActionId\"\n >,\n): Pick<ArrayRendererProps, \"addAction\" | \"removeAction\" | \"arrayControl\"> {\n const noun = field.displayName ?? field.field;\n const { addText, noAdd, removeText, noRemove, removeActionId, addActionId } =\n options ?? {};\n return {\n arrayControl: control,\n addAction: !noAdd\n ? {\n actionId: addActionId ? addActionId : \"add\",\n actionText: addText ? addText : \"Add \" + noun,\n onClick: () => addElement(control, elementValueForField(field)),\n }\n : undefined,\n removeAction: !noRemove\n ? (i: number) => ({\n actionId: removeActionId ? removeActionId : \"remove\",\n actionText: removeText ? removeText : \"Remove\",\n onClick: () => removeElement(control, i),\n })\n : undefined,\n };\n}\n\nexport function applyArrayLengthRestrictions(\n {\n arrayControl,\n min,\n max,\n addAction: aa,\n removeAction: ra,\n required,\n }: Pick<\n ArrayRendererProps,\n \"addAction\" | \"removeAction\" | \"arrayControl\" | \"min\" | \"max\" | \"required\"\n >,\n disable?: boolean,\n): Pick<ArrayRendererProps, \"addAction\" | \"removeAction\"> & {\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 };\n}\n","import { CSSProperties, ReactElement, ReactNode } from \"react\";\nimport {\n ActionRendererProps,\n AdornmentProps,\n AdornmentRenderer,\n ArrayRendererProps,\n ControlLayoutProps,\n DataRendererProps,\n DisplayRendererProps,\n FormRenderer,\n GroupRendererProps,\n LabelRendererProps,\n LabelType,\n RenderedControl,\n VisibilityRendererProps,\n} from \"./controlRender\";\nimport {\n AccordionAdornment,\n ControlAdornment,\n ControlAdornmentType,\n IconAdornment,\n SetFieldAdornment,\n} 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}\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) => 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) => 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 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 React from \"react\";\n\nimport { DefaultRendererOptions } from \"./createDefaultRenderers\";\n\nexport const defaultTailwindTheme = {\n label: {\n groupLabelClass: \"font-bold\",\n requiredElement: <span className=\"text-red-500\"> *</span>,\n },\n array: {\n removableClass: \"grid grid-cols-[1fr_auto] items-center gap-x-2\",\n childClass: \"grow my-2\",\n addActionClass: \"my-2\",\n },\n group: {\n standardClassName: \"flex flex-col gap-4\",\n gridClassName: \"gap-x-2 gap-y-4\",\n flexClassName: \"gap-2\",\n },\n action: {\n className: \"bg-primary-500 rounded-lg p-3 text-white\",\n },\n layout: {\n className: \"flex flex-col\",\n errorClass: \"text-sm text-danger-500\",\n },\n data: {\n displayOnlyClass: \"flex flex-row items-center gap-2\",\n checkOptions: {\n className: \"flex items-center gap-4\",\n entryClass: \"flex gap-1 items-center\",\n },\n selectOptions: { emptyText: \"<select>\" },\n multilineClass: \"border p-2 outline-0 whitespace-pre\",\n },\n adornment: {\n accordion: {\n className: \"flex items-center gap-2 my-2\",\n titleClass: \"cursor-pointer\",\n iconOpenClass: \"fa fa-chevron-up\",\n iconClosedClass: \"fa fa-chevron-down\",\n },\n },\n} satisfies DefaultRendererOptions;\n","import React from \"react\";\nimport { DisplayRendererProps } from \"../controlRender\";\nimport {\n CustomDisplay,\n DisplayDataType,\n HtmlDisplay,\n IconDisplay,\n TextDisplay,\n} from \"../types\";\nimport clsx from \"clsx\";\nimport { getOverrideClass, rendererClass } from \"../util\";\nimport { DisplayRendererRegistration } from \"../renderers\";\n\nexport interface DefaultDisplayRendererOptions {\n textClassName?: string;\n htmlClassName?: string;\n}\n\nexport function createDefaultDisplayRenderer(\n options: DefaultDisplayRendererOptions = {},\n): DisplayRendererRegistration {\n return {\n render: (props) => <DefaultDisplay {...options} {...props} />,\n type: \"display\",\n };\n}\n\nexport function DefaultDisplay({\n data,\n display,\n className,\n style,\n ...options\n}: DefaultDisplayRendererOptions & DisplayRendererProps) {\n switch (data.type) {\n case DisplayDataType.Icon:\n return (\n <i\n style={style}\n className={clsx(\n getOverrideClass(className),\n display ? display.value : (data as IconDisplay).iconClass,\n )}\n />\n );\n case DisplayDataType.Text:\n return (\n <div\n style={style}\n className={rendererClass(className, options.textClassName)}\n >\n {display ? display.value : (data as TextDisplay).text}\n </div>\n );\n case DisplayDataType.Html:\n return (\n <div\n style={style}\n className={rendererClass(className, options.htmlClassName)}\n dangerouslySetInnerHTML={{\n __html: display\n ? (display.value ?? \"\")\n : (data as HtmlDisplay).html,\n }}\n />\n );\n case DisplayDataType.Custom:\n return (\n <div>\n Custom display placeholder: {(data as CustomDisplay).customId}\n </div>\n );\n default:\n return <h1>Unknown display type: {data.type}</h1>;\n }\n}\n","import { RenderedLayout } from \"../controlRender\";\nimport React, { ReactNode } from \"react\";\n\nexport interface DefaultLayoutRendererOptions {\n className?: string;\n errorClass?: string;\n renderError?: (errorText: string | null | undefined) => ReactNode;\n}\n\nexport function DefaultLayout({\n errorClass,\n renderError = (e) => e && <div className={errorClass}>{e}</div>,\n layout: { controlEnd, controlStart, label, children, errorControl },\n}: DefaultLayoutRendererOptions & {\n layout: RenderedLayout;\n}) {\n const ec = errorControl;\n const errorText = ec && ec.touched ? ec.error : undefined;\n return (\n <>\n {label}\n {controlStart}\n {children}\n {renderError(errorText)}\n {controlEnd}\n </>\n );\n}\n","import { VisibilityRendererProps } from \"../controlRender\";\nimport React, { useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { createVisibilityRenderer } from \"../renderers\";\n\nexport function createDefaultVisibilityRenderer() {\n return createVisibilityRenderer((props) => <DefaultVisibility {...props} />);\n}\n\nexport function DefaultVisibility({\n visibility,\n children,\n className,\n style,\n divRef,\n}: VisibilityRendererProps) {\n const v = visibility.value;\n useEffect(() => {\n if (v) {\n visibility.setValue((ex) => ({ visible: v.visible, showing: v.visible }));\n }\n }, [v?.visible]);\n return v?.visible ? (\n <div className={clsx(className)} style={style} ref={divRef}>\n {children}\n </div>\n ) : (\n <></>\n );\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport React, { useMemo, useState } from \"react\";\nimport { rendererClass } from \"../util\";\nimport { FieldOption, FieldType } from \"../types\";\nimport { createDataRenderer } from \"../renderers\";\n\nexport interface SelectRendererOptions {\n className?: string;\n emptyText?: string;\n requiredText?: string;\n}\n\nexport function createSelectRenderer(options: SelectRendererOptions = {}) {\n return createDataRenderer(\n (props, asArray) => (\n <SelectDataRenderer\n className={rendererClass(props.className, options.className)}\n state={props.control}\n id={props.id}\n readonly={props.readonly}\n options={props.options ?? []}\n required={props.required}\n emptyText={options.emptyText}\n requiredText={options.requiredText}\n convert={createSelectConversion(props.field.type)}\n />\n ),\n {\n options: true,\n },\n );\n}\n\ntype SelectConversion = (a: any) => string | number;\n\nexport interface SelectDataRendererProps {\n id?: string;\n className?: string;\n options: FieldOption[];\n emptyText?: string;\n requiredText?: string;\n readonly: boolean;\n required: boolean;\n state: Control<any>;\n convert: SelectConversion;\n}\n\nexport function SelectDataRenderer({\n state,\n options,\n className,\n convert,\n required,\n emptyText = \"N/A\",\n requiredText = \"<please select>\",\n readonly,\n ...props\n}: SelectDataRendererProps) {\n const { value, disabled } = state;\n const [showEmpty] = useState(!required || value == null);\n const optionStringMap = useMemo(\n () => Object.fromEntries(options.map((x) => [convert(x.value), x.value])),\n [options],\n );\n const optionGroups = useMemo(\n () => new Set(options.filter((x) => x.group).map((x) => x.group!)),\n [options],\n );\n return (\n <select\n {...props}\n className={className}\n onChange={(v) => (state.value = optionStringMap[v.target.value])}\n value={convert(value)}\n disabled={disabled || readonly}\n >\n {showEmpty && (\n <option value=\"\">{required ? requiredText : emptyText}</option>\n )}\n {[...optionGroups.keys()].map((x) => (\n <optgroup key={x} label={x}>\n {options.filter((o) => o.group === x).map(renderOption)}\n </optgroup>\n ))}\n {options.filter((x) => !x.group).map(renderOption)}\n </select>\n );\n\n function renderOption(x: FieldOption, i: number) {\n return (\n <option key={i} value={convert(x.value)} disabled={!!x.disabled}>\n {x.name}\n </option>\n );\n }\n}\n\nexport function createSelectConversion(ft: string): SelectConversion {\n switch (ft) {\n case FieldType.String:\n case FieldType.Int:\n case FieldType.Double:\n return (a) => a;\n default:\n return (a) => a?.toString() ?? \"\";\n }\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport { SchemaField, SchemaInterface } from \"../types\";\nimport React from \"react\";\nimport { rendererClass } from \"../util\";\n\nexport function DefaultDisplayOnly({\n control,\n className,\n emptyText,\n schemaInterface,\n field,\n style,\n}: {\n control: Control<any>;\n field: SchemaField;\n schemaInterface: SchemaInterface;\n className?: string | null;\n style?: React.CSSProperties;\n emptyText?: string | null;\n}) {\n const v = control.value;\n const text =\n (schemaInterface.isEmptyValue(field, v)\n ? emptyText\n : schemaInterface.textValue(field, v)) ?? \"\";\n return (\n <div style={style} className={rendererClass(className)}>\n {text}\n </div>\n );\n}\n","import { FieldType } from \"../types\";\nimport React from \"react\";\nimport {\n Control,\n formControlProps,\n useControl,\n useControlEffect,\n} from \"@react-typed-forms/core\";\n\nexport function ControlInput({\n control,\n convert,\n ...props\n}: React.InputHTMLAttributes<HTMLInputElement> & {\n control: Control<any>;\n convert: InputConversion;\n}) {\n const { errorText, value, onChange, ...inputProps } =\n formControlProps(control);\n const textValue = useControl(() => toText(value));\n useControlEffect(\n () => control.value,\n (v) => (textValue.value = toText(v)),\n );\n return (\n <input\n {...inputProps}\n type={convert[0]}\n value={textValue.value}\n onChange={(e) => {\n textValue.value = e.target.value;\n const converted = convert[1](e.target.value);\n if (converted !== undefined) control.value = converted;\n }}\n {...props}\n />\n );\n\n function toText(value: any) {\n return value == null ? \"\" : convert[2](value);\n }\n}\n\ntype InputConversion = [\n string,\n (s: string) => any,\n (a: any) => string | number,\n];\n\nexport function createInputConversion(ft: string): InputConversion {\n switch (ft) {\n case FieldType.String:\n return [\"text\", (a) => a, (a) => a];\n case FieldType.Bool:\n return [\n \"text\",\n (a) => (a === \"true\" ? true : a === \"false\" ? false : undefined),\n (a) => a?.toString() ?? \"\",\n ];\n case FieldType.Int:\n return [\n \"number\",\n (a) => (a !== \"\" ? parseInt(a) : null),\n (a) => (a == null ? \"\" : a),\n ];\n case FieldType.DateTime:\n return [\"datetime-local\", (a) => (!a ? null : a), (a) => a];\n case FieldType.Date:\n return [\"date\", (a) => (!a ? null : a), (a) => a];\n case FieldType.Time:\n return [\n \"time\",\n (a) => {\n const l = a.length;\n if (l === 5) return a + \":00\";\n if (l === 8) return a;\n return undefined;\n },\n (a) => (a ? a.substring(0, 5) : \"\"),\n ];\n case FieldType.Double:\n return [\n \"number\",\n (a) => (a !== \"\" ? parseFloat(a) : null),\n (a) => (a == null ? \"\" : a),\n ];\n default:\n return [\"text\", (a) => a, (a) => a];\n }\n}\n","import {\n ArrayRendererRegistration,\n createDataRenderer,\n DataRendererRegistration,\n} from \"../renderers\";\nimport {\n ActionRendererProps,\n applyArrayLengthRestrictions,\n ArrayRendererProps,\n createArrayActions,\n getLengthRestrictions,\n} from \"../controlRender\";\nimport clsx from \"clsx\";\nimport React, { Fragment, ReactNode } from \"react\";\nimport { RenderElements } from \"@react-typed-forms/core\";\nimport {\n ArrayActionOptions,\n ArrayRenderOptions,\n ControlDefinitionType,\n DataControlDefinition,\n DataRenderType,\n isArrayRenderer,\n} from \"../types\";\nimport { cc } from \"../internal\";\nimport { mergeObjects } from \"../util\";\n\nexport function createDefaultArrayDataRenderer(\n defaultActions?: ArrayActionOptions,\n): DataRendererRegistration {\n return createDataRenderer(\n (\n {\n definition,\n control,\n required,\n field,\n renderChild,\n className,\n style,\n renderOptions,\n },\n renderers,\n ) => {\n const { addText, noAdd, noRemove, noReorder, removeText } = mergeObjects(\n isArrayRenderer(renderOptions)\n ? renderOptions\n : ({} as ArrayRenderOptions),\n defaultActions as ArrayRenderOptions,\n );\n const childOptions = isArrayRenderer(renderOptions)\n ? renderOptions.childOptions\n : undefined;\n\n const arrayProps = {\n ...createArrayActions(control, field, {\n addText,\n removeText,\n noAdd,\n noRemove,\n }),\n required,\n renderElement: (i) =>\n renderChild(\n control.elements?.[i].uniqueId ?? i,\n {\n type: ControlDefinitionType.Data,\n field: definition.field,\n children: definition.children,\n renderOptions: childOptions ?? { type: DataRenderType.Standard },\n hideTitle: true,\n } as DataControlDefinition,\n { elementIndex: i },\n ),\n className: cc(className),\n style,\n ...getLengthRestrictions(definition),\n } satisfies ArrayRendererProps;\n return renderers.renderArray(arrayProps);\n },\n { renderType: DataRenderType.Array, collection: true },\n );\n}\n\nexport interface DefaultArrayRendererOptions extends ArrayActionOptions {\n className?: string;\n removableClass?: string;\n childClass?: string;\n removableChildClass?: string;\n removeActionClass?: string;\n addActionClass?: string;\n}\n\nexport function createDefaultArrayRenderer(\n options?: DefaultArrayRendererOptions,\n): ArrayRendererRegistration {\n return {\n render: (props, { renderAction }) => (\n <DefaultArrayRenderer\n {...props}\n {...options}\n renderAction={renderAction}\n />\n ),\n type: \"array\",\n };\n}\n\nexport interface DefaultArrayRendererProps\n extends DefaultArrayRendererOptions,\n ArrayRendererProps {\n renderAction: (props: ActionRendererProps) => ReactNode;\n}\n\nexport function DefaultArrayRenderer(props: DefaultArrayRendererProps) {\n const {\n renderElement,\n className,\n removableClass,\n childClass,\n removableChildClass,\n removeActionClass,\n addActionClass,\n arrayControl,\n renderAction,\n style,\n } = props;\n const { addAction, removeAction } = applyArrayLengthRestrictions(props);\n return (\n <div style={style}>\n <div className={clsx(className, removeAction && removableClass)}>\n <RenderElements control={arrayControl}>\n {(_, x) =>\n removeAction ? (\n <>\n <div className={clsx(childClass, removableChildClass)}>\n {renderElement(x)}\n </div>\n <div className={removeActionClass}>\n {renderAction(removeAction(x))}\n </div>\n </>\n ) : (\n <div className={childClass}>{renderElement(x)}</div>\n )\n }\n </RenderElements>\n </div>\n {addAction && (\n <div className={addActionClass}>{renderAction(addAction)}</div>\n )}\n </div>\n );\n}\n","import { DataRenderType, FieldOption } from \"../types\";\nimport {\n Control,\n Fcheckbox,\n RenderArrayElements,\n useComputed,\n} from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport { createDataRenderer } from \"../renderers\";\nimport { rendererClass } from \"../util\";\n\nexport interface CheckRendererOptions {\n className?: string;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n}\n\nexport function createRadioRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n {...options}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => control.value == o.value}\n setChecked={(c, o) => (c.value = o.value)}\n control={p.control}\n type=\"radio\"\n />\n ),\n {\n renderType: DataRenderType.Radio,\n },\n );\n}\n\nexport function createCheckListRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n {...options}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => {\n const v = control.value;\n return Array.isArray(v) ? v.includes(o.value) : false;\n }}\n setChecked={(c, o, checked) => {\n c.setValue((x) => setIncluded(x ?? [], o.value, checked));\n }}\n control={p.control}\n type=\"checkbox\"\n />\n ),\n {\n collection: true,\n renderType: DataRenderType.CheckList,\n },\n );\n}\n\nexport function CheckButtons({\n control,\n options,\n labelClass,\n checkClass,\n readonly,\n entryClass,\n className,\n id,\n type,\n isChecked,\n setChecked,\n}: {\n id?: string;\n className?: string;\n options?: FieldOption[] | null;\n control: Control<any>;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n readonly?: boolean;\n type: \"checkbox\" | \"radio\";\n isChecked: (c: Control<any>, o: FieldOption) => boolean;\n setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;\n}) {\n const { disabled } = control;\n const name = \"r\" + control.uniqueId;\n return (\n <div className={className} id={id}>\n <RenderArrayElements array={options?.filter((x) => x.value != null)}>\n {(o, i) => {\n const checked = useComputed(() => isChecked(control, o)).value;\n return (\n <div key={i} className={entryClass}>\n <input\n id={name + \"_\" + i}\n className={checkClass}\n type={type}\n name={name}\n readOnly={readonly}\n disabled={disabled}\n checked={checked}\n onChange={(x) => {\n !readonly && setChecked(control, o, x.target.checked);\n }}\n />\n <label className={labelClass} htmlFor={name + \"_\" + i}>\n {o.name}\n </label>\n </div>\n );\n }}\n </RenderArrayElements>\n </div>\n );\n}\n\nexport function setIncluded<A>(array: A[], elem: A, included: boolean): A[] {\n const already = array.includes(elem);\n if (included === already) {\n return array;\n }\n if (included) {\n return [...array, elem];\n }\n return array.filter((e) => e !== elem);\n}\n\nexport function createCheckboxRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (props, renderer) => (p) => ({\n ...p,\n label: undefined,\n children: (\n <div className={rendererClass(props.className, options.entryClass)}>\n <Fcheckbox\n id={props.id}\n control={props.control}\n style={props.style}\n className={options.checkClass}\n />\n {p.label && renderer.renderLabel(p.label, undefined, undefined)}\n </div>\n ),\n }),\n { renderType: DataRenderType.Checkbox },\n );\n}\n","import React, { CSSProperties, Fragment, ReactElement, ReactNode } from \"react\";\nimport { AccordionAdornment } from \"../types\";\nimport { Control, useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\nimport { FormRenderer } from \"../controlRender\";\nimport { DefaultAccordionRendererOptions } from \"../createDefaultRenderers\";\n\nexport function DefaultAccordion({\n children,\n accordion,\n contentStyle,\n contentClassName,\n designMode,\n iconOpenClass,\n iconClosedClass,\n className,\n renderTitle = (t) => t,\n renderToggler,\n renderers,\n titleClass,\n}: {\n children: ReactElement;\n accordion: Partial<AccordionAdornment>;\n contentStyle?: CSSProperties;\n contentClassName?: string;\n designMode?: boolean;\n renderers: FormRenderer;\n} & DefaultAccordionRendererOptions) {\n const open = useControl(!!accordion.defaultExpanded);\n const isOpen = open.value;\n const fullContentStyle =\n isOpen || designMode ? contentStyle : { ...contentStyle, display: \"none\" };\n const title = renderers.renderLabelText(renderTitle(accordion.title, open));\n const toggler = renderToggler ? (\n renderToggler(open, title)\n ) : (\n <button className={className} onClick={() => open.setValue((x) => !x)}>\n <label className={titleClass}>{title}</label>\n <i className={clsx(isOpen ? iconOpenClass : iconClosedClass)} />\n </button>\n );\n\n return (\n <>\n {toggler}\n <div style={fullContentStyle} className={contentClassName}>\n {children}\n </div>\n </>\n );\n}\n","import { createDataRenderer } from \"../renderers\";\nimport { Control, newControl, useControlEffect } from \"@react-typed-forms/core\";\nimport { DataRenderType, FieldType } from \"../types\";\nimport React, { ReactNode } from \"react\";\n\nexport function createNullToggleRenderer() {\n return createDataRenderer(\n ({ control, field, renderOptions, ...props }, renderers) => {\n const nullControl = (control.meta[\"nullControl\"] ??= newControl(\n control.current.value != null,\n ));\n return (layout) => {\n const newLayout = renderers.renderData({\n ...props,\n control: nullControl,\n field: { ...field, type: FieldType.Bool },\n renderOptions: { type: DataRenderType.Checkbox },\n })(layout);\n return {\n ...newLayout,\n children: (\n <NullWrapper\n control={control}\n nullControl={nullControl}\n children={newLayout.children}\n readonly={props.readonly}\n defaultValue={props.definition.defaultValue}\n />\n ),\n };\n };\n },\n );\n}\n\nfunction NullWrapper({\n children,\n nullControl,\n control,\n defaultValue,\n readonly,\n}: {\n control: Control<any>;\n nullControl: Control<boolean>;\n children: ReactNode;\n readonly: boolean;\n defaultValue: any;\n}) {\n useControlEffect(\n () => readonly,\n (r) => (nullControl.disabled = r),\n true,\n );\n useControlEffect(\n () => nullControl.value,\n (e) => {\n if (e) {\n control.value = nullControl.meta[\"nonNullValue\"] ?? defaultValue;\n } else {\n nullControl.meta[\"nonNullValue\"] = control.value;\n control.value = null;\n }\n },\n );\n return children;\n}\n","import { createDataRenderer } from \"../renderers\";\nimport { DataRendererProps } from \"../controlRender\";\nimport React, { useRef } from \"react\";\nimport { useControlEffect } from \"@react-typed-forms/core\";\nimport { rendererClass } from \"../util\";\n\nexport function createMultilineFieldRenderer(className?: string) {\n return createDataRenderer((p) => (\n <MultilineTextfield\n {...p}\n className={rendererClass(p.className, className)}\n />\n ));\n}\n\nexport function MultilineTextfield({ control, className }: DataRendererProps) {\n const codeRef = useRef<HTMLElement | null>(null);\n useControlEffect(\n () => control.value,\n (v) => {\n const c = codeRef.current;\n if (c && c.textContent !== v) {\n c.textContent = v;\n }\n },\n true,\n );\n return (\n <code\n contentEditable={!control.disabled}\n className={className}\n onInput={(t) => (control.value = t.currentTarget.textContent)}\n ref={codeRef}\n />\n );\n}\n","import { createDataRenderer } from \"../renderers\";\nimport { useJsonataExpression } from \"../hooks\";\nimport { DataRenderType, JsonataRenderOptions } from \"../types\";\nimport { ControlDataContext, rendererClass } from \"../util\";\nimport { Control } from \"@react-typed-forms/core\";\nimport React from \"react\";\n\nexport function createJsonataRenderer(className?: string) {\n return createDataRenderer(\n (p) => (\n <JsonataRenderer\n renderOptions={p.renderOptions as JsonataRenderOptions}\n className={rendererClass(p.className, className)}\n dataContext={p.dataContext}\n control={p.control}\n readonly={p.readonly}\n />\n ),\n { renderType: DataRenderType.Jsonata },\n );\n}\n\nexport function JsonataRenderer({\n control,\n renderOptions: { expression },\n readonly,\n className,\n dataContext,\n}: {\n control: Control<any>;\n renderOptions: JsonataRenderOptions;\n className?: string;\n dataContext: ControlDataContext;\n readonly: boolean;\n}) {\n const rendered = useJsonataExpression(\n expression,\n dataContext,\n () => ({\n value: control.value,\n readonly,\n disabled: control.disabled,\n }),\n (v) =>\n v == null\n ? \"\"\n : typeof v === \"object\"\n ? \"error: \" + JSON.stringify(v)\n : v.toString(),\n );\n return (\n <div\n className={className}\n dangerouslySetInnerHTML={{ __html: rendered.value }}\n />\n );\n}\n","import {\n createDefaultDisplayRenderer,\n DefaultDisplayRendererOptions,\n} from \"./components/DefaultDisplay\";\nimport {\n DefaultLayout,\n DefaultLayoutRendererOptions,\n} from \"./components/DefaultLayout\";\nimport {\n ActionRendererRegistration,\n AdornmentRendererRegistration,\n createActionRenderer,\n createDataRenderer,\n createLayoutRenderer,\n DataRendererRegistration,\n DefaultRenderers,\n GroupRendererRegistration,\n isAccordionAdornment,\n isIconAdornment,\n isSetFieldAdornment,\n LabelRendererRegistration,\n} from \"./renderers\";\nimport { createDefaultVisibilityRenderer } from \"./components/DefaultVisibility\";\nimport React, {\n CSSProperties,\n Fragment,\n ReactElement,\n ReactNode,\n useCallback,\n} from \"react\";\nimport {\n ControlDataContext,\n findFieldPath,\n hasOptions,\n lookupChildControl,\n rendererClass,\n useDynamicHooks,\n} from \"./util\";\nimport clsx from \"clsx\";\nimport {\n ActionRendererProps,\n appendMarkupAt,\n ControlLayoutProps,\n GroupRendererProps,\n LabelType,\n renderLayoutParts,\n wrapLayout,\n} from \"./controlRender\";\nimport {\n AdornmentPlacement,\n ArrayActionOptions,\n DataRenderType,\n FieldOption,\n FieldType,\n FlexRenderer,\n GridRenderer,\n isDataGroupRenderer,\n isDisplayOnlyRenderer,\n isFlexRenderer,\n isGridRenderer,\n isTextfieldRenderer,\n SetFieldAdornment,\n} from \"./types\";\nimport {\n createSelectRenderer,\n SelectRendererOptions,\n} from \"./components/SelectDataRenderer\";\nimport { DefaultDisplayOnly } from \"./components/DefaultDisplayOnly\";\nimport { Control, useControlEffect } from \"@react-typed-forms/core\";\nimport { ControlInput, createInputConversion } from \"./components/ControlInput\";\nimport {\n createDefaultArrayDataRenderer,\n createDefaultArrayRenderer,\n DefaultArrayRendererOptions,\n} from \"./components/DefaultArrayRenderer\";\nimport {\n CheckRendererOptions,\n createCheckboxRenderer,\n createCheckListRenderer,\n createRadioRenderer,\n} from \"./components/CheckRenderer\";\nimport { DefaultAccordion } from \"./components/DefaultAccordion\";\nimport { createNullToggleRenderer } from \"./components/NullToggle\";\nimport { createMultilineFieldRenderer } from \"./components/MultilineTextfield\";\nimport { createJsonataRenderer } from \"./components/JsonataRenderer\";\nimport { schemaDataForFieldRef } from \"./treeNodes\";\n\nexport interface DefaultRendererOptions {\n data?: DefaultDataRendererOptions;\n display?: DefaultDisplayRendererOptions;\n action?: DefaultActionRendererOptions;\n array?: DefaultArrayRendererOptions;\n group?: DefaultGroupRendererOptions;\n label?: DefaultLabelRendererOptions;\n adornment?: DefaultAdornmentRendererOptions;\n layout?: DefaultLayoutRendererOptions;\n}\n\ninterface StyleProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport interface DefaultActionRendererOptions {\n className?: string;\n renderContent?: (\n actionText: string,\n actionId: string,\n actionData: any,\n ) => ReactNode;\n}\n\nexport function createButtonActionRenderer(\n actionId: string | string[] | undefined,\n options: DefaultActionRendererOptions = {},\n): ActionRendererRegistration {\n return createActionRenderer(\n actionId,\n ({\n onClick,\n actionText,\n className,\n style,\n actionId,\n actionData,\n }: ActionRendererProps) => {\n return (\n <button\n className={rendererClass(className, options.className)}\n style={style}\n onClick={onClick}\n >\n {options.renderContent?.(actionText, actionId, actionData) ??\n actionText}\n </button>\n );\n },\n );\n}\n\nexport interface DefaultGroupRendererOptions {\n className?: string;\n standardClassName?: string;\n gridStyles?: (columns: GridRenderer) => StyleProps;\n gridClassName?: string;\n defaultGridColumns?: number;\n flexClassName?: string;\n defaultFlexGap?: string;\n}\n\nexport function createDefaultGroupRenderer(\n options?: DefaultGroupRendererOptions,\n): GroupRendererRegistration {\n const {\n className,\n gridStyles = defaultGridStyles,\n defaultGridColumns = 2,\n gridClassName,\n standardClassName,\n flexClassName,\n defaultFlexGap,\n } = options ?? {};\n\n function defaultGridStyles({\n columns = defaultGridColumns,\n }: GridRenderer): StyleProps {\n return {\n className: gridClassName,\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n },\n };\n }\n\n function flexStyles(options: FlexRenderer): StyleProps {\n return {\n className: flexClassName,\n style: {\n display: \"flex\",\n gap: options.gap ? options.gap : defaultFlexGap,\n flexDirection: options.direction\n ? (options.direction as any)\n : undefined,\n },\n };\n }\n\n function render(props: GroupRendererProps) {\n const { renderChild, renderOptions, childDefinitions } = props;\n\n const { style, className: gcn } = isGridRenderer(renderOptions)\n ? gridStyles(renderOptions)\n : isFlexRenderer(renderOptions)\n ? flexStyles(renderOptions)\n : ({ className: standardClassName } as StyleProps);\n\n return (cp: ControlLayoutProps) => {\n return {\n ...cp,\n children: (\n <div\n className={rendererClass(props.className, clsx(className, gcn))}\n style={style}\n >\n {childDefinitions?.map((c, i) => renderChild(i, c))}\n </div>\n ),\n };\n };\n }\n\n return { type: \"group\", render };\n}\n\nexport const DefaultBoolOptions: FieldOption[] = [\n { name: \"Yes\", value: true },\n { name: \"No\", value: false },\n];\n\nexport interface DefaultDataRendererOptions {\n inputClass?: string;\n displayOnlyClass?: string;\n selectOptions?: SelectRendererOptions;\n checkboxOptions?: CheckRendererOptions;\n checkOptions?: CheckRendererOptions;\n radioOptions?: CheckRendererOptions;\n checkListOptions?: CheckRendererOptions;\n booleanOptions?: FieldOption[];\n optionRenderer?: DataRendererRegistration;\n multilineClass?: string;\n jsonataClass?: string;\n arrayOptions?: ArrayActionOptions;\n}\n\nexport function createDefaultDataRenderer(\n options: DefaultDataRendererOptions = {},\n): DataRendererRegistration {\n const jsonataRenderer = createJsonataRenderer(options.jsonataClass);\n const nullToggler = createNullToggleRenderer();\n const multilineRenderer = createMultilineFieldRenderer(\n options.multilineClass,\n );\n const checkboxRenderer = createCheckboxRenderer(\n options.checkOptions ?? options.checkboxOptions,\n );\n const selectRenderer = createSelectRenderer(options.selectOptions);\n const radioRenderer = createRadioRenderer(\n options.radioOptions ?? options.checkOptions,\n );\n const checkListRenderer = createCheckListRenderer(\n options.checkListOptions ?? options.checkOptions,\n );\n const { inputClass, booleanOptions, optionRenderer, displayOnlyClass } = {\n optionRenderer: selectRenderer,\n booleanOptions: DefaultBoolOptions,\n ...options,\n };\n const arrayRenderer = createDefaultArrayDataRenderer(options.arrayOptions);\n\n return createDataRenderer((props, renderers) => {\n const { field } = props;\n const fieldType = field.type;\n const renderOptions = props.renderOptions;\n let renderType = renderOptions.type;\n if (\n field.collection &&\n props.elementIndex == null &&\n (renderType == DataRenderType.Standard ||\n renderType == DataRenderType.Array)\n ) {\n return arrayRenderer.render(props, renderers);\n }\n if (fieldType === FieldType.Compound) {\n const groupOptions = (isDataGroupRenderer(renderOptions)\n ? renderOptions.groupOptions\n : undefined) ?? { type: \"Standard\", hideTitle: true };\n return renderers.renderGroup({ ...props, renderOptions: groupOptions });\n }\n if (fieldType == FieldType.Any) return <>No control for Any</>;\n if (isDisplayOnlyRenderer(renderOptions))\n return (p) => ({\n ...p,\n className: displayOnlyClass,\n children: (\n <DefaultDisplayOnly\n field={props.field}\n schemaInterface={props.dataContext.schemaInterface}\n control={props.control}\n className={props.className}\n style={props.style}\n emptyText={renderOptions.emptyText}\n />\n ),\n });\n const isBool = fieldType === FieldType.Bool;\n if (booleanOptions != null && isBool && props.options == null) {\n return renderers.renderData({ ...props, options: booleanOptions });\n }\n if (renderType === DataRenderType.Standard && hasOptions(props)) {\n return optionRenderer.render(props, renderers);\n }\n switch (renderType) {\n case DataRenderType.NullToggle:\n return nullToggler.render(props, renderers);\n case DataRenderType.CheckList:\n return checkListRenderer.render(props, renderers);\n case DataRenderType.Dropdown:\n return selectRenderer.render(props, renderers);\n case DataRenderType.Radio:\n return radioRenderer.render(props, renderers);\n case DataRenderType.Checkbox:\n return checkboxRenderer.render(props, renderers);\n case DataRenderType.Jsonata:\n return jsonataRenderer.render(props, renderers);\n }\n if (isTextfieldRenderer(renderOptions) && renderOptions.multiline)\n return multilineRenderer.render(props, renderers);\n const placeholder = isTextfieldRenderer(renderOptions)\n ? renderOptions.placeholder\n : undefined;\n return (\n <ControlInput\n className={rendererClass(props.className, inputClass)}\n style={props.style}\n id={props.id}\n readOnly={props.readonly}\n control={props.control}\n placeholder={placeholder ?? undefined}\n convert={createInputConversion(props.field.type)}\n />\n );\n });\n}\n\nexport interface DefaultAccordionRendererOptions {\n className?: string;\n titleClass?: string;\n togglerClass?: string;\n iconOpenClass?: string;\n iconClosedClass?: string;\n renderTitle?: (\n title: string | undefined,\n current: Control<boolean>,\n ) => ReactNode;\n renderToggler?: (current: Control<boolean>, title: ReactNode) => ReactNode;\n}\n\nexport interface DefaultAdornmentRendererOptions {\n accordion?: DefaultAccordionRendererOptions;\n}\n\nexport function createDefaultAdornmentRenderer(\n options: DefaultAdornmentRendererOptions = {},\n): AdornmentRendererRegistration {\n return {\n type: \"adornment\",\n render: ({ adornment, designMode, dataContext, useExpr }, renderers) => ({\n apply: (rl) => {\n if (isSetFieldAdornment(adornment) && useExpr) {\n const hook = useExpr(adornment.expression, (x) => x);\n const dynamicHooks = useDynamicHooks({ value: hook });\n const SetFieldWrapper = useCallback(setFieldWrapper, [dynamicHooks]);\n return wrapLayout((x) => (\n <SetFieldWrapper\n children={x}\n parentContext={dataContext}\n adornment={adornment}\n />\n ))(rl);\n\n function setFieldWrapper({\n children,\n adornment,\n parentContext,\n }: {\n children: ReactNode;\n adornment: SetFieldAdornment;\n parentContext: ControlDataContext;\n }) {\n const { value } = dynamicHooks(parentContext);\n const fieldNode = schemaDataForFieldRef(\n adornment.field,\n parentContext.parentNode,\n );\n const otherField = fieldNode.control;\n const always = !adornment.defaultOnly;\n useControlEffect(\n () => [value?.value, otherField?.value == null],\n ([v]) => {\n otherField?.setValue((x) => (always || x == null ? v : x));\n },\n true,\n );\n return children;\n }\n }\n if (isIconAdornment(adornment)) {\n return appendMarkupAt(\n adornment.placement ?? AdornmentPlacement.ControlStart,\n <i className={adornment.iconClass} />,\n )(rl);\n }\n if (isAccordionAdornment(adornment)) {\n return wrapLayout((x) => (\n <DefaultAccordion\n renderers={renderers}\n children={x}\n accordion={adornment}\n contentStyle={rl.style}\n contentClassName={rl.className}\n designMode={designMode}\n {...options.accordion}\n />\n ))(rl);\n }\n },\n priority: 0,\n adornment,\n }),\n };\n}\n\nfunction createDefaultLayoutRenderer(\n options: DefaultLayoutRendererOptions = {},\n) {\n return createLayoutRenderer((props, renderers) => {\n const layout = renderLayoutParts(\n {\n ...props,\n className: rendererClass(props.className, options.className),\n },\n renderers,\n );\n return {\n children: layout.wrapLayout(\n <DefaultLayout layout={layout} {...options} />,\n ),\n className: layout.className,\n style: layout.style,\n divRef: (e) =>\n e && props.errorControl\n ? (props.errorControl.meta.scrollElement = e)\n : undefined,\n };\n });\n}\n\ninterface DefaultLabelRendererOptions {\n className?: string;\n groupLabelClass?: string;\n controlLabelClass?: string;\n requiredElement?: ReactNode;\n labelContainer?: (children: ReactElement) => ReactElement;\n}\n\nexport function createDefaultLabelRenderer(\n options?: DefaultLabelRendererOptions,\n): LabelRendererRegistration {\n const {\n className,\n groupLabelClass,\n controlLabelClass,\n requiredElement,\n labelContainer,\n } = {\n requiredElement: <span> *</span>,\n labelContainer: (c: ReactElement) => c,\n ...options,\n };\n return {\n render: (props, labelStart, labelEnd, renderers) => {\n if (props.type == LabelType.Text) return props.label;\n return labelContainer(\n <>\n <label\n htmlFor={props.forId}\n className={rendererClass(\n props.className,\n clsx(\n className,\n props.type === LabelType.Group && groupLabelClass,\n props.type === LabelType.Control && controlLabelClass,\n ),\n )}\n >\n {labelStart}\n {renderers.renderLabelText(props.label)}\n {props.required && requiredElement}\n </label>\n {labelEnd}\n </>,\n );\n },\n type: \"label\",\n };\n}\n\nexport function createDefaultRenderers(\n options: DefaultRendererOptions = {},\n): DefaultRenderers {\n return {\n data: createDefaultDataRenderer(options.data),\n display: createDefaultDisplayRenderer(options.display),\n action: createButtonActionRenderer(undefined, options.action),\n array: createDefaultArrayRenderer(options.array),\n group: createDefaultGroupRenderer(options.group),\n label: createDefaultLabelRenderer(options.label),\n adornment: createDefaultAdornmentRenderer(options.adornment),\n renderLayout: createDefaultLayoutRenderer(options.layout),\n visibility: createDefaultVisibilityRenderer(),\n };\n}\n","import { ReactNode } from \"react\";\nimport {\n ActionRendererProps,\n AdornmentProps,\n AdornmentRenderer,\n ArrayRendererProps,\n ControlLayoutProps,\n DataRendererProps,\n DisplayRendererProps,\n FormRenderer,\n GroupRendererProps,\n LabelRendererProps,\n LabelType,\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 { createDefaultRenderers } from \"./createDefaultRenderers\";\nimport { DataRenderType } from \"./types\";\n\nexport function createFormRenderer(\n customRenderers: RendererRegistration[] = [],\n defaultRenderers: DefaultRenderers = createClassStyledRenderers(),\n): FormRenderer {\n const dataRegistrations = customRenderers.filter(isDataRegistration);\n const groupRegistrations = customRenderers.filter(isGroupRegistration);\n const adornmentRegistrations = customRenderers.filter(\n isAdornmentRegistration,\n );\n const displayRegistrations = customRenderers.filter(isDisplayRegistration);\n const labelRenderers = customRenderers.filter(isLabelRegistration);\n const arrayRenderers = customRenderers.filter(isArrayRegistration);\n const actionRenderers = customRenderers.filter(isActionRegistration);\n const layoutRenderers = customRenderers.filter(isLayoutRegistration);\n const visibilityRenderer =\n customRenderers.find(isVisibilityRegistration) ??\n 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: visibilityRenderer.render,\n renderLabelText,\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 {\n renderOptions: { type: renderType },\n field,\n } = props;\n\n const options = hasOptions(props);\n const renderer =\n dataRegistrations.find(\n (x) =>\n (x.collection ?? false) ===\n (props.elementIndex == null && (field.collection ?? false)) &&\n (x.options ?? false) === options &&\n ((x.schemaType &&\n renderType == DataRenderType.Standard &&\n isOneOf(x.schemaType, field.type)) ||\n (x.renderType && isOneOf(x.renderType, renderType)) ||\n (x.match && x.match(props))),\n ) ?? defaultRenderers.data;\n\n const result = renderer.render(props, formRenderers);\n if (typeof result === \"function\") return result;\n return (l) => ({ ...l, children: result });\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 createClassStyledRenderers() {\n return createDefaultRenderers({\n layout: { className: \"control\" },\n group: { className: \"group\" },\n array: { className: \"control-array\" },\n action: { className: \"action\" },\n data: { inputClass: \"data\" },\n display: { htmlClassName: \"html\", textClassName: \"text\" },\n });\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"],"names":["FieldType","ValidationMessageType","ControlDefinitionType","DynamicPropertyType","ExpressionType","AdornmentPlacement","ControlAdornmentType","DataRenderType","SyncTextType","GroupRenderType","DisplayDataType","ValidatorType","DateComparison","isDataControlDefinition","x","type","Data","isGroupControlsDefinition","Group","isDisplayControlsDefinition","Display","isActionControlsDefinition","Action","visitControlDefinition","visitor","defaultValue","action","data","display","group","isGridRenderer","options","Grid","isFlexRenderer","Flex","isDisplayOnlyRenderer","DisplayOnly","isTextfieldRenderer","Textfield","isDataGroupRenderer","isArrayRenderer","Array","findField","fields","field","find","isScalarField","sf","isCompoundField","Compound","isDataControl","c","makeScalarField","n","_extends","defaultScalarField","displayName","String","defaultCompoundField","collection","children","mergeField","mergeInto","existing","map","onlyForTypes","mergeTypes","concat","f","s","extras","filter","includes","length","mergeFields","name","value","newFields","withType","isTypeField","addFieldOption","reduce","af","typeField","_typeField$options","some","resolveSchemas","schemaMap","out","Object","keys","forEach","resolveSchemaType","resolvedFields","schemaRef","push","MissingField","Any","nodeForSchema","lookup","parent","node","getSchema","getChildNode","fieldName","childField","undefined","getChildNodes","otherRef","createSchemaLookup","schemaId","rootSchemaNode","nodeForControl","definition","_definition$children$","_definition$children","makeSchemaDataNode","schema","control","elementIndex","dataNode","getChild","schemaNode","_objControl$fields","objControl","current","isNull","getChildElement","_control$elements","elements","fieldPathForDefinition","compoundField","split","schemaDataForFieldRef","fieldRef","_fieldRef$split","schemaDataForFieldPath","fieldPath","i","childNode","schemaForFieldPath","traverseParents","get","until","outArray","reverse","getRootDataNode","getJsonPath","d","getSchemaFieldList","ControlDataContextImpl","schemaInterface","parentNode","this","key","applyDefaultValues","v","doneSet","defaultValueForFields","has","Set","add","applyValue","applyDefaultForField","defaultValueForField","notElement","required","treeChildren","fromEntries","forceNotNull","isRequired","childValue","notNullable","elementValueForField","fieldHasTag","tag","_field$tags","Boolean","tags","fieldDisplayName","_field$displayName","hasOptions","o","_o$options$length","_o$options","defaultControlForField","title","_sf$tags","htmlEditor","renderOptions","HtmlEditor","Standard","findControlsForCompound","compound","flatMap","findCompoundGroups","controls","cf","groups","findNonDataGroups","_x$children","_x$children2","existsInGroups","_c$children","childLookup","_control$children2","cloneChildren","_c$children2","addMissingControls","rootLookup","_ref","_f$tags","groupToAdd","startsWith","insertGroup","groupName","substring","newControl","useUpdatedRef","a","r","useRef","isControlReadonly","readonly","isControlDisabled","disabled","getDisplayOnlyOptions","visitControlDataArray","context","cb","_step2","_iterator2","_createForOfIteratorHelperLoose","done","visitControlData","ctx","def","processData","fieldData","thisPath","path","lookupControl","result","_step3","cIndex","_iterator3","elemResult","cfResult","lookupChildControl","element","lookupChildControlPath","jsonPath","childPath","watchControlLookup","jsonPathString","customIndex","_customIndex","getOverrideClass","className","rendererClass","controlClass","globalClass","oc","clsx","base","index","childId","_c$fields","next","trackControlChange","ControlChange","Structure","_c$elements","makeHookDepString","deps","asHookDep","toDepString","join","useDynamicHooks","hooks","hookEntries","entries","ref","state","useCallback","p","_ref2","runHook","toString","applyLengthRestrictions","min","max","minValue","maxValue","findFieldPath","fieldNames","foundFields","currentFields","nextField","mergeObjects","o1","o2","doMerge","_","v1","v2","hasOwnProperty","dataControl","validatorOptions","adornmentOptions","renderOptionsFor","checkListOptions","CheckList","radioButtonOptions","Radio","lengthValidatorOptions","Length","jsonataValidatorOptions","Jsonata","dateValidatorOptions","Date","accordionOptions","Accordion","textfieldOptions","displayOnlyOptions","jsonataOptions","emptyGroupDefinition","groupOptions","hideTitle","applyExtensionToSchema","extension","outMap","cro","isArray","cr","_cr$fields","useEvalVisibilityHook","useEvalExpressionHook","overrideDataNode","makeDynamicPropertyHook","useEvalDynamicBoolHook","Visible","useComputed","matchesType","hideDisplayOnly","useEvalReadonlyHook","Readonly","useCalculatedControl","useEvalStyleHook","property","useEvalDynamicHook","useControl","useEvalAllowedOptionsHook","AllowedOptions","useEvalDisabledHook","Disabled","_ctx$dataNode","_dataControl$meta$nul","meta","useEvalDisplayHook","useEvalDefaultValueHook","DefaultValue","_ref3","_ctx$dataNode2","_ref4","dcv","defaultEvalHooks","expr","coerce","useJsonataExpression","expression","UUID","useUuidExpression","fvExpr","otherField","_otherField$control","useDataExpression","DataMatch","_otherField$control2","fv","useDataMatchExpression","NotEmpty","refField","at","isEmptyValue","useNotEmptyExpression","defaultUseEvalExpressionHook","makeEvalExpressionHook","_definition$dynamic","dynamic","types","typeNode","_context$control","displayOptions","emptyText","uuidv4","jExpr","dataContext","bindings","pathString","fullExpr","compiledExpr","useMemo","jsonata","e","console","error","listenerRef","updateRef","useRefState","makeChangeTracker","l","addAfterChangesCallback","useEffect","apply","_ref$current","collect","updateSubscriptions","_temp","bindingData","collectChanges","_coerce","Promise","resolve","evaluate","trackedValue","then","_compiledExpr$evaluat","_finallyRethrows","_wasThrown","_result","reject","useEvalActionHook","useExpr","ActionData","useEvalLabelText","Label","dynamicValue","makeDefault","_dynamicValue$runHook","useMakeValidationHook","useValidatorFor","_dd$validators","useDefaultValidator","dd","refData","depString","validators","_ctx$dataContext$data","_dd$validators2","hiddenControl","useValueChangeEffect","setError","useValidator","validationMessageText","validator","useLengthValidator","useJsonataValidator","useDateValidator","errorMsg","JSON","stringify","lv","len","controlLength","MinLength","setValue","from","MaxLength","dv","comparisonDate","fixedDate","parseToMillis","nowDate","UTC","getFullYear","getMonth","getDate","daysFromCurrent","selDate","notAfter","comparison","NotAfter","NotAfterDate","NotBeforeDate","cc","LabelType","DefaultSchemaInterface","boolStrings","_proto","prototype","parse","messageType","actual","expected","toDateString","getOptions","getFilterOptions","DateTime","Time","textValue","toLocaleDateString","toLocaleString","toLocaleTimeString","Bool","_control$elements$len","valueLength","defaultSchemaInterface","useControlRendererComponent","renderer","parentDataNode","_options$useDataHook","_options$schemaInterf","_options$useEvalExpre","dataProps","useDataHook","defaultDataProps","fieldNamePath","useValidation","useValidationHook","dynamicHooks","defaultValueControl","visibleControl","readonlyControl","disabledControl","allowedOptions","labelText","actionData","customStyle","Style","layoutStyle","LayoutStyle","displayControl","Component","stopTracking","useComponentTracking","_dataNode","_definition$adornment","_definition$adornment2","_r$current","_dynamicHooks","visible","visibility","showing","useControlEffect","ex","parentControl","_definition$renderOpt","dontClearHidden","NullToggle","hidden","vc","dontClear","dontDefault","parentNull","clearHidden","myOptionsControl","_visibility$fields","myOptions","childOptions","React","createElement","Fragment","adornments","renderAdornment","adornment","labelAndChildren","renderControlLayout","renderChild","k","child","_options$parentDataNo","dContext","NewControlRenderer","createDataProps","formOptions","style","customDisplay","actionDataControl","actionOnClick","useEvalExpression","useChildVisibility","childDef","overrideNode","renderedControl","renderLayout","layoutClass","renderVisibility","ControlRenderer","_ref5","_effect","_useComponentTracking","Render","_ref6","_effect2","_ref7","_allowedOptions$value","_definition$renderOpt2","_ref7$schemaInterface","props","_objectWithoutPropertiesLoose","_excluded","styleClass","fieldOptions","_allowed","allowed","childDefinitions","id","uniqueId","_fieldOptions$find","y","_c$groupOptions2","_labelText$value","_c$groupOptions3","_c$groupOptions","designMode","renderData","processLayout","renderGroup","label","labelClass","hide","_props$actionDataCont","_props$actionDataCont2","_ref8","_labelText$value2","_props$actionOnClick","renderAction","actionText","actionId","onClick","_c$displayData","displayData","displayProps","Custom","customId","renderDisplay","_labelText$value3","_c$children$length","rendererProps","controlTitle","Control","forId","errorControl","appendMarkup","markup","layout","wrapMarkup","wrap","layoutKeyForPlacement","pos","ControlEnd","ControlStart","LabelStart","LabelEnd","wrapLayout","rl","orig","appendMarkupAt","renderLayoutParts","_props$processLayout","_ref9","sort","b","priority","renderLabel","labelStart","labelEnd","getLengthRestrictions","_definition$validator","lengthVal","createArrayActions","noun","_ref10","removeText","removeActionId","arrayControl","addAction","noAdd","addActionId","addText","addElement","removeAction","noRemove","removeElement","applyArrayLengthRestrictions","_ref11","disable","_arrayControl$element","_arrayControl$element2","aa","ra","_applyLengthRestricti","removeAllowed","addAllowed","removeDisabled","addDisabled","isIconAdornment","Icon","isAccordionAdornment","isSetFieldAdornment","SetField","createLayoutRenderer","render","createActionRenderer","actionType","createDataRenderer","createVisibilityRenderer","defaultTailwindTheme","groupLabelClass","requiredElement","array","removableClass","childClass","addActionClass","standardClassName","gridClassName","flexClassName","errorClass","displayOnlyClass","checkOptions","entryClass","selectOptions","multilineClass","accordion","titleClass","iconOpenClass","iconClosedClass","createDefaultDisplayRenderer","DefaultDisplay","_display$value","iconClass","Text","textClassName","text","Html","htmlClassName","dangerouslySetInnerHTML","__html","html","DefaultLayout","_ref$renderError","renderError","_ref$layout","controlEnd","controlStart","touched","createDefaultVisibilityRenderer","DefaultVisibility","divRef","createSelectRenderer","asArray","_props$options","SelectDataRenderer","requiredText","convert","createSelectConversion","renderOption","_ref$emptyText","_ref$requiredText","showEmpty","useState","optionStringMap","optionGroups","onChange","target","ft","Int","Double","_a$toString","DefaultDisplayOnly","_excluded2","ControlInput","toText","_formControlProps","formControlProps","inputProps","converted","createInputConversion","parseInt","parseFloat","createDefaultArrayDataRenderer","defaultActions","renderers","_mergeObjects","arrayProps","renderElement","_control$elements$i$u","renderArray","renderType","createDefaultArrayRenderer","DefaultArrayRenderer","removableChildClass","removeActionClass","_applyArrayLengthRest","RenderElements","createRadioRenderer","CheckButtons","isChecked","setChecked","createCheckListRenderer","checked","setIncluded","checkClass","RenderArrayElements","readOnly","htmlFor","elem","included","createCheckboxRenderer","Fcheckbox","Checkbox","DefaultAccordion","contentStyle","contentClassName","_ref$renderTitle","renderTitle","t","renderToggler","open","defaultExpanded","isOpen","fullContentStyle","renderLabelText","toggler","createNullToggleRenderer","_control$meta","_control$meta$_nullCo","nullControl","newLayout","NullWrapper","_nullControl$meta$non","MultilineTextfield","codeRef","textContent","contentEditable","onInput","currentTarget","createJsonataRenderer","JsonataRenderer","rendered","createButtonActionRenderer","_options$renderConten","renderContent","createDefaultGroupRenderer","_ref2$gridStyles","gridStyles","_ref3$columns","columns","gridTemplateColumns","defaultGridColumns","_ref2$defaultGridColu","defaultFlexGap","gap","flexDirection","direction","flexStyles","gcn","cp","DefaultBoolOptions","createDefaultDataRenderer","_options$checkOptions","_options$radioOptions","_options$checkListOpt","jsonataRenderer","jsonataClass","nullToggler","multilineRenderer","checkboxRenderer","checkboxOptions","selectRenderer","radioRenderer","radioOptions","checkListRenderer","_optionRenderer$boole","optionRenderer","booleanOptions","inputClass","arrayRenderer","arrayOptions","fieldType","isBool","Dropdown","multiline","placeholder","createDefaultAdornmentRenderer","SetFieldWrapper","parentContext","always","defaultOnly","_adornment$placement","placement","createDefaultLayoutRenderer","scrollElement","createDefaultLabelRenderer","_requiredElement$labe","labelContainer","controlLabelClass","createDefaultRenderers","isOneOf","isAdornmentRegistration","isDataRegistration","isGroupRegistration","isLabelRegistration","isLayoutRegistration","isVisibilityRegistration","isActionRegistration","isDisplayRegistration","isArrayRegistration","extensions","cleanDataForSchema","removeIfDefault","typeValue","cleanableFields","_x$onlyForTypes$lengt","_x$onlyForTypes","_x$onlyForTypes2","childFields","cv","other","formMap","getForm","formId","rootNode","customRenderers","defaultRenderers","_customRenderers$find","dataRegistrations","groupRegistrations","adornmentRegistrations","displayRegistrations","labelRenderers","arrayRenderers","actionRenderers","layoutRenderers","formRenderers","_actionRenderers$find","_dataRegistrations$fi","_x$collection","_field$collection","_x$options","schemaType","match","_groupRegistrations$f","_displayRegistrations","_arrayRenderers$","_adornmentRegistratio","adornmentType","_layoutRenderers$find","_labelRenderers$find","labelType","getAllReferencedClasses","collectExtra","_c$children3","_collectExtra","childClasses","tc","_fieldRef$split2","slice","call","arguments","parentPath"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/types.ts","../src/schemaBuilder.ts","../src/util.ts","../src/controlBuilder.ts","../src/treeNodes.ts","../src/hooks.tsx","../src/validators.ts","../src/internal.ts","../src/schemaInterface.ts","../src/controlRender.tsx","../src/renderers.tsx","../src/tailwind.tsx","../src/components/DefaultDisplay.tsx","../src/components/DefaultLayout.tsx","../src/components/DefaultVisibility.tsx","../src/components/SelectDataRenderer.tsx","../src/components/DefaultDisplayOnly.tsx","../src/components/ControlInput.tsx","../src/components/DefaultArrayRenderer.tsx","../src/components/CheckRenderer.tsx","../src/components/DefaultAccordion.tsx","../src/components/NullToggle.tsx","../src/components/MultilineTextfield.tsx","../src/components/JsonataRenderer.tsx","../src/createDefaultRenderers.tsx","../src/createFormRenderer.tsx"],"sourcesContent":["import { Control } from \"@react-typed-forms/core\";\nimport { SchemaDataNode, SchemaNode } from \"./treeNodes\";\n\nexport interface SchemaField {\n type: string;\n field: string;\n displayName?: string | null;\n tags?: string[] | null;\n system?: boolean | null;\n collection?: boolean | null;\n onlyForTypes?: string[] | null;\n required?: boolean | null;\n notNullable?: boolean | null;\n defaultValue?: any;\n isTypeField?: boolean | null;\n searchable?: boolean | null;\n options?: FieldOption[] | null;\n validators?: SchemaValidator[] | null;\n}\n\nexport type SchemaMap = Record<string, SchemaField[]>;\n\nexport enum FieldType {\n String = \"String\",\n Bool = \"Bool\",\n Int = \"Int\",\n Date = \"Date\",\n DateTime = \"DateTime\",\n Time = \"Time\",\n Double = \"Double\",\n EntityRef = \"EntityRef\",\n Compound = \"Compound\",\n AutoId = \"AutoId\",\n Image = \"Image\",\n Any = \"Any\",\n}\n\nexport interface EntityRefField extends SchemaField {\n type: FieldType.EntityRef;\n entityRefType: string;\n parentField: string;\n}\n\nexport interface FieldOption {\n name: string;\n value: any;\n description?: string | null;\n group?: string | null;\n disabled?: boolean | null;\n}\n\nexport interface CompoundField extends SchemaField {\n type: FieldType.Compound;\n children: SchemaField[];\n treeChildren?: boolean;\n schemaRef?: string;\n}\n\nexport type AnyControlDefinition =\n | DataControlDefinition\n | GroupedControlsDefinition\n | ActionControlDefinition\n | DisplayControlDefinition;\n\nexport enum ValidationMessageType {\n NotEmpty = \"NotEmpty\",\n MinLength = \"MinLength\",\n MaxLength = \"MaxLength\",\n NotAfterDate = \"NotAfterDate\",\n NotBeforeDate = \"NotBeforeDate\",\n}\nexport interface SchemaInterface {\n isEmptyValue(field: SchemaField, value: any): boolean;\n textValue(\n field: SchemaField,\n value: any,\n element?: boolean,\n ): string | undefined;\n controlLength(field: SchemaField, control: Control<any>): number;\n valueLength(field: SchemaField, value: any): number;\n getOptions(field: SchemaField): FieldOption[] | undefined | null;\n getFilterOptions(\n array: SchemaDataNode,\n field: SchemaNode,\n ): FieldOption[] | undefined | null;\n parseToMillis(field: SchemaField, v: string): number;\n validationMessageText(\n field: SchemaField,\n messageType: ValidationMessageType,\n actual: any,\n expected: any,\n ): string;\n}\nexport interface ControlDefinition {\n type: string;\n title?: string | null;\n styleClass?: string | null;\n layoutClass?: string | null;\n labelClass?: string | null;\n dynamic?: DynamicProperty[] | null;\n adornments?: ControlAdornment[] | null;\n children?: ControlDefinition[] | null;\n}\n\nexport enum ControlDefinitionType {\n Data = \"Data\",\n Group = \"Group\",\n Display = \"Display\",\n Action = \"Action\",\n}\n\nexport interface DynamicProperty {\n type: string;\n expr: EntityExpression;\n}\n\nexport enum DynamicPropertyType {\n Visible = \"Visible\",\n DefaultValue = \"DefaultValue\",\n Readonly = \"Readonly\",\n Disabled = \"Disabled\",\n Display = \"Display\",\n Style = \"Style\",\n LayoutStyle = \"LayoutStyle\",\n AllowedOptions = \"AllowedOptions\",\n Label = \"Label\",\n ActionData = \"ActionData\",\n}\n\nexport interface EntityExpression {\n type: string;\n}\n\nexport enum ExpressionType {\n Jsonata = \"Jsonata\",\n Data = \"Data\",\n DataMatch = \"FieldValue\",\n UserMatch = \"UserMatch\",\n NotEmpty = \"NotEmpty\",\n UUID = \"UUID\",\n}\n\nexport interface JsonataExpression extends EntityExpression {\n type: ExpressionType.Jsonata;\n expression: string;\n}\n\nexport interface DataExpression extends EntityExpression {\n type: ExpressionType.Data;\n field: string;\n}\n\nexport interface DataMatchExpression extends EntityExpression {\n type: ExpressionType.DataMatch;\n field: string;\n value: any;\n}\n\nexport interface NotEmptyExpression extends EntityExpression {\n type: ExpressionType.DataMatch;\n field: string;\n}\n\nexport interface UserMatchExpression extends EntityExpression {\n type: ExpressionType.UserMatch;\n userMatch: string;\n}\n\nexport interface ControlAdornment {\n type: string;\n}\n\nexport enum AdornmentPlacement {\n ControlStart = \"ControlStart\",\n ControlEnd = \"ControlEnd\",\n LabelStart = \"LabelStart\",\n LabelEnd = \"LabelEnd\",\n}\n\nexport enum ControlAdornmentType {\n Tooltip = \"Tooltip\",\n Accordion = \"Accordion\",\n HelpText = \"HelpText\",\n Icon = \"Icon\",\n SetField = \"SetField\",\n}\n\nexport interface IconAdornment extends ControlAdornment {\n type: ControlAdornmentType.Icon;\n iconClass: string;\n placement?: AdornmentPlacement | null;\n}\n\nexport interface TooltipAdornment extends ControlAdornment {\n type: ControlAdornmentType.Tooltip;\n tooltip: string;\n}\n\nexport interface AccordionAdornment extends ControlAdornment {\n type: ControlAdornmentType.Accordion;\n title: string;\n defaultExpanded?: boolean | null;\n}\n\nexport interface HelpTextAdornment extends ControlAdornment {\n type: ControlAdornmentType.HelpText;\n helpText: string;\n placement?: AdornmentPlacement | null;\n}\n\nexport interface SetFieldAdornment extends ControlAdornment {\n type: ControlAdornmentType.SetField;\n field: string;\n defaultOnly?: boolean | null;\n expression?: EntityExpression;\n}\n\nexport interface DataControlDefinition extends ControlDefinition {\n type: ControlDefinitionType.Data;\n field: string;\n required?: boolean | null;\n renderOptions?: RenderOptions | null;\n defaultValue?: any;\n readonly?: boolean | null;\n disabled?: boolean | null;\n validators?: SchemaValidator[] | null;\n hideTitle?: boolean | null;\n dontClearHidden?: boolean | null;\n}\n\nexport interface RenderOptions {\n type: string;\n}\n\nexport enum DataRenderType {\n Standard = \"Standard\",\n Textfield = \"Textfield\",\n Radio = \"Radio\",\n HtmlEditor = \"HtmlEditor\",\n IconList = \"IconList\",\n CheckList = \"CheckList\",\n UserSelection = \"UserSelection\",\n Synchronised = \"Synchronised\",\n IconSelector = \"IconSelector\",\n DateTime = \"DateTime\",\n Checkbox = \"Checkbox\",\n Dropdown = \"Dropdown\",\n DisplayOnly = \"DisplayOnly\",\n Group = \"Group\",\n NullToggle = \"NullToggle\",\n Jsonata = \"Jsonata\",\n Array = \"Array\",\n}\n\nexport interface TextfieldRenderOptions extends RenderOptions {\n type: DataRenderType.Textfield;\n placeholder?: string | null;\n multiline?: boolean | null;\n}\n\nexport interface RadioButtonRenderOptions extends RenderOptions {\n type: DataRenderType.Radio;\n}\n\nexport interface StandardRenderer extends RenderOptions {\n type: DataRenderType.Standard;\n}\n\nexport interface DataGroupRenderOptions extends RenderOptions {\n type: DataRenderType.Group;\n groupOptions?: GroupRenderOptions;\n}\n\nexport interface HtmlEditorRenderOptions extends RenderOptions {\n type: DataRenderType.HtmlEditor;\n allowImages: boolean;\n}\n\nexport interface DateTimeRenderOptions extends RenderOptions {\n type: DataRenderType.DateTime;\n format?: string | null;\n forceMidnight?: boolean;\n}\n\nexport interface IconListRenderOptions extends RenderOptions {\n type: DataRenderType.IconList;\n iconMappings: IconMapping[];\n}\n\nexport interface DisplayOnlyRenderOptions extends RenderOptions {\n type: DataRenderType.DisplayOnly;\n emptyText?: string | null;\n sampleText?: string | null;\n}\nexport interface IconMapping {\n value: string;\n materialIcon?: string | null;\n}\n\nexport interface JsonataRenderOptions extends RenderOptions {\n type: DataRenderType.Jsonata;\n expression: string;\n}\n\nexport interface JsonataRenderOptions extends RenderOptions {\n type: DataRenderType.Jsonata;\n expression: string;\n}\n\nexport interface ArrayRenderOptions extends RenderOptions {\n type: DataRenderType.Array;\n addText?: string | null;\n addActionId?: string | null;\n removeText?: string | null;\n removeActionId?: string | null;\n noAdd?: boolean | null;\n noRemove?: boolean | null;\n noReorder?: boolean | null;\n childOptions?: RenderOptions | null;\n}\n\nexport type ArrayActionOptions = Pick<\n ArrayRenderOptions,\n | \"addText\"\n | \"addActionId\"\n | \"removeText\"\n | \"removeActionId\"\n | \"noAdd\"\n | \"noRemove\"\n | \"noReorder\"\n>;\n\nexport interface CheckListRenderOptions extends RenderOptions {\n type: DataRenderType.CheckList;\n}\n\nexport interface SynchronisedRenderOptions extends RenderOptions {\n type: DataRenderType.Synchronised;\n fieldToSync: string;\n syncType: SyncTextType;\n}\n\nexport enum SyncTextType {\n Camel = \"Camel\",\n Snake = \"Snake\",\n Pascal = \"Pascal\",\n}\n\nexport interface UserSelectionRenderOptions extends RenderOptions {\n type: DataRenderType.UserSelection;\n noGroups: boolean;\n noUsers: boolean;\n}\n\nexport interface IconSelectionRenderOptions extends RenderOptions {\n type: DataRenderType.IconSelector;\n}\n\nexport interface GroupedControlsDefinition extends ControlDefinition {\n type: ControlDefinitionType.Group;\n compoundField?: string | null;\n groupOptions?: GroupRenderOptions;\n}\n\nexport interface GroupRenderOptions {\n type: string;\n hideTitle?: boolean | null;\n}\n\nexport enum GroupRenderType {\n Standard = \"Standard\",\n Grid = \"Grid\",\n Flex = \"Flex\",\n GroupElement = \"GroupElement\",\n}\n\nexport interface StandardGroupRenderer extends GroupRenderOptions {\n type: GroupRenderType.Standard;\n}\n\nexport interface FlexRenderer extends GroupRenderOptions {\n type: GroupRenderType.Flex;\n direction?: string | null;\n gap?: string | null;\n}\n\nexport interface GroupElementRenderer extends GroupRenderOptions {\n type: GroupRenderType.GroupElement;\n value: any;\n}\n\nexport interface GridRenderer extends GroupRenderOptions {\n type: GroupRenderType.Grid;\n columns?: number | null;\n}\n\nexport interface DisplayControlDefinition extends ControlDefinition {\n type: ControlDefinitionType.Display;\n displayData: DisplayData;\n}\n\nexport interface DisplayData {\n type: string;\n}\n\nexport enum DisplayDataType {\n Text = \"Text\",\n Html = \"Html\",\n Icon = \"Icon\",\n Custom = \"Custom\",\n}\nexport interface TextDisplay extends DisplayData {\n type: DisplayDataType.Text;\n text: string;\n}\n\nexport interface IconDisplay extends DisplayData {\n type: DisplayDataType.Icon;\n iconClass: string;\n}\n\nexport interface HtmlDisplay extends DisplayData {\n type: DisplayDataType.Html;\n html: string;\n}\n\nexport interface CustomDisplay extends DisplayData {\n type: DisplayDataType.Custom;\n customId: string;\n}\n\nexport interface ActionControlDefinition extends ControlDefinition {\n type: ControlDefinitionType.Action;\n actionId: string;\n actionData?: string | null;\n}\n\nexport enum ValidatorType {\n Jsonata = \"Jsonata\",\n Date = \"Date\",\n Length = \"Length\",\n}\nexport interface SchemaValidator {\n type: string;\n}\n\nexport interface JsonataValidator extends SchemaValidator {\n type: ValidatorType.Jsonata;\n expression: string;\n}\n\nexport interface LengthValidator extends SchemaValidator {\n type: ValidatorType.Length;\n min?: number | null;\n max?: number | null;\n}\n\nexport enum DateComparison {\n NotBefore = \"NotBefore\",\n NotAfter = \"NotAfter\",\n}\n\nexport interface DateValidator extends SchemaValidator {\n type: ValidatorType.Date;\n comparison: DateComparison;\n fixedDate?: string | null;\n daysFromCurrent?: number | null;\n}\n\nexport function isDataControlDefinition(\n x: ControlDefinition,\n): x is DataControlDefinition {\n return x.type === ControlDefinitionType.Data;\n}\n\nexport function isGroupControlsDefinition(\n x: ControlDefinition,\n): x is GroupedControlsDefinition {\n return x.type === ControlDefinitionType.Group;\n}\n\nexport function isDisplayControlsDefinition(\n x: ControlDefinition,\n): x is DisplayControlDefinition {\n return x.type === ControlDefinitionType.Display;\n}\n\nexport function isActionControlsDefinition(\n x: ControlDefinition,\n): x is ActionControlDefinition {\n return x.type === ControlDefinitionType.Action;\n}\n\nexport interface ControlVisitor<A> {\n data(d: DataControlDefinition): A;\n group(d: GroupedControlsDefinition): A;\n display(d: DisplayControlDefinition): A;\n action(d: ActionControlDefinition): A;\n}\n\nexport function visitControlDefinition<A>(\n x: ControlDefinition,\n visitor: ControlVisitor<A>,\n defaultValue: (c: ControlDefinition) => A,\n): A {\n switch (x.type) {\n case ControlDefinitionType.Action:\n return visitor.action(x as ActionControlDefinition);\n case ControlDefinitionType.Data:\n return visitor.data(x as DataControlDefinition);\n case ControlDefinitionType.Display:\n return visitor.display(x as DisplayControlDefinition);\n case ControlDefinitionType.Group:\n return visitor.group(x as GroupedControlsDefinition);\n default:\n return defaultValue(x);\n }\n}\nexport function isGridRenderer(\n options: GroupRenderOptions,\n): options is GridRenderer {\n return options.type === GroupRenderType.Grid;\n}\n\nexport function isFlexRenderer(\n options: GroupRenderOptions,\n): options is FlexRenderer {\n return options.type === GroupRenderType.Flex;\n}\n\nexport function isDisplayOnlyRenderer(\n options: RenderOptions,\n): options is DisplayOnlyRenderOptions {\n return options.type === DataRenderType.DisplayOnly;\n}\n\nexport function isTextfieldRenderer(\n options: RenderOptions,\n): options is TextfieldRenderOptions {\n return options.type === DataRenderType.Textfield;\n}\n\nexport function isDataGroupRenderer(\n options: RenderOptions,\n): options is DataGroupRenderOptions {\n return options.type === DataRenderType.Group;\n}\n\nexport function isArrayRenderer(\n options: RenderOptions,\n): options is ArrayRenderOptions {\n return options.type === DataRenderType.Array;\n}\n\nexport function findField(\n fields: SchemaField[],\n field: string,\n): SchemaField | undefined {\n return fields.find((x) => x.field === field);\n}\n\nexport function isScalarField(sf: SchemaField): sf is SchemaField {\n return !isCompoundField(sf);\n}\n\nexport function isCompoundField(sf: SchemaField): sf is CompoundField {\n return sf.type === FieldType.Compound;\n}\n\nexport function isDataControl(\n c: ControlDefinition,\n): c is DataControlDefinition {\n return c.type === ControlDefinitionType.Data;\n}\n\nexport function isGroupControl(\n c: ControlDefinition,\n): c is GroupedControlsDefinition {\n return c.type === ControlDefinitionType.Group;\n}\n","import {\n CompoundField,\n FieldOption,\n FieldType,\n SchemaField,\n SchemaMap,\n isCompoundField,\n} from \"./types\";\n\nexport type AllowedSchema<T> = T extends string\n ? SchemaField & {\n type:\n | FieldType.String\n | FieldType.Date\n | FieldType.DateTime\n | FieldType.Time;\n }\n : T extends number\n ? SchemaField & {\n type: FieldType.Int | FieldType.Double;\n }\n : T extends boolean\n ? SchemaField & {\n type: FieldType.Bool;\n }\n : T extends Array<infer E>\n ? AllowedSchema<E> & {\n collection: true;\n }\n : T extends { [key: string]: any }\n ? CompoundField & {\n type: FieldType.Compound;\n }\n : SchemaField & { type: FieldType.Any };\n\ntype AllowedField<T, K> = (\n name: string,\n) => (SchemaField & { type: K }) | AllowedSchema<T>;\n\nexport function buildSchema<T, Custom = \"\">(def: {\n [K in keyof T]-?: AllowedField<T[K], Custom>;\n}): SchemaField[] {\n return Object.entries(def).map((x) =>\n (x[1] as (n: string) => SchemaField)(x[0]),\n );\n}\n\nexport type FieldBuilder<T extends FieldType, K> = (\n name: string,\n) => Omit<SchemaField, \"type\"> & { type: T } & K;\n\nexport function stringField(\n displayName: string,\n): FieldBuilder<FieldType.String, {}>;\n\nexport function stringField<S extends Partial<SchemaField>>(\n displayName: string,\n options: S,\n): FieldBuilder<FieldType.String, S>;\n\nexport function stringField(displayName: string, options?: any) {\n return makeScalarField({\n type: FieldType.String,\n displayName,\n ...options,\n });\n}\n\nexport function stringOptionsField(\n displayName: string,\n ...options: FieldOption[]\n) {\n return makeScalarField({\n type: FieldType.String as const,\n displayName,\n options,\n });\n}\n\nexport function withScalarOptions<\n S extends SchemaField,\n S2 extends Partial<SchemaField>,\n>(options: S2, v: (name: string) => S): (name: string) => S & S2 {\n return (n) => ({ ...v(n), ...options });\n}\n\nexport function makeScalarField<S extends Partial<SchemaField>>(\n options: S,\n): (name: string) => SchemaField & S {\n return (n) => ({ ...defaultScalarField(n, n), ...options });\n}\n\nexport function makeCompoundField<S extends Partial<CompoundField>>(\n options: S,\n): (name: string) => CompoundField & {\n type: FieldType.Compound;\n} & S {\n return (n) => ({ ...defaultCompoundField(n, n, false), ...options });\n}\n\nexport function intField(displayName: string): FieldBuilder<FieldType.Int, {}>;\n\nexport function intField<S extends Partial<SchemaField>>(\n displayName: string,\n options: S,\n): FieldBuilder<FieldType.Int, S>;\n\nexport function intField<S extends Partial<SchemaField>>(\n displayName: string,\n options?: S,\n) {\n return makeScalarField({\n type: FieldType.Int as const,\n displayName,\n ...(options as S),\n });\n}\n\nexport function doubleField(\n displayName: string,\n): FieldBuilder<FieldType.Double, {}>;\n\nexport function doubleField<S extends Partial<SchemaField>>(\n displayName: string,\n options: S,\n): FieldBuilder<FieldType.Double, S>;\n\nexport function doubleField<S extends Partial<SchemaField>>(\n displayName: string,\n options?: S,\n) {\n return makeScalarField({\n type: FieldType.Double as const,\n displayName,\n ...(options as S),\n });\n}\n\nexport function dateField(\n displayName: string,\n): FieldBuilder<FieldType.Date, {}>;\n\nexport function dateField<S extends Partial<SchemaField>>(\n displayName: string,\n options: S,\n): FieldBuilder<FieldType.Date, S>;\n\nexport function dateField<S extends Partial<SchemaField>>(\n displayName: string,\n options?: S,\n) {\n return makeScalarField({\n type: FieldType.Date as const,\n displayName,\n ...(options as S),\n });\n}\n\nexport function timeField<S extends Partial<SchemaField>>(\n displayName: string,\n options?: S,\n) {\n return makeScalarField({\n type: FieldType.Time as const,\n displayName,\n ...(options as S),\n });\n}\n\nexport function dateTimeField<S extends Partial<SchemaField>>(\n displayName: string,\n options?: S,\n) {\n return makeScalarField({\n type: FieldType.DateTime as const,\n displayName,\n ...(options as S),\n });\n}\n\nexport function boolField(\n displayName: string,\n): FieldBuilder<FieldType.Bool, {}>;\n\nexport function boolField<S extends Partial<SchemaField>>(\n displayName: string,\n options: S,\n): FieldBuilder<FieldType.Bool, S>;\n\nexport function boolField(displayName: string, options?: any) {\n return makeScalarField({\n type: FieldType.Bool as const,\n displayName,\n ...options,\n });\n}\n\nexport function compoundField<\n Other extends Partial<Omit<CompoundField, \"type\" | \"schemaType\">>,\n>(\n displayName: string,\n fields: SchemaField[],\n other?: Other,\n): (name: string) => CompoundField & {\n collection: Other[\"collection\"];\n} {\n return (field) =>\n ({\n ...defaultCompoundField(field, displayName, false),\n ...other,\n children: fields,\n }) as any;\n}\n\nexport function defaultScalarField(\n field: string,\n displayName: string,\n): Omit<SchemaField, \"type\"> & {\n type: FieldType.String;\n} {\n return {\n field,\n displayName,\n type: FieldType.String,\n };\n}\n\nexport function defaultCompoundField(\n field: string,\n displayName: string,\n collection: boolean,\n): CompoundField & {\n type: FieldType.Compound;\n} {\n return {\n field,\n displayName,\n type: FieldType.Compound,\n collection,\n children: [],\n };\n}\n\nexport function mergeField(\n field: SchemaField,\n mergeInto: SchemaField[],\n): SchemaField[] {\n const existing = mergeInto.find((x) => x.field === field.field);\n if (existing) {\n return mergeInto.map((x) =>\n x !== existing\n ? x\n : {\n ...x,\n onlyForTypes: mergeTypes(x.onlyForTypes, field.onlyForTypes),\n },\n );\n }\n return [...mergeInto, field];\n\n function mergeTypes(f?: string[] | null, s?: string[] | null) {\n if (!f) return s;\n if (!s) return f;\n const extras = s.filter((x) => !f.includes(x));\n return extras.length ? [...f, ...extras] : f;\n }\n}\n\nexport function mergeFields(\n fields: SchemaField[],\n name: string,\n value: any,\n newFields: SchemaField[],\n): SchemaField[] {\n const withType = fields.map((x) =>\n x.isTypeField ? addFieldOption(x, name, value) : x,\n );\n return newFields\n .map((x) => ({ ...x, onlyForTypes: [value] }))\n .reduce((af, x) => mergeField(x, af), withType);\n}\n\nexport function addFieldOption(\n typeField: SchemaField,\n name: string,\n value: any,\n): SchemaField {\n const options = typeField.options ?? [];\n if (options.some((x) => x.value === value)) return typeField;\n return {\n ...typeField,\n options: [...options, { name, value }],\n };\n}\n\nexport function resolveSchemas<A extends SchemaMap>(schemaMap: A): A {\n const out: SchemaMap = {};\n function resolveSchemaType(type: string) {\n if (type in out) {\n return out[type];\n }\n const resolvedFields: SchemaField[] = [];\n out[type] = resolvedFields;\n schemaMap[type].forEach((x) => {\n if (isCompoundField(x) && x.schemaRef) {\n resolvedFields.push({\n ...x,\n children: resolveSchemaType(x.schemaRef),\n } as CompoundField);\n } else {\n resolvedFields.push(x);\n }\n });\n return resolvedFields;\n }\n Object.keys(schemaMap).forEach(resolveSchemaType);\n return out as A;\n}\n","import {\n CompoundField,\n ControlDefinition,\n ControlDefinitionType,\n DataControlDefinition,\n DataRenderType,\n DisplayOnlyRenderOptions,\n FieldOption,\n findField,\n GroupedControlsDefinition,\n isCompoundField,\n isDataControl,\n isDataControlDefinition,\n isDisplayOnlyRenderer,\n isGroupControl,\n isGroupControlsDefinition,\n isScalarField,\n SchemaField,\n SchemaInterface,\n visitControlDefinition,\n} from \"./types\";\nimport { MutableRefObject, useCallback, useRef } from \"react\";\nimport {\n Control,\n ControlChange,\n trackControlChange,\n} from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\nimport {\n getJsonPath,\n getRootDataNode,\n getSchemaFieldList,\n SchemaDataNode,\n} from \"./treeNodes\";\n\nexport type JsonPath = string | number;\n\nexport interface ControlDataContext {\n schemaInterface: SchemaInterface;\n dataNode: SchemaDataNode | undefined;\n parentNode: SchemaDataNode;\n}\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\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\nexport function defaultValueForFields(fields: SchemaField[]): any {\n return Object.fromEntries(\n fields.map((x) => [x.field, defaultValueForField(x)]),\n );\n}\n\nexport function defaultValueForField(\n sf: SchemaField,\n required?: boolean | null,\n forceNotNull?: boolean,\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 || forceNotNull\n ? sf.collection\n ? []\n : {}\n : undefined;\n }\n if (sf.collection && sf.notNullable) {\n return [];\n }\n return undefined;\n}\n\nexport function elementValueForField(sf: SchemaField): any {\n if (isCompoundField(sf)) {\n return defaultValueForFields(sf.children);\n }\n return sf.defaultValue;\n}\n\nexport function findScalarField(\n fields: SchemaField[],\n field: string,\n): SchemaField | undefined {\n return findField(fields, field);\n}\n\nexport function findCompoundField(\n fields: SchemaField[],\n field: string,\n): CompoundField | undefined {\n return findField(fields, field) as CompoundField | undefined;\n}\n\nexport function fieldHasTag(field: SchemaField, tag: string) {\n return Boolean(field.tags?.includes(tag));\n}\n\nexport function fieldDisplayName(field: SchemaField) {\n return field.displayName ?? field.field;\n}\n\nexport function hasOptions(o: { options: FieldOption[] | undefined | null }) {\n return (o.options?.length ?? 0) > 0;\n}\n\nexport function defaultControlForField(sf: SchemaField): DataControlDefinition {\n if (isCompoundField(sf)) {\n return {\n type: ControlDefinitionType.Data,\n title: sf.displayName,\n field: sf.field,\n required: sf.required,\n children: sf.children.map(defaultControlForField),\n };\n } else if (isScalarField(sf)) {\n const htmlEditor = sf.tags?.includes(\"_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}\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\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: CompoundField,\n definition: ControlDefinition,\n): ControlDefinition[] {\n if (\n isDataControlDefinition(definition) &&\n compound.field === definition.field\n ) {\n return [definition];\n }\n if (isGroupControlsDefinition(definition)) {\n if (definition.compoundField === compound.field) return [definition];\n return (\n definition.children?.flatMap((d) =>\n findControlsForCompound(compound, d),\n ) ?? []\n );\n }\n return [];\n}\n\nexport interface ControlGroupLookup {\n groups: ControlDefinition[];\n children: Record<string, ControlGroupLookup>;\n}\nexport function findCompoundGroups(\n fields: SchemaField[],\n controls: ControlDefinition[],\n): Record<string, ControlGroupLookup> {\n return Object.fromEntries(\n fields.filter(isCompoundField).map((cf) => {\n const groups = controls.flatMap((x) => findControlsForCompound(cf, x));\n return [\n cf.field,\n {\n groups: groups.concat(\n findNonDataGroups(groups.flatMap((x) => x.children ?? [])),\n ),\n children: findCompoundGroups(\n cf.children,\n groups.flatMap((x) => x.children ?? []),\n ),\n },\n ];\n }),\n );\n}\n\nexport function existsInGroups(\n field: SchemaField,\n lookup: ControlGroupLookup,\n): [SchemaField, ControlGroupLookup][] {\n const itself = lookup.groups.find((c) =>\n c.children?.find(\n (x) =>\n (isDataControlDefinition(x) && x.field === field.field) ||\n (isGroupControlsDefinition(x) && x.compoundField === field.field),\n ),\n );\n if (!itself) return [[field, lookup]];\n if (isCompoundField(field)) {\n const childLookup = lookup.children[field.field];\n if (!childLookup) return [[field, lookup]];\n return field.children.flatMap((c) => existsInGroups(c, childLookup));\n }\n return [];\n}\n\nexport function findNonDataGroups(\n controls: ControlDefinition[],\n): ControlDefinition[] {\n return controls.flatMap((control) =>\n isGroupControlsDefinition(control) && !control.compoundField\n ? [control, ...findNonDataGroups(control.children ?? [])]\n : [],\n );\n}\n\nfunction cloneChildren(c: ControlDefinition): ControlDefinition {\n return { ...c, children: c.children?.map(cloneChildren) };\n}\n\nexport function addMissingControls(\n fields: SchemaField[],\n controls: ControlDefinition[],\n) {\n controls = controls.map(cloneChildren);\n const rootMapping = findCompoundGroups(fields, controls);\n const rootGroups = findNonDataGroups([\n {\n type: ControlDefinitionType.Group,\n children: controls,\n },\n ]);\n const rootLookup = { children: rootMapping, groups: rootGroups };\n const missingFields = fields\n .filter((x) => !fieldHasTag(x, \"_NoControl\"))\n .flatMap((x) => existsInGroups(x, rootLookup));\n missingFields.forEach(([f, lookup]) => {\n const groupToAdd = f.tags?.find((x) => x.startsWith(\"_ControlGroup:\"));\n let insertGroup: ControlDefinition | undefined = undefined;\n if (groupToAdd) {\n const groupName = groupToAdd.substring(14);\n insertGroup = lookup.groups.find((x) => x.title === groupName);\n }\n if (!insertGroup) insertGroup = lookup.groups[0];\n if (insertGroup) {\n const newControl = defaultControlForField(f);\n if (insertGroup.children) insertGroup.children.push(newControl);\n else insertGroup.children = [newControl];\n }\n });\n return controls;\n}\nexport function useUpdatedRef<A>(a: A): MutableRefObject<A> {\n const r = useRef(a);\n r.current = a;\n return r;\n}\n\nexport function isControlReadonly(c: ControlDefinition): boolean {\n return isDataControl(c) && !!c.readonly;\n}\n\nexport function isControlDisabled(c: ControlDefinition): boolean {\n return isDataControl(c) && !!c.disabled;\n}\n\nexport function getDisplayOnlyOptions(\n d: ControlDefinition,\n): DisplayOnlyRenderOptions | undefined {\n return isDataControlDefinition(d) &&\n d.renderOptions &&\n isDisplayOnlyRenderer(d.renderOptions)\n ? d.renderOptions\n : undefined;\n}\n\nexport function cleanDataForSchema(\n v: { [k: string]: any } | undefined,\n fields: SchemaField[],\n removeIfDefault?: boolean,\n): any {\n if (!v) return v;\n const typeField = fields.find((x) => x.isTypeField);\n const typeValue = typeField ? v[typeField.field] : 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 childFields = x.treeChildren ? fields : x.children;\n if (x.collection) {\n if (Array.isArray(childValue)) {\n out[x.field] = childValue.map((cv) =>\n cleanDataForSchema(cv, childFields, removeIfDefault),\n );\n }\n } else {\n out[x.field] = cleanDataForSchema(\n childValue,\n childFields,\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\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 tc = clsx(\n [\n c.styleClass,\n c.layoutClass,\n c.labelClass,\n ...(collectExtra?.(c) ?? []),\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\nexport function jsonPathString(\n jsonPath: JsonPath[],\n customIndex?: (n: number) => string,\n) {\n let out = \"\";\n jsonPath.forEach((v, i) => {\n if (typeof v === \"number\") {\n out += customIndex?.(v) ?? \"[\" + v + \"]\";\n } else {\n if (i > 0) out += \".\";\n out += v;\n }\n });\n return out;\n}\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\nexport function getOverrideClass(className?: string | null) {\n if (className && className.startsWith(\"@ \")) {\n return className.substring(2);\n }\n return className;\n}\n\nexport function rendererClass(\n controlClass?: string | null,\n globalClass?: string | null,\n) {\n const oc = getOverrideClass(controlClass);\n if (oc === controlClass) return clsx(controlClass, globalClass);\n return oc ? oc : undefined;\n}\n\nexport type HookDep = string | number | undefined | null;\n\nexport interface DynamicHookGenerator<A, P> {\n deps: HookDep;\n state: any;\n runHook(ctx: P, state: any): A;\n}\n\nexport function makeHook<A, P, S = undefined>(\n runHook: (ctx: P, state: S) => A,\n state: S,\n deps?: HookDep,\n): DynamicHookGenerator<A, P> {\n return { deps, state, runHook };\n}\n\nexport type DynamicHookValue<A> =\n A extends DynamicHookGenerator<infer V, any> ? V : never;\n\nexport function makeHookDepString<A>(\n deps: A[],\n asHookDep: (a: A) => HookDep,\n): string {\n return deps.map((x) => toDepString(asHookDep(x))).join(\",\");\n}\nexport function useDynamicHooks<\n P,\n Hooks extends Record<string, DynamicHookGenerator<any, P>>,\n>(\n hooks: Hooks,\n): (p: P) => {\n [K in keyof Hooks]: DynamicHookValue<Hooks[K]>;\n} {\n const hookEntries = Object.entries(hooks);\n const deps = makeHookDepString(hookEntries, (x) => x[1].deps);\n const ref = useRef<Record<string, any>>({});\n const s = ref.current;\n hookEntries.forEach((x) => (s[x[0]] = x[1].state));\n return useCallback(\n (p: P) => {\n return Object.fromEntries(\n hookEntries.map(([f, hg]) => [f, hg.runHook(p, ref.current[f])]),\n ) as any;\n },\n [deps],\n );\n}\n\nexport function toDepString(x: any): string {\n if (x === undefined) return \"_\";\n if (x === null) return \"~\";\n return x.toString();\n}\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\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\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","import {\n AccordionAdornment,\n CheckListRenderOptions,\n ControlAdornmentType,\n ControlDefinition,\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 RadioButtonRenderOptions,\n RenderOptions,\n SchemaField,\n SchemaMap,\n TextDisplay,\n TextfieldRenderOptions,\n ValidatorType,\n} from \"./types\";\nimport { ActionRendererProps } from \"./controlRender\";\nimport { useMemo } from \"react\";\nimport { addMissingControls } from \"./util\";\nimport { mergeFields, resolveSchemas } from \"./schemaBuilder\";\nimport { ActionControlDefinition, ControlDefinitionType } 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 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,\n): ActionRendererProps {\n return { actionId, onClick, actionText: actionText ?? actionId };\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: GroupedControlsDefinition;\n}\n\nexport interface CustomRenderOptions {\n value: string;\n name: string;\n fields?: SchemaField[];\n groups?: EditorGroup[];\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};\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) => 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","import { Control } from \"@react-typed-forms/core\";\nimport {\n CompoundField,\n ControlDefinition,\n ControlDefinitionType,\n FieldType,\n isDataControlDefinition,\n isGroupControlsDefinition,\n SchemaField,\n isCompoundField,\n DataControlDefinition,\n visitControlDefinition,\n GroupedControlsDefinition,\n} from \"./types\";\n\nconst MissingField: SchemaField = { field: \"__missing\", type: FieldType.Any };\n\nexport interface FormNode {\n definition: ControlDefinition;\n getChildNodes(): FormNode[];\n parent?: FormNode;\n}\n\nexport interface FormTreeLookup<A = string> {\n getForm(formId: A): FormTreeNode | undefined;\n}\nexport interface FormTreeNode extends FormTreeLookup {\n rootNode: FormNode;\n}\n\nexport interface SchemaTreeLookup<A = string> {\n getSchema(schemaId: A): SchemaNode | undefined;\n}\n\nexport interface SchemaNode extends SchemaTreeLookup {\n field: SchemaField;\n getChildNode(field: string): SchemaNode | undefined;\n getChildNodes(): SchemaNode[];\n parent?: SchemaNode;\n}\n\nexport interface SchemaDataNode {\n schema: SchemaNode;\n elementIndex?: number;\n control?: Control<unknown>;\n parent?: SchemaDataNode;\n getChild(node: SchemaNode): SchemaDataNode;\n getChildElement(index: number): SchemaDataNode;\n}\n\nfunction nodeForSchema(\n field: SchemaField,\n lookup: SchemaTreeLookup,\n parent: SchemaNode | undefined,\n): SchemaNode {\n const node = {\n field,\n getSchema: lookup.getSchema,\n parent,\n getChildNode,\n getChildNodes,\n };\n return node;\n\n function getChildNode(fieldName: string) {\n if (isCompoundField(field) && !field.schemaRef) {\n const childField = field.children.find((x) => x.field === fieldName);\n return childField ? nodeForSchema(childField, lookup, node) : undefined;\n }\n return getChildNodes().find((x) => x.field.field === fieldName);\n }\n function getChildNodes(): SchemaNode[] {\n if (isCompoundField(field)) {\n const otherRef = field.schemaRef && lookup.getSchema(field.schemaRef);\n if (otherRef) return otherRef.getChildNodes();\n return field.children.map((x) => nodeForSchema(x, lookup, node));\n }\n return [];\n }\n}\n\nexport function createSchemaLookup<A extends Record<string, SchemaField[]>>(\n schemaMap: A,\n): SchemaTreeLookup<keyof A> {\n const lookup = {\n getSchema,\n };\n return lookup;\n\n function getSchema(schemaId: keyof A): SchemaNode | undefined {\n const fields = schemaMap[schemaId];\n if (fields) {\n return rootSchemaNode(fields, lookup);\n }\n return undefined;\n }\n}\n\nfunction nodeForControl(\n definition: ControlDefinition,\n parent?: FormNode,\n): FormNode {\n const node = { definition, parent, getChildNodes };\n return node;\n function getChildNodes(): FormNode[] {\n return definition.children?.map((x) => nodeForControl(x, node)) ?? [];\n }\n}\nexport function createFormLookup<A extends Record<string, ControlDefinition[]>>(\n formMap: A,\n): FormTreeLookup<keyof A> {\n const lookup = {\n getForm,\n };\n return lookup;\n\n function getForm(formId: keyof A): FormTreeNode | undefined {\n const controls = formMap[formId];\n if (controls) {\n return {\n rootNode: nodeForControl({\n children: controls,\n type: ControlDefinitionType.Group,\n }),\n getForm,\n };\n }\n return undefined;\n }\n}\n\nexport function makeSchemaDataNode(\n schema: SchemaNode,\n control?: Control<unknown>,\n parent?: SchemaDataNode,\n elementIndex?: number,\n): SchemaDataNode {\n const dataNode = {\n schema,\n control,\n parent,\n elementIndex,\n getChild,\n getChildElement,\n };\n return dataNode;\n\n function getChild(schemaNode: SchemaNode): SchemaDataNode {\n const objControl = control as Control<Record<string, unknown>>;\n if (objControl && objControl.current.isNull) {\n objControl.value = {};\n }\n return makeSchemaDataNode(\n schemaNode,\n objControl?.fields?.[schemaNode.field.field],\n dataNode,\n );\n }\n function getChildElement(elementIndex: number): SchemaDataNode {\n return makeSchemaDataNode(\n schema,\n (control as Control<unknown[]>)?.elements?.[elementIndex],\n dataNode,\n elementIndex,\n );\n }\n}\n\nexport function fieldPathForDefinition(\n c: ControlDefinition,\n): string[] | undefined {\n const fieldName = isGroupControlsDefinition(c)\n ? c.compoundField\n : isDataControlDefinition(c)\n ? c.field\n : undefined;\n return fieldName?.split(\"/\");\n}\n\nexport function schemaDataForFieldRef(\n fieldRef: string | undefined,\n schema: SchemaDataNode,\n): SchemaDataNode {\n return schemaDataForFieldPath(fieldRef?.split(\"/\") ?? [], schema);\n}\n\nexport function schemaForFieldRef(\n fieldRef: string | undefined,\n schema: SchemaNode,\n): SchemaNode {\n return schemaForFieldPath(fieldRef?.split(\"/\") ?? [], schema);\n}\n\nexport function schemaDataForFieldPath(\n fieldPath: string[],\n schema: SchemaDataNode,\n): SchemaDataNode {\n let i = 0;\n while (i < fieldPath.length) {\n const nextField = fieldPath[i];\n const node = schema.schema;\n let childNode = node.getChildNode(nextField);\n if (!childNode) {\n childNode = nodeForSchema(MissingField, node, node);\n }\n schema = schema.getChild(childNode);\n i++;\n }\n return schema;\n}\n\nexport function schemaForFieldPath(\n fieldPath: string[],\n schema: SchemaNode,\n): SchemaNode {\n let i = 0;\n while (i < fieldPath.length) {\n const nextField = fieldPath[i];\n let childNode = schema.getChildNode(nextField);\n if (!childNode) {\n childNode = nodeForSchema(MissingField, schema, schema);\n }\n schema = childNode;\n i++;\n }\n return schema;\n}\n\nexport function traverseParents<A, B extends { parent?: B | undefined }>(\n current: B | undefined,\n get: (b: B) => A,\n until?: (b: B) => boolean,\n): A[] {\n let outArray: A[] = [];\n while (current && !until?.(current)) {\n outArray.push(get(current));\n current = current.parent;\n }\n return outArray.reverse();\n}\n\nexport function getRootDataNode(dataNode: SchemaDataNode) {\n while (dataNode.parent) {\n dataNode = dataNode.parent;\n }\n return dataNode;\n}\n\nexport function getJsonPath(dataNode: SchemaDataNode) {\n return traverseParents(\n dataNode,\n (d) => (d.elementIndex == null ? d.schema.field.field : d.elementIndex),\n (x) => !x.parent,\n );\n}\n\nexport function getSchemaPath(schemaNode: SchemaNode): SchemaField[] {\n return traverseParents(\n schemaNode,\n (d) => d.field,\n (x) => !x.parent,\n );\n}\n\nexport function getSchemaFieldList(schema: SchemaNode): SchemaField[] {\n return schema.getChildNodes().map((x) => x.field);\n}\n\nexport function rootSchemaNode(\n fields: SchemaField[],\n lookup: SchemaTreeLookup = {\n getSchema(schemaId: string): SchemaNode | undefined {\n return undefined;\n },\n },\n): SchemaNode {\n return nodeForSchema(\n {\n type: FieldType.Compound,\n field: \"\",\n children: fields,\n } as CompoundField,\n lookup,\n undefined,\n );\n}\n\nexport function visitControlDataArray<A>(\n controls: ControlDefinition[] | undefined | null,\n context: SchemaDataNode,\n cb: (\n definition: DataControlDefinition,\n node: SchemaDataNode,\n ) => A | undefined,\n): A | undefined {\n if (!controls) return undefined;\n for (const c of controls) {\n const r = visitControlData(c, context, cb);\n if (r !== undefined) return r;\n }\n return undefined;\n}\n\nexport function visitControlData<A>(\n definition: ControlDefinition,\n ctx: SchemaDataNode,\n cb: (\n definition: DataControlDefinition,\n field: SchemaDataNode,\n ) => A | undefined,\n): A | undefined {\n if (!ctx.control || ctx.control.isNull) return undefined;\n return visitControlDefinition<A | undefined>(\n definition,\n {\n data(def: DataControlDefinition) {\n return processData(def, def.field, def.children);\n },\n group(d: GroupedControlsDefinition) {\n return processData(undefined, d.compoundField, d.children);\n },\n action: () => undefined,\n display: () => undefined,\n },\n () => undefined,\n );\n\n function processData(\n def: DataControlDefinition | undefined,\n fieldName: string | undefined | null,\n children: ControlDefinition[] | null | undefined,\n ) {\n const fieldNode = fieldName\n ? ctx.schema.getChildNode(fieldName)\n : undefined;\n if (!fieldNode)\n return !fieldName ? visitControlDataArray(children, ctx, cb) : undefined;\n const childNode = ctx.getChild(fieldNode);\n const result = def ? cb(def, childNode) : undefined;\n if (result !== undefined) return result;\n const compound = isCompoundField(fieldNode.field);\n if (fieldNode.field.collection) {\n const control = childNode.control as Control<unknown[]>;\n let cIndex = 0;\n for (const c of control!.elements ?? []) {\n const elemChild = childNode.getChildElement(cIndex);\n const elemResult = def ? cb(def, elemChild) : undefined;\n if (elemResult !== undefined) return elemResult;\n if (compound) {\n const cfResult = visitControlDataArray(children, elemChild, cb);\n if (cfResult !== undefined) return cfResult;\n }\n cIndex++;\n }\n } else if (compound) {\n return visitControlDataArray(children, childNode, cb);\n }\n return undefined;\n }\n}\n","import {\n ControlDefinition,\n DataExpression,\n DataMatchExpression,\n DynamicPropertyType,\n EntityExpression,\n ExpressionType,\n isDataControlDefinition,\n JsonataExpression,\n NotEmptyExpression,\n SchemaInterface,\n} from \"./types\";\nimport React, { useEffect, useMemo, useRef } from \"react\";\nimport {\n addAfterChangesCallback,\n collectChanges,\n Control,\n makeChangeTracker,\n trackedValue,\n useCalculatedControl,\n useComputed,\n useControl,\n useRefState,\n} from \"@react-typed-forms/core\";\n\nimport {\n ControlDataContext,\n defaultValueForField,\n DynamicHookGenerator,\n elementValueForField,\n getDisplayOnlyOptions,\n HookDep,\n isControlDisabled,\n isControlReadonly,\n JsonPath,\n jsonPathString,\n toDepString,\n} from \"./util\";\nimport jsonata from \"jsonata\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport {\n getJsonPath,\n getRootDataNode,\n schemaDataForFieldRef,\n SchemaDataNode,\n} from \"./treeNodes\";\n\nexport type EvalExpressionHook<A = any> = DynamicHookGenerator<\n Control<A | undefined>,\n ControlDataContext\n>;\n\nexport type UseEvalExpressionHook = (\n expr: EntityExpression | undefined,\n coerce: (v: any) => any,\n) => DynamicHookGenerator<Control<any> | undefined, ControlDataContext>;\n\nexport function useEvalVisibilityHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n definition: ControlDefinition,\n overrideDataNode?: SchemaDataNode,\n): EvalExpressionHook<boolean> {\n const dynamicVisibility = useEvalDynamicBoolHook(\n definition,\n DynamicPropertyType.Visible,\n useEvalExpressionHook,\n );\n return makeDynamicPropertyHook(\n dynamicVisibility,\n (ctx, { definition, overrideDataNode }) =>\n useComputed(() => {\n const dataNode = overrideDataNode ?? ctx.dataNode;\n return (\n !dataNode ||\n (matchesType(dataNode) &&\n !hideDisplayOnly(dataNode, ctx.schemaInterface, definition))\n );\n }),\n { definition, overrideDataNode },\n );\n}\n\nexport function useEvalReadonlyHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n definition: ControlDefinition,\n): EvalExpressionHook<boolean> {\n const dynamicReadonly = useEvalDynamicBoolHook(\n definition,\n DynamicPropertyType.Readonly,\n useEvalExpressionHook,\n );\n return makeDynamicPropertyHook(\n dynamicReadonly,\n (ctx, { definition }) =>\n useCalculatedControl(() => isControlReadonly(definition)),\n { definition },\n );\n}\n\nexport function useEvalStyleHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n property: DynamicPropertyType,\n definition: ControlDefinition,\n): EvalExpressionHook<React.CSSProperties> {\n const dynamicStyle = useEvalDynamicHook(\n definition,\n property,\n useEvalExpressionHook,\n );\n return makeDynamicPropertyHook(\n dynamicStyle,\n () => useControl(undefined),\n undefined,\n );\n}\n\nexport function useEvalAllowedOptionsHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n definition: ControlDefinition,\n): EvalExpressionHook<any[]> {\n const dynamicAllowed = useEvalDynamicHook(\n definition,\n DynamicPropertyType.AllowedOptions,\n useEvalExpressionHook,\n );\n return makeDynamicPropertyHook(\n dynamicAllowed,\n () => useControl([]),\n undefined,\n );\n}\n\nexport function useEvalDisabledHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n definition: ControlDefinition,\n): EvalExpressionHook<boolean> {\n const dynamicDisabled = useEvalDynamicBoolHook(\n definition,\n DynamicPropertyType.Disabled,\n useEvalExpressionHook,\n );\n return makeDynamicPropertyHook(\n dynamicDisabled,\n (ctx) =>\n useComputed(() => {\n const dataControl = ctx.dataNode?.control;\n const setToNull = dataControl?.meta[\"nullControl\"]?.value === false;\n return setToNull || isControlDisabled(definition);\n }),\n undefined,\n );\n}\n\nexport function useEvalDisplayHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n definition: ControlDefinition,\n): DynamicHookGenerator<\n Control<string | undefined> | undefined,\n ControlDataContext\n> {\n return useEvalDynamicHook(\n definition,\n DynamicPropertyType.Display,\n useEvalExpressionHook,\n );\n}\nexport function useEvalDefaultValueHook(\n useEvalExpressionHook: UseEvalExpressionHook,\n definition: ControlDefinition,\n): EvalExpressionHook {\n const dynamicValue = useEvalDynamicHook(\n definition,\n DynamicPropertyType.DefaultValue,\n useEvalExpressionHook,\n );\n return makeDynamicPropertyHook(\n dynamicValue,\n (ctx, { definition }) => {\n return useComputed(calcDefault);\n function calcDefault() {\n const [required, dcv] = isDataControlDefinition(definition)\n ? [definition.required, definition.defaultValue]\n : [false, undefined];\n const field = ctx.dataNode?.schema.field;\n return (\n dcv ??\n (field\n ? ctx.dataNode!.elementIndex != null\n ? elementValueForField(field)\n : defaultValueForField(field, required, true)\n : undefined)\n );\n }\n },\n { definition },\n );\n}\n\nfunction useDataExpression(\n fvExpr: DataExpression,\n node: SchemaDataNode,\n coerce: (v: any) => any = (x) => x,\n) {\n const otherField = schemaDataForFieldRef(fvExpr.field, node);\n return useCalculatedControl(() => coerce(otherField.control?.value));\n}\n\nfunction useDataMatchExpression(\n fvExpr: DataMatchExpression,\n node: SchemaDataNode,\n coerce: (v: any) => any = (x) => x,\n) {\n const otherField = schemaDataForFieldRef(fvExpr.field, node);\n return useCalculatedControl(() => {\n const fv = otherField.control?.value;\n return coerce(\n Array.isArray(fv) ? fv.includes(fvExpr.value) : fv === fvExpr.value,\n );\n });\n}\n\nfunction useNotEmptyExpression(\n fvExpr: NotEmptyExpression,\n node: SchemaDataNode,\n schemaInterface: SchemaInterface,\n coerce: (v: any) => any = (x) => x,\n) {\n const otherField = schemaDataForFieldRef(fvExpr.field, node);\n return useCalculatedControl(() => {\n const fv = otherField.control?.value;\n const field = otherField.schema.field;\n return coerce(field && !schemaInterface.isEmptyValue(field, fv));\n });\n}\n\nexport function defaultEvalHooks(\n expr: EntityExpression,\n context: ControlDataContext,\n coerce: (v: any) => any,\n) {\n switch (expr.type) {\n case ExpressionType.Jsonata:\n return useJsonataExpression(\n (expr as JsonataExpression).expression,\n getRootDataNode(context.parentNode).control!,\n getJsonPath(context.parentNode),\n undefined,\n coerce,\n );\n case ExpressionType.UUID:\n return useUuidExpression(coerce);\n case ExpressionType.Data:\n return useDataExpression(\n expr as DataExpression,\n context.parentNode,\n coerce,\n );\n case ExpressionType.DataMatch:\n return useDataMatchExpression(\n expr as DataMatchExpression,\n context.parentNode,\n coerce,\n );\n case ExpressionType.NotEmpty:\n return useNotEmptyExpression(\n expr as NotEmptyExpression,\n context.parentNode,\n context.schemaInterface,\n coerce,\n );\n default:\n return useControl(undefined);\n }\n}\n\nexport const defaultUseEvalExpressionHook =\n makeEvalExpressionHook(defaultEvalHooks);\n\nexport function makeEvalExpressionHook(\n f: (\n expr: EntityExpression,\n context: ControlDataContext,\n coerce: (v: any) => any,\n ) => Control<any>,\n): UseEvalExpressionHook {\n return (expr, coerce) => ({\n deps: expr?.type,\n state: expr && expr.type ? expr : undefined,\n runHook: (ctx: ControlDataContext, state: EntityExpression | undefined) => {\n return state ? f(state, ctx, coerce) : undefined;\n },\n });\n}\n\nexport function useEvalDynamicBoolHook(\n definition: ControlDefinition,\n type: DynamicPropertyType,\n useEvalExpressionHook: UseEvalExpressionHook,\n): DynamicHookGenerator<Control<any> | undefined, ControlDataContext> {\n return useEvalDynamicHook(definition, type, useEvalExpressionHook, (x) =>\n Boolean(x),\n );\n}\n\nexport function useEvalDynamicHook(\n definition: ControlDefinition,\n type: DynamicPropertyType,\n useEvalExpressionHook: UseEvalExpressionHook,\n coerce: (v: any) => any = (x) => x,\n): DynamicHookGenerator<Control<any> | undefined, ControlDataContext> {\n const expression = definition.dynamic?.find((x) => x.type === type);\n return useEvalExpressionHook(expression?.expr, coerce);\n}\n\nexport function matchesType(context: SchemaDataNode): boolean {\n const types = context.schema.field.onlyForTypes;\n if (types == null || types.length === 0) return true;\n const parent = context.parent!;\n const typeNode = parent.schema\n .getChildNodes()\n .find((x) => x.field.isTypeField);\n if (typeNode == null) return true;\n const typeField = parent.getChild(typeNode).control as Control<string>;\n return typeField && types.includes(typeField.value);\n}\n\nexport function hideDisplayOnly(\n context: SchemaDataNode,\n schemaInterface: SchemaInterface,\n definition: ControlDefinition,\n) {\n const displayOptions = getDisplayOnlyOptions(definition);\n return (\n displayOptions &&\n !displayOptions.emptyText &&\n schemaInterface.isEmptyValue(context.schema.field, context.control?.value)\n );\n}\n\nexport function useUuidExpression(coerce: (v: any) => any = (x) => x) {\n return useControl(() => coerce(uuidv4()));\n}\n\nexport function useJsonataExpression(\n jExpr: string,\n data: Control<any>,\n path: JsonPath[],\n bindings?: () => Record<string, any>,\n coerce: (v: any) => any = (x) => x,\n): Control<any> {\n const pathString = jsonPathString(path, (x) => `#$i[${x}]`);\n const fullExpr = pathString ? pathString + \".(\" + jExpr + \")\" : jExpr;\n const compiledExpr = useMemo(() => {\n try {\n return jsonata(fullExpr);\n } catch (e) {\n console.error(e);\n return jsonata(\"null\");\n }\n }, [fullExpr]);\n const control = useControl();\n const listenerRef = useRef<() => void>();\n const updateRef = useRef(0);\n const [ref] = useRefState(() =>\n makeChangeTracker(() => {\n const l = listenerRef.current;\n if (l) {\n listenerRef.current = undefined;\n addAfterChangesCallback(() => {\n listenerRef.current = l;\n l();\n });\n }\n }),\n );\n useEffect(() => {\n listenerRef.current = apply;\n apply();\n async function apply() {\n const [collect, updateSubscriptions] = ref.current;\n try {\n updateRef.current++;\n const bindingData = bindings\n ? collectChanges(collect, bindings)\n : undefined;\n control.value = coerce(\n await compiledExpr.evaluate(trackedValue(data, collect), bindingData),\n );\n } finally {\n if (!--updateRef.current) updateSubscriptions();\n }\n }\n return () => ref.current[1](true);\n }, [compiledExpr]);\n return control;\n}\n\nexport function useEvalActionHook(\n useExpr: UseEvalExpressionHook,\n definition: ControlDefinition,\n): EvalExpressionHook<string | null> {\n const dynamicValue = useEvalDynamicHook(\n definition,\n DynamicPropertyType.ActionData,\n useExpr,\n );\n return makeDynamicPropertyHook(\n dynamicValue,\n () => useControl(null),\n undefined,\n );\n}\n\nexport function useEvalLabelText(\n useExpr: UseEvalExpressionHook,\n definition: ControlDefinition,\n): EvalExpressionHook<string | null> {\n const dynamicValue = useEvalDynamicHook(\n definition,\n DynamicPropertyType.Label,\n useExpr,\n );\n return makeDynamicPropertyHook(\n dynamicValue,\n () => useControl(null),\n undefined,\n );\n}\n\nfunction makeDynamicPropertyHook<A, S = undefined>(\n dynamicValue: DynamicHookGenerator<\n Control<any> | undefined,\n ControlDataContext\n >,\n makeDefault: (ctx: ControlDataContext, s: S) => Control<A | undefined>,\n state: S,\n deps?: HookDep,\n): EvalExpressionHook<A> {\n return {\n deps:\n deps === undefined\n ? dynamicValue.deps\n : [deps, dynamicValue.deps].map(toDepString).join(),\n runHook: (ctx, s) => {\n return dynamicValue.runHook(ctx, s[0]) ?? makeDefault(ctx, s[1]);\n },\n state: [dynamicValue.state, state],\n };\n}\n","import {\n ControlDefinition,\n DataControlDefinition,\n DateComparison,\n DateValidator,\n isDataControlDefinition,\n JsonataValidator,\n LengthValidator,\n SchemaField,\n SchemaValidator,\n ValidationMessageType,\n ValidatorType,\n} from \"./types\";\nimport {\n Control,\n useValidator,\n useValueChangeEffect,\n} from \"@react-typed-forms/core\";\nimport { useCallback } from \"react\";\nimport { ControlDataContext, makeHookDepString, useUpdatedRef } from \"./util\";\nimport { useJsonataExpression } from \"./hooks\";\nimport { getJsonPath, getRootDataNode } from \"./treeNodes\";\n\ninterface ValidationHookContext {\n hiddenControl: Control<boolean | null | undefined>;\n dataContext: ControlDataContext;\n control: Control<any>;\n}\n\nexport interface ValidationContext extends ValidationHookContext {\n definition: DataControlDefinition;\n field: SchemaField;\n index: number;\n}\n\nexport function useMakeValidationHook(\n definition: ControlDefinition,\n useValidatorFor: (\n validator: SchemaValidator,\n ctx: ValidationContext,\n ) => void = useDefaultValidator,\n): (ctx: ValidationHookContext) => void {\n const dd = isDataControlDefinition(definition) ? definition : undefined;\n const refData = useUpdatedRef({ dd, useValidatorFor });\n const depString = makeHookDepString(dd?.validators ?? [], (x) => x.type);\n return useCallback(\n (ctx) => {\n const field = ctx.dataContext.dataNode?.schema.field;\n const { dd } = refData.current;\n if (!dd || !field) return;\n const {\n control,\n hiddenControl,\n dataContext: { schemaInterface },\n } = ctx;\n\n useValueChangeEffect(control, () => control.setError(\"default\", \"\"));\n useValidator(\n control,\n (v) =>\n !hiddenControl.value &&\n dd.required &&\n schemaInterface.isEmptyValue(field, v)\n ? schemaInterface.validationMessageText(\n field,\n ValidationMessageType.NotEmpty,\n false,\n true,\n )\n : null,\n \"required\",\n undefined,\n [dd.required],\n );\n dd.validators?.forEach((v, i) =>\n useValidatorFor(v, { ...ctx, index: i, field, definition: dd }),\n );\n },\n [!!dd, depString, useValidatorFor],\n );\n}\n\nfunction useDefaultValidator(\n validator: SchemaValidator,\n ctx: ValidationContext,\n) {\n switch (validator.type) {\n case ValidatorType.Length:\n useLengthValidator(validator as LengthValidator, ctx);\n break;\n case ValidatorType.Jsonata:\n useJsonataValidator(validator as JsonataValidator, ctx);\n break;\n case ValidatorType.Date:\n useDateValidator(validator as DateValidator, ctx);\n break;\n }\n}\n\nexport function useJsonataValidator(\n validator: JsonataValidator,\n ctx: ValidationContext,\n) {\n const sdn = ctx.dataContext.parentNode;\n const errorMsg = useJsonataExpression(\n validator.expression,\n getRootDataNode(sdn).control!,\n getJsonPath(sdn),\n undefined,\n (v) => (v == null ? null : typeof v === \"string\" ? v : JSON.stringify(v)),\n );\n useValidator(\n ctx.control,\n () => (!ctx.hiddenControl.value ? errorMsg.value : null),\n \"jsonata\" + ctx.index,\n );\n}\n\nexport function useLengthValidator(\n lv: LengthValidator,\n ctx: ValidationContext,\n) {\n const {\n control,\n dataContext: { schemaInterface },\n hiddenControl,\n field,\n } = ctx;\n useValidator(\n control,\n (v) => {\n const len = schemaInterface.controlLength(field, control);\n const hidden = hiddenControl.value;\n if (hidden) {\n return undefined;\n }\n if (lv.min != null && len < lv.min) {\n if (field?.collection) {\n control.setValue((v) =>\n Array.isArray(v)\n ? v.concat(Array.from({ length: lv.min! - v.length }))\n : Array.from({ length: lv.min! }),\n );\n } else {\n return schemaInterface.validationMessageText(\n field,\n ValidationMessageType.MinLength,\n len,\n lv.min,\n );\n }\n } else if (lv.max != null && len > lv.max) {\n return schemaInterface.validationMessageText(\n field,\n ValidationMessageType.MaxLength,\n len,\n lv.max,\n );\n }\n return undefined;\n },\n \"length\" + ctx.index,\n );\n}\n\nexport function useDateValidator(dv: DateValidator, ctx: ValidationContext) {\n const {\n control,\n field,\n index,\n dataContext: { schemaInterface },\n } = ctx;\n let comparisonDate: number;\n if (dv.fixedDate) {\n comparisonDate = schemaInterface.parseToMillis(field, dv.fixedDate);\n } else {\n const nowDate = new Date();\n comparisonDate = Date.UTC(\n nowDate.getFullYear(),\n nowDate.getMonth(),\n nowDate.getDate(),\n );\n if (dv.daysFromCurrent) {\n comparisonDate += dv.daysFromCurrent * 86400000;\n }\n }\n useValidator(\n control,\n (v) => {\n if (v) {\n const selDate = schemaInterface.parseToMillis(field, v);\n const notAfter = dv.comparison === DateComparison.NotAfter;\n if (notAfter ? selDate > comparisonDate : selDate < comparisonDate) {\n return schemaInterface.validationMessageText(\n field,\n notAfter\n ? ValidationMessageType.NotAfterDate\n : ValidationMessageType.NotBeforeDate,\n selDate,\n comparisonDate,\n );\n }\n }\n return null;\n },\n \"date\" + index,\n );\n}\n","export function cc(n: string | null | undefined): string | undefined {\n return n ? n : undefined;\n}\n","import {\n FieldOption,\n FieldType,\n SchemaField,\n SchemaInterface,\n ValidationMessageType,\n} from \"./types\";\nimport { Control } from \"@react-typed-forms/core\";\nimport {SchemaDataNode, SchemaNode} from \"./treeNodes\";\n\nexport class DefaultSchemaInterface implements SchemaInterface {\n constructor(protected boolStrings: [string, string] = [\"No\", \"Yes\"]) {}\n\n parseToMillis(field: SchemaField, v: string): number {\n return Date.parse(v);\n }\n validationMessageText(\n field: SchemaField,\n messageType: ValidationMessageType,\n actual: any,\n expected: any,\n ): string {\n switch (messageType) {\n case ValidationMessageType.NotEmpty:\n return \"Please enter a value\";\n case ValidationMessageType.MinLength:\n return \"Length must be at least \" + expected;\n case ValidationMessageType.MaxLength:\n return \"Length must be less than \" + expected;\n case ValidationMessageType.NotBeforeDate:\n return `Date must not be before ${new Date(expected).toDateString()}`;\n case ValidationMessageType.NotAfterDate:\n return `Date must not be after ${new Date(expected).toDateString()}`;\n default:\n return \"Unknown error\";\n }\n }\n\n getOptions({ options }: SchemaField): FieldOption[] | null | undefined {\n return options && options.length > 0 ? options : null;\n }\n\n getFilterOptions(array: SchemaDataNode, field: SchemaNode): FieldOption[] | undefined | null {\n return this.getOptions(field.field);\n }\n\n isEmptyValue(f: SchemaField, value: any): boolean {\n if (f.collection)\n return Array.isArray(value) ? value.length === 0 : value == null;\n switch (f.type) {\n case FieldType.String:\n case FieldType.DateTime:\n case FieldType.Date:\n case FieldType.Time:\n return !value;\n default:\n return value == null;\n }\n }\n textValue(\n field: SchemaField,\n value: any,\n element?: boolean | undefined,\n ): string | undefined {\n switch (field.type) {\n case FieldType.Date:\n return value ? new Date(value).toLocaleDateString() : undefined;\n case FieldType.DateTime:\n return value ? new Date(value).toLocaleString() : undefined;\n case FieldType.Time:\n return value\n ? new Date(\"1970-01-01T\" + value).toLocaleTimeString()\n : undefined;\n case FieldType.Bool:\n return this.boolStrings[value ? 1 : 0];\n default:\n return value != null ? value.toString() : undefined;\n }\n }\n controlLength(f: SchemaField, control: Control<any>): number {\n return f.collection\n ? (control.elements?.length ?? 0)\n : this.valueLength(f, control.value);\n }\n valueLength(field: SchemaField, value: any): number {\n return (value && value?.length) ?? 0;\n }\n}\n\nexport const defaultSchemaInterface: SchemaInterface =\n new DefaultSchemaInterface();\n","import React, {\n FC,\n Fragment,\n Key,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n} from \"react\";\nimport {\n addElement,\n Control,\n newControl,\n removeElement,\n trackedValue,\n useCalculatedControl,\n useComponentTracking,\n useControl,\n useControlEffect,\n} from \"@react-typed-forms/core\";\nimport {\n AdornmentPlacement,\n ArrayRenderOptions,\n ControlAdornment,\n ControlDefinition,\n CustomDisplay,\n DataControlDefinition,\n DataRenderType,\n DisplayData,\n DisplayDataType,\n DynamicPropertyType,\n FieldOption,\n GroupRenderOptions,\n isActionControlsDefinition,\n isDataControlDefinition,\n isDisplayControlsDefinition,\n isGroupControlsDefinition,\n LengthValidator,\n RenderOptions,\n SchemaField,\n SchemaInterface,\n SchemaValidator,\n ValidatorType,\n} from \"./types\";\nimport {\n applyLengthRestrictions,\n ControlDataContext,\n elementValueForField,\n fieldDisplayName,\n JsonPath,\n useDynamicHooks,\n useUpdatedRef,\n} from \"./util\";\nimport { dataControl } from \"./controlBuilder\";\nimport {\n defaultUseEvalExpressionHook,\n EvalExpressionHook,\n useEvalActionHook,\n useEvalAllowedOptionsHook,\n useEvalDefaultValueHook,\n useEvalDisabledHook,\n useEvalDisplayHook,\n UseEvalExpressionHook,\n useEvalLabelText,\n useEvalReadonlyHook,\n useEvalStyleHook,\n useEvalVisibilityHook,\n} from \"./hooks\";\nimport { useMakeValidationHook, ValidationContext } from \"./validators\";\nimport { cc } from \"./internal\";\nimport { defaultSchemaInterface } from \"./schemaInterface\";\nimport {\n createSchemaLookup,\n fieldPathForDefinition,\n makeSchemaDataNode,\n schemaDataForFieldPath,\n SchemaDataNode,\n} from \"./treeNodes\";\n\nexport interface FormRenderer {\n renderData: (\n props: DataRendererProps,\n ) => (layout: ControlLayoutProps) => ControlLayoutProps;\n renderGroup: (\n props: GroupRendererProps,\n ) => (layout: ControlLayoutProps) => ControlLayoutProps;\n renderDisplay: (props: DisplayRendererProps) => ReactNode;\n renderAction: (props: ActionRendererProps) => ReactNode;\n renderArray: (props: ArrayRendererProps) => ReactNode;\n renderAdornment: (props: AdornmentProps) => AdornmentRenderer;\n renderLabel: (\n props: LabelRendererProps,\n labelStart: ReactNode,\n labelEnd: ReactNode,\n ) => ReactNode;\n renderLayout: (props: ControlLayoutProps) => RenderedControl;\n renderVisibility: (props: VisibilityRendererProps) => ReactNode;\n renderLabelText: (props: ReactNode) => ReactNode;\n}\n\nexport interface AdornmentProps {\n adornment: ControlAdornment;\n dataContext: ControlDataContext;\n useExpr?: UseEvalExpressionHook;\n designMode?: boolean;\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 renderElement: (elemIndex: number) => ReactNode;\n arrayControl: Control<any[] | undefined | null>;\n className?: string;\n style?: React.CSSProperties;\n min?: number | null;\n max?: number | null;\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}\n\nexport interface RenderedControl {\n children: ReactNode;\n className?: string;\n style?: React.CSSProperties;\n divRef?: (cb: HTMLElement | null) => void;\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}\n\nexport enum LabelType {\n Control,\n Group,\n Text,\n}\nexport interface LabelRendererProps {\n type: LabelType;\n hide?: boolean | null;\n label: ReactNode;\n required?: boolean | null;\n forId?: string;\n className?: string;\n}\nexport interface DisplayRendererProps {\n data: DisplayData;\n display?: Control<string | undefined>;\n dataContext: ControlDataContext;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport type ChildVisibilityFunc = (\n child: ControlDefinition,\n parentNode?: SchemaDataNode,\n) => EvalExpressionHook<boolean>;\nexport interface ParentRendererProps {\n childDefinitions: ControlDefinition[];\n renderChild: ChildRenderer;\n className?: string;\n style?: React.CSSProperties;\n dataContext: ControlDataContext;\n useChildVisibility: ChildVisibilityFunc;\n useEvalExpression: UseEvalExpressionHook;\n designMode?: boolean;\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 elementIndex?: number;\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}\n\nexport interface ActionRendererProps {\n actionId: string;\n actionText: string;\n actionData?: any;\n onClick: () => void;\n className?: string | null;\n style?: React.CSSProperties;\n}\n\nexport interface ControlRenderProps {\n control: Control<any>;\n parentPath?: JsonPath[];\n}\n\nexport interface FormContextOptions {\n readonly?: boolean | null;\n hidden?: boolean | null;\n disabled?: boolean | null;\n}\n\nexport interface DataControlProps {\n definition: DataControlDefinition;\n dataContext: ControlDataContext;\n control: Control<any>;\n formOptions: FormContextOptions;\n style?: React.CSSProperties | undefined;\n renderChild: ChildRenderer;\n elementIndex?: number;\n allowedOptions?: Control<any[] | undefined>;\n useChildVisibility: ChildVisibilityFunc;\n useEvalExpression: UseEvalExpressionHook;\n schemaInterface?: SchemaInterface;\n designMode?: boolean;\n}\n\nexport type CreateDataProps = (\n controlProps: DataControlProps,\n) => DataRendererProps;\n\nexport interface ControlRenderOptions extends FormContextOptions {\n useDataHook?: (c: ControlDefinition) => CreateDataProps;\n actionOnClick?: (actionId: string, actionData: any) => () => void;\n customDisplay?: (\n customId: string,\n displayProps: DisplayRendererProps,\n ) => ReactNode;\n useValidationHook?: (\n validator: SchemaValidator,\n ctx: ValidationContext,\n ) => void;\n useEvalExpressionHook?: UseEvalExpressionHook;\n clearHidden?: boolean;\n schemaInterface?: SchemaInterface;\n elementIndex?: number;\n}\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}\nexport function useControlRendererComponent(\n definition: ControlDefinition,\n renderer: FormRenderer,\n options: ControlRenderOptions = {},\n parentDataNode: SchemaDataNode,\n): FC<{}> {\n const dataProps = options.useDataHook?.(definition) ?? defaultDataProps;\n const elementIndex = options.elementIndex;\n const schemaInterface = options.schemaInterface ?? defaultSchemaInterface;\n const useExpr = options.useEvalExpressionHook ?? defaultUseEvalExpressionHook;\n\n let dataNode: SchemaDataNode | undefined;\n if (elementIndex != null) {\n dataNode = parentDataNode.getChildElement(elementIndex);\n } else {\n const fieldNamePath = fieldPathForDefinition(definition);\n dataNode = fieldNamePath\n ? schemaDataForFieldPath(fieldNamePath, parentDataNode)\n : undefined;\n }\n const useValidation = useMakeValidationHook(\n definition,\n options.useValidationHook,\n );\n const dynamicHooks = useDynamicHooks({\n defaultValueControl: useEvalDefaultValueHook(useExpr, definition),\n visibleControl: useEvalVisibilityHook(useExpr, definition),\n readonlyControl: useEvalReadonlyHook(useExpr, definition),\n disabledControl: useEvalDisabledHook(useExpr, definition),\n allowedOptions: useEvalAllowedOptionsHook(useExpr, definition),\n labelText: useEvalLabelText(useExpr, definition),\n actionData: useEvalActionHook(useExpr, definition),\n customStyle: useEvalStyleHook(\n useExpr,\n DynamicPropertyType.Style,\n definition,\n ),\n layoutStyle: useEvalStyleHook(\n useExpr,\n DynamicPropertyType.LayoutStyle,\n definition,\n ),\n displayControl: useEvalDisplayHook(useExpr, definition),\n });\n\n const r = useUpdatedRef({\n options,\n definition,\n elementIndex,\n parentDataNode,\n dataNode,\n });\n\n const Component = useCallback(() => {\n const stopTracking = useComponentTracking();\n\n try {\n const {\n definition: c,\n options,\n elementIndex,\n parentDataNode: pdn,\n dataNode: dn,\n } = r.current;\n const dataContext = {\n schemaInterface,\n dataNode: dn,\n parentNode: pdn,\n };\n const {\n readonlyControl,\n disabledControl,\n visibleControl,\n displayControl,\n layoutStyle,\n labelText,\n customStyle,\n allowedOptions,\n defaultValueControl,\n actionData,\n } = dynamicHooks(dataContext);\n\n const visible = visibleControl.current.value;\n const visibility = useControl<Visibility | undefined>(() =>\n visible != null\n ? {\n visible,\n showing: visible,\n }\n : undefined,\n );\n useControlEffect(\n () => visibleControl.value,\n (visible) => {\n if (visible != null)\n visibility.setValue((ex) => ({\n visible,\n showing: ex ? ex.showing : visible,\n }));\n },\n );\n\n const parentControl = parentDataNode.control!;\n const control = dataNode?.control;\n useControlEffect(\n () => [\n visibility.value,\n defaultValueControl.value,\n control?.isNull,\n isDataControlDefinition(definition) && definition.dontClearHidden,\n isDataControlDefinition(definition) &&\n definition.renderOptions?.type == DataRenderType.NullToggle,\n parentControl.isNull,\n options.hidden,\n readonlyControl.value,\n ],\n ([vc, dv, _, dontClear, dontDefault, parentNull, hidden, ro]) => {\n if (!ro) {\n if (control) {\n if (vc && vc.visible === vc.showing) {\n if (hidden || !vc.visible) {\n control.setValue((x) =>\n options.clearHidden && !dontClear\n ? undefined\n : x == null && dontClear && !dontDefault\n ? dv\n : x,\n );\n } else if (!dontDefault)\n control.setValue((x) => (x != null ? x : dv));\n }\n } else if (parentNull) {\n parentControl.setValue((x) => x ?? {});\n }\n }\n },\n true,\n );\n const myOptionsControl = useCalculatedControl<FormContextOptions>(() => ({\n hidden: options.hidden || !visibility.fields?.showing.value,\n readonly: options.readonly || readonlyControl.value,\n disabled: options.disabled || disabledControl.value,\n }));\n const myOptions = trackedValue(myOptionsControl);\n useValidation({\n control: control ?? newControl(null),\n hiddenControl: myOptionsControl.fields.hidden,\n dataContext,\n });\n const childOptions: ControlRenderOptions = {\n ...options,\n ...myOptions,\n elementIndex: undefined,\n };\n\n useEffect(() => {\n if (\n control &&\n typeof myOptions.disabled === \"boolean\" &&\n control.disabled != myOptions.disabled\n )\n control.disabled = myOptions.disabled;\n }, [control, myOptions.disabled]);\n if (parentControl.isNull) return <></>;\n\n const adornments =\n definition.adornments?.map((x) =>\n renderer.renderAdornment({\n adornment: x,\n dataContext,\n useExpr,\n }),\n ) ?? [];\n const labelAndChildren = renderControlLayout({\n definition: c,\n renderer,\n renderChild: (k, child, options) => {\n if (control && control.isNull) return <Fragment key={k} />;\n const dContext =\n options?.parentDataNode ??\n dataContext.dataNode ??\n dataContext.parentNode;\n return (\n <NewControlRenderer\n key={k}\n definition={child}\n renderer={renderer}\n parentDataNode={dContext}\n options={\n options\n ? { ...childOptions, elementIndex: options?.elementIndex }\n : childOptions\n }\n />\n );\n },\n createDataProps: dataProps,\n formOptions: myOptions,\n dataContext,\n control: displayControl ?? control,\n elementIndex,\n schemaInterface,\n labelText,\n displayControl,\n style: customStyle.value,\n allowedOptions,\n customDisplay: options.customDisplay,\n actionDataControl: actionData,\n actionOnClick: options.actionOnClick,\n useEvalExpression: useExpr,\n useChildVisibility: (childDef, parentNode) => {\n const fieldNamePath = fieldPathForDefinition(childDef);\n const overrideNode = fieldNamePath\n ? schemaDataForFieldPath(\n fieldNamePath,\n parentNode ?? dataNode ?? parentDataNode,\n )\n : undefined;\n return useEvalVisibilityHook(useExpr, childDef, overrideNode);\n },\n });\n const renderedControl = renderer.renderLayout({\n ...labelAndChildren,\n adornments,\n className: c.layoutClass,\n style: layoutStyle.value,\n });\n return renderer.renderVisibility({ visibility, ...renderedControl });\n } finally {\n stopTracking();\n }\n }, [r, dataProps, useValidation, renderer, schemaInterface, dynamicHooks]);\n (Component as any).displayName = \"RenderControl\";\n return Component;\n}\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 = makeSchemaDataNode(\n createSchemaLookup({ \"\": fields }).getSchema(\"\")!,\n control,\n );\n const Render = useControlRendererComponent(\n definition,\n renderer,\n options,\n schemaDataNode,\n );\n return <Render />;\n}\n\nexport function NewControlRenderer({\n definition,\n renderer,\n options,\n parentDataNode,\n}: {\n definition: ControlDefinition;\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\nexport function defaultDataProps({\n definition,\n control,\n formOptions,\n style,\n allowedOptions,\n schemaInterface = defaultSchemaInterface,\n ...props\n}: DataControlProps): DataRendererProps {\n const dataNode = props.dataContext.dataNode!;\n const field = dataNode.schema.field;\n const className = cc(definition.styleClass);\n const required = !!definition.required;\n const fieldOptions = schemaInterface.getOptions(field);\n const _allowed = allowedOptions?.value ?? [];\n const allowed = Array.isArray(_allowed) ? _allowed : [_allowed];\n return {\n dataNode,\n definition,\n childDefinitions: definition.children ?? [],\n control,\n field,\n id: \"c\" + control.uniqueId,\n options:\n allowed.length > 0\n ? allowed.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 : fieldOptions,\n readonly: !!formOptions.readonly,\n renderOptions: definition.renderOptions ?? { type: \"Standard\" },\n required,\n hidden: !!formOptions.hidden,\n className,\n style,\n ...props,\n };\n}\n\nexport interface ChildRendererOptions {\n elementIndex?: number;\n parentDataNode?: SchemaDataNode;\n}\n\nexport type ChildRenderer = (\n k: Key,\n child: ControlDefinition,\n options?: ChildRendererOptions,\n) => ReactNode;\n\nexport interface RenderControlProps {\n definition: ControlDefinition;\n renderer: FormRenderer;\n renderChild: ChildRenderer;\n createDataProps: CreateDataProps;\n formOptions: FormContextOptions;\n dataContext: ControlDataContext;\n control?: Control<any>;\n labelText?: Control<string | null | undefined>;\n elementIndex?: number;\n displayControl?: Control<string | undefined>;\n style?: React.CSSProperties;\n allowedOptions?: Control<any[] | undefined>;\n actionDataControl?: Control<any | undefined | null>;\n useChildVisibility: ChildVisibilityFunc;\n useEvalExpression: UseEvalExpressionHook;\n actionOnClick?: (actionId: string, actionData: any) => () => void;\n schemaInterface?: SchemaInterface;\n designMode?: boolean;\n customDisplay?: (\n customId: string,\n displayProps: DisplayRendererProps,\n ) => ReactNode;\n}\nexport function renderControlLayout(\n props: RenderControlProps,\n): ControlLayoutProps {\n const {\n definition: c,\n renderer,\n renderChild,\n control,\n dataContext,\n createDataProps: dataProps,\n displayControl,\n style,\n labelText,\n useChildVisibility,\n designMode,\n customDisplay,\n useEvalExpression,\n } = props;\n\n if (isDataControlDefinition(c)) {\n return renderData(c);\n }\n if (isGroupControlsDefinition(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 return {\n processLayout: renderer.renderGroup({\n childDefinitions: c.children ?? [],\n definition: c,\n renderChild,\n useEvalExpression,\n dataContext,\n renderOptions: c.groupOptions ?? { type: \"Standard\" },\n className: cc(c.styleClass),\n useChildVisibility,\n style,\n designMode,\n }),\n label: {\n label: labelText?.value ?? c.title,\n className: cc(c.labelClass),\n type: LabelType.Group,\n hide: c.groupOptions?.hideTitle,\n },\n };\n }\n if (isActionControlsDefinition(c)) {\n const actionData = props.actionDataControl?.value ?? c.actionData;\n return {\n children: renderer.renderAction({\n actionText: labelText?.value ?? c.title ?? c.actionId,\n actionId: c.actionId,\n actionData,\n onClick: props.actionOnClick?.(c.actionId, actionData) ?? (() => {}),\n className: cc(c.styleClass),\n style,\n }),\n };\n }\n if (isDisplayControlsDefinition(c)) {\n const data = c.displayData ?? {};\n const displayProps = {\n data,\n className: cc(c.styleClass),\n style,\n display: displayControl,\n dataContext,\n };\n if (data.type === DisplayDataType.Custom && customDisplay) {\n return {\n children: customDisplay((data as CustomDisplay).customId, displayProps),\n };\n }\n return {\n children: renderer.renderDisplay(displayProps),\n };\n }\n return {};\n\n function renderData(c: DataControlDefinition) {\n if (!control) return { children: \"No control for: \" + c.field };\n const rendererProps = dataProps(\n props as RenderControlProps & {\n definition: DataControlDefinition;\n control: Control<any>;\n },\n );\n\n const label = !c.hideTitle\n ? controlTitle(\n labelText?.value ?? c.title,\n props.dataContext.dataNode!.schema.field,\n )\n : undefined;\n return {\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,\n hide: c.hideTitle,\n className: cc(c.labelClass),\n },\n errorControl: control,\n };\n }\n}\n\ntype MarkupKeys = keyof Omit<\n RenderedLayout,\n \"errorControl\" | \"style\" | \"className\" | \"wrapLayout\"\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 { className, children, style, errorControl, label, adornments } =\n props.processLayout?.(props) ?? props;\n const layout: RenderedLayout = {\n children,\n errorControl,\n style,\n className: cc(className),\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}\nexport function createArrayActions(\n control: Control<any[]>,\n field: SchemaField,\n options?: Pick<\n ArrayRenderOptions,\n | \"addText\"\n | \"removeText\"\n | \"noAdd\"\n | \"noRemove\"\n | \"addActionId\"\n | \"removeActionId\"\n >,\n): Pick<ArrayRendererProps, \"addAction\" | \"removeAction\" | \"arrayControl\"> {\n const noun = field.displayName ?? field.field;\n const { addText, noAdd, removeText, noRemove, removeActionId, addActionId } =\n options ?? {};\n return {\n arrayControl: control,\n addAction: !noAdd\n ? {\n actionId: addActionId ? addActionId : \"add\",\n actionText: addText ? addText : \"Add \" + noun,\n onClick: () => addElement(control, elementValueForField(field)),\n }\n : undefined,\n removeAction: !noRemove\n ? (i: number) => ({\n actionId: removeActionId ? removeActionId : \"remove\",\n actionText: removeText ? removeText : \"Remove\",\n onClick: () => removeElement(control, i),\n })\n : undefined,\n };\n}\n\nexport function applyArrayLengthRestrictions(\n {\n arrayControl,\n min,\n max,\n addAction: aa,\n removeAction: ra,\n required,\n }: Pick<\n ArrayRendererProps,\n \"addAction\" | \"removeAction\" | \"arrayControl\" | \"min\" | \"max\" | \"required\"\n >,\n disable?: boolean,\n): Pick<ArrayRendererProps, \"addAction\" | \"removeAction\"> & {\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 };\n}\n","import { CSSProperties, ReactElement, ReactNode } from \"react\";\nimport {\n ActionRendererProps,\n AdornmentProps,\n AdornmentRenderer,\n ArrayRendererProps,\n ControlLayoutProps,\n DataRendererProps,\n DisplayRendererProps,\n FormRenderer,\n GroupRendererProps,\n LabelRendererProps,\n LabelType,\n RenderedControl,\n VisibilityRendererProps,\n} from \"./controlRender\";\nimport {\n AccordionAdornment,\n ControlAdornment,\n ControlAdornmentType,\n IconAdornment,\n SetFieldAdornment,\n} 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}\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) => 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) => 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 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 React from \"react\";\n\nimport { DefaultRendererOptions } from \"./createDefaultRenderers\";\n\nexport const defaultTailwindTheme = {\n label: {\n groupLabelClass: \"font-bold\",\n requiredElement: <span className=\"text-red-500\"> *</span>,\n },\n array: {\n removableClass: \"grid grid-cols-[1fr_auto] items-center gap-x-2\",\n childClass: \"grow my-2\",\n addActionClass: \"my-2\",\n },\n group: {\n standardClassName: \"flex flex-col gap-4\",\n gridClassName: \"gap-x-2 gap-y-4\",\n flexClassName: \"gap-2\",\n },\n action: {\n className: \"bg-primary-500 rounded-lg p-3 text-white\",\n },\n layout: {\n className: \"flex flex-col\",\n errorClass: \"text-sm text-danger-500\",\n },\n data: {\n displayOnlyClass: \"flex flex-row items-center gap-2\",\n checkOptions: {\n className: \"flex items-center gap-4\",\n entryClass: \"flex gap-1 items-center\",\n },\n selectOptions: { emptyText: \"<select>\" },\n multilineClass: \"border p-2 outline-0 whitespace-pre\",\n },\n adornment: {\n accordion: {\n className: \"flex items-center gap-2 my-2\",\n titleClass: \"cursor-pointer\",\n iconOpenClass: \"fa fa-chevron-up\",\n iconClosedClass: \"fa fa-chevron-down\",\n },\n },\n} satisfies DefaultRendererOptions;\n","import React from \"react\";\nimport { DisplayRendererProps } from \"../controlRender\";\nimport {\n CustomDisplay,\n DisplayDataType,\n HtmlDisplay,\n IconDisplay,\n TextDisplay,\n} from \"../types\";\nimport clsx from \"clsx\";\nimport { getOverrideClass, rendererClass } from \"../util\";\nimport { DisplayRendererRegistration } from \"../renderers\";\n\nexport interface DefaultDisplayRendererOptions {\n textClassName?: string;\n htmlClassName?: string;\n}\n\nexport function createDefaultDisplayRenderer(\n options: DefaultDisplayRendererOptions = {},\n): DisplayRendererRegistration {\n return {\n render: (props) => <DefaultDisplay {...options} {...props} />,\n type: \"display\",\n };\n}\n\nexport function DefaultDisplay({\n data,\n display,\n className,\n style,\n ...options\n}: DefaultDisplayRendererOptions & DisplayRendererProps) {\n switch (data.type) {\n case DisplayDataType.Icon:\n return (\n <i\n style={style}\n className={clsx(\n getOverrideClass(className),\n display ? display.value : (data as IconDisplay).iconClass,\n )}\n />\n );\n case DisplayDataType.Text:\n return (\n <div\n style={style}\n className={rendererClass(className, options.textClassName)}\n >\n {display ? display.value : (data as TextDisplay).text}\n </div>\n );\n case DisplayDataType.Html:\n return (\n <div\n style={style}\n className={rendererClass(className, options.htmlClassName)}\n dangerouslySetInnerHTML={{\n __html: display\n ? (display.value ?? \"\")\n : (data as HtmlDisplay).html,\n }}\n />\n );\n case DisplayDataType.Custom:\n return (\n <div>\n Custom display placeholder: {(data as CustomDisplay).customId}\n </div>\n );\n default:\n return <h1>Unknown display type: {data.type}</h1>;\n }\n}\n","import { RenderedLayout } from \"../controlRender\";\nimport React, { ReactNode } from \"react\";\n\nexport interface DefaultLayoutRendererOptions {\n className?: string;\n errorClass?: string;\n renderError?: (errorText: string | null | undefined) => ReactNode;\n}\n\nexport function DefaultLayout({\n errorClass,\n renderError = (e) => e && <div className={errorClass}>{e}</div>,\n layout: { controlEnd, controlStart, label, children, errorControl },\n}: DefaultLayoutRendererOptions & {\n layout: RenderedLayout;\n}) {\n const ec = errorControl;\n const errorText = ec && ec.touched ? ec.error : undefined;\n return (\n <>\n {label}\n {controlStart}\n {children}\n {renderError(errorText)}\n {controlEnd}\n </>\n );\n}\n","import { VisibilityRendererProps } from \"../controlRender\";\nimport React, { useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { createVisibilityRenderer } from \"../renderers\";\n\nexport function createDefaultVisibilityRenderer() {\n return createVisibilityRenderer((props) => <DefaultVisibility {...props} />);\n}\n\nexport function DefaultVisibility({\n visibility,\n children,\n className,\n style,\n divRef,\n}: VisibilityRendererProps) {\n const v = visibility.value;\n useEffect(() => {\n if (v) {\n visibility.setValue((ex) => ({ visible: v.visible, showing: v.visible }));\n }\n }, [v?.visible]);\n return v?.visible ? (\n <div className={clsx(className)} style={style} ref={divRef}>\n {children}\n </div>\n ) : (\n <></>\n );\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport React, { useMemo, useState } from \"react\";\nimport { rendererClass } from \"../util\";\nimport { FieldOption, FieldType } from \"../types\";\nimport { createDataRenderer } from \"../renderers\";\n\nexport interface SelectRendererOptions {\n className?: string;\n emptyText?: string;\n requiredText?: string;\n}\n\nexport function createSelectRenderer(options: SelectRendererOptions = {}) {\n return createDataRenderer(\n (props, asArray) => (\n <SelectDataRenderer\n className={rendererClass(props.className, options.className)}\n state={props.control}\n id={props.id}\n readonly={props.readonly}\n options={props.options ?? []}\n required={props.required}\n emptyText={options.emptyText}\n requiredText={options.requiredText}\n convert={createSelectConversion(props.field.type)}\n />\n ),\n {\n options: true,\n },\n );\n}\n\ntype SelectConversion = (a: any) => string | number;\n\nexport interface SelectDataRendererProps {\n id?: string;\n className?: string;\n options: FieldOption[];\n emptyText?: string;\n requiredText?: string;\n readonly: boolean;\n required: boolean;\n state: Control<any>;\n convert: SelectConversion;\n}\n\nexport function SelectDataRenderer({\n state,\n options,\n className,\n convert,\n required,\n emptyText = \"N/A\",\n requiredText = \"<please select>\",\n readonly,\n ...props\n}: SelectDataRendererProps) {\n const { value, disabled } = state;\n const [showEmpty] = useState(!required || value == null);\n const optionStringMap = useMemo(\n () => Object.fromEntries(options.map((x) => [convert(x.value), x.value])),\n [options],\n );\n const optionGroups = useMemo(\n () => new Set(options.filter((x) => x.group).map((x) => x.group!)),\n [options],\n );\n return (\n <select\n {...props}\n className={className}\n onChange={(v) => (state.value = optionStringMap[v.target.value])}\n value={convert(value)}\n disabled={disabled || readonly}\n >\n {showEmpty && (\n <option value=\"\">{required ? requiredText : emptyText}</option>\n )}\n {[...optionGroups.keys()].map((x) => (\n <optgroup key={x} label={x}>\n {options.filter((o) => o.group === x).map(renderOption)}\n </optgroup>\n ))}\n {options.filter((x) => !x.group).map(renderOption)}\n </select>\n );\n\n function renderOption(x: FieldOption, i: number) {\n return (\n <option key={i} value={convert(x.value)} disabled={!!x.disabled}>\n {x.name}\n </option>\n );\n }\n}\n\nexport function createSelectConversion(ft: string): SelectConversion {\n switch (ft) {\n case FieldType.String:\n case FieldType.Int:\n case FieldType.Double:\n return (a) => a;\n default:\n return (a) => a?.toString() ?? \"\";\n }\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport { SchemaField, SchemaInterface } from \"../types\";\nimport React from \"react\";\nimport { rendererClass } from \"../util\";\n\nexport function DefaultDisplayOnly({\n control,\n className,\n emptyText,\n schemaInterface,\n field,\n style,\n}: {\n control: Control<any>;\n field: SchemaField;\n schemaInterface: SchemaInterface;\n className?: string | null;\n style?: React.CSSProperties;\n emptyText?: string | null;\n}) {\n const v = control.value;\n const text =\n (schemaInterface.isEmptyValue(field, v)\n ? emptyText\n : schemaInterface.textValue(field, v)) ?? \"\";\n return (\n <div style={style} className={rendererClass(className)}>\n {text}\n </div>\n );\n}\n","import { FieldType } from \"../types\";\nimport React from \"react\";\nimport {\n Control,\n formControlProps,\n useControl,\n useControlEffect,\n} from \"@react-typed-forms/core\";\n\nexport function ControlInput({\n control,\n convert,\n ...props\n}: React.InputHTMLAttributes<HTMLInputElement> & {\n control: Control<any>;\n convert: InputConversion;\n}) {\n const { errorText, value, onChange, ...inputProps } =\n formControlProps(control);\n const textValue = useControl(() => toText(value));\n useControlEffect(\n () => control.value,\n (v) => (textValue.value = toText(v)),\n );\n return (\n <input\n {...inputProps}\n type={convert[0]}\n value={textValue.value}\n onChange={(e) => {\n textValue.value = e.target.value;\n const converted = convert[1](e.target.value);\n if (converted !== undefined) control.value = converted;\n }}\n {...props}\n />\n );\n\n function toText(value: any) {\n return value == null ? \"\" : convert[2](value);\n }\n}\n\ntype InputConversion = [\n string,\n (s: string) => any,\n (a: any) => string | number,\n];\n\nexport function createInputConversion(ft: string): InputConversion {\n switch (ft) {\n case FieldType.String:\n return [\"text\", (a) => a, (a) => a];\n case FieldType.Bool:\n return [\n \"text\",\n (a) => (a === \"true\" ? true : a === \"false\" ? false : undefined),\n (a) => a?.toString() ?? \"\",\n ];\n case FieldType.Int:\n return [\n \"number\",\n (a) => (a !== \"\" ? parseInt(a) : null),\n (a) => (a == null ? \"\" : a),\n ];\n case FieldType.DateTime:\n return [\"datetime-local\", (a) => (!a ? null : a), (a) => a];\n case FieldType.Date:\n return [\"date\", (a) => (!a ? null : a), (a) => a];\n case FieldType.Time:\n return [\n \"time\",\n (a) => {\n const l = a.length;\n if (l === 5) return a + \":00\";\n if (l === 8) return a;\n return undefined;\n },\n (a) => (a ? a.substring(0, 5) : \"\"),\n ];\n case FieldType.Double:\n return [\n \"number\",\n (a) => (a !== \"\" ? parseFloat(a) : null),\n (a) => (a == null ? \"\" : a),\n ];\n default:\n return [\"text\", (a) => a, (a) => a];\n }\n}\n","import {\n ArrayRendererRegistration,\n createDataRenderer,\n DataRendererRegistration,\n} from \"../renderers\";\nimport {\n ActionRendererProps,\n applyArrayLengthRestrictions,\n ArrayRendererProps,\n createArrayActions,\n getLengthRestrictions,\n} from \"../controlRender\";\nimport clsx from \"clsx\";\nimport React, { Fragment, ReactNode } from \"react\";\nimport { RenderElements } from \"@react-typed-forms/core\";\nimport {\n ArrayActionOptions,\n ArrayRenderOptions,\n ControlDefinitionType,\n DataControlDefinition,\n DataRenderType,\n isArrayRenderer,\n} from \"../types\";\nimport { cc } from \"../internal\";\nimport { mergeObjects } from \"../util\";\n\nexport function createDefaultArrayDataRenderer(\n defaultActions?: ArrayActionOptions,\n): DataRendererRegistration {\n return createDataRenderer(\n (\n {\n definition,\n control,\n required,\n field,\n renderChild,\n className,\n style,\n renderOptions,\n },\n renderers,\n ) => {\n const { addText, noAdd, noRemove, noReorder, removeText } = mergeObjects(\n isArrayRenderer(renderOptions)\n ? renderOptions\n : ({} as ArrayRenderOptions),\n defaultActions as ArrayRenderOptions,\n );\n const childOptions = isArrayRenderer(renderOptions)\n ? renderOptions.childOptions\n : undefined;\n\n const arrayProps = {\n ...createArrayActions(control, field, {\n addText,\n removeText,\n noAdd,\n noRemove,\n }),\n required,\n renderElement: (i) =>\n renderChild(\n control.elements?.[i].uniqueId ?? i,\n {\n type: ControlDefinitionType.Data,\n field: definition.field,\n children: definition.children,\n renderOptions: childOptions ?? { type: DataRenderType.Standard },\n hideTitle: true,\n } as DataControlDefinition,\n { elementIndex: i },\n ),\n className: cc(className),\n style,\n ...getLengthRestrictions(definition),\n } satisfies ArrayRendererProps;\n return renderers.renderArray(arrayProps);\n },\n { renderType: DataRenderType.Array, collection: true },\n );\n}\n\nexport interface DefaultArrayRendererOptions extends ArrayActionOptions {\n className?: string;\n removableClass?: string;\n childClass?: string;\n removableChildClass?: string;\n removeActionClass?: string;\n addActionClass?: string;\n}\n\nexport function createDefaultArrayRenderer(\n options?: DefaultArrayRendererOptions,\n): ArrayRendererRegistration {\n return {\n render: (props, { renderAction }) => (\n <DefaultArrayRenderer\n {...props}\n {...options}\n renderAction={renderAction}\n />\n ),\n type: \"array\",\n };\n}\n\nexport interface DefaultArrayRendererProps\n extends DefaultArrayRendererOptions,\n ArrayRendererProps {\n renderAction: (props: ActionRendererProps) => ReactNode;\n}\n\nexport function DefaultArrayRenderer(props: DefaultArrayRendererProps) {\n const {\n renderElement,\n className,\n removableClass,\n childClass,\n removableChildClass,\n removeActionClass,\n addActionClass,\n arrayControl,\n renderAction,\n style,\n } = props;\n const { addAction, removeAction } = applyArrayLengthRestrictions(props);\n return (\n <div style={style}>\n <div className={clsx(className, removeAction && removableClass)}>\n <RenderElements control={arrayControl}>\n {(_, x) =>\n removeAction ? (\n <>\n <div className={clsx(childClass, removableChildClass)}>\n {renderElement(x)}\n </div>\n <div className={removeActionClass}>\n {renderAction(removeAction(x))}\n </div>\n </>\n ) : (\n <div className={childClass}>{renderElement(x)}</div>\n )\n }\n </RenderElements>\n </div>\n {addAction && (\n <div className={addActionClass}>{renderAction(addAction)}</div>\n )}\n </div>\n );\n}\n","import { DataRenderType, FieldOption } from \"../types\";\nimport {\n Control,\n Fcheckbox,\n RenderArrayElements,\n useComputed,\n} from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport { createDataRenderer } from \"../renderers\";\nimport { rendererClass } from \"../util\";\n\nexport interface CheckRendererOptions {\n className?: string;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n}\n\nexport function createRadioRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n {...options}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => control.value == o.value}\n setChecked={(c, o) => (c.value = o.value)}\n control={p.control}\n type=\"radio\"\n />\n ),\n {\n renderType: DataRenderType.Radio,\n },\n );\n}\n\nexport function createCheckListRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n {...options}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => {\n const v = control.value;\n return Array.isArray(v) ? v.includes(o.value) : false;\n }}\n setChecked={(c, o, checked) => {\n c.setValue((x) => setIncluded(x ?? [], o.value, checked));\n }}\n control={p.control}\n type=\"checkbox\"\n />\n ),\n {\n collection: true,\n renderType: DataRenderType.CheckList,\n },\n );\n}\n\nexport function CheckButtons({\n control,\n options,\n labelClass,\n checkClass,\n readonly,\n entryClass,\n className,\n id,\n type,\n isChecked,\n setChecked,\n}: {\n id?: string;\n className?: string;\n options?: FieldOption[] | null;\n control: Control<any>;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n readonly?: boolean;\n type: \"checkbox\" | \"radio\";\n isChecked: (c: Control<any>, o: FieldOption) => boolean;\n setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;\n}) {\n const { disabled } = control;\n const name = \"r\" + control.uniqueId;\n return (\n <div className={className} id={id}>\n <RenderArrayElements array={options?.filter((x) => x.value != null)}>\n {(o, i) => {\n const checked = useComputed(() => isChecked(control, o)).value;\n return (\n <div key={i} className={entryClass}>\n <input\n id={name + \"_\" + i}\n className={checkClass}\n type={type}\n name={name}\n readOnly={readonly}\n disabled={disabled}\n checked={checked}\n onChange={(x) => {\n !readonly && setChecked(control, o, x.target.checked);\n }}\n />\n <label className={labelClass} htmlFor={name + \"_\" + i}>\n {o.name}\n </label>\n </div>\n );\n }}\n </RenderArrayElements>\n </div>\n );\n}\n\nexport function setIncluded<A>(array: A[], elem: A, included: boolean): A[] {\n const already = array.includes(elem);\n if (included === already) {\n return array;\n }\n if (included) {\n return [...array, elem];\n }\n return array.filter((e) => e !== elem);\n}\n\nexport function createCheckboxRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (props, renderer) => (p) => ({\n ...p,\n label: undefined,\n children: (\n <div className={rendererClass(props.className, options.entryClass)}>\n <Fcheckbox\n id={props.id}\n control={props.control}\n style={props.style}\n className={options.checkClass}\n />\n {p.label && renderer.renderLabel(p.label, undefined, undefined)}\n </div>\n ),\n }),\n { renderType: DataRenderType.Checkbox },\n );\n}\n","import React, { CSSProperties, Fragment, ReactElement, ReactNode } from \"react\";\nimport { AccordionAdornment } from \"../types\";\nimport { Control, useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\nimport { FormRenderer } from \"../controlRender\";\nimport { DefaultAccordionRendererOptions } from \"../createDefaultRenderers\";\n\nexport function DefaultAccordion({\n children,\n accordion,\n contentStyle,\n contentClassName,\n designMode,\n iconOpenClass,\n iconClosedClass,\n className,\n renderTitle = (t) => t,\n renderToggler,\n renderers,\n titleClass,\n}: {\n children: ReactElement;\n accordion: Partial<AccordionAdornment>;\n contentStyle?: CSSProperties;\n contentClassName?: string;\n designMode?: boolean;\n renderers: FormRenderer;\n} & DefaultAccordionRendererOptions) {\n const open = useControl(!!accordion.defaultExpanded);\n const isOpen = open.value;\n const fullContentStyle =\n isOpen || designMode ? contentStyle : { ...contentStyle, display: \"none\" };\n const title = renderers.renderLabelText(renderTitle(accordion.title, open));\n const toggler = renderToggler ? (\n renderToggler(open, title)\n ) : (\n <button className={className} onClick={() => open.setValue((x) => !x)}>\n <label className={titleClass}>{title}</label>\n <i className={clsx(isOpen ? iconOpenClass : iconClosedClass)} />\n </button>\n );\n\n return (\n <>\n {toggler}\n <div style={fullContentStyle} className={contentClassName}>\n {children}\n </div>\n </>\n );\n}\n","import { createDataRenderer } from \"../renderers\";\nimport { Control, newControl, useControlEffect } from \"@react-typed-forms/core\";\nimport { DataRenderType, FieldType } from \"../types\";\nimport React, { ReactNode } from \"react\";\n\nexport function createNullToggleRenderer() {\n return createDataRenderer(\n ({ control, field, renderOptions, ...props }, renderers) => {\n const nullControl = (control.meta[\"nullControl\"] ??= newControl(\n control.current.value != null,\n ));\n return (layout) => {\n const newLayout = renderers.renderData({\n ...props,\n control: nullControl,\n field: { ...field, type: FieldType.Bool },\n renderOptions: { type: DataRenderType.Checkbox },\n })(layout);\n return {\n ...newLayout,\n children: (\n <NullWrapper\n control={control}\n nullControl={nullControl}\n children={newLayout.children}\n readonly={props.readonly}\n defaultValue={props.definition.defaultValue}\n />\n ),\n };\n };\n },\n );\n}\n\nfunction NullWrapper({\n children,\n nullControl,\n control,\n defaultValue,\n readonly,\n}: {\n control: Control<any>;\n nullControl: Control<boolean>;\n children: ReactNode;\n readonly: boolean;\n defaultValue: any;\n}) {\n useControlEffect(\n () => readonly,\n (r) => (nullControl.disabled = r),\n true,\n );\n useControlEffect(\n () => nullControl.value,\n (e) => {\n if (e) {\n control.value = nullControl.meta[\"nonNullValue\"] ?? defaultValue;\n } else {\n nullControl.meta[\"nonNullValue\"] = control.value;\n control.value = null;\n }\n },\n );\n return children;\n}\n","import { createDataRenderer } from \"../renderers\";\nimport { DataRendererProps } from \"../controlRender\";\nimport React, { useRef } from \"react\";\nimport { useControlEffect } from \"@react-typed-forms/core\";\nimport { rendererClass } from \"../util\";\n\nexport function createMultilineFieldRenderer(className?: string) {\n return createDataRenderer((p) => (\n <MultilineTextfield\n {...p}\n className={rendererClass(p.className, className)}\n />\n ));\n}\n\nexport function MultilineTextfield({ control, className }: DataRendererProps) {\n const codeRef = useRef<HTMLElement | null>(null);\n useControlEffect(\n () => control.value,\n (v) => {\n const c = codeRef.current;\n if (c && c.textContent !== v) {\n c.textContent = v;\n }\n },\n true,\n );\n return (\n <code\n contentEditable={!control.disabled}\n className={className}\n onInput={(t) => (control.value = t.currentTarget.textContent)}\n ref={codeRef}\n />\n );\n}\n","import { createDataRenderer } from \"../renderers\";\nimport { useJsonataExpression } from \"../hooks\";\nimport { DataRenderType, JsonataRenderOptions } from \"../types\";\nimport { ControlDataContext, rendererClass } from \"../util\";\nimport { Control } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport { getJsonPath, getRootDataNode } from \"../treeNodes\";\n\nexport function createJsonataRenderer(className?: string) {\n return createDataRenderer(\n (p) => (\n <JsonataRenderer\n renderOptions={p.renderOptions as JsonataRenderOptions}\n className={rendererClass(p.className, className)}\n dataContext={p.dataContext}\n control={p.control}\n readonly={p.readonly}\n />\n ),\n { renderType: DataRenderType.Jsonata },\n );\n}\n\nexport function JsonataRenderer({\n control,\n renderOptions: { expression },\n readonly,\n className,\n dataContext,\n}: {\n control: Control<any>;\n renderOptions: JsonataRenderOptions;\n className?: string;\n dataContext: ControlDataContext;\n readonly: boolean;\n}) {\n const sdn = dataContext.parentNode;\n const rendered = useJsonataExpression(\n expression,\n getRootDataNode(sdn).control!,\n getJsonPath(sdn),\n () => ({\n value: control.value,\n readonly,\n disabled: control.disabled,\n }),\n (v) =>\n v == null\n ? \"\"\n : typeof v === \"object\"\n ? \"error: \" + JSON.stringify(v)\n : v.toString(),\n );\n return (\n <div\n className={className}\n dangerouslySetInnerHTML={{ __html: rendered.value }}\n />\n );\n}\n","import {\n createDefaultDisplayRenderer,\n DefaultDisplayRendererOptions,\n} from \"./components/DefaultDisplay\";\nimport {\n DefaultLayout,\n DefaultLayoutRendererOptions,\n} from \"./components/DefaultLayout\";\nimport {\n ActionRendererRegistration,\n AdornmentRendererRegistration,\n createActionRenderer,\n createDataRenderer,\n createLayoutRenderer,\n DataRendererRegistration,\n DefaultRenderers,\n GroupRendererRegistration,\n isAccordionAdornment,\n isIconAdornment,\n isSetFieldAdornment,\n LabelRendererRegistration,\n} from \"./renderers\";\nimport { createDefaultVisibilityRenderer } from \"./components/DefaultVisibility\";\nimport React, {\n CSSProperties,\n Fragment,\n ReactElement,\n ReactNode,\n useCallback,\n} from \"react\";\nimport {\n ControlDataContext,\n hasOptions,\n rendererClass,\n useDynamicHooks,\n} from \"./util\";\nimport clsx from \"clsx\";\nimport {\n ActionRendererProps,\n appendMarkupAt,\n ControlLayoutProps,\n GroupRendererProps,\n LabelType,\n renderLayoutParts,\n wrapLayout,\n} from \"./controlRender\";\nimport {\n AdornmentPlacement,\n ArrayActionOptions,\n DataRenderType,\n FieldOption,\n FieldType,\n FlexRenderer,\n GridRenderer,\n isDataGroupRenderer,\n isDisplayOnlyRenderer,\n isFlexRenderer,\n isGridRenderer,\n isTextfieldRenderer,\n SetFieldAdornment,\n} from \"./types\";\nimport {\n createSelectRenderer,\n SelectRendererOptions,\n} from \"./components/SelectDataRenderer\";\nimport { DefaultDisplayOnly } from \"./components/DefaultDisplayOnly\";\nimport { Control, useControlEffect } from \"@react-typed-forms/core\";\nimport { ControlInput, createInputConversion } from \"./components/ControlInput\";\nimport {\n createDefaultArrayDataRenderer,\n createDefaultArrayRenderer,\n DefaultArrayRendererOptions,\n} from \"./components/DefaultArrayRenderer\";\nimport {\n CheckRendererOptions,\n createCheckboxRenderer,\n createCheckListRenderer,\n createRadioRenderer,\n} from \"./components/CheckRenderer\";\nimport { DefaultAccordion } from \"./components/DefaultAccordion\";\nimport { createNullToggleRenderer } from \"./components/NullToggle\";\nimport { createMultilineFieldRenderer } from \"./components/MultilineTextfield\";\nimport { createJsonataRenderer } from \"./components/JsonataRenderer\";\nimport { schemaDataForFieldRef } from \"./treeNodes\";\n\nexport interface DefaultRendererOptions {\n data?: DefaultDataRendererOptions;\n display?: DefaultDisplayRendererOptions;\n action?: DefaultActionRendererOptions;\n array?: DefaultArrayRendererOptions;\n group?: DefaultGroupRendererOptions;\n label?: DefaultLabelRendererOptions;\n adornment?: DefaultAdornmentRendererOptions;\n layout?: DefaultLayoutRendererOptions;\n}\n\ninterface StyleProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport interface DefaultActionRendererOptions {\n className?: string;\n renderContent?: (\n actionText: string,\n actionId: string,\n actionData: any,\n ) => ReactNode;\n}\n\nexport function createButtonActionRenderer(\n actionId: string | string[] | undefined,\n options: DefaultActionRendererOptions = {},\n): ActionRendererRegistration {\n return createActionRenderer(\n actionId,\n ({\n onClick,\n actionText,\n className,\n style,\n actionId,\n actionData,\n }: ActionRendererProps) => {\n return (\n <button\n className={rendererClass(className, options.className)}\n style={style}\n onClick={onClick}\n >\n {options.renderContent?.(actionText, actionId, actionData) ??\n actionText}\n </button>\n );\n },\n );\n}\n\nexport interface DefaultGroupRendererOptions {\n className?: string;\n standardClassName?: string;\n gridStyles?: (columns: GridRenderer) => StyleProps;\n gridClassName?: string;\n defaultGridColumns?: number;\n flexClassName?: string;\n defaultFlexGap?: string;\n}\n\nexport function createDefaultGroupRenderer(\n options?: DefaultGroupRendererOptions,\n): GroupRendererRegistration {\n const {\n className,\n gridStyles = defaultGridStyles,\n defaultGridColumns = 2,\n gridClassName,\n standardClassName,\n flexClassName,\n defaultFlexGap,\n } = options ?? {};\n\n function defaultGridStyles({\n columns = defaultGridColumns,\n }: GridRenderer): StyleProps {\n return {\n className: gridClassName,\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n },\n };\n }\n\n function flexStyles(options: FlexRenderer): StyleProps {\n return {\n className: flexClassName,\n style: {\n display: \"flex\",\n gap: options.gap ? options.gap : defaultFlexGap,\n flexDirection: options.direction\n ? (options.direction as any)\n : undefined,\n },\n };\n }\n\n function render(props: GroupRendererProps) {\n const { renderChild, renderOptions, childDefinitions } = props;\n\n const { style, className: gcn } = isGridRenderer(renderOptions)\n ? gridStyles(renderOptions)\n : isFlexRenderer(renderOptions)\n ? flexStyles(renderOptions)\n : ({ className: standardClassName } as StyleProps);\n\n return (cp: ControlLayoutProps) => {\n return {\n ...cp,\n children: (\n <div\n className={rendererClass(props.className, clsx(className, gcn))}\n style={style}\n >\n {childDefinitions?.map((c, i) => renderChild(i, c))}\n </div>\n ),\n };\n };\n }\n\n return { type: \"group\", render };\n}\n\nexport const DefaultBoolOptions: FieldOption[] = [\n { name: \"Yes\", value: true },\n { name: \"No\", value: false },\n];\n\nexport interface DefaultDataRendererOptions {\n inputClass?: string;\n displayOnlyClass?: string;\n selectOptions?: SelectRendererOptions;\n checkboxOptions?: CheckRendererOptions;\n checkOptions?: CheckRendererOptions;\n radioOptions?: CheckRendererOptions;\n checkListOptions?: CheckRendererOptions;\n booleanOptions?: FieldOption[];\n optionRenderer?: DataRendererRegistration;\n multilineClass?: string;\n jsonataClass?: string;\n arrayOptions?: ArrayActionOptions;\n}\n\nexport function createDefaultDataRenderer(\n options: DefaultDataRendererOptions = {},\n): DataRendererRegistration {\n const jsonataRenderer = createJsonataRenderer(options.jsonataClass);\n const nullToggler = createNullToggleRenderer();\n const multilineRenderer = createMultilineFieldRenderer(\n options.multilineClass,\n );\n const checkboxRenderer = createCheckboxRenderer(\n options.checkOptions ?? options.checkboxOptions,\n );\n const selectRenderer = createSelectRenderer(options.selectOptions);\n const radioRenderer = createRadioRenderer(\n options.radioOptions ?? options.checkOptions,\n );\n const checkListRenderer = createCheckListRenderer(\n options.checkListOptions ?? options.checkOptions,\n );\n const { inputClass, booleanOptions, optionRenderer, displayOnlyClass } = {\n optionRenderer: selectRenderer,\n booleanOptions: DefaultBoolOptions,\n ...options,\n };\n const arrayRenderer = createDefaultArrayDataRenderer(options.arrayOptions);\n\n return createDataRenderer((props, renderers) => {\n const { field } = props;\n const fieldType = field.type;\n const renderOptions = props.renderOptions;\n let renderType = renderOptions.type;\n if (\n field.collection &&\n props.elementIndex == null &&\n (renderType == DataRenderType.Standard ||\n renderType == DataRenderType.Array)\n ) {\n return arrayRenderer.render(props, renderers);\n }\n if (fieldType === FieldType.Compound) {\n const groupOptions = (isDataGroupRenderer(renderOptions)\n ? renderOptions.groupOptions\n : undefined) ?? { type: \"Standard\", hideTitle: true };\n return renderers.renderGroup({ ...props, renderOptions: groupOptions });\n }\n if (fieldType == FieldType.Any) return <>No control for Any</>;\n if (isDisplayOnlyRenderer(renderOptions))\n return (p) => ({\n ...p,\n className: displayOnlyClass,\n children: (\n <DefaultDisplayOnly\n field={props.field}\n schemaInterface={props.dataContext.schemaInterface}\n control={props.control}\n className={props.className}\n style={props.style}\n emptyText={renderOptions.emptyText}\n />\n ),\n });\n const isBool = fieldType === FieldType.Bool;\n if (booleanOptions != null && isBool && props.options == null) {\n return renderers.renderData({ ...props, options: booleanOptions });\n }\n if (renderType === DataRenderType.Standard && hasOptions(props)) {\n return optionRenderer.render(props, renderers);\n }\n switch (renderType) {\n case DataRenderType.NullToggle:\n return nullToggler.render(props, renderers);\n case DataRenderType.CheckList:\n return checkListRenderer.render(props, renderers);\n case DataRenderType.Dropdown:\n return selectRenderer.render(props, renderers);\n case DataRenderType.Radio:\n return radioRenderer.render(props, renderers);\n case DataRenderType.Checkbox:\n return checkboxRenderer.render(props, renderers);\n case DataRenderType.Jsonata:\n return jsonataRenderer.render(props, renderers);\n }\n if (isTextfieldRenderer(renderOptions) && renderOptions.multiline)\n return multilineRenderer.render(props, renderers);\n const placeholder = isTextfieldRenderer(renderOptions)\n ? renderOptions.placeholder\n : undefined;\n return (\n <ControlInput\n className={rendererClass(props.className, inputClass)}\n style={props.style}\n id={props.id}\n readOnly={props.readonly}\n control={props.control}\n placeholder={placeholder ?? undefined}\n convert={createInputConversion(props.field.type)}\n />\n );\n });\n}\n\nexport interface DefaultAccordionRendererOptions {\n className?: string;\n titleClass?: string;\n togglerClass?: string;\n iconOpenClass?: string;\n iconClosedClass?: string;\n renderTitle?: (\n title: string | undefined,\n current: Control<boolean>,\n ) => ReactNode;\n renderToggler?: (current: Control<boolean>, title: ReactNode) => ReactNode;\n}\n\nexport interface DefaultAdornmentRendererOptions {\n accordion?: DefaultAccordionRendererOptions;\n}\n\nexport function createDefaultAdornmentRenderer(\n options: DefaultAdornmentRendererOptions = {},\n): AdornmentRendererRegistration {\n return {\n type: \"adornment\",\n render: ({ adornment, designMode, dataContext, useExpr }, renderers) => ({\n apply: (rl) => {\n if (isSetFieldAdornment(adornment) && useExpr) {\n const hook = useExpr(adornment.expression, (x) => x);\n const dynamicHooks = useDynamicHooks({ value: hook });\n const SetFieldWrapper = useCallback(setFieldWrapper, [dynamicHooks]);\n return wrapLayout((x) => (\n <SetFieldWrapper\n children={x}\n parentContext={dataContext}\n adornment={adornment}\n />\n ))(rl);\n\n function setFieldWrapper({\n children,\n adornment,\n parentContext,\n }: {\n children: ReactNode;\n adornment: SetFieldAdornment;\n parentContext: ControlDataContext;\n }) {\n const { value } = dynamicHooks(parentContext);\n const fieldNode = schemaDataForFieldRef(\n adornment.field,\n parentContext.parentNode,\n );\n const otherField = fieldNode.control;\n const always = !adornment.defaultOnly;\n useControlEffect(\n () => [value?.value, otherField?.value == null],\n ([v]) => {\n otherField?.setValue((x) => (always || x == null ? v : x));\n },\n true,\n );\n return children;\n }\n }\n if (isIconAdornment(adornment)) {\n return appendMarkupAt(\n adornment.placement ?? AdornmentPlacement.ControlStart,\n <i className={adornment.iconClass} />,\n )(rl);\n }\n if (isAccordionAdornment(adornment)) {\n return wrapLayout((x) => (\n <DefaultAccordion\n renderers={renderers}\n children={x}\n accordion={adornment}\n contentStyle={rl.style}\n contentClassName={rl.className}\n designMode={designMode}\n {...options.accordion}\n />\n ))(rl);\n }\n },\n priority: 0,\n adornment,\n }),\n };\n}\n\nfunction createDefaultLayoutRenderer(\n options: DefaultLayoutRendererOptions = {},\n) {\n return createLayoutRenderer((props, renderers) => {\n const layout = renderLayoutParts(\n {\n ...props,\n className: rendererClass(props.className, options.className),\n },\n renderers,\n );\n return {\n children: layout.wrapLayout(\n <DefaultLayout layout={layout} {...options} />,\n ),\n className: layout.className,\n style: layout.style,\n divRef: (e) =>\n e && props.errorControl\n ? (props.errorControl.meta.scrollElement = e)\n : undefined,\n };\n });\n}\n\ninterface DefaultLabelRendererOptions {\n className?: string;\n groupLabelClass?: string;\n controlLabelClass?: string;\n requiredElement?: ReactNode;\n labelContainer?: (children: ReactElement) => ReactElement;\n}\n\nexport function createDefaultLabelRenderer(\n options?: DefaultLabelRendererOptions,\n): LabelRendererRegistration {\n const {\n className,\n groupLabelClass,\n controlLabelClass,\n requiredElement,\n labelContainer,\n } = {\n requiredElement: <span> *</span>,\n labelContainer: (c: ReactElement) => c,\n ...options,\n };\n return {\n render: (props, labelStart, labelEnd, renderers) => {\n if (props.type == LabelType.Text) return props.label;\n return labelContainer(\n <>\n <label\n htmlFor={props.forId}\n className={rendererClass(\n props.className,\n clsx(\n className,\n props.type === LabelType.Group && groupLabelClass,\n props.type === LabelType.Control && controlLabelClass,\n ),\n )}\n >\n {labelStart}\n {renderers.renderLabelText(props.label)}\n {props.required && requiredElement}\n </label>\n {labelEnd}\n </>,\n );\n },\n type: \"label\",\n };\n}\n\nexport function createDefaultRenderers(\n options: DefaultRendererOptions = {},\n): DefaultRenderers {\n return {\n data: createDefaultDataRenderer(options.data),\n display: createDefaultDisplayRenderer(options.display),\n action: createButtonActionRenderer(undefined, options.action),\n array: createDefaultArrayRenderer(options.array),\n group: createDefaultGroupRenderer(options.group),\n label: createDefaultLabelRenderer(options.label),\n adornment: createDefaultAdornmentRenderer(options.adornment),\n renderLayout: createDefaultLayoutRenderer(options.layout),\n visibility: createDefaultVisibilityRenderer(),\n };\n}\n","import { ReactNode } from \"react\";\nimport {\n ActionRendererProps,\n AdornmentProps,\n AdornmentRenderer,\n ArrayRendererProps,\n ControlLayoutProps,\n DataRendererProps,\n DisplayRendererProps,\n FormRenderer,\n GroupRendererProps,\n LabelRendererProps,\n LabelType,\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 { createDefaultRenderers } from \"./createDefaultRenderers\";\nimport { DataRenderType } from \"./types\";\n\nexport function createFormRenderer(\n customRenderers: RendererRegistration[] = [],\n defaultRenderers: DefaultRenderers = createClassStyledRenderers(),\n): FormRenderer {\n const dataRegistrations = customRenderers.filter(isDataRegistration);\n const groupRegistrations = customRenderers.filter(isGroupRegistration);\n const adornmentRegistrations = customRenderers.filter(\n isAdornmentRegistration,\n );\n const displayRegistrations = customRenderers.filter(isDisplayRegistration);\n const labelRenderers = customRenderers.filter(isLabelRegistration);\n const arrayRenderers = customRenderers.filter(isArrayRegistration);\n const actionRenderers = customRenderers.filter(isActionRegistration);\n const layoutRenderers = customRenderers.filter(isLayoutRegistration);\n const visibilityRenderer =\n customRenderers.find(isVisibilityRegistration) ??\n 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: visibilityRenderer.render,\n renderLabelText,\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 {\n renderOptions: { type: renderType },\n field,\n } = props;\n\n const options = hasOptions(props);\n const renderer =\n dataRegistrations.find(\n (x) =>\n (x.collection ?? false) ===\n (props.elementIndex == null && (field.collection ?? false)) &&\n (x.options ?? false) === options &&\n ((x.schemaType &&\n renderType == DataRenderType.Standard &&\n isOneOf(x.schemaType, field.type)) ||\n (x.renderType && isOneOf(x.renderType, renderType)) ||\n (x.match && x.match(props))),\n ) ?? defaultRenderers.data;\n\n const result = renderer.render(props, formRenderers);\n if (typeof result === \"function\") return result;\n return (l) => ({ ...l, children: result });\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 createClassStyledRenderers() {\n return createDefaultRenderers({\n layout: { className: \"control\" },\n group: { className: \"group\" },\n array: { className: \"control-array\" },\n action: { className: \"action\" },\n data: { inputClass: \"data\" },\n display: { htmlClassName: \"html\", textClassName: \"text\" },\n });\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"],"names":["FieldType","ValidationMessageType","ControlDefinitionType","DynamicPropertyType","ExpressionType","AdornmentPlacement","ControlAdornmentType","DataRenderType","SyncTextType","GroupRenderType","DisplayDataType","ValidatorType","DateComparison","isDataControlDefinition","x","type","Data","isGroupControlsDefinition","Group","isDisplayControlsDefinition","Display","isActionControlsDefinition","Action","visitControlDefinition","visitor","defaultValue","action","data","display","group","isGridRenderer","options","Grid","isFlexRenderer","Flex","isDisplayOnlyRenderer","DisplayOnly","isTextfieldRenderer","Textfield","isDataGroupRenderer","isArrayRenderer","Array","findField","fields","field","find","isScalarField","sf","isCompoundField","Compound","isDataControl","c","makeScalarField","n","_extends","defaultScalarField","displayName","String","defaultCompoundField","collection","children","mergeField","mergeInto","existing","map","onlyForTypes","mergeTypes","concat","f","s","extras","filter","includes","length","mergeFields","name","value","newFields","withType","isTypeField","addFieldOption","reduce","af","typeField","_typeField$options","some","resolveSchemas","schemaMap","out","Object","keys","forEach","resolveSchemaType","resolvedFields","schemaRef","push","applyDefaultValues","v","doneSet","defaultValueForFields","has","_doneSet","Set","add","applyValue","applyDefaultForField","defaultValueForField","parent","notElement","required","treeChildren","fromEntries","forceNotNull","undefined","isRequired","childValue","notNullable","elementValueForField","fieldHasTag","tag","_field$tags","Boolean","tags","fieldDisplayName","_field$displayName","hasOptions","o","_o$options$length","_o$options","defaultControlForField","title","_sf$tags","htmlEditor","renderOptions","HtmlEditor","Standard","findControlsForCompound","compound","definition","compoundField","_definition$children$","_definition$children","flatMap","d","findCompoundGroups","controls","cf","groups","findNonDataGroups","_x$children","_x$children2","existsInGroups","lookup","_c$children","childLookup","control","_control$children2","cloneChildren","_c$children2","addMissingControls","rootLookup","_ref","_f$tags","groupToAdd","startsWith","insertGroup","groupName","substring","newControl","useUpdatedRef","a","r","useRef","current","isControlReadonly","readonly","isControlDisabled","disabled","getDisplayOnlyOptions","jsonPathString","jsonPath","customIndex","i","_customIndex","getOverrideClass","className","rendererClass","controlClass","globalClass","oc","clsx","makeHookDepString","deps","asHookDep","toDepString","join","useDynamicHooks","hooks","hookEntries","entries","ref","state","useCallback","p","_ref2","runHook","toString","applyLengthRestrictions","min","max","minValue","maxValue","mergeObjects","o1","o2","doMerge","_","v1","v2","result","key","hasOwnProperty","dataControl","validatorOptions","adornmentOptions","renderOptionsFor","checkListOptions","CheckList","radioButtonOptions","Radio","lengthValidatorOptions","Length","jsonataValidatorOptions","Jsonata","dateValidatorOptions","Date","accordionOptions","Accordion","textfieldOptions","displayOnlyOptions","jsonataOptions","emptyGroupDefinition","groupOptions","hideTitle","applyExtensionToSchema","extension","outMap","cro","isArray","cr","_cr$fields","MissingField","Any","nodeForSchema","node","getSchema","getChildNode","fieldName","childField","getChildNodes","otherRef","createSchemaLookup","schemaId","rootSchemaNode","nodeForControl","makeSchemaDataNode","schema","elementIndex","dataNode","getChild","schemaNode","_objControl$fields","objControl","isNull","getChildElement","_control$elements","elements","fieldPathForDefinition","split","schemaDataForFieldRef","fieldRef","_fieldRef$split","schemaDataForFieldPath","fieldPath","childNode","schemaForFieldPath","traverseParents","get","until","outArray","reverse","getRootDataNode","getJsonPath","visitControlDataArray","context","cb","_iterator","_step","_createForOfIteratorHelperLoose","done","visitControlData","ctx","def","processData","fieldNode","cIndex","_iterator2","_control$elements2","elemChild","elemResult","cfResult","useEvalVisibilityHook","useEvalExpressionHook","overrideDataNode","makeDynamicPropertyHook","useEvalDynamicBoolHook","Visible","useComputed","matchesType","hideDisplayOnly","schemaInterface","useEvalReadonlyHook","Readonly","useCalculatedControl","useEvalStyleHook","property","useEvalDynamicHook","useControl","useEvalAllowedOptionsHook","AllowedOptions","useEvalDisabledHook","Disabled","_ctx$dataNode","_dataControl$meta$nul","meta","useEvalDisplayHook","useEvalDefaultValueHook","DefaultValue","_ref3","_ctx$dataNode2","_ref4","dcv","defaultEvalHooks","expr","coerce","useJsonataExpression","expression","parentNode","UUID","useUuidExpression","fvExpr","otherField","_otherField$control","useDataExpression","DataMatch","_otherField$control2","fv","useDataMatchExpression","NotEmpty","_otherField$control3","isEmptyValue","useNotEmptyExpression","defaultUseEvalExpressionHook","makeEvalExpressionHook","_definition$dynamic","dynamic","types","typeNode","_context$control","displayOptions","emptyText","uuidv4","v4","jExpr","path","bindings","pathString","fullExpr","compiledExpr","useMemo","jsonata","e","console","error","listenerRef","updateRef","useRefState","makeChangeTracker","l","addAfterChangesCallback","useEffect","apply","_ref$current","collect","updateSubscriptions","_temp","bindingData","collectChanges","_coerce","Promise","resolve","evaluate","trackedValue","then","_compiledExpr$evaluat","_finallyRethrows","_wasThrown","_result","reject","useEvalActionHook","useExpr","ActionData","useEvalLabelText","Label","dynamicValue","makeDefault","_dynamicValue$runHook","useMakeValidationHook","useValidatorFor","_dd$validators","useDefaultValidator","dd","refData","depString","validators","_ctx$dataContext$data","_dd$validators2","dataContext","hiddenControl","useValueChangeEffect","setError","useValidator","validationMessageText","index","validator","useLengthValidator","useJsonataValidator","useDateValidator","sdn","errorMsg","JSON","stringify","lv","len","controlLength","MinLength","setValue","from","MaxLength","dv","comparisonDate","fixedDate","parseToMillis","nowDate","UTC","getFullYear","getMonth","getDate","daysFromCurrent","selDate","notAfter","comparison","NotAfter","NotAfterDate","NotBeforeDate","cc","LabelType","DefaultSchemaInterface","boolStrings","this","_proto","prototype","parse","messageType","actual","expected","toDateString","getOptions","getFilterOptions","array","DateTime","Time","textValue","element","toLocaleDateString","toLocaleString","toLocaleTimeString","Bool","_control$elements$len","valueLength","defaultSchemaInterface","useControlRendererComponent","renderer","parentDataNode","_options$useDataHook","_options$schemaInterf","_options$useEvalExpre","dataProps","useDataHook","defaultDataProps","fieldNamePath","useValidation","useValidationHook","dynamicHooks","defaultValueControl","visibleControl","readonlyControl","disabledControl","allowedOptions","labelText","actionData","customStyle","Style","layoutStyle","LayoutStyle","displayControl","Component","stopTracking","useComponentTracking","_dataNode","_definition$adornment","_definition$adornment2","_r$current","_dynamicHooks","visible","visibility","showing","useControlEffect","ex","parentControl","_definition$renderOpt","dontClearHidden","NullToggle","hidden","vc","dontClear","dontDefault","parentNull","ro","clearHidden","myOptionsControl","_visibility$fields","myOptions","childOptions","React","createElement","Fragment","adornments","renderAdornment","adornment","labelAndChildren","renderControlLayout","renderChild","k","child","_options$parentDataNo","dContext","NewControlRenderer","createDataProps","formOptions","style","customDisplay","actionDataControl","actionOnClick","useEvalExpression","useChildVisibility","childDef","overrideNode","renderedControl","renderLayout","layoutClass","renderVisibility","ControlRenderer","_ref5","_effect","_useComponentTracking","Render","_ref6","_effect2","_ref7","_allowedOptions$value","_definition$renderOpt2","_ref7$schemaInterface","props","_objectWithoutPropertiesLoose","_excluded","styleClass","fieldOptions","_allowed","allowed","childDefinitions","id","uniqueId","_fieldOptions$find","y","_c$groupOptions2","_labelText$value","_c$groupOptions3","_c$groupOptions","designMode","renderData","processLayout","renderGroup","label","labelClass","hide","_props$actionDataCont","_props$actionDataCont2","_ref8","_labelText$value2","_props$actionOnClick","renderAction","actionText","actionId","onClick","_c$displayData","displayData","displayProps","Custom","customId","renderDisplay","_labelText$value3","_c$children$length","rendererProps","controlTitle","Control","forId","errorControl","appendMarkup","markup","layout","wrapMarkup","wrap","layoutKeyForPlacement","pos","ControlEnd","ControlStart","LabelStart","LabelEnd","wrapLayout","rl","orig","appendMarkupAt","renderLayoutParts","_props$processLayout","_ref9","sort","b","priority","renderLabel","labelStart","labelEnd","getLengthRestrictions","_definition$validator","lengthVal","createArrayActions","noun","_ref10","removeText","removeActionId","arrayControl","addAction","noAdd","addActionId","addText","addElement","removeAction","noRemove","removeElement","applyArrayLengthRestrictions","_ref11","disable","_arrayControl$element","_arrayControl$element2","aa","ra","_applyLengthRestricti","removeAllowed","addAllowed","removeDisabled","addDisabled","isIconAdornment","Icon","isAccordionAdornment","isSetFieldAdornment","SetField","createLayoutRenderer","render","createActionRenderer","actionType","createDataRenderer","createVisibilityRenderer","defaultTailwindTheme","groupLabelClass","requiredElement","removableClass","childClass","addActionClass","standardClassName","gridClassName","flexClassName","errorClass","displayOnlyClass","checkOptions","entryClass","selectOptions","multilineClass","accordion","titleClass","iconOpenClass","iconClosedClass","createDefaultDisplayRenderer","DefaultDisplay","_display$value","iconClass","Text","textClassName","text","Html","htmlClassName","dangerouslySetInnerHTML","__html","html","DefaultLayout","_ref$renderError","renderError","_ref$layout","controlEnd","controlStart","touched","createDefaultVisibilityRenderer","DefaultVisibility","divRef","createSelectRenderer","asArray","_props$options","SelectDataRenderer","requiredText","convert","createSelectConversion","renderOption","_ref$emptyText","_ref$requiredText","showEmpty","useState","optionStringMap","optionGroups","onChange","target","ft","Int","Double","_a$toString","DefaultDisplayOnly","_excluded2","ControlInput","toText","_formControlProps","formControlProps","inputProps","converted","createInputConversion","parseInt","parseFloat","createDefaultArrayDataRenderer","defaultActions","renderers","_mergeObjects","arrayProps","renderElement","_control$elements$i$u","renderArray","renderType","createDefaultArrayRenderer","DefaultArrayRenderer","removableChildClass","removeActionClass","_applyArrayLengthRest","RenderElements","createRadioRenderer","CheckButtons","isChecked","setChecked","createCheckListRenderer","checked","setIncluded","checkClass","RenderArrayElements","readOnly","htmlFor","elem","included","createCheckboxRenderer","Fcheckbox","Checkbox","DefaultAccordion","contentStyle","contentClassName","_ref$renderTitle","renderTitle","t","renderToggler","open","defaultExpanded","isOpen","fullContentStyle","renderLabelText","toggler","createNullToggleRenderer","_control$meta","_control$meta$_nullCo","nullControl","newLayout","NullWrapper","_nullControl$meta$non","MultilineTextfield","codeRef","textContent","contentEditable","onInput","currentTarget","createJsonataRenderer","JsonataRenderer","rendered","createButtonActionRenderer","_options$renderConten","renderContent","createDefaultGroupRenderer","_ref2$gridStyles","gridStyles","_ref3$columns","columns","gridTemplateColumns","defaultGridColumns","_ref2$defaultGridColu","defaultFlexGap","gap","flexDirection","direction","flexStyles","gcn","cp","DefaultBoolOptions","createDefaultDataRenderer","_options$checkOptions","_options$radioOptions","_options$checkListOpt","jsonataRenderer","jsonataClass","nullToggler","multilineRenderer","checkboxRenderer","checkboxOptions","selectRenderer","radioRenderer","radioOptions","checkListRenderer","_optionRenderer$boole","optionRenderer","booleanOptions","inputClass","arrayRenderer","arrayOptions","fieldType","isBool","Dropdown","multiline","placeholder","createDefaultAdornmentRenderer","SetFieldWrapper","parentContext","always","defaultOnly","_adornment$placement","placement","createDefaultLayoutRenderer","scrollElement","createDefaultLabelRenderer","_requiredElement$labe","labelContainer","controlLabelClass","createDefaultRenderers","isOneOf","isAdornmentRegistration","isDataRegistration","isGroupRegistration","isLabelRegistration","isLayoutRegistration","isVisibilityRegistration","isActionRegistration","isDisplayRegistration","isArrayRegistration","extensions","cleanDataForSchema","removeIfDefault","typeValue","cleanableFields","_x$onlyForTypes$lengt","_x$onlyForTypes","_x$onlyForTypes2","childFields","cv","other","formMap","getForm","formId","rootNode","customRenderers","defaultRenderers","_customRenderers$find","dataRegistrations","groupRegistrations","adornmentRegistrations","displayRegistrations","labelRenderers","arrayRenderers","actionRenderers","layoutRenderers","formRenderers","_actionRenderers$find","_dataRegistrations$fi","_x$collection","_field$collection","_x$options","schemaType","match","_groupRegistrations$f","_displayRegistrations","_arrayRenderers$","_adornmentRegistratio","adornmentType","_layoutRenderers$find","_labelRenderers$find","labelType","childPath","base","fieldNames","foundFields","currentFields","nextField","getAllReferencedClasses","collectExtra","_c$children3","_collectExtra","childClasses","tc","_fieldRef$split2","slice","call","arguments","parentPath"],"mappings":"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"}
|