@astroapps/forms-core 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/controlDefinition.ts","../src/entityExpression.ts","../src/schemaField.ts","../src/schemaNode.ts","../src/schemaBuilder.ts","../src/schemaValidator.ts","../src/schemaDataNode.ts","../src/defaultSchemaInterface.ts","../src/formNode.ts","../src/util.ts","../src/evalExpression.ts","../src/validators.ts","../src/formState.ts"],"sourcesContent":["import { SchemaValidator } from \"./schemaValidator\";\nimport { SchemaField } from \"./schemaField\";\nimport { EntityExpression } from \"./entityExpression\";\nimport { SchemaDataNode } from \"./schemaDataNode\";\nimport { SchemaNode } from \"./schemaNode\";\n\n/**\n * Represents any control definition.\n */\nexport type AnyControlDefinition =\n | DataControlDefinition\n | GroupedControlsDefinition\n | ActionControlDefinition\n | DisplayControlDefinition;\n\n/**\n * Represents a control definition.\n */\nexport interface ControlDefinition {\n type: string;\n id?: string | null;\n childRefId?: string | null;\n title?: string | null;\n hidden?: boolean | null;\n styleClass?: string | null;\n textClass?: string | null;\n layoutClass?: string | null;\n labelClass?: string | null;\n labelTextClass?: string | null;\n placement?: 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 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 Optional = \"Optional\",\n}\n\nexport enum IconLibrary {\n FontAwesome = \"FontAwesome\",\n Material = \"Material\",\n CssClass = \"CssClass\",\n}\n\nexport interface IconReference {\n library: string;\n name: string;\n}\n\nexport interface IconAdornment extends ControlAdornment {\n type: ControlAdornmentType.Icon;\n iconClass: string;\n icon?: IconReference;\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 OptionalAdornment extends ControlAdornment {\n type: ControlAdornmentType.Optional;\n placement?: AdornmentPlacement | null;\n allowNull?: boolean;\n editSelectable?: boolean;\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 Autocomplete = \"Autocomplete\",\n Jsonata = \"Jsonata\",\n Array = \"Array\",\n ArrayElement = \"ArrayElement\",\n ElementSelected = \"ElementSelected\",\n}\n\nexport interface TextfieldRenderOptions extends RenderOptions {\n type: DataRenderType.Textfield;\n placeholder?: string | null;\n multiline?: boolean | null;\n}\n\nexport interface AutocompleteRenderOptions\n extends RenderOptions,\n AutocompleteClasses {\n type: DataRenderType.Autocomplete;\n}\n\nexport interface AutocompleteClasses {\n listContainerClass?: string | null;\n listEntryClass?: string | null;\n chipContainerClass?: string | null;\n chipCloseButtonClass?: string | null;\n placeholder?: string | null;\n}\n\nexport interface CheckEntryClasses {\n entryWrapperClass?: string | null;\n selectedClass?: string | null;\n notSelectedClass?: string | null;\n}\nexport interface RadioButtonRenderOptions\n extends RenderOptions,\n CheckEntryClasses {\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 forceStandard?: 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 editText?: string | null;\n editActionId?: string | null;\n noAdd?: boolean | null;\n noRemove?: boolean | null;\n noReorder?: boolean | null;\n editExternal?: boolean | null;\n}\n\nexport interface ArrayElementRenderOptions extends RenderOptions {\n type: DataRenderType.ArrayElement;\n showInline?: boolean | null;\n}\n\nexport interface ElementSelectedRenderOptions extends RenderOptions {\n type: DataRenderType.ElementSelected;\n elementExpression: EntityExpression;\n}\n\nexport type ArrayActionOptions = Pick<\n ArrayRenderOptions,\n | \"addText\"\n | \"addActionId\"\n | \"removeText\"\n | \"removeActionId\"\n | \"noAdd\"\n | \"noRemove\"\n | \"noReorder\"\n | \"editExternal\"\n | \"editActionId\"\n | \"editText\"\n> & { readonly?: boolean; disabled?: boolean; designMode?: boolean };\n\nexport interface CheckListRenderOptions\n extends RenderOptions,\n CheckEntryClasses {\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 childStyleClass?: string | null;\n childLayoutClass?: string | null;\n childLabelClass?: string | null;\n displayOnly?: boolean | null;\n}\n\nexport interface ActionOptions {\n actionId: string;\n actionText?: string | null;\n actionData?: string | null;\n icon?: IconReference | null;\n actionStyle?: ActionStyle | null;\n iconPlacement?: IconPlacement | null;\n}\nexport enum GroupRenderType {\n Standard = \"Standard\",\n Grid = \"Grid\",\n Flex = \"Flex\",\n Tabs = \"Tabs\",\n GroupElement = \"GroupElement\",\n SelectChild = \"SelectChild\",\n Inline = \"Inline\",\n Wizard = \"Wizard\",\n Dialog = \"Dialog\",\n Contents = \"Contents\",\n}\n\nexport interface DialogRenderOptions extends GroupRenderOptions {\n type: GroupRenderType.Dialog;\n title?: string | null;\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 rowClass?: string | null;\n}\n\nexport interface TabsRenderOptions extends GroupRenderOptions {\n type: GroupRenderType.Tabs;\n contentClass?: string;\n}\n\nexport interface WizardRenderOptions extends GroupRenderOptions {\n type: GroupRenderType.Wizard;\n}\n\nexport interface SelectChildRenderer extends GroupRenderOptions {\n type: GroupRenderType.SelectChild;\n childIndexExpression?: EntityExpression | 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 icon?: IconReference | null;\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 icon?: IconReference | null;\n actionStyle?: ActionStyle | null;\n iconPlacement?: IconPlacement | null;\n}\n\nexport enum ActionStyle {\n Button = \"Button\",\n Secondary = \"Secondary\",\n Link = \"Link\",\n Group = \"Group\",\n}\n\nexport enum IconPlacement {\n BeforeText = \"BeforeText\",\n AfterText = \"AfterText\",\n ReplaceText = \"ReplaceText\",\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 isWizardRenderer(\n options: GroupRenderOptions,\n): options is WizardRenderOptions {\n return options.type === GroupRenderType.Wizard;\n}\n\nexport function isDialogRenderer(\n options: GroupRenderOptions,\n): options is DialogRenderOptions {\n return options.type === GroupRenderType.Dialog;\n}\n\nexport function isInlineRenderer(\n options: GroupRenderOptions,\n): options is GridRenderer {\n return options.type === GroupRenderType.Inline;\n}\n\nexport function isSelectChildRenderer(\n options: GroupRenderOptions,\n): options is SelectChildRenderer {\n return options.type === GroupRenderType.SelectChild;\n}\n\nexport function isTabsRenderer(\n options: GroupRenderOptions,\n): options is TabsRenderOptions {\n return options.type === GroupRenderType.Tabs;\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 isDateTimeRenderer(\n options: RenderOptions,\n): options is DateTimeRenderOptions {\n return options.type === DataRenderType.DateTime;\n}\n\nexport function isAutocompleteRenderer(\n options: RenderOptions,\n): options is AutocompleteRenderOptions {\n return options.type === DataRenderType.Autocomplete;\n}\n\nexport function isAutoCompleteClasses(\n options?: RenderOptions | null,\n): options is AutocompleteClasses & RenderOptions {\n switch (options?.type) {\n case DataRenderType.Autocomplete:\n return true;\n default:\n return false;\n }\n}\n\nexport function isDataGroupRenderer(\n options?: RenderOptions | null,\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 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\nexport function isActionControl(\n c: ControlDefinition,\n): c is ActionControlDefinition {\n return c.type === ControlDefinitionType.Action;\n}\n\nexport function isDisplayControl(\n c: ControlDefinition,\n): c is DisplayControlDefinition {\n return c.type === ControlDefinitionType.Display;\n}\n\nexport function isTextDisplay(d: DisplayData): d is TextDisplay {\n return d.type === DisplayDataType.Text;\n}\n\nexport function isHtmlDisplay(d: DisplayData): d is HtmlDisplay {\n return d.type === DisplayDataType.Html;\n}\n\nexport function isCheckEntryClasses(\n options?: RenderOptions | null,\n): options is CheckEntryClasses & RenderOptions {\n switch (options?.type) {\n case DataRenderType.Radio:\n case DataRenderType.CheckList:\n return true;\n default:\n return false;\n }\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 fontAwesomeIcon(icon: string) {\n return { library: IconLibrary.FontAwesome, name: icon };\n}\n\n/**\n * Checks if a control definition is readonly.\n * @param c - The control definition to check.\n * @returns True if the control definition is readonly, false otherwise.\n */\nexport function isControlReadonly(c: ControlDefinition): boolean {\n return isDataControl(c) && !!c.readonly;\n}\n\n/**\n * Checks if a control definition is disabled.\n * @param c - The control definition to check.\n * @returns True if the control definition is disabled, false otherwise.\n */\nexport function isControlDisabled(c: ControlDefinition): boolean {\n return isDataControl(c) && !!c.disabled;\n}\n\n/**\n * Returns the group renderer options for a control definition.\n * @param {ControlDefinition} def - The control definition to get the group renderer options for.\n * @returns {GroupRenderOptions | undefined} - The group renderer options, or undefined if not applicable.\n */\nexport function getGroupRendererOptions(\n def: ControlDefinition,\n): GroupRenderOptions | undefined {\n return isGroupControl(def)\n ? def.groupOptions\n : isDataControl(def) && isDataGroupRenderer(def.renderOptions)\n ? def.renderOptions.groupOptions\n : undefined;\n}\n\n/**\n * Checks if a control definition is display-only.\n * @param {ControlDefinition} def - The control definition to check.\n * @returns {boolean} - True if the control definition is display-only, false otherwise.\n */\nexport function isControlDisplayOnly(def: ControlDefinition): boolean {\n return Boolean(getGroupRendererOptions(def)?.displayOnly);\n}\n\n/**\n * Returns the display-only render options for a control definition.\n * @param d - The control definition to get the display-only render options for.\n * @returns The display-only render options, or undefined if not applicable.\n */\nexport function getDisplayOnlyOptions(\n d: ControlDefinition,\n): DisplayOnlyRenderOptions | undefined {\n return isDataControl(d) &&\n d.renderOptions &&\n isDisplayOnlyRenderer(d.renderOptions)\n ? d.renderOptions\n : undefined;\n}\n","export 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.NotEmpty;\n field: string;\n empty?: boolean | null;\n}\n\nexport interface UserMatchExpression extends EntityExpression {\n type: ExpressionType.UserMatch;\n userMatch: string;\n}\n","import { SchemaValidator } from \"./schemaValidator\";\n\nexport type EqualityFunc = (a: any, b: any) => boolean;\n\n/**\n * Represents a schema field with various properties.\n */\nexport interface SchemaField {\n /** The type of the field. */\n type: string;\n /** The name of the field. */\n field: string;\n /** The display name of the field, optional. */\n displayName?: string | null;\n /** Tags associated with the field, optional. */\n tags?: string[] | null;\n /** Indicates if the field is a system field, optional. */\n system?: boolean | null;\n /** Indicates if the field is a meta field, optional. */\n meta?: boolean | null;\n /** Indicates if the field is a collection, optional. */\n collection?: boolean | null;\n /** Specifies the types for which the field is applicable, optional. */\n onlyForTypes?: string[] | null;\n /** Indicates if the field is required, optional. */\n required?: boolean | null;\n /** Indicates if the field is not nullable, optional. */\n notNullable?: boolean | null;\n /** The default value of the field, optional. */\n defaultValue?: any;\n /** Indicates if the field is a type field, optional. */\n isTypeField?: boolean | null;\n /** Indicates if the field is searchable, optional. */\n searchable?: boolean | null;\n /** Options for the field, optional. */\n options?: FieldOption[] | null;\n /** Validators for the field, optional. */\n validators?: SchemaValidator[] | null;\n}\n\n/**\n * Represents a map of schema fields.\n * The key is a string representing the schema name.\n * The value is an array of SchemaField objects.\n */\nexport type SchemaMap = Record<string, SchemaField[]>;\n\n/**\n * Enum representing the various field types.\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\n/**\n * Represents a field that references an entity.\n */\nexport interface EntityRefField extends SchemaField {\n /** The type of the field, which is EntityRef. */\n type: FieldType.EntityRef;\n /** The type of the referenced entity. */\n entityRefType: string;\n /** The parent field of the entity reference. */\n parentField: string;\n}\n\n/**\n * Represents an option for a field.\n */\nexport interface FieldOption {\n /** The name of the option. */\n name: string;\n /** The value of the option. */\n value: any;\n /** The description of the option, optional. */\n description?: string | null;\n /** The group of the option, optional. */\n group?: string | null;\n /** Indicates if the option is disabled, optional. */\n disabled?: boolean | null;\n}\n\n/**\n * Represents a compound field that contains child fields.\n */\nexport interface CompoundField extends SchemaField {\n /** The type of the field, which is Compound. */\n type: FieldType.Compound;\n /** The child fields of the compound field. */\n children: SchemaField[];\n /** Indicates if the children are tree-structured, optional. */\n treeChildren?: boolean;\n /** The schema reference for the compound field, optional. */\n schemaRef?: string;\n}\n\n/**\n * Enum representing the various validation message types.\n */\nexport enum ValidationMessageType {\n NotEmpty = \"NotEmpty\",\n MinLength = \"MinLength\",\n MaxLength = \"MaxLength\",\n NotAfterDate = \"NotAfterDate\",\n NotBeforeDate = \"NotBeforeDate\",\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 missingField(field: string): SchemaField {\n return { field: \"__missing\", type: FieldType.Any, displayName: field };\n}\n\nexport enum SchemaTags {\n NoControl = \"_NoControl\",\n HtmlEditor = \"_HtmlEditor\",\n ControlGroup = \"_ControlGroup:\",\n ControlRef = \"_ControlRef:\",\n IdField = \"_IdField:\",\n}\n\nexport function getTagParam(\n field: SchemaField,\n tag: string,\n): string | undefined {\n return field.tags?.find((x) => x.startsWith(tag))?.substring(tag.length);\n}\n\nexport function makeParamTag(tag: string, value: string): string {\n return `${tag}${value}`;\n}\n","import {\n CompoundField,\n FieldType,\n isCompoundField,\n missingField,\n SchemaField,\n} from \"./schemaField\";\n\nexport interface SchemaTreeLookup {\n getSchema(schemaId: string): SchemaNode | undefined;\n\n getSchemaTree(schemaId: string, additional?: SchemaField[]): SchemaTree | undefined;\n}\n\nexport abstract class SchemaTree {\n abstract rootNode: SchemaNode;\n\n abstract getSchemaTree(schemaId: string): SchemaTree | undefined;\n\n createChildNode(parent: SchemaNode, field: SchemaField): SchemaNode {\n return new SchemaNode(parent.id + \"/\" + field.field, field, this, parent);\n }\n\n getSchema(schemaId: string): SchemaNode | undefined {\n return this.getSchemaTree(schemaId)?.rootNode;\n }\n}\n\nclass SchemaTreeImpl extends SchemaTree {\n rootNode: SchemaNode;\n\n getSchemaTree(schemaId: string): SchemaTree | undefined {\n return this.lookup?.getSchemaTree(schemaId);\n }\n\n constructor(\n rootFields: SchemaField[],\n private lookup?: SchemaTreeLookup,\n ) {\n super();\n this.rootNode = new SchemaNode(\n \"\",\n {\n type: FieldType.Compound,\n field: \"\",\n children: rootFields,\n } as CompoundField,\n this,\n );\n }\n}\n\nexport function createSchemaTree(\n rootFields: SchemaField[],\n lookup?: SchemaTreeLookup,\n): SchemaTree {\n return new SchemaTreeImpl(rootFields, lookup);\n}\n\nexport class SchemaNode {\n public constructor(\n public id: string,\n public field: SchemaField,\n public tree: SchemaTree,\n public parent?: SchemaNode,\n ) {}\n\n getSchema(schemaId: string): SchemaNode | undefined {\n return this.tree.getSchema(schemaId);\n }\n\n getUnresolvedFields(): SchemaField[] {\n return isCompoundField(this.field) ? this.field.children : [];\n }\n\n getResolvedParent(noRecurse?: boolean): SchemaNode | undefined {\n const f = this.field;\n if (!isCompoundField(f)) return undefined;\n const parentNode = f.schemaRef\n ? this.tree.getSchema(f.schemaRef)\n : !noRecurse && f.treeChildren\n ? this.parent?.getResolvedParent()\n : undefined;\n return parentNode ?? this;\n }\n\n getResolvedFields(): SchemaField[] {\n const resolvedParent = this.getResolvedParent();\n return resolvedParent?.getUnresolvedFields() ?? [];\n }\n\n getChildNodes(): SchemaNode[] {\n const node = this;\n return node.getResolvedFields().map((x) => node.createChildNode(x));\n }\n\n getChildField(field: string): SchemaField {\n return (\n this.getResolvedFields().find((x) => x.field === field) ??\n missingField(field)\n );\n }\n\n createChildNode(field: SchemaField): SchemaNode {\n return this.tree.createChildNode(this, field);\n }\n\n getChildNode(field: string): SchemaNode {\n return this.createChildNode(this.getChildField(field));\n }\n}\n\nexport function resolveSchemaNode(\n node: SchemaNode,\n fieldSegment: string,\n): SchemaNode | undefined {\n if (fieldSegment == \".\") return node;\n if (fieldSegment == \"..\") return node.parent;\n return node.getChildNode(fieldSegment);\n}\n\nexport function createSchemaNode(\n field: SchemaField,\n lookup: SchemaTree,\n parent: SchemaNode | undefined,\n): SchemaNode {\n return new SchemaNode(\n parent ? parent.id + \"/\" + field.field : field.field,\n field,\n lookup,\n parent,\n );\n}\n\nexport function createSchemaLookup<A extends Record<string, SchemaField[]>>(\n schemaMap: A,\n): {\n getSchema(schemaId: keyof A): SchemaNode;\n getSchemaTree(schemaId: keyof A, additional?: SchemaField[]): SchemaTree;\n} {\n const lookup = {\n getSchemaTree,\n getSchema,\n };\n return lookup;\n\n function getSchema(schemaId: keyof A): SchemaNode {\n return getSchemaTree(schemaId)!.rootNode;\n }\n\n function getSchemaTree(\n schemaId: keyof A,\n additional?: SchemaField[],\n ): SchemaTree {\n const fields = schemaMap[schemaId];\n if (fields) {\n return new SchemaTreeImpl(\n additional ? [...fields, ...additional] : fields,\n lookup,\n );\n }\n return undefined!;\n }\n}\n\nexport function schemaForFieldRef(\n fieldRef: string | undefined,\n schema: SchemaNode,\n): SchemaNode {\n return schemaForFieldPath(fieldRef?.split(\"/\") ?? [], schema);\n}\n\nexport function traverseSchemaPath<A>(\n fieldPath: string[],\n schema: SchemaNode,\n acc: A,\n next: (acc: A, node: SchemaNode) => A,\n): A {\n let i = 0;\n while (i < fieldPath.length) {\n const nextField = fieldPath[i];\n let childNode = resolveSchemaNode(schema, nextField);\n if (!childNode) {\n childNode = createSchemaNode(\n missingField(nextField),\n schema.tree,\n schema,\n );\n }\n acc = next(acc, childNode);\n schema = childNode;\n i++;\n }\n return acc;\n}\n\nexport function traverseData(\n fieldPath: string[],\n root: SchemaNode,\n data: { [k: string]: any },\n): unknown {\n return traverseSchemaPath(\n fieldPath,\n root,\n data,\n (acc, n) => acc?.[n.field.field] as any,\n );\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 = resolveSchemaNode(schema, nextField);\n if (!childNode) {\n childNode = createSchemaNode(\n missingField(nextField),\n schema.tree,\n schema,\n );\n }\n schema = childNode;\n i++;\n }\n return schema;\n}\n\nexport function getSchemaNodePath(node: SchemaNode) {\n const paths: string[] = [];\n let curNode: SchemaNode | undefined = node;\n while (curNode) {\n paths.push(curNode.field.field);\n curNode = curNode.parent;\n }\n return paths.reverse();\n}\n\nexport function getSchemaNodePathString(node: SchemaNode) {\n return getSchemaNodePath(node).join(\"/\");\n}\n\nexport function isCompoundNode(node: SchemaNode) {\n return isCompoundField(node.field);\n}\n\n/**\n * Returns the relative path from a parent node to a child node.\n * @param parent\n * @param child\n */\nexport function relativePath(parent: SchemaNode, child: SchemaNode): string {\n // return the path from child to parent\n if (parent.id === child.id) return \".\";\n\n const parentPath = getSchemaNodePath(parent);\n const childPath = getSchemaNodePath(child);\n return relativeSegmentPath(parentPath, childPath);\n}\n\n/**\n * Returns the relative path from a parent node to a child node.\n * @param parentPath\n * @param childPath\n */\nexport function relativeSegmentPath(\n parentPath: string[],\n childPath: string[],\n): string {\n let i = 0;\n while (\n i < parentPath.length &&\n i < childPath.length &&\n parentPath[i] === childPath[i]\n ) {\n i++;\n }\n\n const upLevels = parentPath.length - i;\n const downPath = childPath.slice(i).join(\"/\");\n\n return \"../\".repeat(upLevels) + downPath;\n}\n","import {\n CompoundField,\n FieldOption,\n FieldType,\n isCompoundField,\n SchemaField,\n SchemaMap,\n} from \"./schemaField\";\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","export enum ValidatorType {\n Jsonata = \"Jsonata\",\n Date = \"Date\",\n Length = \"Length\",\n}\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","import {\n Control,\n ensureMetaValue,\n newControl,\n updateComputedValue,\n} from \"@astroapps/controls\";\nimport { missingField } from \"./schemaField\";\nimport { createSchemaNode, resolveSchemaNode, SchemaNode } from \"./schemaNode\";\nimport { SchemaInterface } from \"./schemaInterface\";\nimport { ControlDefinition, getDisplayOnlyOptions } from \"./controlDefinition\";\n\nexport abstract class SchemaDataTree {\n abstract rootNode: SchemaDataNode;\n\n abstract getChild(parent: SchemaDataNode, child: SchemaNode): SchemaDataNode;\n\n abstract getChildElement(\n parent: SchemaDataNode,\n elementIndex: number,\n ): SchemaDataNode;\n}\n\nexport class SchemaDataNode {\n constructor(\n public id: string,\n public schema: SchemaNode,\n public elementIndex: number | undefined,\n public control: Control<any>,\n public tree: SchemaDataTree,\n public parent?: SchemaDataNode,\n ) {}\n\n getChild(childNode: SchemaNode): SchemaDataNode {\n return this.tree.getChild(this, childNode);\n }\n\n getChildElement(elementIndex: number): SchemaDataNode {\n return this.tree.getChildElement(this, elementIndex);\n }\n}\n\nexport function getMetaFields<\n T extends Record<string, any> = Record<string, unknown>,\n>(control: Control<any>): Control<T> {\n return ensureMetaValue(\n control,\n \"metaFields\",\n () => newControl({}) as Control<T>,\n );\n}\nexport class SchemaDataTreeImpl extends SchemaDataTree {\n rootNode: SchemaDataNode;\n\n constructor(rootSchema: SchemaNode, rootControl: Control<any>) {\n super();\n this.rootNode = new SchemaDataNode(\n \"\",\n rootSchema,\n undefined,\n rootControl,\n this,\n );\n }\n\n getChild(parent: SchemaDataNode, childNode: SchemaNode): SchemaDataNode {\n let objControl = parent.control as Control<Record<string, unknown>>;\n if (childNode.field.meta) {\n objControl = getMetaFields(objControl);\n }\n const child = objControl.fields[childNode.field.field];\n return new SchemaDataNode(\n child.uniqueId.toString(),\n childNode,\n undefined,\n child,\n this,\n parent,\n );\n }\n\n getChildElement(\n parent: SchemaDataNode,\n elementIndex: number,\n ): SchemaDataNode {\n const elemControl = parent.control as Control<unknown[]>;\n const elemChild = elemControl.elements[elementIndex];\n return new SchemaDataNode(\n elemChild.uniqueId.toString(),\n parent.schema,\n elementIndex,\n elemChild,\n this,\n parent,\n );\n }\n}\n\n/**\n * @deprecated Use createSchemaDataNode instead.\n */\nexport const makeSchemaDataNode = createSchemaDataNode;\n\nexport function createSchemaDataNode(\n schema: SchemaNode,\n control: Control<unknown>,\n): SchemaDataNode {\n return new SchemaDataTreeImpl(schema, control).rootNode;\n}\n\nexport function schemaDataForFieldRef(\n fieldRef: string | undefined,\n schema: SchemaDataNode,\n): SchemaDataNode {\n return schemaDataForFieldPath(fieldRef?.split(\"/\") ?? [], schema);\n}\n\nexport function schemaDataForFieldPath(\n fieldPath: string[],\n dataNode: SchemaDataNode,\n): SchemaDataNode {\n let i = 0;\n while (i < fieldPath.length) {\n const nextField = fieldPath[i];\n let nextNode =\n nextField === \"..\"\n ? dataNode.parent\n : nextField === \".\"\n ? dataNode\n : lookupField(nextField);\n nextNode ??= createSchemaDataNode(\n createSchemaNode(\n missingField(nextField),\n dataNode.schema.tree,\n dataNode.schema,\n ),\n newControl(undefined),\n );\n dataNode = nextNode;\n i++;\n }\n return dataNode;\n\n function lookupField(field: string): SchemaDataNode | undefined {\n const childNode = resolveSchemaNode(dataNode.schema, field);\n if (childNode) {\n return dataNode.getChild(childNode);\n }\n return undefined;\n }\n}\n\nexport function validDataNode(context: SchemaDataNode): boolean {\n const parent = context.parent;\n if (!parent) return true;\n if (parent.schema.field.collection && parent.elementIndex == null)\n return validDataNode(parent);\n return ensureMetaValue(context.control, \"validForSchema\", () => {\n const c = newControl(true);\n updateComputedValue(c, () => {\n if (!validDataNode(parent)) return false;\n const types = context.schema.field.onlyForTypes;\n if (types == null || types.length === 0) return true;\n const typeNode = parent.schema\n .getChildNodes()\n .find((x) => x.field.isTypeField);\n if (typeNode == null) {\n console.warn(\"No type field found for\", parent.schema);\n return false;\n }\n const typeField = parent.getChild(typeNode).control as Control<string>;\n return typeField && types.includes(typeField.value);\n });\n return c;\n }).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","import {\n EqualityFunc,\n FieldOption,\n FieldType,\n SchemaField,\n ValidationMessageType,\n} from \"./schemaField\";\nimport { SchemaInterface } from \"./schemaInterface\";\nimport { SchemaDataNode } from \"./schemaDataNode\";\nimport { SchemaNode } from \"./schemaNode\";\nimport { Control, ControlSetup } from \"@astroapps/controls\";\n\nexport class DefaultSchemaInterface implements SchemaInterface {\n constructor(\n protected boolStrings: [string, string] = [\"No\", \"Yes\"],\n protected parseDateTime: (s: string) => number = (s) => Date.parse(s),\n ) {}\n\n parseToMillis(field: SchemaField, v: string): number {\n return this.parseDateTime(v);\n }\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 getDataOptions(node: SchemaDataNode): FieldOption[] | null | undefined {\n return this.getNodeOptions(node.schema);\n }\n\n getNodeOptions(node: SchemaNode): FieldOption[] | null | undefined {\n return this.getOptions(node.field);\n }\n\n getOptions({ options }: SchemaField): FieldOption[] | null | undefined {\n return options && options.length > 0 ? options : null;\n }\n\n getFilterOptions(\n array: SchemaDataNode,\n field: SchemaNode,\n ): FieldOption[] | undefined | null {\n return this.getNodeOptions(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\n searchText(field: SchemaField, value: any): string {\n return this.textValue(field, value)?.toLowerCase() ?? \"\";\n }\n\n textValueForData(dataNode: SchemaDataNode): string | undefined {\n const options = this.getDataOptions(dataNode);\n return this.textValue(\n dataNode.schema.field,\n dataNode.control.value,\n dataNode.elementIndex != null,\n options,\n );\n }\n textValue(\n field: SchemaField,\n value: any,\n element?: boolean | undefined,\n options?: FieldOption[] | null,\n ): string | undefined {\n const actualOptions = options ?? this.getOptions(field);\n const option = actualOptions?.find((x) => x.value === value);\n if (option) return option.name;\n switch (field.type) {\n case FieldType.Date:\n return value ? new Date(value).toLocaleDateString() : undefined;\n case FieldType.DateTime:\n return value\n ? new Date(this.parseToMillis(field, value)).toLocaleString()\n : 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\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\n valueLength(field: SchemaField, value: any): number {\n return (value && value?.length) ?? 0;\n }\n\n compareValue(field: SchemaField, v1: unknown, v2: unknown): number {\n if (v1 == null) return v2 == null ? 0 : 1;\n if (v2 == null) return -1;\n switch (field.type) {\n case FieldType.Date:\n case FieldType.DateTime:\n case FieldType.Time:\n case FieldType.String:\n return (v1 as string).localeCompare(v2 as string);\n case FieldType.Bool:\n return (v1 as boolean) ? ((v2 as boolean) ? 0 : 1) : -1;\n case FieldType.Int:\n case FieldType.Double:\n return (v1 as number) - (v2 as number);\n default:\n return 0;\n }\n }\n\n compoundFieldSetup(f: SchemaNode): [string, ControlSetup<any>][] {\n return f.getChildNodes().map((x) => {\n const { field } = x.field;\n return [field, this.makeControlSetup(x)];\n });\n }\n\n compoundFieldEquality(f: SchemaNode): [string, EqualityFunc][] {\n return f.getChildNodes().map((x) => {\n const { field } = x.field;\n return [field, (a, b) => this.makeEqualityFunc(x)(a[field], b[field])];\n });\n }\n\n makeEqualityFunc(field: SchemaNode, element?: boolean): EqualityFunc {\n if (field.field.collection && !element) {\n const elemEqual = this.makeEqualityFunc(field, true);\n return (a, b) => {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!elemEqual(a[i], b[i])) return false;\n }\n return true;\n };\n }\n switch (field.field.type) {\n case FieldType.Compound:\n const allChecks = this.compoundFieldEquality(field);\n return (a, b) =>\n a === b ||\n (a != null && b != null && allChecks.every((x) => x[1](a, b)));\n default:\n return (a, b) => a === b;\n }\n }\n makeControlSetup(field: SchemaNode, element?: boolean): ControlSetup<any> {\n let setup: ControlSetup<any> = {\n equals: this.makeEqualityFunc(field, element),\n };\n if (field.field.collection && !element) {\n setup.elems = this.makeControlSetup(field, true);\n return setup;\n }\n switch (field.field.type) {\n case FieldType.Compound:\n setup.fields = Object.fromEntries(this.compoundFieldSetup(field));\n }\n return setup;\n }\n}\n\nexport const defaultSchemaInterface: SchemaInterface =\n new DefaultSchemaInterface();\n","import {\n ControlDefinition,\n ControlDefinitionType,\n DataControlDefinition,\n GroupedControlsDefinition,\n GroupRenderType,\n isDataControl,\n isGroupControl,\n} from \"./controlDefinition\";\nimport { schemaDataForFieldPath, SchemaDataNode } from \"./schemaDataNode\";\n\nexport type ControlMap = { [k: string]: ControlDefinition };\n\nexport class FormNode {\n constructor(\n public id: string,\n public definition: ControlDefinition,\n public tree: FormTree,\n public parent?: FormNode,\n ) {}\n\n visit<A>(visitFn: (n: FormNode) => A | undefined): A | undefined {\n const res = visitFn(this);\n if (res !== undefined) return res;\n const children = this.getUnresolvedChildNodes();\n for (const child of children) {\n const res = child.visit(visitFn);\n if (res !== undefined) return res;\n }\n return undefined;\n }\n\n getResolvedChildren(): ControlDefinition[] {\n const childRefId = this.definition.childRefId;\n const parent = childRefId ? this.tree.getByRefId(childRefId) : undefined;\n return (parent ?? this.definition)?.children ?? [];\n }\n\n createChildNode(childId: string, childDef: ControlDefinition) {\n return new FormNode(\n this.tree.getChildId(this.id, childId, childDef),\n childDef,\n this.tree,\n this,\n );\n }\n\n getChildNodes(): FormNode[] {\n const resolved = this.getResolvedChildren();\n return resolved.map((x, i) => this.createChildNode(i.toString(), x));\n }\n\n getUnresolvedChildNodes(): FormNode[] {\n return (\n this.definition.children?.map((x, i) =>\n this.createChildNode(i.toString(), x),\n ) ?? []\n );\n }\n}\n\nexport interface FormTreeLookup {\n getForm(formId: string): FormTree | undefined;\n}\n\nexport abstract class FormTree implements FormTreeLookup {\n abstract rootNode: FormNode;\n\n abstract getByRefId(id: string): ControlDefinition | undefined;\n\n abstract getForm(formId: string): FormTree | undefined;\n\n getChildId(\n parentId: string,\n childId: string,\n control: ControlDefinition,\n ): string {\n return parentId + \"/\" + childId;\n }\n}\n\nfunction getControlIds(\n definition: ControlDefinition,\n): [string, ControlDefinition][] {\n const childEntries = definition.children?.flatMap(getControlIds) ?? [];\n return !definition.id\n ? childEntries\n : [[definition.id, definition], ...childEntries];\n}\n\nexport function createControlMap(control: ControlDefinition): ControlMap {\n return Object.fromEntries(getControlIds(control));\n}\n\nclass FormTreeImpl extends FormTree {\n controlMap: ControlMap;\n rootNode: FormNode;\n\n constructor(\n private forms: FormTreeLookup,\n root: ControlDefinition,\n ) {\n super();\n this.rootNode = new FormNode(\"\", root, this);\n this.controlMap = createControlMap(root);\n }\n\n getByRefId(id: string): ControlDefinition | undefined {\n return this.controlMap[id];\n }\n\n getForm(formId: string): FormTree | undefined {\n return this.forms.getForm(formId);\n }\n}\n\nexport function legacyFormNode(definition: ControlDefinition) {\n return createFormTree([definition]).rootNode.getChildNodes()[0];\n}\n\nexport function createFormTree(\n controls: ControlDefinition[],\n getForm: FormTreeLookup = { getForm: () => undefined },\n): FormTree {\n return new FormTreeImpl(getForm, {\n type: ControlDefinitionType.Group,\n children: controls,\n groupOptions: {\n type: GroupRenderType.Standard,\n hideTitle: true,\n },\n } as GroupedControlsDefinition);\n}\n\nexport function createFormLookup<A extends Record<string, ControlDefinition[]>>(\n formMap: A,\n): {\n getForm(formId: keyof A): FormTree;\n} {\n const lookup = {\n getForm,\n };\n const forms = Object.fromEntries(\n Object.entries(formMap).map(([k, v]) => [k, createFormTree(v, lookup)]),\n );\n return lookup;\n\n function getForm(formId: keyof A): FormTree {\n return forms[formId as string];\n }\n}\n\nexport function fieldPathForDefinition(\n c: ControlDefinition,\n): string[] | undefined {\n const fieldName = isGroupControl(c)\n ? c.compoundField\n : isDataControl(c)\n ? c.field\n : undefined;\n return fieldName?.split(\"/\");\n}\n\nexport function lookupDataNode(\n c: ControlDefinition,\n parentNode: SchemaDataNode,\n) {\n const fieldNamePath = fieldPathForDefinition(c);\n return fieldNamePath\n ? schemaDataForFieldPath(fieldNamePath, parentNode)\n : undefined;\n}\n\n/**\n * @deprecated use visitFormNodeData instead\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\n/**\n * @deprecated use visitFormDataInContext instead\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 return visitFormDataInContext(ctx, legacyFormNode(definition), (n, d) =>\n cb(d, n),\n );\n}\n\nexport type ControlDataVisitor<A> = (\n dataNode: SchemaDataNode,\n definition: DataControlDefinition,\n) => A | undefined;\n\nexport function visitFormData<A>(\n node: FormNode,\n dataNode: SchemaDataNode,\n cb: ControlDataVisitor<A>,\n notSelf?: boolean,\n): A | undefined {\n const def = node.definition;\n const result = !notSelf && isDataControl(def) ? cb(dataNode, def) : undefined;\n if (result !== undefined) return result;\n if (dataNode.elementIndex == null && dataNode.schema.field.collection) {\n const l = dataNode.control.elements.length;\n for (let i = 0; i < l; i++) {\n const elemChild = dataNode.getChildElement(i);\n const elemResult = visitFormData(node, elemChild, cb);\n if (elemResult !== undefined) return elemResult;\n }\n return undefined;\n }\n if (dataNode.control.isNull) return undefined;\n const children = node.getChildNodes();\n const l = children.length;\n for (let i = 0; i < l; i++) {\n const elemResult = visitFormDataInContext(dataNode, children[i], cb);\n if (elemResult !== undefined) return elemResult;\n }\n return undefined;\n}\n\nexport function visitFormDataInContext<A>(\n parentContext: SchemaDataNode,\n node: FormNode,\n cb: ControlDataVisitor<A>,\n): A | undefined {\n const dataNode = lookupDataNode(node.definition, parentContext);\n return visitFormData(node, dataNode ?? parentContext, cb, !dataNode);\n}\n\nexport interface FormDataNode {\n parent?: FormDataNode;\n formNode: FormNode;\n parentData: SchemaDataNode;\n childIndex?: number;\n}\n\nexport function visitFormDataNode<A>(\n node: FormDataNode,\n visitFn: (node: FormDataNode, data?: SchemaDataNode) => A | undefined,\n): A | undefined {\n const dataNode = lookupDataNode(node.formNode.definition, node.parentData);\n const v = visitFn(node, dataNode);\n if (v !== undefined) return v;\n\n const parentData = dataNode ?? node.parentData;\n if (parentData.schema.field.collection && parentData.elementIndex == null) {\n const elemCount = parentData.control.elements.length;\n for (let i = 0; i < elemCount; i++) {\n const v = visitChildren(parentData.getChildElement(i));\n if (v !== undefined) return v;\n }\n return undefined;\n } else {\n return visitChildren(parentData);\n }\n\n function visitChildren(parentData: SchemaDataNode) {\n const children = node.formNode.getChildNodes();\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n const res = visitFormDataNode(\n {\n formNode: child,\n parent: node,\n parentData,\n childIndex: i,\n },\n visitFn,\n );\n if (res !== undefined) return res;\n }\n }\n}\n","import {\n addDependent,\n CleanupScope,\n Control, ControlSetup,\n newControl,\n updateComputedValue\n} from \"@astroapps/controls\";\n\n/**\n * Type representing a JSON path, which can be a string or a number.\n */\nexport type JsonPath = string | number;\n\n/**\n * Converts a JSON path array to a string.\n * @param jsonPath - The JSON path array to convert.\n * @param customIndex - Optional function to customize the index format.\n * @returns The JSON path string.\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 createScopedComputed<T>(\n parent: CleanupScope,\n compute: () => T,\n): Control<T> {\n const c = newControl<any>(undefined);\n updateComputedValue(c, compute);\n addDependent(parent, c);\n return c.as();\n}\n\nexport function createScoped<T>(parent: CleanupScope, value: T, setup?: ControlSetup<T>): Control<T> {\n const c = newControl<T>(value, setup);\n addDependent(parent, c);\n return c;\n}\n","import {\n DataExpression,\n DataMatchExpression,\n EntityExpression,\n ExpressionType,\n JsonataExpression,\n NotEmptyExpression,\n} from \"./entityExpression\";\nimport {\n AsyncEffect,\n CleanupScope,\n collectChanges,\n createAsyncEffect,\n createSyncEffect,\n trackedValue,\n Value,\n} from \"@astroapps/controls\";\nimport { schemaDataForFieldRef, SchemaDataNode } from \"./schemaDataNode\";\nimport { SchemaInterface } from \"./schemaInterface\";\nimport jsonata from \"jsonata\";\nimport { getJsonPath, getRootDataNode } from \"./controlDefinition\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { createScopedComputed, jsonPathString } from \"./util\";\n\nexport interface ExpressionEvalContext {\n scope: CleanupScope;\n returnResult: (k: unknown) => void;\n dataNode: SchemaDataNode;\n schemaInterface: SchemaInterface;\n variables?: Value<Record<string, any> | undefined>;\n runAsync(effect: () => void): void;\n}\n\nexport type ExpressionEval<T extends EntityExpression> = (\n expr: T,\n context: ExpressionEvalContext,\n) => void;\n\nconst dataEval: ExpressionEval<DataExpression> = (\n fvExpr,\n { dataNode: node, returnResult, scope },\n) => {\n createSyncEffect(() => {\n const otherField = schemaDataForFieldRef(fvExpr.field, node);\n returnResult(otherField.control?.value);\n }, scope);\n};\nconst dataMatchEval: ExpressionEval<DataMatchExpression> = (\n matchExpr,\n { dataNode, returnResult, scope },\n) => {\n createSyncEffect(() => {\n const otherField = schemaDataForFieldRef(matchExpr.field, dataNode);\n const fv = otherField?.control.value;\n returnResult(\n Array.isArray(fv) ? fv.includes(matchExpr.value) : fv === matchExpr.value,\n );\n }, scope);\n};\n\nconst notEmptyEval: ExpressionEval<NotEmptyExpression> = (\n expr,\n { returnResult, dataNode, scope, schemaInterface },\n) => {\n createSyncEffect(() => {\n const otherField = schemaDataForFieldRef(expr.field, dataNode);\n const fv = otherField.control?.value;\n const field = otherField.schema.field;\n const empty = !!expr.empty;\n returnResult(field && empty === schemaInterface.isEmptyValue(field, fv));\n }, scope);\n};\n\nexport const jsonataEval: ExpressionEval<JsonataExpression> = (\n expr,\n { scope, returnResult, dataNode, variables, runAsync },\n) => {\n const path = getJsonPath(dataNode);\n const pathString = jsonPathString(path, (x) => `#$i[${x}]`);\n const rootData = getRootDataNode(dataNode).control;\n\n const parsedJsonata = createScopedComputed(scope, () => {\n const jExpr = expr.expression;\n const fullExpr = pathString ? pathString + \".(\" + jExpr + \")\" : jExpr;\n try {\n return { expr: jsonata(fullExpr ? fullExpr : \"null\"), fullExpr };\n } catch (e) {\n console.error(e);\n return { expr: jsonata(\"null\"), fullExpr };\n }\n });\n\n async function runJsonata(effect: AsyncEffect<any>, signal: AbortSignal) {\n const bindings = collectChanges(\n effect.collectUsage,\n () => variables?.value,\n );\n const evalResult = await parsedJsonata.fields.expr.value.evaluate(\n trackedValue(rootData, effect.collectUsage),\n bindings,\n );\n // console.log(parsedJsonata.fields.fullExpr.value, evalResult, bindings);\n collectChanges(effect.collectUsage, () => returnResult(evalResult));\n }\n\n const asyncEffect = createAsyncEffect(runJsonata, scope);\n runAsync(() => asyncEffect.start());\n};\n\nexport const uuidEval: ExpressionEval<EntityExpression> = (_, ctx) => {\n ctx.returnResult(uuidv4());\n};\n\nexport const defaultEvaluators: Record<string, ExpressionEval<any>> = {\n [ExpressionType.DataMatch]: dataMatchEval,\n [ExpressionType.Data]: dataEval,\n [ExpressionType.NotEmpty]: notEmptyEval,\n [ExpressionType.Jsonata]: jsonataEval,\n [ExpressionType.UUID]: uuidEval,\n};\n","import {\n DateComparison,\n DateValidator,\n JsonataValidator,\n LengthValidator,\n SchemaValidator,\n ValidatorType,\n} from \"./schemaValidator\";\nimport { ControlDefinition, isDataControl } from \"./controlDefinition\";\nimport { SchemaDataNode } from \"./schemaDataNode\";\nimport {\n Control,\n ControlChange,\n createCleanupScope,\n createEffect,\n trackControlChange,\n} from \"@astroapps/controls\";\nimport { ValidationMessageType } from \"./schemaField\";\nimport { SchemaInterface } from \"./schemaInterface\";\n\nimport { FormContextOptions } from \"./formState\";\nimport { FormNode } from \"./formNode\";\nimport { jsonataEval } from \"./evalExpression\";\nimport { ExpressionType } from \"./entityExpression\";\nimport { createScopedComputed } from \"./util\";\n\nexport interface ValidationEvalContext {\n addSync(validate: (value: unknown) => string | undefined | null): void;\n addCleanup(cleanup: () => void): void;\n validationEnabled: Control<boolean>;\n parentData: SchemaDataNode;\n data: SchemaDataNode;\n schemaInterface: SchemaInterface;\n formContext: Control<FormContextOptions>;\n runAsync(af: () => void): void;\n}\n\nexport type ValidatorEval<T extends SchemaValidator> = (\n validation: T,\n context: ValidationEvalContext,\n) => void;\n\nexport const jsonataValidator: ValidatorEval<JsonataValidator> = (\n validation,\n context,\n) => {\n const error = createScopedComputed(context, () => undefined);\n jsonataEval(\n { type: ExpressionType.Jsonata, expression: validation.expression },\n {\n scope: error,\n dataNode: context.parentData,\n returnResult: (v) => {\n trackControlChange(context.data.control, ControlChange.Validate);\n // console.log(\"Setting jsonata error\", v);\n context.data.control.setError(\"jsonata\", v?.toString());\n },\n schemaInterface: context.schemaInterface,\n variables: context.formContext.fields.variables,\n runAsync: context.runAsync,\n },\n );\n};\n\nexport const lengthValidator: ValidatorEval<LengthValidator> = (\n lv,\n context,\n) => {\n const { schemaInterface } = context;\n context.addSync(() => {\n const field = context.data.schema.field;\n const control = context.data.control;\n const len = schemaInterface.controlLength(field, control);\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};\n\nexport const dateValidator: ValidatorEval<DateValidator> = (dv, context) => {\n const { schemaInterface } = context;\n const field = context.data.schema.field;\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\n context.addSync((v) => {\n if (v) {\n const selDate = schemaInterface.parseToMillis(field, v as string);\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};\n\nexport const defaultValidators: Record<string, ValidatorEval<any>> = {\n [ValidatorType.Jsonata]: jsonataValidator,\n [ValidatorType.Length]: lengthValidator,\n [ValidatorType.Date]: dateValidator,\n};\n\nexport function createValidators(\n def: ControlDefinition,\n context: ValidationEvalContext,\n): void {\n if (isDataControl(def)) {\n const { schemaInterface } = context;\n if (def.required) {\n context.addSync((v) => {\n const field = context.data.schema.field;\n return schemaInterface.isEmptyValue(field, v)\n ? schemaInterface.validationMessageText(\n field,\n ValidationMessageType.NotEmpty,\n false,\n true,\n )\n : null;\n });\n }\n def.validators?.forEach((x) => defaultValidators[x.type]?.(x, context));\n }\n}\n\nexport function setupValidation(\n controlImpl: Control<FormContextOptions>,\n definition: ControlDefinition,\n dataNode: Control<SchemaDataNode | undefined>,\n schemaInterface: SchemaInterface,\n parent: SchemaDataNode,\n formNode: FormNode,\n runAsync: (af: () => void) => void,\n) {\n const validationEnabled = createScopedComputed(\n controlImpl,\n () => !definition.hidden,\n );\n const validatorsScope = createCleanupScope();\n createEffect(\n () => {\n validatorsScope.cleanup();\n const dn = dataNode.value;\n if (dn) {\n let syncValidations: ((v: unknown) => string | undefined | null)[] = [];\n createValidators(formNode.definition, {\n data: dn,\n parentData: parent,\n validationEnabled,\n schemaInterface,\n addSync(validate: (v: unknown) => string | undefined | null) {\n syncValidations.push(validate);\n },\n addCleanup(cleanup: () => void) {\n validatorsScope.addCleanup(cleanup);\n },\n formContext: controlImpl,\n runAsync,\n });\n\n createEffect(\n () => {\n if (!validationEnabled.value) return undefined;\n trackControlChange(dn.control, ControlChange.Validate);\n const value = dn.control.value;\n let error = null;\n for (const syncValidation of syncValidations) {\n error = syncValidation(value);\n if (error) break;\n }\n return error;\n },\n (e) => {\n dn.control.setError(\"default\", e);\n },\n validatorsScope,\n );\n }\n },\n (c) => {},\n controlImpl,\n );\n}\n","import { FormNode, lookupDataNode } from \"./formNode\";\nimport {\n hideDisplayOnly,\n SchemaDataNode,\n validDataNode,\n} from \"./schemaDataNode\";\nimport {\n AnyControlDefinition,\n ControlAdornmentType,\n ControlDefinition,\n DataRenderType,\n DynamicPropertyType,\n HtmlDisplay,\n isActionControl,\n isControlDisabled,\n isControlReadonly,\n isDataControl,\n isDisplayControl,\n isHtmlDisplay,\n isTextDisplay,\n TextDisplay,\n} from \"./controlDefinition\";\nimport { SchemaInterface } from \"./schemaInterface\";\nimport { FieldOption } from \"./schemaField\";\nimport {\n CleanupScope,\n Control,\n createScopedEffect,\n createSyncEffect,\n ensureMetaValue,\n getControlPath,\n getCurrentFields,\n getMetaValue,\n newControl,\n unsafeRestoreControl,\n updateComputedValue,\n} from \"@astroapps/controls\";\nimport {\n defaultEvaluators,\n ExpressionEval,\n ExpressionEvalContext,\n} from \"./evalExpression\";\nimport { EntityExpression } from \"./entityExpression\";\nimport { createScoped, jsonPathString } from \"./util\";\nimport { setupValidation } from \"./validators\";\n\nexport interface ControlState {\n definition: ControlDefinition;\n schemaInterface: SchemaInterface;\n dataNode?: SchemaDataNode | undefined;\n stateId?: string;\n style?: object;\n layoutStyle?: object;\n allowedOptions?: any[];\n readonly: boolean;\n hidden: boolean;\n disabled: boolean;\n clearHidden: boolean;\n variables: Record<string, any>;\n meta: Control<Record<string, any>>;\n}\n\nexport interface FormContextOptions {\n readonly?: boolean | null;\n hidden?: boolean | null;\n disabled?: boolean | null;\n clearHidden?: boolean;\n stateKey?: string;\n variables?: Record<string, any>;\n}\n\n/**\n * Interface representing the form context data.\n */\nexport interface FormContextData {\n option?: FieldOption;\n optionSelected?: boolean;\n}\n\nexport interface FormState {\n getControlState(\n parent: SchemaDataNode,\n formNode: FormNode,\n context: FormContextOptions,\n runAsync: (af: () => void) => void,\n ): ControlState;\n\n cleanup(): void;\n\n evalExpression(expr: EntityExpression, context: ExpressionEvalContext): void;\n\n getExistingControlState(\n parent: SchemaDataNode,\n formNode: FormNode,\n stateKey?: string,\n ): ControlState | undefined;\n}\n\nconst formStates: FormState[] = [];\n\nexport function getControlStateId(\n parent: SchemaDataNode,\n formNode: FormNode,\n stateKey?: string,\n): string {\n return parent.id + \"$\" + formNode.id + (stateKey ?? \"\");\n}\n\nexport function createFormState(\n schemaInterface: SchemaInterface,\n evaluators: Record<string, ExpressionEval<any>> = defaultEvaluators,\n): FormState {\n // console.log(\"createFormState\");\n const controlStates = newControl<Record<string, FormContextOptions>>({});\n\n function evalExpression(\n e: EntityExpression,\n context: ExpressionEvalContext,\n ): void {\n const x = evaluators[e.type];\n x?.(e, context);\n }\n\n return {\n evalExpression,\n cleanup: () => {\n // console.log(\"Cleanup form state\");\n controlStates.cleanup();\n },\n getExistingControlState(\n parent: SchemaDataNode,\n formNode: FormNode,\n stateKey?: string,\n ): ControlState | undefined {\n const stateId = getControlStateId(parent, formNode, stateKey);\n const control = getCurrentFields(controlStates)[stateId];\n if (control) {\n return getMetaValue<Control<ControlState>>(control, \"impl\")?.value;\n }\n return undefined;\n },\n getControlState(\n parent: SchemaDataNode,\n formNode: FormNode,\n context: FormContextOptions,\n runAsync: (af: () => void) => void,\n ): ControlState {\n const stateId = getControlStateId(parent, formNode, context.stateKey);\n const controlImpl = controlStates.fields[stateId];\n controlImpl.value = context;\n function evalExpr<A>(\n scope: CleanupScope,\n init: A,\n nk: Control<A>,\n e: EntityExpression | undefined,\n coerce: (t: unknown) => any,\n ): boolean {\n nk.value = init;\n if (e?.type) {\n evalExpression(e, {\n returnResult: (r) => {\n nk.value = coerce(r);\n },\n scope,\n dataNode: parent,\n variables: controlImpl.fields.variables,\n schemaInterface,\n runAsync,\n });\n return true;\n }\n return false;\n }\n\n return createScopedMetaValue(formNode, controlImpl, \"impl\", (scope) => {\n const cf = controlImpl.fields;\n const definitionOverrides = createScoped<Record<string, any>>(\n controlImpl,\n {},\n );\n const displayControl = createScoped<string | undefined>(\n controlImpl,\n undefined,\n );\n\n const displayOverrides = createScoped<Record<string, any>>(\n controlImpl,\n {},\n );\n const def = formNode.definition;\n const definition = createOverrideProxy(def, definitionOverrides);\n const of = definitionOverrides.fields as Record<\n KeysOfUnion<AnyControlDefinition>,\n Control<any>\n >;\n\n const df = displayOverrides.fields as Record<\n KeysOfUnion<TextDisplay | HtmlDisplay>,\n Control<any>\n >;\n\n createScopedEffect((c) => {\n const textDisplay =\n isDisplayControl(def) && isTextDisplay(def.displayData)\n ? def.displayData\n : undefined;\n evalExpr(\n c,\n textDisplay?.text,\n df.text,\n textDisplay && firstExpr(formNode, DynamicPropertyType.Display),\n coerceString,\n );\n }, displayOverrides);\n\n createScopedEffect((c) => {\n const htmlDisplay =\n isDisplayControl(def) && isHtmlDisplay(def.displayData)\n ? def.displayData\n : undefined;\n evalExpr(\n c,\n htmlDisplay?.html,\n df.html,\n htmlDisplay && firstExpr(formNode, DynamicPropertyType.Display),\n coerceString,\n );\n }, displayOverrides);\n\n updateComputedValue(of.displayData, () =>\n isDisplayControl(def)\n ? createOverrideProxy(def.displayData, displayOverrides)\n : undefined,\n );\n\n createScopedEffect((c) => {\n evalExpr(\n c,\n def.hidden,\n of.hidden,\n firstExpr(formNode, DynamicPropertyType.Visible),\n (r) => !r,\n );\n }, definitionOverrides);\n\n createScopedEffect((c) => {\n evalExpr(\n c,\n isControlReadonly(def),\n of.readonly,\n firstExpr(formNode, DynamicPropertyType.Readonly),\n (r) => !!r,\n );\n }, definitionOverrides);\n\n createScopedEffect((c) => {\n evalExpr(\n c,\n isControlDisabled(def),\n of.disabled,\n firstExpr(formNode, DynamicPropertyType.Disabled),\n (r) => !!r,\n );\n }, definitionOverrides);\n\n createScopedEffect((c) => {\n evalExpr(\n c,\n isDataControl(def) ? def.defaultValue : undefined,\n of.defaultValue,\n isDataControl(def)\n ? firstExpr(formNode, DynamicPropertyType.DefaultValue)\n : undefined,\n (r) => r,\n );\n }, definitionOverrides);\n\n createScopedEffect((c) => {\n evalExpr(\n c,\n isActionControl(def) ? def.actionData : undefined,\n of.actionData,\n isActionControl(def)\n ? firstExpr(formNode, DynamicPropertyType.ActionData)\n : undefined,\n (r) => r,\n );\n }, definitionOverrides);\n\n createScopedEffect((c) => {\n evalExpr(\n c,\n def.title,\n of.title,\n firstExpr(formNode, DynamicPropertyType.Label),\n coerceString,\n );\n }, definitionOverrides);\n\n const control = createScoped<ControlState>(controlImpl, {\n definition,\n dataNode: undefined,\n schemaInterface,\n disabled: false,\n readonly: false,\n clearHidden: false,\n hidden: false,\n variables: controlImpl.fields.variables.current.value ?? {},\n stateId,\n meta: newControl({}),\n });\n\n const {\n dataNode,\n hidden,\n readonly,\n style,\n layoutStyle,\n allowedOptions,\n disabled,\n variables,\n } = control.fields;\n\n createScopedEffect(\n (c) =>\n evalExpr(\n c,\n undefined,\n style,\n firstExpr(formNode, DynamicPropertyType.Style),\n coerceStyle,\n ),\n scope,\n );\n\n createScopedEffect(\n (c) =>\n evalExpr(\n c,\n undefined,\n layoutStyle,\n firstExpr(formNode, DynamicPropertyType.LayoutStyle),\n coerceStyle,\n ),\n scope,\n );\n\n createScopedEffect(\n (c) =>\n evalExpr(\n c,\n undefined,\n allowedOptions,\n firstExpr(formNode, DynamicPropertyType.AllowedOptions),\n (x) => x,\n ),\n scope,\n );\n\n updateComputedValue(dataNode, () => lookupDataNode(definition, parent));\n updateComputedValue(\n hidden,\n () =>\n !!cf.hidden.value ||\n definition.hidden ||\n (dataNode.value &&\n (!validDataNode(dataNode.value) ||\n hideDisplayOnly(dataNode.value, schemaInterface, definition))),\n );\n\n updateComputedValue(\n readonly,\n () => !!cf.readonly.value || isControlReadonly(definition),\n );\n updateComputedValue(\n disabled,\n () => !!cf.disabled.value || isControlDisabled(definition),\n );\n\n updateComputedValue(variables, () => {\n return controlImpl.fields.variables.value ?? {};\n });\n\n createSyncEffect(() => {\n const dn = dataNode.value;\n if (dn) {\n dn.control.disabled = disabled.value;\n }\n }, scope);\n\n setupValidation(\n controlImpl,\n definition,\n dataNode,\n schemaInterface,\n parent,\n formNode,\n runAsync,\n );\n\n createSyncEffect(() => {\n const dn = dataNode.value?.control;\n if (dn && isDataControl(definition)) {\n if (definition.hidden) {\n if (\n controlImpl.fields.clearHidden.value &&\n !definition.dontClearHidden\n ) {\n // console.log(\"Clearing hidden\");\n dn.value = undefined;\n }\n } else if (\n dn.value === undefined &&\n definition.defaultValue != null &&\n !definition.adornments?.some(\n (x) => x.type === ControlAdornmentType.Optional,\n ) &&\n definition.renderOptions?.type != DataRenderType.NullToggle\n ) {\n // console.log(\n // \"Setting to default\",\n // definition.defaultValue,\n // definition.field,\n // );\n // const [required, dcv] = isDataControl(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)\n // : undefined)\n // );\n\n dn.value = definition.defaultValue;\n }\n }\n }, scope);\n return createOverrideProxy(control.current.value, control);\n });\n },\n };\n}\n\nfunction firstExpr(\n formNode: FormNode,\n property: DynamicPropertyType,\n): EntityExpression | undefined {\n return formNode.definition.dynamic?.find(\n (x) => x.type === property && x.expr.type,\n )?.expr;\n}\n\nfunction coerceStyle(v: unknown): any {\n return typeof v === \"object\" ? v : undefined;\n}\n\nfunction coerceString(v: unknown): string {\n return typeof v === \"string\" ? v : (v?.toString() ?? \"\");\n}\n\nfunction createScopedMetaValue<A>(\n formNode: FormNode,\n c: Control<any>,\n key: string,\n init: (scope: CleanupScope) => A,\n): A {\n return ensureMetaValue(c, key, () => {\n const holder = createScoped<A | undefined>(c, undefined, {\n equals: (a, b) => a === b,\n });\n const effect = createScopedEffect((c) => (holder.value = init(c)), holder);\n effect.run = () => {\n console.log(\n \"ControlState being recreated:\",\n effect.subscriptions.map(\n (x) =>\n `${x[1]?.mask} ${jsonPathString(getControlPath(x[0], unsafeRestoreControl(formNode.definition)))}`,\n ),\n );\n };\n return holder;\n }).value!;\n}\n\nexport function createOverrideProxy<\n A extends object,\n B extends Record<string, any>,\n>(proxyFor: A, handlers: Control<B>): A {\n const overrides = getCurrentFields(handlers);\n const allOwn = Reflect.ownKeys(proxyFor);\n Reflect.ownKeys(overrides).forEach((k) => {\n if (!allOwn.includes(k)) allOwn.push(k);\n });\n return new Proxy(proxyFor, {\n get(target: A, p: string | symbol, receiver: any): any {\n if (Object.hasOwn(overrides, p)) {\n return overrides[p as keyof B]!.value;\n }\n return Reflect.get(target, p, receiver);\n },\n ownKeys(target: A): ArrayLike<string | symbol> {\n return allOwn;\n },\n has(target: A, p: string | symbol): boolean {\n return Reflect.has(proxyFor, p) || Reflect.has(overrides, p);\n },\n getOwnPropertyDescriptor(target, k) {\n if (Object.hasOwn(overrides, k))\n return {\n enumerable: true,\n configurable: true,\n };\n return Reflect.getOwnPropertyDescriptor(target, k);\n },\n });\n}\n\ntype KeysOfUnion<T> = T extends T ? keyof T : never;\n"],"names":["ControlDefinitionType","DynamicPropertyType","AdornmentPlacement","ControlAdornmentType","IconLibrary","DataRenderType","SyncTextType","GroupRenderType","DisplayDataType","ActionStyle","IconPlacement","visitControlDefinition","x","visitor","defaultValue","type","Action","action","Data","data","Display","display","Group","group","isGridRenderer","options","Grid","isWizardRenderer","Wizard","isDialogRenderer","Dialog","isInlineRenderer","Inline","isSelectChildRenderer","SelectChild","isTabsRenderer","Tabs","isFlexRenderer","Flex","isDisplayOnlyRenderer","DisplayOnly","isTextfieldRenderer","Textfield","isDateTimeRenderer","DateTime","isAutocompleteRenderer","Autocomplete","isAutoCompleteClasses","isDataGroupRenderer","isArrayRenderer","Array","isDataControl","c","isGroupControl","isActionControl","isDisplayControl","isTextDisplay","d","Text","isHtmlDisplay","Html","isCheckEntryClasses","Radio","CheckList","traverseParents","current","get","until","outArray","push","parent","reverse","getRootDataNode","dataNode","getJsonPath","elementIndex","schema","field","getSchemaPath","schemaNode","getSchemaFieldList","getChildNodes","map","fontAwesomeIcon","icon","library","FontAwesome","name","isControlReadonly","readonly","isControlDisabled","disabled","getGroupRendererOptions","def","groupOptions","renderOptions","undefined","isControlDisplayOnly","_getGroupRendererOpti","Boolean","displayOnly","getDisplayOnlyOptions","ExpressionType","FieldType","ValidationMessageType","findField","fields","find","isScalarField","sf","isCompoundField","Compound","missingField","Any","displayName","SchemaTags","getTagParam","tag","_field$tags","tags","startsWith","substring","length","makeParamTag","value","SchemaTree","createChildNode","SchemaNode","id","getSchema","schemaId","_this$getSchemaTree","getSchemaTree","rootNode","SchemaTreeImpl","_this$lookup","lookup","constructor","rootFields","children","createSchemaTree","tree","getUnresolvedFields","getResolvedParent","noRecurse","_this$parent","f","parentNode","schemaRef","treeChildren","getResolvedFields","_resolvedParent$getUn","resolvedParent","node","getChildField","_this$getResolvedFiel","getChildNode","resolveSchemaNode","fieldSegment","createSchemaNode","createSchemaLookup","schemaMap","additional","schemaForFieldRef","fieldRef","_fieldRef$split","schemaForFieldPath","split","traverseSchemaPath","fieldPath","acc","next","i","nextField","childNode","traverseData","root","n","getSchemaNodePath","paths","curNode","getSchemaNodePathString","join","isCompoundNode","relativePath","child","parentPath","childPath","relativeSegmentPath","upLevels","downPath","slice","repeat","buildSchema","Object","entries","stringField","makeScalarField","_extends","String","stringOptionsField","withScalarOptions","v","defaultScalarField","makeCompoundField","defaultCompoundField","intField","Int","doubleField","Double","dateField","Date","timeField","Time","dateTimeField","boolField","Bool","compoundField","other","collection","mergeField","mergeInto","existing","onlyForTypes","mergeTypes","s","extras","filter","includes","mergeFields","newFields","withType","isTypeField","addFieldOption","reduce","af","typeField","_typeField$options","some","resolveSchemas","out","resolveSchemaType","resolvedFields","forEach","keys","ValidatorType","DateComparison","SchemaDataTree","SchemaDataNode","control","getChild","getChildElement","getMetaFields","ensureMetaValue","newControl","SchemaDataTreeImpl","rootSchema","rootControl","objControl","meta","uniqueId","toString","elemControl","elemChild","elements","makeSchemaDataNode","createSchemaDataNode","schemaDataForFieldRef","schemaDataForFieldPath","_nextNode","nextNode","lookupField","validDataNode","context","updateComputedValue","types","typeNode","console","warn","hideDisplayOnly","schemaInterface","definition","_context$control","displayOptions","emptyText","isEmptyValue","DefaultSchemaInterface","boolStrings","parseDateTime","parse","parseToMillis","validationMessageText","messageType","actual","expected","NotEmpty","MinLength","MaxLength","NotBeforeDate","toDateString","NotAfterDate","getDataOptions","getNodeOptions","getOptions","getFilterOptions","array","isArray","searchText","_this$textValue$toLow","_this$textValue","textValue","toLowerCase","textValueForData","element","actualOptions","option","toLocaleDateString","toLocaleString","toLocaleTimeString","controlLength","_control$elements$len","_control$elements","valueLength","_ref","compareValue","v1","v2","localeCompare","compoundFieldSetup","makeControlSetup","compoundFieldEquality","a","b","makeEqualityFunc","elemEqual","allChecks","every","setup","equals","elems","fromEntries","defaultSchemaInterface","FormNode","visit","visitFn","res","getUnresolvedChildNodes","getResolvedChildren","_children","childRefId","getByRefId","childId","childDef","getChildId","resolved","_this$definition$chil","_this$definition$chil2","FormTree","parentId","getControlIds","_definition$children$","_definition$children","childEntries","flatMap","createControlMap","FormTreeImpl","forms","controlMap","getForm","formId","legacyFormNode","createFormTree","controls","Standard","hideTitle","createFormLookup","formMap","k","fieldPathForDefinition","fieldName","lookupDataNode","fieldNamePath","visitControlDataArray","cb","r","visitControlData","ctx","visitFormDataInContext","visitFormData","notSelf","result","l","elemResult","isNull","parentContext","visitFormDataNode","formNode","parentData","elemCount","visitChildren","childIndex","jsonPathString","jsonPath","customIndex","_customIndex","createScopedComputed","compute","addDependent","as","createScoped","dataEval","fvExpr","returnResult","scope","createSyncEffect","_otherField$control","otherField","dataMatchEval","matchExpr","fv","notEmptyEval","expr","_otherField$control2","empty","jsonataEval","variables","runAsync","path","pathString","rootData","parsedJsonata","jExpr","expression","fullExpr","jsonata","e","error","runJsonata","effect","signal","bindings","collectChanges","collectUsage","evalResult","evaluate","trackedValue","asyncEffect","createAsyncEffect","start","uuidEval","_","uuidv4","defaultEvaluators","DataMatch","Jsonata","UUID","jsonataValidator","validation","trackControlChange","ControlChange","Validate","setError","formContext","lengthValidator","lv","addSync","len","min","setValue","concat","from","max","dateValidator","dv","comparisonDate","fixedDate","nowDate","UTC","getFullYear","getMonth","getDate","daysFromCurrent","selDate","notAfter","comparison","NotAfter","defaultValidators","Length","createValidators","_def$validators","required","validators","_defaultValidators$x$","call","setupValidation","controlImpl","validationEnabled","hidden","validatorsScope","createCleanupScope","createEffect","cleanup","dn","syncValidations","validate","addCleanup","syncValidation","getControlStateId","stateKey","createFormState","evaluators","controlStates","evalExpression","getExistingControlState","stateId","getCurrentFields","_getMetaValue","getMetaValue","getControlState","evalExpr","init","nk","coerce","createScopedMetaValue","_controlImpl$fields$v","cf","definitionOverrides","displayOverrides","createOverrideProxy","of","df","createScopedEffect","textDisplay","displayData","text","firstExpr","coerceString","htmlDisplay","html","Visible","Readonly","Disabled","DefaultValue","actionData","ActionData","title","Label","clearHidden","style","layoutStyle","allowedOptions","Style","coerceStyle","LayoutStyle","AllowedOptions","_controlImpl$fields$v2","_dataNode$value","_definition$adornment","_definition$renderOpt","dontClearHidden","adornments","Optional","NullToggle","property","_formNode$definition$","dynamic","_v$toString","key","holder","run","log","subscriptions","_x$","mask","getControlPath","unsafeRestoreControl","proxyFor","handlers","overrides","allOwn","Reflect","ownKeys","Proxy","target","p","receiver","hasOwn","has","getOwnPropertyDescriptor","enumerable","configurable"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/controlDefinition.ts","../src/entityExpression.ts","../src/schemaField.ts","../src/schemaNode.ts","../src/schemaBuilder.ts","../src/schemaValidator.ts","../src/schemaDataNode.ts","../src/defaultSchemaInterface.ts","../src/formNode.ts","../src/util.ts","../src/evalExpression.ts","../src/validators.ts","../src/formState.ts"],"sourcesContent":["import { SchemaValidator } from \"./schemaValidator\";\nimport { SchemaField } from \"./schemaField\";\nimport { EntityExpression } from \"./entityExpression\";\nimport { SchemaDataNode } from \"./schemaDataNode\";\nimport { SchemaNode } from \"./schemaNode\";\n\n/**\n * Represents any control definition.\n */\nexport type AnyControlDefinition =\n | DataControlDefinition\n | GroupedControlsDefinition\n | ActionControlDefinition\n | DisplayControlDefinition;\n\n/**\n * Represents a control definition.\n */\nexport interface ControlDefinition {\n type: string;\n id?: string | null;\n childRefId?: string | null;\n title?: string | null;\n hidden?: boolean | null;\n styleClass?: string | null;\n textClass?: string | null;\n layoutClass?: string | null;\n labelClass?: string | null;\n labelTextClass?: string | null;\n placement?: 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 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 Optional = \"Optional\",\n}\n\nexport enum IconLibrary {\n FontAwesome = \"FontAwesome\",\n Material = \"Material\",\n CssClass = \"CssClass\",\n}\n\nexport interface IconReference {\n library: string;\n name: string;\n}\n\nexport interface IconAdornment extends ControlAdornment {\n type: ControlAdornmentType.Icon;\n iconClass: string;\n icon?: IconReference;\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 OptionalAdornment extends ControlAdornment {\n type: ControlAdornmentType.Optional;\n placement?: AdornmentPlacement | null;\n allowNull?: boolean;\n editSelectable?: boolean;\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 Autocomplete = \"Autocomplete\",\n Jsonata = \"Jsonata\",\n Array = \"Array\",\n ArrayElement = \"ArrayElement\",\n ElementSelected = \"ElementSelected\",\n}\n\nexport interface TextfieldRenderOptions extends RenderOptions {\n type: DataRenderType.Textfield;\n placeholder?: string | null;\n multiline?: boolean | null;\n}\n\nexport interface AutocompleteRenderOptions\n extends RenderOptions,\n AutocompleteClasses {\n type: DataRenderType.Autocomplete;\n}\n\nexport interface AutocompleteClasses {\n listContainerClass?: string | null;\n listEntryClass?: string | null;\n chipContainerClass?: string | null;\n chipCloseButtonClass?: string | null;\n placeholder?: string | null;\n}\n\nexport interface CheckEntryClasses {\n entryWrapperClass?: string | null;\n selectedClass?: string | null;\n notSelectedClass?: string | null;\n}\nexport interface RadioButtonRenderOptions\n extends RenderOptions,\n CheckEntryClasses {\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 forceStandard?: 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 editText?: string | null;\n editActionId?: string | null;\n noAdd?: boolean | null;\n noRemove?: boolean | null;\n noReorder?: boolean | null;\n editExternal?: boolean | null;\n}\n\nexport interface ArrayElementRenderOptions extends RenderOptions {\n type: DataRenderType.ArrayElement;\n showInline?: boolean | null;\n}\n\nexport interface ElementSelectedRenderOptions extends RenderOptions {\n type: DataRenderType.ElementSelected;\n elementExpression: EntityExpression;\n}\n\nexport type ArrayActionOptions = Pick<\n ArrayRenderOptions,\n | \"addText\"\n | \"addActionId\"\n | \"removeText\"\n | \"removeActionId\"\n | \"noAdd\"\n | \"noRemove\"\n | \"noReorder\"\n | \"editExternal\"\n | \"editActionId\"\n | \"editText\"\n> & { readonly?: boolean; disabled?: boolean; designMode?: boolean };\n\nexport interface CheckListRenderOptions\n extends RenderOptions,\n CheckEntryClasses {\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 childStyleClass?: string | null;\n childLayoutClass?: string | null;\n childLabelClass?: string | null;\n displayOnly?: boolean | null;\n}\n\nexport interface ActionOptions {\n actionId: string;\n actionText?: string | null;\n actionData?: string | null;\n icon?: IconReference | null;\n actionStyle?: ActionStyle | null;\n iconPlacement?: IconPlacement | null;\n}\nexport enum GroupRenderType {\n Standard = \"Standard\",\n Grid = \"Grid\",\n Flex = \"Flex\",\n Tabs = \"Tabs\",\n GroupElement = \"GroupElement\",\n SelectChild = \"SelectChild\",\n Inline = \"Inline\",\n Wizard = \"Wizard\",\n Dialog = \"Dialog\",\n Contents = \"Contents\",\n}\n\nexport interface DialogRenderOptions extends GroupRenderOptions {\n type: GroupRenderType.Dialog;\n title?: string | null;\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 rowClass?: string | null;\n}\n\nexport interface TabsRenderOptions extends GroupRenderOptions {\n type: GroupRenderType.Tabs;\n contentClass?: string;\n}\n\nexport interface WizardRenderOptions extends GroupRenderOptions {\n type: GroupRenderType.Wizard;\n}\n\nexport interface SelectChildRenderer extends GroupRenderOptions {\n type: GroupRenderType.SelectChild;\n childIndexExpression?: EntityExpression | 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 icon?: IconReference | null;\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 icon?: IconReference | null;\n actionStyle?: ActionStyle | null;\n iconPlacement?: IconPlacement | null;\n}\n\nexport enum ActionStyle {\n Button = \"Button\",\n Secondary = \"Secondary\",\n Link = \"Link\",\n Group = \"Group\",\n}\n\nexport enum IconPlacement {\n BeforeText = \"BeforeText\",\n AfterText = \"AfterText\",\n ReplaceText = \"ReplaceText\",\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 isWizardRenderer(\n options: GroupRenderOptions,\n): options is WizardRenderOptions {\n return options.type === GroupRenderType.Wizard;\n}\n\nexport function isDialogRenderer(\n options: GroupRenderOptions,\n): options is DialogRenderOptions {\n return options.type === GroupRenderType.Dialog;\n}\n\nexport function isInlineRenderer(\n options: GroupRenderOptions,\n): options is GridRenderer {\n return options.type === GroupRenderType.Inline;\n}\n\nexport function isSelectChildRenderer(\n options: GroupRenderOptions,\n): options is SelectChildRenderer {\n return options.type === GroupRenderType.SelectChild;\n}\n\nexport function isTabsRenderer(\n options: GroupRenderOptions,\n): options is TabsRenderOptions {\n return options.type === GroupRenderType.Tabs;\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 isDateTimeRenderer(\n options: RenderOptions,\n): options is DateTimeRenderOptions {\n return options.type === DataRenderType.DateTime;\n}\n\nexport function isAutocompleteRenderer(\n options: RenderOptions,\n): options is AutocompleteRenderOptions {\n return options.type === DataRenderType.Autocomplete;\n}\n\nexport function isAutoCompleteClasses(\n options?: RenderOptions | null,\n): options is AutocompleteClasses & RenderOptions {\n switch (options?.type) {\n case DataRenderType.Autocomplete:\n return true;\n default:\n return false;\n }\n}\n\nexport function isDataGroupRenderer(\n options?: RenderOptions | null,\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 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\nexport function isActionControl(\n c: ControlDefinition,\n): c is ActionControlDefinition {\n return c.type === ControlDefinitionType.Action;\n}\n\nexport function isDisplayControl(\n c: ControlDefinition,\n): c is DisplayControlDefinition {\n return c.type === ControlDefinitionType.Display;\n}\n\nexport function isTextDisplay(d: DisplayData): d is TextDisplay {\n return d.type === DisplayDataType.Text;\n}\n\nexport function isHtmlDisplay(d: DisplayData): d is HtmlDisplay {\n return d.type === DisplayDataType.Html;\n}\n\nexport function isCheckEntryClasses(\n options?: RenderOptions | null,\n): options is CheckEntryClasses & RenderOptions {\n switch (options?.type) {\n case DataRenderType.Radio:\n case DataRenderType.CheckList:\n return true;\n default:\n return false;\n }\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 fontAwesomeIcon(icon: string) {\n return { library: IconLibrary.FontAwesome, name: icon };\n}\n\n/**\n * Checks if a control definition is readonly.\n * @param c - The control definition to check.\n * @returns True if the control definition is readonly, false otherwise.\n */\nexport function isControlReadonly(c: ControlDefinition): boolean {\n return isDataControl(c) && !!c.readonly;\n}\n\n/**\n * Checks if a control definition is disabled.\n * @param c - The control definition to check.\n * @returns True if the control definition is disabled, false otherwise.\n */\nexport function isControlDisabled(c: ControlDefinition): boolean {\n return isDataControl(c) && !!c.disabled;\n}\n\n/**\n * Returns the group renderer options for a control definition.\n * @param {ControlDefinition} def - The control definition to get the group renderer options for.\n * @returns {GroupRenderOptions | undefined} - The group renderer options, or undefined if not applicable.\n */\nexport function getGroupRendererOptions(\n def: ControlDefinition,\n): GroupRenderOptions | undefined {\n return isGroupControl(def)\n ? def.groupOptions\n : isDataControl(def) && isDataGroupRenderer(def.renderOptions)\n ? def.renderOptions.groupOptions\n : undefined;\n}\n\n/**\n * Checks if a control definition is display-only.\n * @param {ControlDefinition} def - The control definition to check.\n * @returns {boolean} - True if the control definition is display-only, false otherwise.\n */\nexport function isControlDisplayOnly(def: ControlDefinition): boolean {\n return Boolean(getGroupRendererOptions(def)?.displayOnly);\n}\n\n/**\n * Returns the display-only render options for a control definition.\n * @param d - The control definition to get the display-only render options for.\n * @returns The display-only render options, or undefined if not applicable.\n */\nexport function getDisplayOnlyOptions(\n d: ControlDefinition,\n): DisplayOnlyRenderOptions | undefined {\n return isDataControl(d) &&\n d.renderOptions &&\n isDisplayOnlyRenderer(d.renderOptions)\n ? d.renderOptions\n : undefined;\n}\n","export 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.NotEmpty;\n field: string;\n empty?: boolean | null;\n}\n\nexport interface UserMatchExpression extends EntityExpression {\n type: ExpressionType.UserMatch;\n userMatch: string;\n}\n","import { SchemaValidator } from \"./schemaValidator\";\n\nexport type EqualityFunc = (a: any, b: any) => boolean;\n\n/**\n * Represents a schema field with various properties.\n */\nexport interface SchemaField {\n /** The type of the field. */\n type: string;\n /** The name of the field. */\n field: string;\n /** The display name of the field, optional. */\n displayName?: string | null;\n /** Tags associated with the field, optional. */\n tags?: string[] | null;\n /** Indicates if the field is a system field, optional. */\n system?: boolean | null;\n /** Indicates if the field is a meta field, optional. */\n meta?: boolean | null;\n /** Indicates if the field is a collection, optional. */\n collection?: boolean | null;\n /** Specifies the types for which the field is applicable, optional. */\n onlyForTypes?: string[] | null;\n /** Indicates if the field is required, optional. */\n required?: boolean | null;\n /** Indicates if the field is not nullable, optional. */\n notNullable?: boolean | null;\n /** The default value of the field, optional. */\n defaultValue?: any;\n /** Indicates if the field is a type field, optional. */\n isTypeField?: boolean | null;\n /** Indicates if the field is searchable, optional. */\n searchable?: boolean | null;\n /** Options for the field, optional. */\n options?: FieldOption[] | null;\n /** Validators for the field, optional. */\n validators?: SchemaValidator[] | null;\n}\n\n/**\n * Represents a map of schema fields.\n * The key is a string representing the schema name.\n * The value is an array of SchemaField objects.\n */\nexport type SchemaMap = Record<string, SchemaField[]>;\n\n/**\n * Enum representing the various field types.\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\n/**\n * Represents a field that references an entity.\n */\nexport interface EntityRefField extends SchemaField {\n /** The type of the field, which is EntityRef. */\n type: FieldType.EntityRef;\n /** The type of the referenced entity. */\n entityRefType: string;\n /** The parent field of the entity reference. */\n parentField: string;\n}\n\n/**\n * Represents an option for a field.\n */\nexport interface FieldOption {\n /** The name of the option. */\n name: string;\n /** The value of the option. */\n value: any;\n /** The description of the option, optional. */\n description?: string | null;\n /** The group of the option, optional. */\n group?: string | null;\n /** Indicates if the option is disabled, optional. */\n disabled?: boolean | null;\n}\n\n/**\n * Represents a compound field that contains child fields.\n */\nexport interface CompoundField extends SchemaField {\n /** The type of the field, which is Compound. */\n type: FieldType.Compound;\n /** The child fields of the compound field. */\n children: SchemaField[];\n /** Indicates if the children are tree-structured, optional. */\n treeChildren?: boolean;\n /** The schema reference for the compound field, optional. */\n schemaRef?: string;\n}\n\n/**\n * Enum representing the various validation message types.\n */\nexport enum ValidationMessageType {\n NotEmpty = \"NotEmpty\",\n MinLength = \"MinLength\",\n MaxLength = \"MaxLength\",\n NotAfterDate = \"NotAfterDate\",\n NotBeforeDate = \"NotBeforeDate\",\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 missingField(field: string): SchemaField {\n return { field: \"__missing\", type: FieldType.Any, displayName: field };\n}\n\nexport enum SchemaTags {\n NoControl = \"_NoControl\",\n HtmlEditor = \"_HtmlEditor\",\n ControlGroup = \"_ControlGroup:\",\n ControlRef = \"_ControlRef:\",\n IdField = \"_IdField:\",\n}\n\nexport function getTagParam(\n field: SchemaField,\n tag: string,\n): string | undefined {\n return field.tags?.find((x) => x.startsWith(tag))?.substring(tag.length);\n}\n\nexport function makeParamTag(tag: string, value: string): string {\n return `${tag}${value}`;\n}\n","import {\n CompoundField,\n FieldType,\n isCompoundField,\n missingField,\n SchemaField,\n} from \"./schemaField\";\n\nexport interface SchemaTreeLookup {\n getSchema(schemaId: string): SchemaNode | undefined;\n\n getSchemaTree(schemaId: string, additional?: SchemaField[]): SchemaTree | undefined;\n}\n\nexport abstract class SchemaTree {\n abstract rootNode: SchemaNode;\n\n abstract getSchemaTree(schemaId: string): SchemaTree | undefined;\n\n createChildNode(parent: SchemaNode, field: SchemaField): SchemaNode {\n return new SchemaNode(parent.id + \"/\" + field.field, field, this, parent);\n }\n\n getSchema(schemaId: string): SchemaNode | undefined {\n return this.getSchemaTree(schemaId)?.rootNode;\n }\n}\n\nclass SchemaTreeImpl extends SchemaTree {\n rootNode: SchemaNode;\n\n getSchemaTree(schemaId: string): SchemaTree | undefined {\n return this.lookup?.getSchemaTree(schemaId);\n }\n\n constructor(\n rootFields: SchemaField[],\n private lookup?: SchemaTreeLookup,\n ) {\n super();\n this.rootNode = new SchemaNode(\n \"\",\n {\n type: FieldType.Compound,\n field: \"\",\n children: rootFields,\n } as CompoundField,\n this,\n );\n }\n}\n\nexport function createSchemaTree(\n rootFields: SchemaField[],\n lookup?: SchemaTreeLookup,\n): SchemaTree {\n return new SchemaTreeImpl(rootFields, lookup);\n}\n\nexport class SchemaNode {\n public constructor(\n public id: string,\n public field: SchemaField,\n public tree: SchemaTree,\n public parent?: SchemaNode,\n ) {}\n\n getSchema(schemaId: string): SchemaNode | undefined {\n return this.tree.getSchema(schemaId);\n }\n\n getUnresolvedFields(): SchemaField[] {\n return isCompoundField(this.field) ? this.field.children : [];\n }\n\n getResolvedParent(noRecurse?: boolean): SchemaNode | undefined {\n const f = this.field;\n if (!isCompoundField(f)) return undefined;\n const parentNode = f.schemaRef\n ? this.tree.getSchema(f.schemaRef)\n : !noRecurse && f.treeChildren\n ? this.parent?.getResolvedParent()\n : undefined;\n return parentNode ?? this;\n }\n\n getResolvedFields(): SchemaField[] {\n const resolvedParent = this.getResolvedParent();\n return resolvedParent?.getUnresolvedFields() ?? [];\n }\n\n getChildNodes(): SchemaNode[] {\n const node = this;\n return node.getResolvedFields().map((x) => node.createChildNode(x));\n }\n\n getChildField(field: string): SchemaField {\n return (\n this.getResolvedFields().find((x) => x.field === field) ??\n missingField(field)\n );\n }\n\n createChildNode(field: SchemaField): SchemaNode {\n return this.tree.createChildNode(this, field);\n }\n\n getChildNode(field: string): SchemaNode {\n return this.createChildNode(this.getChildField(field));\n }\n}\n\nexport function resolveSchemaNode(\n node: SchemaNode,\n fieldSegment: string,\n): SchemaNode | undefined {\n if (fieldSegment == \".\") return node;\n if (fieldSegment == \"..\") return node.parent;\n return node.getChildNode(fieldSegment);\n}\n\nexport function createSchemaNode(\n field: SchemaField,\n lookup: SchemaTree,\n parent: SchemaNode | undefined,\n): SchemaNode {\n return new SchemaNode(\n parent ? parent.id + \"/\" + field.field : field.field,\n field,\n lookup,\n parent,\n );\n}\n\nexport function createSchemaLookup<A extends Record<string, SchemaField[]>>(\n schemaMap: A,\n): {\n getSchema(schemaId: keyof A): SchemaNode;\n getSchemaTree(schemaId: keyof A, additional?: SchemaField[]): SchemaTree;\n} {\n const lookup = {\n getSchemaTree,\n getSchema,\n };\n return lookup;\n\n function getSchema(schemaId: keyof A): SchemaNode {\n return getSchemaTree(schemaId)!.rootNode;\n }\n\n function getSchemaTree(\n schemaId: keyof A,\n additional?: SchemaField[],\n ): SchemaTree {\n const fields = schemaMap[schemaId];\n if (fields) {\n return new SchemaTreeImpl(\n additional ? [...fields, ...additional] : fields,\n lookup,\n );\n }\n return undefined!;\n }\n}\n\nexport function schemaForFieldRef(\n fieldRef: string | undefined,\n schema: SchemaNode,\n): SchemaNode {\n return schemaForFieldPath(fieldRef?.split(\"/\") ?? [], schema);\n}\n\nexport function traverseSchemaPath<A>(\n fieldPath: string[],\n schema: SchemaNode,\n acc: A,\n next: (acc: A, node: SchemaNode) => A,\n): A {\n let i = 0;\n while (i < fieldPath.length) {\n const nextField = fieldPath[i];\n let childNode = resolveSchemaNode(schema, nextField);\n if (!childNode) {\n childNode = createSchemaNode(\n missingField(nextField),\n schema.tree,\n schema,\n );\n }\n acc = next(acc, childNode);\n schema = childNode;\n i++;\n }\n return acc;\n}\n\nexport function traverseData(\n fieldPath: string[],\n root: SchemaNode,\n data: { [k: string]: any },\n): unknown {\n return traverseSchemaPath(\n fieldPath,\n root,\n data,\n (acc, n) => acc?.[n.field.field] as any,\n );\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 = resolveSchemaNode(schema, nextField);\n if (!childNode) {\n childNode = createSchemaNode(\n missingField(nextField),\n schema.tree,\n schema,\n );\n }\n schema = childNode;\n i++;\n }\n return schema;\n}\n\nexport function getSchemaNodePath(node: SchemaNode) {\n const paths: string[] = [];\n let curNode: SchemaNode | undefined = node;\n while (curNode) {\n paths.push(curNode.field.field);\n curNode = curNode.parent;\n }\n return paths.reverse();\n}\n\nexport function getSchemaNodePathString(node: SchemaNode) {\n return getSchemaNodePath(node).join(\"/\");\n}\n\nexport function isCompoundNode(node: SchemaNode) {\n return isCompoundField(node.field);\n}\n\n/**\n * Returns the relative path from a parent node to a child node.\n * @param parent\n * @param child\n */\nexport function relativePath(parent: SchemaNode, child: SchemaNode): string {\n // return the path from child to parent\n if (parent.id === child.id) return \".\";\n\n const parentPath = getSchemaNodePath(parent);\n const childPath = getSchemaNodePath(child);\n return relativeSegmentPath(parentPath, childPath);\n}\n\n/**\n * Returns the relative path from a parent node to a child node.\n * @param parentPath\n * @param childPath\n */\nexport function relativeSegmentPath(\n parentPath: string[],\n childPath: string[],\n): string {\n let i = 0;\n while (\n i < parentPath.length &&\n i < childPath.length &&\n parentPath[i] === childPath[i]\n ) {\n i++;\n }\n\n const upLevels = parentPath.length - i;\n const downPath = childPath.slice(i).join(\"/\");\n\n return \"../\".repeat(upLevels) + downPath;\n}\n","import {\n CompoundField,\n FieldOption,\n FieldType,\n isCompoundField,\n SchemaField,\n SchemaMap,\n} from \"./schemaField\";\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","export enum ValidatorType {\n Jsonata = \"Jsonata\",\n Date = \"Date\",\n Length = \"Length\",\n}\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","import {\n Control,\n ensureMetaValue,\n newControl,\n updateComputedValue,\n} from \"@astroapps/controls\";\nimport { missingField } from \"./schemaField\";\nimport { createSchemaNode, resolveSchemaNode, SchemaNode } from \"./schemaNode\";\nimport { SchemaInterface } from \"./schemaInterface\";\nimport { ControlDefinition, getDisplayOnlyOptions } from \"./controlDefinition\";\n\nexport abstract class SchemaDataTree {\n abstract rootNode: SchemaDataNode;\n\n abstract getChild(parent: SchemaDataNode, child: SchemaNode): SchemaDataNode;\n\n abstract getChildElement(\n parent: SchemaDataNode,\n elementIndex: number,\n ): SchemaDataNode;\n}\n\nexport class SchemaDataNode {\n constructor(\n public id: string,\n public schema: SchemaNode,\n public elementIndex: number | undefined,\n public control: Control<any>,\n public tree: SchemaDataTree,\n public parent?: SchemaDataNode,\n ) {}\n\n getChild(childNode: SchemaNode): SchemaDataNode {\n return this.tree.getChild(this, childNode);\n }\n\n getChildElement(elementIndex: number): SchemaDataNode {\n return this.tree.getChildElement(this, elementIndex);\n }\n}\n\nexport function getMetaFields<\n T extends Record<string, any> = Record<string, unknown>,\n>(control: Control<any>): Control<T> {\n return ensureMetaValue(\n control,\n \"metaFields\",\n () => newControl({}) as Control<T>,\n );\n}\nexport class SchemaDataTreeImpl extends SchemaDataTree {\n rootNode: SchemaDataNode;\n\n constructor(rootSchema: SchemaNode, rootControl: Control<any>) {\n super();\n this.rootNode = new SchemaDataNode(\n \"\",\n rootSchema,\n undefined,\n rootControl,\n this,\n );\n }\n\n getChild(parent: SchemaDataNode, childNode: SchemaNode): SchemaDataNode {\n let objControl = parent.control as Control<Record<string, unknown>>;\n if (childNode.field.meta) {\n objControl = getMetaFields(objControl);\n }\n const child = objControl.fields[childNode.field.field];\n return new SchemaDataNode(\n child.uniqueId.toString(),\n childNode,\n undefined,\n child,\n this,\n parent,\n );\n }\n\n getChildElement(\n parent: SchemaDataNode,\n elementIndex: number,\n ): SchemaDataNode {\n const elemControl = parent.control as Control<unknown[]>;\n const elemChild = elemControl.elements[elementIndex];\n return new SchemaDataNode(\n elemChild.uniqueId.toString(),\n parent.schema,\n elementIndex,\n elemChild,\n this,\n parent,\n );\n }\n}\n\n/**\n * @deprecated Use createSchemaDataNode instead.\n */\nexport const makeSchemaDataNode = createSchemaDataNode;\n\nexport function createSchemaDataNode(\n schema: SchemaNode,\n control: Control<unknown>,\n): SchemaDataNode {\n return new SchemaDataTreeImpl(schema, control).rootNode;\n}\n\nexport function schemaDataForFieldRef(\n fieldRef: string | undefined,\n schema: SchemaDataNode,\n): SchemaDataNode {\n return schemaDataForFieldPath(fieldRef?.split(\"/\") ?? [], schema);\n}\n\nexport function schemaDataForFieldPath(\n fieldPath: string[],\n dataNode: SchemaDataNode,\n): SchemaDataNode {\n let i = 0;\n while (i < fieldPath.length) {\n const nextField = fieldPath[i];\n let nextNode =\n nextField === \"..\"\n ? dataNode.parent\n : nextField === \".\"\n ? dataNode\n : lookupField(nextField);\n nextNode ??= createSchemaDataNode(\n createSchemaNode(\n missingField(nextField),\n dataNode.schema.tree,\n dataNode.schema,\n ),\n newControl(undefined),\n );\n dataNode = nextNode;\n i++;\n }\n return dataNode;\n\n function lookupField(field: string): SchemaDataNode | undefined {\n const childNode = resolveSchemaNode(dataNode.schema, field);\n if (childNode) {\n return dataNode.getChild(childNode);\n }\n return undefined;\n }\n}\n\nexport function validDataNode(context: SchemaDataNode): boolean {\n const parent = context.parent;\n if (!parent) return true;\n if (parent.schema.field.collection && parent.elementIndex == null)\n return validDataNode(parent);\n return ensureMetaValue(context.control, \"validForSchema\", () => {\n const c = newControl(true);\n updateComputedValue(c, () => {\n if (!validDataNode(parent)) return false;\n const types = context.schema.field.onlyForTypes;\n if (types == null || types.length === 0) return true;\n const typeNode = parent.schema\n .getChildNodes()\n .find((x) => x.field.isTypeField);\n if (typeNode == null) {\n console.warn(\"No type field found for\", parent.schema);\n return false;\n }\n const typeField = parent.getChild(typeNode).control as Control<string>;\n return typeField && types.includes(typeField.value);\n });\n return c;\n }).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","import {\n EqualityFunc,\n FieldOption,\n FieldType,\n SchemaField,\n ValidationMessageType,\n} from \"./schemaField\";\nimport { SchemaInterface } from \"./schemaInterface\";\nimport { SchemaDataNode } from \"./schemaDataNode\";\nimport { SchemaNode } from \"./schemaNode\";\nimport { Control, ControlSetup } from \"@astroapps/controls\";\n\nexport class DefaultSchemaInterface implements SchemaInterface {\n constructor(\n protected boolStrings: [string, string] = [\"No\", \"Yes\"],\n protected parseDateTime: (s: string) => number = (s) => Date.parse(s),\n ) {}\n\n parseToMillis(field: SchemaField, v: string): number {\n return this.parseDateTime(v);\n }\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 getDataOptions(node: SchemaDataNode): FieldOption[] | null | undefined {\n return this.getNodeOptions(node.schema);\n }\n\n getNodeOptions(node: SchemaNode): FieldOption[] | null | undefined {\n return this.getOptions(node.field);\n }\n\n getOptions({ options }: SchemaField): FieldOption[] | null | undefined {\n return options && options.length > 0 ? options : null;\n }\n\n getFilterOptions(\n array: SchemaDataNode,\n field: SchemaNode,\n ): FieldOption[] | undefined | null {\n return this.getNodeOptions(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\n searchText(field: SchemaField, value: any): string {\n return this.textValue(field, value)?.toLowerCase() ?? \"\";\n }\n\n textValueForData(dataNode: SchemaDataNode): string | undefined {\n const options = this.getDataOptions(dataNode);\n return this.textValue(\n dataNode.schema.field,\n dataNode.control.value,\n dataNode.elementIndex != null,\n options,\n );\n }\n textValue(\n field: SchemaField,\n value: any,\n element?: boolean | undefined,\n options?: FieldOption[] | null,\n ): string | undefined {\n const actualOptions = options ?? this.getOptions(field);\n const option = actualOptions?.find((x) => x.value === value);\n if (option) return option.name;\n switch (field.type) {\n case FieldType.Date:\n return value ? new Date(value).toLocaleDateString() : undefined;\n case FieldType.DateTime:\n return value\n ? new Date(this.parseToMillis(field, value)).toLocaleString()\n : 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\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\n valueLength(field: SchemaField, value: any): number {\n return (value && value?.length) ?? 0;\n }\n\n compareValue(field: SchemaField, v1: unknown, v2: unknown): number {\n if (v1 == null) return v2 == null ? 0 : 1;\n if (v2 == null) return -1;\n switch (field.type) {\n case FieldType.Date:\n case FieldType.DateTime:\n case FieldType.Time:\n case FieldType.String:\n return (v1 as string).localeCompare(v2 as string);\n case FieldType.Bool:\n return (v1 as boolean) ? ((v2 as boolean) ? 0 : 1) : -1;\n case FieldType.Int:\n case FieldType.Double:\n return (v1 as number) - (v2 as number);\n default:\n return 0;\n }\n }\n\n compoundFieldSetup(f: SchemaNode): [string, ControlSetup<any>][] {\n return f.getChildNodes().map((x) => {\n const { field } = x.field;\n return [field, this.makeControlSetup(x)];\n });\n }\n\n compoundFieldEquality(f: SchemaNode): [string, EqualityFunc][] {\n return f.getChildNodes().map((x) => {\n const { field } = x.field;\n return [field, (a, b) => this.makeEqualityFunc(x)(a[field], b[field])];\n });\n }\n\n makeEqualityFunc(field: SchemaNode, element?: boolean): EqualityFunc {\n if (field.field.collection && !element) {\n const elemEqual = this.makeEqualityFunc(field, true);\n return (a, b) => {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!elemEqual(a[i], b[i])) return false;\n }\n return true;\n };\n }\n switch (field.field.type) {\n case FieldType.Compound:\n const allChecks = this.compoundFieldEquality(field);\n return (a, b) =>\n a === b ||\n (a != null && b != null && allChecks.every((x) => x[1](a, b)));\n default:\n return (a, b) => a === b;\n }\n }\n makeControlSetup(field: SchemaNode, element?: boolean): ControlSetup<any> {\n let setup: ControlSetup<any> = {\n equals: this.makeEqualityFunc(field, element),\n };\n if (field.field.collection && !element) {\n setup.elems = this.makeControlSetup(field, true);\n return setup;\n }\n switch (field.field.type) {\n case FieldType.Compound:\n setup.fields = Object.fromEntries(this.compoundFieldSetup(field));\n }\n return setup;\n }\n}\n\nexport const defaultSchemaInterface: SchemaInterface =\n new DefaultSchemaInterface();\n","import {\n ControlDefinition,\n ControlDefinitionType,\n DataControlDefinition,\n GroupedControlsDefinition,\n GroupRenderType,\n isDataControl,\n isGroupControl,\n} from \"./controlDefinition\";\nimport { schemaDataForFieldPath, SchemaDataNode } from \"./schemaDataNode\";\n\nexport type ControlMap = { [k: string]: ControlDefinition };\n\nexport class FormNode {\n constructor(\n public id: string,\n public definition: ControlDefinition,\n public tree: FormTree,\n public parent?: FormNode,\n ) {}\n\n visit<A>(visitFn: (n: FormNode) => A | undefined): A | undefined {\n const res = visitFn(this);\n if (res !== undefined) return res;\n const children = this.getUnresolvedChildNodes();\n for (const child of children) {\n const res = child.visit(visitFn);\n if (res !== undefined) return res;\n }\n return undefined;\n }\n\n getResolvedChildren(): ControlDefinition[] {\n const childRefId = this.definition.childRefId;\n const parent = childRefId ? this.tree.getByRefId(childRefId) : undefined;\n return (parent ?? this.definition)?.children ?? [];\n }\n\n createChildNode(childId: string, childDef: ControlDefinition) {\n return new FormNode(\n this.tree.getChildId(this.id, childId, childDef),\n childDef,\n this.tree,\n this,\n );\n }\n\n getChildNodes(): FormNode[] {\n const resolved = this.getResolvedChildren();\n return resolved.map((x, i) => this.createChildNode(i.toString(), x));\n }\n\n getUnresolvedChildNodes(): FormNode[] {\n return (\n this.definition.children?.map((x, i) =>\n this.createChildNode(i.toString(), x),\n ) ?? []\n );\n }\n}\n\nexport interface FormTreeLookup {\n getForm(formId: string): FormTree | undefined;\n}\n\nexport abstract class FormTree implements FormTreeLookup {\n abstract rootNode: FormNode;\n\n abstract getByRefId(id: string): ControlDefinition | undefined;\n\n abstract getForm(formId: string): FormTree | undefined;\n\n getChildId(\n parentId: string,\n childId: string,\n control: ControlDefinition,\n ): string {\n return parentId + \"/\" + childId;\n }\n}\n\nfunction getControlIds(\n definition: ControlDefinition,\n): [string, ControlDefinition][] {\n const childEntries = definition.children?.flatMap(getControlIds) ?? [];\n return !definition.id\n ? childEntries\n : [[definition.id, definition], ...childEntries];\n}\n\nexport function createControlMap(control: ControlDefinition): ControlMap {\n return Object.fromEntries(getControlIds(control));\n}\n\nclass FormTreeImpl extends FormTree {\n controlMap: ControlMap;\n rootNode: FormNode;\n\n constructor(\n private forms: FormTreeLookup,\n root: ControlDefinition,\n ) {\n super();\n this.rootNode = new FormNode(\"\", root, this);\n this.controlMap = createControlMap(root);\n }\n\n getByRefId(id: string): ControlDefinition | undefined {\n return this.controlMap[id];\n }\n\n getForm(formId: string): FormTree | undefined {\n return this.forms.getForm(formId);\n }\n}\n\nexport function legacyFormNode(definition: ControlDefinition) {\n return createFormTree([definition]).rootNode.getChildNodes()[0];\n}\n\nexport function createFormTree(\n controls: ControlDefinition[],\n getForm: FormTreeLookup = { getForm: () => undefined },\n): FormTree {\n return new FormTreeImpl(getForm, {\n type: ControlDefinitionType.Group,\n children: controls,\n groupOptions: {\n type: GroupRenderType.Standard,\n hideTitle: true,\n },\n } as GroupedControlsDefinition);\n}\n\nexport function createFormLookup<A extends Record<string, ControlDefinition[]>>(\n formMap: A,\n): {\n getForm(formId: keyof A): FormTree;\n} {\n const lookup = {\n getForm,\n };\n const forms = Object.fromEntries(\n Object.entries(formMap).map(([k, v]) => [k, createFormTree(v, lookup)]),\n );\n return lookup;\n\n function getForm(formId: keyof A): FormTree {\n return forms[formId as string];\n }\n}\n\nexport function fieldPathForDefinition(\n c: ControlDefinition,\n): string[] | undefined {\n const fieldName = isGroupControl(c)\n ? c.compoundField\n : isDataControl(c)\n ? c.field\n : undefined;\n return fieldName?.split(\"/\");\n}\n\nexport function lookupDataNode(\n c: ControlDefinition,\n parentNode: SchemaDataNode,\n) {\n const fieldNamePath = fieldPathForDefinition(c);\n return fieldNamePath\n ? schemaDataForFieldPath(fieldNamePath, parentNode)\n : undefined;\n}\n\n/**\n * @deprecated use visitFormNodeData instead\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\n/**\n * @deprecated use visitFormDataInContext instead\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 return visitFormDataInContext(ctx, legacyFormNode(definition), (n, d) =>\n cb(d, n),\n );\n}\n\nexport type ControlDataVisitor<A> = (\n dataNode: SchemaDataNode,\n definition: DataControlDefinition,\n) => A | undefined;\n\nexport function visitFormData<A>(\n node: FormNode,\n dataNode: SchemaDataNode,\n cb: ControlDataVisitor<A>,\n notSelf?: boolean,\n): A | undefined {\n const def = node.definition;\n const result = !notSelf && isDataControl(def) ? cb(dataNode, def) : undefined;\n if (result !== undefined) return result;\n if (dataNode.elementIndex == null && dataNode.schema.field.collection) {\n const l = dataNode.control.elements.length;\n for (let i = 0; i < l; i++) {\n const elemChild = dataNode.getChildElement(i);\n const elemResult = visitFormData(node, elemChild, cb);\n if (elemResult !== undefined) return elemResult;\n }\n return undefined;\n }\n if (dataNode.control.isNull) return undefined;\n const children = node.getChildNodes();\n const l = children.length;\n for (let i = 0; i < l; i++) {\n const elemResult = visitFormDataInContext(dataNode, children[i], cb);\n if (elemResult !== undefined) return elemResult;\n }\n return undefined;\n}\n\nexport function visitFormDataInContext<A>(\n parentContext: SchemaDataNode,\n node: FormNode,\n cb: ControlDataVisitor<A>,\n): A | undefined {\n const dataNode = lookupDataNode(node.definition, parentContext);\n return visitFormData(node, dataNode ?? parentContext, cb, !dataNode);\n}\n\nexport interface FormDataNode {\n parent?: FormDataNode;\n formNode: FormNode;\n parentData: SchemaDataNode;\n childIndex?: number;\n}\n\nexport function visitFormDataNode<A>(\n node: FormDataNode,\n visitFn: (node: FormDataNode, data?: SchemaDataNode) => A | undefined,\n): A | undefined {\n const dataNode = lookupDataNode(node.formNode.definition, node.parentData);\n const v = visitFn(node, dataNode);\n if (v !== undefined) return v;\n\n const parentData = dataNode ?? node.parentData;\n if (parentData.schema.field.collection && parentData.elementIndex == null) {\n const elemCount = parentData.control.elements.length;\n for (let i = 0; i < elemCount; i++) {\n const v = visitChildren(parentData.getChildElement(i));\n if (v !== undefined) return v;\n }\n return undefined;\n } else {\n return visitChildren(parentData);\n }\n\n function visitChildren(parentData: SchemaDataNode) {\n const children = node.formNode.getChildNodes();\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n const res = visitFormDataNode(\n {\n formNode: child,\n parent: node,\n parentData,\n childIndex: i,\n },\n visitFn,\n );\n if (res !== undefined) return res;\n }\n }\n}\n","import {\n addDependent,\n CleanupScope,\n Control, ControlSetup,\n newControl,\n updateComputedValue\n} from \"@astroapps/controls\";\n\n/**\n * Type representing a JSON path, which can be a string or a number.\n */\nexport type JsonPath = string | number;\n\n/**\n * Converts a JSON path array to a string.\n * @param jsonPath - The JSON path array to convert.\n * @param customIndex - Optional function to customize the index format.\n * @returns The JSON path string.\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 createScopedComputed<T>(\n parent: CleanupScope,\n compute: () => T,\n): Control<T> {\n const c = newControl<any>(undefined);\n updateComputedValue(c, compute);\n addDependent(parent, c);\n return c.as();\n}\n\nexport function createScoped<T>(parent: CleanupScope, value: T, setup?: ControlSetup<T>): Control<T> {\n const c = newControl<T>(value, setup);\n addDependent(parent, c);\n return c;\n}\n","import {\n DataExpression,\n DataMatchExpression,\n EntityExpression,\n ExpressionType,\n JsonataExpression,\n NotEmptyExpression,\n} from \"./entityExpression\";\nimport {\n AsyncEffect,\n CleanupScope,\n collectChanges,\n createAsyncEffect,\n createSyncEffect,\n trackedValue,\n Value,\n} from \"@astroapps/controls\";\nimport { schemaDataForFieldRef, SchemaDataNode } from \"./schemaDataNode\";\nimport { SchemaInterface } from \"./schemaInterface\";\nimport jsonata from \"jsonata\";\nimport { getJsonPath, getRootDataNode } from \"./controlDefinition\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { createScopedComputed, jsonPathString } from \"./util\";\n\nexport interface ExpressionEvalContext {\n scope: CleanupScope;\n returnResult: (k: unknown) => void;\n dataNode: SchemaDataNode;\n schemaInterface: SchemaInterface;\n variables?: Value<Record<string, any> | undefined>;\n runAsync(effect: () => void): void;\n}\n\nexport type ExpressionEval<T extends EntityExpression> = (\n expr: T,\n context: ExpressionEvalContext,\n) => void;\n\nconst dataEval: ExpressionEval<DataExpression> = (\n fvExpr,\n { dataNode: node, returnResult, scope },\n) => {\n createSyncEffect(() => {\n const otherField = schemaDataForFieldRef(fvExpr.field, node);\n returnResult(otherField.control?.value);\n }, scope);\n};\nconst dataMatchEval: ExpressionEval<DataMatchExpression> = (\n matchExpr,\n { dataNode, returnResult, scope },\n) => {\n createSyncEffect(() => {\n const otherField = schemaDataForFieldRef(matchExpr.field, dataNode);\n const fv = otherField?.control.value;\n returnResult(\n Array.isArray(fv) ? fv.includes(matchExpr.value) : fv === matchExpr.value,\n );\n }, scope);\n};\n\nconst notEmptyEval: ExpressionEval<NotEmptyExpression> = (\n expr,\n { returnResult, dataNode, scope, schemaInterface },\n) => {\n createSyncEffect(() => {\n const otherField = schemaDataForFieldRef(expr.field, dataNode);\n const fv = otherField.control?.value;\n const field = otherField.schema.field;\n const empty = !!expr.empty;\n returnResult(field && empty === schemaInterface.isEmptyValue(field, fv));\n }, scope);\n};\n\nexport const jsonataEval: ExpressionEval<JsonataExpression> = (\n expr,\n { scope, returnResult, dataNode, variables, runAsync },\n) => {\n const path = getJsonPath(dataNode);\n const pathString = jsonPathString(path, (x) => `#$i[${x}]`);\n const rootData = getRootDataNode(dataNode).control;\n\n const parsedJsonata = createScopedComputed(scope, () => {\n const jExpr = expr.expression;\n const fullExpr = pathString ? pathString + \".(\" + jExpr + \")\" : jExpr;\n try {\n return { expr: jsonata(fullExpr ? fullExpr : \"null\"), fullExpr };\n } catch (e) {\n console.error(e);\n return { expr: jsonata(\"null\"), fullExpr };\n }\n });\n\n async function runJsonata(effect: AsyncEffect<any>, signal: AbortSignal) {\n const bindings = collectChanges(\n effect.collectUsage,\n () => variables?.value,\n );\n const evalResult = await parsedJsonata.fields.expr.value.evaluate(\n trackedValue(rootData, effect.collectUsage),\n bindings,\n );\n // console.log(parsedJsonata.fields.fullExpr.value, evalResult, bindings);\n collectChanges(effect.collectUsage, () => returnResult(evalResult));\n }\n\n const asyncEffect = createAsyncEffect(runJsonata, scope);\n runAsync(() => asyncEffect.start());\n};\n\nexport const uuidEval: ExpressionEval<EntityExpression> = (_, ctx) => {\n ctx.returnResult(uuidv4());\n};\n\nexport const defaultEvaluators: Record<string, ExpressionEval<any>> = {\n [ExpressionType.DataMatch]: dataMatchEval,\n [ExpressionType.Data]: dataEval,\n [ExpressionType.NotEmpty]: notEmptyEval,\n [ExpressionType.Jsonata]: jsonataEval,\n [ExpressionType.UUID]: uuidEval,\n};\n","import {\n DateComparison,\n DateValidator,\n JsonataValidator,\n LengthValidator,\n SchemaValidator,\n ValidatorType,\n} from \"./schemaValidator\";\nimport { ControlDefinition, isDataControl } from \"./controlDefinition\";\nimport { SchemaDataNode } from \"./schemaDataNode\";\nimport {\n Control,\n ControlChange,\n createCleanupScope,\n createEffect,\n trackControlChange,\n} from \"@astroapps/controls\";\nimport { ValidationMessageType } from \"./schemaField\";\nimport { SchemaInterface } from \"./schemaInterface\";\n\nimport { FormContextOptions } from \"./formState\";\nimport { FormNode } from \"./formNode\";\nimport { jsonataEval } from \"./evalExpression\";\nimport { ExpressionType } from \"./entityExpression\";\nimport { createScopedComputed } from \"./util\";\n\nexport interface ValidationEvalContext {\n addSync(validate: (value: unknown) => string | undefined | null): void;\n addCleanup(cleanup: () => void): void;\n validationEnabled: Control<boolean>;\n parentData: SchemaDataNode;\n data: SchemaDataNode;\n schemaInterface: SchemaInterface;\n formContext: Control<FormContextOptions>;\n runAsync(af: () => void): void;\n}\n\nexport type ValidatorEval<T extends SchemaValidator> = (\n validation: T,\n context: ValidationEvalContext,\n) => void;\n\nexport const jsonataValidator: ValidatorEval<JsonataValidator> = (\n validation,\n context,\n) => {\n const error = createScopedComputed(context, () => undefined);\n jsonataEval(\n { type: ExpressionType.Jsonata, expression: validation.expression },\n {\n scope: error,\n dataNode: context.parentData,\n returnResult: (v) => {\n trackControlChange(context.data.control, ControlChange.Validate);\n // console.log(\"Setting jsonata error\", v);\n context.data.control.setError(\"jsonata\", v?.toString());\n },\n schemaInterface: context.schemaInterface,\n variables: context.formContext.fields.variables,\n runAsync: context.runAsync,\n },\n );\n};\n\nexport const lengthValidator: ValidatorEval<LengthValidator> = (\n lv,\n context,\n) => {\n const { schemaInterface } = context;\n context.addSync(() => {\n const field = context.data.schema.field;\n const control = context.data.control;\n const len = schemaInterface.controlLength(field, control);\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};\n\nexport const dateValidator: ValidatorEval<DateValidator> = (dv, context) => {\n const { schemaInterface } = context;\n const field = context.data.schema.field;\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\n context.addSync((v) => {\n if (v) {\n const selDate = schemaInterface.parseToMillis(field, v as string);\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};\n\nexport const defaultValidators: Record<string, ValidatorEval<any>> = {\n [ValidatorType.Jsonata]: jsonataValidator,\n [ValidatorType.Length]: lengthValidator,\n [ValidatorType.Date]: dateValidator,\n};\n\nexport function createValidators(\n def: ControlDefinition,\n context: ValidationEvalContext,\n): void {\n if (isDataControl(def)) {\n const { schemaInterface } = context;\n if (def.required) {\n context.addSync((v) => {\n const field = context.data.schema.field;\n return schemaInterface.isEmptyValue(field, v)\n ? schemaInterface.validationMessageText(\n field,\n ValidationMessageType.NotEmpty,\n false,\n true,\n )\n : null;\n });\n }\n def.validators?.forEach((x) => defaultValidators[x.type]?.(x, context));\n }\n}\n\nexport function setupValidation(\n controlImpl: Control<FormContextOptions>,\n definition: ControlDefinition,\n dataNode: Control<SchemaDataNode | undefined>,\n schemaInterface: SchemaInterface,\n parent: SchemaDataNode,\n formNode: FormNode,\n runAsync: (af: () => void) => void,\n) {\n const validationEnabled = createScopedComputed(\n controlImpl,\n () => !definition.hidden,\n );\n const validatorsScope = createCleanupScope();\n createEffect(\n () => {\n validatorsScope.cleanup();\n const dn = dataNode.value;\n if (dn) {\n let syncValidations: ((v: unknown) => string | undefined | null)[] = [];\n createValidators(formNode.definition, {\n data: dn,\n parentData: parent,\n validationEnabled,\n schemaInterface,\n addSync(validate: (v: unknown) => string | undefined | null) {\n syncValidations.push(validate);\n },\n addCleanup(cleanup: () => void) {\n validatorsScope.addCleanup(cleanup);\n },\n formContext: controlImpl,\n runAsync,\n });\n\n createEffect(\n () => {\n if (!validationEnabled.value) return undefined;\n trackControlChange(dn.control, ControlChange.Validate);\n const value = dn.control.value;\n let error = null;\n for (const syncValidation of syncValidations) {\n error = syncValidation(value);\n if (error) break;\n }\n return error;\n },\n (e) => {\n dn.control.setError(\"default\", e);\n },\n validatorsScope,\n );\n }\n },\n (c) => {},\n controlImpl,\n );\n}\n","import { FormNode, lookupDataNode } from \"./formNode\";\nimport {\n hideDisplayOnly,\n SchemaDataNode,\n validDataNode,\n} from \"./schemaDataNode\";\nimport {\n AnyControlDefinition,\n ControlAdornmentType,\n ControlDefinition,\n DataRenderType,\n DynamicPropertyType,\n HtmlDisplay,\n isActionControl,\n isControlDisabled,\n isControlReadonly,\n isDataControl,\n isDisplayControl,\n isHtmlDisplay,\n isTextDisplay,\n TextDisplay,\n} from \"./controlDefinition\";\nimport { SchemaInterface } from \"./schemaInterface\";\nimport { FieldOption } from \"./schemaField\";\nimport {\n CleanupScope,\n Control,\n createScopedEffect,\n createSyncEffect,\n ensureMetaValue,\n getControlPath,\n getCurrentFields,\n getMetaValue,\n newControl,\n unsafeRestoreControl,\n updateComputedValue,\n} from \"@astroapps/controls\";\nimport {\n defaultEvaluators,\n ExpressionEval,\n ExpressionEvalContext,\n} from \"./evalExpression\";\nimport { EntityExpression } from \"./entityExpression\";\nimport { createScoped, jsonPathString } from \"./util\";\nimport { setupValidation } from \"./validators\";\n\nexport interface ControlState {\n definition: ControlDefinition;\n schemaInterface: SchemaInterface;\n dataNode?: SchemaDataNode | undefined;\n display?: string;\n stateId?: string;\n style?: object;\n layoutStyle?: object;\n allowedOptions?: any[];\n readonly: boolean;\n hidden: boolean;\n disabled: boolean;\n clearHidden: boolean;\n variables: Record<string, any>;\n meta: Control<Record<string, any>>;\n}\n\nexport interface FormContextOptions {\n readonly?: boolean | null;\n hidden?: boolean | null;\n disabled?: boolean | null;\n clearHidden?: boolean;\n stateKey?: string;\n variables?: Record<string, any>;\n}\n\n/**\n * Interface representing the form context data.\n */\nexport interface FormContextData {\n option?: FieldOption;\n optionSelected?: boolean;\n}\n\nexport interface FormState {\n getControlState(\n parent: SchemaDataNode,\n formNode: FormNode,\n context: FormContextOptions,\n runAsync: (af: () => void) => void,\n ): ControlState;\n\n cleanup(): void;\n\n evalExpression(expr: EntityExpression, context: ExpressionEvalContext): void;\n\n getExistingControlState(\n parent: SchemaDataNode,\n formNode: FormNode,\n stateKey?: string,\n ): ControlState | undefined;\n}\n\nconst formStates: FormState[] = [];\n\nexport function getControlStateId(\n parent: SchemaDataNode,\n formNode: FormNode,\n stateKey?: string,\n): string {\n return parent.id + \"$\" + formNode.id + (stateKey ?? \"\");\n}\n\nexport function createFormState(\n schemaInterface: SchemaInterface,\n evaluators: Record<string, ExpressionEval<any>> = defaultEvaluators,\n): FormState {\n // console.log(\"createFormState\");\n const controlStates = newControl<Record<string, FormContextOptions>>({});\n\n function evalExpression(\n e: EntityExpression,\n context: ExpressionEvalContext,\n ): void {\n const x = evaluators[e.type];\n x?.(e, context);\n }\n\n return {\n evalExpression,\n cleanup: () => {\n // console.log(\"Cleanup form state\");\n controlStates.cleanup();\n },\n getExistingControlState(\n parent: SchemaDataNode,\n formNode: FormNode,\n stateKey?: string,\n ): ControlState | undefined {\n const stateId = getControlStateId(parent, formNode, stateKey);\n const control = getCurrentFields(controlStates)[stateId];\n if (control) {\n return getMetaValue<Control<ControlState>>(control, \"impl\")?.value;\n }\n return undefined;\n },\n getControlState(\n parent: SchemaDataNode,\n formNode: FormNode,\n context: FormContextOptions,\n runAsync: (af: () => void) => void,\n ): ControlState {\n const stateId = getControlStateId(parent, formNode, context.stateKey);\n const controlImpl = controlStates.fields[stateId];\n controlImpl.value = context;\n function evalExpr<A>(\n scope: CleanupScope,\n init: A,\n nk: Control<A>,\n e: EntityExpression | undefined,\n coerce: (t: unknown) => any,\n ): boolean {\n nk.value = init;\n if (e?.type) {\n evalExpression(e, {\n returnResult: (r) => {\n nk.value = coerce(r);\n },\n scope,\n dataNode: parent,\n variables: controlImpl.fields.variables,\n schemaInterface,\n runAsync,\n });\n return true;\n }\n return false;\n }\n\n return createScopedMetaValue(formNode, controlImpl, \"impl\", (scope) => {\n const cf = controlImpl.fields;\n const definitionOverrides = createScoped<Record<string, any>>(\n controlImpl,\n {},\n );\n const displayControl = createScoped<string | undefined>(\n controlImpl,\n undefined,\n );\n\n const displayOverrides = createScoped<Record<string, any>>(\n controlImpl,\n {},\n );\n const def = formNode.definition;\n const definition = createOverrideProxy(def, definitionOverrides);\n const of = definitionOverrides.fields as Record<\n KeysOfUnion<AnyControlDefinition>,\n Control<any>\n >;\n\n const df = displayOverrides.fields as Record<\n KeysOfUnion<TextDisplay | HtmlDisplay>,\n Control<any>\n >;\n\n updateComputedValue(of.displayData, () =>\n isDisplayControl(def)\n ? createOverrideProxy(def.displayData, displayOverrides)\n : undefined,\n );\n\n createScopedEffect((c) => {\n evalExpr(\n c,\n def.hidden,\n of.hidden,\n firstExpr(formNode, DynamicPropertyType.Visible),\n (r) => !r,\n );\n }, definitionOverrides);\n\n createScopedEffect((c) => {\n evalExpr(\n c,\n isControlReadonly(def),\n of.readonly,\n firstExpr(formNode, DynamicPropertyType.Readonly),\n (r) => !!r,\n );\n }, definitionOverrides);\n\n createScopedEffect((c) => {\n evalExpr(\n c,\n isControlDisabled(def),\n of.disabled,\n firstExpr(formNode, DynamicPropertyType.Disabled),\n (r) => !!r,\n );\n }, definitionOverrides);\n\n createScopedEffect((c) => {\n evalExpr(\n c,\n isDataControl(def) ? def.defaultValue : undefined,\n of.defaultValue,\n isDataControl(def)\n ? firstExpr(formNode, DynamicPropertyType.DefaultValue)\n : undefined,\n (r) => r,\n );\n }, definitionOverrides);\n\n createScopedEffect((c) => {\n evalExpr(\n c,\n isActionControl(def) ? def.actionData : undefined,\n of.actionData,\n isActionControl(def)\n ? firstExpr(formNode, DynamicPropertyType.ActionData)\n : undefined,\n (r) => r,\n );\n }, definitionOverrides);\n\n createScopedEffect((c) => {\n evalExpr(\n c,\n def.title,\n of.title,\n firstExpr(formNode, DynamicPropertyType.Label),\n coerceString,\n );\n }, definitionOverrides);\n\n const control = createScoped<ControlState>(controlImpl, {\n definition,\n dataNode: undefined,\n schemaInterface,\n disabled: false,\n readonly: false,\n clearHidden: false,\n hidden: false,\n variables: controlImpl.fields.variables.current.value ?? {},\n stateId,\n meta: newControl({}),\n });\n\n const {\n dataNode,\n hidden,\n readonly,\n style,\n layoutStyle,\n allowedOptions,\n disabled,\n variables,\n display,\n } = control.fields;\n\n createScopedEffect(\n (c) =>\n evalExpr(\n c,\n undefined,\n style,\n firstExpr(formNode, DynamicPropertyType.Style),\n coerceStyle,\n ),\n scope,\n );\n\n createScopedEffect(\n (c) =>\n evalExpr(\n c,\n undefined,\n layoutStyle,\n firstExpr(formNode, DynamicPropertyType.LayoutStyle),\n coerceStyle,\n ),\n scope,\n );\n\n createScopedEffect(\n (c) =>\n evalExpr(\n c,\n undefined,\n allowedOptions,\n firstExpr(formNode, DynamicPropertyType.AllowedOptions),\n (x) => x,\n ),\n scope,\n );\n\n createScopedEffect(\n (c) =>\n evalExpr(\n c,\n undefined,\n display,\n firstExpr(formNode, DynamicPropertyType.Display),\n coerceString,\n ),\n scope,\n );\n\n updateComputedValue(dataNode, () => lookupDataNode(definition, parent));\n updateComputedValue(\n hidden,\n () =>\n !!cf.hidden.value ||\n definition.hidden ||\n (dataNode.value &&\n (!validDataNode(dataNode.value) ||\n hideDisplayOnly(dataNode.value, schemaInterface, definition))),\n );\n\n updateComputedValue(\n readonly,\n () => !!cf.readonly.value || isControlReadonly(definition),\n );\n updateComputedValue(\n disabled,\n () => !!cf.disabled.value || isControlDisabled(definition),\n );\n\n updateComputedValue(variables, () => {\n return controlImpl.fields.variables.value ?? {};\n });\n\n createSyncEffect(() => {\n const dn = dataNode.value;\n if (dn) {\n dn.control.disabled = disabled.value;\n }\n }, scope);\n\n createSyncEffect(() => {\n if (isDisplayControl(def)) {\n if (isTextDisplay(def.displayData)) df.text.value = display.value;\n else if (isHtmlDisplay(def.displayData))\n df.html.value = display.value;\n }\n }, displayOverrides);\n\n setupValidation(\n controlImpl,\n definition,\n dataNode,\n schemaInterface,\n parent,\n formNode,\n runAsync,\n );\n\n createSyncEffect(() => {\n const dn = dataNode.value?.control;\n if (dn && isDataControl(definition)) {\n if (definition.hidden) {\n if (\n controlImpl.fields.clearHidden.value &&\n !definition.dontClearHidden\n ) {\n // console.log(\"Clearing hidden\");\n dn.value = undefined;\n }\n } else if (\n dn.value === undefined &&\n definition.defaultValue != null &&\n !definition.adornments?.some(\n (x) => x.type === ControlAdornmentType.Optional,\n ) &&\n definition.renderOptions?.type != DataRenderType.NullToggle\n ) {\n // console.log(\n // \"Setting to default\",\n // definition.defaultValue,\n // definition.field,\n // );\n // const [required, dcv] = isDataControl(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)\n // : undefined)\n // );\n\n dn.value = definition.defaultValue;\n }\n }\n }, scope);\n return createOverrideProxy(control.current.value, control);\n });\n },\n };\n}\n\nfunction firstExpr(\n formNode: FormNode,\n property: DynamicPropertyType,\n): EntityExpression | undefined {\n return formNode.definition.dynamic?.find(\n (x) => x.type === property && x.expr.type,\n )?.expr;\n}\n\nfunction coerceStyle(v: unknown): any {\n return typeof v === \"object\" ? v : undefined;\n}\n\nfunction coerceString(v: unknown): string {\n return typeof v === \"string\" ? v : (v?.toString() ?? \"\");\n}\n\nfunction createScopedMetaValue<A>(\n formNode: FormNode,\n c: Control<any>,\n key: string,\n init: (scope: CleanupScope) => A,\n): A {\n return ensureMetaValue(c, key, () => {\n const holder = createScoped<A | undefined>(c, undefined, {\n equals: (a, b) => a === b,\n });\n const effect = createScopedEffect((c) => (holder.value = init(c)), holder);\n effect.run = () => {\n console.log(\n \"ControlState being recreated:\",\n effect.subscriptions.map(\n (x) =>\n `${x[1]?.mask} ${jsonPathString(getControlPath(x[0], unsafeRestoreControl(formNode.definition)))}`,\n ),\n );\n };\n return holder;\n }).value!;\n}\n\nexport function createOverrideProxy<\n A extends object,\n B extends Record<string, any>,\n>(proxyFor: A, handlers: Control<B>): A {\n const overrides = getCurrentFields(handlers);\n const allOwn = Reflect.ownKeys(proxyFor);\n Reflect.ownKeys(overrides).forEach((k) => {\n if (!allOwn.includes(k)) allOwn.push(k);\n });\n return new Proxy(proxyFor, {\n get(target: A, p: string | symbol, receiver: any): any {\n if (Object.hasOwn(overrides, p)) {\n return overrides[p as keyof B]!.value;\n }\n return Reflect.get(target, p, receiver);\n },\n ownKeys(target: A): ArrayLike<string | symbol> {\n return allOwn;\n },\n has(target: A, p: string | symbol): boolean {\n return Reflect.has(proxyFor, p) || Reflect.has(overrides, p);\n },\n getOwnPropertyDescriptor(target, k) {\n if (Object.hasOwn(overrides, k))\n return {\n enumerable: true,\n configurable: true,\n };\n return Reflect.getOwnPropertyDescriptor(target, k);\n },\n });\n}\n\ntype KeysOfUnion<T> = T extends T ? keyof T : never;\n"],"names":["ControlDefinitionType","DynamicPropertyType","AdornmentPlacement","ControlAdornmentType","IconLibrary","DataRenderType","SyncTextType","GroupRenderType","DisplayDataType","ActionStyle","IconPlacement","visitControlDefinition","x","visitor","defaultValue","type","Action","action","Data","data","Display","display","Group","group","isGridRenderer","options","Grid","isWizardRenderer","Wizard","isDialogRenderer","Dialog","isInlineRenderer","Inline","isSelectChildRenderer","SelectChild","isTabsRenderer","Tabs","isFlexRenderer","Flex","isDisplayOnlyRenderer","DisplayOnly","isTextfieldRenderer","Textfield","isDateTimeRenderer","DateTime","isAutocompleteRenderer","Autocomplete","isAutoCompleteClasses","isDataGroupRenderer","isArrayRenderer","Array","isDataControl","c","isGroupControl","isActionControl","isDisplayControl","isTextDisplay","d","Text","isHtmlDisplay","Html","isCheckEntryClasses","Radio","CheckList","traverseParents","current","get","until","outArray","push","parent","reverse","getRootDataNode","dataNode","getJsonPath","elementIndex","schema","field","getSchemaPath","schemaNode","getSchemaFieldList","getChildNodes","map","fontAwesomeIcon","icon","library","FontAwesome","name","isControlReadonly","readonly","isControlDisabled","disabled","getGroupRendererOptions","def","groupOptions","renderOptions","undefined","isControlDisplayOnly","_getGroupRendererOpti","Boolean","displayOnly","getDisplayOnlyOptions","ExpressionType","FieldType","ValidationMessageType","findField","fields","find","isScalarField","sf","isCompoundField","Compound","missingField","Any","displayName","SchemaTags","getTagParam","tag","_field$tags","tags","startsWith","substring","length","makeParamTag","value","SchemaTree","createChildNode","SchemaNode","id","getSchema","schemaId","_this$getSchemaTree","getSchemaTree","rootNode","SchemaTreeImpl","_this$lookup","lookup","constructor","rootFields","children","createSchemaTree","tree","getUnresolvedFields","getResolvedParent","noRecurse","_this$parent","f","parentNode","schemaRef","treeChildren","getResolvedFields","_resolvedParent$getUn","resolvedParent","node","getChildField","_this$getResolvedFiel","getChildNode","resolveSchemaNode","fieldSegment","createSchemaNode","createSchemaLookup","schemaMap","additional","schemaForFieldRef","fieldRef","_fieldRef$split","schemaForFieldPath","split","traverseSchemaPath","fieldPath","acc","next","i","nextField","childNode","traverseData","root","n","getSchemaNodePath","paths","curNode","getSchemaNodePathString","join","isCompoundNode","relativePath","child","parentPath","childPath","relativeSegmentPath","upLevels","downPath","slice","repeat","buildSchema","Object","entries","stringField","makeScalarField","_extends","String","stringOptionsField","withScalarOptions","v","defaultScalarField","makeCompoundField","defaultCompoundField","intField","Int","doubleField","Double","dateField","Date","timeField","Time","dateTimeField","boolField","Bool","compoundField","other","collection","mergeField","mergeInto","existing","onlyForTypes","mergeTypes","s","extras","filter","includes","mergeFields","newFields","withType","isTypeField","addFieldOption","reduce","af","typeField","_typeField$options","some","resolveSchemas","out","resolveSchemaType","resolvedFields","forEach","keys","ValidatorType","DateComparison","SchemaDataTree","SchemaDataNode","control","getChild","getChildElement","getMetaFields","ensureMetaValue","newControl","SchemaDataTreeImpl","rootSchema","rootControl","objControl","meta","uniqueId","toString","elemControl","elemChild","elements","makeSchemaDataNode","createSchemaDataNode","schemaDataForFieldRef","schemaDataForFieldPath","_nextNode","nextNode","lookupField","validDataNode","context","updateComputedValue","types","typeNode","console","warn","hideDisplayOnly","schemaInterface","definition","_context$control","displayOptions","emptyText","isEmptyValue","DefaultSchemaInterface","boolStrings","parseDateTime","parse","parseToMillis","validationMessageText","messageType","actual","expected","NotEmpty","MinLength","MaxLength","NotBeforeDate","toDateString","NotAfterDate","getDataOptions","getNodeOptions","getOptions","getFilterOptions","array","isArray","searchText","_this$textValue$toLow","_this$textValue","textValue","toLowerCase","textValueForData","element","actualOptions","option","toLocaleDateString","toLocaleString","toLocaleTimeString","controlLength","_control$elements$len","_control$elements","valueLength","_ref","compareValue","v1","v2","localeCompare","compoundFieldSetup","makeControlSetup","compoundFieldEquality","a","b","makeEqualityFunc","elemEqual","allChecks","every","setup","equals","elems","fromEntries","defaultSchemaInterface","FormNode","visit","visitFn","res","getUnresolvedChildNodes","getResolvedChildren","_children","childRefId","getByRefId","childId","childDef","getChildId","resolved","_this$definition$chil","_this$definition$chil2","FormTree","parentId","getControlIds","_definition$children$","_definition$children","childEntries","flatMap","createControlMap","FormTreeImpl","forms","controlMap","getForm","formId","legacyFormNode","createFormTree","controls","Standard","hideTitle","createFormLookup","formMap","k","fieldPathForDefinition","fieldName","lookupDataNode","fieldNamePath","visitControlDataArray","cb","r","visitControlData","ctx","visitFormDataInContext","visitFormData","notSelf","result","l","elemResult","isNull","parentContext","visitFormDataNode","formNode","parentData","elemCount","visitChildren","childIndex","jsonPathString","jsonPath","customIndex","_customIndex","createScopedComputed","compute","addDependent","as","createScoped","dataEval","fvExpr","returnResult","scope","createSyncEffect","_otherField$control","otherField","dataMatchEval","matchExpr","fv","notEmptyEval","expr","_otherField$control2","empty","jsonataEval","variables","runAsync","path","pathString","rootData","parsedJsonata","jExpr","expression","fullExpr","jsonata","e","error","runJsonata","effect","signal","bindings","collectChanges","collectUsage","evalResult","evaluate","trackedValue","asyncEffect","createAsyncEffect","start","uuidEval","_","uuidv4","defaultEvaluators","DataMatch","Jsonata","UUID","jsonataValidator","validation","trackControlChange","ControlChange","Validate","setError","formContext","lengthValidator","lv","addSync","len","min","setValue","concat","from","max","dateValidator","dv","comparisonDate","fixedDate","nowDate","UTC","getFullYear","getMonth","getDate","daysFromCurrent","selDate","notAfter","comparison","NotAfter","defaultValidators","Length","createValidators","_def$validators","required","validators","_defaultValidators$x$","call","setupValidation","controlImpl","validationEnabled","hidden","validatorsScope","createCleanupScope","createEffect","cleanup","dn","syncValidations","validate","addCleanup","syncValidation","getControlStateId","stateKey","createFormState","evaluators","controlStates","evalExpression","getExistingControlState","stateId","getCurrentFields","_getMetaValue","getMetaValue","getControlState","evalExpr","init","nk","coerce","createScopedMetaValue","_controlImpl$fields$v","cf","definitionOverrides","displayOverrides","createOverrideProxy","of","df","displayData","createScopedEffect","firstExpr","Visible","Readonly","Disabled","DefaultValue","actionData","ActionData","title","Label","coerceString","clearHidden","style","layoutStyle","allowedOptions","Style","coerceStyle","LayoutStyle","AllowedOptions","_controlImpl$fields$v2","text","html","_dataNode$value","_definition$adornment","_definition$renderOpt","dontClearHidden","adornments","Optional","NullToggle","property","_formNode$definition$","dynamic","_v$toString","key","holder","run","log","subscriptions","_x$","mask","getControlPath","unsafeRestoreControl","proxyFor","handlers","overrides","allOwn","Reflect","ownKeys","Proxy","target","p","receiver","hasOwn","has","getOwnPropertyDescriptor","enumerable","configurable"],"mappings":"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"}