@react-typed-forms/schemas-html 2.2.2 → 2.3.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/components/DefaultDisplay.tsx","../src/components/ControlInput.tsx","../src/components/SelectDataRenderer.tsx","../src/components/CheckRenderer.tsx","../src/components/DefaultLayout.tsx","../src/components/DefaultDisplayOnly.tsx","../src/components/DefaultAccordion.tsx","../src/components/TabsRenderer.tsx","../src/components/DefaultGroupRenderer.tsx","../src/components/DefaultVisibility.tsx","../src/components/JsonataRenderer.tsx","../src/components/NullToggle.tsx","../src/components/DefaultArrayRenderer.tsx","../src/components/AutocompleteRenderer.tsx","../src/components/ValueForFieldRenderer.tsx","../src/adornments/optionalAdornment.tsx","../src/components/MultilineTextfield.tsx","../src/createDefaultRenderers.tsx","../src/tailwind.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\nimport {\n coerceToString,\n CustomDisplay,\n DisplayDataType,\n DisplayRendererProps,\n DisplayRendererRegistration,\n getOverrideClass,\n HtmlDisplay,\n IconDisplay,\n rendererClass,\n TextDisplay,\n} from \"@react-typed-forms/schemas\";\n\nexport interface DefaultDisplayRendererOptions {\n textClassName?: string;\n htmlClassName?: string;\n}\n\nexport function createDefaultDisplayRenderer(\n options: DefaultDisplayRendererOptions = {},\n): DisplayRendererRegistration {\n return {\n render: (props) => <DefaultDisplay {...options} {...props} />,\n type: \"display\",\n };\n}\n\nexport function DefaultDisplay({\n data,\n display,\n className,\n style,\n ...options\n}: DefaultDisplayRendererOptions & DisplayRendererProps) {\n switch (data.type) {\n case DisplayDataType.Icon:\n return (\n <i\n style={style}\n className={clsx(\n getOverrideClass(className),\n display ? display.value : (data as IconDisplay).iconClass,\n )}\n />\n );\n case DisplayDataType.Text:\n return (\n <div\n style={style}\n className={rendererClass(className, options.textClassName)}\n >\n {display ? coerceToString(display.value) : (data as TextDisplay).text}\n </div>\n );\n case DisplayDataType.Html:\n return (\n <div\n style={style}\n className={rendererClass(className, options.htmlClassName)}\n dangerouslySetInnerHTML={{\n __html: display\n ? coerceToString(display.value)\n : (data as HtmlDisplay).html,\n }}\n />\n );\n case DisplayDataType.Custom:\n return (\n <div>\n <b>({(data as CustomDisplay).customId})</b>\n </div>\n );\n default:\n return <h1>Unknown display type: {data.type}</h1>;\n }\n}\n","import React from \"react\";\nimport {\n Control,\n formControlProps,\n useControl,\n useControlEffect,\n} from \"@react-typed-forms/core\";\nimport {FieldType} from \"@react-typed-forms/schemas\";\n\nexport function ControlInput({\n control,\n convert,\n ...props\n}: React.InputHTMLAttributes<HTMLInputElement> & {\n control: Control<any>;\n convert: InputConversion;\n}) {\n const { errorText, value, onChange, ...inputProps } =\n formControlProps(control);\n const textValue = useControl(() => toText(value));\n useControlEffect(\n () => control.value,\n (v) => (textValue.value = toText(v)),\n );\n return (\n <input\n {...inputProps}\n type={convert[0]}\n value={textValue.value}\n onChange={(e) => {\n textValue.value = e.target.value;\n const converted = convert[1](e.target.value);\n if (converted !== undefined) control.value = converted;\n }}\n {...props}\n />\n );\n\n function toText(value: any) {\n return value == null ? \"\" : convert[2](value);\n }\n}\n\ntype InputConversion = [\n string,\n (s: string) => any,\n (a: any) => string | number,\n];\n\nexport function createInputConversion(ft: string): InputConversion {\n switch (ft) {\n case FieldType.String:\n return [\"text\", (a) => a, (a) => a];\n case FieldType.Bool:\n return [\n \"text\",\n (a) => (a === \"true\" ? true : a === \"false\" ? false : undefined),\n (a) => a?.toString() ?? \"\",\n ];\n case FieldType.Int:\n return [\n \"number\",\n (a) => (a !== \"\" ? parseInt(a) : null),\n (a) => (a == null ? \"\" : a),\n ];\n case FieldType.DateTime:\n return [\"datetime-local\", (a) => (!a ? null : a), (a) => a];\n case FieldType.Date:\n return [\"date\", (a) => (!a ? null : a), (a) => a];\n case FieldType.Time:\n return [\n \"time\",\n (a) => {\n const l = a.length;\n if (l === 5) return a + \":00\";\n if (l === 8) return a;\n return undefined;\n },\n (a) => (a ? a.substring(0, 5) : \"\"),\n ];\n case FieldType.Double:\n return [\n \"number\",\n (a) => (a !== \"\" ? parseFloat(a) : null),\n (a) => (a == null ? \"\" : a),\n ];\n default:\n return [\"text\", (a) => a, (a) => a];\n }\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport React, { useMemo, useState } from \"react\";\nimport {\n createDataRenderer,\n FieldOption,\n FieldType,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\n\nexport interface SelectRendererOptions {\n className?: string;\n emptyText?: string;\n requiredText?: string;\n}\n\nexport function createSelectRenderer(options: SelectRendererOptions = {}) {\n return createDataRenderer(\n (props, asArray) => (\n <SelectDataRenderer\n className={rendererClass(props.className, options.className)}\n state={props.control}\n id={props.id}\n readonly={props.readonly}\n options={props.options ?? []}\n required={props.required}\n emptyText={options.emptyText}\n requiredText={options.requiredText}\n convert={createSelectConversion(props.field.type)}\n />\n ),\n {\n options: true,\n },\n );\n}\n\ntype SelectConversion = (a: any) => string | number;\n\nexport interface SelectDataRendererProps {\n id?: string;\n className?: string;\n options: FieldOption[];\n emptyText?: string;\n requiredText?: string;\n readonly: boolean;\n required: boolean;\n state: Control<any>;\n convert: SelectConversion;\n}\n\nexport function SelectDataRenderer({\n state,\n options,\n className,\n convert,\n required,\n emptyText = \"N/A\",\n requiredText = \"<please select>\",\n readonly,\n ...props\n}: SelectDataRendererProps) {\n const { value, disabled } = state;\n const [showEmpty] = useState(!required || value == null);\n const optionStringMap = useMemo(\n () => Object.fromEntries(options.map((x) => [convert(x.value), x.value])),\n [options],\n );\n const optionGroups = useMemo(\n () => new Set(options.filter((x) => x.group).map((x) => x.group!)),\n [options],\n );\n return (\n <select\n {...props}\n className={className}\n onChange={(v) => (state.value = optionStringMap[v.target.value])}\n value={convert(value)}\n disabled={disabled || readonly}\n >\n {showEmpty && (\n <option value=\"\">{required ? requiredText : emptyText}</option>\n )}\n {[...optionGroups.keys()].map((x) => (\n <optgroup key={x} label={x}>\n {options.filter((o) => o.group === x).map(renderOption)}\n </optgroup>\n ))}\n {options.filter((x) => !x.group).map(renderOption)}\n </select>\n );\n\n function renderOption(x: FieldOption, i: number) {\n return (\n <option key={i} value={convert(x.value)} disabled={!!x.disabled}>\n {x.name}\n </option>\n );\n }\n}\n\nexport function createSelectConversion(ft: string): SelectConversion {\n switch (ft) {\n case FieldType.String:\n case FieldType.Int:\n case FieldType.Double:\n return (a) => a;\n default:\n return (a) => a?.toString() ?? \"\";\n }\n}\n","import {\n Control,\n Fcheckbox,\n RenderArrayElements,\n useComputed,\n} from \"@react-typed-forms/core\";\nimport React, { ReactNode } from \"react\";\nimport {\n CheckEntryClasses,\n createDataRenderer,\n DataRenderType,\n FieldOption,\n fieldOptionAdornment,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport clsx from \"clsx\";\n\nexport interface CheckRendererOptions {\n className?: string;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n entryWrapperClass?: string;\n selectedClass?: string;\n notSelectedClass?: string;\n}\nexport function createRadioRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n classes={options}\n controlClasses={p.renderOptions as CheckEntryClasses}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => control.value == o.value}\n setChecked={(c, o) => (c.value = o.value)}\n control={p.control}\n type=\"radio\"\n entryAdornment={fieldOptionAdornment(p)}\n />\n ),\n {\n renderType: DataRenderType.Radio,\n },\n );\n}\n\nexport function createCheckListRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n classes={options}\n controlClasses={p.renderOptions as CheckEntryClasses}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => {\n const v = control.value;\n return Array.isArray(v) ? v.includes(o.value) : false;\n }}\n setChecked={(c, o, checked) => {\n c.setValue((x) => setIncluded(x ?? [], o.value, checked));\n }}\n control={p.control}\n type=\"checkbox\"\n entryAdornment={fieldOptionAdornment(p)}\n />\n ),\n {\n collection: true,\n renderType: DataRenderType.CheckList,\n },\n );\n}\n\nexport interface CheckButtonsProps {\n id?: string;\n className?: string;\n options?: FieldOption[] | null;\n control: Control<any>;\n classes: CheckRendererOptions;\n controlClasses?: CheckEntryClasses;\n readonly?: boolean;\n type: \"checkbox\" | \"radio\";\n isChecked: (c: Control<any>, o: FieldOption) => boolean;\n setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;\n entryAdornment?: (c: FieldOption, i: number, selected: boolean) => ReactNode;\n}\n\nexport function CheckButtons({\n control,\n options,\n readonly,\n className,\n id,\n type,\n isChecked,\n setChecked,\n entryAdornment,\n classes,\n controlClasses = {},\n}: CheckButtonsProps) {\n const { disabled } = control;\n const name = \"r\" + control.uniqueId;\n return (\n <div className={className} id={id}>\n <RenderArrayElements array={options?.filter((x) => x.value != null)}>\n {(o, i) => {\n const checked = useComputed(() => isChecked(control, o)).value;\n const selOrUnsel = checked\n ? rendererClass(\n controlClasses?.selectedClass,\n classes.selectedClass,\n )\n : rendererClass(\n controlClasses?.notSelectedClass,\n classes.notSelectedClass,\n );\n return (\n <div\n className={clsx(\n rendererClass(\n controlClasses?.entryWrapperClass,\n classes.entryWrapperClass,\n ),\n selOrUnsel,\n )}\n onClick={() => !readonly && setChecked(control, o, !checked)}\n >\n <div className={classes.entryClass}>\n <input\n id={name + \"_\" + i}\n className={classes.checkClass}\n type={type}\n name={name}\n readOnly={readonly}\n disabled={disabled}\n checked={checked}\n onChange={(x) => {\n !readonly && setChecked(control, o, x.target.checked);\n }}\n />\n <label className={classes.labelClass} htmlFor={name + \"_\" + i}>\n {o.name}\n </label>\n </div>\n {entryAdornment?.(o, i, checked)}\n </div>\n );\n }}\n </RenderArrayElements>\n </div>\n );\n}\n\nexport function setIncluded<A>(array: A[], elem: A, included: boolean): A[] {\n const already = array.includes(elem);\n if (included === already) {\n return array;\n }\n if (included) {\n return [...array, elem];\n }\n return array.filter((e) => e !== elem);\n}\n\nexport function createCheckboxRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (props, renderer) => (p) => ({\n ...p,\n label: undefined,\n children: (\n <div className={rendererClass(props.className, options.entryClass)}>\n <Fcheckbox\n id={props.id}\n control={props.control.as()}\n style={props.style}\n className={options.checkClass}\n />\n {p.label && renderer.renderLabel(p.label, undefined, undefined)}\n </div>\n ),\n }),\n { renderType: DataRenderType.Checkbox },\n );\n}\n","import React, { ReactNode } from \"react\";\nimport {\n createLayoutRenderer,\n RenderedLayout,\n rendererClass,\n renderLayoutParts,\n} from \"@react-typed-forms/schemas\";\n\nexport interface DefaultLayoutRendererOptions {\n className?: string;\n errorClass?: string;\n renderError?: (errorText: string | null | undefined) => ReactNode;\n}\n\nexport function createDefaultLayoutRenderer(\n options: DefaultLayoutRendererOptions = {},\n) {\n return createLayoutRenderer((props, renderers) => {\n const layout = renderLayoutParts(props, renderers);\n return {\n children: layout.wrapLayout(\n <DefaultLayout layout={layout} {...options} />,\n ),\n className: rendererClass(layout.className, options.className),\n style: layout.style,\n divRef: (e) =>\n e && props.errorControl\n ? (props.errorControl.meta.scrollElement = e)\n : undefined,\n };\n });\n}\n\nexport function DefaultLayout({\n errorClass,\n renderError = (e) => e && <div className={errorClass}>{e}</div>,\n layout: { controlEnd, controlStart, label, children, errorControl },\n}: DefaultLayoutRendererOptions & {\n layout: RenderedLayout;\n}) {\n const ec = errorControl;\n const errorText = ec && ec.touched ? ec.error : undefined;\n return (\n <>\n {label}\n {controlStart}\n {children}\n {renderError(errorText)}\n {controlEnd}\n </>\n );\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport {\n rendererClass,\n SchemaField,\n SchemaInterface,\n} from \"@react-typed-forms/schemas\";\n\nexport function DefaultDisplayOnly({\n control,\n className,\n emptyText,\n schemaInterface,\n field,\n style,\n}: {\n control: Control<any>;\n field: SchemaField;\n schemaInterface: SchemaInterface;\n className?: string;\n style?: React.CSSProperties;\n emptyText?: string | null;\n}) {\n const v = control.value;\n const text =\n (schemaInterface.isEmptyValue(field, v)\n ? emptyText\n : schemaInterface.textValue(field, v)) ?? \"\";\n return (\n <div style={style} className={className}>\n {text}\n </div>\n );\n}\n","import React, { CSSProperties, Fragment, ReactElement } from \"react\";\nimport { Control, useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\nimport { DefaultAccordionRendererOptions } from \"../createDefaultRenderers\";\nimport {\n AccordionAdornment,\n ControlDataContext,\n FormRenderer,\n} from \"@react-typed-forms/schemas\";\n\nexport function DefaultAccordion({\n children,\n accordion,\n contentStyle,\n contentClassName,\n designMode,\n iconOpenClass,\n iconClosedClass,\n className,\n renderTitle = (t) => t,\n renderToggler,\n renderers,\n titleClass,\n useCss,\n dataContext,\n}: {\n children: ReactElement;\n accordion: Partial<AccordionAdornment>;\n contentStyle?: CSSProperties;\n contentClassName?: string;\n designMode?: boolean;\n renderers: FormRenderer;\n dataContext: ControlDataContext;\n} & DefaultAccordionRendererOptions) {\n const dataControl = (dataContext.dataNode ?? dataContext.parentNode).control;\n const open = useControl(!!accordion.defaultExpanded);\n if (dataControl && !dataControl.meta.accordionState) {\n dataControl.meta.accordionState = open;\n }\n const isOpen = open.value;\n const fullContentStyle =\n isOpen || designMode ? contentStyle : { ...contentStyle, display: \"none\" };\n const title = renderers.renderLabelText(renderTitle(accordion.title, open));\n const toggler = renderToggler ? (\n renderToggler(open, title)\n ) : (\n <button className={className} onClick={() => open.setValue((x) => !x)}>\n <label className={titleClass}>{title}</label>\n <i className={clsx(isOpen ? iconOpenClass : iconClosedClass)} />\n </button>\n );\n\n return (\n <>\n {toggler}\n {(useCss || isOpen || designMode) && (\n <div style={fullContentStyle} className={contentClassName}>\n {children}\n </div>\n )}\n </>\n );\n}\n\nexport function getAccordionState(\n c: Control<unknown>,\n): Control<boolean> | undefined {\n return c.meta.accordionState;\n}\n","import {\n controlTitle,\n createGroupRenderer,\n FormNode,\n GroupRendererProps,\n GroupRenderType,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport React from \"react\";\nimport { useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\n\nexport interface TabsRendererOptions {\n className?: string;\n tabListClass?: string;\n tabClass?: string;\n labelClass?: string;\n activeClass?: string;\n inactiveClass?: string;\n contentClass?: string;\n}\n\nexport function createTabsRenderer(options: TabsRendererOptions = {}) {\n return createGroupRenderer(\n (p, renderer) => <TabsGroupRenderer {...p} options={options} />,\n {\n renderType: GroupRenderType.Tabs,\n },\n );\n}\n\nexport function TabsGroupRenderer({\n formNode,\n className,\n options,\n renderChild,\n designMode,\n}: GroupRendererProps & { options: TabsRendererOptions }) {\n const tabIndex = useControl(0);\n const {\n tabClass,\n labelClass,\n tabListClass,\n inactiveClass,\n activeClass,\n contentClass,\n } = options;\n const currentTab = tabIndex.value;\n return designMode ? (\n <>{formNode.getChildNodes().map((x, i) => renderTabs([x], i))}</>\n ) : (\n renderTabs(formNode.getChildNodes(), 0)\n );\n\n function renderTabs(tabs: FormNode[], key: number) {\n return (\n <div key={key} className={rendererClass(className, options.className)}>\n <ul className={rendererClass(null, tabListClass)}>\n {tabs.map((x, i) => (\n <li\n key={i}\n className={rendererClass(null, tabClass)}\n onClick={() => (tabIndex.value = i)}\n >\n <span\n className={rendererClass(\n null,\n clsx(\n labelClass,\n i == currentTab ? activeClass : inactiveClass,\n ),\n )}\n >\n {x.definition.title ? x.definition.title : \"<untitled>\"}\n </span>\n </li>\n ))}\n </ul>\n <div className={rendererClass(null, contentClass)}>\n {renderChild(currentTab, tabs[currentTab])}\n </div>\n </div>\n );\n }\n}\n","import {\n ControlLayoutProps,\n FlexRenderer,\n FormRenderer,\n GridRenderer,\n GroupRendererProps,\n GroupRendererRegistration,\n isFlexRenderer,\n isGridRenderer,\n isSelectChildRenderer,\n isTabsRenderer,\n rendererClass,\n SelectChildRenderer,\n} from \"@react-typed-forms/schemas\";\nimport clsx from \"clsx\";\nimport React, { CSSProperties, useCallback } from \"react\";\nimport { useTrackedComponent } from \"@react-typed-forms/core\";\nimport { createTabsRenderer, TabsRendererOptions } from \"./TabsRenderer\";\n\ninterface StyleProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport interface DefaultGroupRendererOptions {\n className?: string;\n standardClassName?: string;\n gridStyles?: (columns: GridRenderer) => StyleProps;\n gridClassName?: string;\n defaultGridColumns?: number;\n flexClassName?: string;\n defaultFlexGap?: string;\n tabs?: TabsRendererOptions;\n}\n\nexport function createDefaultGroupRenderer(\n options?: DefaultGroupRendererOptions,\n): GroupRendererRegistration {\n const tabsRenderer = createTabsRenderer(options?.tabs);\n const {\n className,\n gridStyles = defaultGridStyles,\n defaultGridColumns = 2,\n gridClassName,\n standardClassName,\n flexClassName,\n defaultFlexGap,\n } = options ?? {};\n\n function defaultGridStyles({\n columns = defaultGridColumns,\n }: GridRenderer): StyleProps {\n return {\n className: gridClassName,\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n },\n };\n }\n\n function flexStyles(options: FlexRenderer): StyleProps {\n return {\n className: flexClassName,\n style: {\n display: \"flex\",\n gap: options.gap ? options.gap : defaultFlexGap,\n flexDirection: options.direction\n ? (options.direction as any)\n : undefined,\n },\n };\n }\n\n function render(props: GroupRendererProps, renderers: FormRenderer) {\n const { renderChild, renderOptions, formNode } = props;\n if (isTabsRenderer(renderOptions))\n return tabsRenderer.render(props, renderers);\n if (isSelectChildRenderer(renderOptions) && !props.designMode) {\n return (\n <SelectChildGroupRenderer {...props} renderOptions={renderOptions} />\n );\n }\n\n const { style, className: gcn } = isGridRenderer(renderOptions)\n ? gridStyles(renderOptions)\n : isFlexRenderer(renderOptions)\n ? flexStyles(renderOptions)\n : ({ className: standardClassName } as StyleProps);\n return (\n <div\n className={rendererClass(props.className, clsx(className, gcn))}\n style={style}\n >\n {formNode.getChildNodes().map((c, i) => renderChild(i, c))}\n </div>\n );\n }\n\n return { type: \"group\", render };\n}\n\ntype SelectChildProps = Pick<\n GroupRendererProps,\n \"useEvalExpression\" | \"dataContext\" | \"formNode\" | \"renderChild\"\n> & {\n renderOptions: SelectChildRenderer;\n};\nfunction SelectChildGroupRenderer(props: SelectChildProps) {\n const { useEvalExpression, renderOptions } = props;\n const dynHook = useEvalExpression(renderOptions?.childIndexExpression, (x) =>\n x == \"string\" ? parseInt(x) : x,\n );\n const Render = useTrackedComponent(\n (p: SelectChildProps) => {\n const ctrl = dynHook.runHook(p.dataContext, dynHook.state);\n const childIndex = ctrl?.value;\n const childDefinitions = p.formNode.getChildNodes();\n return (\n <div>\n {typeof childIndex === \"number\" &&\n childIndex < childDefinitions.length &&\n childIndex >= 0 &&\n p.renderChild(childIndex, childDefinitions[childIndex])}\n </div>\n );\n },\n [dynHook.deps],\n );\n return <Render {...props} />;\n}\n","import React, { useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport {\n createVisibilityRenderer,\n VisibilityRendererProps,\n} from \"@react-typed-forms/schemas\";\n\nexport function createDefaultVisibilityRenderer() {\n return createVisibilityRenderer((props) => <DefaultVisibility {...props} />);\n}\n\nexport function DefaultVisibility({\n visibility,\n children,\n className,\n style,\n divRef,\n}: VisibilityRendererProps) {\n const v = visibility.value;\n useEffect(() => {\n if (v) {\n visibility.setValue((ex) => ({ visible: v.visible, showing: v.visible }));\n }\n }, [v?.visible]);\n return v?.visible ? (\n <div className={clsx(className)} style={style} ref={divRef}>\n {children}\n </div>\n ) : (\n <></>\n );\n}\n","import { Control, useComputed } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport {\n coerceToString,\n ControlDataContext,\n createDataRenderer,\n DataRenderType,\n getJsonPath,\n getRootDataNode,\n JsonataRenderOptions,\n rendererClass,\n SchemaDataNode,\n useJsonataExpression,\n} from \"@react-typed-forms/schemas\";\n\nexport function createJsonataRenderer(className?: string) {\n return createDataRenderer(\n (p) => (\n <JsonataRenderer\n renderOptions={p.renderOptions as JsonataRenderOptions}\n className={rendererClass(p.className, className)}\n dataNode={p.dataNode}\n dataContext={p.dataContext}\n control={p.control}\n readonly={p.readonly}\n />\n ),\n { renderType: DataRenderType.Jsonata },\n );\n}\n\nexport function JsonataRenderer({\n control,\n renderOptions,\n readonly,\n className,\n dataContext,\n dataNode,\n}: {\n control: Control<any>;\n renderOptions: JsonataRenderOptions;\n className?: string;\n dataContext: ControlDataContext;\n dataNode: SchemaDataNode;\n readonly: boolean;\n}) {\n const sdn = dataNode.elementIndex != null ? dataNode : dataContext.parentNode;\n const bindings = useComputed(() => ({\n value: control.value,\n readonly,\n disabled: control.disabled,\n formData: dataContext.formData,\n dataPath: getJsonPath(dataNode),\n }));\n const rendered = useJsonataExpression(\n renderOptions.expression,\n getRootDataNode(sdn).control!,\n getJsonPath(sdn),\n bindings,\n coerceToString,\n );\n return (\n <div\n className={className}\n dangerouslySetInnerHTML={{ __html: rendered.value }}\n />\n );\n}\n","import {\n createDataRenderer,\n DataRenderType,\n FieldType,\n getLastDefinedValue,\n getNullToggler,\n} from \"@react-typed-forms/schemas\";\n\nexport function createNullToggleRenderer() {\n return createDataRenderer(\n ({ control, field, renderOptions, ...props }, renderers) => {\n const lastDefined = getLastDefinedValue(control);\n if (lastDefined.current.value == null)\n lastDefined.value = props.definition.defaultValue;\n const nullControl = getNullToggler(control);\n nullControl.disabled = props.readonly;\n return (layout) => {\n return renderers.renderData({\n ...props,\n control: nullControl,\n field: { ...field, type: FieldType.Bool },\n renderOptions: { type: DataRenderType.Checkbox },\n })(layout);\n };\n },\n );\n}\n","import clsx from \"clsx\";\nimport React, { Fragment, ReactNode } from \"react\";\nimport { RenderElements, useTrackedComponent } from \"@react-typed-forms/core\";\nimport {\n ActionRendererProps,\n applyArrayLengthRestrictions,\n ArrayActionOptions,\n ArrayRendererProps,\n ArrayRendererRegistration,\n ArrayRenderOptions,\n ControlDataContext,\n ControlDefinition,\n ControlDefinitionType,\n createArrayActions,\n createDataRenderer,\n DataControlDefinition,\n DataRendererProps,\n DataRendererRegistration,\n DataRenderType,\n EvalExpressionHook,\n FormNode,\n FormRenderer,\n getLengthRestrictions,\n GroupedControlsDefinition,\n GroupRenderType,\n isArrayRenderer,\n isCompoundField,\n lookupDataNode,\n makeHookDepString,\n mergeObjects,\n nodeForControl,\n SchemaDataNode,\n} from \"@react-typed-forms/schemas\";\n\nexport function createDefaultArrayDataRenderer(\n defaultActions?: ArrayActionOptions,\n): DataRendererRegistration {\n return createDataRenderer(\n (props, renderers) => {\n return (\n <DataArrayRenderer\n dataProps={props}\n renderers={renderers}\n defaultActions={defaultActions}\n />\n );\n },\n { renderType: DataRenderType.Array, collection: true },\n );\n}\n\nexport function DataArrayRenderer({\n dataProps,\n renderers,\n defaultActions,\n}: {\n renderers: FormRenderer;\n dataProps: DataRendererProps;\n defaultActions?: ArrayActionOptions;\n}) {\n const {\n renderOptions,\n control,\n field,\n readonly,\n designMode,\n required,\n renderChild,\n definition,\n className,\n style,\n useChildVisibility,\n dataContext,\n formNode,\n } = dataProps;\n const { addText, noAdd, noRemove, noReorder, removeText } = mergeObjects(\n isArrayRenderer(renderOptions) ? renderOptions : ({} as ArrayRenderOptions),\n defaultActions as ArrayRenderOptions,\n );\n const childOptions = isArrayRenderer(renderOptions)\n ? renderOptions.childOptions\n : undefined;\n\n const renderAsElement = !isCompoundField(field);\n const childDefinition: FormNode = nodeForControl(\n !renderAsElement\n ? ({\n type: ControlDefinitionType.Group,\n children: definition.children,\n groupOptions: { type: GroupRenderType.Standard, hideTitle: true },\n } as GroupedControlsDefinition)\n : ({\n type: ControlDefinitionType.Data,\n field: definition.field,\n children: definition.children,\n renderOptions: childOptions ?? { type: DataRenderType.Standard },\n hideTitle: true,\n } as DataControlDefinition),\n formNode.tree,\n );\n\n const visibilities = (definition.children ?? []).map(\n (x) => [useChildVisibility(x, undefined, true), x] as const,\n );\n const deps = makeHookDepString(visibilities, (x) => x[0].deps);\n const Entry = useTrackedComponent(RenderEntry, [deps]);\n\n const arrayProps = {\n ...createArrayActions(control.as(), field, {\n addText,\n removeText,\n noAdd,\n noRemove,\n readonly,\n disabled: control.disabled,\n designMode,\n }),\n required,\n renderElement: (i, wrap) => (\n <Entry\n index={i}\n renderChildElement={renderChildElement}\n dataContext={dataContext}\n visibilities={visibilities}\n wrap={wrap}\n />\n ),\n className: className ? className : undefined,\n style,\n ...getLengthRestrictions(definition),\n } satisfies ArrayRendererProps;\n\n return renderers.renderArray(arrayProps);\n\n function renderChildElement(i: number, elementNode: SchemaDataNode) {\n return renderChild(\n control.elements?.[i].uniqueId ?? i,\n childDefinition,\n renderAsElement\n ? {\n elementIndex: i,\n }\n : { parentDataNode: elementNode },\n );\n }\n}\n\nfunction RenderEntry({\n index: i,\n renderChildElement,\n visibilities,\n wrap,\n dataContext,\n}: {\n index: number;\n renderChildElement: (i: number, element: SchemaDataNode) => ReactNode;\n visibilities: (readonly [EvalExpressionHook<boolean>, ControlDefinition])[];\n dataContext: ControlDataContext;\n wrap: (n: ReactNode) => ReactNode;\n}) {\n const elementNode = dataContext.dataNode!.getChildElement(i);\n const childVis = visibilities.map(\n ([hook, def]) =>\n hook.runHook(\n {\n ...dataContext,\n parentNode: elementNode,\n dataNode: lookupDataNode(def, elementNode),\n },\n hook.state,\n ).value,\n );\n const anyVisible = childVis.length == 0 || childVis.some((x) => x === true);\n if (!anyVisible) return undefined;\n return wrap(renderChildElement(i, elementNode));\n}\n\nexport interface DefaultArrayRendererOptions extends ArrayActionOptions {\n className?: string;\n removableClass?: string;\n childClass?: string;\n removableChildClass?: string;\n removeActionClass?: string;\n addActionClass?: string;\n}\n\nexport function createDefaultArrayRenderer(\n options?: DefaultArrayRendererOptions,\n): ArrayRendererRegistration {\n return {\n render: (props, { renderAction }) => (\n <DefaultArrayRenderer\n {...props}\n {...options}\n renderAction={renderAction}\n />\n ),\n type: \"array\",\n };\n}\n\nexport interface DefaultArrayRendererProps\n extends DefaultArrayRendererOptions,\n ArrayRendererProps {\n renderAction: (props: ActionRendererProps) => ReactNode;\n}\n\nexport function DefaultArrayRenderer(props: DefaultArrayRendererProps) {\n const {\n renderElement,\n className,\n removableClass,\n childClass,\n removableChildClass,\n removeActionClass,\n addActionClass,\n arrayControl,\n renderAction,\n style,\n } = props;\n const { addAction, removeAction } = applyArrayLengthRestrictions(props);\n return (\n <div style={style}>\n <div className={clsx(className, removeAction && removableClass)}>\n <RenderElements control={arrayControl}>\n {(_, x) =>\n renderElement(x, (children) =>\n removeAction ? (\n <>\n <div className={clsx(childClass, removableChildClass)}>\n {children}\n </div>\n <div className={removeActionClass}>\n {renderAction(removeAction(x))}\n </div>\n </>\n ) : (\n <div className={childClass}>{children}</div>\n ),\n )\n }\n </RenderElements>\n </div>\n {addAction && (\n <div className={addActionClass}>{renderAction(addAction)}</div>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport {\n Control,\n controlValues,\n removeElement,\n useControl,\n useControlEffect,\n} from \"@react-typed-forms/core\";\nimport {\n AutocompleteClasses,\n createDataRenderer,\n DataRenderType,\n FieldOption,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport { useAutocomplete, UseAutocompleteProps } from \"@mui/base\";\nimport clsx from \"clsx\";\n\nexport interface AutocompleteRendererOptions {\n className?: string;\n listContainerClass?: string;\n listEntryClass?: string;\n chipContainerClass?: string;\n chipCloseButtonClass?: string;\n}\n\nexport interface AutocompleteProps<A, Multiple extends boolean>\n extends UseAutocompleteProps<A, Multiple, false, true> {\n control: Control<any>;\n className?: string;\n classes: AutocompleteRendererOptions;\n controlClasses?: AutocompleteClasses;\n}\n\nconst inputClass =\n \"leading-[1.5] text-surface-900 bg-[inherit] border-0 rounded-[inherit] px-3 py-2 outline-0 grow shrink-0 basis-auto focus:outline-0 focus:ring-0 focus:shadow-none\";\n\nexport function createAutocompleteRenderer(\n options: AutocompleteRendererOptions = {},\n) {\n return createDataRenderer(\n (p) => {\n return p.field.collection ? (\n <MultipleAutocomplete\n options={p.options ?? []}\n control={p.control}\n className={rendererClass(p.className, options.className)}\n classes={options}\n controlClasses={p.renderOptions as AutocompleteClasses}\n readOnly={p.readonly}\n id={p.id}\n />\n ) : (\n <SingleAutocomplete\n options={p.options ?? []}\n control={p.control}\n className={rendererClass(p.className, options.className)}\n classes={options}\n controlClasses={p.renderOptions as AutocompleteClasses}\n readOnly={p.readonly}\n id={p.id}\n />\n );\n },\n {\n renderType: DataRenderType.Autocomplete,\n },\n );\n}\n\nfunction SingleAutocomplete({\n ...props\n}: AutocompleteProps<FieldOption | string, false>) {\n const { id, control, className, readOnly, classes, controlClasses } = props;\n const { disabled } = control;\n\n const inputControl = useControl<string>(\"\");\n const selectedOptionControl = useControl<string | FieldOption | null>(null);\n\n const listContainerClass = rendererClass(\n controlClasses?.listContainerClass,\n classes.listContainerClass,\n );\n\n const listEntryClass = rendererClass(\n controlClasses?.listEntryClass,\n classes.listEntryClass,\n );\n\n useControlEffect(\n controlValues(inputControl, selectedOptionControl),\n ([text, selected]) => {\n control.value = selected\n ? typeof selected === \"string\"\n ? selected\n : selected.value\n : text;\n },\n );\n\n const {\n getRootProps,\n getInputProps,\n getListboxProps,\n getOptionProps,\n groupedOptions,\n popupOpen,\n focused,\n getPopupIndicatorProps,\n } = useAutocomplete({\n freeSolo: true,\n multiple: false,\n value: selectedOptionControl.value,\n inputValue: inputControl.value,\n getOptionLabel: (v) => (typeof v === \"string\" ? v : v.name),\n filterOptions: (o, s) =>\n o.filter((o) => {\n const label = typeof o === \"string\" ? o : o.name;\n return label.toLowerCase().includes(s.inputValue.toLowerCase());\n }),\n onInputChange: (_, v, reason) => {\n inputControl.value = v;\n if (reason === \"input\") selectedOptionControl.value = null;\n },\n onChange: (_, v, reason) => {\n if (reason === \"selectOption\") {\n selectedOptionControl.value = v;\n }\n },\n ...props,\n });\n\n return (\n <div id={id} className={\"relative\"} {...getRootProps()}>\n <div\n className={clsx(\n className,\n focused\n ? \"border-primary-400 shadow-[0_0_0_3px_transparent] shadow-primary-200\"\n : \"shadow-[0_2px_2px_transparent] shadow-surface-50\",\n )}\n >\n <input\n type={\"text\"}\n {...getInputProps()}\n placeholder={controlClasses?.placeholder ?? \"\"}\n className={inputClass}\n />\n\n <button\n {...getPopupIndicatorProps()}\n disabled={disabled || readOnly}\n className={\n \"outline-0 shadow-none border-0 py-0 px-0.5 bg-transparent pr-[10px]\"\n }\n >\n <li\n className={clsx(\n \"fa-solid fa-angle-down\",\n \"text-primary-500\",\n popupOpen && \"rotate-180\",\n )}\n />\n </button>\n </div>\n {groupedOptions.length > 0 && popupOpen && (\n <ul {...getListboxProps()} className={listContainerClass}>\n {(groupedOptions as FieldOption[]).map((option, index) => {\n const optionProps = getOptionProps({ option, index });\n return (\n <li\n {...optionProps}\n key={optionProps.key}\n className={listEntryClass}\n >\n {option.name}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n}\n\nfunction MultipleAutocomplete({\n ...props\n}: AutocompleteProps<FieldOption, true>) {\n const { id, control, className, readOnly, classes, controlClasses } = props;\n const { disabled } = control;\n\n const inputControl = useControl<string>(\"\");\n const selectedOptionsControl = useControl<(string | FieldOption)[] | null>(\n null,\n );\n\n const listContainerClass = rendererClass(\n controlClasses?.listContainerClass,\n classes.listContainerClass,\n );\n const listEntryClass = rendererClass(\n controlClasses?.listEntryClass,\n classes.listEntryClass,\n );\n\n const chipContainerClass = rendererClass(\n controlClasses?.chipContainerClass,\n classes.chipContainerClass,\n );\n\n const chipCloseButtonClass = rendererClass(\n controlClasses?.chipCloseButtonClass,\n classes.chipCloseButtonClass,\n );\n\n useControlEffect(\n controlValues(inputControl, selectedOptionsControl),\n ([text, selected]) => {\n const selectedValues =\n selected?.map((v) => {\n return typeof v === \"string\" ? v : v.value;\n }) ?? [];\n control.value = text ? selectedValues.concat(text) : selectedValues;\n },\n );\n\n const {\n getRootProps,\n getInputProps,\n getListboxProps,\n getOptionProps,\n groupedOptions,\n popupOpen,\n focused,\n getPopupIndicatorProps,\n } = useAutocomplete({\n value: selectedOptionsControl.value ?? [],\n inputValue: inputControl.value,\n freeSolo: true,\n multiple: true,\n getOptionLabel: (v) => (typeof v === \"string\" ? v : v.name),\n filterOptions: (o, s) =>\n o.filter((o) => {\n const label = typeof o === \"string\" ? o : o.name;\n return label.toLowerCase().includes(s.inputValue.toLowerCase());\n }),\n onInputChange: (_, v) => {\n inputControl.value = v;\n },\n onChange: (_, v, reason) => {\n if (reason === \"selectOption\" || reason === \"removeOption\") {\n selectedOptionsControl.value = v;\n }\n },\n ...props,\n });\n\n return (\n <div id={id} className={\"relative\"} {...getRootProps()}>\n <div\n className={clsx(\n className,\n focused\n ? \"border-primary-400 shadow-[0_0_0_3px_transparent] shadow-primary-200\"\n : \"shadow-[0_2px_2px_transparent] shadow-surface-50\",\n )}\n >\n <div className={\"flex flex-1 flex-row flex-wrap\"}>\n {selectedOptionsControl.value?.map((v) => (\n <Chip\n key={typeof v === \"string\" ? v : v.name}\n text={typeof v === \"string\" ? v : v.name}\n chipContainerClass={chipContainerClass}\n chipCloseButtonClass={chipCloseButtonClass}\n onDeleteClick={() => {\n const c = selectedOptionsControl.elements.find(\n (x) => x.value == v,\n );\n if (c) removeElement(selectedOptionsControl, c);\n }}\n />\n ))}\n <input\n type={\"text\"}\n {...getInputProps()}\n placeholder={controlClasses?.placeholder ?? \"\"}\n className={clsx(inputClass)}\n />\n </div>\n\n <button\n {...getPopupIndicatorProps()}\n disabled={disabled || readOnly}\n className={\n \"outline-0 shadow-none border-0 py-0 px-0.5 bg-transparent pr-[10px]\"\n }\n >\n <i\n className={clsx(\n \"fa-solid fa-angle-down\",\n \"text-primary-500\",\n popupOpen && \"rotate-180\",\n )}\n />\n </button>\n </div>\n {groupedOptions.length > 0 && popupOpen && (\n <ul {...getListboxProps()} className={listContainerClass}>\n {(groupedOptions as FieldOption[]).map((option, index) => {\n const optionProps = getOptionProps({ option, index });\n return (\n <li\n {...optionProps}\n key={optionProps.key}\n className={listEntryClass}\n >\n {option.name}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n}\n\nfunction Chip({\n text,\n chipContainerClass,\n chipCloseButtonClass,\n onDeleteClick,\n}: {\n text: string;\n chipContainerClass?: string;\n chipCloseButtonClass?: string;\n onDeleteClick?: () => void;\n}) {\n return (\n <div className={chipContainerClass}>\n {text}\n <i\n className={chipCloseButtonClass}\n onClick={() => {\n onDeleteClick?.();\n }}\n />\n </div>\n );\n}\n","import { Control, setFields, useControl } from \"@react-typed-forms/core\";\nimport {\n addMissingControlsForSchema,\n buildSchema,\n ControlDefinitionExtension,\n createDataRenderer,\n FormRenderer,\n groupedControl,\n makeSchemaDataNode,\n RenderOptions,\n rootSchemaNode,\n schemaDataForFieldRef,\n schemaForFieldRef,\n SchemaNode,\n stringField,\n useControlRendererComponent,\n} from \"@react-typed-forms/schemas\";\nimport React, { useMemo } from \"react\";\n\nexport interface ValueForFieldRenderOptions extends RenderOptions {\n type: \"ValueForField\";\n fieldRef?: string | null;\n}\n\nconst RenderType = \"ValueForField\";\n\nexport const ValueForFieldExtension: ControlDefinitionExtension = {\n RenderOptions: {\n value: RenderType,\n name: \"Value For Field\",\n fields: buildSchema<Omit<ValueForFieldRenderOptions, \"type\">>({\n fieldRef: stringField(\"Field Reference\"),\n }),\n },\n};\n\nexport interface ValueForFieldOptions {\n schema: SchemaNode;\n}\n\nexport function createValueForFieldRenderer(options: ValueForFieldOptions) {\n return createDataRenderer(\n (o, renderer) => {\n const { fieldRef } = o.renderOptions as ValueForFieldRenderOptions;\n const actualFieldRef = fieldRef\n ? (schemaDataForFieldRef(fieldRef, o.dataContext.parentNode)?.control\n ?.value as string)\n : undefined;\n const node = actualFieldRef\n ? schemaForFieldRef(actualFieldRef, options.schema)\n : undefined;\n return node ? (\n <ValueForField renderer={renderer} schema={node} control={o.control} />\n ) : (\n <>{actualFieldRef ? \"No schema node for \" + actualFieldRef : \"\"}</>\n );\n },\n {\n renderType: RenderType,\n },\n );\n}\n\nfunction ValueForField({\n schema,\n renderer,\n control,\n}: {\n schema: SchemaNode;\n renderer: FormRenderer;\n control: Control<any>;\n}) {\n const value = useControl({ default: undefined }, undefined, (e) =>\n setFields(e, { default: control }),\n );\n const [controls, rootSchema] = useMemo(() => {\n const rootSchema = rootSchemaNode([\n {\n ...schema.field,\n field: \"default\",\n required: false,\n notNullable: false,\n onlyForTypes: null,\n defaultValue: undefined,\n },\n ]);\n return [addMissingControlsForSchema(rootSchema, []), rootSchema];\n }, [schema]);\n const Render = useControlRendererComponent(\n groupedControl(controls),\n renderer,\n { disabled: control.disabled },\n makeSchemaDataNode(rootSchema, value),\n );\n return <Render />;\n}\n","import {\n AdornmentPlacement,\n AdornmentRendererRegistration,\n appendMarkupAt,\n ControlAdornmentType,\n ControlDataContext,\n createAdornmentRenderer,\n getAllValues,\n getIsEditing,\n getNullToggler,\n OptionalAdornment,\n wrapMarkup,\n} from \"@react-typed-forms/schemas\";\nimport { Control, Fcheckbox, newControl } from \"@react-typed-forms/core\";\nimport React, { ReactNode } from \"react\";\n\nexport interface OptionalRenderProps {\n allValues: Control<unknown[]>;\n editing: Control<boolean | undefined>;\n children: ReactNode;\n adornment: OptionalAdornment;\n nullToggler: Control<boolean>;\n dataContext: ControlDataContext;\n options: DefaultOptionalAdornmentOptions;\n}\nexport interface DefaultOptionalAdornmentOptions {\n className?: string;\n checkClass?: string;\n childWrapperClass?: string;\n multiValuesClass?: string;\n multiValuesText?: string;\n nullWrapperClass?: string;\n setNullText?: string;\n defaultPlacement?: AdornmentPlacement;\n hideEdit?: boolean;\n customRender?: (props: OptionalRenderProps) => ReactNode;\n}\nexport function createOptionalAdornment(\n options: DefaultOptionalAdornmentOptions = {},\n): AdornmentRendererRegistration {\n return createAdornmentRenderer(\n (props, renderers) => {\n const { dataContext } = props;\n const dataControl =\n dataContext.dataNode?.control ?? newControl(undefined);\n const adornment = props.adornment as OptionalAdornment;\n const editing = getIsEditing(dataControl);\n const isEditing = editing.value;\n const nullToggler = getNullToggler(dataControl);\n if (isEditing === undefined && adornment.editSelectable)\n editing.value = false;\n dataControl.disabled =\n !isEditing || !!(adornment.allowNull && !nullToggler.value);\n return {\n apply: (rl) => {\n if (props.formOptions.readonly) return rl;\n if (!options.hideEdit && adornment.editSelectable)\n appendMarkupAt(\n adornment.placement ??\n options.defaultPlacement ??\n AdornmentPlacement.LabelStart,\n <Fcheckbox control={editing} className={options.checkClass} />,\n )(rl);\n wrapMarkup(\"children\", (children) =>\n options.customRender ? (\n options.customRender({\n allValues: getAllValues(dataControl),\n editing,\n children,\n adornment,\n nullToggler,\n dataContext,\n options,\n })\n ) : (\n <OptionalEditRenderer\n children={children}\n options={options}\n editing={editing.as()}\n adornment={adornment}\n dataControl={dataControl}\n />\n ),\n )(rl);\n },\n priority: 0,\n adornment,\n };\n },\n { adornmentType: ControlAdornmentType.Optional },\n );\n}\n\nexport function OptionalEditRenderer({\n children,\n options,\n adornment,\n editing,\n dataControl,\n}: {\n options: DefaultOptionalAdornmentOptions;\n children: ReactNode;\n adornment: OptionalAdornment;\n editing: Control<boolean | undefined>;\n dataControl: Control<any>;\n}) {\n const nullToggler = getNullToggler(dataControl);\n const allValues = getAllValues(dataControl);\n const multipleValues = allValues.value.length > 1;\n const nullEdit = adornment.allowNull ? (\n <div className={options.nullWrapperClass}>\n <Fcheckbox\n control={nullToggler}\n className={options.checkClass}\n notValue\n />\n <span>{options.setNullText ?? \"Null\"}</span>\n </div>\n ) : undefined;\n return (\n <div className={options.className}>\n {multipleValues && editing.value === false ? (\n <div className={options.multiValuesClass}>\n {options.multiValuesText ?? \"Differing values\"}\n </div>\n ) : (\n <div className={options.childWrapperClass}>\n {nullEdit}\n {children}\n </div>\n )}\n </div>\n );\n}\n","import React, { useRef } from \"react\";\nimport { useControlEffect } from \"@react-typed-forms/core\";\nimport {\n createDataRenderer,\n DataRendererProps,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\n\nexport function createMultilineFieldRenderer(className?: string) {\n return createDataRenderer((p) => (\n <MultilineTextfield\n {...p}\n className={rendererClass(p.className, className)}\n />\n ));\n}\n\nexport function MultilineTextfield({ control, className }: DataRendererProps) {\n const codeRef = useRef<HTMLElement | null>(null);\n useControlEffect(\n () => control.value,\n (v) => {\n const c = codeRef.current;\n if (c && c.textContent !== v) {\n c.textContent = v;\n }\n },\n true,\n );\n return (\n <code\n contentEditable={!control.disabled}\n className={className}\n onInput={(t) => (control.value = t.currentTarget.textContent)}\n ref={codeRef}\n />\n );\n}\n","import {\n createDefaultDisplayRenderer,\n DefaultDisplayRendererOptions,\n} from \"./components/DefaultDisplay\";\nimport {\n createDefaultLayoutRenderer,\n DefaultLayoutRendererOptions,\n} from \"./components/DefaultLayout\";\nimport { createDefaultVisibilityRenderer } from \"./components/DefaultVisibility\";\nimport React, { Fragment, ReactElement, ReactNode } from \"react\";\nimport clsx from \"clsx\";\nimport {\n createSelectRenderer,\n SelectRendererOptions,\n} from \"./components/SelectDataRenderer\";\nimport { DefaultDisplayOnly } from \"./components/DefaultDisplayOnly\";\nimport {\n Control,\n useControlEffect,\n useTrackedComponent,\n} from \"@react-typed-forms/core\";\nimport { ControlInput, createInputConversion } from \"./components/ControlInput\";\nimport {\n createDefaultArrayDataRenderer,\n createDefaultArrayRenderer,\n DefaultArrayRendererOptions,\n} from \"./components/DefaultArrayRenderer\";\nimport {\n CheckRendererOptions,\n createCheckboxRenderer,\n createCheckListRenderer,\n createRadioRenderer,\n} from \"./components/CheckRenderer\";\nimport { DefaultAccordion } from \"./components/DefaultAccordion\";\nimport { createNullToggleRenderer } from \"./components/NullToggle\";\nimport { createMultilineFieldRenderer } from \"./components/MultilineTextfield\";\nimport { createJsonataRenderer } from \"./components/JsonataRenderer\";\nimport {\n ActionRendererProps,\n ActionRendererRegistration,\n AdornmentPlacement,\n AdornmentRendererRegistration,\n appendMarkupAt,\n ArrayActionOptions,\n ControlDataContext,\n createActionRenderer,\n createDataRenderer,\n DataRendererRegistration,\n DataRenderType,\n DefaultRenderers,\n FieldOption,\n FieldType,\n hasOptions,\n isAccordionAdornment,\n isDataGroupRenderer,\n isDisplayOnlyRenderer,\n isIconAdornment,\n isOptionalAdornment,\n isSetFieldAdornment,\n isTextfieldRenderer,\n LabelRendererRegistration,\n LabelType,\n rendererClass,\n schemaDataForFieldRef,\n SetFieldAdornment,\n useDynamicHooks,\n wrapLayout,\n} from \"@react-typed-forms/schemas\";\nimport {\n createDefaultGroupRenderer,\n DefaultGroupRendererOptions,\n} from \"./components/DefaultGroupRenderer\";\nimport {\n AutocompleteRendererOptions,\n createAutocompleteRenderer,\n} from \"./components/AutocompleteRenderer\";\nimport {\n createOptionalAdornment,\n DefaultOptionalAdornmentOptions,\n} from \"./adornments/optionalAdornment\";\n\nexport interface DefaultRendererOptions {\n data?: DefaultDataRendererOptions;\n display?: DefaultDisplayRendererOptions;\n action?: DefaultActionRendererOptions;\n array?: DefaultArrayRendererOptions;\n group?: DefaultGroupRendererOptions;\n label?: DefaultLabelRendererOptions;\n adornment?: DefaultAdornmentRendererOptions;\n layout?: DefaultLayoutRendererOptions;\n}\n\nexport interface DefaultActionRendererOptions {\n className?: string;\n renderContent?: (\n actionText: string,\n actionId: string,\n actionData: any,\n ) => ReactNode;\n}\n\nexport function createButtonActionRenderer(\n actionId: string | string[] | undefined,\n options: DefaultActionRendererOptions = {},\n): ActionRendererRegistration {\n return createActionRenderer(\n actionId,\n ({\n onClick,\n actionText,\n className,\n style,\n actionId,\n actionData,\n disabled,\n }: ActionRendererProps) => {\n return (\n <button\n className={rendererClass(className, options.className)}\n disabled={disabled}\n style={style}\n onClick={onClick}\n >\n {options.renderContent?.(actionText, actionId, actionData) ??\n actionText}\n </button>\n );\n },\n );\n}\n\nexport const DefaultBoolOptions: FieldOption[] = [\n { name: \"Yes\", value: true },\n { name: \"No\", value: false },\n];\n\nexport interface DefaultDataRendererOptions {\n inputClass?: string;\n displayOnlyClass?: string;\n selectOptions?: SelectRendererOptions;\n checkboxOptions?: CheckRendererOptions;\n checkOptions?: CheckRendererOptions;\n radioOptions?: CheckRendererOptions;\n checkListOptions?: CheckRendererOptions;\n autocompleteOptions?: AutocompleteRendererOptions;\n booleanOptions?: FieldOption[];\n optionRenderer?: DataRendererRegistration;\n multilineClass?: string;\n jsonataClass?: string;\n arrayOptions?: ArrayActionOptions;\n defaultEmptyText?: string;\n}\n\nexport function createDefaultDataRenderer(\n options: DefaultDataRendererOptions = {},\n): DataRendererRegistration {\n const jsonataRenderer = createJsonataRenderer(options.jsonataClass);\n const nullToggler = createNullToggleRenderer();\n const multilineRenderer = createMultilineFieldRenderer(\n options.multilineClass,\n );\n const checkboxRenderer = createCheckboxRenderer(\n options.checkOptions ?? options.checkboxOptions,\n );\n const selectRenderer = createSelectRenderer(options.selectOptions);\n const radioRenderer = createRadioRenderer(\n options.radioOptions ?? options.checkOptions,\n );\n const checkListRenderer = createCheckListRenderer(\n options.checkListOptions ?? options.checkOptions,\n );\n const {\n inputClass,\n booleanOptions,\n optionRenderer,\n displayOnlyClass,\n defaultEmptyText,\n } = {\n optionRenderer: selectRenderer,\n booleanOptions: DefaultBoolOptions,\n ...options,\n };\n const arrayRenderer = createDefaultArrayDataRenderer(options.arrayOptions);\n\n const autocompleteRenderer = createAutocompleteRenderer(\n options.autocompleteOptions,\n );\n\n return createDataRenderer((props, renderers) => {\n const { field } = props;\n const fieldType = field.type;\n const renderOptions = props.renderOptions;\n let renderType = renderOptions.type;\n if (\n field.collection &&\n props.elementIndex == null &&\n (renderType == DataRenderType.Standard ||\n renderType == DataRenderType.Array)\n ) {\n return arrayRenderer.render(props, renderers);\n }\n if (fieldType === FieldType.Compound) {\n const groupOptions = (isDataGroupRenderer(renderOptions)\n ? renderOptions.groupOptions\n : undefined) ?? { type: \"Standard\", hideTitle: true };\n return renderers.renderGroup({ ...props, renderOptions: groupOptions });\n }\n if (props.displayOnly || isDisplayOnlyRenderer(renderOptions))\n return (p) => {\n return {\n ...p,\n className: \"@ \" + rendererClass(p.className, displayOnlyClass),\n children: (\n <DefaultDisplayOnly\n field={props.field}\n schemaInterface={props.dataContext.schemaInterface}\n control={props.control}\n className={props.className}\n style={props.style}\n emptyText={\n isDisplayOnlyRenderer(renderOptions) && renderOptions.emptyText\n ? renderOptions.emptyText\n : defaultEmptyText\n }\n />\n ),\n };\n };\n const isBool = fieldType === FieldType.Bool;\n if (booleanOptions != null && isBool && props.options == null) {\n return renderers.renderData({ ...props, options: booleanOptions });\n }\n if (renderType === DataRenderType.Standard && hasOptions(props)) {\n return optionRenderer.render(props, renderers);\n }\n switch (renderType) {\n case DataRenderType.NullToggle:\n return nullToggler.render(props, renderers);\n case DataRenderType.CheckList:\n return checkListRenderer.render(props, renderers);\n case DataRenderType.Dropdown:\n return selectRenderer.render(props, renderers);\n case DataRenderType.Radio:\n return radioRenderer.render(props, renderers);\n case DataRenderType.Checkbox:\n return checkboxRenderer.render(props, renderers);\n case DataRenderType.Jsonata:\n return jsonataRenderer.render(props, renderers);\n case DataRenderType.Autocomplete:\n return autocompleteRenderer.render(props, renderers);\n }\n if (fieldType == FieldType.Any) {\n return (\n <>\n Can't render field: {field.displayName ?? field.field} ({renderType})\n </>\n );\n }\n if (isTextfieldRenderer(renderOptions) && renderOptions.multiline)\n return multilineRenderer.render(props, renderers);\n const placeholder = isTextfieldRenderer(renderOptions)\n ? renderOptions.placeholder\n : undefined;\n\n return (\n <ControlInput\n className={rendererClass(props.className, inputClass)}\n style={props.style}\n id={props.id}\n readOnly={props.readonly}\n control={props.control}\n placeholder={placeholder ?? undefined}\n convert={createInputConversion(props.field.type)}\n />\n );\n });\n}\n\nexport interface DefaultAccordionRendererOptions {\n className?: string;\n titleClass?: string;\n togglerClass?: string;\n iconOpenClass?: string;\n iconClosedClass?: string;\n renderTitle?: (\n title: string | undefined,\n current: Control<boolean>,\n ) => ReactNode;\n renderToggler?: (current: Control<boolean>, title: ReactNode) => ReactNode;\n useCss?: boolean;\n}\n\nexport interface DefaultAdornmentRendererOptions {\n accordion?: DefaultAccordionRendererOptions;\n optional?: DefaultOptionalAdornmentOptions;\n}\n\nexport function createDefaultAdornmentRenderer(\n options: DefaultAdornmentRendererOptions = {},\n): AdornmentRendererRegistration {\n const optional = createOptionalAdornment(options.optional);\n return {\n type: \"adornment\",\n render: (props, renderers) => {\n if (isOptionalAdornment(props.adornment)) {\n return optional.render(props, renderers);\n }\n const { adornment, designMode, dataContext, useExpr } = props;\n return {\n apply: (rl) => {\n if (isSetFieldAdornment(adornment) && useExpr) {\n const hook = useExpr(adornment.expression, (x) => x);\n const dynamicHooks = useDynamicHooks({ value: hook });\n const SetFieldWrapper = useTrackedComponent(setFieldWrapper, [\n dynamicHooks,\n ]);\n return wrapLayout((x) => (\n <SetFieldWrapper\n children={x}\n parentContext={dataContext}\n adornment={adornment}\n />\n ))(rl);\n\n function setFieldWrapper({\n children,\n adornment,\n parentContext,\n }: {\n children: ReactNode;\n adornment: SetFieldAdornment;\n parentContext: ControlDataContext;\n }) {\n const { value } = dynamicHooks(parentContext);\n const fieldNode = schemaDataForFieldRef(\n adornment.field,\n parentContext.parentNode,\n );\n const otherField = fieldNode.control;\n const always = !adornment.defaultOnly;\n useControlEffect(\n () => [value?.value, otherField?.value == null],\n ([v]) => {\n otherField?.setValue((x) => (always || x == null ? v : x));\n },\n true,\n );\n return children;\n }\n }\n if (isIconAdornment(adornment)) {\n return appendMarkupAt(\n adornment.placement ?? AdornmentPlacement.ControlStart,\n <i className={adornment.iconClass} />,\n )(rl);\n }\n if (isAccordionAdornment(adornment)) {\n return wrapLayout((x) => (\n <DefaultAccordion\n renderers={renderers}\n children={x}\n accordion={adornment}\n contentStyle={rl.style}\n contentClassName={rl.className}\n designMode={designMode}\n dataContext={dataContext}\n {...options.accordion}\n />\n ))(rl);\n }\n },\n priority: 0,\n adornment,\n };\n },\n };\n}\n\ninterface DefaultLabelRendererOptions {\n className?: string;\n groupLabelClass?: string;\n controlLabelClass?: string;\n requiredElement?: ReactNode;\n labelContainer?: (children: ReactElement) => ReactElement;\n}\n\nexport function createDefaultLabelRenderer(\n options?: DefaultLabelRendererOptions,\n): LabelRendererRegistration {\n const {\n className,\n groupLabelClass,\n controlLabelClass,\n requiredElement,\n labelContainer,\n } = {\n requiredElement: <span> *</span>,\n labelContainer: (c: ReactElement) => c,\n ...options,\n };\n return {\n render: (props, labelStart, labelEnd, renderers) => {\n if (props.type == LabelType.Text) return props.label;\n return labelContainer(\n <>\n <label\n htmlFor={props.forId}\n className={rendererClass(\n props.className,\n clsx(\n className,\n props.type === LabelType.Group && groupLabelClass,\n props.type === LabelType.Control && controlLabelClass,\n ),\n )}\n >\n {labelStart}\n {renderers.renderLabelText(props.label)}\n {props.required && requiredElement}\n </label>\n {labelEnd}\n </>,\n );\n },\n type: \"label\",\n };\n}\n\nexport function createDefaultRenderers(\n options: DefaultRendererOptions = {},\n): DefaultRenderers {\n return {\n data: createDefaultDataRenderer(options.data),\n display: createDefaultDisplayRenderer(options.display),\n action: createButtonActionRenderer(undefined, options.action),\n array: createDefaultArrayRenderer(options.array),\n group: createDefaultGroupRenderer(options.group),\n label: createDefaultLabelRenderer(options.label),\n adornment: createDefaultAdornmentRenderer(options.adornment),\n renderLayout: createDefaultLayoutRenderer(options.layout),\n visibility: createDefaultVisibilityRenderer(),\n };\n}\n\nexport function createClassStyledRenderers() {\n return createDefaultRenderers({\n layout: { className: \"control\" },\n group: { className: \"group\" },\n array: { className: \"control-array\" },\n action: { className: \"action\" },\n data: { inputClass: \"data\" },\n display: { htmlClassName: \"html\", textClassName: \"text\" },\n });\n}\n","import React from \"react\";\n\nimport { DefaultRendererOptions } from \"./createDefaultRenderers\";\n\nexport const defaultTailwindTheme = {\n label: {\n groupLabelClass: \"font-bold\",\n requiredElement: <span className=\"text-red-500\"> *</span>,\n },\n array: {\n removableClass: \"grid grid-cols-[1fr_auto] items-center gap-x-2\",\n childClass: \"grow my-2\",\n addActionClass: \"my-2\",\n },\n group: {\n standardClassName: \"flex flex-col gap-4\",\n gridClassName: \"gap-x-2 gap-y-4\",\n flexClassName: \"gap-2\",\n tabs: {\n className: \"\",\n tabListClass:\n \"flex flex-wrap text-sm font-medium text-center text-gray-500 border-b border-gray-200 dark:border-gray-700 dark:text-gray-400\",\n tabClass: \"me-2\",\n labelClass:\n \"inline-flex items-center justify-center p-4 border-b-2 group\",\n inactiveClass:\n \"border-transparent rounded-t-lg hover:text-gray-600 hover:border-gray-300 dark:hover:text-gray-300 cursor-pointer\",\n activeClass:\n \"text-blue-600 border-blue-600 rounded-t-lg active dark:text-blue-500 dark:border-blue-500\",\n contentClass: \"my-2\",\n },\n },\n action: {\n className: \"bg-primary-500 rounded-lg p-3 text-white\",\n },\n layout: {\n className: \"flex flex-col\",\n errorClass: \"text-sm text-danger-500\",\n },\n data: {\n displayOnlyClass: \"flex flex-row items-center gap-2\",\n checkOptions: {\n className: \"flex items-center gap-4\",\n entryClass: \"flex gap-1 items-center\",\n },\n selectOptions: { emptyText: \"<select>\" },\n multilineClass: \"border p-2 outline-0 whitespace-pre-wrap\",\n autocompleteOptions: {\n className:\n \"w-full flex gap-[5px] pr-[5px] overflow-hidden rounded-lg bg-white border border-solid border-gray-200 hover:border-primary-400 focus-visible:outline-0 shadow-[0_2px_4px_rgb(0_0_0_/_0.05)] min-h-[48px] py-1\",\n listContainerClass:\n \"absolute w-full text-sm box-border p-1.5 my-3 mx-0 min-w-[120px] rounded-xl overflow-auto outline-0 max-h-[300px] z-[1] bg-white border border-solid border-surface-200 text-surface-900 shadow-[0_4px_30px_transparent] shadow-surface-200\",\n listEntryClass:\n \"list-none p-2 rounded-lg cursor-default last-of-type:border-b-0 hover:cursor-pointer hover:bg-primary-100 aria-selected:bg-primary-200 aria-selected:text-primary-900 focused:bg-surface-100 focus-visible:bg-surface-100 focused:text-surface-900 focus-visible:text-surface-900 focus-visible:shadow-[0_0_0_3px_transparent] focus-visible:shadow-primary-200 focused:aria-selected:bg-primary-200 focus-visible:aria-selected:bg-primary-200 focused:aria-selected:text-primary-900 focus-visible:aria-selected:text-primary-900\",\n chipContainerClass:\n \"flex flex-row items-center px-3 py-1 rounded-full bg-surface-100 m-1 gap-2 truncate\",\n chipCloseButtonClass:\n \"fa-solid fa-xmark p-1 bg-surface-300 rounded-full min-w-[24px] flex justify-center text-surface-50 hover:bg-surface-400 hover:text-surface-100 hover:cursor-pointer\",\n },\n },\n adornment: {\n accordion: {\n className: \"flex items-center gap-2 my-2\",\n titleClass: \"cursor-pointer\",\n iconOpenClass: \"fa fa-chevron-up\",\n iconClosedClass: \"fa fa-chevron-down\",\n },\n optional: {\n checkClass: \"m-2\",\n className: \"flex items-center gap-2 w-full\",\n multiValuesClass: \"italic\",\n childWrapperClass: \"grow\",\n },\n },\n} satisfies DefaultRendererOptions;\n"],"names":["_excluded","createDefaultDisplayRenderer","options","render","props","React","createElement","DefaultDisplay","_extends","type","_ref","_effect","_useComponentTracking","data","display","className","style","_objectWithoutPropertiesLoose","DisplayDataType","Icon","clsx","getOverrideClass","value","iconClass","Text","rendererClass","textClassName","coerceToString","text","Html","htmlClassName","dangerouslySetInnerHTML","__html","html","Custom","customId","ControlInput","control","convert","_formControlProps","formControlProps","inputProps","_excluded2","textValue","useControl","toText","useControlEffect","v","onChange","e","target","converted","undefined","createInputConversion","ft","FieldType","String","a","Bool","_a$toString","toString","Int","parseInt","DateTime","Date","Time","l","length","substring","Double","parseFloat","createSelectRenderer","createDataRenderer","asArray","_props$options","SelectDataRenderer","state","id","readonly","required","emptyText","requiredText","createSelectConversion","field","disabled","showEmpty","useState","optionStringMap","useMemo","Object","fromEntries","map","x","optionGroups","Set","filter","group","keys","key","label","o","renderOption","i","name","createRadioRenderer","p","CheckButtons","classes","controlClasses","renderOptions","isChecked","setChecked","c","entryAdornment","fieldOptionAdornment","renderType","DataRenderType","Radio","createCheckListRenderer","Array","isArray","includes","checked","setValue","setIncluded","collection","CheckList","uniqueId","RenderArrayElements","array","useComputed","selOrUnsel","selectedClass","notSelectedClass","entryWrapperClass","onClick","entryClass","checkClass","readOnly","labelClass","htmlFor","elem","included","createCheckboxRenderer","renderer","children","Fcheckbox","as","renderLabel","Checkbox","createDefaultLayoutRenderer","createLayoutRenderer","renderers","layout","renderLayoutParts","wrapLayout","DefaultLayout","divRef","errorControl","meta","scrollElement","errorClass","renderError","controlEnd","controlStart","Fragment","touched","error","DefaultDisplayOnly","schemaInterface","isEmptyValue","DefaultAccordion","accordion","contentStyle","contentClassName","designMode","iconOpenClass","iconClosedClass","renderTitle","t","renderToggler","titleClass","useCss","dataContext","_dataContext$dataNode","dataControl","dataNode","parentNode","open","defaultExpanded","accordionState","isOpen","fullContentStyle","title","renderLabelText","toggler","getAccordionState","TabsGroupRenderer","formNode","renderChild","tabIndex","tabClass","tabListClass","inactiveClass","activeClass","contentClass","currentTab","getChildNodes","renderTabs","tabs","definition","createDefaultGroupRenderer","tabsRenderer","createGroupRenderer","GroupRenderType","Tabs","createTabsRenderer","gridStyles","defaultGridStyles","defaultGridColumns","gridClassName","standardClassName","flexClassName","defaultFlexGap","columns","gridTemplateColumns","isTabsRenderer","isSelectChildRenderer","SelectChildGroupRenderer","gcn","isGridRenderer","isFlexRenderer","gap","flexDirection","direction","flexStyles","useEvalExpression","dynHook","childIndexExpression","Render","useTrackedComponent","ctrl","runHook","childIndex","childDefinitions","deps","createDefaultVisibilityRenderer","createVisibilityRenderer","DefaultVisibility","visibility","useEffect","ex","visible","showing","ref","createJsonataRenderer","JsonataRenderer","Jsonata","sdn","elementIndex","bindings","formData","dataPath","getJsonPath","rendered","useJsonataExpression","expression","getRootDataNode","createNullToggleRenderer","lastDefined","getLastDefinedValue","current","defaultValue","nullControl","getNullToggler","renderData","createDefaultArrayDataRenderer","defaultActions","DataArrayRenderer","dataProps","_definition$children","useChildVisibility","addText","noAdd","noRemove","removeText","mergeObjects","isArrayRenderer","childOptions","renderAsElement","isCompoundField","childDefinition","nodeForControl","ControlDefinitionType","Data","Standard","hideTitle","Group","groupOptions","tree","visibilities","makeHookDepString","Entry","RenderEntry","arrayProps","createArrayActions","renderElement","wrap","index","renderChildElement","getLengthRestrictions","renderArray","elementNode","_control$elements$i$u","_control$elements","elements","parentDataNode","getChildElement","childVis","hook","def","lookupDataNode","some","createDefaultArrayRenderer","renderAction","DefaultArrayRenderer","removableClass","childClass","removableChildClass","removeActionClass","addActionClass","arrayControl","addAction","removeAction","applyArrayLengthRestrictions","RenderElements","_","inputClass","createAutocompleteRenderer","_p$options","_p$options2","MultipleAutocomplete","SingleAutocomplete","Autocomplete","_controlClasses$place","_objectDestructuringEmpty","inputControl","selectedOptionControl","listContainerClass","listEntryClass","controlValues","selected","getRootProps","getInputProps","getListboxProps","getOptionProps","groupedOptions","popupOpen","focused","getPopupIndicatorProps","useAutocomplete","freeSolo","multiple","inputValue","getOptionLabel","filterOptions","s","toLowerCase","onInputChange","reason","placeholder","option","optionProps","_ref2","_effect2","_selectedOptionsContr","_selectedOptionsContr2","_controlClasses$place2","selectedOptionsControl","chipContainerClass","chipCloseButtonClass","_selected$map","selectedValues","concat","Chip","onDeleteClick","find","removeElement","_effect3","RenderType","ValueForFieldExtension","RenderOptions","fields","buildSchema","fieldRef","stringField","createValueForFieldRenderer","_schemaDataForFieldRe","actualFieldRef","schemaDataForFieldRef","node","schemaForFieldRef","schema","ValueForField","default","setFields","controls","rootSchema","rootSchemaNode","notNullable","onlyForTypes","addMissingControlsForSchema","useControlRendererComponent","groupedControl","makeSchemaDataNode","createOptionalAdornment","createAdornmentRenderer","_dataContext$dataNode2","newControl","adornment","editing","getIsEditing","isEditing","nullToggler","editSelectable","allowNull","apply","rl","_adornment$placement","formOptions","hideEdit","appendMarkupAt","placement","defaultPlacement","AdornmentPlacement","LabelStart","wrapMarkup","customRender","allValues","getAllValues","OptionalEditRenderer","priority","adornmentType","ControlAdornmentType","Optional","_options$setNullText","_options$multiValuesT","multipleValues","nullEdit","nullWrapperClass","notValue","setNullText","multiValuesClass","multiValuesText","childWrapperClass","MultilineTextfield","codeRef","useRef","textContent","contentEditable","onInput","currentTarget","createButtonActionRenderer","actionId","createActionRenderer","actionText","actionData","_options$renderConten","renderContent","DefaultBoolOptions","createDefaultDataRenderer","_options$checkOptions","_options$radioOptions","_options$checkListOpt","jsonataRenderer","jsonataClass","multilineRenderer","multilineClass","checkboxRenderer","checkOptions","checkboxOptions","selectRenderer","selectOptions","radioRenderer","radioOptions","checkListRenderer","checkListOptions","booleanOptions","optionRenderer","displayOnlyClass","defaultEmptyText","arrayRenderer","arrayOptions","autocompleteRenderer","autocompleteOptions","fieldType","Compound","isDataGroupRenderer","renderGroup","displayOnly","isDisplayOnlyRenderer","hasOptions","NullToggle","Dropdown","_field$displayName","Any","displayName","isTextfieldRenderer","multiline","createDefaultAdornmentRenderer","optional","isOptionalAdornment","useExpr","isSetFieldAdornment","dynamicHooks","useDynamicHooks","SetFieldWrapper","setFieldWrapper","parentContext","otherField","always","defaultOnly","isIconAdornment","ControlStart","isAccordionAdornment","createDefaultLabelRenderer","groupLabelClass","controlLabelClass","requiredElement","labelContainer","labelStart","labelEnd","LabelType","forId","Control","createDefaultRenderers","action","renderLayout","createClassStyledRenderers","defaultTailwindTheme"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/DefaultDisplay.tsx","../src/components/ControlInput.tsx","../src/components/SelectDataRenderer.tsx","../src/components/CheckRenderer.tsx","../src/components/DefaultLayout.tsx","../src/components/DefaultDisplayOnly.tsx","../src/components/DefaultAccordion.tsx","../src/components/TabsRenderer.tsx","../src/components/DefaultGroupRenderer.tsx","../src/components/DefaultVisibility.tsx","../src/components/JsonataRenderer.tsx","../src/components/NullToggle.tsx","../src/components/DefaultArrayRenderer.tsx","../src/components/AutocompleteRenderer.tsx","../src/components/ValueForFieldRenderer.tsx","../src/adornments/optionalAdornment.tsx","../src/components/MultilineTextfield.tsx","../src/components/ArrayElementRenderer.tsx","../src/createDefaultRenderers.tsx","../src/tailwind.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\nimport {\n coerceToString,\n CustomDisplay,\n DisplayDataType,\n DisplayRendererProps,\n DisplayRendererRegistration,\n getOverrideClass,\n HtmlDisplay,\n IconDisplay,\n rendererClass,\n TextDisplay,\n} from \"@react-typed-forms/schemas\";\n\nexport interface DefaultDisplayRendererOptions {\n textClassName?: string;\n htmlClassName?: string;\n}\n\nexport function createDefaultDisplayRenderer(\n options: DefaultDisplayRendererOptions = {},\n): DisplayRendererRegistration {\n return {\n render: (props) => <DefaultDisplay {...options} {...props} />,\n type: \"display\",\n };\n}\n\nexport function DefaultDisplay({\n data,\n display,\n className,\n style,\n ...options\n}: DefaultDisplayRendererOptions & DisplayRendererProps) {\n switch (data.type) {\n case DisplayDataType.Icon:\n return (\n <i\n style={style}\n className={clsx(\n getOverrideClass(className),\n display ? display.value : (data as IconDisplay).iconClass,\n )}\n />\n );\n case DisplayDataType.Text:\n return (\n <div\n style={style}\n className={rendererClass(className, options.textClassName)}\n >\n {display ? coerceToString(display.value) : (data as TextDisplay).text}\n </div>\n );\n case DisplayDataType.Html:\n return (\n <div\n style={style}\n className={rendererClass(className, options.htmlClassName)}\n dangerouslySetInnerHTML={{\n __html: display\n ? coerceToString(display.value)\n : (data as HtmlDisplay).html,\n }}\n />\n );\n case DisplayDataType.Custom:\n return (\n <div>\n <b>({(data as CustomDisplay).customId})</b>\n </div>\n );\n default:\n return <h1>Unknown display type: {data.type}</h1>;\n }\n}\n","import React from \"react\";\nimport {\n Control,\n formControlProps,\n useControl,\n useControlEffect,\n} from \"@react-typed-forms/core\";\nimport {FieldType} from \"@react-typed-forms/schemas\";\n\nexport function ControlInput({\n control,\n convert,\n ...props\n}: React.InputHTMLAttributes<HTMLInputElement> & {\n control: Control<any>;\n convert: InputConversion;\n}) {\n const { errorText, value, onChange, ...inputProps } =\n formControlProps(control);\n const textValue = useControl(() => toText(value));\n useControlEffect(\n () => control.value,\n (v) => (textValue.value = toText(v)),\n );\n return (\n <input\n {...inputProps}\n type={convert[0]}\n value={textValue.value}\n onChange={(e) => {\n textValue.value = e.target.value;\n const converted = convert[1](e.target.value);\n if (converted !== undefined) control.value = converted;\n }}\n {...props}\n />\n );\n\n function toText(value: any) {\n return value == null ? \"\" : convert[2](value);\n }\n}\n\ntype InputConversion = [\n string,\n (s: string) => any,\n (a: any) => string | number,\n];\n\nexport function createInputConversion(ft: string): InputConversion {\n switch (ft) {\n case FieldType.String:\n return [\"text\", (a) => a, (a) => a];\n case FieldType.Bool:\n return [\n \"text\",\n (a) => (a === \"true\" ? true : a === \"false\" ? false : undefined),\n (a) => a?.toString() ?? \"\",\n ];\n case FieldType.Int:\n return [\n \"number\",\n (a) => (a !== \"\" ? parseInt(a) : null),\n (a) => (a == null ? \"\" : a),\n ];\n case FieldType.DateTime:\n return [\"datetime-local\", (a) => (!a ? null : a), (a) => a];\n case FieldType.Date:\n return [\"date\", (a) => (!a ? null : a), (a) => a];\n case FieldType.Time:\n return [\n \"time\",\n (a) => {\n const l = a.length;\n if (l === 5) return a + \":00\";\n if (l === 8) return a;\n return undefined;\n },\n (a) => (a ? a.substring(0, 5) : \"\"),\n ];\n case FieldType.Double:\n return [\n \"number\",\n (a) => (a !== \"\" ? parseFloat(a) : null),\n (a) => (a == null ? \"\" : a),\n ];\n default:\n return [\"text\", (a) => a, (a) => a];\n }\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport React, { useMemo, useState } from \"react\";\nimport {\n createDataRenderer,\n FieldOption,\n FieldType,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\n\nexport interface SelectRendererOptions {\n className?: string;\n emptyText?: string;\n requiredText?: string;\n}\n\nexport function createSelectRenderer(options: SelectRendererOptions = {}) {\n return createDataRenderer(\n (props, asArray) => (\n <SelectDataRenderer\n className={rendererClass(props.className, options.className)}\n state={props.control}\n id={props.id}\n readonly={props.readonly}\n options={props.options ?? []}\n required={props.required}\n emptyText={options.emptyText}\n requiredText={options.requiredText}\n convert={createSelectConversion(props.field.type)}\n />\n ),\n {\n options: true,\n },\n );\n}\n\ntype SelectConversion = (a: any) => string | number;\n\nexport interface SelectDataRendererProps {\n id?: string;\n className?: string;\n options: FieldOption[];\n emptyText?: string;\n requiredText?: string;\n readonly: boolean;\n required: boolean;\n state: Control<any>;\n convert: SelectConversion;\n}\n\nexport function SelectDataRenderer({\n state,\n options,\n className,\n convert,\n required,\n emptyText = \"N/A\",\n requiredText = \"<please select>\",\n readonly,\n ...props\n}: SelectDataRendererProps) {\n const { value, disabled } = state;\n const [showEmpty] = useState(!required || value == null);\n const optionStringMap = useMemo(\n () => Object.fromEntries(options.map((x) => [convert(x.value), x.value])),\n [options],\n );\n const optionGroups = useMemo(\n () => new Set(options.filter((x) => x.group).map((x) => x.group!)),\n [options],\n );\n return (\n <select\n {...props}\n className={className}\n onChange={(v) => (state.value = optionStringMap[v.target.value])}\n value={convert(value)}\n disabled={disabled || readonly}\n >\n {showEmpty && (\n <option value=\"\">{required ? requiredText : emptyText}</option>\n )}\n {[...optionGroups.keys()].map((x) => (\n <optgroup key={x} label={x}>\n {options.filter((o) => o.group === x).map(renderOption)}\n </optgroup>\n ))}\n {options.filter((x) => !x.group).map(renderOption)}\n </select>\n );\n\n function renderOption(x: FieldOption, i: number) {\n return (\n <option key={i} value={convert(x.value)} disabled={!!x.disabled}>\n {x.name}\n </option>\n );\n }\n}\n\nexport function createSelectConversion(ft: string): SelectConversion {\n switch (ft) {\n case FieldType.String:\n case FieldType.Int:\n case FieldType.Double:\n return (a) => a;\n default:\n return (a) => a?.toString() ?? \"\";\n }\n}\n","import {\n Control,\n Fcheckbox,\n RenderArrayElements,\n useComputed,\n} from \"@react-typed-forms/core\";\nimport React, { ReactNode } from \"react\";\nimport {\n CheckEntryClasses,\n createDataRenderer,\n DataRenderType,\n FieldOption,\n fieldOptionAdornment,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport clsx from \"clsx\";\n\nexport interface CheckRendererOptions {\n className?: string;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n entryWrapperClass?: string;\n selectedClass?: string;\n notSelectedClass?: string;\n}\nexport function createRadioRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n classes={options}\n controlClasses={p.renderOptions as CheckEntryClasses}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => control.value == o.value}\n setChecked={(c, o) => (c.value = o.value)}\n control={p.control}\n type=\"radio\"\n entryAdornment={fieldOptionAdornment(p)}\n />\n ),\n {\n renderType: DataRenderType.Radio,\n },\n );\n}\n\nexport function createCheckListRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n classes={options}\n controlClasses={p.renderOptions as CheckEntryClasses}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => {\n const v = control.value;\n return Array.isArray(v) ? v.includes(o.value) : false;\n }}\n setChecked={(c, o, checked) => {\n c.setValue((x) => setIncluded(x ?? [], o.value, checked));\n }}\n control={p.control}\n type=\"checkbox\"\n entryAdornment={fieldOptionAdornment(p)}\n />\n ),\n {\n collection: true,\n renderType: DataRenderType.CheckList,\n },\n );\n}\n\nexport interface CheckButtonsProps {\n id?: string;\n className?: string;\n options?: FieldOption[] | null;\n control: Control<any>;\n classes: CheckRendererOptions;\n controlClasses?: CheckEntryClasses;\n readonly?: boolean;\n type: \"checkbox\" | \"radio\";\n isChecked: (c: Control<any>, o: FieldOption) => boolean;\n setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;\n entryAdornment?: (c: FieldOption, i: number, selected: boolean) => ReactNode;\n}\n\nexport function CheckButtons({\n control,\n options,\n readonly,\n className,\n id,\n type,\n isChecked,\n setChecked,\n entryAdornment,\n classes,\n controlClasses = {},\n}: CheckButtonsProps) {\n const { disabled } = control;\n const name = \"r\" + control.uniqueId;\n return (\n <div className={className} id={id}>\n <RenderArrayElements array={options?.filter((x) => x.value != null)}>\n {(o, i) => {\n const checked = useComputed(() => isChecked(control, o)).value;\n const selOrUnsel = checked\n ? rendererClass(\n controlClasses?.selectedClass,\n classes.selectedClass,\n )\n : rendererClass(\n controlClasses?.notSelectedClass,\n classes.notSelectedClass,\n );\n return (\n <div\n className={clsx(\n rendererClass(\n controlClasses?.entryWrapperClass,\n classes.entryWrapperClass,\n ),\n selOrUnsel,\n )}\n onClick={() => !readonly && setChecked(control, o, !checked)}\n >\n <div className={classes.entryClass}>\n <input\n id={name + \"_\" + i}\n className={classes.checkClass}\n type={type}\n name={name}\n readOnly={readonly}\n disabled={disabled}\n checked={checked}\n onChange={(x) => {\n !readonly && setChecked(control, o, x.target.checked);\n }}\n />\n <label className={classes.labelClass} htmlFor={name + \"_\" + i}>\n {o.name}\n </label>\n </div>\n {entryAdornment?.(o, i, checked)}\n </div>\n );\n }}\n </RenderArrayElements>\n </div>\n );\n}\n\nexport function setIncluded<A>(array: A[], elem: A, included: boolean): A[] {\n const already = array.includes(elem);\n if (included === already) {\n return array;\n }\n if (included) {\n return [...array, elem];\n }\n return array.filter((e) => e !== elem);\n}\n\nexport function createCheckboxRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (props, renderer) => (p) => ({\n ...p,\n label: undefined,\n children: (\n <div className={rendererClass(props.className, options.entryClass)}>\n <Fcheckbox\n id={props.id}\n control={props.control.as()}\n style={props.style}\n className={options.checkClass}\n />\n {p.label && renderer.renderLabel(p.label, undefined, undefined)}\n </div>\n ),\n }),\n { renderType: DataRenderType.Checkbox },\n );\n}\n","import React, { ReactNode } from \"react\";\nimport {\n createLayoutRenderer,\n RenderedLayout,\n rendererClass,\n renderLayoutParts,\n} from \"@react-typed-forms/schemas\";\n\nexport interface DefaultLayoutRendererOptions {\n className?: string;\n errorClass?: string;\n renderError?: (errorText: string | null | undefined) => ReactNode;\n}\n\nexport function createDefaultLayoutRenderer(\n options: DefaultLayoutRendererOptions = {},\n) {\n return createLayoutRenderer((props, renderers) => {\n const layout = renderLayoutParts(props, renderers);\n return {\n children: layout.wrapLayout(\n <DefaultLayout layout={layout} {...options} />,\n ),\n className: rendererClass(layout.className, options.className),\n style: layout.style,\n divRef: (e) =>\n e && props.errorControl\n ? (props.errorControl.meta.scrollElement = e)\n : undefined,\n };\n });\n}\n\nexport function DefaultLayout({\n errorClass,\n renderError = (e) => e && <div className={errorClass}>{e}</div>,\n layout: { controlEnd, controlStart, label, children, errorControl },\n}: DefaultLayoutRendererOptions & {\n layout: RenderedLayout;\n}) {\n const ec = errorControl;\n const errorText = ec && ec.touched ? ec.error : undefined;\n return (\n <>\n {label}\n {controlStart}\n {children}\n {renderError(errorText)}\n {controlEnd}\n </>\n );\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport {\n rendererClass,\n SchemaField,\n SchemaInterface,\n} from \"@react-typed-forms/schemas\";\n\nexport function DefaultDisplayOnly({\n control,\n className,\n emptyText,\n schemaInterface,\n field,\n style,\n}: {\n control: Control<any>;\n field: SchemaField;\n schemaInterface: SchemaInterface;\n className?: string;\n style?: React.CSSProperties;\n emptyText?: string | null;\n}) {\n const v = control.value;\n const text =\n (schemaInterface.isEmptyValue(field, v)\n ? emptyText\n : schemaInterface.textValue(field, v)) ?? \"\";\n return (\n <div style={style} className={className}>\n {text}\n </div>\n );\n}\n","import React, { CSSProperties, Fragment, ReactElement } from \"react\";\nimport { Control, useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\nimport { DefaultAccordionRendererOptions } from \"../createDefaultRenderers\";\nimport {\n AccordionAdornment,\n ControlDataContext,\n FormRenderer,\n} from \"@react-typed-forms/schemas\";\n\nexport function DefaultAccordion({\n children,\n accordion,\n contentStyle,\n contentClassName,\n designMode,\n iconOpenClass,\n iconClosedClass,\n className,\n renderTitle = (t) => t,\n renderToggler,\n renderers,\n titleClass,\n useCss,\n dataContext,\n}: {\n children: ReactElement;\n accordion: Partial<AccordionAdornment>;\n contentStyle?: CSSProperties;\n contentClassName?: string;\n designMode?: boolean;\n renderers: FormRenderer;\n dataContext: ControlDataContext;\n} & DefaultAccordionRendererOptions) {\n const dataControl = (dataContext.dataNode ?? dataContext.parentNode).control;\n const open = useControl(!!accordion.defaultExpanded);\n if (dataControl && !dataControl.meta.accordionState) {\n dataControl.meta.accordionState = open;\n }\n const isOpen = open.value;\n const fullContentStyle =\n isOpen || designMode ? contentStyle : { ...contentStyle, display: \"none\" };\n const title = renderers.renderLabelText(renderTitle(accordion.title, open));\n const toggler = renderToggler ? (\n renderToggler(open, title)\n ) : (\n <button className={className} onClick={() => open.setValue((x) => !x)}>\n <label className={titleClass}>{title}</label>\n <i className={clsx(isOpen ? iconOpenClass : iconClosedClass)} />\n </button>\n );\n\n return (\n <>\n {toggler}\n {(useCss || isOpen || designMode) && (\n <div style={fullContentStyle} className={contentClassName}>\n {children}\n </div>\n )}\n </>\n );\n}\n\nexport function getAccordionState(\n c: Control<unknown>,\n): Control<boolean> | undefined {\n return c.meta.accordionState;\n}\n","import {\n controlTitle,\n createGroupRenderer,\n FormNode,\n GroupRendererProps,\n GroupRenderType,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport React from \"react\";\nimport { useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\n\nexport interface TabsRendererOptions {\n className?: string;\n tabListClass?: string;\n tabClass?: string;\n labelClass?: string;\n activeClass?: string;\n inactiveClass?: string;\n contentClass?: string;\n}\n\nexport function createTabsRenderer(options: TabsRendererOptions = {}) {\n return createGroupRenderer(\n (p, renderer) => <TabsGroupRenderer {...p} options={options} />,\n {\n renderType: GroupRenderType.Tabs,\n },\n );\n}\n\nexport function TabsGroupRenderer({\n formNode,\n className,\n options,\n renderChild,\n designMode,\n}: GroupRendererProps & { options: TabsRendererOptions }) {\n const tabIndex = useControl(0);\n const {\n tabClass,\n labelClass,\n tabListClass,\n inactiveClass,\n activeClass,\n contentClass,\n } = options;\n const currentTab = tabIndex.value;\n return designMode ? (\n <>{formNode.getChildNodes().map((x, i) => renderTabs([x], i))}</>\n ) : (\n renderTabs(formNode.getChildNodes(), 0)\n );\n\n function renderTabs(tabs: FormNode[], key: number) {\n return (\n <div key={key} className={rendererClass(className, options.className)}>\n <ul className={rendererClass(null, tabListClass)}>\n {tabs.map((x, i) => (\n <li\n key={i}\n className={rendererClass(null, tabClass)}\n onClick={() => (tabIndex.value = i)}\n >\n <span\n className={rendererClass(\n null,\n clsx(\n labelClass,\n i == currentTab ? activeClass : inactiveClass,\n ),\n )}\n >\n {x.definition.title ? x.definition.title : \"<untitled>\"}\n </span>\n </li>\n ))}\n </ul>\n <div className={rendererClass(null, contentClass)}>\n {renderChild(currentTab, tabs[currentTab])}\n </div>\n </div>\n );\n }\n}\n","import {\n ControlLayoutProps,\n FlexRenderer,\n FormRenderer,\n GridRenderer,\n GroupRendererProps,\n GroupRendererRegistration,\n isFlexRenderer,\n isGridRenderer,\n isSelectChildRenderer,\n isTabsRenderer,\n rendererClass,\n SelectChildRenderer,\n} from \"@react-typed-forms/schemas\";\nimport clsx from \"clsx\";\nimport React, { CSSProperties, useCallback } from \"react\";\nimport { useTrackedComponent } from \"@react-typed-forms/core\";\nimport { createTabsRenderer, TabsRendererOptions } from \"./TabsRenderer\";\n\ninterface StyleProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport interface DefaultGroupRendererOptions {\n className?: string;\n standardClassName?: string;\n gridStyles?: (columns: GridRenderer) => StyleProps;\n gridClassName?: string;\n defaultGridColumns?: number;\n flexClassName?: string;\n defaultFlexGap?: string;\n tabs?: TabsRendererOptions;\n}\n\nexport function createDefaultGroupRenderer(\n options?: DefaultGroupRendererOptions,\n): GroupRendererRegistration {\n const tabsRenderer = createTabsRenderer(options?.tabs);\n const {\n className,\n gridStyles = defaultGridStyles,\n defaultGridColumns = 2,\n gridClassName,\n standardClassName,\n flexClassName,\n defaultFlexGap,\n } = options ?? {};\n\n function defaultGridStyles({\n columns = defaultGridColumns,\n }: GridRenderer): StyleProps {\n return {\n className: gridClassName,\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n },\n };\n }\n\n function flexStyles(options: FlexRenderer): StyleProps {\n return {\n className: flexClassName,\n style: {\n display: \"flex\",\n gap: options.gap ? options.gap : defaultFlexGap,\n flexDirection: options.direction\n ? (options.direction as any)\n : undefined,\n },\n };\n }\n\n function render(props: GroupRendererProps, renderers: FormRenderer) {\n const { renderChild, renderOptions, formNode } = props;\n if (isTabsRenderer(renderOptions))\n return tabsRenderer.render(props, renderers);\n if (isSelectChildRenderer(renderOptions) && !props.designMode) {\n return (\n <SelectChildGroupRenderer {...props} renderOptions={renderOptions} />\n );\n }\n\n const { style, className: gcn } = isGridRenderer(renderOptions)\n ? gridStyles(renderOptions)\n : isFlexRenderer(renderOptions)\n ? flexStyles(renderOptions)\n : ({ className: standardClassName } as StyleProps);\n return (\n <div\n className={rendererClass(props.className, clsx(className, gcn))}\n style={style}\n >\n {formNode.getChildNodes().map((c, i) => renderChild(i, c))}\n </div>\n );\n }\n\n return { type: \"group\", render };\n}\n\ntype SelectChildProps = Pick<\n GroupRendererProps,\n \"useEvalExpression\" | \"dataContext\" | \"formNode\" | \"renderChild\"\n> & {\n renderOptions: SelectChildRenderer;\n};\nfunction SelectChildGroupRenderer(props: SelectChildProps) {\n const { useEvalExpression, renderOptions } = props;\n const dynHook = useEvalExpression(renderOptions?.childIndexExpression, (x) =>\n x == \"string\" ? parseInt(x) : x,\n );\n const Render = useTrackedComponent(\n (p: SelectChildProps) => {\n const ctrl = dynHook.runHook(p.dataContext, dynHook.state);\n const childIndex = ctrl?.value;\n const childDefinitions = p.formNode.getChildNodes();\n return (\n <div>\n {typeof childIndex === \"number\" &&\n childIndex < childDefinitions.length &&\n childIndex >= 0 &&\n p.renderChild(childIndex, childDefinitions[childIndex])}\n </div>\n );\n },\n [dynHook.deps],\n );\n return <Render {...props} />;\n}\n","import React, { useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport {\n createVisibilityRenderer,\n VisibilityRendererProps,\n} from \"@react-typed-forms/schemas\";\n\nexport function createDefaultVisibilityRenderer() {\n return createVisibilityRenderer((props) => <DefaultVisibility {...props} />);\n}\n\nexport function DefaultVisibility({\n visibility,\n children,\n className,\n style,\n divRef,\n}: VisibilityRendererProps) {\n const v = visibility.value;\n useEffect(() => {\n if (v) {\n visibility.setValue((ex) => ({ visible: v.visible, showing: v.visible }));\n }\n }, [v?.visible]);\n return v?.visible ? (\n <div className={clsx(className)} style={style} ref={divRef}>\n {children}\n </div>\n ) : (\n <></>\n );\n}\n","import { Control, useComputed } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport {\n coerceToString,\n ControlDataContext,\n createDataRenderer,\n DataRenderType,\n getJsonPath,\n getRootDataNode,\n JsonataRenderOptions,\n rendererClass,\n SchemaDataNode,\n useJsonataExpression,\n} from \"@react-typed-forms/schemas\";\n\nexport function createJsonataRenderer(className?: string) {\n return createDataRenderer(\n (p) => (\n <JsonataRenderer\n renderOptions={p.renderOptions as JsonataRenderOptions}\n className={rendererClass(p.className, className)}\n dataNode={p.dataNode}\n dataContext={p.dataContext}\n control={p.control}\n readonly={p.readonly}\n />\n ),\n { renderType: DataRenderType.Jsonata },\n );\n}\n\nexport function JsonataRenderer({\n control,\n renderOptions,\n readonly,\n className,\n dataContext,\n dataNode,\n}: {\n control: Control<any>;\n renderOptions: JsonataRenderOptions;\n className?: string;\n dataContext: ControlDataContext;\n dataNode: SchemaDataNode;\n readonly: boolean;\n}) {\n const sdn = dataNode.elementIndex != null ? dataNode : dataContext.parentNode;\n const bindings = useComputed(() => ({\n value: control.value,\n readonly,\n disabled: control.disabled,\n formData: dataContext.formData,\n dataPath: getJsonPath(dataNode),\n }));\n const rendered = useJsonataExpression(\n renderOptions.expression,\n getRootDataNode(sdn).control!,\n getJsonPath(sdn),\n bindings,\n coerceToString,\n );\n return (\n <div\n className={className}\n dangerouslySetInnerHTML={{ __html: rendered.value }}\n />\n );\n}\n","import {\n createDataRenderer,\n DataRenderType,\n FieldType,\n getLastDefinedValue,\n getNullToggler,\n} from \"@react-typed-forms/schemas\";\n\nexport function createNullToggleRenderer() {\n return createDataRenderer(\n ({ control, field, renderOptions, ...props }, renderers) => {\n const lastDefined = getLastDefinedValue(control);\n if (lastDefined.current.value == null)\n lastDefined.value = props.definition.defaultValue;\n const nullControl = getNullToggler(control);\n nullControl.disabled = props.readonly;\n return (layout) => {\n return renderers.renderData({\n ...props,\n control: nullControl,\n field: { ...field, type: FieldType.Bool },\n renderOptions: { type: DataRenderType.Checkbox },\n })(layout);\n };\n },\n );\n}\n","import clsx from \"clsx\";\nimport React, { Fragment, ReactNode } from \"react\";\nimport { RenderElements, useTrackedComponent } from \"@react-typed-forms/core\";\nimport {\n ActionRendererProps,\n applyArrayLengthRestrictions,\n ArrayActionOptions,\n ArrayRendererProps,\n ArrayRendererRegistration,\n ArrayRenderOptions,\n ControlDataContext,\n ControlDefinition,\n ControlDefinitionType,\n createArrayActions,\n createDataRenderer,\n DataControlDefinition,\n DataRendererProps,\n DataRendererRegistration,\n DataRenderType,\n EvalExpressionHook,\n FormNode,\n FormRenderer,\n getLengthRestrictions,\n GroupedControlsDefinition,\n GroupRenderType,\n isArrayRenderer,\n isCompoundField,\n lookupDataNode,\n makeHookDepString,\n mergeObjects,\n nodeForControl,\n SchemaDataNode,\n} from \"@react-typed-forms/schemas\";\n\nexport function createDefaultArrayDataRenderer(\n defaultActions?: ArrayActionOptions,\n): DataRendererRegistration {\n return createDataRenderer(\n (props, renderers) => {\n return (\n <DataArrayRenderer\n dataProps={props}\n renderers={renderers}\n defaultActions={defaultActions}\n />\n );\n },\n { renderType: DataRenderType.Array, collection: true },\n );\n}\n\nexport function DataArrayRenderer({\n dataProps,\n renderers,\n defaultActions,\n}: {\n renderers: FormRenderer;\n dataProps: DataRendererProps;\n defaultActions?: ArrayActionOptions;\n}) {\n const {\n renderOptions,\n control,\n field,\n readonly,\n designMode,\n required,\n renderChild,\n definition,\n className,\n style,\n useChildVisibility,\n dataContext,\n formNode,\n } = dataProps;\n const { addText, noAdd, noRemove, noReorder, removeText, editExternal } =\n mergeObjects(\n isArrayRenderer(renderOptions)\n ? renderOptions\n : ({} as ArrayRenderOptions),\n defaultActions as ArrayRenderOptions,\n );\n\n const childOptions = isArrayRenderer(renderOptions)\n ? renderOptions.childOptions\n : undefined;\n\n const renderAsElement = !isCompoundField(field);\n const childDefinition: FormNode = nodeForControl(\n !renderAsElement\n ? ({\n type: ControlDefinitionType.Group,\n children: definition.children,\n groupOptions: { type: GroupRenderType.Standard, hideTitle: true },\n } as GroupedControlsDefinition)\n : ({\n type: ControlDefinitionType.Data,\n field: definition.field,\n children: definition.children,\n renderOptions: childOptions ?? { type: DataRenderType.Standard },\n hideTitle: true,\n } as DataControlDefinition),\n formNode.tree,\n );\n\n const visibilities = (definition.children ?? []).map(\n (x) => [useChildVisibility(x, undefined, true), x] as const,\n );\n const deps = makeHookDepString(visibilities, (x) => x[0].deps);\n const Entry = useTrackedComponent(RenderEntry, [deps]);\n\n const arrayProps = {\n ...createArrayActions(control.as(), field, {\n addText,\n removeText,\n noAdd,\n noRemove,\n readonly,\n disabled: control.disabled,\n designMode,\n editExternal,\n }),\n required,\n renderElement: (i, wrap) => (\n <Entry\n index={i}\n renderChildElement={renderChildElement}\n dataContext={dataContext}\n visibilities={visibilities}\n wrap={wrap}\n />\n ),\n className: className ? className : undefined,\n style,\n ...getLengthRestrictions(definition),\n } satisfies ArrayRendererProps;\n\n return renderers.renderArray(arrayProps);\n\n function renderChildElement(i: number, elementNode: SchemaDataNode) {\n return renderChild(\n control.elements?.[i].uniqueId ?? i,\n childDefinition,\n renderAsElement\n ? {\n elementIndex: i,\n }\n : { parentDataNode: elementNode },\n );\n }\n}\n\nfunction RenderEntry({\n index: i,\n renderChildElement,\n visibilities,\n wrap,\n dataContext,\n}: {\n index: number;\n renderChildElement: (i: number, element: SchemaDataNode) => ReactNode;\n visibilities: (readonly [EvalExpressionHook<boolean>, ControlDefinition])[];\n dataContext: ControlDataContext;\n wrap: (n: ReactNode) => ReactNode;\n}) {\n const elementNode = dataContext.dataNode!.getChildElement(i);\n const childVis = visibilities.map(\n ([hook, def]) =>\n hook.runHook(\n {\n ...dataContext,\n parentNode: elementNode,\n dataNode: lookupDataNode(def, elementNode),\n },\n hook.state,\n ).value,\n );\n const anyVisible = childVis.length == 0 || childVis.some((x) => x === true);\n if (!anyVisible) return undefined;\n return wrap(renderChildElement(i, elementNode));\n}\n\nexport interface DefaultArrayRendererOptions extends ArrayActionOptions {\n className?: string;\n removableClass?: string;\n childClass?: string;\n removableChildClass?: string;\n removeActionClass?: string;\n addActionClass?: string;\n}\n\nexport function createDefaultArrayRenderer(\n options?: DefaultArrayRendererOptions,\n): ArrayRendererRegistration {\n return {\n render: (props, { renderAction }) => (\n <DefaultArrayRenderer\n {...props}\n {...options}\n renderAction={renderAction}\n />\n ),\n type: \"array\",\n };\n}\n\nexport interface DefaultArrayRendererProps\n extends DefaultArrayRendererOptions,\n ArrayRendererProps {\n renderAction: (props: ActionRendererProps) => ReactNode;\n}\n\nexport function DefaultArrayRenderer(props: DefaultArrayRendererProps) {\n const {\n renderElement,\n className,\n removableClass,\n childClass,\n removableChildClass,\n removeActionClass,\n addActionClass,\n arrayControl,\n renderAction,\n style,\n editAction,\n } = props;\n const { addAction, removeAction } = applyArrayLengthRestrictions(props);\n return (\n <div style={style}>\n <div className={clsx(className, removeAction && removableClass)}>\n <RenderElements control={arrayControl}>\n {(_, x) =>\n renderElement(x, (children) =>\n removeAction || editAction ? (\n <>\n <div className={clsx(childClass, removableChildClass)}>\n {children}\n </div>\n <div className={removeActionClass}>\n {editAction && renderAction(editAction(x))}\n {removeAction && renderAction(removeAction(x))}\n </div>\n </>\n ) : (\n <div className={childClass}>{children}</div>\n ),\n )\n }\n </RenderElements>\n </div>\n {addAction && (\n <div className={addActionClass}>{renderAction(addAction)}</div>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport {\n Control,\n controlValues,\n removeElement,\n useControl,\n useControlEffect,\n} from \"@react-typed-forms/core\";\nimport {\n AutocompleteClasses,\n createDataRenderer,\n DataRenderType,\n FieldOption,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport { useAutocomplete, UseAutocompleteProps } from \"@mui/base\";\nimport clsx from \"clsx\";\n\nexport interface AutocompleteRendererOptions {\n className?: string;\n listContainerClass?: string;\n listEntryClass?: string;\n chipContainerClass?: string;\n chipCloseButtonClass?: string;\n}\n\nexport interface AutocompleteProps<A, Multiple extends boolean>\n extends UseAutocompleteProps<A, Multiple, false, true> {\n control: Control<any>;\n className?: string;\n classes: AutocompleteRendererOptions;\n controlClasses?: AutocompleteClasses;\n}\n\nconst inputClass =\n \"leading-[1.5] text-surface-900 bg-[inherit] border-0 rounded-[inherit] px-3 py-2 outline-0 grow shrink-0 basis-auto focus:outline-0 focus:ring-0 focus:shadow-none\";\n\nexport function createAutocompleteRenderer(\n options: AutocompleteRendererOptions = {},\n) {\n return createDataRenderer(\n (p) => {\n return p.field.collection ? (\n <MultipleAutocomplete\n options={p.options ?? []}\n control={p.control}\n className={rendererClass(p.className, options.className)}\n classes={options}\n controlClasses={p.renderOptions as AutocompleteClasses}\n readOnly={p.readonly}\n id={p.id}\n />\n ) : (\n <SingleAutocomplete\n options={p.options ?? []}\n control={p.control}\n className={rendererClass(p.className, options.className)}\n classes={options}\n controlClasses={p.renderOptions as AutocompleteClasses}\n readOnly={p.readonly}\n id={p.id}\n />\n );\n },\n {\n renderType: DataRenderType.Autocomplete,\n },\n );\n}\n\nfunction SingleAutocomplete({\n ...props\n}: AutocompleteProps<FieldOption | string, false>) {\n const { id, control, className, readOnly, classes, controlClasses } = props;\n const { disabled } = control;\n\n const inputControl = useControl<string>(\"\");\n const selectedOptionControl = useControl<string | FieldOption | null>(null);\n\n const listContainerClass = rendererClass(\n controlClasses?.listContainerClass,\n classes.listContainerClass,\n );\n\n const listEntryClass = rendererClass(\n controlClasses?.listEntryClass,\n classes.listEntryClass,\n );\n\n useControlEffect(\n controlValues(inputControl, selectedOptionControl),\n ([text, selected]) => {\n control.value = selected\n ? typeof selected === \"string\"\n ? selected\n : selected.value\n : text;\n },\n );\n\n const {\n getRootProps,\n getInputProps,\n getListboxProps,\n getOptionProps,\n groupedOptions,\n popupOpen,\n focused,\n getPopupIndicatorProps,\n } = useAutocomplete({\n freeSolo: true,\n multiple: false,\n value: selectedOptionControl.value,\n inputValue: inputControl.value,\n getOptionLabel: (v) => (typeof v === \"string\" ? v : v.name),\n filterOptions: (o, s) =>\n o.filter((o) => {\n const label = typeof o === \"string\" ? o : o.name;\n return label.toLowerCase().includes(s.inputValue.toLowerCase());\n }),\n onInputChange: (_, v, reason) => {\n inputControl.value = v;\n if (reason === \"input\") selectedOptionControl.value = null;\n },\n onChange: (_, v, reason) => {\n if (reason === \"selectOption\") {\n selectedOptionControl.value = v;\n }\n },\n ...props,\n });\n\n return (\n <div id={id} className={\"relative\"} {...getRootProps()}>\n <div\n className={clsx(\n className,\n focused\n ? \"border-primary-400 shadow-[0_0_0_3px_transparent] shadow-primary-200\"\n : \"shadow-[0_2px_2px_transparent] shadow-surface-50\",\n )}\n >\n <input\n type={\"text\"}\n {...getInputProps()}\n placeholder={controlClasses?.placeholder ?? \"\"}\n className={inputClass}\n />\n\n <button\n {...getPopupIndicatorProps()}\n disabled={disabled || readOnly}\n className={\n \"outline-0 shadow-none border-0 py-0 px-0.5 bg-transparent pr-[10px]\"\n }\n >\n <li\n className={clsx(\n \"fa-solid fa-angle-down\",\n \"text-primary-500\",\n popupOpen && \"rotate-180\",\n )}\n />\n </button>\n </div>\n {groupedOptions.length > 0 && popupOpen && (\n <ul {...getListboxProps()} className={listContainerClass}>\n {(groupedOptions as FieldOption[]).map((option, index) => {\n const optionProps = getOptionProps({ option, index });\n return (\n <li\n {...optionProps}\n key={optionProps.key}\n className={listEntryClass}\n >\n {option.name}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n}\n\nfunction MultipleAutocomplete({\n ...props\n}: AutocompleteProps<FieldOption, true>) {\n const { id, control, className, readOnly, classes, controlClasses } = props;\n const { disabled } = control;\n\n const inputControl = useControl<string>(\"\");\n const selectedOptionsControl = useControl<(string | FieldOption)[] | null>(\n null,\n );\n\n const listContainerClass = rendererClass(\n controlClasses?.listContainerClass,\n classes.listContainerClass,\n );\n const listEntryClass = rendererClass(\n controlClasses?.listEntryClass,\n classes.listEntryClass,\n );\n\n const chipContainerClass = rendererClass(\n controlClasses?.chipContainerClass,\n classes.chipContainerClass,\n );\n\n const chipCloseButtonClass = rendererClass(\n controlClasses?.chipCloseButtonClass,\n classes.chipCloseButtonClass,\n );\n\n useControlEffect(\n controlValues(inputControl, selectedOptionsControl),\n ([text, selected]) => {\n const selectedValues =\n selected?.map((v) => {\n return typeof v === \"string\" ? v : v.value;\n }) ?? [];\n control.value = text ? selectedValues.concat(text) : selectedValues;\n },\n );\n\n const {\n getRootProps,\n getInputProps,\n getListboxProps,\n getOptionProps,\n groupedOptions,\n popupOpen,\n focused,\n getPopupIndicatorProps,\n } = useAutocomplete({\n value: selectedOptionsControl.value ?? [],\n inputValue: inputControl.value,\n freeSolo: true,\n multiple: true,\n getOptionLabel: (v) => (typeof v === \"string\" ? v : v.name),\n filterOptions: (o, s) =>\n o.filter((o) => {\n const label = typeof o === \"string\" ? o : o.name;\n return label.toLowerCase().includes(s.inputValue.toLowerCase());\n }),\n onInputChange: (_, v) => {\n inputControl.value = v;\n },\n onChange: (_, v, reason) => {\n if (reason === \"selectOption\" || reason === \"removeOption\") {\n selectedOptionsControl.value = v;\n }\n },\n ...props,\n });\n\n return (\n <div id={id} className={\"relative\"} {...getRootProps()}>\n <div\n className={clsx(\n className,\n focused\n ? \"border-primary-400 shadow-[0_0_0_3px_transparent] shadow-primary-200\"\n : \"shadow-[0_2px_2px_transparent] shadow-surface-50\",\n )}\n >\n <div className={\"flex flex-1 flex-row flex-wrap\"}>\n {selectedOptionsControl.value?.map((v) => (\n <Chip\n key={typeof v === \"string\" ? v : v.name}\n text={typeof v === \"string\" ? v : v.name}\n chipContainerClass={chipContainerClass}\n chipCloseButtonClass={chipCloseButtonClass}\n onDeleteClick={() => {\n const c = selectedOptionsControl.elements.find(\n (x) => x.value == v,\n );\n if (c) removeElement(selectedOptionsControl, c);\n }}\n />\n ))}\n <input\n type={\"text\"}\n {...getInputProps()}\n placeholder={controlClasses?.placeholder ?? \"\"}\n className={clsx(inputClass)}\n />\n </div>\n\n <button\n {...getPopupIndicatorProps()}\n disabled={disabled || readOnly}\n className={\n \"outline-0 shadow-none border-0 py-0 px-0.5 bg-transparent pr-[10px]\"\n }\n >\n <i\n className={clsx(\n \"fa-solid fa-angle-down\",\n \"text-primary-500\",\n popupOpen && \"rotate-180\",\n )}\n />\n </button>\n </div>\n {groupedOptions.length > 0 && popupOpen && (\n <ul {...getListboxProps()} className={listContainerClass}>\n {(groupedOptions as FieldOption[]).map((option, index) => {\n const optionProps = getOptionProps({ option, index });\n return (\n <li\n {...optionProps}\n key={optionProps.key}\n className={listEntryClass}\n >\n {option.name}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n}\n\nfunction Chip({\n text,\n chipContainerClass,\n chipCloseButtonClass,\n onDeleteClick,\n}: {\n text: string;\n chipContainerClass?: string;\n chipCloseButtonClass?: string;\n onDeleteClick?: () => void;\n}) {\n return (\n <div className={chipContainerClass}>\n {text}\n <i\n className={chipCloseButtonClass}\n onClick={() => {\n onDeleteClick?.();\n }}\n />\n </div>\n );\n}\n","import { Control, setFields, useControl } from \"@react-typed-forms/core\";\nimport {\n addMissingControlsForSchema,\n buildSchema,\n ControlDefinitionExtension,\n createDataRenderer,\n FormRenderer,\n groupedControl,\n makeSchemaDataNode,\n RenderOptions,\n rootSchemaNode,\n schemaDataForFieldRef,\n schemaForFieldRef,\n SchemaNode,\n stringField,\n useControlRendererComponent,\n} from \"@react-typed-forms/schemas\";\nimport React, { useMemo } from \"react\";\n\nexport interface ValueForFieldRenderOptions extends RenderOptions {\n type: \"ValueForField\";\n fieldRef?: string | null;\n}\n\nconst RenderType = \"ValueForField\";\n\nexport const ValueForFieldExtension: ControlDefinitionExtension = {\n RenderOptions: {\n value: RenderType,\n name: \"Value For Field\",\n fields: buildSchema<Omit<ValueForFieldRenderOptions, \"type\">>({\n fieldRef: stringField(\"Field Reference\"),\n }),\n },\n};\n\nexport interface ValueForFieldOptions {\n schema: SchemaNode;\n}\n\nexport function createValueForFieldRenderer(options: ValueForFieldOptions) {\n return createDataRenderer(\n (o, renderer) => {\n const { fieldRef } = o.renderOptions as ValueForFieldRenderOptions;\n const actualFieldRef = fieldRef\n ? (schemaDataForFieldRef(fieldRef, o.dataContext.parentNode)?.control\n ?.value as string)\n : undefined;\n const node = actualFieldRef\n ? schemaForFieldRef(actualFieldRef, options.schema)\n : undefined;\n return node ? (\n <ValueForField renderer={renderer} schema={node} control={o.control} />\n ) : (\n <>{actualFieldRef ? \"No schema node for \" + actualFieldRef : \"\"}</>\n );\n },\n {\n renderType: RenderType,\n },\n );\n}\n\nfunction ValueForField({\n schema,\n renderer,\n control,\n}: {\n schema: SchemaNode;\n renderer: FormRenderer;\n control: Control<any>;\n}) {\n const value = useControl({ default: undefined }, undefined, (e) =>\n setFields(e, { default: control }),\n );\n const [controls, rootSchema] = useMemo(() => {\n const rootSchema = rootSchemaNode([\n {\n ...schema.field,\n field: \"default\",\n required: false,\n notNullable: false,\n onlyForTypes: null,\n defaultValue: undefined,\n },\n ]);\n return [addMissingControlsForSchema(rootSchema, []), rootSchema];\n }, [schema]);\n const Render = useControlRendererComponent(\n groupedControl(controls),\n renderer,\n { disabled: control.disabled },\n makeSchemaDataNode(rootSchema, value),\n );\n return <Render />;\n}\n","import {\n AdornmentPlacement,\n AdornmentRendererRegistration,\n appendMarkupAt,\n ControlAdornmentType,\n ControlDataContext,\n createAdornmentRenderer,\n getAllValues,\n getIsEditing,\n getNullToggler,\n OptionalAdornment,\n wrapMarkup,\n} from \"@react-typed-forms/schemas\";\nimport { Control, Fcheckbox, newControl } from \"@react-typed-forms/core\";\nimport React, { ReactNode } from \"react\";\n\nexport interface OptionalRenderProps {\n allValues: Control<unknown[]>;\n editing: Control<boolean | undefined>;\n children: ReactNode;\n adornment: OptionalAdornment;\n nullToggler: Control<boolean>;\n dataContext: ControlDataContext;\n options: DefaultOptionalAdornmentOptions;\n}\nexport interface DefaultOptionalAdornmentOptions {\n className?: string;\n checkClass?: string;\n childWrapperClass?: string;\n multiValuesClass?: string;\n multiValuesText?: string;\n nullWrapperClass?: string;\n setNullText?: string;\n defaultPlacement?: AdornmentPlacement;\n hideEdit?: boolean;\n customRender?: (props: OptionalRenderProps) => ReactNode;\n}\nexport function createOptionalAdornment(\n options: DefaultOptionalAdornmentOptions = {},\n): AdornmentRendererRegistration {\n return createAdornmentRenderer(\n (props, renderers) => {\n const { dataContext } = props;\n const dataControl =\n dataContext.dataNode?.control ?? newControl(undefined);\n const adornment = props.adornment as OptionalAdornment;\n const editing = getIsEditing(dataControl);\n const isEditing = editing.value;\n const nullToggler = getNullToggler(dataControl);\n if (isEditing === undefined && adornment.editSelectable)\n editing.value = false;\n dataControl.disabled =\n !isEditing || !!(adornment.allowNull && !nullToggler.value);\n return {\n apply: (rl) => {\n if (props.formOptions.readonly) return rl;\n if (!options.hideEdit && adornment.editSelectable)\n appendMarkupAt(\n adornment.placement ??\n options.defaultPlacement ??\n AdornmentPlacement.LabelStart,\n <Fcheckbox control={editing} className={options.checkClass} />,\n )(rl);\n wrapMarkup(\"children\", (children) =>\n options.customRender ? (\n options.customRender({\n allValues: getAllValues(dataControl),\n editing,\n children,\n adornment,\n nullToggler,\n dataContext,\n options,\n })\n ) : (\n <OptionalEditRenderer\n children={children}\n options={options}\n editing={editing.as()}\n adornment={adornment}\n dataControl={dataControl}\n />\n ),\n )(rl);\n },\n priority: 0,\n adornment,\n };\n },\n { adornmentType: ControlAdornmentType.Optional },\n );\n}\n\nexport function OptionalEditRenderer({\n children,\n options,\n adornment,\n editing,\n dataControl,\n}: {\n options: DefaultOptionalAdornmentOptions;\n children: ReactNode;\n adornment: OptionalAdornment;\n editing: Control<boolean | undefined>;\n dataControl: Control<any>;\n}) {\n const nullToggler = getNullToggler(dataControl);\n const allValues = getAllValues(dataControl);\n const multipleValues = allValues.value.length > 1;\n const nullEdit = adornment.allowNull ? (\n <div className={options.nullWrapperClass}>\n <Fcheckbox\n control={nullToggler}\n className={options.checkClass}\n notValue\n />\n <span>{options.setNullText ?? \"Null\"}</span>\n </div>\n ) : undefined;\n return (\n <div className={options.className}>\n {multipleValues && editing.value === false ? (\n <div className={options.multiValuesClass}>\n {options.multiValuesText ?? \"Differing values\"}\n </div>\n ) : (\n <div className={options.childWrapperClass}>\n {nullEdit}\n {children}\n </div>\n )}\n </div>\n );\n}\n","import React, { useRef } from \"react\";\nimport { useControlEffect } from \"@react-typed-forms/core\";\nimport {\n createDataRenderer,\n DataRendererProps,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\n\nexport function createMultilineFieldRenderer(className?: string) {\n return createDataRenderer((p) => (\n <MultilineTextfield\n {...p}\n className={rendererClass(p.className, className)}\n />\n ));\n}\n\nexport function MultilineTextfield({ control, className }: DataRendererProps) {\n const codeRef = useRef<HTMLElement | null>(null);\n useControlEffect(\n () => control.value,\n (v) => {\n const c = codeRef.current;\n if (c && c.textContent !== v) {\n c.textContent = v;\n }\n },\n true,\n );\n return (\n <code\n contentEditable={!control.disabled}\n className={className}\n onInput={(t) => (control.value = t.currentTarget.textContent)}\n ref={codeRef}\n />\n );\n}\n","import {\n ArrayElementRenderOptions,\n ControlDefinitionType,\n createDataRenderer,\n DataRendererProps,\n DataRenderType,\n FormNode,\n FormRenderer,\n getExternalEditData,\n GroupedControlsDefinition,\n GroupRenderType,\n makeSchemaDataNode,\n nodeForControl,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport React from \"react\";\nimport { Dialog, Modal } from \"@astroapps/aria-base\";\nimport { useOverlayTriggerState } from \"@react-stately/overlays\";\nimport { RenderElements } from \"@react-typed-forms/core\";\n\nexport interface ArrayElementRendererOptions {\n className?: string;\n actionsClass?: string;\n}\nexport function createArrayElementRenderer(\n options: ArrayElementRendererOptions = {},\n) {\n return createDataRenderer(\n (props, formRenderer) => (\n <ArrayElementRenderer\n dataProps={props}\n options={options}\n formRenderer={formRenderer}\n renderOptions={props.renderOptions as ArrayElementRenderOptions}\n />\n ),\n { renderType: DataRenderType.ArrayElement },\n );\n}\n\nfunction ArrayElementRenderer({\n dataProps,\n options,\n formRenderer,\n renderOptions,\n}: {\n dataProps: DataRendererProps;\n options: ArrayElementRendererOptions;\n formRenderer: FormRenderer;\n renderOptions: ArrayElementRenderOptions;\n}) {\n const { control, formNode, renderChild, designMode } = dataProps;\n const extData = getExternalEditData(control);\n const overlayState = useOverlayTriggerState({\n isOpen: true,\n onOpenChange: () => {\n extData.value = undefined;\n },\n });\n\n if (designMode || extData.value !== undefined) {\n const parentDataNode = makeSchemaDataNode(\n dataProps.dataNode.schema,\n extData.fields.data,\n );\n const childDefinition: FormNode = nodeForControl(\n {\n type: ControlDefinitionType.Group,\n children: formNode.definition.children,\n groupOptions: { type: GroupRenderType.Standard, hideTitle: true },\n } as GroupedControlsDefinition,\n formNode.tree,\n );\n const editContent = (\n <div className={rendererClass(dataProps.className, options.className)}>\n {renderChild(\"\", childDefinition, {\n parentDataNode,\n elementIndex: 0,\n })}\n <div className={options.actionsClass}>\n <RenderElements control={extData.fields.actions}>\n {(c) => formRenderer.renderAction(c.value)}\n </RenderElements>\n </div>\n </div>\n );\n if (renderOptions.showInline || designMode) return editContent;\n return (\n <Modal state={overlayState}>\n <Dialog children={editContent} />\n </Modal>\n );\n } else return <></>;\n}\n","import {\n createDefaultDisplayRenderer,\n DefaultDisplayRendererOptions,\n} from \"./components/DefaultDisplay\";\nimport {\n createDefaultLayoutRenderer,\n DefaultLayoutRendererOptions,\n} from \"./components/DefaultLayout\";\nimport { createDefaultVisibilityRenderer } from \"./components/DefaultVisibility\";\nimport React, { Fragment, ReactElement, ReactNode } from \"react\";\nimport clsx from \"clsx\";\nimport {\n createSelectRenderer,\n SelectRendererOptions,\n} from \"./components/SelectDataRenderer\";\nimport { DefaultDisplayOnly } from \"./components/DefaultDisplayOnly\";\nimport {\n Control,\n useControlEffect,\n useTrackedComponent,\n} from \"@react-typed-forms/core\";\nimport { ControlInput, createInputConversion } from \"./components/ControlInput\";\nimport {\n createDefaultArrayDataRenderer,\n createDefaultArrayRenderer,\n DefaultArrayRendererOptions,\n} from \"./components/DefaultArrayRenderer\";\nimport {\n CheckRendererOptions,\n createCheckboxRenderer,\n createCheckListRenderer,\n createRadioRenderer,\n} from \"./components/CheckRenderer\";\nimport { DefaultAccordion } from \"./components/DefaultAccordion\";\nimport { createNullToggleRenderer } from \"./components/NullToggle\";\nimport { createMultilineFieldRenderer } from \"./components/MultilineTextfield\";\nimport { createJsonataRenderer } from \"./components/JsonataRenderer\";\nimport {\n ActionRendererProps,\n ActionRendererRegistration,\n AdornmentPlacement,\n AdornmentRendererRegistration,\n appendMarkupAt,\n ArrayActionOptions,\n ControlDataContext,\n createActionRenderer,\n createDataRenderer,\n DataRendererRegistration,\n DataRenderType,\n DefaultRenderers,\n FieldOption,\n FieldType,\n hasOptions,\n isAccordionAdornment,\n isDataGroupRenderer,\n isDisplayOnlyRenderer,\n isIconAdornment,\n isOptionalAdornment,\n isSetFieldAdornment,\n isTextfieldRenderer,\n LabelRendererRegistration,\n LabelType,\n rendererClass,\n schemaDataForFieldRef,\n SetFieldAdornment,\n useDynamicHooks,\n wrapLayout,\n} from \"@react-typed-forms/schemas\";\nimport {\n createDefaultGroupRenderer,\n DefaultGroupRendererOptions,\n} from \"./components/DefaultGroupRenderer\";\nimport {\n AutocompleteRendererOptions,\n createAutocompleteRenderer,\n} from \"./components/AutocompleteRenderer\";\nimport {\n createOptionalAdornment,\n DefaultOptionalAdornmentOptions,\n} from \"./adornments/optionalAdornment\";\nimport {\n ArrayElementRendererOptions,\n createArrayElementRenderer,\n} from \"./components/ArrayElementRenderer\";\n\nexport interface DefaultRendererOptions {\n data?: DefaultDataRendererOptions;\n display?: DefaultDisplayRendererOptions;\n action?: DefaultActionRendererOptions;\n array?: DefaultArrayRendererOptions;\n group?: DefaultGroupRendererOptions;\n label?: DefaultLabelRendererOptions;\n adornment?: DefaultAdornmentRendererOptions;\n layout?: DefaultLayoutRendererOptions;\n}\n\nexport interface DefaultActionRendererOptions {\n className?: string;\n renderContent?: (\n actionText: string,\n actionId: string,\n actionData: any,\n ) => ReactNode;\n}\n\nexport function createButtonActionRenderer(\n actionId: string | string[] | undefined,\n options: DefaultActionRendererOptions = {},\n): ActionRendererRegistration {\n return createActionRenderer(\n actionId,\n ({\n onClick,\n actionText,\n className,\n style,\n actionId,\n actionData,\n disabled,\n }: ActionRendererProps) => {\n return (\n <button\n className={rendererClass(className, options.className)}\n disabled={disabled}\n style={style}\n onClick={onClick}\n >\n {options.renderContent?.(actionText, actionId, actionData) ??\n actionText}\n </button>\n );\n },\n );\n}\n\nexport const DefaultBoolOptions: FieldOption[] = [\n { name: \"Yes\", value: true },\n { name: \"No\", value: false },\n];\n\nexport interface DefaultDataRendererOptions {\n inputClass?: string;\n displayOnlyClass?: string;\n selectOptions?: SelectRendererOptions;\n checkboxOptions?: CheckRendererOptions;\n checkOptions?: CheckRendererOptions;\n radioOptions?: CheckRendererOptions;\n checkListOptions?: CheckRendererOptions;\n autocompleteOptions?: AutocompleteRendererOptions;\n arrayElementOptions?: ArrayElementRendererOptions;\n booleanOptions?: FieldOption[];\n optionRenderer?: DataRendererRegistration;\n multilineClass?: string;\n jsonataClass?: string;\n arrayOptions?: ArrayActionOptions;\n defaultEmptyText?: string;\n}\n\nexport function createDefaultDataRenderer(\n options: DefaultDataRendererOptions = {},\n): DataRendererRegistration {\n const jsonataRenderer = createJsonataRenderer(options.jsonataClass);\n const nullToggler = createNullToggleRenderer();\n const multilineRenderer = createMultilineFieldRenderer(\n options.multilineClass,\n );\n const checkboxRenderer = createCheckboxRenderer(\n options.checkOptions ?? options.checkboxOptions,\n );\n const selectRenderer = createSelectRenderer(options.selectOptions);\n const radioRenderer = createRadioRenderer(\n options.radioOptions ?? options.checkOptions,\n );\n const checkListRenderer = createCheckListRenderer(\n options.checkListOptions ?? options.checkOptions,\n );\n const arrayElementRenderer = createArrayElementRenderer(\n options.arrayElementOptions,\n );\n const {\n inputClass,\n booleanOptions,\n optionRenderer,\n displayOnlyClass,\n defaultEmptyText,\n } = {\n optionRenderer: selectRenderer,\n booleanOptions: DefaultBoolOptions,\n ...options,\n };\n const arrayRenderer = createDefaultArrayDataRenderer(options.arrayOptions);\n\n const autocompleteRenderer = createAutocompleteRenderer(\n options.autocompleteOptions,\n );\n\n return createDataRenderer((props, renderers) => {\n const { field } = props;\n const fieldType = field.type;\n const renderOptions = props.renderOptions;\n let renderType = renderOptions.type;\n if (\n field.collection &&\n props.elementIndex == null &&\n (renderType == DataRenderType.Standard ||\n renderType == DataRenderType.Array ||\n renderType == DataRenderType.ArrayElement)\n ) {\n if (renderType == DataRenderType.ArrayElement)\n return arrayElementRenderer.render(props, renderers);\n return arrayRenderer.render(props, renderers);\n }\n if (fieldType === FieldType.Compound) {\n const groupOptions = (isDataGroupRenderer(renderOptions)\n ? renderOptions.groupOptions\n : undefined) ?? { type: \"Standard\", hideTitle: true };\n return renderers.renderGroup({ ...props, renderOptions: groupOptions });\n }\n if (props.displayOnly || isDisplayOnlyRenderer(renderOptions))\n return (p) => {\n return {\n ...p,\n className: \"@ \" + rendererClass(p.className, displayOnlyClass),\n children: (\n <DefaultDisplayOnly\n field={props.field}\n schemaInterface={props.dataContext.schemaInterface}\n control={props.control}\n className={props.className}\n style={props.style}\n emptyText={\n isDisplayOnlyRenderer(renderOptions) && renderOptions.emptyText\n ? renderOptions.emptyText\n : defaultEmptyText\n }\n />\n ),\n };\n };\n const isBool = fieldType === FieldType.Bool;\n if (booleanOptions != null && isBool && props.options == null) {\n return renderers.renderData({ ...props, options: booleanOptions });\n }\n if (renderType === DataRenderType.Standard && hasOptions(props)) {\n return optionRenderer.render(props, renderers);\n }\n switch (renderType) {\n case DataRenderType.NullToggle:\n return nullToggler.render(props, renderers);\n case DataRenderType.CheckList:\n return checkListRenderer.render(props, renderers);\n case DataRenderType.Dropdown:\n return selectRenderer.render(props, renderers);\n case DataRenderType.Radio:\n return radioRenderer.render(props, renderers);\n case DataRenderType.Checkbox:\n return checkboxRenderer.render(props, renderers);\n case DataRenderType.Jsonata:\n return jsonataRenderer.render(props, renderers);\n case DataRenderType.Autocomplete:\n return autocompleteRenderer.render(props, renderers);\n }\n if (fieldType == FieldType.Any) {\n return (\n <>\n Can't render field: {field.displayName ?? field.field} ({renderType})\n </>\n );\n }\n if (isTextfieldRenderer(renderOptions) && renderOptions.multiline)\n return multilineRenderer.render(props, renderers);\n const placeholder = isTextfieldRenderer(renderOptions)\n ? renderOptions.placeholder\n : undefined;\n\n return (\n <ControlInput\n className={rendererClass(props.className, inputClass)}\n style={props.style}\n id={props.id}\n readOnly={props.readonly}\n control={props.control}\n placeholder={placeholder ?? undefined}\n convert={createInputConversion(props.field.type)}\n />\n );\n });\n}\n\nexport interface DefaultAccordionRendererOptions {\n className?: string;\n titleClass?: string;\n togglerClass?: string;\n iconOpenClass?: string;\n iconClosedClass?: string;\n renderTitle?: (\n title: string | undefined,\n current: Control<boolean>,\n ) => ReactNode;\n renderToggler?: (current: Control<boolean>, title: ReactNode) => ReactNode;\n useCss?: boolean;\n}\n\nexport interface DefaultAdornmentRendererOptions {\n accordion?: DefaultAccordionRendererOptions;\n optional?: DefaultOptionalAdornmentOptions;\n}\n\nexport function createDefaultAdornmentRenderer(\n options: DefaultAdornmentRendererOptions = {},\n): AdornmentRendererRegistration {\n const optional = createOptionalAdornment(options.optional);\n return {\n type: \"adornment\",\n render: (props, renderers) => {\n if (isOptionalAdornment(props.adornment)) {\n return optional.render(props, renderers);\n }\n const { adornment, designMode, dataContext, useExpr } = props;\n return {\n apply: (rl) => {\n if (isSetFieldAdornment(adornment) && useExpr) {\n const hook = useExpr(adornment.expression, (x) => x);\n const dynamicHooks = useDynamicHooks({ value: hook });\n const SetFieldWrapper = useTrackedComponent(setFieldWrapper, [\n dynamicHooks,\n ]);\n return wrapLayout((x) => (\n <SetFieldWrapper\n children={x}\n parentContext={dataContext}\n adornment={adornment}\n />\n ))(rl);\n\n function setFieldWrapper({\n children,\n adornment,\n parentContext,\n }: {\n children: ReactNode;\n adornment: SetFieldAdornment;\n parentContext: ControlDataContext;\n }) {\n const { value } = dynamicHooks(parentContext);\n const fieldNode = schemaDataForFieldRef(\n adornment.field,\n parentContext.parentNode,\n );\n const otherField = fieldNode.control;\n const always = !adornment.defaultOnly;\n useControlEffect(\n () => [value?.value, otherField?.value == null],\n ([v]) => {\n otherField?.setValue((x) => (always || x == null ? v : x));\n },\n true,\n );\n return children;\n }\n }\n if (isIconAdornment(adornment)) {\n return appendMarkupAt(\n adornment.placement ?? AdornmentPlacement.ControlStart,\n <i className={adornment.iconClass} />,\n )(rl);\n }\n if (isAccordionAdornment(adornment)) {\n return wrapLayout((x) => (\n <DefaultAccordion\n renderers={renderers}\n children={x}\n accordion={adornment}\n contentStyle={rl.style}\n contentClassName={rl.className}\n designMode={designMode}\n dataContext={dataContext}\n {...options.accordion}\n />\n ))(rl);\n }\n },\n priority: 0,\n adornment,\n };\n },\n };\n}\n\ninterface DefaultLabelRendererOptions {\n className?: string;\n groupLabelClass?: string;\n controlLabelClass?: string;\n requiredElement?: ReactNode;\n labelContainer?: (children: ReactElement) => ReactElement;\n}\n\nexport function createDefaultLabelRenderer(\n options?: DefaultLabelRendererOptions,\n): LabelRendererRegistration {\n const {\n className,\n groupLabelClass,\n controlLabelClass,\n requiredElement,\n labelContainer,\n } = {\n requiredElement: <span> *</span>,\n labelContainer: (c: ReactElement) => c,\n ...options,\n };\n return {\n render: (props, labelStart, labelEnd, renderers) => {\n if (props.type == LabelType.Text) return props.label;\n return labelContainer(\n <>\n <label\n htmlFor={props.forId}\n className={rendererClass(\n props.className,\n clsx(\n className,\n props.type === LabelType.Group && groupLabelClass,\n props.type === LabelType.Control && controlLabelClass,\n ),\n )}\n >\n {labelStart}\n {renderers.renderLabelText(props.label)}\n {props.required && requiredElement}\n </label>\n {labelEnd}\n </>,\n );\n },\n type: \"label\",\n };\n}\n\nexport function createDefaultRenderers(\n options: DefaultRendererOptions = {},\n): DefaultRenderers {\n return {\n data: createDefaultDataRenderer(options.data),\n display: createDefaultDisplayRenderer(options.display),\n action: createButtonActionRenderer(undefined, options.action),\n array: createDefaultArrayRenderer(options.array),\n group: createDefaultGroupRenderer(options.group),\n label: createDefaultLabelRenderer(options.label),\n adornment: createDefaultAdornmentRenderer(options.adornment),\n renderLayout: createDefaultLayoutRenderer(options.layout),\n visibility: createDefaultVisibilityRenderer(),\n };\n}\n\nexport function createClassStyledRenderers() {\n return createDefaultRenderers({\n layout: { className: \"control\" },\n group: { className: \"group\" },\n array: { className: \"control-array\" },\n action: { className: \"action\" },\n data: { inputClass: \"data\" },\n display: { htmlClassName: \"html\", textClassName: \"text\" },\n });\n}\n","import React from \"react\";\n\nimport { DefaultRendererOptions } from \"./createDefaultRenderers\";\n\nexport const defaultTailwindTheme = {\n label: {\n groupLabelClass: \"font-bold\",\n requiredElement: <span className=\"text-red-500\"> *</span>,\n },\n array: {\n removableClass: \"grid grid-cols-[1fr_auto] items-center gap-x-2\",\n childClass: \"grow my-2\",\n addActionClass: \"my-2\",\n removeActionClass: \"flex gap-2\",\n },\n group: {\n standardClassName: \"flex flex-col gap-4\",\n gridClassName: \"gap-x-2 gap-y-4\",\n flexClassName: \"gap-2\",\n tabs: {\n className: \"\",\n tabListClass:\n \"flex flex-wrap text-sm font-medium text-center text-gray-500 border-b border-gray-200 dark:border-gray-700 dark:text-gray-400\",\n tabClass: \"me-2\",\n labelClass:\n \"inline-flex items-center justify-center p-4 border-b-2 group\",\n inactiveClass:\n \"border-transparent rounded-t-lg hover:text-gray-600 hover:border-gray-300 dark:hover:text-gray-300 cursor-pointer\",\n activeClass:\n \"text-blue-600 border-blue-600 rounded-t-lg active dark:text-blue-500 dark:border-blue-500\",\n contentClass: \"my-2\",\n },\n },\n action: {\n className: \"bg-primary-500 rounded-lg p-3 text-white\",\n },\n layout: {\n className: \"flex flex-col\",\n errorClass: \"text-sm text-danger-500\",\n },\n data: {\n displayOnlyClass: \"flex flex-row items-center gap-2\",\n checkOptions: {\n className: \"flex items-center gap-4\",\n entryClass: \"flex gap-1 items-center\",\n },\n selectOptions: { emptyText: \"<select>\" },\n arrayElementOptions: { actionsClass: \"my-2 flex gap-2\" },\n multilineClass: \"border p-2 outline-0 whitespace-pre-wrap\",\n autocompleteOptions: {\n className:\n \"w-full flex gap-[5px] pr-[5px] overflow-hidden rounded-lg bg-white border border-solid border-gray-200 hover:border-primary-400 focus-visible:outline-0 shadow-[0_2px_4px_rgb(0_0_0_/_0.05)] min-h-[48px] py-1\",\n listContainerClass:\n \"absolute w-full text-sm box-border p-1.5 my-3 mx-0 min-w-[120px] rounded-xl overflow-auto outline-0 max-h-[300px] z-[1] bg-white border border-solid border-surface-200 text-surface-900 shadow-[0_4px_30px_transparent] shadow-surface-200\",\n listEntryClass:\n \"list-none p-2 rounded-lg cursor-default last-of-type:border-b-0 hover:cursor-pointer hover:bg-primary-100 aria-selected:bg-primary-200 aria-selected:text-primary-900 focused:bg-surface-100 focus-visible:bg-surface-100 focused:text-surface-900 focus-visible:text-surface-900 focus-visible:shadow-[0_0_0_3px_transparent] focus-visible:shadow-primary-200 focused:aria-selected:bg-primary-200 focus-visible:aria-selected:bg-primary-200 focused:aria-selected:text-primary-900 focus-visible:aria-selected:text-primary-900\",\n chipContainerClass:\n \"flex flex-row items-center px-3 py-1 rounded-full bg-surface-100 m-1 gap-2 truncate\",\n chipCloseButtonClass:\n \"fa-solid fa-xmark p-1 bg-surface-300 rounded-full min-w-[24px] flex justify-center text-surface-50 hover:bg-surface-400 hover:text-surface-100 hover:cursor-pointer\",\n },\n },\n adornment: {\n accordion: {\n className: \"flex items-center gap-2 my-2\",\n titleClass: \"cursor-pointer\",\n iconOpenClass: \"fa fa-chevron-up\",\n iconClosedClass: \"fa fa-chevron-down\",\n },\n optional: {\n checkClass: \"m-2\",\n className: \"flex items-center gap-2 w-full\",\n multiValuesClass: \"italic\",\n childWrapperClass: \"grow\",\n },\n },\n} satisfies DefaultRendererOptions;\n"],"names":["_excluded","createDefaultDisplayRenderer","options","render","props","React","createElement","DefaultDisplay","_extends","type","_ref","_effect","_useComponentTracking","data","display","className","style","_objectWithoutPropertiesLoose","DisplayDataType","Icon","clsx","getOverrideClass","value","iconClass","Text","rendererClass","textClassName","coerceToString","text","Html","htmlClassName","dangerouslySetInnerHTML","__html","html","Custom","customId","ControlInput","control","convert","_formControlProps","formControlProps","inputProps","_excluded2","textValue","useControl","toText","useControlEffect","v","onChange","e","target","converted","undefined","createInputConversion","ft","FieldType","String","a","Bool","_a$toString","toString","Int","parseInt","DateTime","Date","Time","l","length","substring","Double","parseFloat","createSelectRenderer","createDataRenderer","asArray","_props$options","SelectDataRenderer","state","id","readonly","required","emptyText","requiredText","createSelectConversion","field","disabled","showEmpty","useState","optionStringMap","useMemo","Object","fromEntries","map","x","optionGroups","Set","filter","group","keys","key","label","o","renderOption","i","name","createRadioRenderer","p","CheckButtons","classes","controlClasses","renderOptions","isChecked","setChecked","c","entryAdornment","fieldOptionAdornment","renderType","DataRenderType","Radio","createCheckListRenderer","Array","isArray","includes","checked","setValue","setIncluded","collection","CheckList","uniqueId","RenderArrayElements","array","useComputed","selOrUnsel","selectedClass","notSelectedClass","entryWrapperClass","onClick","entryClass","checkClass","readOnly","labelClass","htmlFor","elem","included","createCheckboxRenderer","renderer","children","Fcheckbox","as","renderLabel","Checkbox","createDefaultLayoutRenderer","createLayoutRenderer","renderers","layout","renderLayoutParts","wrapLayout","DefaultLayout","divRef","errorControl","meta","scrollElement","errorClass","renderError","controlEnd","controlStart","Fragment","touched","error","DefaultDisplayOnly","schemaInterface","isEmptyValue","DefaultAccordion","accordion","contentStyle","contentClassName","designMode","iconOpenClass","iconClosedClass","renderTitle","t","renderToggler","titleClass","useCss","dataContext","_dataContext$dataNode","dataControl","dataNode","parentNode","open","defaultExpanded","accordionState","isOpen","fullContentStyle","title","renderLabelText","toggler","getAccordionState","TabsGroupRenderer","formNode","renderChild","tabIndex","tabClass","tabListClass","inactiveClass","activeClass","contentClass","currentTab","getChildNodes","renderTabs","tabs","definition","createDefaultGroupRenderer","tabsRenderer","createGroupRenderer","GroupRenderType","Tabs","createTabsRenderer","gridStyles","defaultGridStyles","defaultGridColumns","gridClassName","standardClassName","flexClassName","defaultFlexGap","columns","gridTemplateColumns","isTabsRenderer","isSelectChildRenderer","SelectChildGroupRenderer","gcn","isGridRenderer","isFlexRenderer","gap","flexDirection","direction","flexStyles","useEvalExpression","dynHook","childIndexExpression","Render","useTrackedComponent","ctrl","runHook","childIndex","childDefinitions","deps","createDefaultVisibilityRenderer","createVisibilityRenderer","DefaultVisibility","visibility","useEffect","ex","visible","showing","ref","createJsonataRenderer","JsonataRenderer","Jsonata","sdn","elementIndex","bindings","formData","dataPath","getJsonPath","rendered","useJsonataExpression","expression","getRootDataNode","createNullToggleRenderer","lastDefined","getLastDefinedValue","current","defaultValue","nullControl","getNullToggler","renderData","createDefaultArrayDataRenderer","defaultActions","DataArrayRenderer","dataProps","_definition$children","useChildVisibility","addText","noAdd","noRemove","removeText","editExternal","mergeObjects","isArrayRenderer","childOptions","renderAsElement","isCompoundField","childDefinition","nodeForControl","ControlDefinitionType","Data","Standard","hideTitle","Group","groupOptions","tree","visibilities","makeHookDepString","Entry","RenderEntry","arrayProps","createArrayActions","renderElement","wrap","index","renderChildElement","getLengthRestrictions","renderArray","elementNode","_control$elements$i$u","_control$elements","elements","parentDataNode","getChildElement","childVis","hook","def","lookupDataNode","some","createDefaultArrayRenderer","renderAction","DefaultArrayRenderer","removableClass","childClass","removableChildClass","removeActionClass","addActionClass","arrayControl","editAction","addAction","removeAction","applyArrayLengthRestrictions","RenderElements","_","inputClass","createAutocompleteRenderer","_p$options","_p$options2","MultipleAutocomplete","SingleAutocomplete","Autocomplete","_controlClasses$place","_objectDestructuringEmpty","inputControl","selectedOptionControl","listContainerClass","listEntryClass","controlValues","selected","getRootProps","getInputProps","getListboxProps","getOptionProps","groupedOptions","popupOpen","focused","getPopupIndicatorProps","useAutocomplete","freeSolo","multiple","inputValue","getOptionLabel","filterOptions","s","toLowerCase","onInputChange","reason","placeholder","option","optionProps","_ref2","_effect2","_selectedOptionsContr","_selectedOptionsContr2","_controlClasses$place2","selectedOptionsControl","chipContainerClass","chipCloseButtonClass","_selected$map","selectedValues","concat","Chip","onDeleteClick","find","removeElement","_effect3","RenderType","ValueForFieldExtension","RenderOptions","fields","buildSchema","fieldRef","stringField","createValueForFieldRenderer","_schemaDataForFieldRe","actualFieldRef","schemaDataForFieldRef","node","schemaForFieldRef","schema","ValueForField","default","setFields","controls","rootSchema","rootSchemaNode","notNullable","onlyForTypes","addMissingControlsForSchema","useControlRendererComponent","groupedControl","makeSchemaDataNode","createOptionalAdornment","createAdornmentRenderer","_dataContext$dataNode2","newControl","adornment","editing","getIsEditing","isEditing","nullToggler","editSelectable","allowNull","apply","rl","_adornment$placement","formOptions","hideEdit","appendMarkupAt","placement","defaultPlacement","AdornmentPlacement","LabelStart","wrapMarkup","customRender","allValues","getAllValues","OptionalEditRenderer","priority","adornmentType","ControlAdornmentType","Optional","_options$setNullText","_options$multiValuesT","multipleValues","nullEdit","nullWrapperClass","notValue","setNullText","multiValuesClass","multiValuesText","childWrapperClass","MultilineTextfield","codeRef","useRef","textContent","contentEditable","onInput","currentTarget","ArrayElementRenderer","formRenderer","extData","getExternalEditData","overlayState","useOverlayTriggerState","onOpenChange","editContent","actionsClass","actions","showInline","Modal","Dialog","createButtonActionRenderer","actionId","createActionRenderer","actionText","actionData","_options$renderConten","renderContent","DefaultBoolOptions","createDefaultDataRenderer","_options$checkOptions","_options$radioOptions","_options$checkListOpt","jsonataRenderer","jsonataClass","multilineRenderer","multilineClass","checkboxRenderer","checkOptions","checkboxOptions","selectRenderer","selectOptions","radioRenderer","radioOptions","checkListRenderer","checkListOptions","arrayElementRenderer","ArrayElement","createArrayElementRenderer","arrayElementOptions","booleanOptions","optionRenderer","displayOnlyClass","defaultEmptyText","arrayRenderer","arrayOptions","autocompleteRenderer","autocompleteOptions","fieldType","Compound","isDataGroupRenderer","renderGroup","displayOnly","isDisplayOnlyRenderer","hasOptions","NullToggle","Dropdown","_field$displayName","Any","displayName","isTextfieldRenderer","multiline","createDefaultAdornmentRenderer","optional","isOptionalAdornment","useExpr","isSetFieldAdornment","dynamicHooks","useDynamicHooks","SetFieldWrapper","setFieldWrapper","parentContext","otherField","always","defaultOnly","isIconAdornment","ControlStart","isAccordionAdornment","createDefaultLabelRenderer","groupLabelClass","controlLabelClass","requiredElement","labelContainer","labelStart","labelEnd","LabelType","forId","Control","createDefaultRenderers","action","renderLayout","createClassStyledRenderers","defaultTailwindTheme"],"mappings":"m4EAAA,MAAAA,GAAA,CAAA,OAAA,UAAA,YAAA,kBAoBgBC,GACdC,EAAyC,CAAE,GAE3C,MAAO,CACLC,OAASC,gBAAUC,EAAAC,cAACC,GAAcC,GAAKN,CAAAA,EAAAA,EAAaE,IACpDK,KAAM,UAEV,CAEgB,SAAAF,GAAcG,GAAA,IAAAC,EAAAC,KAAA,IAAA,IAACC,KAC7BA,EAAIC,QACJA,EAAOC,UACPA,EAASC,MACTA,GAEqDN,EADlDR,EAAOe,GAAAP,EAAAV,IAEV,OAAQa,EAAKJ,MACX,KAAKS,EAAgBC,kBACnB,OACEd,EAAAC,cACEU,IAAAA,CAAAA,MAAOA,EACPD,UAAWK,EACTC,EAAiBN,GACjBD,EAAUA,EAAQQ,MAAST,EAAqBU,aAIxD,KAAKL,EAAgBM,kBACnB,OACEnB,EAAAC,cAAA,MAAA,CACEU,MAAOA,EACPD,UAAWU,EAAcV,EAAWb,EAAQwB,gBAE3CZ,EAAUa,EAAeb,EAAQQ,OAAUT,EAAqBe,MAGvE,KAAKV,EAAgBW,kBACnB,OACExB,EAAAC,cACEU,MAAAA,CAAAA,MAAOA,EACPD,UAAWU,EAAcV,EAAWb,EAAQ4B,eAC5CC,wBAAyB,CACvBC,OAAQlB,EACJa,EAAeb,EAAQQ,OACtBT,EAAqBoB,QAIlC,KAAKf,EAAgBgB,oBACnB,OACE7B,EAAAC,cAAA,MAAA,kBACED,EAAAC,cAAA,IAAA,KAAG,IAAGO,EAAuBsB,SAAS,MAG5C,qBACE,OAAO9B,EAAAC,cAAI,KAAA,KAAA,yBAAuBO,EAAKJ,MAC1C,SAAAE,GAAA,CAAA,oECnEG,SAAUyB,GAAY1B,GAAA,IAAAC,EAAAC,KAAA,IAAA,IAACyB,QAC3BA,EAAOC,QACPA,GAKD5B,EAJIN,EAAKa,GAAAP,EAAAV,IAKR,MAAAuC,EACEC,GAAiBH,IADbf,MAAaA,GAAgCiB,EAAZE,EAAUxB,GAAAsB,EAAAG,IAE3CC,EAAYC,GAAW,IAAMC,EAAOvB,IAK1C,OAJAwB,GACE,IAAMT,EAAQf,MACbyB,GAAOJ,EAAUrB,MAAQuB,EAAOE,iBAGjC1C,EAAAC,cAAA,QAAAE,GAAA,CAAA,EACMiC,EAAU,CACdhC,KAAM6B,EAAQ,GACdhB,MAAOqB,EAAUrB,MACjB0B,SAAWC,IACTN,EAAUrB,MAAQ2B,EAAEC,OAAO5B,MAC3B,MAAM6B,EAAYb,EAAQ,GAAGW,EAAEC,OAAO5B,YACpB8B,IAAdD,IAAyBd,EAAQf,MAAQ6B,EAAAA,GAE3C/C,IAIR,SAASyC,EAAOvB,GACd,OAAgB,MAATA,EAAgB,GAAKgB,EAAQ,GAAGhB,EACzC,CAAC,CAAAX,QAAAA,GASH,CAAA,CAAgB,SAAA0C,GAAsBC,GACpC,OAAQA,GACN,KAAKC,EAAUC,OACb,MAAO,CAAC,OAASC,GAAMA,EAAIA,GAAMA,GACnC,KAAKF,EAAUG,KACb,MAAO,CACL,OACCD,GAAa,SAANA,GAA4B,UAANA,QAAwBL,EACrDK,IAAC,IAAAE,EAAA,cAAAA,EAAKF,MAAAA,OAAAA,EAAAA,EAAGG,YAAUD,EAAI,KAE5B,KAAKJ,EAAUM,IACb,MAAO,CACL,SACCJ,GAAa,KAANA,EAAWK,SAASL,GAAK,KAChCA,GAAY,MAALA,EAAY,GAAKA,GAE7B,KAAKF,EAAUQ,SACb,MAAO,CAAC,iBAAmBN,GAAQA,GAAI,KAAYA,GAAMA,GAC3D,KAAKF,EAAUS,KACb,MAAO,CAAC,OAASP,GAAQA,GAAI,KAAYA,GAAMA,GACjD,KAAKF,EAAUU,KACb,MAAO,CACL,OACCR,IACC,MAAMS,EAAIT,EAAEU,OACZ,OAAU,IAAND,EAAgBT,EAAI,MACd,IAANS,EAAgBT,OAApB,CACOL,EAERK,GAAOA,EAAIA,EAAEW,UAAU,EAAG,GAAK,IAEpC,KAAKb,EAAUc,OACb,MAAO,CACL,SACCZ,GAAa,KAANA,EAAWa,WAAWb,GAAK,KAClCA,GAAY,MAALA,EAAY,GAAKA,GAE7B,QACE,MAAO,CAAC,OAASA,GAAMA,EAAIA,GAAMA,GAEvC,qGC1EgB,SAAAc,GAAqBrE,EAAiC,CAAA,GACpE,OAAOsE,EACL,CAACpE,EAAOqE,KAAOC,IAAAA,eACbrE,OAAAA,EAAAC,cAACqE,GACC5D,CAAAA,UAAWU,EAAcrB,EAAMW,UAAWb,EAAQa,WAClD6D,MAAOxE,EAAMiC,QACbwC,GAAIzE,EAAMyE,GACVC,SAAU1E,EAAM0E,SAChB5E,QAAsBwE,OAAfA,EAAEtE,EAAMF,SAAOwE,EAAI,GAC1BK,SAAU3E,EAAM2E,SAChBC,UAAW9E,EAAQ8E,UACnBC,aAAc/E,EAAQ+E,aACtB3C,QAAS4C,GAAuB9E,EAAM+E,MAAM1E,OAC5C,EAEJ,CACEP,SAAS,GAGf,CAgBgB,SAAAyE,GAAkBjE,GAAA,IAAAC,EAAAC,KAAA,IAAA,IAACgE,MACjCA,EAAK1E,QACLA,EAAOa,UACPA,EAASuB,QACTA,EAAOyC,SACPA,EAAQC,UACRA,EAAY,MAAKC,aACjBA,EAAe,kBAAiBH,SAChCA,GAEwBpE,EADrBN,EAAKa,GAAAP,EAAAV,IAER,MAAMsB,MAAEA,EAAK8D,SAAEA,GAAaR,GACrBS,GAAaC,GAAUP,GAAqB,MAATzD,GACpCiE,EAAkBC,EACtB,IAAMC,OAAOC,YAAYxF,EAAQyF,IAAKC,GAAM,CAACtD,EAAQsD,EAAEtE,OAAQsE,EAAEtE,SACjE,CAACpB,IAEG2F,EAAeL,EACnB,IAAM,IAAIM,IAAI5F,EAAQ6F,OAAQH,GAAMA,EAAEI,OAAOL,IAAKC,GAAMA,EAAEI,QAC1D,CAAC9F,iBAEH,OACEG,EAAAC,cAAA,SAAAE,GACMJ,CAAAA,EAAAA,EACJW,CAAAA,UAAWA,EACXiC,SAAWD,GAAO6B,EAAMtD,MAAQiE,EAAgBxC,EAAEG,OAAO5B,OACzDA,MAAOgB,EAAQhB,GACf8D,SAAUA,GAAYN,IAErBO,gBACChF,EAAAC,cAAA,SAAA,CAAQgB,MAAM,IAAIyD,EAAWE,EAAeD,GAE7C,IAAIa,EAAaI,QAAQN,IAAKC,gBAC7BvF,EAAAC,cAAA,WAAA,CAAU4F,IAAKN,EAAGO,MAAOP,GACtB1F,EAAQ6F,OAAQK,GAAMA,EAAEJ,QAAUJ,GAAGD,IAAIU,KAG7CnG,EAAQ6F,OAAQH,IAAOA,EAAEI,OAAOL,IAAIU,IAIzC,SAASA,EAAaT,EAAgBU,gBACpC,OACEjG,EAAAC,cAAA,SAAA,CAAQ4F,IAAKI,EAAGhF,MAAOgB,EAAQsD,EAAEtE,OAAQ8D,WAAYQ,EAAER,UACpDQ,EAAEW,KAGT,CAAC,CAAA,QAAA5F,GAAA,CAAA,CAGG,SAAUuE,GAAuB5B,GACrC,OAAQA,GACN,KAAKC,EAAUC,OACf,KAAKD,EAAUM,IACf,KAAKN,EAAUc,OACb,OAAQZ,GAAMA,EAChB,QACE,OAAQA,IAAC,IAAAE,EAAA,OAAkB,OAAlBA,EAAM,MAADF,OAAC,EAADA,EAAGG,YAAUD,EAAI,IAErC,UCnFgB6C,GAAoBtG,EAAgC,IAClE,OAAOsE,EACJiC,gBACCpG,EAAAC,cAACoG,GAAYlG,GAAA,CACXmG,QAASzG,EACT0G,eAAgBH,EAAEI,eACdJ,EAAC,CACL1F,UAAWU,EAAcgF,EAAE1F,UAAWb,EAAQa,WAC9C+F,UAAWA,CAACzE,EAAS+D,IAAM/D,EAAQf,OAAS8E,EAAE9E,MAC9CyF,WAAYA,CAACC,EAAGZ,IAAOY,EAAE1F,MAAQ8E,EAAE9E,MACnCe,QAASoE,EAAEpE,QACX5B,KAAK,QACLwG,eAAgBC,EAAqBT,MAGzC,CACEU,WAAYC,EAAeC,OAGjC,UAEgBC,GAAwBpH,EAAgC,CAAA,GACtE,OAAOsE,EACJiC,gBACCpG,EAAAC,cAACoG,GAAYlG,GAAA,CACXmG,QAASzG,EACT0G,eAAgBH,EAAEI,eACdJ,EAAC,CACL1F,UAAWU,EAAcgF,EAAE1F,UAAWb,EAAQa,WAC9C+F,UAAWA,CAACzE,EAAS+D,KACnB,MAAMrD,EAAIV,EAAQf,MAClB,QAAOiG,MAAMC,QAAQzE,IAAKA,EAAE0E,SAASrB,EAAE9E,MAAS,EAElDyF,WAAYA,CAACC,EAAGZ,EAAGsB,KACjBV,EAAEW,SAAU/B,GAAMgC,SAAYhC,EAAAA,EAAK,GAAIQ,EAAE9E,MAAOoG,GAClD,EACArF,QAASoE,EAAEpE,QACX5B,KAAK,WACLwG,eAAgBC,EAAqBT,MAGzC,CACEoB,YAAY,EACZV,WAAYC,EAAeU,WAGjC,CAgBM,SAAUpB,IAAarE,QAC3BA,EAAOnC,QACPA,EAAO4E,SACPA,EAAQ/D,UACRA,EAAS8D,GACTA,EAAEpE,KACFA,EAAIqG,UACJA,EAASC,WACTA,EAAUE,eACVA,EAAcN,QACdA,EAAOC,eACPA,EAAiB,CACC,IAAA,IAAAjG,EAAAC,SAClB,MAAMwE,SAAEA,GAAa/C,EACfkE,EAAO,IAAMlE,EAAQ0F,sBAC3B,OACE1H,EAAAC,cAAKS,MAAAA,CAAAA,UAAWA,EAAW8D,GAAIA,gBAC7BxE,EAAAC,cAAC0H,IAAoBC,MAAO/H,MAAAA,OAAAA,EAAAA,EAAS6F,OAAQH,GAAiB,MAAXA,EAAEtE,QAClD,CAAC8E,EAAGE,KACH,MAAMoB,EAAUQ,GAAY,IAAMpB,EAAUzE,EAAS+D,IAAI9E,MACnD6G,EAAaT,EACfjG,EACgB,MAAdmF,OAAc,EAAdA,EAAgBwB,cAChBzB,EAAQyB,eAEV3G,QACEmF,SAAAA,EAAgByB,iBAChB1B,EAAQ0B,+BAEd,OACEhI,EAAAC,cAAA,MAAA,CACES,UAAWK,EACTK,EACEmF,MAAAA,OAAAA,EAAAA,EAAgB0B,kBAChB3B,EAAQ2B,mBAEVH,GAEFI,QAASA,KAAOzD,GAAYiC,EAAW1E,EAAS+D,GAAIsB,iBAEpDrH,EAAAC,cAAKS,MAAAA,CAAAA,UAAW4F,EAAQ6B,yBACtBnI,EAAAC,cAAA,QAAA,CACEuE,GAAI0B,EAAO,IAAMD,EACjBvF,UAAW4F,EAAQ8B,WACnBhI,KAAMA,EACN8F,KAAMA,EACNmC,SAAU5D,EACVM,SAAUA,EACVsC,QAASA,EACT1E,SAAW4C,KACRd,GAAYiC,EAAW1E,EAAS+D,EAAGR,EAAE1C,OAAOwE,yBAGjDrH,EAAAC,cAAOS,QAAAA,CAAAA,UAAW4F,EAAQgC,WAAYC,QAASrC,EAAO,IAAMD,GACzDF,EAAEG,OAGQ,MAAdU,OAAc,EAAdA,EAAiBb,EAAGE,EAAGoB,GACrB,GAKb,SAAA/G,GAAA,CAAA,CAGY,SAAAiH,GAAeK,EAAYY,EAASC,GAElD,OAAIA,IADYb,EAAMR,SAASoB,GAEtBZ,EAELa,EACK,IAAIb,EAAOY,GAEbZ,EAAMlC,OAAQ9C,GAAMA,IAAM4F,EACnC,CAEgB,SAAAE,GAAuB7I,EAAgC,CAAA,GACrE,OAAOsE,EACL,CAACpE,EAAO4I,IAAcvC,GAACjG,MAClBiG,EAAC,CACJN,WAAO/C,EACP6F,sBACE5I,EAAAC,qBAAKS,UAAWU,EAAcrB,EAAMW,UAAWb,EAAQsI,0BACrDnI,EAAAC,cAAC4I,GACCrE,CAAAA,GAAIzE,EAAMyE,GACVxC,QAASjC,EAAMiC,QAAQ8G,KACvBnI,MAAOZ,EAAMY,MACbD,UAAWb,EAAQuI,aAEpBhC,EAAEN,OAAS6C,EAASI,YAAY3C,EAAEN,WAAO/C,OAAWA,MAI3D,CAAE+D,WAAYC,EAAeiC,UAEjC,CC1KgB,SAAAC,GACdpJ,EAAwC,IAExC,OAAOqJ,EAAqB,CAACnJ,EAAOoJ,KAClC,MAAMC,EAASC,EAAkBtJ,EAAOoJ,GACxC,MAAO,CACLP,SAAUQ,EAAOE,wBACftJ,EAAAC,cAACsJ,GAAapJ,GAAA,CAACiJ,OAAQA,GAAYvJ,KAErCa,UAAWU,EAAcgI,EAAO1I,UAAWb,EAAQa,WACnDC,MAAOyI,EAAOzI,MACd6I,OAAS5G,GACPA,GAAK7C,EAAM0J,aACN1J,EAAM0J,aAAaC,KAAKC,cAAgB/G,OACzCG,IAGZ,CAEgB,SAAAwG,IAAcK,WAC5BA,EAAUC,YACVA,EAAejH,GAAMA,gBAAK5C,EAAAC,cAAKS,MAAAA,CAAAA,UAAWkJ,GAAahH,GACvDwG,QAAQU,WAAEA,EAAUC,aAAEA,EAAYjE,MAAEA,EAAK8C,SAAEA,EAAQa,aAAEA,KAGtD,IAAAnJ,EAAAC,sBAGC,OACEP,EAAAC,cAAAD,EAAAgK,SAAA,KACGlE,EACAiE,EACAnB,EACAiB,EAPMJ,KACgBQ,QADhBR,EAC6BS,WAAQnH,GAO3C+G,EAEH,CAAA,QAAAxJ,GAAA,CAAA,CC1CY,SAAA6J,IAAmBnI,QACjCA,EAAOtB,UACPA,EAASiE,UACTA,EAASyF,gBACTA,EAAetF,MACfA,EAAKnE,MACLA,IAQD,IAAAL,EAAAC,aAAAF,EACC,MAAMqC,EAAIV,EAAQf,MACZM,EAGmClB,OAH/BA,EACP+J,EAAgBC,aAAavF,EAAOpC,GACjCiC,EACAyF,EAAgB9H,UAAUwC,EAAOpC,IAAErC,EAAK,gBAC9C,OACEL,EAAAC,cAAKU,MAAAA,CAAAA,MAAOA,EAAOD,UAAWA,GAC3Ba,EAEH,SAAAjB,GAAA,CAAA,CCtBY,SAAAgK,IAAiB1B,SAC/BA,EAAQ2B,UACRA,EAASC,aACTA,EAAYC,iBACZA,EAAgBC,WAChBA,EAAUC,cACVA,EAAaC,gBACbA,EAAelK,UACfA,EAASmK,YACTA,EAAeC,GAAMA,EAACC,cACtBA,EAAa5B,UACbA,EAAS6B,WACTA,EAAUC,OACVA,EAAMC,YACNA,IASiC5K,IAAAA,EAAAC,KAAA4K,IAAAA,IAAAA,EACjC,MAAMC,GAAmCD,OAArBA,EAACD,EAAYG,UAAQF,EAAID,EAAYI,YAAYtJ,QAC/DuJ,EAAOhJ,KAAagI,EAAUiB,iBAChCJ,IAAgBA,EAAY1B,KAAK+B,iBACnCL,EAAY1B,KAAK+B,eAAiBF,GAEpC,MAAMG,EAASH,EAAKtK,MACd0K,EACJD,GAAUhB,EAAaF,EAAYrK,GAAQqK,CAAAA,EAAAA,EAAc/J,CAAAA,QAAS,SAC9DmL,EAAQzC,EAAU0C,gBAAgBhB,EAAYN,EAAUqB,MAAOL,IAC/DO,EAAUf,EACdA,EAAcQ,EAAMK,gBAEpB5L,EAAAC,cAAA,SAAA,CAAQS,UAAWA,EAAWwH,QAASA,IAAMqD,EAAKjE,SAAU/B,IAAOA,iBACjEvF,EAAAC,cAAA,QAAA,CAAOS,UAAWsK,GAAaY,gBAC/B5L,EAAAC,cAAA,IAAA,CAAGS,UAAWK,EAAK2K,EAASf,EAAgBC,mBAIhD,OACE5K,EAAAC,cAAAD,EAAAgK,SACG8B,KAAAA,GACCb,GAAUS,GAAUhB,iBACpB1K,EAAAC,cAAKU,MAAAA,CAAAA,MAAOgL,EAAkBjL,UAAW+J,GACtC7B,GAIP,CAAA,QAAAtI,GAAA,CAAA,CAGE,SAAUyL,GACdpF,GAEA,OAAOA,EAAE+C,KAAK+B,cAChB,CCrCgB,SAAAO,IAAkBC,SAChCA,EAAQvL,UACRA,EAASb,QACTA,EAAOqM,YACPA,EAAWxB,WACXA,IACsD,IAAApK,EAAAC,KACtD,IAAA,MAAM4L,EAAW5J,GAAW,IACtB6J,SACJA,EAAQ9D,WACRA,EAAU+D,aACVA,EAAYC,cACZA,EAAaC,YACbA,EAAWC,aACXA,GACE3M,EACE4M,EAAaN,EAASlL,MAC5B,OAAOyJ,eACL1K,EAAAC,cAAAD,EAAAgK,SAAGiC,KAAAA,EAASS,gBAAgBpH,IAAI,CAACC,EAAGU,IAAM0G,EAAW,CAACpH,GAAIU,KAE1D0G,EAAWV,EAASS,gBAAiB,GAGvC,SAASC,EAAWC,EAAkB/G,gBACpC,OACE7F,EAAAC,cAAK4F,MAAAA,CAAAA,IAAKA,EAAKnF,UAAWU,EAAcV,EAAWb,EAAQa,yBACzDV,EAAAC,oBAAIS,UAAWU,EAAc,KAAMiL,IAChCO,EAAKtH,IAAI,CAACC,EAAGU,iBACZjG,EAAAC,cAAA,KAAA,CACE4F,IAAKI,EACLvF,UAAWU,EAAc,KAAMgL,GAC/BlE,QAASA,IAAOiE,EAASlL,MAAQgF,gBAEjCjG,EAAAC,cACES,OAAAA,CAAAA,UAAWU,EACT,KACAL,EACEuH,EACArC,GAAKwG,EAAaF,EAAcD,KAInC/G,EAAEsH,WAAWjB,MAAQrG,EAAEsH,WAAWjB,MAAQ,8BAKnD5L,EAAAC,cAAA,MAAA,CAAKS,UAAWU,EAAc,KAAMoL,IACjCN,EAAYO,EAAYG,EAAKH,KAItC,CAAC,SAAAnM,GAAA,CAAA,CChDa,SAAAwM,GACdjN,GAEA,MAAMkN,WDhB2BlN,EAA+B,IAChE,OAAOmN,EACL,CAAC5G,EAAGuC,iBAAa3I,EAAAC,cAAC+L,GAAiB7L,GAAKiG,CAAAA,EAAAA,EAAGvG,CAAAA,QAASA,KACpD,CACEiH,WAAYmG,EAAgBC,MAGlC,CCSuBC,CAA0B,MAAPtN,OAAO,EAAPA,EAAS+M,OAC3ClM,UACJA,EAAS0M,WACTA,EAAaC,EAAiBC,mBAC9BA,EAAqB,EAACC,cACtBA,EAAaC,kBACbA,EAAiBC,cACjBA,EAAaC,eACbA,GACE7N,MAAAA,EAAAA,EAAW,CAAE,EAEjB,SAASwN,GAAkBM,QACzBA,EAAUL,IAEV,MAAO,CACL5M,UAAW6M,EACX5M,MAAO,CACLF,QAAS,OACTmN,oBAAqB,UAAUD,WAGrC,CAwCA,MAAO,CAAEvN,KAAM,QAASN,OAzBxB,SAAgBC,EAA2BoJ,GACzC,MAAM+C,YAAEA,EAAW1F,cAAEA,EAAayF,SAAEA,GAAalM,EACjD,GAAI8N,EAAerH,GACjB,OAAOuG,EAAajN,OAAOC,EAAOoJ,GACpC,GAAI2E,EAAsBtH,KAAmBzG,EAAM2K,wBACjD,OACE1K,EAAAC,cAAC8N,GAAwB5N,GAAA,CAAA,EAAKJ,EAAK,CAAEyG,cAAeA,KAIxD,MAAM7F,MAAEA,EAAOD,UAAWsN,GAAQC,EAAezH,GAC7C4G,EAAW5G,GACX0H,EAAe1H,GAzBrB,SAAoB3G,GAClB,MAAO,CACLa,UAAW+M,EACX9M,MAAO,CACLF,QAAS,OACT0N,IAAKtO,EAAQsO,IAAMtO,EAAQsO,IAAMT,EACjCU,cAAevO,EAAQwO,UAClBxO,EAAQwO,eACTtL,GAGV,CAeQuL,CAAW9H,GACV,CAAE9F,UAAW8M,gBACpB,OACExN,EAAAC,cAAA,MAAA,CACES,UAAWU,EAAcrB,EAAMW,UAAWK,EAAKL,EAAWsN,IAC1DrN,MAAOA,GAENsL,EAASS,gBAAgBpH,IAAI,CAACqB,EAAGV,IAAMiG,EAAYjG,EAAGU,IAG7D,EAGF,CAQA,SAASoH,GAAyBhO,GAAuB,IAAAO,EAAAC,KAAA,IACvD,MAAMgO,kBAAEA,EAAiB/H,cAAEA,GAAkBzG,EACvCyO,EAAUD,EAA+B,MAAb/H,OAAa,EAAbA,EAAeiI,qBAAuBlJ,GACjE,UAALA,EAAgB9B,SAAS8B,GAAKA,GAE1BmJ,EAASC,GACZvI,IACC,MAAMwI,EAAOJ,EAAQK,QAAQzI,EAAE8E,YAAasD,EAAQjK,OAC9CuK,EAAaF,MAAAA,OAAAA,EAAAA,EAAM3N,MACnB8N,EAAmB3I,EAAE6F,SAASS,6BACpC,OACE1M,EAAAC,cAAA,MAAA,KACyB,iBAAf6O,GACNA,EAAaC,EAAiBjL,QAC9BgL,GAAc,GACd1I,EAAE8F,YAAY4C,EAAYC,EAAiBD,IAC1C,EAGT,CAACN,EAAQQ,oBAEX,OAAOhP,EAAAC,cAACyO,EAAW3O,EAAU,CAAA,QAAAO,GAAA,CAAA,UC1Hf2O,KACd,OAAOC,EAA0BnP,gBAAUC,EAAAC,cAACkP,GAAsBpP,GACpE,CAEgB,SAAAoP,IAAkBC,WAChCA,EAAUxG,SACVA,EAAQlI,UACRA,EAASC,MACTA,EAAK6I,OACLA,IACwB,IAAAlJ,EAAAC,KACxB,IAAA,MAAMmC,EAAI0M,EAAWnO,MAMrB,OALAoO,EAAU,KACJ3M,GACF0M,EAAW9H,SAAUgI,IAAQ,CAAEC,QAAS7M,EAAE6M,QAASC,QAAS9M,EAAE6M,UAChE,EACC,CAAE,MAAD7M,OAAC,EAADA,EAAG6M,UACC,MAAD7M,GAAAA,EAAG6M,qBACRvP,EAAAC,cAAA,MAAA,CAAKS,UAAWK,EAAKL,GAAYC,MAAOA,EAAO8O,IAAKjG,GACjDZ,gBAGH5I,EAAAC,cAAAD,EAAAgK,SAAK,KACL,SAAA1J,GAAA,CAAA,CCfY,SAAAoP,GAAsBhP,GACpC,OAAOyD,EACJiC,gBACCpG,EAAAC,cAAC0P,GACCnJ,CAAAA,cAAeJ,EAAEI,cACjB9F,UAAWU,EAAcgF,EAAE1F,UAAWA,GACtC2K,SAAUjF,EAAEiF,SACZH,YAAa9E,EAAE8E,YACflJ,QAASoE,EAAEpE,QACXyC,SAAU2B,EAAE3B,WAGhB,CAAEqC,WAAYC,EAAe6I,SAEjC,CAEgB,SAAAD,IAAgB3N,QAC9BA,EAAOwE,cACPA,EAAa/B,SACbA,EAAQ/D,UACRA,EAASwK,YACTA,EAAWG,SACXA,QAQD/K,EAAAC,KAAA,IACC,MAAMsP,EAA+B,MAAzBxE,EAASyE,aAAuBzE,EAAWH,EAAYI,WAC7DyE,EAAWlI,GAAY,MAC3B5G,MAAOe,EAAQf,MACfwD,WACAM,SAAU/C,EAAQ+C,SAClBiL,SAAU9E,EAAY8E,SACtBC,SAAUC,EAAY7E,MAElB8E,EAAWC,EACf5J,EAAc6J,WACdC,EAAgBT,GAAK7N,QACrBkO,EAAYL,GACZE,EACAzO,gBAEF,OACEtB,EAAAC,cACES,MAAAA,CAAAA,UAAWA,EACXgB,wBAAyB,CAAEC,OAAQwO,EAASlP,QAE9C,CAAA,QAAAX,GAAA,CAAA,CClEJ,MAAAX,GAAA,CAAA,UAAA,QAAA,iBAQgB,SAAA4Q,KACd,OAAOpM,EACL,CAAA9D,EAA8C8I,KAA7C,IAAAnH,QAAEA,EAAO8C,MAAEA,GAAgCzE,EAAPN,EAAKa,GAAAP,EAAAV,IACxC,MAAM6Q,EAAcC,EAAoBzO,GACP,MAA7BwO,EAAYE,QAAQzP,QACtBuP,EAAYvP,MAAQlB,EAAM8M,WAAW8D,cACvC,MAAMC,EAAcC,EAAe7O,GAEnC,OADA4O,EAAY7L,SAAWhF,EAAM0E,SACrB2E,GACCD,EAAU2H,WAAU3Q,GACtBJ,CAAAA,EAAAA,EACHiC,CAAAA,QAAS4O,EACT9L,MAAK3E,GAAA,CAAA,EAAO2E,EAAK,CAAE1E,KAAM8C,EAAUG,OACnCmD,cAAe,CAAEpG,KAAM2G,EAAeiC,YAJjCG,CAKJC,EACL,EAGN,CCQgB,SAAA2H,GACdC,GAEA,OAAO7M,EACL,CAACpE,EAAOoJ,iBAEJnJ,EAAAC,cAACgR,GACCC,CAAAA,UAAWnR,EACXoJ,UAAWA,EACX6H,eAAgBA,IAItB,CAAElK,WAAYC,EAAeG,MAAOM,YAAY,GAEpD,CAEgB,SAAAyJ,IAAkBC,UAChCA,EAAS/H,UACTA,EAAS6H,eACTA,QAKDG,EACC,MAAM3K,cACJA,EAAaxE,QACbA,EAAO8C,MACPA,EAAKL,SACLA,EAAQiG,WACRA,EAAUhG,SACVA,EAAQwH,YACRA,EAAWW,WACXA,EAAUnM,UACVA,EAASC,MACTA,EAAKyQ,mBACLA,EAAkBlG,YAClBA,EAAWe,SACXA,GACEiF,GACEG,QAAEA,EAAOC,MAAEA,EAAKC,SAAEA,EAAmBC,WAAEA,EAAUC,aAAEA,GACvDC,EACEC,EAAgBnL,GACZA,EACC,CAAyB,EAC9BwK,GAGEY,EAAeD,EAAgBnL,GACjCA,EAAcoL,kBACd7O,EAEE8O,GAAmBC,EAAgBhN,GACnCiN,EAA4BC,EAC/BH,EAMI,CACCzR,KAAM6R,EAAsBC,KAC5BpN,MAAO+H,EAAW/H,MAClB8D,SAAUiE,EAAWjE,SACrBpC,cAAeoL,MAAAA,EAAAA,EAAgB,CAAExR,KAAM2G,EAAeoL,UACtDC,WAAW,GAVZ,CACChS,KAAM6R,EAAsBI,MAC5BzJ,SAAUiE,EAAWjE,SACrB0J,aAAc,CAAElS,KAAM6M,EAAgBkF,SAAUC,WAAW,IASjEnG,EAASsG,MAGLC,UAAerB,EAACtE,EAAWjE,UAAQuI,EAAI,IAAI7L,IAC9CC,GAAM,CAAC6L,EAAmB7L,OAAGxC,GAAW,GAAOwC,IAE5CyJ,EAAOyD,EAAkBD,EAAejN,GAAMA,EAAE,GAAGyJ,MACnD0D,EAAQ/D,GAAoBgE,GAAa,CAAC3D,IAE1C4D,EAAUzS,GAAA,CAAA,EACX0S,EAAmB7Q,EAAQ8G,KAAMhE,EAAO,CACzCuM,UACAG,aACAF,QACAC,WACA9M,WACAM,SAAU/C,EAAQ+C,SAClB2F,aACA+G,iBAEF/M,CAAAA,WACAoO,cAAeA,CAAC7M,EAAG8M,iBACjB/S,EAAAC,cAACyS,GACCM,MAAO/M,EACPgN,mBAAoBA,EACpB/H,YAAaA,EACbsH,aAAcA,EACdO,KAAMA,IAGVrS,UAAWA,QAAwBqC,EACnCpC,SACGuS,EAAsBrG,IAG3B,OAAO1D,EAAUgK,YAAYP,GAE7B,SAASK,EAAmBhN,EAAWmN,GAA2BC,IAAAA,EAAAC,EAChE,OAAOpH,EACyB,OADdmH,EAChBC,OADgBA,EAChBtR,EAAQuR,eAARD,EAAAA,EAAmBrN,GAAGyB,UAAQ2L,EAAIpN,EAClC8L,EACAF,EACI,CACE/B,aAAc7J,GAEhB,CAAEuN,eAAgBJ,GAE1B,CACF,CAEA,SAAST,IACPK,MAAO/M,EAACgN,mBACRA,EAAkBT,aAClBA,EAAYO,KACZA,EAAI7H,YACJA,IAQA,MAAMkI,EAAclI,EAAYG,SAAUoI,gBAAgBxN,GACpDyN,EAAWlB,EAAalN,IAC5B,EAAEqO,EAAMC,KACND,EAAK9E,QAAO1O,GAEL+K,CAAAA,EAAAA,GACHI,WAAY8H,EACZ/H,SAAUwI,EAAeD,EAAKR,KAEhCO,EAAKpP,OACLtD,OAGN,GADsC,GAAnByS,EAAS5P,QAAe4P,EAASI,KAAMvO,IAAY,IAANA,GAEhE,OAAOwN,EAAKE,EAAmBhN,EAAGmN,GACpC,UAWgBW,GACdlU,GAEA,MAAO,CACLC,OAAQA,CAACC,GAASiU,+BAChBhU,EAAAC,cAACgU,GAAoB9T,GACfJ,CAAAA,EAAAA,EACAF,EAAO,CACXmU,aAAcA,KAGlB5T,KAAM,QAEV,CAQM,SAAU6T,GAAqBlU,GAAgCO,IAAAA,EAAAC,KACnE,IAAA,MAAMuS,cACJA,EAAapS,UACbA,EAASwT,eACTA,EAAcC,WACdA,EAAUC,oBACVA,EAAmBC,kBACnBA,EAAiBC,eACjBA,EAAcC,aACdA,EAAYP,aACZA,EAAYrT,MACZA,EAAK6T,WACLA,GACEzU,GACE0U,UAAEA,EAASC,aAAEA,GAAiBC,EAA6B5U,gBACjE,OACEC,EAAAC,cAAA,MAAA,CAAKU,MAAOA,gBACVX,EAAAC,cAAA,MAAA,CAAKS,UAAWK,EAAKL,EAAWgU,GAAgBR,iBAC9ClU,EAAAC,cAAC2U,IAAe5S,QAASuS,GACtB,CAACM,EAAGtP,IACHuN,EAAcvN,EAAIqD,GAChB8L,GAAgBF,eACdxU,EAAAC,cAAAD,EAAAgK,SACEhK,kBAAAA,EAAAC,cAAA,MAAA,CAAKS,UAAWK,EAAKoT,EAAYC,IAC9BxL,gBAEH5I,EAAAC,cAAKS,MAAAA,CAAAA,UAAW2T,GACbG,GAAcR,EAAaQ,EAAWjP,IACtCmP,GAAgBV,EAAaU,EAAanP,mBAI/CvF,EAAAC,cAAA,MAAA,CAAKS,UAAWyT,GAAavL,MAMtC6L,gBACCzU,EAAAC,qBAAKS,UAAW4T,GAAiBN,EAAaS,IAGlD,CAAA,QAAAnU,GAAA,CAAA,CC5NJ,MAAMwU,GACJ,8KAEcC,GACdlV,EAAuC,IAEvC,OAAOsE,EACJiC,IAAK,IAAA4O,EAAAC,EACJ,OAAO7O,EAAEtB,MAAM0C,wBACbxH,EAAAC,cAACiV,GACCrV,CAAAA,QAAkBmV,OAAXA,EAAE5O,EAAEvG,SAAOmV,EAAI,GACtBhT,QAASoE,EAAEpE,QACXtB,UAAWU,EAAcgF,EAAE1F,UAAWb,EAAQa,WAC9C4F,QAASzG,EACT0G,eAAgBH,EAAEI,cAClB6B,SAAUjC,EAAE3B,SACZD,GAAI4B,EAAE5B,kBAGRxE,EAAAC,cAACkV,GAAkB,CACjBtV,QAAkBoV,OAAXA,EAAE7O,EAAEvG,SAAOoV,EAAI,GACtBjT,QAASoE,EAAEpE,QACXtB,UAAWU,EAAcgF,EAAE1F,UAAWb,EAAQa,WAC9C4F,QAASzG,EACT0G,eAAgBH,EAAEI,cAClB6B,SAAUjC,EAAE3B,SACZD,GAAI4B,EAAE5B,IAAG,EAIf,CACEsC,WAAYC,EAAeqO,cAGjC,CAEA,SAASD,GAAkB9U,GAAAC,IAAAA,EAAAC,KAAA,IAAA,IAAA8U,EAAA,IACtBtV,EAAKI,GAAAmV,CAAAA,GAAAA,GAAAjV,GAAAA,IAER,MAAMmE,GAAEA,EAAExC,QAAEA,EAAOtB,UAAEA,EAAS2H,SAAEA,EAAQ/B,QAAEA,EAAOC,eAAEA,GAAmBxG,GAChEgF,SAAEA,GAAa/C,EAEfuT,EAAehT,GAAmB,IAClCiT,EAAwBjT,GAAwC,MAEhEkT,EAAqBrU,EACX,MAAdmF,OAAc,EAAdA,EAAgBkP,mBAChBnP,EAAQmP,oBAGJC,EAAiBtU,QACrBmF,SAAAA,EAAgBmP,eAChBpP,EAAQoP,gBAGVjT,GACEkT,GAAcJ,EAAcC,GAC5B,EAAEjU,EAAMqU,MACN5T,EAAQf,MAAQ2U,EACQ,iBAAbA,EACLA,EACAA,EAAS3U,MACXM,CACN,GAGF,MAAMsU,aACJA,EAAYC,cACZA,EAAaC,gBACbA,EAAeC,eACfA,EAAcC,eACdA,EAAcC,UACdA,EAASC,QACTA,EAAOC,uBACPA,GACEC,GAAelW,GACjBmW,CAAAA,UAAU,EACVC,UAAU,EACVtV,MAAOuU,EAAsBvU,MAC7BuV,WAAYjB,EAAatU,MACzBwV,eAAiB/T,GAAoB,iBAANA,EAAiBA,EAAIA,EAAEwD,KACtDwQ,cAAeA,CAAC3Q,EAAG4Q,IACjB5Q,EAAEL,OAAQK,IACmB,iBAANA,EAAiBA,EAAIA,EAAEG,MAC/B0Q,cAAcxP,SAASuP,EAAEH,WAAWI,gBAErDC,cAAeA,CAAChC,EAAGnS,EAAGoU,KACpBvB,EAAatU,MAAQyB,EACN,UAAXoU,IAAoBtB,EAAsBvU,MAAQ,KACxD,EACA0B,SAAUA,CAACkS,EAAGnS,EAAGoU,KACA,iBAAXA,IACFtB,EAAsBvU,MAAQyB,EAChC,GAEC3C,iBAGL,OACEC,EAAAC,oBAAAE,GAAA,CAAKqE,GAAIA,EAAI9D,UAAW,YAAgBmV,kBACtC7V,EAAAC,cACES,MAAAA,CAAAA,UAAWK,EACTL,EACAyV,EACI,uEACA,kEAGNnW,EAAAC,cAAA,QAAAE,GACEC,CAAAA,KAAM,QACF0V,IACJiB,CAAAA,YAAwC,OAA7B1B,EAAE9O,MAAAA,OAAAA,EAAAA,EAAgBwQ,aAAW1B,EAAI,GAC5C3U,UAAWoU,mBAGb9U,EAAAC,uBAAAE,GAAA,CAAA,EACMiW,KACJrR,SAAUA,GAAYsD,EACtB3H,UACE,qFAGFV,EAAAC,cACES,KAAAA,CAAAA,UAAWK,EACT,yBACA,mBACAmV,GAAa,kBAKpBD,EAAenS,OAAS,GAAKoS,gBAC5BlW,EAAAC,cAAA,KAAAE,GAAQ4V,CAAAA,EAAAA,KAAmBrV,UAAW+U,IAClCQ,EAAiC3Q,IAAI,CAAC0R,EAAQhE,KAC9C,MAAMiE,EAAcjB,EAAe,CAAEgB,SAAQhE,uBAC7C,OACEhT,EAAAC,cAAA,KAAAE,GACM8W,GAAAA,GACJpR,IAAKoR,EAAYpR,IACjBnF,UAAWgV,IAEVsB,EAAO9Q,KACN,IAMd,CAAA,QAAA5F,GAGJ,CAAA,CAAA,SAAS4U,GAAoBgC,GAAAC,IAAAA,EAAA5W,aAAA6W,EAAAC,EAAAC,MACxBvX,EAAKI,OAAAmV,GAAA4B,GAAAA,IAER,MAAM1S,GAAEA,EAAExC,QAAEA,EAAOtB,UAAEA,EAAS2H,SAAEA,EAAQ/B,QAAEA,EAAOC,eAAEA,GAAmBxG,GAChEgF,SAAEA,GAAa/C,EAEfuT,EAAehT,GAAmB,IAClCgV,EAAyBhV,GAC7B,MAGIkT,EAAqBrU,EACzBmF,MAAAA,OAAAA,EAAAA,EAAgBkP,mBAChBnP,EAAQmP,oBAEJC,EAAiBtU,EACrBmF,MAAAA,OAAAA,EAAAA,EAAgBmP,eAChBpP,EAAQoP,gBAGJ8B,EAAqBpW,EACX,MAAdmF,OAAc,EAAdA,EAAgBiR,mBAChBlR,EAAQkR,oBAGJC,EAAuBrW,EACb,MAAdmF,OAAc,EAAdA,EAAgBkR,qBAChBnR,EAAQmR,sBAGVhV,GACEkT,GAAcJ,EAAcgC,GAC5B,EAAEhW,EAAMqU,MAAa8B,IAAAA,EACnB,MAAMC,SAAcD,QAClB9B,SAAAA,EAAUtQ,IAAK5C,GACO,iBAANA,EAAiBA,EAAIA,EAAEzB,QACrCyW,EAAI,GACR1V,EAAQf,MAAQM,EAAOoW,EAAeC,OAAOrW,GAAQoW,CAAAA,GAIzD,MAAM9B,aACJA,EAAYC,cACZA,EAAaC,gBACbA,EAAeC,eACfA,EAAcC,eACdA,EAAcC,UACdA,EAASC,QACTA,EAAOC,uBACPA,GACEC,GAAelW,IACjBc,MAAmC,OAA9BmW,EAAEG,EAAuBtW,OAAKmW,EAAI,GACvCZ,WAAYjB,EAAatU,MACzBqV,UAAU,EACVC,UAAU,EACVE,eAAiB/T,GAAoB,iBAANA,EAAiBA,EAAIA,EAAEwD,KACtDwQ,cAAeA,CAAC3Q,EAAG4Q,IACjB5Q,EAAEL,OAAQK,IACmB,iBAANA,EAAiBA,EAAIA,EAAEG,MAC/B0Q,cAAcxP,SAASuP,EAAEH,WAAWI,gBAErDC,cAAeA,CAAChC,EAAGnS,KACjB6S,EAAatU,MAAQyB,CACvB,EACAC,SAAUA,CAACkS,EAAGnS,EAAGoU,KACA,iBAAXA,GAAwC,iBAAXA,IAC/BS,EAAuBtW,MAAQyB,EACjC,GAEC3C,iBAGL,OACEC,EAAAC,cAAAE,MAAAA,IAAKqE,GAAIA,EAAI9D,UAAW,YAAgBmV,kBACtC7V,EAAAC,cAAA,MAAA,CACES,UAAWK,EACTL,EACAyV,EACI,uEACA,kEAGNnW,EAAAC,qBAAKS,UAAW,kCACe,OADkB2W,EAC9CE,EAAuBtW,YAAK,EAA5BoW,EAA8B/R,IAAK5C,gBAClC1C,EAAAC,cAAC4X,IACChS,IAAkB,iBAANnD,EAAiBA,EAAIA,EAAEwD,KACnC3E,KAAmB,iBAANmB,EAAiBA,EAAIA,EAAEwD,KACpCsR,mBAAoBA,EACpBC,qBAAsBA,EACtBK,cAAeA,KACb,MAAMnR,EAAI4Q,EAAuBhE,SAASwE,KACvCxS,GAAMA,EAAEtE,OAASyB,GAEhBiE,GAAGqR,GAAcT,EAAwB5Q,oBAInD3G,EAAAC,cAAAE,QAAAA,IACEC,KAAM,QACF0V,KACJiB,YAAwCO,OAA7BA,QAAE/Q,SAAAA,EAAgBwQ,aAAWO,EAAI,GAC5C5W,UAAWK,EAAK+T,qBAIpB9U,EAAAC,cAAA,SAAAE,GAAA,CAAA,EACMiW,KACJrR,SAAUA,GAAYsD,EACtB3H,UACE,qFAGFV,EAAAC,mBACES,UAAWK,EACT,yBACA,mBACAmV,GAAa,kBAKpBD,EAAenS,OAAS,GAAKoS,gBAC5BlW,EAAAC,cAAA,KAAAE,GAAQ4V,GAAAA,IAAiB,CAAErV,UAAW+U,IAClCQ,EAAiC3Q,IAAI,CAAC0R,EAAQhE,KAC9C,MAAMiE,EAAcjB,EAAe,CAAEgB,SAAQhE,uBAC7C,OACEhT,EAAAC,cAAAE,KAAAA,GACM8W,CAAAA,EAAAA,GACJpR,IAAKoR,EAAYpR,IACjBnF,UAAWgV,IAEVsB,EAAO9Q,KACN,IAMd,CAAA,QAAAiR,GAAA,CAAA,CAGJ,SAASU,IAAKtW,KACZA,EAAIiW,mBACJA,EAAkBC,qBAClBA,EAAoBK,cACpBA,IAMD,IAAAG,EAAA1X,sBACC,OACEP,EAAAC,qBAAKS,UAAW8W,GACbjW,eACDvB,EAAAC,cAAA,IAAA,CACES,UAAW+W,EACXvP,QAASA,KACP4P,MAAAA,GAAAA,OAIN,SAAAG,GAAA,CAAA,CCnUJ,MAAMC,GAAa,gBAENC,GAAqD,CAChEC,cAAe,CACbnX,MAAOiX,GACPhS,KAAM,kBACNmS,OAAQC,EAAsD,CAC5DC,SAAUC,EAAY,gCASZC,GAA4B5Y,GAC1C,OAAOsE,EACL,CAAC4B,EAAG4C,KAAY,IAAA+P,EACd,MAAMH,SAAEA,GAAaxS,EAAES,cACjBmS,EAAiBJ,EACuCG,OAD/BA,EAC1BE,EAAsBL,EAAUxS,EAAEmF,YAAYI,cAAoB,OAAToN,EAAzDA,EAA2D1W,cAAO,EAAlE0W,EACGzX,WACJ8B,EACE8V,EAAOF,EACTG,EAAkBH,EAAgB9Y,EAAQkZ,aAC1ChW,EACJ,OAAO8V,eACL7Y,EAAAC,cAAC+Y,GAAcrQ,CAAAA,SAAUA,EAAUoQ,OAAQF,EAAM7W,QAAS+D,EAAE/D,uBAE5DhC,EAAAC,cAAAD,EAAAgK,cAAG2O,EAAiB,sBAAwBA,EAAiB,GAAM,EAGvE,CACE7R,WAAYoR,IAGlB,CAEA,SAASc,IAAcD,OACrBA,EAAMpQ,SACNA,EAAQ3G,QACRA,IAKD1B,IAAAA,EAAAC,SACC,MAAMU,EAAQsB,GAAW,CAAE0W,aAASlW,QAAaA,EAAYH,GAC3DsW,GAAUtW,EAAG,CAAEqW,QAASjX,MAEnBmX,EAAUC,GAAcjU,EAAQ,KACrC,MAAMiU,EAAaC,EAAe,CAAAlZ,MAE3B4Y,EAAOjU,MACVA,CAAAA,MAAO,UACPJ,UAAU,EACV4U,aAAa,EACbC,aAAc,KACd5I,kBAAc5N,MAGlB,MAAO,CAACyW,EAA4BJ,EAAY,IAAKA,EAAU,EAC9D,CAACL,IACErK,EAAS+K,EACbC,EAAeP,GACfxQ,EACA,CAAE5D,SAAU/C,EAAQ+C,UACpB4U,EAAmBP,EAAYnY,iBAEjC,OAAOjB,EAAAC,cAACyO,OAAU,SAAApO,GAAA,CAAA,CCzDJ,SAAAsZ,GACd/Z,EAA2C,CAAA,GAE3C,OAAOga,EACL,CAAC9Z,EAAOoJ,KAAagC,IAAAA,EAAA2O,EACnB,MAAM5O,YAAEA,GAAgBnL,EAClBqL,EACyBD,OADdA,EACf2O,OADeA,EACf5O,EAAYG,eAAZyO,EAAAA,EAAsB9X,SAAOmJ,EAAI4O,QAAWhX,GACxCiX,EAAYja,EAAMia,UAClBC,EAAUC,EAAa9O,GACvB+O,EAAYF,EAAQhZ,MACpBmZ,EAAcvJ,EAAezF,GAKnC,YAJkBrI,IAAdoX,GAA2BH,EAAUK,iBACvCJ,EAAQhZ,OAAQ,GAClBmK,EAAYrG,UACToV,MAAgBH,EAAUM,WAAcF,EAAYnZ,OAChD,CACLsZ,MAAQC,IAAM,IAAAna,EAAAoa,EACZ,GAAI1a,EAAM2a,YAAYjW,SAAU,OAAO+V,GAClC3a,EAAQ8a,UAAYX,EAAUK,gBACjCO,EAE4B,OAFdva,EACO,OADPoa,EACZT,EAAUa,WAASJ,EACjB5a,EAAQib,kBAAgBza,EACxB0a,EAAmBC,wBACrBhb,EAAAC,cAAC4I,GAAU7G,CAAAA,QAASiY,EAASvZ,UAAWb,EAAQuI,aAJlDwS,CAKEJ,GACJS,EAAW,WAAarS,GACtB/I,EAAQqb,aACNrb,EAAQqb,aAAa,CACnBC,UAAWC,EAAahQ,GACxB6O,UACArR,WACAoR,YACAI,cACAlP,cACArL,yBAGFG,EAAAC,cAACob,GAAoB,CACnBzS,SAAUA,EACV/I,QAASA,EACToa,QAASA,EAAQnR,KACjBkR,UAAWA,EACX5O,YAAaA,IAjBnB6P,CAoBET,EAAE,EAENc,SAAU,EACVtB,cAGJ,CAAEuB,cAAeC,EAAqBC,UAE1C,CAEgB,SAAAJ,IAAqBzS,SACnCA,EAAQ/I,QACRA,EAAOma,UACPA,EAASC,QACTA,EAAO7O,YACPA,IAOD,IAAA9K,EAAAC,KAAA,IAAA,IAAAmb,EAAAC,EACC,MAAMvB,EAAcvJ,EAAezF,GAE7BwQ,EADYR,EAAahQ,GACEnK,MAAM6C,OAAS,EAC1C+X,EAAW7B,EAAUM,uBACzBta,EAAAC,cAAKS,MAAAA,CAAAA,UAAWb,EAAQic,+BACtB9b,EAAAC,cAAC4I,GAAS,CACR7G,QAASoY,EACT1Z,UAAWb,EAAQuI,WACnB2T,UAAQ,iBAEV/b,EAAAC,cAAA,OAAA,KAA0B,OAA1Byb,EAAO7b,EAAQmc,aAAWN,EAAI,cAE9B3Y,eACJ,OACE/C,EAAAC,cAAA,MAAA,CAAKS,UAAWb,EAAQa,WACrBkb,IAAoC,IAAlB3B,EAAQhZ,mBACzBjB,EAAAC,cAAA,MAAA,CAAKS,UAAWb,EAAQoc,kBACEN,OADeA,EACtC9b,EAAQqc,iBAAeP,EAAI,iCAG9B3b,EAAAC,cAAA,MAAA,CAAKS,UAAWb,EAAQsc,mBACrBN,EACAjT,GAIP,CAAA,QAAAtI,GAAA,CAAA,CCnHY,SAAA8b,IAAmBpa,QAAEA,EAAOtB,UAAEA,QAA8BJ,EAAAC,KAC1E,IAAA,MAAM8b,EAAUC,EAA2B,MAW3C,OAVA7Z,GACE,IAAMT,EAAQf,MACbyB,IACC,MAAMiE,EAAI0V,EAAQ3L,QACd/J,GAAKA,EAAE4V,cAAgB7Z,IACzBiE,EAAE4V,YAAc7Z,EAClB,GAEF,gBAGA1C,EAAAC,sBACEuc,iBAAkBxa,EAAQ+C,SAC1BrE,UAAWA,EACX+b,QAAU3R,GAAO9I,EAAQf,MAAQ6J,EAAE4R,cAAcH,YACjD9M,IAAK4M,GAEP,SAAA/b,GAAA,CAAA,CCIJ,SAASqc,IAAqBzL,UAC5BA,EAASrR,QACTA,EAAO+c,aACPA,EAAYpW,cACZA,IAMDlG,IAAAA,EAAAC,KAAA,IACC,MAAMyB,QAAEA,EAAOiK,SAAEA,EAAQC,YAAEA,EAAWxB,WAAEA,GAAewG,EACjD2L,EAAUC,GAAoB9a,GAC9B+a,EAAeC,GAAuB,CAC1CtR,QAAQ,EACRuR,aAAcA,KACZJ,EAAQ5b,WAAQ8B,CAClB,IAGF,GAAI2H,QAAgC3H,IAAlB8Z,EAAQ5b,MAAqB,CAC7C,MAAMuS,EAAiBmG,EACrBzI,EAAU7F,SAAS0N,OACnB8D,EAAQxE,OAAO7X,MAEXuR,EAA4BC,EAChC,CACE5R,KAAM6R,EAAsBI,MAC5BzJ,SAAUqD,EAASY,WAAWjE,SAC9B0J,aAAc,CAAElS,KAAM6M,EAAgBkF,SAAUC,WAAW,IAE7DnG,EAASsG,MAEL2K,eACJld,EAAAC,qBAAKS,UAAWU,EAAc8P,EAAUxQ,UAAWb,EAAQa,YACxDwL,EAAY,GAAI6F,EAAiB,CAChCyB,iBACA1D,aAAc,iBAEhB9P,EAAAC,cAAKS,MAAAA,CAAAA,UAAWb,EAAQsd,2BACtBnd,EAAAC,cAAC2U,GAAc,CAAC5S,QAAS6a,EAAQxE,OAAO+E,SACpCzW,GAAMiW,EAAa5I,aAAarN,EAAE1F,UAK5C,OAAIuF,EAAc6W,YAAc3S,EAAmBwS,eAEjDld,EAAAC,cAACqd,IAAM/Y,MAAOwY,gBACZ/c,EAAAC,cAACsd,GAAM,CAAC3U,SAAUsU,IAGxB,cAAO,OAAOld,EAAAC,cAAAD,EAAAgK,cAAM,SAAA1J,GAAA,CAAA,UCaNkd,GACdC,EACA5d,EAAwC,CAAA,GAExC,OAAO6d,GACLD,EACA,EACEvV,UACAyV,aACAjd,YACAC,QACA8c,WACAG,aACA7Y,eACwB8Y,IAAAA,eACxB,OACE7d,EAAAC,cAAA,SAAA,CACES,UAAWU,EAAcV,EAAWb,EAAQa,WAC5CqE,SAAUA,EACVpE,MAAOA,EACPuH,QAASA,GAEiD,OAFzC2V,EAEhBhe,MAAAA,EAAQie,mBAARje,EAAAA,EAAQie,cAAgBH,EAAYF,EAAUG,IAAWC,EACxDF,EACI,EAIhB,CAEa,MAAAI,GAAoC,CAC/C,CAAE7X,KAAM,MAAOjF,OAAO,GACtB,CAAEiF,KAAM,KAAMjF,OAAO,IAqBP,SAAA+c,GACdne,EAAsC,CAAA,GAAE,IAAAoe,EAAAC,EAAAC,EAExC,MAAMC,EAAkB1O,GAAsB7P,EAAQwe,cAChDjE,EAAc7J,KACd+N,GF3JqC5d,EE4JzCb,EAAQ0e,eF3JHpa,EAAoBiC,gBACzBpG,EAAAC,cAACmc,GAAkBjc,GACbiG,CAAAA,EAAAA,GACJ1F,UAAWU,EAAcgF,EAAE1F,UAAWA,QAJtC,IAAuCA,EE8J3C,MAAM8d,EAAmB9V,GACHuV,OADyBA,EAC7Cpe,EAAQ4e,cAAYR,EAAIpe,EAAQ6e,iBAE5BC,EAAiBza,GAAqBrE,EAAQ+e,eAC9CC,EAAgB1Y,GACA,OADmB+X,EACvCre,EAAQif,cAAYZ,EAAIre,EAAQ4e,cAE5BM,EAAoB9X,UAAuBkX,EAC/Cte,EAAQmf,kBAAgBb,EAAIte,EAAQ4e,cAEhCQ,EDxJQ,SACdpf,EAAuC,CAAA,GAEvC,OAAOsE,EACL,CAACpE,EAAO6c,iBACN5c,EAAAC,cAAC0c,IACCzL,UAAWnR,EACXF,QAASA,EACT+c,aAAcA,EACdpW,cAAezG,EAAMyG,gBAGzB,CAAEM,WAAYC,EAAemY,cAEjC,CC0I+BC,CAC3Btf,EAAQuf,sBAEJtK,WACJA,EAAUuK,eACVA,EAAcC,eACdA,EAAcC,iBACdA,EAAgBC,iBAChBA,GACDrf,IACCmf,eAAgBX,EAChBU,eAAgBtB,IACble,GAEC4f,EAAgB1O,GAA+BlR,EAAQ6f,cAEvDC,EAAuB5K,GAC3BlV,EAAQ+f,qBAGV,OAAOzb,EAAmB,CAACpE,EAAOoJ,KAChC,MAAMrE,MAAEA,GAAU/E,EACZ8f,EAAY/a,EAAM1E,KAClBoG,EAAgBzG,EAAMyG,cAC5B,IAAIM,EAAaN,EAAcpG,KAC/B,GACE0E,EAAM0C,YACgB,MAAtBzH,EAAM+P,eACLhJ,GAAcC,EAAeoL,UAC5BrL,GAAcC,EAAeG,OAC7BJ,GAAcC,EAAemY,cAE/B,OAAIpY,GAAcC,EAAemY,aACxBD,EAAqBnf,OAAOC,EAAOoJ,GACrCsW,EAAc3f,OAAOC,EAAOoJ,GAErC,GAAI0W,IAAc3c,EAAU4c,SAAU,CAAAzf,IAAAA,EACpC,MAAMiS,EAEOjS,OAFKA,EAAI0f,GAAoBvZ,GACtCA,EAAc8L,kBACdvP,GAAS1C,EAAK,CAAED,KAAM,WAAYgS,WAAW,GACjD,OAAOjJ,EAAU6W,YAAW7f,MAAMJ,EAAK,CAAEyG,cAAe8L,IAC1D,CACA,GAAIvS,EAAMkgB,aAAeC,GAAsB1Z,GAC7C,OAAQJ,GACNjG,GAAA,CAAA,EACKiG,EACH1F,CAAAA,UAAW,KAAOU,EAAcgF,EAAE1F,UAAW6e,GAC7C3W,sBACE5I,EAAAC,cAACkK,GAAkB,CACjBrF,MAAO/E,EAAM+E,MACbsF,gBAAiBrK,EAAMmL,YAAYd,gBACnCpI,QAASjC,EAAMiC,QACftB,UAAWX,EAAMW,UACjBC,MAAOZ,EAAMY,MACbgE,UACEub,GAAsB1Z,IAAkBA,EAAc7B,UAClD6B,EAAc7B,UACd6a,MAOhB,GAAsB,MAAlBH,GADWQ,IAAc3c,EAAUG,MACkB,MAAjBtD,EAAMF,QAC5C,OAAOsJ,EAAU2H,WAAU3Q,MAAMJ,EAAK,CAAEF,QAASwf,KAEnD,GAAIvY,IAAeC,EAAeoL,UAAYgO,GAAWpgB,GACvD,OAAOuf,EAAexf,OAAOC,EAAOoJ,GAEtC,OAAQrC,GACN,KAAKC,EAAeqZ,WAClB,OAAOhG,EAAYta,OAAOC,EAAOoJ,GACnC,KAAKpC,EAAeU,UAClB,OAAOsX,EAAkBjf,OAAOC,EAAOoJ,GACzC,KAAKpC,EAAesZ,SAClB,OAAO1B,EAAe7e,OAAOC,EAAOoJ,GACtC,KAAKpC,EAAeC,MAClB,OAAO6X,EAAc/e,OAAOC,EAAOoJ,GACrC,KAAKpC,EAAeiC,SAClB,OAAOwV,EAAiB1e,OAAOC,EAAOoJ,GACxC,KAAKpC,EAAe6I,QAClB,OAAOwO,EAAgBte,OAAOC,EAAOoJ,GACvC,KAAKpC,EAAeqO,aAClB,OAAOuK,EAAqB7f,OAAOC,EAAOoJ,GAEd,IAAAmX,EAAhC,GAAIT,GAAa3c,EAAUqd,iBACzB,OACEvgB,EAAAC,cAAAD,EAAAgK,cACE,uBAAsCsW,OAAlBA,EAACxb,EAAM0b,aAAWF,EAAIxb,EAAMA,MAAO,KAAEgC,EAAW,KAI1E,GAAI2Z,GAAoBja,IAAkBA,EAAcka,UACtD,OAAOpC,EAAkBxe,OAAOC,EAAOoJ,GACzC,MAAM4N,EAAc0J,GAAoBja,GACpCA,EAAcuQ,iBACdhU,eAEJ,OACE/C,EAAAC,cAAC8B,GACCrB,CAAAA,UAAWU,EAAcrB,EAAMW,UAAWoU,GAC1CnU,MAAOZ,EAAMY,MACb6D,GAAIzE,EAAMyE,GACV6D,SAAUtI,EAAM0E,SAChBzC,QAASjC,EAAMiC,QACf+U,YAAaA,MAAAA,EAAAA,OAAehU,EAC5Bd,QAASe,GAAsBjD,EAAM+E,MAAM1E,OAAM,EAIzD,UAqBgBugB,GACd9gB,EAA2C,IAE3C,MAAM+gB,EAAWhH,GAAwB/Z,EAAQ+gB,UACjD,MAAO,CACLxgB,KAAM,YACNN,OAAQA,CAACC,EAAOoJ,KACd,GAAI0X,GAAoB9gB,EAAMia,WAC5B,OAAO4G,EAAS9gB,OAAOC,EAAOoJ,GAEhC,MAAM6Q,UAAEA,EAAStP,WAAEA,EAAUQ,YAAEA,EAAW4V,QAAEA,GAAY/gB,EACxD,MAAO,CACLwa,MAAQC,IACN,GAAIuG,GAAoB/G,IAAc8G,EAAS,CAC7C,MAAMnN,EAAOmN,EAAQ9G,EAAU3J,WAAa9K,GAAMA,GAC5Cyb,EAAeC,GAAgB,CAAEhgB,MAAO0S,IACxCuN,EAAkBvS,GAAoBwS,EAAiB,CAC3DH,IAEF,OAAO1X,GAAY/D,gBACjBvF,EAAAC,cAACihB,EAAe,CACdtY,SAAUrD,EACV6b,cAAelW,EACf8O,UAAWA,IAJR1Q,CAMJkR,GAEH,SAAS2G,GAAgBvY,SACvBA,EAAQoR,UACRA,EAASoH,cACTA,IAMA,MAAMngB,MAAEA,GAAU+f,EAAaI,GAKzBC,EAJYzI,EAChBoB,EAAUlV,MACVsc,EAAc9V,YAEatJ,QACvBsf,GAAUtH,EAAUuH,YAQ1B,OAPA9e,GACE,IAAM,CAACxB,MAAAA,OAAAA,EAAAA,EAAOA,MAA4B,OAArBogB,MAAAA,OAAAA,EAAAA,EAAYpgB,QACjC,EAAEyB,MACU,MAAV2e,GAAAA,EAAY/Z,SAAU/B,GAAO+b,GAAe,MAAL/b,EAAY7C,EAAI6C,EAAE,GAE3D,GAEKqD,CACT,CACF,CACgC,IAAA6R,EAAhC,OAAI+G,GAAgBxH,GACXY,EACcH,OADAA,EACnBT,EAAUa,WAASJ,EAAIM,EAAmB0G,0BAC1CzhB,EAAAC,cAAGS,IAAAA,CAAAA,UAAWsZ,EAAU9Y,YAFnB0Z,CAGLJ,GAEAkH,GAAqB1H,GAChB1Q,GAAY/D,gBACjBvF,EAAAC,cAACqK,GAAgBnK,GACfgJ,CAAAA,UAAWA,EACXP,SAAUrD,EACVgF,UAAWyP,EACXxP,aAAcgQ,EAAG7Z,MACjB8J,iBAAkB+P,EAAG9Z,UACrBgK,WAAYA,EACZQ,YAAaA,GACTrL,EAAQ0K,YATTjB,CAWJkR,QAZL,CAaA,EAEFc,SAAU,EACVtB,cAIR,CAUM,SAAU2H,GACd9hB,GAEA,MAAMa,UACJA,EAASkhB,gBACTA,EAAeC,kBACfA,EAAiBC,gBACjBA,EAAeC,eACfA,GACD5hB,IACC2hB,6BAAiB9hB,EAAAC,cAAO,OAAA,KAAA,MACxB8hB,eAAiBpb,GAAoBA,GAClC9G,GAEL,MAAO,CACLC,OAAQA,CAACC,EAAOiiB,EAAYC,EAAU9Y,IAChCpJ,EAAMK,MAAQ8hB,GAAU/gB,KAAapB,EAAM+F,MACxCic,eACL/hB,EAAAC,cAAAD,EAAAgK,SAAA,kBACEhK,EAAAC,cAAA,QAAA,CACEsI,QAASxI,EAAMoiB,MACfzhB,UAAWU,EACTrB,EAAMW,UACNK,EACEL,EACAX,EAAMK,OAAS8hB,GAAU7P,OAASuP,EAClC7hB,EAAMK,OAAS8hB,GAAUE,SAAWP,KAIvCG,EACA7Y,EAAU0C,gBAAgB9L,EAAM+F,OAChC/F,EAAM2E,UAAYod,GAEpBG,IAIP7hB,KAAM,QAEV,CAEgB,SAAAiiB,GACdxiB,EAAkC,CAAE,GAEpC,MAAO,CACLW,KAAMwd,GAA0Bne,EAAQW,MACxCC,QAASb,GAA6BC,EAAQY,SAC9C6hB,OAAQ9E,QAA2Bza,EAAWlD,EAAQyiB,QACtD1a,MAAOmM,GAA2BlU,EAAQ+H,OAC1CjC,MAAOmH,GAA2BjN,EAAQ8F,OAC1CG,MAAO6b,GAA2B9hB,EAAQiG,OAC1CkU,UAAW2G,GAA+B9gB,EAAQma,WAClDuI,aAActZ,GAA4BpJ,EAAQuJ,QAClDgG,WAAYH,KAEhB,CAEgB,SAAAuT,KACd,OAAOH,GAAuB,CAC5BjZ,OAAQ,CAAE1I,UAAW,WACrBiF,MAAO,CAAEjF,UAAW,SACpBkH,MAAO,CAAElH,UAAW,iBACpB4hB,OAAQ,CAAE5hB,UAAW,UACrBF,KAAM,CAAEsU,WAAY,QACpBrU,QAAS,CAAEgB,cAAe,OAAQJ,cAAe,SAErD,CC5ca,MAAAohB,GAAuB,CAClC3c,MAAO,CACL8b,gBAAiB,YACjBE,6BAAiB9hB,EAAAC,cAAA,OAAA,CAAMS,UAAU,gBAAgB,OAEnDkH,MAAO,CACLsM,eAAgB,iDAChBC,WAAY,YACZG,eAAgB,OAChBD,kBAAmB,cAErB1O,MAAO,CACL6H,kBAAmB,sBACnBD,cAAe,kBACfE,cAAe,QACfb,KAAM,CACJlM,UAAW,GACX2L,aACE,gIACFD,SAAU,OACV9D,WACE,+DACFgE,cACE,oHACFC,YACE,4FACFC,aAAc,SAGlB8V,OAAQ,CACN5hB,UAAW,4CAEb0I,OAAQ,CACN1I,UAAW,gBACXkJ,WAAY,2BAEdpJ,KAAM,CACJ+e,iBAAkB,mCAClBd,aAAc,CACZ/d,UAAW,0BACXyH,WAAY,2BAEdyW,cAAe,CAAEja,UAAW,YAC5Bya,oBAAqB,CAAEjC,aAAc,mBACrCoB,eAAgB,2CAChBqB,oBAAqB,CACnBlf,UACE,iNACF+U,mBACE,8OACFC,eACE,ugBACF8B,mBACE,sFACFC,qBACE,wKAGNuC,UAAW,CACTzP,UAAW,CACT7J,UAAW,+BACXsK,WAAY,iBACZL,cAAe,mBACfC,gBAAiB,sBAEnBgW,SAAU,CACRxY,WAAY,MACZ1H,UAAW,iCACXub,iBAAkB,SAClBE,kBAAmB"}
package/lib/tailwind.d.ts CHANGED
@@ -8,6 +8,7 @@ export declare const defaultTailwindTheme: {
8
8
  removableClass: string;
9
9
  childClass: string;
10
10
  addActionClass: string;
11
+ removeActionClass: string;
11
12
  };
12
13
  group: {
13
14
  standardClassName: string;
@@ -39,6 +40,9 @@ export declare const defaultTailwindTheme: {
39
40
  selectOptions: {
40
41
  emptyText: string;
41
42
  };
43
+ arrayElementOptions: {
44
+ actionsClass: string;
45
+ };
42
46
  multilineClass: string;
43
47
  autocompleteOptions: {
44
48
  className: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-typed-forms/schemas-html",
3
- "version": "2.2.2",
3
+ "version": "2.3.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "lib/index.cjs",
@@ -33,11 +33,13 @@
33
33
  "dependencies": {
34
34
  "clsx": "^1 || ^2",
35
35
  "jsonata": "^2.0.4",
36
- "@mui/base": "^5.0.0-beta.68"
36
+ "@mui/base": "^5.0.0-beta.68",
37
+ "@react-stately/overlays": "^3.6.13",
38
+ "@astroapps/aria-base": "^1.3.0"
37
39
  },
38
40
  "peerDependencies": {
39
41
  "@react-typed-forms/core": "^4.1.1",
40
- "@react-typed-forms/schemas": "^14.1.2",
42
+ "@react-typed-forms/schemas": "^14.2.0",
41
43
  "react": "^18.2.0"
42
44
  },
43
45
  "devDependencies": {