@react-typed-forms/schemas-html 1.2.0 → 1.3.0

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.
@@ -5,7 +5,7 @@ export declare function DefaultDisplayOnly({ control, className, emptyText, sche
5
5
  control: Control<any>;
6
6
  field: SchemaField;
7
7
  schemaInterface: SchemaInterface;
8
- className?: string | null;
8
+ className?: string;
9
9
  style?: React.CSSProperties;
10
10
  emptyText?: string | null;
11
11
  }): React.JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { GridRenderer, GroupRendererRegistration } from "@react-typed-forms/schemas";
2
+ import { CSSProperties } from "react";
3
+ interface StyleProps {
4
+ className?: string;
5
+ style?: CSSProperties;
6
+ }
7
+ export interface DefaultGroupRendererOptions {
8
+ className?: string;
9
+ standardClassName?: string;
10
+ gridStyles?: (columns: GridRenderer) => StyleProps;
11
+ gridClassName?: string;
12
+ defaultGridColumns?: number;
13
+ flexClassName?: string;
14
+ defaultFlexGap?: string;
15
+ }
16
+ export declare function createDefaultGroupRenderer(options?: DefaultGroupRendererOptions): GroupRendererRegistration;
17
+ export {};
@@ -5,6 +5,7 @@ export interface DefaultLayoutRendererOptions {
5
5
  errorClass?: string;
6
6
  renderError?: (errorText: string | null | undefined) => ReactNode;
7
7
  }
8
+ export declare function createDefaultLayoutRenderer(options?: DefaultLayoutRendererOptions): import("@react-typed-forms/schemas").LayoutRendererRegistration;
8
9
  export declare function DefaultLayout({ errorClass, renderError, layout: { controlEnd, controlStart, label, children, errorControl }, }: DefaultLayoutRendererOptions & {
9
10
  layout: RenderedLayout;
10
11
  }): React.JSX.Element;
@@ -1,11 +1,12 @@
1
1
  import { DefaultDisplayRendererOptions } from "./components/DefaultDisplay";
2
2
  import { DefaultLayoutRendererOptions } from "./components/DefaultLayout";
3
- import { CSSProperties, ReactElement, ReactNode } from "react";
3
+ import { ReactElement, ReactNode } from "react";
4
4
  import { SelectRendererOptions } from "./components/SelectDataRenderer";
5
5
  import { Control } from "@react-typed-forms/core";
6
6
  import { DefaultArrayRendererOptions } from "./components/DefaultArrayRenderer";
7
7
  import { CheckRendererOptions } from "./components/CheckRenderer";
8
- import { ActionRendererRegistration, AdornmentRendererRegistration, ArrayActionOptions, DataRendererRegistration, DefaultRenderers, FieldOption, GridRenderer, GroupRendererRegistration, LabelRendererRegistration } from "@react-typed-forms/schemas";
8
+ import { ActionRendererRegistration, AdornmentRendererRegistration, ArrayActionOptions, DataRendererRegistration, DefaultRenderers, FieldOption, LabelRendererRegistration } from "@react-typed-forms/schemas";
9
+ import { DefaultGroupRendererOptions } from "./components/DefaultGroupRenderer";
9
10
  export interface DefaultRendererOptions {
10
11
  data?: DefaultDataRendererOptions;
11
12
  display?: DefaultDisplayRendererOptions;
@@ -16,25 +17,11 @@ export interface DefaultRendererOptions {
16
17
  adornment?: DefaultAdornmentRendererOptions;
17
18
  layout?: DefaultLayoutRendererOptions;
18
19
  }
19
- interface StyleProps {
20
- className?: string;
21
- style?: CSSProperties;
22
- }
23
20
  export interface DefaultActionRendererOptions {
24
21
  className?: string;
25
22
  renderContent?: (actionText: string, actionId: string, actionData: any) => ReactNode;
26
23
  }
27
24
  export declare function createButtonActionRenderer(actionId: string | string[] | undefined, options?: DefaultActionRendererOptions): ActionRendererRegistration;
28
- export interface DefaultGroupRendererOptions {
29
- className?: string;
30
- standardClassName?: string;
31
- gridStyles?: (columns: GridRenderer) => StyleProps;
32
- gridClassName?: string;
33
- defaultGridColumns?: number;
34
- flexClassName?: string;
35
- defaultFlexGap?: string;
36
- }
37
- export declare function createDefaultGroupRenderer(options?: DefaultGroupRendererOptions): GroupRendererRegistration;
38
25
  export declare const DefaultBoolOptions: FieldOption[];
39
26
  export interface DefaultDataRendererOptions {
40
27
  inputClass?: string;
@@ -49,6 +36,7 @@ export interface DefaultDataRendererOptions {
49
36
  multilineClass?: string;
50
37
  jsonataClass?: string;
51
38
  arrayOptions?: ArrayActionOptions;
39
+ defaultEmptyText?: string;
52
40
  }
53
41
  export declare function createDefaultDataRenderer(options?: DefaultDataRendererOptions): DataRendererRegistration;
54
42
  export interface DefaultAccordionRendererOptions {
package/lib/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var e=require("react"),t=require("clsx"),r=require("@react-typed-forms/schemas"),n=require("@react-typed-forms/core");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=/*#__PURE__*/a(e),o=/*#__PURE__*/a(t);function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},u.apply(null,arguments)}function i(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.includes(n))continue;r[n]=e[n]}return r}var s=["data","display","className","style"];function d(e){return void 0===e&&(e={}),{render:function(t){/*#__PURE__*/return l.default.createElement(c,u({},e,t))},type:"display"}}function c(e){var t=n.useComponentTracking();try{var a=e.data,u=e.display,d=e.className,c=e.style,f=i(e,s);switch(a.type){case r.DisplayDataType.Icon:/*#__PURE__*/return l.default.createElement("i",{style:c,className:o.default(r.getOverrideClass(d),u?u.value:a.iconClass)});case r.DisplayDataType.Text:/*#__PURE__*/return l.default.createElement("div",{style:c,className:r.rendererClass(d,f.textClassName)},u?r.coerceToString(u.value):a.text);case r.DisplayDataType.Html:/*#__PURE__*/return l.default.createElement("div",{style:c,className:r.rendererClass(d,f.htmlClassName),dangerouslySetInnerHTML:{__html:u?r.coerceToString(u.value):a.html}});case r.DisplayDataType.Custom:/*#__PURE__*/return l.default.createElement("div",null,"Custom display placeholder: ",a.customId);default:/*#__PURE__*/return l.default.createElement("h1",null,"Unknown display type: ",a.type)}}finally{t()}}var f=["control","convert"],m=["errorText","value","onChange"];function p(e){var t=n.useComponentTracking();try{var r=function(e){return null==e?"":o[2](e)},a=e.control,o=e.convert,s=i(e,f),d=n.formControlProps(a),c=d.value,p=i(d,m),y=n.useControl(function(){return r(c)});return n.useControlEffect(function(){return a.value},function(e){return y.value=r(e)}),/*#__PURE__*/l.default.createElement("input",u({},p,{type:o[0],value:y.value,onChange:function(e){y.value=e.target.value;var t=o[1](e.target.value);void 0!==t&&(a.value=t)}},s))}finally{t()}}function y(e){switch(e){case r.FieldType.String:return["text",function(e){return e},function(e){return e}];case r.FieldType.Bool:return["text",function(e){return"true"===e||"false"!==e&&void 0},function(e){var t;return null!=(t=null==e?void 0:e.toString())?t:""}];case r.FieldType.Int:return["number",function(e){return""!==e?parseInt(e):null},function(e){return null==e?"":e}];case r.FieldType.DateTime:return["datetime-local",function(e){return e||null},function(e){return e}];case r.FieldType.Date:return["date",function(e){return e||null},function(e){return e}];case r.FieldType.Time:return["time",function(e){var t=e.length;return 5===t?e+":00":8===t?e:void 0},function(e){return e?e.substring(0,5):""}];case r.FieldType.Double:return["number",function(e){return""!==e?parseFloat(e):null},function(e){return null==e?"":e}];default:return["text",function(e){return e},function(e){return e}]}}var v=["state","options","className","convert","required","emptyText","requiredText","readonly"];function C(e){return void 0===e&&(e={}),r.createDataRenderer(function(t,n){var a;/*#__PURE__*/return l.default.createElement(x,{className:r.rendererClass(t.className,e.className),state:t.control,id:t.id,readonly:t.readonly,options:null!=(a=t.options)?a:[],required:t.required,emptyText:e.emptyText,requiredText:e.requiredText,convert:N(t.field.type)})},{options:!0})}function x(t){var r=n.useComponentTracking();try{var a=function(e,t){/*#__PURE__*/return l.default.createElement("option",{key:t,value:c(e.value),disabled:!!e.disabled},e.name)},o=t.state,s=t.options,d=t.className,c=t.convert,f=t.required,m=t.emptyText,p=void 0===m?"N/A":m,y=t.requiredText,C=void 0===y?"<please select>":y,x=t.readonly,N=i(t,v),g=o.value,h=o.disabled,T=e.useState(!f||null==g)[0],E=e.useMemo(function(){return Object.fromEntries(s.map(function(e){return[c(e.value),e.value]}))},[s]),b=e.useMemo(function(){return new Set(s.filter(function(e){return e.group}).map(function(e){return e.group}))},[s]);/*#__PURE__*/return l.default.createElement("select",u({},N,{className:d,onChange:function(e){return o.value=E[e.target.value]},value:c(g),disabled:h||x}),T&&/*#__PURE__*/l.default.createElement("option",{value:""},f?C:p),[].concat(b.keys()).map(function(e){/*#__PURE__*/return l.default.createElement("optgroup",{key:e,label:e},s.filter(function(t){return t.group===e}).map(a))}),s.filter(function(e){return!e.group}).map(a))}finally{r()}}function N(e){switch(e){case r.FieldType.String:case r.FieldType.Int:case r.FieldType.Double:return function(e){return e};default:return function(e){var t;return null!=(t=null==e?void 0:e.toString())?t:""}}}function g(e){return void 0===e&&(e={}),r.createDataRenderer(function(t){/*#__PURE__*/return l.default.createElement(T,u({},e,t,{className:r.rendererClass(t.className,e.className),isChecked:function(e,t){return e.value==t.value},setChecked:function(e,t){return e.value=t.value},control:t.control,type:"radio",entryAdornment:r.fieldOptionAdornment(t)}))},{renderType:r.DataRenderType.Radio})}function h(e){return void 0===e&&(e={}),r.createDataRenderer(function(t){/*#__PURE__*/return l.default.createElement(T,u({},e,t,{className:r.rendererClass(t.className,e.className),isChecked:function(e,t){var r=e.value;return!!Array.isArray(r)&&r.includes(t.value)},setChecked:function(e,t,r){e.setValue(function(e){return E(null!=e?e:[],t.value,r)})},control:t.control,type:"checkbox",entryAdornment:r.fieldOptionAdornment(t)}))},{collection:!0,renderType:r.DataRenderType.CheckList})}function T(e){var t=n.useComponentTracking();try{var r=e.control,a=e.options,o=e.labelClass,u=e.checkClass,i=e.readonly,s=e.entryClass,d=e.type,c=e.isChecked,f=e.setChecked,m=e.entryAdornment,p=r.disabled,y="r"+r.uniqueId;/*#__PURE__*/return l.default.createElement("div",{className:e.className,id:e.id},/*#__PURE__*/l.default.createElement(n.RenderArrayElements,{array:null==a?void 0:a.filter(function(e){return null!=e.value})},function(e,t){var a=n.useComputed(function(){return c(r,e)}).value;/*#__PURE__*/return l.default.createElement(l.default.Fragment,null,/*#__PURE__*/l.default.createElement("div",{key:t,className:s},/*#__PURE__*/l.default.createElement("input",{id:y+"_"+t,className:u,type:d,name:y,readOnly:i,disabled:p,checked:a,onChange:function(t){!i&&f(r,e,t.target.checked)}}),/*#__PURE__*/l.default.createElement("label",{className:o,htmlFor:y+"_"+t},e.name)),null==m?void 0:m(e,t,a))}))}finally{t()}}function E(e,t,r){return r===e.includes(t)?e:r?[].concat(e,[t]):e.filter(function(e){return e!==t})}function b(e){return void 0===e&&(e={}),r.createDataRenderer(function(t,a){return function(o){return u({},o,{label:void 0,children:/*#__PURE__*/l.default.createElement("div",{className:r.rendererClass(t.className,e.entryClass)},/*#__PURE__*/l.default.createElement(n.Fcheckbox,{id:t.id,control:t.control,style:t.style,className:e.checkClass}),o.label&&a.renderLabel(o.label,void 0,void 0))})}},{renderType:r.DataRenderType.Checkbox})}function D(e){var t=n.useComponentTracking();try{var r=e.errorClass,a=e.renderError,o=e.layout,u=o.controlEnd,i=o.errorControl;/*#__PURE__*/return l.default.createElement(l.default.Fragment,null,o.label,o.controlStart,o.children,(void 0===a?function(e){return e&&/*#__PURE__*/l.default.createElement("div",{className:r},e)}:a)(i&&i.touched?i.error:void 0),u)}finally{t()}}function R(e){var t=n.useComponentTracking();try{var a,o=e.className,u=e.emptyText,i=e.schemaInterface,s=e.field,d=e.style,c=e.control.value,f=null!=(a=i.isEmptyValue(s,c)?u:i.textValue(s,c))?a:"";/*#__PURE__*/return l.default.createElement("div",{style:d,className:r.rendererClass(o)},f)}finally{t()}}function k(e){var t=n.useComponentTracking();try{var r,a=e.children,i=e.accordion,s=e.contentStyle,d=e.contentClassName,c=e.designMode,f=e.iconOpenClass,m=e.iconClosedClass,p=e.className,y=e.renderTitle,v=void 0===y?function(e){return e}:y,C=e.renderToggler,x=e.renderers,N=e.titleClass,g=e.useCss,h=e.dataContext,T=(null!=(r=h.dataNode)?r:h.parentNode).control,E=n.useControl(!!i.defaultExpanded);T&&!T.meta.accordionState&&(T.meta.accordionState=E);var b=E.value,D=b||c?s:u({},s,{display:"none"}),R=x.renderLabelText(v(i.title,E)),k=C?C(E,R):/*#__PURE__*/l.default.createElement("button",{className:p,onClick:function(){return E.setValue(function(e){return!e})}},/*#__PURE__*/l.default.createElement("label",{className:N},R),/*#__PURE__*/l.default.createElement("i",{className:o.default(b?f:m)}));/*#__PURE__*/return l.default.createElement(l.default.Fragment,null,k,(g||b||c)&&/*#__PURE__*/l.default.createElement("div",{style:D,className:d},a))}finally{t()}}function A(){return r.createVisibilityRenderer(function(e){/*#__PURE__*/return l.default.createElement(O,e)})}function O(t){var r=n.useComponentTracking();try{var a=t.visibility,u=t.children,i=t.className,s=t.style,d=t.divRef,c=a.value;return e.useEffect(function(){c&&a.setValue(function(e){return{visible:c.visible,showing:c.visible}})},[null==c?void 0:c.visible]),null!=c&&c.visible?/*#__PURE__*/l.default.createElement("div",{className:o.default(i),style:s,ref:d},u):/*#__PURE__*/l.default.createElement(l.default.Fragment,null)}finally{r()}}function F(e){return r.createDataRenderer(function(t){/*#__PURE__*/return l.default.createElement(S,{renderOptions:t.renderOptions,className:r.rendererClass(t.className,e),dataNode:t.dataNode,dataContext:t.dataContext,control:t.control,readonly:t.readonly})},{renderType:r.DataRenderType.Jsonata})}function S(e){var t=n.useComponentTracking();try{var a=e.control,o=e.renderOptions,u=e.readonly,i=e.className,s=e.dataContext,d=e.dataNode,c=null!=d.elementIndex?d:s.parentNode,f=n.useComputed(function(){return{value:a.value,readonly:u,disabled:a.disabled,formData:s.formData,dataPath:r.getJsonPath(d)}}),m=r.useJsonataExpression(o.expression,r.getRootDataNode(c).control,r.getJsonPath(c),f,r.coerceToString);/*#__PURE__*/return l.default.createElement("div",{className:i,dangerouslySetInnerHTML:{__html:m.value}})}finally{t()}}var L=["control","field","renderOptions"];function w(){return r.createDataRenderer(function(e,t){var a,o,s=e.control,d=e.field,c=i(e,L),f=null!=(o=(a=s.meta).nullControl)?o:a.nullControl=n.newControl(null!=s.current.value);return function(e){var n=t.renderData(u({},c,{control:f,field:u({},d,{type:r.FieldType.Bool}),renderOptions:{type:r.DataRenderType.Checkbox}}))(e);return u({},n,{children:/*#__PURE__*/l.default.createElement(I,{control:s,nullControl:f,children:n.children,readonly:c.readonly,defaultValue:c.definition.defaultValue})})}})}function I(e){var t=e.children,r=e.nullControl,a=e.control,l=e.defaultValue,o=e.readonly;return n.useControlEffect(function(){return o},function(e){return r.disabled=e},!0),n.useControlEffect(function(){return r.value},function(e){var t;e?a.value=null!=(t=r.meta.nonNullValue)?t:l:(r.meta.nonNullValue=a.value,a.value=null)}),t}function q(e){return r.createDataRenderer(function(t,r){/*#__PURE__*/return l.default.createElement(V,{dataProps:t,renderers:r,defaultActions:e})},{renderType:r.DataRenderType.Array,collection:!0})}function V(e){var t,a=e.dataProps,o=e.renderers,i=e.defaultActions,s=a.renderOptions,d=a.control,c=a.field,f=a.readonly,m=a.designMode,p=a.required,y=a.renderChild,v=a.definition,C=a.className,x=a.style,N=a.useChildVisibility,g=a.dataContext,h=r.mergeObjects(r.isArrayRenderer(s)?s:{},i),T=h.addText,E=h.noAdd,b=h.noRemove,D=h.removeText,R=r.isArrayRenderer(s)?s.childOptions:void 0,k=!r.isCompoundField(c),A=k?{type:r.ControlDefinitionType.Data,field:v.field,children:v.children,renderOptions:null!=R?R:{type:r.DataRenderType.Standard},hideTitle:!0}:{type:r.ControlDefinitionType.Group,children:v.children,groupOptions:{type:r.GroupRenderType.Standard,hideTitle:!0}},O=(null!=(t=v.children)?t:[]).map(function(e){return[N(e,void 0,!0),e]}),F=r.makeHookDepString(O,function(e){return e[0].deps}),S=n.useTrackedComponent(M,[F]),L=u({},r.createArrayActions(d,c,{addText:T,removeText:D,noAdd:E,noRemove:b,readonly:f,disabled:d.disabled,designMode:m}),{required:p,renderElement:function(e,t){/*#__PURE__*/return l.default.createElement(S,{index:e,renderChildElement:w,dataContext:g,visibilities:O,wrap:t})},className:C||void 0,style:x},r.getLengthRestrictions(v));return o.renderArray(L);function w(e,t){var r,n;return y(null!=(r=null==(n=d.elements)?void 0:n[e].uniqueId)?r:e,A,k?{elementIndex:e}:{parentDataNode:t})}}function M(e){var t=e.index,n=e.renderChildElement,a=e.visibilities,l=e.wrap,o=e.dataContext,i=o.dataNode.getChildElement(t),s=a.map(function(e){var t=e[0];return t.runHook(u({},o,{parentNode:i,dataNode:r.lookupDataNode(e[1],i)}),t.state).value});if(0==s.length||s.some(function(e){return!0===e}))return l(n(t,i))}function P(e){return{render:function(t,r){/*#__PURE__*/return l.default.createElement(G,u({},t,e,{renderAction:r.renderAction}))},type:"array"}}function G(e){var t=n.useComponentTracking();try{var a=e.renderElement,u=e.className,i=e.removableClass,s=e.childClass,d=e.removableChildClass,c=e.removeActionClass,f=e.addActionClass,m=e.arrayControl,p=e.renderAction,y=e.style,v=r.applyArrayLengthRestrictions(e),C=v.addAction,x=v.removeAction;/*#__PURE__*/return l.default.createElement("div",{style:y},/*#__PURE__*/l.default.createElement("div",{className:o.default(u,x&&i)},/*#__PURE__*/l.default.createElement(n.RenderElements,{control:m},function(e,t){return a(t,function(e){return x?/*#__PURE__*/l.default.createElement(l.default.Fragment,null,/*#__PURE__*/l.default.createElement("div",{className:o.default(s,d)},e),/*#__PURE__*/l.default.createElement("div",{className:c},p(x(t)))):/*#__PURE__*/l.default.createElement("div",{className:s},e)})})),C&&/*#__PURE__*/l.default.createElement("div",{className:f},p(C)))}finally{t()}}function J(t){var r=n.useComponentTracking();try{var a=t.control,o=t.className,u=e.useRef(null);return n.useControlEffect(function(){return a.value},function(e){var t=u.current;t&&t.textContent!==e&&(t.textContent=e)},!0),/*#__PURE__*/l.default.createElement("code",{contentEditable:!a.disabled,className:o,onInput:function(e){return a.value=e.currentTarget.textContent},ref:u})}finally{r()}}function _(e,t){return void 0===t&&(t={}),r.createActionRenderer(e,function(e){var n,a=e.onClick,o=e.actionText,u=e.style,i=e.actionId,s=e.actionData,d=e.disabled;/*#__PURE__*/return l.default.createElement("button",{className:r.rendererClass(e.className,t.className),disabled:d,style:u,onClick:a},null!=(n=null==t.renderContent?void 0:t.renderContent(o,i,s))?n:o)})}function j(e){var t=null!=e?e:{},n=t.className,a=t.gridStyles,i=void 0===a?function(e){var t=e.columns;return{className:c,style:{display:"grid",gridTemplateColumns:"repeat("+(void 0===t?d:t)+", 1fr)"}}}:a,s=t.defaultGridColumns,d=void 0===s?2:s,c=t.gridClassName,f=t.standardClassName,m=t.flexClassName,p=t.defaultFlexGap;return{type:"group",render:function(e){var t=e.renderChild,a=e.renderOptions,s=e.childDefinitions,d=r.isGridRenderer(a)?i(a):r.isFlexRenderer(a)?function(e){return{className:m,style:{display:"flex",gap:e.gap?e.gap:p,flexDirection:e.direction?e.direction:void 0}}}(a):{className:f},c=d.style,y=d.className;return function(a){return u({},a,{children:/*#__PURE__*/l.default.createElement("div",{className:r.rendererClass(e.className,o.default(n,y)),style:c},null==s?void 0:s.map(function(e,r){return t(r,e)}))})}}}}var B=[{name:"Yes",value:!0},{name:"No",value:!1}];function H(e){var t,n,a;void 0===e&&(e={});var o,i=F(e.jsonataClass),s=w(),d=(o=e.multilineClass,r.createDataRenderer(function(e){/*#__PURE__*/return l.default.createElement(J,u({},e,{className:r.rendererClass(e.className,o)}))})),c=b(null!=(t=e.checkOptions)?t:e.checkboxOptions),f=C(e.selectOptions),m=g(null!=(n=e.radioOptions)?n:e.checkOptions),v=h(null!=(a=e.checkListOptions)?a:e.checkOptions),x=u({optionRenderer:f,booleanOptions:B},e),N=x.inputClass,T=x.booleanOptions,E=x.optionRenderer,D=x.displayOnlyClass,k=q(e.arrayOptions);return r.createDataRenderer(function(e,t){var n=e.field,a=n.type,o=e.renderOptions,C=o.type;if(n.collection&&null==e.elementIndex&&(C==r.DataRenderType.Standard||C==r.DataRenderType.Array))return k.render(e,t);if(a===r.FieldType.Compound){var x,g=null!=(x=r.isDataGroupRenderer(o)?o.groupOptions:void 0)?x:{type:"Standard",hideTitle:!0};return t.renderGroup(u({},e,{renderOptions:g}))}if(a==r.FieldType.Any)/*#__PURE__*/return l.default.createElement(l.default.Fragment,null,"No control for Any");if(r.isDisplayOnlyRenderer(o))return function(t){return u({},t,{className:D,children:/*#__PURE__*/l.default.createElement(R,{field:e.field,schemaInterface:e.dataContext.schemaInterface,control:e.control,className:e.className,style:e.style,emptyText:o.emptyText})})};if(null!=T&&a===r.FieldType.Bool&&null==e.options)return t.renderData(u({},e,{options:T}));if(C===r.DataRenderType.Standard&&r.hasOptions(e))return E.render(e,t);switch(C){case r.DataRenderType.NullToggle:return s.render(e,t);case r.DataRenderType.CheckList:return v.render(e,t);case r.DataRenderType.Dropdown:return f.render(e,t);case r.DataRenderType.Radio:return m.render(e,t);case r.DataRenderType.Checkbox:return c.render(e,t);case r.DataRenderType.Jsonata:return i.render(e,t)}if(r.isTextfieldRenderer(o)&&o.multiline)return d.render(e,t);var h=r.isTextfieldRenderer(o)?o.placeholder:void 0;/*#__PURE__*/return l.default.createElement(p,{className:r.rendererClass(e.className,N),style:e.style,id:e.id,readOnly:e.readonly,control:e.control,placeholder:null!=h?h:void 0,convert:y(e.field.type)})})}function U(t){return void 0===t&&(t={}),{type:"adornment",render:function(a,o){var i=a.adornment,s=a.designMode,d=a.dataContext,c=a.useExpr;return{apply:function(a){if(r.isSetFieldAdornment(i)&&c){var f=c(i.expression,function(e){return e}),m=r.useDynamicHooks({value:f}),p=e.useCallback(function(e){var t=e.children,a=e.adornment,l=e.parentContext,o=m(l).value,u=r.schemaDataForFieldRef(a.field,l.parentNode).control,i=!a.defaultOnly;return n.useControlEffect(function(){return[null==o?void 0:o.value,null==(null==u?void 0:u.value)]},function(e){var t=e[0];null==u||u.setValue(function(e){return i||null==e?t:e})},!0),t},[m]);return r.wrapLayout(function(e){/*#__PURE__*/return l.default.createElement(p,{children:e,parentContext:d,adornment:i})})(a)}var y;return r.isIconAdornment(i)?r.appendMarkupAt(null!=(y=i.placement)?y:r.AdornmentPlacement.ControlStart,/*#__PURE__*/l.default.createElement("i",{className:i.iconClass}))(a):r.isAccordionAdornment(i)?r.wrapLayout(function(e){/*#__PURE__*/return l.default.createElement(k,u({renderers:o,children:e,accordion:i,contentStyle:a.style,contentClassName:a.className,designMode:s,dataContext:d},t.accordion))})(a):void 0},priority:0,adornment:i}}}}function Y(e){return void 0===e&&(e={}),r.createLayoutRenderer(function(t,n){var a=r.renderLayoutParts(u({},t,{className:r.rendererClass(t.className,e.className)}),n);return{children:a.wrapLayout(/*#__PURE__*/l.default.createElement(D,u({layout:a},e))),className:a.className,style:a.style,divRef:function(e){return e&&t.errorControl?t.errorControl.meta.scrollElement=e:void 0}}})}function z(e){var t=u({requiredElement:/*#__PURE__*/l.default.createElement("span",null," *"),labelContainer:function(e){return e}},e),n=t.className,a=t.groupLabelClass,i=t.controlLabelClass,s=t.requiredElement,d=t.labelContainer;return{render:function(e,t,u,c){return e.type==r.LabelType.Text?e.label:d(/*#__PURE__*/l.default.createElement(l.default.Fragment,null,/*#__PURE__*/l.default.createElement("label",{htmlFor:e.forId,className:r.rendererClass(e.className,o.default(n,e.type===r.LabelType.Group&&a,e.type===r.LabelType.Control&&i))},t,c.renderLabelText(e.label),e.required&&s),u))},type:"label"}}function K(e){return void 0===e&&(e={}),{data:H(e.data),display:d(e.display),action:_(void 0,e.action),array:P(e.array),group:j(e.group),label:z(e.label),adornment:U(e.adornment),renderLayout:Y(e.layout),visibility:A()}}var Q={label:{groupLabelClass:"font-bold",requiredElement:/*#__PURE__*/l.default.createElement("span",{className:"text-red-500"}," *")},array:{removableClass:"grid grid-cols-[1fr_auto] items-center gap-x-2",childClass:"grow my-2",addActionClass:"my-2"},group:{standardClassName:"flex flex-col gap-4",gridClassName:"gap-x-2 gap-y-4",flexClassName:"gap-2"},action:{className:"bg-primary-500 rounded-lg p-3 text-white"},layout:{className:"flex flex-col",errorClass:"text-sm text-danger-500"},data:{displayOnlyClass:"flex flex-row items-center gap-2",checkOptions:{className:"flex items-center gap-4",entryClass:"flex gap-1 items-center"},selectOptions:{emptyText:"<select>"},multilineClass:"border p-2 outline-0 whitespace-pre"},adornment:{accordion:{className:"flex items-center gap-2 my-2",titleClass:"cursor-pointer",iconOpenClass:"fa fa-chevron-up",iconClosedClass:"fa fa-chevron-down"}}};exports.CheckButtons=T,exports.ControlInput=p,exports.DataArrayRenderer=V,exports.DefaultAccordion=k,exports.DefaultArrayRenderer=G,exports.DefaultBoolOptions=B,exports.DefaultDisplay=c,exports.DefaultDisplayOnly=R,exports.DefaultLayout=D,exports.DefaultVisibility=O,exports.JsonataRenderer=S,exports.SelectDataRenderer=x,exports.createButtonActionRenderer=_,exports.createCheckListRenderer=h,exports.createCheckboxRenderer=b,exports.createClassStyledRenderers=function(){return K({layout:{className:"control"},group:{className:"group"},array:{className:"control-array"},action:{className:"action"},data:{inputClass:"data"},display:{htmlClassName:"html",textClassName:"text"}})},exports.createDefaultAdornmentRenderer=U,exports.createDefaultArrayDataRenderer=q,exports.createDefaultArrayRenderer=P,exports.createDefaultDataRenderer=H,exports.createDefaultDisplayRenderer=d,exports.createDefaultGroupRenderer=j,exports.createDefaultLabelRenderer=z,exports.createDefaultRenderers=K,exports.createDefaultVisibilityRenderer=A,exports.createInputConversion=y,exports.createJsonataRenderer=F,exports.createNullToggleRenderer=w,exports.createRadioRenderer=g,exports.createSelectConversion=N,exports.createSelectRenderer=C,exports.defaultTailwindTheme=Q,exports.getAccordionState=function(e){return e.meta.accordionState},exports.setIncluded=E;
1
+ var e=require("react"),t=require("clsx"),r=require("@react-typed-forms/schemas"),n=require("@react-typed-forms/core");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=/*#__PURE__*/a(e),o=/*#__PURE__*/a(t);function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},u.apply(null,arguments)}function i(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.includes(n))continue;r[n]=e[n]}return r}var s=["data","display","className","style"];function d(e){return void 0===e&&(e={}),{render:function(t){/*#__PURE__*/return l.default.createElement(c,u({},e,t))},type:"display"}}function c(e){var t=n.useComponentTracking();try{var a=e.data,u=e.display,d=e.className,c=e.style,f=i(e,s);switch(a.type){case r.DisplayDataType.Icon:/*#__PURE__*/return l.default.createElement("i",{style:c,className:o.default(r.getOverrideClass(d),u?u.value:a.iconClass)});case r.DisplayDataType.Text:/*#__PURE__*/return l.default.createElement("div",{style:c,className:r.rendererClass(d,f.textClassName)},u?r.coerceToString(u.value):a.text);case r.DisplayDataType.Html:/*#__PURE__*/return l.default.createElement("div",{style:c,className:r.rendererClass(d,f.htmlClassName),dangerouslySetInnerHTML:{__html:u?r.coerceToString(u.value):a.html}});case r.DisplayDataType.Custom:/*#__PURE__*/return l.default.createElement("div",null,"Custom display placeholder: ",a.customId);default:/*#__PURE__*/return l.default.createElement("h1",null,"Unknown display type: ",a.type)}}finally{t()}}var f=["control","convert"],p=["errorText","value","onChange"];function m(e){var t=n.useComponentTracking();try{var r=function(e){return null==e?"":o[2](e)},a=e.control,o=e.convert,s=i(e,f),d=n.formControlProps(a),c=d.value,m=i(d,p),y=n.useControl(function(){return r(c)});return n.useControlEffect(function(){return a.value},function(e){return y.value=r(e)}),/*#__PURE__*/l.default.createElement("input",u({},m,{type:o[0],value:y.value,onChange:function(e){y.value=e.target.value;var t=o[1](e.target.value);void 0!==t&&(a.value=t)}},s))}finally{t()}}function y(e){switch(e){case r.FieldType.String:return["text",function(e){return e},function(e){return e}];case r.FieldType.Bool:return["text",function(e){return"true"===e||"false"!==e&&void 0},function(e){var t;return null!=(t=null==e?void 0:e.toString())?t:""}];case r.FieldType.Int:return["number",function(e){return""!==e?parseInt(e):null},function(e){return null==e?"":e}];case r.FieldType.DateTime:return["datetime-local",function(e){return e||null},function(e){return e}];case r.FieldType.Date:return["date",function(e){return e||null},function(e){return e}];case r.FieldType.Time:return["time",function(e){var t=e.length;return 5===t?e+":00":8===t?e:void 0},function(e){return e?e.substring(0,5):""}];case r.FieldType.Double:return["number",function(e){return""!==e?parseFloat(e):null},function(e){return null==e?"":e}];default:return["text",function(e){return e},function(e){return e}]}}var v=["state","options","className","convert","required","emptyText","requiredText","readonly"];function C(e){return void 0===e&&(e={}),r.createDataRenderer(function(t,n){var a;/*#__PURE__*/return l.default.createElement(x,{className:r.rendererClass(t.className,e.className),state:t.control,id:t.id,readonly:t.readonly,options:null!=(a=t.options)?a:[],required:t.required,emptyText:e.emptyText,requiredText:e.requiredText,convert:N(t.field.type)})},{options:!0})}function x(t){var r=n.useComponentTracking();try{var a=function(e,t){/*#__PURE__*/return l.default.createElement("option",{key:t,value:c(e.value),disabled:!!e.disabled},e.name)},o=t.state,s=t.options,d=t.className,c=t.convert,f=t.required,p=t.emptyText,m=void 0===p?"N/A":p,y=t.requiredText,C=void 0===y?"<please select>":y,x=t.readonly,N=i(t,v),g=o.value,h=o.disabled,T=e.useState(!f||null==g)[0],E=e.useMemo(function(){return Object.fromEntries(s.map(function(e){return[c(e.value),e.value]}))},[s]),b=e.useMemo(function(){return new Set(s.filter(function(e){return e.group}).map(function(e){return e.group}))},[s]);/*#__PURE__*/return l.default.createElement("select",u({},N,{className:d,onChange:function(e){return o.value=E[e.target.value]},value:c(g),disabled:h||x}),T&&/*#__PURE__*/l.default.createElement("option",{value:""},f?C:m),[].concat(b.keys()).map(function(e){/*#__PURE__*/return l.default.createElement("optgroup",{key:e,label:e},s.filter(function(t){return t.group===e}).map(a))}),s.filter(function(e){return!e.group}).map(a))}finally{r()}}function N(e){switch(e){case r.FieldType.String:case r.FieldType.Int:case r.FieldType.Double:return function(e){return e};default:return function(e){var t;return null!=(t=null==e?void 0:e.toString())?t:""}}}function g(e){return void 0===e&&(e={}),r.createDataRenderer(function(t){/*#__PURE__*/return l.default.createElement(T,u({},e,t,{className:r.rendererClass(t.className,e.className),isChecked:function(e,t){return e.value==t.value},setChecked:function(e,t){return e.value=t.value},control:t.control,type:"radio",entryAdornment:r.fieldOptionAdornment(t)}))},{renderType:r.DataRenderType.Radio})}function h(e){return void 0===e&&(e={}),r.createDataRenderer(function(t){/*#__PURE__*/return l.default.createElement(T,u({},e,t,{className:r.rendererClass(t.className,e.className),isChecked:function(e,t){var r=e.value;return!!Array.isArray(r)&&r.includes(t.value)},setChecked:function(e,t,r){e.setValue(function(e){return E(null!=e?e:[],t.value,r)})},control:t.control,type:"checkbox",entryAdornment:r.fieldOptionAdornment(t)}))},{collection:!0,renderType:r.DataRenderType.CheckList})}function T(e){var t=n.useComponentTracking();try{var r=e.control,a=e.options,o=e.labelClass,u=e.checkClass,i=e.readonly,s=e.entryClass,d=e.type,c=e.isChecked,f=e.setChecked,p=e.entryAdornment,m=r.disabled,y="r"+r.uniqueId;/*#__PURE__*/return l.default.createElement("div",{className:e.className,id:e.id},/*#__PURE__*/l.default.createElement(n.RenderArrayElements,{array:null==a?void 0:a.filter(function(e){return null!=e.value})},function(e,t){var a=n.useComputed(function(){return c(r,e)}).value;/*#__PURE__*/return l.default.createElement(l.default.Fragment,null,/*#__PURE__*/l.default.createElement("div",{key:t,className:s},/*#__PURE__*/l.default.createElement("input",{id:y+"_"+t,className:u,type:d,name:y,readOnly:i,disabled:m,checked:a,onChange:function(t){!i&&f(r,e,t.target.checked)}}),/*#__PURE__*/l.default.createElement("label",{className:o,htmlFor:y+"_"+t},e.name)),null==p?void 0:p(e,t,a))}))}finally{t()}}function E(e,t,r){return r===e.includes(t)?e:r?[].concat(e,[t]):e.filter(function(e){return e!==t})}function b(e){return void 0===e&&(e={}),r.createDataRenderer(function(t,a){return function(o){return u({},o,{label:void 0,children:/*#__PURE__*/l.default.createElement("div",{className:r.rendererClass(t.className,e.entryClass)},/*#__PURE__*/l.default.createElement(n.Fcheckbox,{id:t.id,control:t.control,style:t.style,className:e.checkClass}),o.label&&a.renderLabel(o.label,void 0,void 0))})}},{renderType:r.DataRenderType.Checkbox})}function D(e){return void 0===e&&(e={}),r.createLayoutRenderer(function(t,n){var a=r.renderLayoutParts(t,n);return{children:a.wrapLayout(/*#__PURE__*/l.default.createElement(R,u({layout:a},e))),className:r.rendererClass(a.className,e.className),style:a.style,divRef:function(e){return e&&t.errorControl?t.errorControl.meta.scrollElement=e:void 0}}})}function R(e){var t=n.useComponentTracking();try{var r=e.errorClass,a=e.renderError,o=e.layout,u=o.controlEnd,i=o.errorControl;/*#__PURE__*/return l.default.createElement(l.default.Fragment,null,o.label,o.controlStart,o.children,(void 0===a?function(e){return e&&/*#__PURE__*/l.default.createElement("div",{className:r},e)}:a)(i&&i.touched?i.error:void 0),u)}finally{t()}}function k(e){var t=n.useComponentTracking();try{var r,a=e.className,o=e.emptyText,u=e.schemaInterface,i=e.field,s=e.style,d=e.control.value,c=null!=(r=u.isEmptyValue(i,d)?o:u.textValue(i,d))?r:"";/*#__PURE__*/return l.default.createElement("div",{style:s,className:a},c)}finally{t()}}function O(e){var t=n.useComponentTracking();try{var r,a=e.children,i=e.accordion,s=e.contentStyle,d=e.contentClassName,c=e.designMode,f=e.iconOpenClass,p=e.iconClosedClass,m=e.className,y=e.renderTitle,v=void 0===y?function(e){return e}:y,C=e.renderToggler,x=e.renderers,N=e.titleClass,g=e.useCss,h=e.dataContext,T=(null!=(r=h.dataNode)?r:h.parentNode).control,E=n.useControl(!!i.defaultExpanded);T&&!T.meta.accordionState&&(T.meta.accordionState=E);var b=E.value,D=b||c?s:u({},s,{display:"none"}),R=x.renderLabelText(v(i.title,E)),k=C?C(E,R):/*#__PURE__*/l.default.createElement("button",{className:m,onClick:function(){return E.setValue(function(e){return!e})}},/*#__PURE__*/l.default.createElement("label",{className:N},R),/*#__PURE__*/l.default.createElement("i",{className:o.default(b?f:p)}));/*#__PURE__*/return l.default.createElement(l.default.Fragment,null,k,(g||b||c)&&/*#__PURE__*/l.default.createElement("div",{style:D,className:d},a))}finally{t()}}function A(e){var t=null!=e?e:{},n=t.className,a=t.gridStyles,i=void 0===a?function(e){var t=e.columns;return{className:c,style:{display:"grid",gridTemplateColumns:"repeat("+(void 0===t?d:t)+", 1fr)"}}}:a,s=t.defaultGridColumns,d=void 0===s?2:s,c=t.gridClassName,f=t.standardClassName,p=t.flexClassName,m=t.defaultFlexGap;return{type:"group",render:function(e){var t=e.renderChild,a=e.renderOptions,s=e.childDefinitions;if(r.isSelectChildRenderer(a)&&!e.designMode)/*#__PURE__*/return l.default.createElement(S,u({},e,{renderOptions:a}));var d=r.isGridRenderer(a)?i(a):r.isFlexRenderer(a)?function(e){return{className:p,style:{display:"flex",gap:e.gap?e.gap:m,flexDirection:e.direction?e.direction:void 0}}}(a):{className:f},c=d.style;/*#__PURE__*/return l.default.createElement("div",{className:r.rendererClass(e.className,o.default(n,d.className)),style:c},null==s?void 0:s.map(function(e,r){return t(r,e)}))}}}function S(e){var t=n.useComponentTracking();try{var r=e.renderOptions,a=(0,e.useEvalExpression)(null==r?void 0:r.childIndexExpression,function(e){return"string"==e?parseInt(e):e}),o=n.useTrackedComponent(function(e){var t=a.runHook(e.dataContext,a.state),r=null==t?void 0:t.value;/*#__PURE__*/return l.default.createElement("div",null,"number"==typeof r&&r<e.childDefinitions.length&&r>=0&&e.renderChild(r,e.childDefinitions[r]))},[a.deps]);/*#__PURE__*/return l.default.createElement(o,e)}finally{t()}}function F(){return r.createVisibilityRenderer(function(e){/*#__PURE__*/return l.default.createElement(L,e)})}function L(t){var r=n.useComponentTracking();try{var a=t.visibility,u=t.children,i=t.className,s=t.style,d=t.divRef,c=a.value;return e.useEffect(function(){c&&a.setValue(function(e){return{visible:c.visible,showing:c.visible}})},[null==c?void 0:c.visible]),null!=c&&c.visible?/*#__PURE__*/l.default.createElement("div",{className:o.default(i),style:s,ref:d},u):/*#__PURE__*/l.default.createElement(l.default.Fragment,null)}finally{r()}}function I(e){return r.createDataRenderer(function(t){/*#__PURE__*/return l.default.createElement(w,{renderOptions:t.renderOptions,className:r.rendererClass(t.className,e),dataNode:t.dataNode,dataContext:t.dataContext,control:t.control,readonly:t.readonly})},{renderType:r.DataRenderType.Jsonata})}function w(e){var t=n.useComponentTracking();try{var a=e.control,o=e.renderOptions,u=e.readonly,i=e.className,s=e.dataContext,d=e.dataNode,c=null!=d.elementIndex?d:s.parentNode,f=n.useComputed(function(){return{value:a.value,readonly:u,disabled:a.disabled,formData:s.formData,dataPath:r.getJsonPath(d)}}),p=r.useJsonataExpression(o.expression,r.getRootDataNode(c).control,r.getJsonPath(c),f,r.coerceToString);/*#__PURE__*/return l.default.createElement("div",{className:i,dangerouslySetInnerHTML:{__html:p.value}})}finally{t()}}var q=["control","field","renderOptions"];function V(){return r.createDataRenderer(function(e,t){var a,o,s=e.control,d=e.field,c=i(e,q),f=null!=(o=(a=s.meta).nullControl)?o:a.nullControl=n.newControl(null!=s.current.value);return function(e){var n=t.renderData(u({},c,{control:f,field:u({},d,{type:r.FieldType.Bool}),renderOptions:{type:r.DataRenderType.Checkbox}}))(e);return u({},n,{children:/*#__PURE__*/l.default.createElement(M,{control:s,nullControl:f,children:n.children,readonly:c.readonly,defaultValue:c.definition.defaultValue})})}})}function M(e){var t=e.children,r=e.nullControl,a=e.control,l=e.defaultValue,o=e.readonly;return n.useControlEffect(function(){return o},function(e){return r.disabled=e},!0),n.useControlEffect(function(){return r.value},function(e){var t;e?a.value=null!=(t=r.meta.nonNullValue)?t:l:(r.meta.nonNullValue=a.value,a.value=null)}),t}function P(e){return r.createDataRenderer(function(t,r){/*#__PURE__*/return l.default.createElement(G,{dataProps:t,renderers:r,defaultActions:e})},{renderType:r.DataRenderType.Array,collection:!0})}function G(e){var t,a=e.dataProps,o=e.renderers,i=e.defaultActions,s=a.renderOptions,d=a.control,c=a.field,f=a.readonly,p=a.designMode,m=a.required,y=a.renderChild,v=a.definition,C=a.className,x=a.style,N=a.useChildVisibility,g=a.dataContext,h=r.mergeObjects(r.isArrayRenderer(s)?s:{},i),T=h.addText,E=h.noAdd,b=h.noRemove,D=h.removeText,R=r.isArrayRenderer(s)?s.childOptions:void 0,k=!r.isCompoundField(c),O=k?{type:r.ControlDefinitionType.Data,field:v.field,children:v.children,renderOptions:null!=R?R:{type:r.DataRenderType.Standard},hideTitle:!0}:{type:r.ControlDefinitionType.Group,children:v.children,groupOptions:{type:r.GroupRenderType.Standard,hideTitle:!0}},A=(null!=(t=v.children)?t:[]).map(function(e){return[N(e,void 0,!0),e]}),S=r.makeHookDepString(A,function(e){return e[0].deps}),F=n.useTrackedComponent(H,[S]),L=u({},r.createArrayActions(d,c,{addText:T,removeText:D,noAdd:E,noRemove:b,readonly:f,disabled:d.disabled,designMode:p}),{required:m,renderElement:function(e,t){/*#__PURE__*/return l.default.createElement(F,{index:e,renderChildElement:I,dataContext:g,visibilities:A,wrap:t})},className:C||void 0,style:x},r.getLengthRestrictions(v));return o.renderArray(L);function I(e,t){var r,n;return y(null!=(r=null==(n=d.elements)?void 0:n[e].uniqueId)?r:e,O,k?{elementIndex:e}:{parentDataNode:t})}}function H(e){var t=e.index,n=e.renderChildElement,a=e.visibilities,l=e.wrap,o=e.dataContext,i=o.dataNode.getChildElement(t),s=a.map(function(e){var t=e[0];return t.runHook(u({},o,{parentNode:i,dataNode:r.lookupDataNode(e[1],i)}),t.state).value});if(0==s.length||s.some(function(e){return!0===e}))return l(n(t,i))}function J(e){return{render:function(t,r){/*#__PURE__*/return l.default.createElement(_,u({},t,e,{renderAction:r.renderAction}))},type:"array"}}function _(e){var t=n.useComponentTracking();try{var a=e.renderElement,u=e.className,i=e.removableClass,s=e.childClass,d=e.removableChildClass,c=e.removeActionClass,f=e.addActionClass,p=e.arrayControl,m=e.renderAction,y=e.style,v=r.applyArrayLengthRestrictions(e),C=v.addAction,x=v.removeAction;/*#__PURE__*/return l.default.createElement("div",{style:y},/*#__PURE__*/l.default.createElement("div",{className:o.default(u,x&&i)},/*#__PURE__*/l.default.createElement(n.RenderElements,{control:p},function(e,t){return a(t,function(e){return x?/*#__PURE__*/l.default.createElement(l.default.Fragment,null,/*#__PURE__*/l.default.createElement("div",{className:o.default(s,d)},e),/*#__PURE__*/l.default.createElement("div",{className:c},m(x(t)))):/*#__PURE__*/l.default.createElement("div",{className:s},e)})})),C&&/*#__PURE__*/l.default.createElement("div",{className:f},m(C)))}finally{t()}}function j(t){var r=n.useComponentTracking();try{var a=t.control,o=t.className,u=e.useRef(null);return n.useControlEffect(function(){return a.value},function(e){var t=u.current;t&&t.textContent!==e&&(t.textContent=e)},!0),/*#__PURE__*/l.default.createElement("code",{contentEditable:!a.disabled,className:o,onInput:function(e){return a.value=e.currentTarget.textContent},ref:u})}finally{r()}}function B(e,t){return void 0===t&&(t={}),r.createActionRenderer(e,function(e){var n,a=e.onClick,o=e.actionText,u=e.style,i=e.actionId,s=e.actionData,d=e.disabled;/*#__PURE__*/return l.default.createElement("button",{className:r.rendererClass(e.className,t.className),disabled:d,style:u,onClick:a},null!=(n=null==t.renderContent?void 0:t.renderContent(o,i,s))?n:o)})}var U=[{name:"Yes",value:!0},{name:"No",value:!1}];function Y(e){var t,n,a;void 0===e&&(e={});var o,i=I(e.jsonataClass),s=V(),d=(o=e.multilineClass,r.createDataRenderer(function(e){/*#__PURE__*/return l.default.createElement(j,u({},e,{className:r.rendererClass(e.className,o)}))})),c=b(null!=(t=e.checkOptions)?t:e.checkboxOptions),f=C(e.selectOptions),p=g(null!=(n=e.radioOptions)?n:e.checkOptions),v=h(null!=(a=e.checkListOptions)?a:e.checkOptions),x=u({optionRenderer:f,booleanOptions:U},e),N=x.inputClass,T=x.booleanOptions,E=x.optionRenderer,D=x.displayOnlyClass,R=x.defaultEmptyText,O=P(e.arrayOptions);return r.createDataRenderer(function(e,t){var n=e.field,a=n.type,o=e.renderOptions,C=o.type;if(n.collection&&null==e.elementIndex&&(C==r.DataRenderType.Standard||C==r.DataRenderType.Array))return O.render(e,t);if(a===r.FieldType.Compound){var x,g=null!=(x=r.isDataGroupRenderer(o)?o.groupOptions:void 0)?x:{type:"Standard",hideTitle:!0};return t.renderGroup(u({},e,{renderOptions:g}))}if(a==r.FieldType.Any)/*#__PURE__*/return l.default.createElement(l.default.Fragment,null,"No control for Any");if(e.displayOnly||r.isDisplayOnlyRenderer(o))return function(t){return u({},t,{className:"@ "+r.rendererClass(t.className,D),children:/*#__PURE__*/l.default.createElement(k,{field:e.field,schemaInterface:e.dataContext.schemaInterface,control:e.control,className:e.className,style:e.style,emptyText:r.isDisplayOnlyRenderer(o)&&o.emptyText?o.emptyText:R})})};if(null!=T&&a===r.FieldType.Bool&&null==e.options)return t.renderData(u({},e,{options:T}));if(C===r.DataRenderType.Standard&&r.hasOptions(e))return E.render(e,t);switch(C){case r.DataRenderType.NullToggle:return s.render(e,t);case r.DataRenderType.CheckList:return v.render(e,t);case r.DataRenderType.Dropdown:return f.render(e,t);case r.DataRenderType.Radio:return p.render(e,t);case r.DataRenderType.Checkbox:return c.render(e,t);case r.DataRenderType.Jsonata:return i.render(e,t)}if(r.isTextfieldRenderer(o)&&o.multiline)return d.render(e,t);var h=r.isTextfieldRenderer(o)?o.placeholder:void 0;/*#__PURE__*/return l.default.createElement(m,{className:r.rendererClass(e.className,N),style:e.style,id:e.id,readOnly:e.readonly,control:e.control,placeholder:null!=h?h:void 0,convert:y(e.field.type)})})}function z(t){return void 0===t&&(t={}),{type:"adornment",render:function(a,o){var i=a.adornment,s=a.designMode,d=a.dataContext,c=a.useExpr;return{apply:function(a){if(r.isSetFieldAdornment(i)&&c){var f=c(i.expression,function(e){return e}),p=r.useDynamicHooks({value:f}),m=e.useCallback(function(e){var t=e.children,a=e.adornment,l=e.parentContext,o=p(l).value,u=r.schemaDataForFieldRef(a.field,l.parentNode).control,i=!a.defaultOnly;return n.useControlEffect(function(){return[null==o?void 0:o.value,null==(null==u?void 0:u.value)]},function(e){var t=e[0];null==u||u.setValue(function(e){return i||null==e?t:e})},!0),t},[p]);return r.wrapLayout(function(e){/*#__PURE__*/return l.default.createElement(m,{children:e,parentContext:d,adornment:i})})(a)}var y;return r.isIconAdornment(i)?r.appendMarkupAt(null!=(y=i.placement)?y:r.AdornmentPlacement.ControlStart,/*#__PURE__*/l.default.createElement("i",{className:i.iconClass}))(a):r.isAccordionAdornment(i)?r.wrapLayout(function(e){/*#__PURE__*/return l.default.createElement(O,u({renderers:o,children:e,accordion:i,contentStyle:a.style,contentClassName:a.className,designMode:s,dataContext:d},t.accordion))})(a):void 0},priority:0,adornment:i}}}}function K(e){var t=u({requiredElement:/*#__PURE__*/l.default.createElement("span",null," *"),labelContainer:function(e){return e}},e),n=t.className,a=t.groupLabelClass,i=t.controlLabelClass,s=t.requiredElement,d=t.labelContainer;return{render:function(e,t,u,c){return e.type==r.LabelType.Text?e.label:d(/*#__PURE__*/l.default.createElement(l.default.Fragment,null,/*#__PURE__*/l.default.createElement("label",{htmlFor:e.forId,className:r.rendererClass(e.className,o.default(n,e.type===r.LabelType.Group&&a,e.type===r.LabelType.Control&&i))},t,c.renderLabelText(e.label),e.required&&s),u))},type:"label"}}function Q(e){return void 0===e&&(e={}),{data:Y(e.data),display:d(e.display),action:B(void 0,e.action),array:J(e.array),group:A(e.group),label:K(e.label),adornment:z(e.adornment),renderLayout:D(e.layout),visibility:F()}}var W={label:{groupLabelClass:"font-bold",requiredElement:/*#__PURE__*/l.default.createElement("span",{className:"text-red-500"}," *")},array:{removableClass:"grid grid-cols-[1fr_auto] items-center gap-x-2",childClass:"grow my-2",addActionClass:"my-2"},group:{standardClassName:"flex flex-col gap-4",gridClassName:"gap-x-2 gap-y-4",flexClassName:"gap-2"},action:{className:"bg-primary-500 rounded-lg p-3 text-white"},layout:{className:"flex flex-col",errorClass:"text-sm text-danger-500"},data:{displayOnlyClass:"flex flex-row items-center gap-2",checkOptions:{className:"flex items-center gap-4",entryClass:"flex gap-1 items-center"},selectOptions:{emptyText:"<select>"},multilineClass:"border p-2 outline-0 whitespace-pre-wrap"},adornment:{accordion:{className:"flex items-center gap-2 my-2",titleClass:"cursor-pointer",iconOpenClass:"fa fa-chevron-up",iconClosedClass:"fa fa-chevron-down"}}};exports.CheckButtons=T,exports.ControlInput=m,exports.DataArrayRenderer=G,exports.DefaultAccordion=O,exports.DefaultArrayRenderer=_,exports.DefaultBoolOptions=U,exports.DefaultDisplay=c,exports.DefaultDisplayOnly=k,exports.DefaultLayout=R,exports.DefaultVisibility=L,exports.JsonataRenderer=w,exports.SelectDataRenderer=x,exports.createButtonActionRenderer=B,exports.createCheckListRenderer=h,exports.createCheckboxRenderer=b,exports.createClassStyledRenderers=function(){return Q({layout:{className:"control"},group:{className:"group"},array:{className:"control-array"},action:{className:"action"},data:{inputClass:"data"},display:{htmlClassName:"html",textClassName:"text"}})},exports.createDefaultAdornmentRenderer=z,exports.createDefaultArrayDataRenderer=P,exports.createDefaultArrayRenderer=J,exports.createDefaultDataRenderer=Y,exports.createDefaultDisplayRenderer=d,exports.createDefaultGroupRenderer=A,exports.createDefaultLabelRenderer=K,exports.createDefaultLayoutRenderer=D,exports.createDefaultRenderers=Q,exports.createDefaultVisibilityRenderer=F,exports.createInputConversion=y,exports.createJsonataRenderer=I,exports.createNullToggleRenderer=V,exports.createRadioRenderer=g,exports.createSelectConversion=N,exports.createSelectRenderer=C,exports.defaultTailwindTheme=W,exports.getAccordionState=function(e){return e.meta.accordionState},exports.setIncluded=E;
2
2
  //# sourceMappingURL=index.cjs.map
package/lib/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","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/DefaultVisibility.tsx","../src/components/JsonataRenderer.tsx","../src/components/NullToggle.tsx","../src/components/DefaultArrayRenderer.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 Custom display placeholder: {(data as CustomDisplay).customId}\n </div>\n );\n default:\n return <h1>Unknown display type: {data.type}</h1>;\n }\n}\n","import 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 createDataRenderer,\n DataRenderType,\n FieldOption,\n fieldOptionAdornment,\n rendererClass\n} from \"@react-typed-forms/schemas\";\n\nexport interface CheckRendererOptions {\n className?: string;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n}\nexport function createRadioRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n {...options}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => control.value == o.value}\n setChecked={(c, o) => (c.value = o.value)}\n control={p.control}\n type=\"radio\"\n 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 {...options}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => {\n const v = control.value;\n return Array.isArray(v) ? v.includes(o.value) : false;\n }}\n setChecked={(c, o, checked) => {\n c.setValue((x) => setIncluded(x ?? [], o.value, checked));\n }}\n control={p.control}\n type=\"checkbox\"\n 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 entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n readonly?: boolean;\n type: \"checkbox\" | \"radio\";\n isChecked: (c: Control<any>, o: FieldOption) => boolean;\n setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;\n entryAdornment?: (c: FieldOption, i: number, selected: boolean) => ReactNode;\n}\n\nexport function CheckButtons({\n control,\n options,\n labelClass,\n checkClass,\n readonly,\n entryClass,\n className,\n id,\n type,\n isChecked,\n setChecked,\n entryAdornment,\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 return (\n <>\n <div key={i} className={entryClass}>\n <input\n id={name + \"_\" + i}\n className={checkClass}\n type={type}\n name={name}\n readOnly={readonly}\n disabled={disabled}\n checked={checked}\n onChange={(x) => {\n !readonly && setChecked(control, o, x.target.checked);\n }}\n />\n <label className={labelClass} htmlFor={name + \"_\" + i}>\n {o.name}\n </label>\n </div>\n {entryAdornment?.(o, i, checked)}\n </>\n );\n }}\n </RenderArrayElements>\n </div>\n );\n}\n\nexport function setIncluded<A>(array: A[], elem: A, included: boolean): A[] {\n const already = array.includes(elem);\n if (included === already) {\n return array;\n }\n if (included) {\n return [...array, elem];\n }\n return array.filter((e) => e !== elem);\n}\n\nexport function createCheckboxRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (props, renderer) => (p) => ({\n ...p,\n label: undefined,\n children: (\n <div className={rendererClass(props.className, options.entryClass)}>\n <Fcheckbox\n id={props.id}\n control={props.control}\n style={props.style}\n className={options.checkClass}\n />\n {p.label && renderer.renderLabel(p.label, undefined, undefined)}\n </div>\n ),\n }),\n { renderType: DataRenderType.Checkbox },\n );\n}\n","import React, { ReactNode } from \"react\";\nimport {RenderedLayout} 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 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 | null;\n style?: React.CSSProperties;\n emptyText?: string | null;\n}) {\n const v = control.value;\n const text =\n (schemaInterface.isEmptyValue(field, v)\n ? emptyText\n : schemaInterface.textValue(field, v)) ?? \"\";\n return (\n <div style={style} className={rendererClass(className)}>\n {text}\n </div>\n );\n}\n","import 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 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 { Control, newControl, useControlEffect } from \"@react-typed-forms/core\";\nimport React, { ReactNode } from \"react\";\nimport {\n createDataRenderer,\n DataRenderType,\n FieldType,\n} from \"@react-typed-forms/schemas\";\n\nexport function createNullToggleRenderer() {\n return createDataRenderer(\n ({ control, field, renderOptions, ...props }, renderers) => {\n const nullControl = (control.meta[\"nullControl\"] ??= newControl(\n control.current.value != null,\n ));\n return (layout) => {\n const newLayout = renderers.renderData({\n ...props,\n control: nullControl,\n field: { ...field, type: FieldType.Bool },\n renderOptions: { type: DataRenderType.Checkbox },\n })(layout);\n return {\n ...newLayout,\n children: (\n <NullWrapper\n control={control}\n nullControl={nullControl}\n children={newLayout.children}\n readonly={props.readonly}\n defaultValue={props.definition.defaultValue}\n />\n ),\n };\n };\n },\n );\n}\n\nfunction NullWrapper({\n children,\n nullControl,\n control,\n defaultValue,\n readonly,\n}: {\n control: Control<any>;\n nullControl: Control<boolean>;\n children: ReactNode;\n readonly: boolean;\n defaultValue: any;\n}) {\n useControlEffect(\n () => readonly,\n (r) => (nullControl.disabled = r),\n true,\n );\n useControlEffect(\n () => nullControl.value,\n (e) => {\n if (e) {\n control.value = nullControl.meta[\"nonNullValue\"] ?? defaultValue;\n } else {\n nullControl.meta[\"nonNullValue\"] = control.value;\n control.value = null;\n }\n },\n );\n return children;\n}\n","import 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 FormRenderer,\n getLengthRestrictions,\n GroupedControlsDefinition,\n GroupRenderType,\n isArrayRenderer,\n isCompoundField,\n lookupDataNode,\n makeHookDepString,\n mergeObjects,\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 } = 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: ControlDefinition = !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\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, 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, { 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 DefaultLayout,\n DefaultLayoutRendererOptions,\n} from \"./components/DefaultLayout\";\nimport { createDefaultVisibilityRenderer } from \"./components/DefaultVisibility\";\nimport React, {\n CSSProperties,\n Fragment,\n ReactElement,\n ReactNode,\n useCallback,\n} from \"react\";\nimport clsx from \"clsx\";\nimport {\n createSelectRenderer,\n SelectRendererOptions,\n} from \"./components/SelectDataRenderer\";\nimport { DefaultDisplayOnly } from \"./components/DefaultDisplayOnly\";\nimport { Control, useControlEffect } from \"@react-typed-forms/core\";\nimport { ControlInput, createInputConversion } from \"./components/ControlInput\";\nimport {\n createDefaultArrayDataRenderer,\n createDefaultArrayRenderer,\n DefaultArrayRendererOptions,\n} from \"./components/DefaultArrayRenderer\";\nimport {\n CheckRendererOptions,\n createCheckboxRenderer,\n createCheckListRenderer,\n createRadioRenderer,\n} from \"./components/CheckRenderer\";\nimport { DefaultAccordion } from \"./components/DefaultAccordion\";\nimport { createNullToggleRenderer } from \"./components/NullToggle\";\nimport { createMultilineFieldRenderer } from \"./components/MultilineTextfield\";\nimport { createJsonataRenderer } from \"./components/JsonataRenderer\";\nimport {\n ActionRendererProps,\n ActionRendererRegistration,\n AdornmentPlacement,\n AdornmentRendererRegistration,\n appendMarkupAt,\n ArrayActionOptions,\n ControlDataContext,\n ControlLayoutProps,\n createActionRenderer,\n createDataRenderer,\n createLayoutRenderer,\n DataRendererRegistration,\n DataRenderType,\n DefaultRenderers,\n FieldOption,\n FieldType,\n FlexRenderer,\n GridRenderer,\n GroupRendererProps,\n GroupRendererRegistration,\n hasOptions,\n isAccordionAdornment,\n isDataGroupRenderer,\n isDisplayOnlyRenderer,\n isFlexRenderer,\n isGridRenderer,\n isIconAdornment,\n isSetFieldAdornment,\n isTextfieldRenderer,\n LabelRendererRegistration,\n LabelType,\n rendererClass,\n renderLayoutParts,\n schemaDataForFieldRef,\n SetFieldAdornment,\n useDynamicHooks,\n wrapLayout,\n} from \"@react-typed-forms/schemas\";\n\nexport interface DefaultRendererOptions {\n data?: DefaultDataRendererOptions;\n display?: DefaultDisplayRendererOptions;\n action?: DefaultActionRendererOptions;\n array?: DefaultArrayRendererOptions;\n group?: DefaultGroupRendererOptions;\n label?: DefaultLabelRendererOptions;\n adornment?: DefaultAdornmentRendererOptions;\n layout?: DefaultLayoutRendererOptions;\n}\n\ninterface StyleProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport interface DefaultActionRendererOptions {\n className?: string;\n renderContent?: (\n actionText: string,\n actionId: string,\n actionData: any,\n ) => ReactNode;\n}\n\nexport function createButtonActionRenderer(\n actionId: string | string[] | undefined,\n options: DefaultActionRendererOptions = {},\n): ActionRendererRegistration {\n return createActionRenderer(\n actionId,\n ({\n onClick,\n actionText,\n className,\n style,\n actionId,\n actionData,\n 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 interface DefaultGroupRendererOptions {\n className?: string;\n standardClassName?: string;\n gridStyles?: (columns: GridRenderer) => StyleProps;\n gridClassName?: string;\n defaultGridColumns?: number;\n flexClassName?: string;\n defaultFlexGap?: string;\n}\n\nexport function createDefaultGroupRenderer(\n options?: DefaultGroupRendererOptions,\n): GroupRendererRegistration {\n const {\n className,\n gridStyles = defaultGridStyles,\n defaultGridColumns = 2,\n gridClassName,\n standardClassName,\n flexClassName,\n defaultFlexGap,\n } = options ?? {};\n\n function defaultGridStyles({\n columns = defaultGridColumns,\n }: GridRenderer): StyleProps {\n return {\n className: gridClassName,\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n },\n };\n }\n\n function flexStyles(options: FlexRenderer): StyleProps {\n return {\n className: flexClassName,\n style: {\n display: \"flex\",\n gap: options.gap ? options.gap : defaultFlexGap,\n flexDirection: options.direction\n ? (options.direction as any)\n : undefined,\n },\n };\n }\n\n function render(props: GroupRendererProps) {\n const { renderChild, renderOptions, childDefinitions } = props;\n\n const { style, className: gcn } = isGridRenderer(renderOptions)\n ? gridStyles(renderOptions)\n : isFlexRenderer(renderOptions)\n ? flexStyles(renderOptions)\n : ({ className: standardClassName } as StyleProps);\n\n return (cp: ControlLayoutProps) => {\n return {\n ...cp,\n children: (\n <div\n className={rendererClass(props.className, clsx(className, gcn))}\n style={style}\n >\n {childDefinitions?.map((c, i) => renderChild(i, c))}\n </div>\n ),\n };\n };\n }\n\n return { type: \"group\", render };\n}\n\nexport const DefaultBoolOptions: FieldOption[] = [\n { name: \"Yes\", value: true },\n { name: \"No\", value: false },\n];\n\nexport interface DefaultDataRendererOptions {\n inputClass?: string;\n displayOnlyClass?: string;\n selectOptions?: SelectRendererOptions;\n checkboxOptions?: CheckRendererOptions;\n checkOptions?: CheckRendererOptions;\n radioOptions?: CheckRendererOptions;\n checkListOptions?: CheckRendererOptions;\n booleanOptions?: FieldOption[];\n optionRenderer?: DataRendererRegistration;\n multilineClass?: string;\n jsonataClass?: string;\n arrayOptions?: ArrayActionOptions;\n}\n\nexport function createDefaultDataRenderer(\n options: DefaultDataRendererOptions = {},\n): DataRendererRegistration {\n const jsonataRenderer = createJsonataRenderer(options.jsonataClass);\n const nullToggler = createNullToggleRenderer();\n const multilineRenderer = createMultilineFieldRenderer(\n options.multilineClass,\n );\n const checkboxRenderer = createCheckboxRenderer(\n options.checkOptions ?? options.checkboxOptions,\n );\n const selectRenderer = createSelectRenderer(options.selectOptions);\n const radioRenderer = createRadioRenderer(\n options.radioOptions ?? options.checkOptions,\n );\n const checkListRenderer = createCheckListRenderer(\n options.checkListOptions ?? options.checkOptions,\n );\n const { inputClass, booleanOptions, optionRenderer, displayOnlyClass } = {\n optionRenderer: selectRenderer,\n booleanOptions: DefaultBoolOptions,\n ...options,\n };\n const arrayRenderer = createDefaultArrayDataRenderer(options.arrayOptions);\n\n return createDataRenderer((props, renderers) => {\n const { field } = props;\n const fieldType = field.type;\n const renderOptions = props.renderOptions;\n let renderType = renderOptions.type;\n if (\n field.collection &&\n props.elementIndex == null &&\n (renderType == DataRenderType.Standard ||\n renderType == DataRenderType.Array)\n ) {\n return arrayRenderer.render(props, renderers);\n }\n if (fieldType === FieldType.Compound) {\n const groupOptions = (isDataGroupRenderer(renderOptions)\n ? renderOptions.groupOptions\n : undefined) ?? { type: \"Standard\", hideTitle: true };\n return renderers.renderGroup({ ...props, renderOptions: groupOptions });\n }\n if (fieldType == FieldType.Any) return <>No control for Any</>;\n if (isDisplayOnlyRenderer(renderOptions))\n return (p) => ({\n ...p,\n className: displayOnlyClass,\n children: (\n <DefaultDisplayOnly\n field={props.field}\n schemaInterface={props.dataContext.schemaInterface}\n control={props.control}\n className={props.className}\n style={props.style}\n emptyText={renderOptions.emptyText}\n />\n ),\n });\n const isBool = fieldType === FieldType.Bool;\n if (booleanOptions != null && isBool && props.options == null) {\n return renderers.renderData({ ...props, options: booleanOptions });\n }\n if (renderType === DataRenderType.Standard && hasOptions(props)) {\n return optionRenderer.render(props, renderers);\n }\n switch (renderType) {\n case DataRenderType.NullToggle:\n return nullToggler.render(props, renderers);\n case DataRenderType.CheckList:\n return checkListRenderer.render(props, renderers);\n case DataRenderType.Dropdown:\n return selectRenderer.render(props, renderers);\n case DataRenderType.Radio:\n return radioRenderer.render(props, renderers);\n case DataRenderType.Checkbox:\n return checkboxRenderer.render(props, renderers);\n case DataRenderType.Jsonata:\n return jsonataRenderer.render(props, renderers);\n }\n if (isTextfieldRenderer(renderOptions) && renderOptions.multiline)\n return multilineRenderer.render(props, renderers);\n const placeholder = isTextfieldRenderer(renderOptions)\n ? renderOptions.placeholder\n : undefined;\n return (\n <ControlInput\n className={rendererClass(props.className, inputClass)}\n style={props.style}\n id={props.id}\n readOnly={props.readonly}\n control={props.control}\n placeholder={placeholder ?? undefined}\n convert={createInputConversion(props.field.type)}\n />\n );\n });\n}\n\nexport interface DefaultAccordionRendererOptions {\n className?: string;\n titleClass?: string;\n togglerClass?: string;\n iconOpenClass?: string;\n iconClosedClass?: string;\n renderTitle?: (\n title: string | undefined,\n current: Control<boolean>,\n ) => ReactNode;\n renderToggler?: (current: Control<boolean>, title: ReactNode) => ReactNode;\n useCss?: boolean;\n}\n\nexport interface DefaultAdornmentRendererOptions {\n accordion?: DefaultAccordionRendererOptions;\n}\n\nexport function createDefaultAdornmentRenderer(\n options: DefaultAdornmentRendererOptions = {},\n): AdornmentRendererRegistration {\n return {\n type: \"adornment\",\n render: ({ adornment, designMode, dataContext, useExpr }, renderers) => ({\n apply: (rl) => {\n if (isSetFieldAdornment(adornment) && useExpr) {\n const hook = useExpr(adornment.expression, (x) => x);\n const dynamicHooks = useDynamicHooks({ value: hook });\n const SetFieldWrapper = useCallback(setFieldWrapper, [dynamicHooks]);\n return wrapLayout((x) => (\n <SetFieldWrapper\n children={x}\n parentContext={dataContext}\n adornment={adornment}\n />\n ))(rl);\n\n function setFieldWrapper({\n children,\n adornment,\n parentContext,\n }: {\n children: ReactNode;\n adornment: SetFieldAdornment;\n parentContext: ControlDataContext;\n }) {\n const { value } = dynamicHooks(parentContext);\n const fieldNode = schemaDataForFieldRef(\n adornment.field,\n parentContext.parentNode,\n );\n const otherField = fieldNode.control;\n const always = !adornment.defaultOnly;\n useControlEffect(\n () => [value?.value, otherField?.value == null],\n ([v]) => {\n otherField?.setValue((x) => (always || x == null ? v : x));\n },\n true,\n );\n return children;\n }\n }\n if (isIconAdornment(adornment)) {\n return appendMarkupAt(\n adornment.placement ?? AdornmentPlacement.ControlStart,\n <i className={adornment.iconClass} />,\n )(rl);\n }\n if (isAccordionAdornment(adornment)) {\n return wrapLayout((x) => (\n <DefaultAccordion\n renderers={renderers}\n children={x}\n accordion={adornment}\n contentStyle={rl.style}\n contentClassName={rl.className}\n designMode={designMode}\n dataContext={dataContext}\n {...options.accordion}\n />\n ))(rl);\n }\n },\n priority: 0,\n adornment,\n }),\n };\n}\n\nfunction createDefaultLayoutRenderer(\n options: DefaultLayoutRendererOptions = {},\n) {\n return createLayoutRenderer((props, renderers) => {\n const layout = renderLayoutParts(\n {\n ...props,\n className: rendererClass(props.className, options.className),\n },\n renderers,\n );\n return {\n children: layout.wrapLayout(\n <DefaultLayout layout={layout} {...options} />,\n ),\n className: layout.className,\n style: layout.style,\n divRef: (e) =>\n e && props.errorControl\n ? (props.errorControl.meta.scrollElement = e)\n : undefined,\n };\n });\n}\n\ninterface DefaultLabelRendererOptions {\n className?: string;\n groupLabelClass?: string;\n controlLabelClass?: string;\n requiredElement?: ReactNode;\n labelContainer?: (children: ReactElement) => ReactElement;\n}\n\nexport function createDefaultLabelRenderer(\n options?: DefaultLabelRendererOptions,\n): LabelRendererRegistration {\n const {\n className,\n groupLabelClass,\n controlLabelClass,\n requiredElement,\n labelContainer,\n } = {\n requiredElement: <span> *</span>,\n labelContainer: (c: ReactElement) => c,\n ...options,\n };\n return {\n render: (props, labelStart, labelEnd, renderers) => {\n if (props.type == LabelType.Text) return props.label;\n return labelContainer(\n <>\n <label\n htmlFor={props.forId}\n className={rendererClass(\n props.className,\n clsx(\n className,\n props.type === LabelType.Group && groupLabelClass,\n props.type === LabelType.Control && controlLabelClass,\n ),\n )}\n >\n {labelStart}\n {renderers.renderLabelText(props.label)}\n {props.required && requiredElement}\n </label>\n {labelEnd}\n </>,\n );\n },\n type: \"label\",\n };\n}\n\nexport function createDefaultRenderers(\n options: DefaultRendererOptions = {},\n): DefaultRenderers {\n return {\n data: createDefaultDataRenderer(options.data),\n display: createDefaultDisplayRenderer(options.display),\n action: createButtonActionRenderer(undefined, options.action),\n array: createDefaultArrayRenderer(options.array),\n group: createDefaultGroupRenderer(options.group),\n label: createDefaultLabelRenderer(options.label),\n adornment: createDefaultAdornmentRenderer(options.adornment),\n renderLayout: createDefaultLayoutRenderer(options.layout),\n visibility: createDefaultVisibilityRenderer(),\n };\n}\n\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 },\n action: {\n className: \"bg-primary-500 rounded-lg p-3 text-white\",\n },\n layout: {\n className: \"flex flex-col\",\n errorClass: \"text-sm text-danger-500\",\n },\n data: {\n displayOnlyClass: \"flex flex-row items-center gap-2\",\n checkOptions: {\n className: \"flex items-center gap-4\",\n entryClass: \"flex gap-1 items-center\",\n },\n selectOptions: { emptyText: \"<select>\" },\n multilineClass: \"border p-2 outline-0 whitespace-pre\",\n },\n adornment: {\n accordion: {\n className: \"flex items-center gap-2 my-2\",\n titleClass: \"cursor-pointer\",\n iconOpenClass: \"fa fa-chevron-up\",\n iconClosedClass: \"fa fa-chevron-down\",\n },\n },\n} satisfies DefaultRendererOptions;\n"],"names":["_excluded","createDefaultDisplayRenderer","options","render","props","React","createElement","DefaultDisplay","_extends","type","_ref","_effect","_useComponentTracking","useComponentTracking","data","display","className","style","_objectWithoutPropertiesLoose","DisplayDataType","Icon","clsx","getOverrideClass","value","iconClass","Text","rendererClass","textClassName","coerceToString","text","Html","htmlClassName","dangerouslySetInnerHTML","__html","html","Custom","customId","_excluded2","ControlInput","toText","convert","control","_formControlProps","formControlProps","inputProps","textValue","useControl","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","renderOption","x","i","key","disabled","name","_ref$emptyText","_ref$requiredText","showEmpty","useState","optionStringMap","useMemo","Object","fromEntries","map","optionGroups","Set","filter","group","concat","keys","label","o","createRadioRenderer","p","CheckButtons","isChecked","setChecked","c","entryAdornment","fieldOptionAdornment","renderType","DataRenderType","Radio","createCheckListRenderer","Array","isArray","includes","checked","setValue","setIncluded","collection","CheckList","labelClass","checkClass","entryClass","uniqueId","RenderArrayElements","array","useComputed","Fragment","readOnly","htmlFor","elem","included","createCheckboxRenderer","renderer","children","Fcheckbox","renderLabel","Checkbox","DefaultLayout","errorClass","_ref$renderError","renderError","_ref$layout","layout","controlEnd","errorControl","controlStart","touched","error","DefaultDisplayOnly","_ref2","schemaInterface","isEmptyValue","DefaultAccordion","_dataContext$dataNode","accordion","contentStyle","contentClassName","designMode","iconOpenClass","iconClosedClass","_ref$renderTitle","renderTitle","t","renderToggler","renderers","titleClass","useCss","dataContext","dataControl","dataNode","parentNode","open","defaultExpanded","meta","accordionState","isOpen","fullContentStyle","title","renderLabelText","toggler","onClick","createDefaultVisibilityRenderer","createVisibilityRenderer","DefaultVisibility","visibility","divRef","useEffect","ex","visible","showing","ref","createJsonataRenderer","JsonataRenderer","renderOptions","Jsonata","sdn","elementIndex","bindings","formData","dataPath","getJsonPath","rendered","useJsonataExpression","expression","getRootDataNode","createNullToggleRenderer","_control$meta","_control$meta$_nullCo","nullControl","newControl","current","newLayout","renderData","NullWrapper","defaultValue","definition","r","_nullControl$meta$non","createDefaultArrayDataRenderer","defaultActions","DataArrayRenderer","dataProps","_definition$children","renderChild","useChildVisibility","_mergeObjects","mergeObjects","isArrayRenderer","addText","noAdd","noRemove","removeText","childOptions","renderAsElement","isCompoundField","childDefinition","ControlDefinitionType","Data","Standard","hideTitle","Group","groupOptions","GroupRenderType","visibilities","deps","makeHookDepString","Entry","useTrackedComponent","RenderEntry","arrayProps","createArrayActions","renderElement","wrap","index","renderChildElement","getLengthRestrictions","renderArray","elementNode","_control$elements$i$u","_control$elements","elements","parentDataNode","getChildElement","childVis","_ref3","hook","def","runHook","lookupDataNode","some","createDefaultArrayRenderer","_ref4","DefaultArrayRenderer","renderAction","removableClass","childClass","removableChildClass","removeActionClass","addActionClass","arrayControl","_applyArrayLengthRest","applyArrayLengthRestrictions","addAction","removeAction","RenderElements","_","MultilineTextfield","codeRef","useRef","textContent","contentEditable","onInput","currentTarget","createButtonActionRenderer","actionId","createActionRenderer","_options$renderConten","actionText","actionData","renderContent","createDefaultGroupRenderer","_ref2$gridStyles","gridStyles","defaultGridStyles","_ref3$columns","columns","gridClassName","gridTemplateColumns","defaultGridColumns","_ref2$defaultGridColu","standardClassName","flexClassName","defaultFlexGap","childDefinitions","isGridRenderer","isFlexRenderer","gap","flexDirection","direction","flexStyles","gcn","cp","DefaultBoolOptions","createDefaultDataRenderer","_options$checkOptions","_options$radioOptions","_options$checkListOpt","jsonataRenderer","jsonataClass","nullToggler","multilineRenderer","multilineClass","checkboxRenderer","checkOptions","checkboxOptions","selectRenderer","selectOptions","radioRenderer","radioOptions","checkListRenderer","checkListOptions","_optionRenderer$boole","optionRenderer","booleanOptions","inputClass","displayOnlyClass","arrayRenderer","arrayOptions","fieldType","Compound","_ref5","isDataGroupRenderer","renderGroup","Any","isDisplayOnlyRenderer","hasOptions","NullToggle","Dropdown","isTextfieldRenderer","multiline","placeholder","createDefaultAdornmentRenderer","_ref6","adornment","useExpr","apply","rl","isSetFieldAdornment","dynamicHooks","useDynamicHooks","SetFieldWrapper","useCallback","_ref7","parentContext","otherField","schemaDataForFieldRef","always","defaultOnly","_ref8","wrapLayout","_adornment$placement","isIconAdornment","appendMarkupAt","placement","AdornmentPlacement","ControlStart","isAccordionAdornment","priority","createDefaultLayoutRenderer","createLayoutRenderer","renderLayoutParts","scrollElement","createDefaultLabelRenderer","_requiredElement$labe","requiredElement","labelContainer","groupLabelClass","controlLabelClass","labelStart","labelEnd","LabelType","forId","Control","createDefaultRenderers","action","renderLayout","defaultTailwindTheme"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","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/DefaultGroupRenderer.tsx","../src/components/DefaultVisibility.tsx","../src/components/JsonataRenderer.tsx","../src/components/NullToggle.tsx","../src/components/DefaultArrayRenderer.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 Custom display placeholder: {(data as CustomDisplay).customId}\n </div>\n );\n default:\n return <h1>Unknown display type: {data.type}</h1>;\n }\n}\n","import 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 createDataRenderer,\n DataRenderType,\n FieldOption,\n fieldOptionAdornment,\n rendererClass\n} from \"@react-typed-forms/schemas\";\n\nexport interface CheckRendererOptions {\n className?: string;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n}\nexport function createRadioRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n {...options}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => control.value == o.value}\n setChecked={(c, o) => (c.value = o.value)}\n control={p.control}\n type=\"radio\"\n 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 {...options}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => {\n const v = control.value;\n return Array.isArray(v) ? v.includes(o.value) : false;\n }}\n setChecked={(c, o, checked) => {\n c.setValue((x) => setIncluded(x ?? [], o.value, checked));\n }}\n control={p.control}\n type=\"checkbox\"\n 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 entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n readonly?: boolean;\n type: \"checkbox\" | \"radio\";\n isChecked: (c: Control<any>, o: FieldOption) => boolean;\n setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;\n entryAdornment?: (c: FieldOption, i: number, selected: boolean) => ReactNode;\n}\n\nexport function CheckButtons({\n control,\n options,\n labelClass,\n checkClass,\n readonly,\n entryClass,\n className,\n id,\n type,\n isChecked,\n setChecked,\n entryAdornment,\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 return (\n <>\n <div key={i} className={entryClass}>\n <input\n id={name + \"_\" + i}\n className={checkClass}\n type={type}\n name={name}\n readOnly={readonly}\n disabled={disabled}\n checked={checked}\n onChange={(x) => {\n !readonly && setChecked(control, o, x.target.checked);\n }}\n />\n <label className={labelClass} htmlFor={name + \"_\" + i}>\n {o.name}\n </label>\n </div>\n {entryAdornment?.(o, i, checked)}\n </>\n );\n }}\n </RenderArrayElements>\n </div>\n );\n}\n\nexport function setIncluded<A>(array: A[], elem: A, included: boolean): A[] {\n const already = array.includes(elem);\n if (included === already) {\n return array;\n }\n if (included) {\n return [...array, elem];\n }\n return array.filter((e) => e !== elem);\n}\n\nexport function createCheckboxRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (props, renderer) => (p) => ({\n ...p,\n label: undefined,\n children: (\n <div className={rendererClass(props.className, options.entryClass)}>\n <Fcheckbox\n id={props.id}\n control={props.control}\n style={props.style}\n className={options.checkClass}\n />\n {p.label && renderer.renderLabel(p.label, undefined, undefined)}\n </div>\n ),\n }),\n { renderType: DataRenderType.Checkbox },\n );\n}\n","import React, { 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 ControlLayoutProps,\n FlexRenderer,\n GridRenderer,\n GroupRendererProps,\n GroupRendererRegistration,\n isFlexRenderer,\n isGridRenderer,\n isSelectChildRenderer,\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\";\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}\n\nexport function createDefaultGroupRenderer(\n options?: DefaultGroupRendererOptions,\n): GroupRendererRegistration {\n const {\n className,\n gridStyles = defaultGridStyles,\n defaultGridColumns = 2,\n gridClassName,\n standardClassName,\n flexClassName,\n defaultFlexGap,\n } = options ?? {};\n\n function defaultGridStyles({\n columns = defaultGridColumns,\n }: GridRenderer): StyleProps {\n return {\n className: gridClassName,\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n },\n };\n }\n\n function flexStyles(options: FlexRenderer): StyleProps {\n return {\n className: flexClassName,\n style: {\n display: \"flex\",\n gap: options.gap ? options.gap : defaultFlexGap,\n flexDirection: options.direction\n ? (options.direction as any)\n : undefined,\n },\n };\n }\n\n function render(props: GroupRendererProps) {\n const { renderChild, renderOptions, childDefinitions } = props;\n 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\n return (\n <div\n className={rendererClass(props.className, clsx(className, gcn))}\n style={style}\n >\n {childDefinitions?.map((c, i) => renderChild(i, c))}\n </div>\n );\n }\n\n return { type: \"group\", render };\n}\n\ntype SelectChildProps = Pick<\n GroupRendererProps,\n \"useEvalExpression\" | \"dataContext\" | \"childDefinitions\" | \"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 return (\n <div>\n {typeof childIndex === \"number\" &&\n childIndex < p.childDefinitions.length &&\n childIndex >= 0 &&\n p.renderChild(childIndex, p.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 { Control, newControl, useControlEffect } from \"@react-typed-forms/core\";\nimport React, { ReactNode } from \"react\";\nimport {\n createDataRenderer,\n DataRenderType,\n FieldType,\n} from \"@react-typed-forms/schemas\";\n\nexport function createNullToggleRenderer() {\n return createDataRenderer(\n ({ control, field, renderOptions, ...props }, renderers) => {\n const nullControl = (control.meta[\"nullControl\"] ??= newControl(\n control.current.value != null,\n ));\n return (layout) => {\n const newLayout = renderers.renderData({\n ...props,\n control: nullControl,\n field: { ...field, type: FieldType.Bool },\n renderOptions: { type: DataRenderType.Checkbox },\n })(layout);\n return {\n ...newLayout,\n children: (\n <NullWrapper\n control={control}\n nullControl={nullControl}\n children={newLayout.children}\n readonly={props.readonly}\n defaultValue={props.definition.defaultValue}\n />\n ),\n };\n };\n },\n );\n}\n\nfunction NullWrapper({\n children,\n nullControl,\n control,\n defaultValue,\n readonly,\n}: {\n control: Control<any>;\n nullControl: Control<boolean>;\n children: ReactNode;\n readonly: boolean;\n defaultValue: any;\n}) {\n useControlEffect(\n () => readonly,\n (r) => (nullControl.disabled = r),\n true,\n );\n useControlEffect(\n () => nullControl.value,\n (e) => {\n if (e) {\n control.value = nullControl.meta[\"nonNullValue\"] ?? defaultValue;\n } else {\n nullControl.meta[\"nonNullValue\"] = control.value;\n control.value = null;\n }\n },\n );\n return children;\n}\n","import 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 FormRenderer,\n getLengthRestrictions,\n GroupedControlsDefinition,\n GroupRenderType,\n isArrayRenderer,\n isCompoundField,\n lookupDataNode,\n makeHookDepString,\n mergeObjects,\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 } = 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: ControlDefinition = !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\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, 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, { 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, {\n CSSProperties,\n Fragment,\n ReactElement,\n ReactNode,\n useCallback,\n} from \"react\";\nimport clsx from \"clsx\";\nimport {\n createSelectRenderer,\n SelectRendererOptions,\n} from \"./components/SelectDataRenderer\";\nimport { DefaultDisplayOnly } from \"./components/DefaultDisplayOnly\";\nimport { Control, useControlEffect } from \"@react-typed-forms/core\";\nimport { ControlInput, createInputConversion } from \"./components/ControlInput\";\nimport {\n createDefaultArrayDataRenderer,\n createDefaultArrayRenderer,\n DefaultArrayRendererOptions,\n} from \"./components/DefaultArrayRenderer\";\nimport {\n CheckRendererOptions,\n createCheckboxRenderer,\n createCheckListRenderer,\n createRadioRenderer,\n} from \"./components/CheckRenderer\";\nimport { DefaultAccordion } from \"./components/DefaultAccordion\";\nimport { createNullToggleRenderer } from \"./components/NullToggle\";\nimport { createMultilineFieldRenderer } from \"./components/MultilineTextfield\";\nimport { createJsonataRenderer } from \"./components/JsonataRenderer\";\nimport {\n ActionRendererProps,\n ActionRendererRegistration,\n AdornmentPlacement,\n AdornmentRendererRegistration,\n appendMarkupAt,\n ArrayActionOptions,\n ControlDataContext,\n ControlLayoutProps,\n createActionRenderer,\n createDataRenderer,\n DataRendererRegistration,\n DataRenderType,\n DefaultRenderers,\n FieldOption,\n FieldType,\n FlexRenderer,\n GridRenderer,\n GroupRendererProps,\n GroupRendererRegistration,\n hasOptions,\n isAccordionAdornment,\n isDataGroupRenderer,\n isDisplayOnlyRenderer,\n isFlexRenderer,\n isGridRenderer,\n isIconAdornment,\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\";\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 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 return createDataRenderer((props, renderers) => {\n const { field } = props;\n const fieldType = field.type;\n const renderOptions = props.renderOptions;\n let renderType = renderOptions.type;\n if (\n field.collection &&\n props.elementIndex == null &&\n (renderType == DataRenderType.Standard ||\n renderType == DataRenderType.Array)\n ) {\n return arrayRenderer.render(props, renderers);\n }\n if (fieldType === FieldType.Compound) {\n const groupOptions = (isDataGroupRenderer(renderOptions)\n ? renderOptions.groupOptions\n : undefined) ?? { type: \"Standard\", hideTitle: true };\n return renderers.renderGroup({ ...props, renderOptions: groupOptions });\n }\n if (fieldType == FieldType.Any) return <>No control for Any</>;\n if (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 }\n if (isTextfieldRenderer(renderOptions) && renderOptions.multiline)\n return multilineRenderer.render(props, renderers);\n const placeholder = isTextfieldRenderer(renderOptions)\n ? renderOptions.placeholder\n : undefined;\n return (\n <ControlInput\n className={rendererClass(props.className, inputClass)}\n style={props.style}\n id={props.id}\n readOnly={props.readonly}\n control={props.control}\n placeholder={placeholder ?? undefined}\n convert={createInputConversion(props.field.type)}\n />\n );\n });\n}\n\nexport interface DefaultAccordionRendererOptions {\n className?: string;\n titleClass?: string;\n togglerClass?: string;\n iconOpenClass?: string;\n iconClosedClass?: string;\n renderTitle?: (\n title: string | undefined,\n current: Control<boolean>,\n ) => ReactNode;\n renderToggler?: (current: Control<boolean>, title: ReactNode) => ReactNode;\n useCss?: boolean;\n}\n\nexport interface DefaultAdornmentRendererOptions {\n accordion?: DefaultAccordionRendererOptions;\n}\n\nexport function createDefaultAdornmentRenderer(\n options: DefaultAdornmentRendererOptions = {},\n): AdornmentRendererRegistration {\n return {\n type: \"adornment\",\n render: ({ adornment, designMode, dataContext, useExpr }, renderers) => ({\n apply: (rl) => {\n if (isSetFieldAdornment(adornment) && useExpr) {\n const hook = useExpr(adornment.expression, (x) => x);\n const dynamicHooks = useDynamicHooks({ value: hook });\n const SetFieldWrapper = useCallback(setFieldWrapper, [dynamicHooks]);\n return wrapLayout((x) => (\n <SetFieldWrapper\n children={x}\n parentContext={dataContext}\n adornment={adornment}\n />\n ))(rl);\n\n function setFieldWrapper({\n children,\n adornment,\n parentContext,\n }: {\n children: ReactNode;\n adornment: SetFieldAdornment;\n parentContext: ControlDataContext;\n }) {\n const { value } = dynamicHooks(parentContext);\n const fieldNode = schemaDataForFieldRef(\n adornment.field,\n parentContext.parentNode,\n );\n const otherField = fieldNode.control;\n const always = !adornment.defaultOnly;\n useControlEffect(\n () => [value?.value, otherField?.value == null],\n ([v]) => {\n otherField?.setValue((x) => (always || x == null ? v : x));\n },\n true,\n );\n return children;\n }\n }\n if (isIconAdornment(adornment)) {\n return appendMarkupAt(\n adornment.placement ?? AdornmentPlacement.ControlStart,\n <i className={adornment.iconClass} />,\n )(rl);\n }\n if (isAccordionAdornment(adornment)) {\n return wrapLayout((x) => (\n <DefaultAccordion\n renderers={renderers}\n children={x}\n accordion={adornment}\n contentStyle={rl.style}\n contentClassName={rl.className}\n designMode={designMode}\n dataContext={dataContext}\n {...options.accordion}\n />\n ))(rl);\n }\n },\n priority: 0,\n adornment,\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 },\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 },\n adornment: {\n accordion: {\n className: \"flex items-center gap-2 my-2\",\n titleClass: \"cursor-pointer\",\n iconOpenClass: \"fa fa-chevron-up\",\n iconClosedClass: \"fa fa-chevron-down\",\n },\n },\n} satisfies DefaultRendererOptions;\n"],"names":["_excluded","createDefaultDisplayRenderer","options","render","props","React","createElement","DefaultDisplay","_extends","type","_ref","_effect","_useComponentTracking","useComponentTracking","data","display","className","style","_objectWithoutPropertiesLoose","DisplayDataType","Icon","clsx","getOverrideClass","value","iconClass","Text","rendererClass","textClassName","coerceToString","text","Html","htmlClassName","dangerouslySetInnerHTML","__html","html","Custom","customId","_excluded2","ControlInput","toText","convert","control","_formControlProps","formControlProps","inputProps","textValue","useControl","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","renderOption","x","i","key","disabled","name","_ref$emptyText","_ref$requiredText","showEmpty","useState","optionStringMap","useMemo","Object","fromEntries","map","optionGroups","Set","filter","group","concat","keys","label","o","createRadioRenderer","p","CheckButtons","isChecked","setChecked","c","entryAdornment","fieldOptionAdornment","renderType","DataRenderType","Radio","createCheckListRenderer","Array","isArray","includes","checked","setValue","setIncluded","collection","CheckList","labelClass","checkClass","entryClass","uniqueId","RenderArrayElements","array","useComputed","Fragment","readOnly","htmlFor","elem","included","createCheckboxRenderer","renderer","children","Fcheckbox","renderLabel","Checkbox","createDefaultLayoutRenderer","createLayoutRenderer","renderers","layout","renderLayoutParts","wrapLayout","DefaultLayout","divRef","errorControl","meta","scrollElement","errorClass","_ref$renderError","renderError","_ref$layout","controlEnd","controlStart","touched","error","DefaultDisplayOnly","_ref2","schemaInterface","isEmptyValue","DefaultAccordion","_dataContext$dataNode","accordion","contentStyle","contentClassName","designMode","iconOpenClass","iconClosedClass","_ref$renderTitle","renderTitle","t","renderToggler","titleClass","useCss","dataContext","dataControl","dataNode","parentNode","open","defaultExpanded","accordionState","isOpen","fullContentStyle","title","renderLabelText","toggler","onClick","createDefaultGroupRenderer","_ref$gridStyles","gridStyles","_ref2$columns","columns","gridClassName","gridTemplateColumns","defaultGridColumns","_ref$defaultGridColum","standardClassName","flexClassName","defaultFlexGap","renderChild","renderOptions","childDefinitions","isSelectChildRenderer","SelectChildGroupRenderer","_ref3","isGridRenderer","isFlexRenderer","gap","flexDirection","direction","flexStyles","dynHook","useEvalExpression","childIndexExpression","Render","useTrackedComponent","ctrl","runHook","childIndex","deps","createDefaultVisibilityRenderer","createVisibilityRenderer","DefaultVisibility","visibility","useEffect","ex","visible","showing","ref","createJsonataRenderer","JsonataRenderer","Jsonata","sdn","elementIndex","bindings","formData","dataPath","getJsonPath","rendered","useJsonataExpression","expression","getRootDataNode","createNullToggleRenderer","_control$meta","_control$meta$_nullCo","nullControl","newControl","current","newLayout","renderData","NullWrapper","defaultValue","definition","r","_nullControl$meta$non","createDefaultArrayDataRenderer","defaultActions","DataArrayRenderer","dataProps","_definition$children","useChildVisibility","_mergeObjects","mergeObjects","isArrayRenderer","addText","noAdd","noRemove","removeText","childOptions","renderAsElement","isCompoundField","childDefinition","ControlDefinitionType","Data","Standard","hideTitle","Group","groupOptions","GroupRenderType","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","_ref4","DefaultArrayRenderer","renderAction","removableClass","childClass","removableChildClass","removeActionClass","addActionClass","arrayControl","_applyArrayLengthRest","applyArrayLengthRestrictions","addAction","removeAction","RenderElements","_","MultilineTextfield","codeRef","useRef","textContent","contentEditable","onInput","currentTarget","createButtonActionRenderer","actionId","createActionRenderer","_options$renderConten","actionText","actionData","renderContent","DefaultBoolOptions","createDefaultDataRenderer","_options$checkOptions","_options$radioOptions","_options$checkListOpt","jsonataRenderer","jsonataClass","nullToggler","multilineRenderer","multilineClass","checkboxRenderer","checkOptions","checkboxOptions","selectRenderer","selectOptions","radioRenderer","radioOptions","checkListRenderer","checkListOptions","_optionRenderer$boole","optionRenderer","booleanOptions","inputClass","displayOnlyClass","defaultEmptyText","arrayRenderer","arrayOptions","fieldType","Compound","isDataGroupRenderer","renderGroup","Any","displayOnly","isDisplayOnlyRenderer","hasOptions","NullToggle","Dropdown","isTextfieldRenderer","multiline","placeholder","createDefaultAdornmentRenderer","adornment","useExpr","apply","rl","isSetFieldAdornment","dynamicHooks","useDynamicHooks","SetFieldWrapper","useCallback","parentContext","otherField","schemaDataForFieldRef","always","defaultOnly","_ref5","_adornment$placement","isIconAdornment","appendMarkupAt","placement","AdornmentPlacement","ControlStart","isAccordionAdornment","priority","createDefaultLabelRenderer","_requiredElement$labe","requiredElement","labelContainer","groupLabelClass","controlLabelClass","labelStart","labelEnd","LabelType","forId","Control","createDefaultRenderers","action","renderLayout","defaultTailwindTheme"],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export * from "./components/CheckRenderer";
5
5
  export * from "./components/DefaultLayout";
6
6
  export * from "./components/DefaultDisplayOnly";
7
7
  export * from "./components/DefaultAccordion";
8
+ export * from "./components/DefaultGroupRenderer";
8
9
  export * from "./components/DefaultVisibility";
9
10
  export * from "./components/JsonataRenderer";
10
11
  export * from "./components/NullToggle";
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import e,{useState as t,useMemo as n,useEffect as l,useRef as a,useCallback as r}from"react";import o from"clsx";import{DisplayDataType as s,rendererClass as c,coerceToString as i,getOverrideClass as d,FieldType as u,createDataRenderer as m,fieldOptionAdornment as p,DataRenderType as y,createVisibilityRenderer as v,getJsonPath as f,useJsonataExpression as N,getRootDataNode as C,mergeObjects as h,isArrayRenderer as x,isCompoundField as E,makeHookDepString as g,createArrayActions as b,getLengthRestrictions as T,lookupDataNode as O,applyArrayLengthRestrictions as k,ControlDefinitionType as A,GroupRenderType as S,createActionRenderer as w,isDataGroupRenderer as I,isDisplayOnlyRenderer as q,hasOptions as D,isTextfieldRenderer as L,isSetFieldAdornment as V,useDynamicHooks as F,wrapLayout as R,schemaDataForFieldRef as M,isIconAdornment as _,appendMarkupAt as G,AdornmentPlacement as P,isAccordionAdornment as j,LabelType as H,isGridRenderer as B,isFlexRenderer as J,createLayoutRenderer as U,renderLayoutParts as Y}from"@react-typed-forms/schemas";import{useComponentTracking as $,formControlProps as z,useControl as K,useControlEffect as Q,RenderArrayElements as W,useComputed as X,Fcheckbox as Z,newControl as ee,useTrackedComponent as te,RenderElements as ne}from"@react-typed-forms/core";function le(){return le=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var l in n)({}).hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e},le.apply(null,arguments)}function ae(e,t){if(null==e)return{};var n={};for(var l in e)if({}.hasOwnProperty.call(e,l)){if(t.includes(l))continue;n[l]=e[l]}return n}const re=["data","display","className","style"];function oe(t={}){return{render:n=>/*#__PURE__*/e.createElement(se,le({},t,n)),type:"display"}}function se(t){var n=$();try{let{data:n,display:l,className:a,style:r}=t,u=ae(t,re);switch(n.type){case s.Icon:/*#__PURE__*/return e.createElement("i",{style:r,className:o(d(a),l?l.value:n.iconClass)});case s.Text:/*#__PURE__*/return e.createElement("div",{style:r,className:c(a,u.textClassName)},l?i(l.value):n.text);case s.Html:/*#__PURE__*/return e.createElement("div",{style:r,className:c(a,u.htmlClassName),dangerouslySetInnerHTML:{__html:l?i(l.value):n.html}});case s.Custom:/*#__PURE__*/return e.createElement("div",null,"Custom display placeholder: ",n.customId);default:/*#__PURE__*/return e.createElement("h1",null,"Unknown display type: ",n.type)}}finally{n()}}const ce=["control","convert"],ie=["errorText","value","onChange"];function de(t){var n=$();try{let{control:l,convert:a}=t,r=ae(t,ce);const o=z(l),{value:s}=o,c=ae(o,ie),i=K(()=>d(s));return Q(()=>l.value,e=>i.value=d(e)),/*#__PURE__*/e.createElement("input",le({},c,{type:a[0],value:i.value,onChange:e=>{i.value=e.target.value;const t=a[1](e.target.value);void 0!==t&&(l.value=t)}},r));function d(e){return null==e?"":a[2](e)}}finally{n()}}function ue(e){switch(e){case u.String:return["text",e=>e,e=>e];case u.Bool:return["text",e=>"true"===e||"false"!==e&&void 0,e=>{var t;return null!=(t=null==e?void 0:e.toString())?t:""}];case u.Int:return["number",e=>""!==e?parseInt(e):null,e=>null==e?"":e];case u.DateTime:return["datetime-local",e=>e||null,e=>e];case u.Date:return["date",e=>e||null,e=>e];case u.Time:return["time",e=>{const t=e.length;return 5===t?e+":00":8===t?e:void 0},e=>e?e.substring(0,5):""];case u.Double:return["number",e=>""!==e?parseFloat(e):null,e=>null==e?"":e];default:return["text",e=>e,e=>e]}}const me=["state","options","className","convert","required","emptyText","requiredText","readonly"];function pe(t={}){return m((n,l)=>{var a;/*#__PURE__*/return e.createElement(ye,{className:c(n.className,t.className),state:n.control,id:n.id,readonly:n.readonly,options:null!=(a=n.options)?a:[],required:n.required,emptyText:t.emptyText,requiredText:t.requiredText,convert:ve(n.field.type)})},{options:!0})}function ye(l){var a=$();try{let{state:r,options:o,className:s,convert:c,required:i,emptyText:d="N/A",requiredText:u="<please select>",readonly:m}=l,p=ae(l,me);const{value:y,disabled:v}=r,[f]=t(!i||null==y),N=n(()=>Object.fromEntries(o.map(e=>[c(e.value),e.value])),[o]),C=n(()=>new Set(o.filter(e=>e.group).map(e=>e.group)),[o]);/*#__PURE__*/return e.createElement("select",le({},p,{className:s,onChange:e=>r.value=N[e.target.value],value:c(y),disabled:v||m}),f&&/*#__PURE__*/e.createElement("option",{value:""},i?u:d),[...C.keys()].map(t=>/*#__PURE__*/e.createElement("optgroup",{key:t,label:t},o.filter(e=>e.group===t).map(h))),o.filter(e=>!e.group).map(h));function h(t,n){/*#__PURE__*/return e.createElement("option",{key:n,value:c(t.value),disabled:!!t.disabled},t.name)}}finally{a()}}function ve(e){switch(e){case u.String:case u.Int:case u.Double:return e=>e;default:return e=>{var t;return null!=(t=null==e?void 0:e.toString())?t:""}}}function fe(t={}){return m(n=>/*#__PURE__*/e.createElement(Ce,le({},t,n,{className:c(n.className,t.className),isChecked:(e,t)=>e.value==t.value,setChecked:(e,t)=>e.value=t.value,control:n.control,type:"radio",entryAdornment:p(n)})),{renderType:y.Radio})}function Ne(t={}){return m(n=>/*#__PURE__*/e.createElement(Ce,le({},t,n,{className:c(n.className,t.className),isChecked:(e,t)=>{const n=e.value;return!!Array.isArray(n)&&n.includes(t.value)},setChecked:(e,t,n)=>{e.setValue(e=>he(null!=e?e:[],t.value,n))},control:n.control,type:"checkbox",entryAdornment:p(n)})),{collection:!0,renderType:y.CheckList})}function Ce({control:t,options:n,labelClass:l,checkClass:a,readonly:r,entryClass:o,className:s,id:c,type:i,isChecked:d,setChecked:u,entryAdornment:m}){var p=$();try{const{disabled:p}=t,y="r"+t.uniqueId;/*#__PURE__*/return e.createElement("div",{className:s,id:c},/*#__PURE__*/e.createElement(W,{array:null==n?void 0:n.filter(e=>null!=e.value)},(n,s)=>{const c=X(()=>d(t,n)).value;/*#__PURE__*/return e.createElement(e.Fragment,null,/*#__PURE__*/e.createElement("div",{key:s,className:o},/*#__PURE__*/e.createElement("input",{id:y+"_"+s,className:a,type:i,name:y,readOnly:r,disabled:p,checked:c,onChange:e=>{!r&&u(t,n,e.target.checked)}}),/*#__PURE__*/e.createElement("label",{className:l,htmlFor:y+"_"+s},n.name)),null==m?void 0:m(n,s,c))}))}finally{p()}}function he(e,t,n){return n===e.includes(t)?e:n?[...e,t]:e.filter(e=>e!==t)}function xe(t={}){return m((n,l)=>a=>le({},a,{label:void 0,children:/*#__PURE__*/e.createElement("div",{className:c(n.className,t.entryClass)},/*#__PURE__*/e.createElement(Z,{id:n.id,control:n.control,style:n.style,className:t.checkClass}),a.label&&l.renderLabel(a.label,void 0,void 0))}),{renderType:y.Checkbox})}function Ee({errorClass:t,renderError:n=n=>n&&/*#__PURE__*/e.createElement("div",{className:t},n),layout:{controlEnd:l,controlStart:a,label:r,children:o,errorControl:s}}){var c=$();try{/*#__PURE__*/return e.createElement(e.Fragment,null,r,a,o,n(s&&s.touched?s.error:void 0),l)}finally{c()}}function ge({control:t,className:n,emptyText:l,schemaInterface:a,field:r,style:o}){var s=$();try{var i;const s=t.value,d=null!=(i=a.isEmptyValue(r,s)?l:a.textValue(r,s))?i:"";/*#__PURE__*/return e.createElement("div",{style:o,className:c(n)},d)}finally{s()}}function be({children:t,accordion:n,contentStyle:l,contentClassName:a,designMode:r,iconOpenClass:s,iconClosedClass:c,className:i,renderTitle:d=e=>e,renderToggler:u,renderers:m,titleClass:p,useCss:y,dataContext:v}){var f=$();try{var N;const f=(null!=(N=v.dataNode)?N:v.parentNode).control,C=K(!!n.defaultExpanded);f&&!f.meta.accordionState&&(f.meta.accordionState=C);const h=C.value,x=h||r?l:le({},l,{display:"none"}),E=m.renderLabelText(d(n.title,C)),g=u?u(C,E):/*#__PURE__*/e.createElement("button",{className:i,onClick:()=>C.setValue(e=>!e)},/*#__PURE__*/e.createElement("label",{className:p},E),/*#__PURE__*/e.createElement("i",{className:o(h?s:c)}));/*#__PURE__*/return e.createElement(e.Fragment,null,g,(y||h||r)&&/*#__PURE__*/e.createElement("div",{style:x,className:a},t))}finally{f()}}function Te(e){return e.meta.accordionState}function Oe(){return v(t=>/*#__PURE__*/e.createElement(ke,t))}function ke({visibility:t,children:n,className:a,style:r,divRef:s}){var c=$();try{const c=t.value;return l(()=>{c&&t.setValue(e=>({visible:c.visible,showing:c.visible}))},[null==c?void 0:c.visible]),null!=c&&c.visible?/*#__PURE__*/e.createElement("div",{className:o(a),style:r,ref:s},n):/*#__PURE__*/e.createElement(e.Fragment,null)}finally{c()}}function Ae(t){return m(n=>/*#__PURE__*/e.createElement(Se,{renderOptions:n.renderOptions,className:c(n.className,t),dataNode:n.dataNode,dataContext:n.dataContext,control:n.control,readonly:n.readonly}),{renderType:y.Jsonata})}function Se({control:t,renderOptions:n,readonly:l,className:a,dataContext:r,dataNode:o}){var s=$();try{const s=null!=o.elementIndex?o:r.parentNode,c=X(()=>({value:t.value,readonly:l,disabled:t.disabled,formData:r.formData,dataPath:f(o)})),d=N(n.expression,C(s).control,f(s),c,i);/*#__PURE__*/return e.createElement("div",{className:a,dangerouslySetInnerHTML:{__html:d.value}})}finally{s()}}const we=["control","field","renderOptions"];function Ie(){return m((t,n)=>{var l,a;let{control:r,field:o}=t,s=ae(t,we);const c=null!=(a=(l=r.meta).nullControl)?a:l.nullControl=ee(null!=r.current.value);return t=>{const l=n.renderData(le({},s,{control:c,field:le({},o,{type:u.Bool}),renderOptions:{type:y.Checkbox}}))(t);return le({},l,{children:/*#__PURE__*/e.createElement(qe,{control:r,nullControl:c,children:l.children,readonly:s.readonly,defaultValue:s.definition.defaultValue})})}})}function qe({children:e,nullControl:t,control:n,defaultValue:l,readonly:a}){return Q(()=>a,e=>t.disabled=e,!0),Q(()=>t.value,e=>{var a;e?n.value=null!=(a=t.meta.nonNullValue)?a:l:(t.meta.nonNullValue=n.value,n.value=null)}),e}function De(t){return m((n,l)=>/*#__PURE__*/e.createElement(Le,{dataProps:n,renderers:l,defaultActions:t}),{renderType:y.Array,collection:!0})}function Le({dataProps:t,renderers:n,defaultActions:l}){var a;const{renderOptions:r,control:o,field:s,readonly:c,designMode:i,required:d,renderChild:u,definition:m,className:p,style:v,useChildVisibility:f,dataContext:N}=t,{addText:C,noAdd:O,noRemove:k,removeText:w}=h(x(r)?r:{},l),I=x(r)?r.childOptions:void 0,q=!E(s),D=q?{type:A.Data,field:m.field,children:m.children,renderOptions:null!=I?I:{type:y.Standard},hideTitle:!0}:{type:A.Group,children:m.children,groupOptions:{type:S.Standard,hideTitle:!0}},L=(null!=(a=m.children)?a:[]).map(e=>[f(e,void 0,!0),e]),V=g(L,e=>e[0].deps),F=te(Ve,[V]),R=le({},b(o,s,{addText:C,removeText:w,noAdd:O,noRemove:k,readonly:c,disabled:o.disabled,designMode:i}),{required:d,renderElement:(t,n)=>/*#__PURE__*/e.createElement(F,{index:t,renderChildElement:M,dataContext:N,visibilities:L,wrap:n}),className:p||void 0,style:v},T(m));return n.renderArray(R);function M(e,t){var n,l;return u(null!=(n=null==(l=o.elements)?void 0:l[e].uniqueId)?n:e,D,q?{elementIndex:e}:{parentDataNode:t})}}function Ve({index:e,renderChildElement:t,visibilities:n,wrap:l,dataContext:a}){const r=a.dataNode.getChildElement(e),o=n.map(([e,t])=>e.runHook(le({},a,{parentNode:r,dataNode:O(t,r)}),e.state).value);if(0==o.length||o.some(e=>!0===e))return l(t(e,r))}function Fe(t){return{render:(n,{renderAction:l})=>/*#__PURE__*/e.createElement(Re,le({},n,t,{renderAction:l})),type:"array"}}function Re(t){var n=$();try{const{renderElement:n,className:l,removableClass:a,childClass:r,removableChildClass:s,removeActionClass:c,addActionClass:i,arrayControl:d,renderAction:u,style:m}=t,{addAction:p,removeAction:y}=k(t);/*#__PURE__*/return e.createElement("div",{style:m},/*#__PURE__*/e.createElement("div",{className:o(l,y&&a)},/*#__PURE__*/e.createElement(ne,{control:d},(t,l)=>n(l,t=>y?/*#__PURE__*/e.createElement(e.Fragment,null,/*#__PURE__*/e.createElement("div",{className:o(r,s)},t),/*#__PURE__*/e.createElement("div",{className:c},u(y(l)))):/*#__PURE__*/e.createElement("div",{className:r},t)))),p&&/*#__PURE__*/e.createElement("div",{className:i},u(p)))}finally{n()}}function Me({control:t,className:n}){var l=$();try{const l=a(null);return Q(()=>t.value,e=>{const t=l.current;t&&t.textContent!==e&&(t.textContent=e)},!0),/*#__PURE__*/e.createElement("code",{contentEditable:!t.disabled,className:n,onInput:e=>t.value=e.currentTarget.textContent,ref:l})}finally{l()}}function _e(t,n={}){return w(t,({onClick:t,actionText:l,className:a,style:r,actionId:o,actionData:s,disabled:i})=>{var d;/*#__PURE__*/return e.createElement("button",{className:c(a,n.className),disabled:i,style:r,onClick:t},null!=(d=null==n.renderContent?void 0:n.renderContent(l,o,s))?d:l)})}function Ge(t){const{className:n,gridStyles:l=u,defaultGridColumns:a=2,gridClassName:r,standardClassName:s,flexClassName:i,defaultFlexGap:d}=null!=t?t:{};function u({columns:e=a}){return{className:r,style:{display:"grid",gridTemplateColumns:`repeat(${e}, 1fr)`}}}return{type:"group",render:function(t){const{renderChild:a,renderOptions:r,childDefinitions:u}=t,{style:m,className:p}=B(r)?l(r):J(r)?function(e){return{className:i,style:{display:"flex",gap:e.gap?e.gap:d,flexDirection:e.direction?e.direction:void 0}}}(r):{className:s};return l=>le({},l,{children:/*#__PURE__*/e.createElement("div",{className:c(t.className,o(n,p)),style:m},null==u?void 0:u.map((e,t)=>a(t,e)))})}}}const Pe=[{name:"Yes",value:!0},{name:"No",value:!1}];function je(t={}){var n,l,a;const r=Ae(t.jsonataClass),o=Ie(),s=(i=t.multilineClass,m(t=>/*#__PURE__*/e.createElement(Me,le({},t,{className:c(t.className,i)}))));var i;const d=xe(null!=(n=t.checkOptions)?n:t.checkboxOptions),p=pe(t.selectOptions),v=fe(null!=(l=t.radioOptions)?l:t.checkOptions),f=Ne(null!=(a=t.checkListOptions)?a:t.checkOptions),{inputClass:N,booleanOptions:C,optionRenderer:h,displayOnlyClass:x}=le({optionRenderer:p,booleanOptions:Pe},t),E=De(t.arrayOptions);return m((t,n)=>{const{field:l}=t,a=l.type,i=t.renderOptions;let m=i.type;if(l.collection&&null==t.elementIndex&&(m==y.Standard||m==y.Array))return E.render(t,n);if(a===u.Compound){var g;const e=null!=(g=I(i)?i.groupOptions:void 0)?g:{type:"Standard",hideTitle:!0};return n.renderGroup(le({},t,{renderOptions:e}))}if(a==u.Any)/*#__PURE__*/return e.createElement(e.Fragment,null,"No control for Any");if(q(i))return n=>le({},n,{className:x,children:/*#__PURE__*/e.createElement(ge,{field:t.field,schemaInterface:t.dataContext.schemaInterface,control:t.control,className:t.className,style:t.style,emptyText:i.emptyText})});if(null!=C&&a===u.Bool&&null==t.options)return n.renderData(le({},t,{options:C}));if(m===y.Standard&&D(t))return h.render(t,n);switch(m){case y.NullToggle:return o.render(t,n);case y.CheckList:return f.render(t,n);case y.Dropdown:return p.render(t,n);case y.Radio:return v.render(t,n);case y.Checkbox:return d.render(t,n);case y.Jsonata:return r.render(t,n)}if(L(i)&&i.multiline)return s.render(t,n);const b=L(i)?i.placeholder:void 0;/*#__PURE__*/return e.createElement(de,{className:c(t.className,N),style:t.style,id:t.id,readOnly:t.readonly,control:t.control,placeholder:null!=b?b:void 0,convert:ue(t.field.type)})})}function He(t={}){return{type:"adornment",render:({adornment:n,designMode:l,dataContext:a,useExpr:o},s)=>({apply:c=>{if(V(n)&&o){const d=o(n.expression,e=>e),u=F({value:d}),m=r(p,[u]);return R(t=>/*#__PURE__*/e.createElement(m,{children:t,parentContext:a,adornment:n}))(c);function p({children:e,adornment:t,parentContext:n}){const{value:l}=u(n),a=M(t.field,n.parentNode).control,r=!t.defaultOnly;return Q(()=>[null==l?void 0:l.value,null==(null==a?void 0:a.value)],([e])=>{null==a||a.setValue(t=>r||null==t?e:t)},!0),e}}var i;return _(n)?G(null!=(i=n.placement)?i:P.ControlStart,/*#__PURE__*/e.createElement("i",{className:n.iconClass}))(c):j(n)?R(r=>/*#__PURE__*/e.createElement(be,le({renderers:s,children:r,accordion:n,contentStyle:c.style,contentClassName:c.className,designMode:l,dataContext:a},t.accordion)))(c):void 0},priority:0,adornment:n})}}function Be(t={}){return U((n,l)=>{const a=Y(le({},n,{className:c(n.className,t.className)}),l);return{children:a.wrapLayout(/*#__PURE__*/e.createElement(Ee,le({layout:a},t))),className:a.className,style:a.style,divRef:e=>e&&n.errorControl?n.errorControl.meta.scrollElement=e:void 0}})}function Je(t){const{className:n,groupLabelClass:l,controlLabelClass:a,requiredElement:r,labelContainer:s}=le({requiredElement:/*#__PURE__*/e.createElement("span",null," *"),labelContainer:e=>e},t);return{render:(t,i,d,u)=>t.type==H.Text?t.label:s(/*#__PURE__*/e.createElement(e.Fragment,null,/*#__PURE__*/e.createElement("label",{htmlFor:t.forId,className:c(t.className,o(n,t.type===H.Group&&l,t.type===H.Control&&a))},i,u.renderLabelText(t.label),t.required&&r),d)),type:"label"}}function Ue(e={}){return{data:je(e.data),display:oe(e.display),action:_e(void 0,e.action),array:Fe(e.array),group:Ge(e.group),label:Je(e.label),adornment:He(e.adornment),renderLayout:Be(e.layout),visibility:Oe()}}function Ye(){return Ue({layout:{className:"control"},group:{className:"group"},array:{className:"control-array"},action:{className:"action"},data:{inputClass:"data"},display:{htmlClassName:"html",textClassName:"text"}})}const $e={label:{groupLabelClass:"font-bold",requiredElement:/*#__PURE__*/e.createElement("span",{className:"text-red-500"}," *")},array:{removableClass:"grid grid-cols-[1fr_auto] items-center gap-x-2",childClass:"grow my-2",addActionClass:"my-2"},group:{standardClassName:"flex flex-col gap-4",gridClassName:"gap-x-2 gap-y-4",flexClassName:"gap-2"},action:{className:"bg-primary-500 rounded-lg p-3 text-white"},layout:{className:"flex flex-col",errorClass:"text-sm text-danger-500"},data:{displayOnlyClass:"flex flex-row items-center gap-2",checkOptions:{className:"flex items-center gap-4",entryClass:"flex gap-1 items-center"},selectOptions:{emptyText:"<select>"},multilineClass:"border p-2 outline-0 whitespace-pre"},adornment:{accordion:{className:"flex items-center gap-2 my-2",titleClass:"cursor-pointer",iconOpenClass:"fa fa-chevron-up",iconClosedClass:"fa fa-chevron-down"}}};export{Ce as CheckButtons,de as ControlInput,Le as DataArrayRenderer,be as DefaultAccordion,Re as DefaultArrayRenderer,Pe as DefaultBoolOptions,se as DefaultDisplay,ge as DefaultDisplayOnly,Ee as DefaultLayout,ke as DefaultVisibility,Se as JsonataRenderer,ye as SelectDataRenderer,_e as createButtonActionRenderer,Ne as createCheckListRenderer,xe as createCheckboxRenderer,Ye as createClassStyledRenderers,He as createDefaultAdornmentRenderer,De as createDefaultArrayDataRenderer,Fe as createDefaultArrayRenderer,je as createDefaultDataRenderer,oe as createDefaultDisplayRenderer,Ge as createDefaultGroupRenderer,Je as createDefaultLabelRenderer,Ue as createDefaultRenderers,Oe as createDefaultVisibilityRenderer,ue as createInputConversion,Ae as createJsonataRenderer,Ie as createNullToggleRenderer,fe as createRadioRenderer,ve as createSelectConversion,pe as createSelectRenderer,$e as defaultTailwindTheme,Te as getAccordionState,he as setIncluded};
1
+ import e,{useState as t,useMemo as n,useEffect as l,useRef as a,useCallback as r}from"react";import o from"clsx";import{DisplayDataType as s,rendererClass as c,coerceToString as i,getOverrideClass as d,FieldType as u,createDataRenderer as m,fieldOptionAdornment as p,DataRenderType as y,createLayoutRenderer as v,renderLayoutParts as f,isSelectChildRenderer as N,isGridRenderer as C,isFlexRenderer as h,createVisibilityRenderer as x,getJsonPath as E,useJsonataExpression as g,getRootDataNode as b,mergeObjects as T,isArrayRenderer as O,isCompoundField as k,makeHookDepString as A,createArrayActions as I,getLengthRestrictions as S,lookupDataNode as w,applyArrayLengthRestrictions as q,ControlDefinitionType as D,GroupRenderType as L,createActionRenderer as V,isDataGroupRenderer as F,isDisplayOnlyRenderer as M,hasOptions as R,isTextfieldRenderer as _,isSetFieldAdornment as G,useDynamicHooks as H,wrapLayout as P,schemaDataForFieldRef as j,isIconAdornment as B,appendMarkupAt as J,AdornmentPlacement as U,isAccordionAdornment as Y,LabelType as $}from"@react-typed-forms/schemas";import{useComponentTracking as z,formControlProps as K,useControl as Q,useControlEffect as W,RenderArrayElements as X,useComputed as Z,Fcheckbox as ee,useTrackedComponent as te,newControl as ne,RenderElements as le}from"@react-typed-forms/core";function ae(){return ae=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var l in n)({}).hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e},ae.apply(null,arguments)}function re(e,t){if(null==e)return{};var n={};for(var l in e)if({}.hasOwnProperty.call(e,l)){if(t.includes(l))continue;n[l]=e[l]}return n}const oe=["data","display","className","style"];function se(t={}){return{render:n=>/*#__PURE__*/e.createElement(ce,ae({},t,n)),type:"display"}}function ce(t){var n=z();try{let{data:n,display:l,className:a,style:r}=t,u=re(t,oe);switch(n.type){case s.Icon:/*#__PURE__*/return e.createElement("i",{style:r,className:o(d(a),l?l.value:n.iconClass)});case s.Text:/*#__PURE__*/return e.createElement("div",{style:r,className:c(a,u.textClassName)},l?i(l.value):n.text);case s.Html:/*#__PURE__*/return e.createElement("div",{style:r,className:c(a,u.htmlClassName),dangerouslySetInnerHTML:{__html:l?i(l.value):n.html}});case s.Custom:/*#__PURE__*/return e.createElement("div",null,"Custom display placeholder: ",n.customId);default:/*#__PURE__*/return e.createElement("h1",null,"Unknown display type: ",n.type)}}finally{n()}}const ie=["control","convert"],de=["errorText","value","onChange"];function ue(t){var n=z();try{let{control:l,convert:a}=t,r=re(t,ie);const o=K(l),{value:s}=o,c=re(o,de),i=Q(()=>d(s));return W(()=>l.value,e=>i.value=d(e)),/*#__PURE__*/e.createElement("input",ae({},c,{type:a[0],value:i.value,onChange:e=>{i.value=e.target.value;const t=a[1](e.target.value);void 0!==t&&(l.value=t)}},r));function d(e){return null==e?"":a[2](e)}}finally{n()}}function me(e){switch(e){case u.String:return["text",e=>e,e=>e];case u.Bool:return["text",e=>"true"===e||"false"!==e&&void 0,e=>{var t;return null!=(t=null==e?void 0:e.toString())?t:""}];case u.Int:return["number",e=>""!==e?parseInt(e):null,e=>null==e?"":e];case u.DateTime:return["datetime-local",e=>e||null,e=>e];case u.Date:return["date",e=>e||null,e=>e];case u.Time:return["time",e=>{const t=e.length;return 5===t?e+":00":8===t?e:void 0},e=>e?e.substring(0,5):""];case u.Double:return["number",e=>""!==e?parseFloat(e):null,e=>null==e?"":e];default:return["text",e=>e,e=>e]}}const pe=["state","options","className","convert","required","emptyText","requiredText","readonly"];function ye(t={}){return m((n,l)=>{var a;/*#__PURE__*/return e.createElement(ve,{className:c(n.className,t.className),state:n.control,id:n.id,readonly:n.readonly,options:null!=(a=n.options)?a:[],required:n.required,emptyText:t.emptyText,requiredText:t.requiredText,convert:fe(n.field.type)})},{options:!0})}function ve(l){var a=z();try{let{state:r,options:o,className:s,convert:c,required:i,emptyText:d="N/A",requiredText:u="<please select>",readonly:m}=l,p=re(l,pe);const{value:y,disabled:v}=r,[f]=t(!i||null==y),N=n(()=>Object.fromEntries(o.map(e=>[c(e.value),e.value])),[o]),C=n(()=>new Set(o.filter(e=>e.group).map(e=>e.group)),[o]);/*#__PURE__*/return e.createElement("select",ae({},p,{className:s,onChange:e=>r.value=N[e.target.value],value:c(y),disabled:v||m}),f&&/*#__PURE__*/e.createElement("option",{value:""},i?u:d),[...C.keys()].map(t=>/*#__PURE__*/e.createElement("optgroup",{key:t,label:t},o.filter(e=>e.group===t).map(h))),o.filter(e=>!e.group).map(h));function h(t,n){/*#__PURE__*/return e.createElement("option",{key:n,value:c(t.value),disabled:!!t.disabled},t.name)}}finally{a()}}function fe(e){switch(e){case u.String:case u.Int:case u.Double:return e=>e;default:return e=>{var t;return null!=(t=null==e?void 0:e.toString())?t:""}}}function Ne(t={}){return m(n=>/*#__PURE__*/e.createElement(he,ae({},t,n,{className:c(n.className,t.className),isChecked:(e,t)=>e.value==t.value,setChecked:(e,t)=>e.value=t.value,control:n.control,type:"radio",entryAdornment:p(n)})),{renderType:y.Radio})}function Ce(t={}){return m(n=>/*#__PURE__*/e.createElement(he,ae({},t,n,{className:c(n.className,t.className),isChecked:(e,t)=>{const n=e.value;return!!Array.isArray(n)&&n.includes(t.value)},setChecked:(e,t,n)=>{e.setValue(e=>xe(null!=e?e:[],t.value,n))},control:n.control,type:"checkbox",entryAdornment:p(n)})),{collection:!0,renderType:y.CheckList})}function he({control:t,options:n,labelClass:l,checkClass:a,readonly:r,entryClass:o,className:s,id:c,type:i,isChecked:d,setChecked:u,entryAdornment:m}){var p=z();try{const{disabled:p}=t,y="r"+t.uniqueId;/*#__PURE__*/return e.createElement("div",{className:s,id:c},/*#__PURE__*/e.createElement(X,{array:null==n?void 0:n.filter(e=>null!=e.value)},(n,s)=>{const c=Z(()=>d(t,n)).value;/*#__PURE__*/return e.createElement(e.Fragment,null,/*#__PURE__*/e.createElement("div",{key:s,className:o},/*#__PURE__*/e.createElement("input",{id:y+"_"+s,className:a,type:i,name:y,readOnly:r,disabled:p,checked:c,onChange:e=>{!r&&u(t,n,e.target.checked)}}),/*#__PURE__*/e.createElement("label",{className:l,htmlFor:y+"_"+s},n.name)),null==m?void 0:m(n,s,c))}))}finally{p()}}function xe(e,t,n){return n===e.includes(t)?e:n?[...e,t]:e.filter(e=>e!==t)}function Ee(t={}){return m((n,l)=>a=>ae({},a,{label:void 0,children:/*#__PURE__*/e.createElement("div",{className:c(n.className,t.entryClass)},/*#__PURE__*/e.createElement(ee,{id:n.id,control:n.control,style:n.style,className:t.checkClass}),a.label&&l.renderLabel(a.label,void 0,void 0))}),{renderType:y.Checkbox})}function ge(t={}){return v((n,l)=>{const a=f(n,l);return{children:a.wrapLayout(/*#__PURE__*/e.createElement(be,ae({layout:a},t))),className:c(a.className,t.className),style:a.style,divRef:e=>e&&n.errorControl?n.errorControl.meta.scrollElement=e:void 0}})}function be({errorClass:t,renderError:n=n=>n&&/*#__PURE__*/e.createElement("div",{className:t},n),layout:{controlEnd:l,controlStart:a,label:r,children:o,errorControl:s}}){var c=z();try{/*#__PURE__*/return e.createElement(e.Fragment,null,r,a,o,n(s&&s.touched?s.error:void 0),l)}finally{c()}}function Te({control:t,className:n,emptyText:l,schemaInterface:a,field:r,style:o}){var s=z();try{var c;const s=t.value,i=null!=(c=a.isEmptyValue(r,s)?l:a.textValue(r,s))?c:"";/*#__PURE__*/return e.createElement("div",{style:o,className:n},i)}finally{s()}}function Oe({children:t,accordion:n,contentStyle:l,contentClassName:a,designMode:r,iconOpenClass:s,iconClosedClass:c,className:i,renderTitle:d=e=>e,renderToggler:u,renderers:m,titleClass:p,useCss:y,dataContext:v}){var f=z();try{var N;const f=(null!=(N=v.dataNode)?N:v.parentNode).control,C=Q(!!n.defaultExpanded);f&&!f.meta.accordionState&&(f.meta.accordionState=C);const h=C.value,x=h||r?l:ae({},l,{display:"none"}),E=m.renderLabelText(d(n.title,C)),g=u?u(C,E):/*#__PURE__*/e.createElement("button",{className:i,onClick:()=>C.setValue(e=>!e)},/*#__PURE__*/e.createElement("label",{className:p},E),/*#__PURE__*/e.createElement("i",{className:o(h?s:c)}));/*#__PURE__*/return e.createElement(e.Fragment,null,g,(y||h||r)&&/*#__PURE__*/e.createElement("div",{style:x,className:a},t))}finally{f()}}function ke(e){return e.meta.accordionState}function Ae(t){const{className:n,gridStyles:l=u,defaultGridColumns:a=2,gridClassName:r,standardClassName:s,flexClassName:i,defaultFlexGap:d}=null!=t?t:{};function u({columns:e=a}){return{className:r,style:{display:"grid",gridTemplateColumns:`repeat(${e}, 1fr)`}}}return{type:"group",render:function(t){const{renderChild:a,renderOptions:r,childDefinitions:u}=t;if(N(r)&&!t.designMode)/*#__PURE__*/return e.createElement(Ie,ae({},t,{renderOptions:r}));const{style:m,className:p}=C(r)?l(r):h(r)?function(e){return{className:i,style:{display:"flex",gap:e.gap?e.gap:d,flexDirection:e.direction?e.direction:void 0}}}(r):{className:s};/*#__PURE__*/return e.createElement("div",{className:c(t.className,o(n,p)),style:m},null==u?void 0:u.map((e,t)=>a(t,e)))}}}function Ie(t){var n=z();try{const{useEvalExpression:n,renderOptions:l}=t,a=n(null==l?void 0:l.childIndexExpression,e=>"string"==e?parseInt(e):e),r=te(t=>{const n=a.runHook(t.dataContext,a.state),l=null==n?void 0:n.value;/*#__PURE__*/return e.createElement("div",null,"number"==typeof l&&l<t.childDefinitions.length&&l>=0&&t.renderChild(l,t.childDefinitions[l]))},[a.deps]);/*#__PURE__*/return e.createElement(r,t)}finally{n()}}function Se(){return x(t=>/*#__PURE__*/e.createElement(we,t))}function we({visibility:t,children:n,className:a,style:r,divRef:s}){var c=z();try{const c=t.value;return l(()=>{c&&t.setValue(e=>({visible:c.visible,showing:c.visible}))},[null==c?void 0:c.visible]),null!=c&&c.visible?/*#__PURE__*/e.createElement("div",{className:o(a),style:r,ref:s},n):/*#__PURE__*/e.createElement(e.Fragment,null)}finally{c()}}function qe(t){return m(n=>/*#__PURE__*/e.createElement(De,{renderOptions:n.renderOptions,className:c(n.className,t),dataNode:n.dataNode,dataContext:n.dataContext,control:n.control,readonly:n.readonly}),{renderType:y.Jsonata})}function De({control:t,renderOptions:n,readonly:l,className:a,dataContext:r,dataNode:o}){var s=z();try{const s=null!=o.elementIndex?o:r.parentNode,c=Z(()=>({value:t.value,readonly:l,disabled:t.disabled,formData:r.formData,dataPath:E(o)})),d=g(n.expression,b(s).control,E(s),c,i);/*#__PURE__*/return e.createElement("div",{className:a,dangerouslySetInnerHTML:{__html:d.value}})}finally{s()}}const Le=["control","field","renderOptions"];function Ve(){return m((t,n)=>{var l,a;let{control:r,field:o}=t,s=re(t,Le);const c=null!=(a=(l=r.meta).nullControl)?a:l.nullControl=ne(null!=r.current.value);return t=>{const l=n.renderData(ae({},s,{control:c,field:ae({},o,{type:u.Bool}),renderOptions:{type:y.Checkbox}}))(t);return ae({},l,{children:/*#__PURE__*/e.createElement(Fe,{control:r,nullControl:c,children:l.children,readonly:s.readonly,defaultValue:s.definition.defaultValue})})}})}function Fe({children:e,nullControl:t,control:n,defaultValue:l,readonly:a}){return W(()=>a,e=>t.disabled=e,!0),W(()=>t.value,e=>{var a;e?n.value=null!=(a=t.meta.nonNullValue)?a:l:(t.meta.nonNullValue=n.value,n.value=null)}),e}function Me(t){return m((n,l)=>/*#__PURE__*/e.createElement(Re,{dataProps:n,renderers:l,defaultActions:t}),{renderType:y.Array,collection:!0})}function Re({dataProps:t,renderers:n,defaultActions:l}){var a;const{renderOptions:r,control:o,field:s,readonly:c,designMode:i,required:d,renderChild:u,definition:m,className:p,style:v,useChildVisibility:f,dataContext:N}=t,{addText:C,noAdd:h,noRemove:x,removeText:E}=T(O(r)?r:{},l),g=O(r)?r.childOptions:void 0,b=!k(s),w=b?{type:D.Data,field:m.field,children:m.children,renderOptions:null!=g?g:{type:y.Standard},hideTitle:!0}:{type:D.Group,children:m.children,groupOptions:{type:L.Standard,hideTitle:!0}},q=(null!=(a=m.children)?a:[]).map(e=>[f(e,void 0,!0),e]),V=A(q,e=>e[0].deps),F=te(_e,[V]),M=ae({},I(o,s,{addText:C,removeText:E,noAdd:h,noRemove:x,readonly:c,disabled:o.disabled,designMode:i}),{required:d,renderElement:(t,n)=>/*#__PURE__*/e.createElement(F,{index:t,renderChildElement:R,dataContext:N,visibilities:q,wrap:n}),className:p||void 0,style:v},S(m));return n.renderArray(M);function R(e,t){var n,l;return u(null!=(n=null==(l=o.elements)?void 0:l[e].uniqueId)?n:e,w,b?{elementIndex:e}:{parentDataNode:t})}}function _e({index:e,renderChildElement:t,visibilities:n,wrap:l,dataContext:a}){const r=a.dataNode.getChildElement(e),o=n.map(([e,t])=>e.runHook(ae({},a,{parentNode:r,dataNode:w(t,r)}),e.state).value);if(0==o.length||o.some(e=>!0===e))return l(t(e,r))}function Ge(t){return{render:(n,{renderAction:l})=>/*#__PURE__*/e.createElement(He,ae({},n,t,{renderAction:l})),type:"array"}}function He(t){var n=z();try{const{renderElement:n,className:l,removableClass:a,childClass:r,removableChildClass:s,removeActionClass:c,addActionClass:i,arrayControl:d,renderAction:u,style:m}=t,{addAction:p,removeAction:y}=q(t);/*#__PURE__*/return e.createElement("div",{style:m},/*#__PURE__*/e.createElement("div",{className:o(l,y&&a)},/*#__PURE__*/e.createElement(le,{control:d},(t,l)=>n(l,t=>y?/*#__PURE__*/e.createElement(e.Fragment,null,/*#__PURE__*/e.createElement("div",{className:o(r,s)},t),/*#__PURE__*/e.createElement("div",{className:c},u(y(l)))):/*#__PURE__*/e.createElement("div",{className:r},t)))),p&&/*#__PURE__*/e.createElement("div",{className:i},u(p)))}finally{n()}}function Pe({control:t,className:n}){var l=z();try{const l=a(null);return W(()=>t.value,e=>{const t=l.current;t&&t.textContent!==e&&(t.textContent=e)},!0),/*#__PURE__*/e.createElement("code",{contentEditable:!t.disabled,className:n,onInput:e=>t.value=e.currentTarget.textContent,ref:l})}finally{l()}}function je(t,n={}){return V(t,({onClick:t,actionText:l,className:a,style:r,actionId:o,actionData:s,disabled:i})=>{var d;/*#__PURE__*/return e.createElement("button",{className:c(a,n.className),disabled:i,style:r,onClick:t},null!=(d=null==n.renderContent?void 0:n.renderContent(l,o,s))?d:l)})}const Be=[{name:"Yes",value:!0},{name:"No",value:!1}];function Je(t={}){var n,l,a;const r=qe(t.jsonataClass),o=Ve(),s=(i=t.multilineClass,m(t=>/*#__PURE__*/e.createElement(Pe,ae({},t,{className:c(t.className,i)}))));var i;const d=Ee(null!=(n=t.checkOptions)?n:t.checkboxOptions),p=ye(t.selectOptions),v=Ne(null!=(l=t.radioOptions)?l:t.checkOptions),f=Ce(null!=(a=t.checkListOptions)?a:t.checkOptions),{inputClass:N,booleanOptions:C,optionRenderer:h,displayOnlyClass:x,defaultEmptyText:E}=ae({optionRenderer:p,booleanOptions:Be},t),g=Me(t.arrayOptions);return m((t,n)=>{const{field:l}=t,a=l.type,i=t.renderOptions;let m=i.type;if(l.collection&&null==t.elementIndex&&(m==y.Standard||m==y.Array))return g.render(t,n);if(a===u.Compound){var b;const e=null!=(b=F(i)?i.groupOptions:void 0)?b:{type:"Standard",hideTitle:!0};return n.renderGroup(ae({},t,{renderOptions:e}))}if(a==u.Any)/*#__PURE__*/return e.createElement(e.Fragment,null,"No control for Any");if(t.displayOnly||M(i))return n=>ae({},n,{className:"@ "+c(n.className,x),children:/*#__PURE__*/e.createElement(Te,{field:t.field,schemaInterface:t.dataContext.schemaInterface,control:t.control,className:t.className,style:t.style,emptyText:M(i)&&i.emptyText?i.emptyText:E})});if(null!=C&&a===u.Bool&&null==t.options)return n.renderData(ae({},t,{options:C}));if(m===y.Standard&&R(t))return h.render(t,n);switch(m){case y.NullToggle:return o.render(t,n);case y.CheckList:return f.render(t,n);case y.Dropdown:return p.render(t,n);case y.Radio:return v.render(t,n);case y.Checkbox:return d.render(t,n);case y.Jsonata:return r.render(t,n)}if(_(i)&&i.multiline)return s.render(t,n);const T=_(i)?i.placeholder:void 0;/*#__PURE__*/return e.createElement(ue,{className:c(t.className,N),style:t.style,id:t.id,readOnly:t.readonly,control:t.control,placeholder:null!=T?T:void 0,convert:me(t.field.type)})})}function Ue(t={}){return{type:"adornment",render:({adornment:n,designMode:l,dataContext:a,useExpr:o},s)=>({apply:c=>{if(G(n)&&o){const d=o(n.expression,e=>e),u=H({value:d}),m=r(p,[u]);return P(t=>/*#__PURE__*/e.createElement(m,{children:t,parentContext:a,adornment:n}))(c);function p({children:e,adornment:t,parentContext:n}){const{value:l}=u(n),a=j(t.field,n.parentNode).control,r=!t.defaultOnly;return W(()=>[null==l?void 0:l.value,null==(null==a?void 0:a.value)],([e])=>{null==a||a.setValue(t=>r||null==t?e:t)},!0),e}}var i;return B(n)?J(null!=(i=n.placement)?i:U.ControlStart,/*#__PURE__*/e.createElement("i",{className:n.iconClass}))(c):Y(n)?P(r=>/*#__PURE__*/e.createElement(Oe,ae({renderers:s,children:r,accordion:n,contentStyle:c.style,contentClassName:c.className,designMode:l,dataContext:a},t.accordion)))(c):void 0},priority:0,adornment:n})}}function Ye(t){const{className:n,groupLabelClass:l,controlLabelClass:a,requiredElement:r,labelContainer:s}=ae({requiredElement:/*#__PURE__*/e.createElement("span",null," *"),labelContainer:e=>e},t);return{render:(t,i,d,u)=>t.type==$.Text?t.label:s(/*#__PURE__*/e.createElement(e.Fragment,null,/*#__PURE__*/e.createElement("label",{htmlFor:t.forId,className:c(t.className,o(n,t.type===$.Group&&l,t.type===$.Control&&a))},i,u.renderLabelText(t.label),t.required&&r),d)),type:"label"}}function $e(e={}){return{data:Je(e.data),display:se(e.display),action:je(void 0,e.action),array:Ge(e.array),group:Ae(e.group),label:Ye(e.label),adornment:Ue(e.adornment),renderLayout:ge(e.layout),visibility:Se()}}function ze(){return $e({layout:{className:"control"},group:{className:"group"},array:{className:"control-array"},action:{className:"action"},data:{inputClass:"data"},display:{htmlClassName:"html",textClassName:"text"}})}const Ke={label:{groupLabelClass:"font-bold",requiredElement:/*#__PURE__*/e.createElement("span",{className:"text-red-500"}," *")},array:{removableClass:"grid grid-cols-[1fr_auto] items-center gap-x-2",childClass:"grow my-2",addActionClass:"my-2"},group:{standardClassName:"flex flex-col gap-4",gridClassName:"gap-x-2 gap-y-4",flexClassName:"gap-2"},action:{className:"bg-primary-500 rounded-lg p-3 text-white"},layout:{className:"flex flex-col",errorClass:"text-sm text-danger-500"},data:{displayOnlyClass:"flex flex-row items-center gap-2",checkOptions:{className:"flex items-center gap-4",entryClass:"flex gap-1 items-center"},selectOptions:{emptyText:"<select>"},multilineClass:"border p-2 outline-0 whitespace-pre-wrap"},adornment:{accordion:{className:"flex items-center gap-2 my-2",titleClass:"cursor-pointer",iconOpenClass:"fa fa-chevron-up",iconClosedClass:"fa fa-chevron-down"}}};export{he as CheckButtons,ue as ControlInput,Re as DataArrayRenderer,Oe as DefaultAccordion,He as DefaultArrayRenderer,Be as DefaultBoolOptions,ce as DefaultDisplay,Te as DefaultDisplayOnly,be as DefaultLayout,we as DefaultVisibility,De as JsonataRenderer,ve as SelectDataRenderer,je as createButtonActionRenderer,Ce as createCheckListRenderer,Ee as createCheckboxRenderer,ze as createClassStyledRenderers,Ue as createDefaultAdornmentRenderer,Me as createDefaultArrayDataRenderer,Ge as createDefaultArrayRenderer,Je as createDefaultDataRenderer,se as createDefaultDisplayRenderer,Ae as createDefaultGroupRenderer,Ye as createDefaultLabelRenderer,ge as createDefaultLayoutRenderer,$e as createDefaultRenderers,Se as createDefaultVisibilityRenderer,me as createInputConversion,qe as createJsonataRenderer,Ve as createNullToggleRenderer,Ne as createRadioRenderer,fe as createSelectConversion,ye as createSelectRenderer,Ke as defaultTailwindTheme,ke as getAccordionState,xe as setIncluded};
2
2
  //# sourceMappingURL=index.js.map
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/DefaultVisibility.tsx","../src/components/JsonataRenderer.tsx","../src/components/NullToggle.tsx","../src/components/DefaultArrayRenderer.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 Custom display placeholder: {(data as CustomDisplay).customId}\n </div>\n );\n default:\n return <h1>Unknown display type: {data.type}</h1>;\n }\n}\n","import 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 createDataRenderer,\n DataRenderType,\n FieldOption,\n fieldOptionAdornment,\n rendererClass\n} from \"@react-typed-forms/schemas\";\n\nexport interface CheckRendererOptions {\n className?: string;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n}\nexport function createRadioRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n {...options}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => control.value == o.value}\n setChecked={(c, o) => (c.value = o.value)}\n control={p.control}\n type=\"radio\"\n 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 {...options}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => {\n const v = control.value;\n return Array.isArray(v) ? v.includes(o.value) : false;\n }}\n setChecked={(c, o, checked) => {\n c.setValue((x) => setIncluded(x ?? [], o.value, checked));\n }}\n control={p.control}\n type=\"checkbox\"\n 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 entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n readonly?: boolean;\n type: \"checkbox\" | \"radio\";\n isChecked: (c: Control<any>, o: FieldOption) => boolean;\n setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;\n entryAdornment?: (c: FieldOption, i: number, selected: boolean) => ReactNode;\n}\n\nexport function CheckButtons({\n control,\n options,\n labelClass,\n checkClass,\n readonly,\n entryClass,\n className,\n id,\n type,\n isChecked,\n setChecked,\n entryAdornment,\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 return (\n <>\n <div key={i} className={entryClass}>\n <input\n id={name + \"_\" + i}\n className={checkClass}\n type={type}\n name={name}\n readOnly={readonly}\n disabled={disabled}\n checked={checked}\n onChange={(x) => {\n !readonly && setChecked(control, o, x.target.checked);\n }}\n />\n <label className={labelClass} htmlFor={name + \"_\" + i}>\n {o.name}\n </label>\n </div>\n {entryAdornment?.(o, i, checked)}\n </>\n );\n }}\n </RenderArrayElements>\n </div>\n );\n}\n\nexport function setIncluded<A>(array: A[], elem: A, included: boolean): A[] {\n const already = array.includes(elem);\n if (included === already) {\n return array;\n }\n if (included) {\n return [...array, elem];\n }\n return array.filter((e) => e !== elem);\n}\n\nexport function createCheckboxRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (props, renderer) => (p) => ({\n ...p,\n label: undefined,\n children: (\n <div className={rendererClass(props.className, options.entryClass)}>\n <Fcheckbox\n id={props.id}\n control={props.control}\n style={props.style}\n className={options.checkClass}\n />\n {p.label && renderer.renderLabel(p.label, undefined, undefined)}\n </div>\n ),\n }),\n { renderType: DataRenderType.Checkbox },\n );\n}\n","import React, { ReactNode } from \"react\";\nimport {RenderedLayout} 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 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 | null;\n style?: React.CSSProperties;\n emptyText?: string | null;\n}) {\n const v = control.value;\n const text =\n (schemaInterface.isEmptyValue(field, v)\n ? emptyText\n : schemaInterface.textValue(field, v)) ?? \"\";\n return (\n <div style={style} className={rendererClass(className)}>\n {text}\n </div>\n );\n}\n","import 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 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 { Control, newControl, useControlEffect } from \"@react-typed-forms/core\";\nimport React, { ReactNode } from \"react\";\nimport {\n createDataRenderer,\n DataRenderType,\n FieldType,\n} from \"@react-typed-forms/schemas\";\n\nexport function createNullToggleRenderer() {\n return createDataRenderer(\n ({ control, field, renderOptions, ...props }, renderers) => {\n const nullControl = (control.meta[\"nullControl\"] ??= newControl(\n control.current.value != null,\n ));\n return (layout) => {\n const newLayout = renderers.renderData({\n ...props,\n control: nullControl,\n field: { ...field, type: FieldType.Bool },\n renderOptions: { type: DataRenderType.Checkbox },\n })(layout);\n return {\n ...newLayout,\n children: (\n <NullWrapper\n control={control}\n nullControl={nullControl}\n children={newLayout.children}\n readonly={props.readonly}\n defaultValue={props.definition.defaultValue}\n />\n ),\n };\n };\n },\n );\n}\n\nfunction NullWrapper({\n children,\n nullControl,\n control,\n defaultValue,\n readonly,\n}: {\n control: Control<any>;\n nullControl: Control<boolean>;\n children: ReactNode;\n readonly: boolean;\n defaultValue: any;\n}) {\n useControlEffect(\n () => readonly,\n (r) => (nullControl.disabled = r),\n true,\n );\n useControlEffect(\n () => nullControl.value,\n (e) => {\n if (e) {\n control.value = nullControl.meta[\"nonNullValue\"] ?? defaultValue;\n } else {\n nullControl.meta[\"nonNullValue\"] = control.value;\n control.value = null;\n }\n },\n );\n return children;\n}\n","import 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 FormRenderer,\n getLengthRestrictions,\n GroupedControlsDefinition,\n GroupRenderType,\n isArrayRenderer,\n isCompoundField,\n lookupDataNode,\n makeHookDepString,\n mergeObjects,\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 } = 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: ControlDefinition = !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\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, 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, { 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 DefaultLayout,\n DefaultLayoutRendererOptions,\n} from \"./components/DefaultLayout\";\nimport { createDefaultVisibilityRenderer } from \"./components/DefaultVisibility\";\nimport React, {\n CSSProperties,\n Fragment,\n ReactElement,\n ReactNode,\n useCallback,\n} from \"react\";\nimport clsx from \"clsx\";\nimport {\n createSelectRenderer,\n SelectRendererOptions,\n} from \"./components/SelectDataRenderer\";\nimport { DefaultDisplayOnly } from \"./components/DefaultDisplayOnly\";\nimport { Control, useControlEffect } from \"@react-typed-forms/core\";\nimport { ControlInput, createInputConversion } from \"./components/ControlInput\";\nimport {\n createDefaultArrayDataRenderer,\n createDefaultArrayRenderer,\n DefaultArrayRendererOptions,\n} from \"./components/DefaultArrayRenderer\";\nimport {\n CheckRendererOptions,\n createCheckboxRenderer,\n createCheckListRenderer,\n createRadioRenderer,\n} from \"./components/CheckRenderer\";\nimport { DefaultAccordion } from \"./components/DefaultAccordion\";\nimport { createNullToggleRenderer } from \"./components/NullToggle\";\nimport { createMultilineFieldRenderer } from \"./components/MultilineTextfield\";\nimport { createJsonataRenderer } from \"./components/JsonataRenderer\";\nimport {\n ActionRendererProps,\n ActionRendererRegistration,\n AdornmentPlacement,\n AdornmentRendererRegistration,\n appendMarkupAt,\n ArrayActionOptions,\n ControlDataContext,\n ControlLayoutProps,\n createActionRenderer,\n createDataRenderer,\n createLayoutRenderer,\n DataRendererRegistration,\n DataRenderType,\n DefaultRenderers,\n FieldOption,\n FieldType,\n FlexRenderer,\n GridRenderer,\n GroupRendererProps,\n GroupRendererRegistration,\n hasOptions,\n isAccordionAdornment,\n isDataGroupRenderer,\n isDisplayOnlyRenderer,\n isFlexRenderer,\n isGridRenderer,\n isIconAdornment,\n isSetFieldAdornment,\n isTextfieldRenderer,\n LabelRendererRegistration,\n LabelType,\n rendererClass,\n renderLayoutParts,\n schemaDataForFieldRef,\n SetFieldAdornment,\n useDynamicHooks,\n wrapLayout,\n} from \"@react-typed-forms/schemas\";\n\nexport interface DefaultRendererOptions {\n data?: DefaultDataRendererOptions;\n display?: DefaultDisplayRendererOptions;\n action?: DefaultActionRendererOptions;\n array?: DefaultArrayRendererOptions;\n group?: DefaultGroupRendererOptions;\n label?: DefaultLabelRendererOptions;\n adornment?: DefaultAdornmentRendererOptions;\n layout?: DefaultLayoutRendererOptions;\n}\n\ninterface StyleProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport interface DefaultActionRendererOptions {\n className?: string;\n renderContent?: (\n actionText: string,\n actionId: string,\n actionData: any,\n ) => ReactNode;\n}\n\nexport function createButtonActionRenderer(\n actionId: string | string[] | undefined,\n options: DefaultActionRendererOptions = {},\n): ActionRendererRegistration {\n return createActionRenderer(\n actionId,\n ({\n onClick,\n actionText,\n className,\n style,\n actionId,\n actionData,\n 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 interface DefaultGroupRendererOptions {\n className?: string;\n standardClassName?: string;\n gridStyles?: (columns: GridRenderer) => StyleProps;\n gridClassName?: string;\n defaultGridColumns?: number;\n flexClassName?: string;\n defaultFlexGap?: string;\n}\n\nexport function createDefaultGroupRenderer(\n options?: DefaultGroupRendererOptions,\n): GroupRendererRegistration {\n const {\n className,\n gridStyles = defaultGridStyles,\n defaultGridColumns = 2,\n gridClassName,\n standardClassName,\n flexClassName,\n defaultFlexGap,\n } = options ?? {};\n\n function defaultGridStyles({\n columns = defaultGridColumns,\n }: GridRenderer): StyleProps {\n return {\n className: gridClassName,\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n },\n };\n }\n\n function flexStyles(options: FlexRenderer): StyleProps {\n return {\n className: flexClassName,\n style: {\n display: \"flex\",\n gap: options.gap ? options.gap : defaultFlexGap,\n flexDirection: options.direction\n ? (options.direction as any)\n : undefined,\n },\n };\n }\n\n function render(props: GroupRendererProps) {\n const { renderChild, renderOptions, childDefinitions } = props;\n\n const { style, className: gcn } = isGridRenderer(renderOptions)\n ? gridStyles(renderOptions)\n : isFlexRenderer(renderOptions)\n ? flexStyles(renderOptions)\n : ({ className: standardClassName } as StyleProps);\n\n return (cp: ControlLayoutProps) => {\n return {\n ...cp,\n children: (\n <div\n className={rendererClass(props.className, clsx(className, gcn))}\n style={style}\n >\n {childDefinitions?.map((c, i) => renderChild(i, c))}\n </div>\n ),\n };\n };\n }\n\n return { type: \"group\", render };\n}\n\nexport const DefaultBoolOptions: FieldOption[] = [\n { name: \"Yes\", value: true },\n { name: \"No\", value: false },\n];\n\nexport interface DefaultDataRendererOptions {\n inputClass?: string;\n displayOnlyClass?: string;\n selectOptions?: SelectRendererOptions;\n checkboxOptions?: CheckRendererOptions;\n checkOptions?: CheckRendererOptions;\n radioOptions?: CheckRendererOptions;\n checkListOptions?: CheckRendererOptions;\n booleanOptions?: FieldOption[];\n optionRenderer?: DataRendererRegistration;\n multilineClass?: string;\n jsonataClass?: string;\n arrayOptions?: ArrayActionOptions;\n}\n\nexport function createDefaultDataRenderer(\n options: DefaultDataRendererOptions = {},\n): DataRendererRegistration {\n const jsonataRenderer = createJsonataRenderer(options.jsonataClass);\n const nullToggler = createNullToggleRenderer();\n const multilineRenderer = createMultilineFieldRenderer(\n options.multilineClass,\n );\n const checkboxRenderer = createCheckboxRenderer(\n options.checkOptions ?? options.checkboxOptions,\n );\n const selectRenderer = createSelectRenderer(options.selectOptions);\n const radioRenderer = createRadioRenderer(\n options.radioOptions ?? options.checkOptions,\n );\n const checkListRenderer = createCheckListRenderer(\n options.checkListOptions ?? options.checkOptions,\n );\n const { inputClass, booleanOptions, optionRenderer, displayOnlyClass } = {\n optionRenderer: selectRenderer,\n booleanOptions: DefaultBoolOptions,\n ...options,\n };\n const arrayRenderer = createDefaultArrayDataRenderer(options.arrayOptions);\n\n return createDataRenderer((props, renderers) => {\n const { field } = props;\n const fieldType = field.type;\n const renderOptions = props.renderOptions;\n let renderType = renderOptions.type;\n if (\n field.collection &&\n props.elementIndex == null &&\n (renderType == DataRenderType.Standard ||\n renderType == DataRenderType.Array)\n ) {\n return arrayRenderer.render(props, renderers);\n }\n if (fieldType === FieldType.Compound) {\n const groupOptions = (isDataGroupRenderer(renderOptions)\n ? renderOptions.groupOptions\n : undefined) ?? { type: \"Standard\", hideTitle: true };\n return renderers.renderGroup({ ...props, renderOptions: groupOptions });\n }\n if (fieldType == FieldType.Any) return <>No control for Any</>;\n if (isDisplayOnlyRenderer(renderOptions))\n return (p) => ({\n ...p,\n className: displayOnlyClass,\n children: (\n <DefaultDisplayOnly\n field={props.field}\n schemaInterface={props.dataContext.schemaInterface}\n control={props.control}\n className={props.className}\n style={props.style}\n emptyText={renderOptions.emptyText}\n />\n ),\n });\n const isBool = fieldType === FieldType.Bool;\n if (booleanOptions != null && isBool && props.options == null) {\n return renderers.renderData({ ...props, options: booleanOptions });\n }\n if (renderType === DataRenderType.Standard && hasOptions(props)) {\n return optionRenderer.render(props, renderers);\n }\n switch (renderType) {\n case DataRenderType.NullToggle:\n return nullToggler.render(props, renderers);\n case DataRenderType.CheckList:\n return checkListRenderer.render(props, renderers);\n case DataRenderType.Dropdown:\n return selectRenderer.render(props, renderers);\n case DataRenderType.Radio:\n return radioRenderer.render(props, renderers);\n case DataRenderType.Checkbox:\n return checkboxRenderer.render(props, renderers);\n case DataRenderType.Jsonata:\n return jsonataRenderer.render(props, renderers);\n }\n if (isTextfieldRenderer(renderOptions) && renderOptions.multiline)\n return multilineRenderer.render(props, renderers);\n const placeholder = isTextfieldRenderer(renderOptions)\n ? renderOptions.placeholder\n : undefined;\n return (\n <ControlInput\n className={rendererClass(props.className, inputClass)}\n style={props.style}\n id={props.id}\n readOnly={props.readonly}\n control={props.control}\n placeholder={placeholder ?? undefined}\n convert={createInputConversion(props.field.type)}\n />\n );\n });\n}\n\nexport interface DefaultAccordionRendererOptions {\n className?: string;\n titleClass?: string;\n togglerClass?: string;\n iconOpenClass?: string;\n iconClosedClass?: string;\n renderTitle?: (\n title: string | undefined,\n current: Control<boolean>,\n ) => ReactNode;\n renderToggler?: (current: Control<boolean>, title: ReactNode) => ReactNode;\n useCss?: boolean;\n}\n\nexport interface DefaultAdornmentRendererOptions {\n accordion?: DefaultAccordionRendererOptions;\n}\n\nexport function createDefaultAdornmentRenderer(\n options: DefaultAdornmentRendererOptions = {},\n): AdornmentRendererRegistration {\n return {\n type: \"adornment\",\n render: ({ adornment, designMode, dataContext, useExpr }, renderers) => ({\n apply: (rl) => {\n if (isSetFieldAdornment(adornment) && useExpr) {\n const hook = useExpr(adornment.expression, (x) => x);\n const dynamicHooks = useDynamicHooks({ value: hook });\n const SetFieldWrapper = useCallback(setFieldWrapper, [dynamicHooks]);\n return wrapLayout((x) => (\n <SetFieldWrapper\n children={x}\n parentContext={dataContext}\n adornment={adornment}\n />\n ))(rl);\n\n function setFieldWrapper({\n children,\n adornment,\n parentContext,\n }: {\n children: ReactNode;\n adornment: SetFieldAdornment;\n parentContext: ControlDataContext;\n }) {\n const { value } = dynamicHooks(parentContext);\n const fieldNode = schemaDataForFieldRef(\n adornment.field,\n parentContext.parentNode,\n );\n const otherField = fieldNode.control;\n const always = !adornment.defaultOnly;\n useControlEffect(\n () => [value?.value, otherField?.value == null],\n ([v]) => {\n otherField?.setValue((x) => (always || x == null ? v : x));\n },\n true,\n );\n return children;\n }\n }\n if (isIconAdornment(adornment)) {\n return appendMarkupAt(\n adornment.placement ?? AdornmentPlacement.ControlStart,\n <i className={adornment.iconClass} />,\n )(rl);\n }\n if (isAccordionAdornment(adornment)) {\n return wrapLayout((x) => (\n <DefaultAccordion\n renderers={renderers}\n children={x}\n accordion={adornment}\n contentStyle={rl.style}\n contentClassName={rl.className}\n designMode={designMode}\n dataContext={dataContext}\n {...options.accordion}\n />\n ))(rl);\n }\n },\n priority: 0,\n adornment,\n }),\n };\n}\n\nfunction createDefaultLayoutRenderer(\n options: DefaultLayoutRendererOptions = {},\n) {\n return createLayoutRenderer((props, renderers) => {\n const layout = renderLayoutParts(\n {\n ...props,\n className: rendererClass(props.className, options.className),\n },\n renderers,\n );\n return {\n children: layout.wrapLayout(\n <DefaultLayout layout={layout} {...options} />,\n ),\n className: layout.className,\n style: layout.style,\n divRef: (e) =>\n e && props.errorControl\n ? (props.errorControl.meta.scrollElement = e)\n : undefined,\n };\n });\n}\n\ninterface DefaultLabelRendererOptions {\n className?: string;\n groupLabelClass?: string;\n controlLabelClass?: string;\n requiredElement?: ReactNode;\n labelContainer?: (children: ReactElement) => ReactElement;\n}\n\nexport function createDefaultLabelRenderer(\n options?: DefaultLabelRendererOptions,\n): LabelRendererRegistration {\n const {\n className,\n groupLabelClass,\n controlLabelClass,\n requiredElement,\n labelContainer,\n } = {\n requiredElement: <span> *</span>,\n labelContainer: (c: ReactElement) => c,\n ...options,\n };\n return {\n render: (props, labelStart, labelEnd, renderers) => {\n if (props.type == LabelType.Text) return props.label;\n return labelContainer(\n <>\n <label\n htmlFor={props.forId}\n className={rendererClass(\n props.className,\n clsx(\n className,\n props.type === LabelType.Group && groupLabelClass,\n props.type === LabelType.Control && controlLabelClass,\n ),\n )}\n >\n {labelStart}\n {renderers.renderLabelText(props.label)}\n {props.required && requiredElement}\n </label>\n {labelEnd}\n </>,\n );\n },\n type: \"label\",\n };\n}\n\nexport function createDefaultRenderers(\n options: DefaultRendererOptions = {},\n): DefaultRenderers {\n return {\n data: createDefaultDataRenderer(options.data),\n display: createDefaultDisplayRenderer(options.display),\n action: createButtonActionRenderer(undefined, options.action),\n array: createDefaultArrayRenderer(options.array),\n group: createDefaultGroupRenderer(options.group),\n label: createDefaultLabelRenderer(options.label),\n adornment: createDefaultAdornmentRenderer(options.adornment),\n renderLayout: createDefaultLayoutRenderer(options.layout),\n visibility: createDefaultVisibilityRenderer(),\n };\n}\n\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 },\n action: {\n className: \"bg-primary-500 rounded-lg p-3 text-white\",\n },\n layout: {\n className: \"flex flex-col\",\n errorClass: \"text-sm text-danger-500\",\n },\n data: {\n displayOnlyClass: \"flex flex-row items-center gap-2\",\n checkOptions: {\n className: \"flex items-center gap-4\",\n entryClass: \"flex gap-1 items-center\",\n },\n selectOptions: { emptyText: \"<select>\" },\n multilineClass: \"border p-2 outline-0 whitespace-pre\",\n },\n adornment: {\n accordion: {\n className: \"flex items-center gap-2 my-2\",\n titleClass: \"cursor-pointer\",\n iconOpenClass: \"fa fa-chevron-up\",\n iconClosedClass: \"fa fa-chevron-down\",\n },\n },\n} satisfies DefaultRendererOptions;\n"],"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","isChecked","setChecked","c","entryAdornment","fieldOptionAdornment","renderType","DataRenderType","Radio","createCheckListRenderer","Array","isArray","includes","checked","setValue","setIncluded","collection","CheckList","labelClass","checkClass","entryClass","uniqueId","RenderArrayElements","array","useComputed","Fragment","readOnly","htmlFor","elem","included","createCheckboxRenderer","renderer","children","Fcheckbox","renderLabel","Checkbox","DefaultLayout","errorClass","renderError","layout","controlEnd","controlStart","errorControl","touched","error","DefaultDisplayOnly","schemaInterface","isEmptyValue","DefaultAccordion","accordion","contentStyle","contentClassName","designMode","iconOpenClass","iconClosedClass","renderTitle","t","renderToggler","renderers","titleClass","useCss","dataContext","_dataContext$dataNode","dataControl","dataNode","parentNode","open","defaultExpanded","meta","accordionState","isOpen","fullContentStyle","title","renderLabelText","toggler","onClick","getAccordionState","createDefaultVisibilityRenderer","createVisibilityRenderer","DefaultVisibility","visibility","divRef","useEffect","ex","visible","showing","ref","createJsonataRenderer","JsonataRenderer","renderOptions","Jsonata","sdn","elementIndex","bindings","formData","dataPath","getJsonPath","rendered","useJsonataExpression","expression","getRootDataNode","createNullToggleRenderer","_control$meta","_control$meta$_nullCo","nullControl","newControl","current","newLayout","renderData","NullWrapper","defaultValue","definition","r","_nullControl$meta$non","createDefaultArrayDataRenderer","defaultActions","DataArrayRenderer","dataProps","_definition$children","renderChild","useChildVisibility","addText","noAdd","noRemove","removeText","mergeObjects","isArrayRenderer","childOptions","renderAsElement","isCompoundField","childDefinition","ControlDefinitionType","Data","Standard","hideTitle","Group","groupOptions","GroupRenderType","visibilities","deps","makeHookDepString","Entry","useTrackedComponent","RenderEntry","arrayProps","createArrayActions","renderElement","wrap","index","renderChildElement","getLengthRestrictions","renderArray","elementNode","_control$elements$i$u","_control$elements","elements","parentDataNode","getChildElement","childVis","hook","def","runHook","lookupDataNode","some","createDefaultArrayRenderer","renderAction","DefaultArrayRenderer","removableClass","childClass","removableChildClass","removeActionClass","addActionClass","arrayControl","addAction","removeAction","applyArrayLengthRestrictions","RenderElements","_","MultilineTextfield","codeRef","useRef","textContent","contentEditable","onInput","currentTarget","createButtonActionRenderer","actionId","createActionRenderer","actionText","actionData","_options$renderConten","renderContent","createDefaultGroupRenderer","gridStyles","defaultGridStyles","defaultGridColumns","gridClassName","standardClassName","flexClassName","defaultFlexGap","columns","gridTemplateColumns","childDefinitions","gcn","isGridRenderer","isFlexRenderer","gap","flexDirection","direction","flexStyles","cp","DefaultBoolOptions","createDefaultDataRenderer","_options$checkOptions","_options$radioOptions","_options$checkListOpt","jsonataRenderer","jsonataClass","nullToggler","multilineRenderer","multilineClass","checkboxRenderer","checkOptions","checkboxOptions","selectRenderer","selectOptions","radioRenderer","radioOptions","checkListRenderer","checkListOptions","inputClass","booleanOptions","optionRenderer","displayOnlyClass","arrayRenderer","arrayOptions","fieldType","Compound","isDataGroupRenderer","renderGroup","Any","isDisplayOnlyRenderer","hasOptions","NullToggle","Dropdown","isTextfieldRenderer","multiline","placeholder","createDefaultAdornmentRenderer","adornment","useExpr","apply","rl","isSetFieldAdornment","dynamicHooks","useDynamicHooks","SetFieldWrapper","useCallback","setFieldWrapper","wrapLayout","parentContext","otherField","schemaDataForFieldRef","always","defaultOnly","_adornment$placement","isIconAdornment","appendMarkupAt","placement","AdornmentPlacement","ControlStart","isAccordionAdornment","priority","createDefaultLayoutRenderer","createLayoutRenderer","renderLayoutParts","scrollElement","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/DefaultGroupRenderer.tsx","../src/components/DefaultVisibility.tsx","../src/components/JsonataRenderer.tsx","../src/components/NullToggle.tsx","../src/components/DefaultArrayRenderer.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 Custom display placeholder: {(data as CustomDisplay).customId}\n </div>\n );\n default:\n return <h1>Unknown display type: {data.type}</h1>;\n }\n}\n","import 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 createDataRenderer,\n DataRenderType,\n FieldOption,\n fieldOptionAdornment,\n rendererClass\n} from \"@react-typed-forms/schemas\";\n\nexport interface CheckRendererOptions {\n className?: string;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n}\nexport function createRadioRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n {...options}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => control.value == o.value}\n setChecked={(c, o) => (c.value = o.value)}\n control={p.control}\n type=\"radio\"\n 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 {...options}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => {\n const v = control.value;\n return Array.isArray(v) ? v.includes(o.value) : false;\n }}\n setChecked={(c, o, checked) => {\n c.setValue((x) => setIncluded(x ?? [], o.value, checked));\n }}\n control={p.control}\n type=\"checkbox\"\n 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 entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n readonly?: boolean;\n type: \"checkbox\" | \"radio\";\n isChecked: (c: Control<any>, o: FieldOption) => boolean;\n setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;\n entryAdornment?: (c: FieldOption, i: number, selected: boolean) => ReactNode;\n}\n\nexport function CheckButtons({\n control,\n options,\n labelClass,\n checkClass,\n readonly,\n entryClass,\n className,\n id,\n type,\n isChecked,\n setChecked,\n entryAdornment,\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 return (\n <>\n <div key={i} className={entryClass}>\n <input\n id={name + \"_\" + i}\n className={checkClass}\n type={type}\n name={name}\n readOnly={readonly}\n disabled={disabled}\n checked={checked}\n onChange={(x) => {\n !readonly && setChecked(control, o, x.target.checked);\n }}\n />\n <label className={labelClass} htmlFor={name + \"_\" + i}>\n {o.name}\n </label>\n </div>\n {entryAdornment?.(o, i, checked)}\n </>\n );\n }}\n </RenderArrayElements>\n </div>\n );\n}\n\nexport function setIncluded<A>(array: A[], elem: A, included: boolean): A[] {\n const already = array.includes(elem);\n if (included === already) {\n return array;\n }\n if (included) {\n return [...array, elem];\n }\n return array.filter((e) => e !== elem);\n}\n\nexport function createCheckboxRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (props, renderer) => (p) => ({\n ...p,\n label: undefined,\n children: (\n <div className={rendererClass(props.className, options.entryClass)}>\n <Fcheckbox\n id={props.id}\n control={props.control}\n style={props.style}\n className={options.checkClass}\n />\n {p.label && renderer.renderLabel(p.label, undefined, undefined)}\n </div>\n ),\n }),\n { renderType: DataRenderType.Checkbox },\n );\n}\n","import React, { 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 ControlLayoutProps,\n FlexRenderer,\n GridRenderer,\n GroupRendererProps,\n GroupRendererRegistration,\n isFlexRenderer,\n isGridRenderer,\n isSelectChildRenderer,\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\";\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}\n\nexport function createDefaultGroupRenderer(\n options?: DefaultGroupRendererOptions,\n): GroupRendererRegistration {\n const {\n className,\n gridStyles = defaultGridStyles,\n defaultGridColumns = 2,\n gridClassName,\n standardClassName,\n flexClassName,\n defaultFlexGap,\n } = options ?? {};\n\n function defaultGridStyles({\n columns = defaultGridColumns,\n }: GridRenderer): StyleProps {\n return {\n className: gridClassName,\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n },\n };\n }\n\n function flexStyles(options: FlexRenderer): StyleProps {\n return {\n className: flexClassName,\n style: {\n display: \"flex\",\n gap: options.gap ? options.gap : defaultFlexGap,\n flexDirection: options.direction\n ? (options.direction as any)\n : undefined,\n },\n };\n }\n\n function render(props: GroupRendererProps) {\n const { renderChild, renderOptions, childDefinitions } = props;\n 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\n return (\n <div\n className={rendererClass(props.className, clsx(className, gcn))}\n style={style}\n >\n {childDefinitions?.map((c, i) => renderChild(i, c))}\n </div>\n );\n }\n\n return { type: \"group\", render };\n}\n\ntype SelectChildProps = Pick<\n GroupRendererProps,\n \"useEvalExpression\" | \"dataContext\" | \"childDefinitions\" | \"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 return (\n <div>\n {typeof childIndex === \"number\" &&\n childIndex < p.childDefinitions.length &&\n childIndex >= 0 &&\n p.renderChild(childIndex, p.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 { Control, newControl, useControlEffect } from \"@react-typed-forms/core\";\nimport React, { ReactNode } from \"react\";\nimport {\n createDataRenderer,\n DataRenderType,\n FieldType,\n} from \"@react-typed-forms/schemas\";\n\nexport function createNullToggleRenderer() {\n return createDataRenderer(\n ({ control, field, renderOptions, ...props }, renderers) => {\n const nullControl = (control.meta[\"nullControl\"] ??= newControl(\n control.current.value != null,\n ));\n return (layout) => {\n const newLayout = renderers.renderData({\n ...props,\n control: nullControl,\n field: { ...field, type: FieldType.Bool },\n renderOptions: { type: DataRenderType.Checkbox },\n })(layout);\n return {\n ...newLayout,\n children: (\n <NullWrapper\n control={control}\n nullControl={nullControl}\n children={newLayout.children}\n readonly={props.readonly}\n defaultValue={props.definition.defaultValue}\n />\n ),\n };\n };\n },\n );\n}\n\nfunction NullWrapper({\n children,\n nullControl,\n control,\n defaultValue,\n readonly,\n}: {\n control: Control<any>;\n nullControl: Control<boolean>;\n children: ReactNode;\n readonly: boolean;\n defaultValue: any;\n}) {\n useControlEffect(\n () => readonly,\n (r) => (nullControl.disabled = r),\n true,\n );\n useControlEffect(\n () => nullControl.value,\n (e) => {\n if (e) {\n control.value = nullControl.meta[\"nonNullValue\"] ?? defaultValue;\n } else {\n nullControl.meta[\"nonNullValue\"] = control.value;\n control.value = null;\n }\n },\n );\n return children;\n}\n","import 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 FormRenderer,\n getLengthRestrictions,\n GroupedControlsDefinition,\n GroupRenderType,\n isArrayRenderer,\n isCompoundField,\n lookupDataNode,\n makeHookDepString,\n mergeObjects,\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 } = 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: ControlDefinition = !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\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, 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, { 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, {\n CSSProperties,\n Fragment,\n ReactElement,\n ReactNode,\n useCallback,\n} from \"react\";\nimport clsx from \"clsx\";\nimport {\n createSelectRenderer,\n SelectRendererOptions,\n} from \"./components/SelectDataRenderer\";\nimport { DefaultDisplayOnly } from \"./components/DefaultDisplayOnly\";\nimport { Control, useControlEffect } from \"@react-typed-forms/core\";\nimport { ControlInput, createInputConversion } from \"./components/ControlInput\";\nimport {\n createDefaultArrayDataRenderer,\n createDefaultArrayRenderer,\n DefaultArrayRendererOptions,\n} from \"./components/DefaultArrayRenderer\";\nimport {\n CheckRendererOptions,\n createCheckboxRenderer,\n createCheckListRenderer,\n createRadioRenderer,\n} from \"./components/CheckRenderer\";\nimport { DefaultAccordion } from \"./components/DefaultAccordion\";\nimport { createNullToggleRenderer } from \"./components/NullToggle\";\nimport { createMultilineFieldRenderer } from \"./components/MultilineTextfield\";\nimport { createJsonataRenderer } from \"./components/JsonataRenderer\";\nimport {\n ActionRendererProps,\n ActionRendererRegistration,\n AdornmentPlacement,\n AdornmentRendererRegistration,\n appendMarkupAt,\n ArrayActionOptions,\n ControlDataContext,\n ControlLayoutProps,\n createActionRenderer,\n createDataRenderer,\n DataRendererRegistration,\n DataRenderType,\n DefaultRenderers,\n FieldOption,\n FieldType,\n FlexRenderer,\n GridRenderer,\n GroupRendererProps,\n GroupRendererRegistration,\n hasOptions,\n isAccordionAdornment,\n isDataGroupRenderer,\n isDisplayOnlyRenderer,\n isFlexRenderer,\n isGridRenderer,\n isIconAdornment,\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\";\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 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 return createDataRenderer((props, renderers) => {\n const { field } = props;\n const fieldType = field.type;\n const renderOptions = props.renderOptions;\n let renderType = renderOptions.type;\n if (\n field.collection &&\n props.elementIndex == null &&\n (renderType == DataRenderType.Standard ||\n renderType == DataRenderType.Array)\n ) {\n return arrayRenderer.render(props, renderers);\n }\n if (fieldType === FieldType.Compound) {\n const groupOptions = (isDataGroupRenderer(renderOptions)\n ? renderOptions.groupOptions\n : undefined) ?? { type: \"Standard\", hideTitle: true };\n return renderers.renderGroup({ ...props, renderOptions: groupOptions });\n }\n if (fieldType == FieldType.Any) return <>No control for Any</>;\n if (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 }\n if (isTextfieldRenderer(renderOptions) && renderOptions.multiline)\n return multilineRenderer.render(props, renderers);\n const placeholder = isTextfieldRenderer(renderOptions)\n ? renderOptions.placeholder\n : undefined;\n return (\n <ControlInput\n className={rendererClass(props.className, inputClass)}\n style={props.style}\n id={props.id}\n readOnly={props.readonly}\n control={props.control}\n placeholder={placeholder ?? undefined}\n convert={createInputConversion(props.field.type)}\n />\n );\n });\n}\n\nexport interface DefaultAccordionRendererOptions {\n className?: string;\n titleClass?: string;\n togglerClass?: string;\n iconOpenClass?: string;\n iconClosedClass?: string;\n renderTitle?: (\n title: string | undefined,\n current: Control<boolean>,\n ) => ReactNode;\n renderToggler?: (current: Control<boolean>, title: ReactNode) => ReactNode;\n useCss?: boolean;\n}\n\nexport interface DefaultAdornmentRendererOptions {\n accordion?: DefaultAccordionRendererOptions;\n}\n\nexport function createDefaultAdornmentRenderer(\n options: DefaultAdornmentRendererOptions = {},\n): AdornmentRendererRegistration {\n return {\n type: \"adornment\",\n render: ({ adornment, designMode, dataContext, useExpr }, renderers) => ({\n apply: (rl) => {\n if (isSetFieldAdornment(adornment) && useExpr) {\n const hook = useExpr(adornment.expression, (x) => x);\n const dynamicHooks = useDynamicHooks({ value: hook });\n const SetFieldWrapper = useCallback(setFieldWrapper, [dynamicHooks]);\n return wrapLayout((x) => (\n <SetFieldWrapper\n children={x}\n parentContext={dataContext}\n adornment={adornment}\n />\n ))(rl);\n\n function setFieldWrapper({\n children,\n adornment,\n parentContext,\n }: {\n children: ReactNode;\n adornment: SetFieldAdornment;\n parentContext: ControlDataContext;\n }) {\n const { value } = dynamicHooks(parentContext);\n const fieldNode = schemaDataForFieldRef(\n adornment.field,\n parentContext.parentNode,\n );\n const otherField = fieldNode.control;\n const always = !adornment.defaultOnly;\n useControlEffect(\n () => [value?.value, otherField?.value == null],\n ([v]) => {\n otherField?.setValue((x) => (always || x == null ? v : x));\n },\n true,\n );\n return children;\n }\n }\n if (isIconAdornment(adornment)) {\n return appendMarkupAt(\n adornment.placement ?? AdornmentPlacement.ControlStart,\n <i className={adornment.iconClass} />,\n )(rl);\n }\n if (isAccordionAdornment(adornment)) {\n return wrapLayout((x) => (\n <DefaultAccordion\n renderers={renderers}\n children={x}\n accordion={adornment}\n contentStyle={rl.style}\n contentClassName={rl.className}\n designMode={designMode}\n dataContext={dataContext}\n {...options.accordion}\n />\n ))(rl);\n }\n },\n priority: 0,\n adornment,\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 },\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 },\n adornment: {\n accordion: {\n className: \"flex items-center gap-2 my-2\",\n titleClass: \"cursor-pointer\",\n iconOpenClass: \"fa fa-chevron-up\",\n iconClosedClass: \"fa fa-chevron-down\",\n },\n },\n} satisfies DefaultRendererOptions;\n"],"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","isChecked","setChecked","c","entryAdornment","fieldOptionAdornment","renderType","DataRenderType","Radio","createCheckListRenderer","Array","isArray","includes","checked","setValue","setIncluded","collection","CheckList","labelClass","checkClass","entryClass","uniqueId","RenderArrayElements","array","useComputed","Fragment","readOnly","htmlFor","elem","included","createCheckboxRenderer","renderer","children","Fcheckbox","renderLabel","Checkbox","createDefaultLayoutRenderer","createLayoutRenderer","renderers","layout","renderLayoutParts","wrapLayout","DefaultLayout","divRef","errorControl","meta","scrollElement","errorClass","renderError","controlEnd","controlStart","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","onClick","getAccordionState","createDefaultGroupRenderer","gridStyles","defaultGridStyles","defaultGridColumns","gridClassName","standardClassName","flexClassName","defaultFlexGap","columns","gridTemplateColumns","renderChild","renderOptions","childDefinitions","isSelectChildRenderer","SelectChildGroupRenderer","gcn","isGridRenderer","isFlexRenderer","gap","flexDirection","direction","flexStyles","useEvalExpression","dynHook","childIndexExpression","Render","useTrackedComponent","ctrl","runHook","childIndex","deps","createDefaultVisibilityRenderer","createVisibilityRenderer","DefaultVisibility","visibility","useEffect","ex","visible","showing","ref","createJsonataRenderer","JsonataRenderer","Jsonata","sdn","elementIndex","bindings","formData","dataPath","getJsonPath","rendered","useJsonataExpression","expression","getRootDataNode","createNullToggleRenderer","_control$meta","_control$meta$_nullCo","nullControl","newControl","current","newLayout","renderData","NullWrapper","defaultValue","definition","r","_nullControl$meta$non","createDefaultArrayDataRenderer","defaultActions","DataArrayRenderer","dataProps","_definition$children","useChildVisibility","addText","noAdd","noRemove","removeText","mergeObjects","isArrayRenderer","childOptions","renderAsElement","isCompoundField","childDefinition","ControlDefinitionType","Data","Standard","hideTitle","Group","groupOptions","GroupRenderType","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","_","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","nullToggler","multilineRenderer","multilineClass","checkboxRenderer","checkOptions","checkboxOptions","selectRenderer","selectOptions","radioRenderer","radioOptions","checkListRenderer","checkListOptions","inputClass","booleanOptions","optionRenderer","displayOnlyClass","defaultEmptyText","arrayRenderer","arrayOptions","fieldType","Compound","isDataGroupRenderer","renderGroup","Any","displayOnly","isDisplayOnlyRenderer","hasOptions","NullToggle","Dropdown","isTextfieldRenderer","multiline","placeholder","createDefaultAdornmentRenderer","adornment","useExpr","apply","rl","isSetFieldAdornment","dynamicHooks","useDynamicHooks","SetFieldWrapper","useCallback","setFieldWrapper","parentContext","otherField","schemaDataForFieldRef","always","defaultOnly","_adornment$placement","isIconAdornment","appendMarkupAt","placement","AdornmentPlacement","ControlStart","isAccordionAdornment","priority","createDefaultLabelRenderer","groupLabelClass","controlLabelClass","requiredElement","labelContainer","labelStart","labelEnd","LabelType","forId","Control","createDefaultRenderers","action","renderLayout","createClassStyledRenderers","defaultTailwindTheme"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-typed-forms/schemas-html",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "lib/index.cjs",
@@ -31,13 +31,17 @@
31
31
  "material-ui"
32
32
  ],
33
33
  "dependencies": {
34
- "@react-typed-forms/core": "^3.6.0",
35
34
  "clsx": "^1 || ^2",
36
- "jsonata": "^2.0.4",
35
+ "jsonata": "^2.0.4"
36
+ },
37
+ "peerDependencies": {
38
+ "@react-typed-forms/core": "^3.6.1",
37
39
  "react": "^18.2.0",
38
- "@react-typed-forms/schemas": "13.1.4"
40
+ "@react-typed-forms/schemas": "13.2.0"
39
41
  },
40
42
  "devDependencies": {
43
+ "@react-typed-forms/core": "^3.6.1",
44
+ "react": "^18.2.0",
41
45
  "@react-typed-forms/transform": "^0.2.0",
42
46
  "@types/uuid": "^10.0.0",
43
47
  "@types/react": "^18.2.28",
@@ -46,7 +50,8 @@
46
50
  "nswag": "^13.18.2",
47
51
  "prettier": "^3.0.3",
48
52
  "rimraf": "^3.0.2",
49
- "typescript": "^5.6.2"
53
+ "typescript": "^5.6.3",
54
+ "@react-typed-forms/schemas": "13.2.0"
50
55
  },
51
56
  "gitHead": "698e16cd3ab31b7dd0528fc76536f4d3205ce8c6",
52
57
  "scripts": {