@react-typed-forms/schemas-html 2.0.0 → 2.1.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.
@@ -0,0 +1,10 @@
1
+ import { ControlDefinitionExtension, RenderOptions, SchemaNode } from "@react-typed-forms/schemas";
2
+ export interface ValueForFieldRenderOptions extends RenderOptions {
3
+ type: "ValueForField";
4
+ fieldRef?: string | null;
5
+ }
6
+ export declare const ValueForFieldExtension: ControlDefinitionExtension;
7
+ export interface ValueForFieldOptions {
8
+ schema: SchemaNode;
9
+ }
10
+ export declare function createValueForFieldRenderer(options: ValueForFieldOptions): import("@react-typed-forms/schemas").DataRendererRegistration;
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 s(){return s=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},s.apply(null,arguments)}function u(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 i=["data","display","className","style"];function d(e){return void 0===e&&(e={}),{render:function(t){/*#__PURE__*/return l.default.createElement(c,s({},e,t))},type:"display"}}function c(e){var t=n.useComponentTracking();try{var a=e.data,s=e.display,d=e.className,c=e.style,f=u(e,i);switch(a.type){case r.DisplayDataType.Icon:/*#__PURE__*/return l.default.createElement("i",{style:c,className:o.default(r.getOverrideClass(d),s?s.value:a.iconClass)});case r.DisplayDataType.Text:/*#__PURE__*/return l.default.createElement("div",{style:c,className:r.rendererClass(d,f.textClassName)},s?r.coerceToString(s.value):a.text);case r.DisplayDataType.Html:/*#__PURE__*/return l.default.createElement("div",{style:c,className:r.rendererClass(d,f.htmlClassName),dangerouslySetInnerHTML:{__html:s?r.coerceToString(s.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,i=u(e,f),d=n.formControlProps(a),c=d.value,p=u(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",s({},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)}},i))}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,i=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=u(t,v),g=o.value,h=o.disabled,b=e.useState(!f||null==g)[0],T=e.useMemo(function(){return Object.fromEntries(i.map(function(e){return[c(e.value),e.value]}))},[i]),E=e.useMemo(function(){return new Set(i.filter(function(e){return e.group}).map(function(e){return e.group}))},[i]);/*#__PURE__*/return l.default.createElement("select",s({},N,{className:d,onChange:function(e){return o.value=T[e.target.value]},value:c(g),disabled:h||x}),b&&/*#__PURE__*/l.default.createElement("option",{value:""},f?C:p),[].concat(E.keys()).map(function(e){/*#__PURE__*/return l.default.createElement("optgroup",{key:e,label:e},i.filter(function(t){return t.group===e}).map(a))}),i.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(b,s({classes:e,controlClasses:t.renderOptions},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(b,s({classes:e,controlClasses:t.renderOptions},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 T(null!=e?e:[],t.value,r)})},control:t.control,type:"checkbox",entryAdornment:r.fieldOptionAdornment(t)}))},{collection:!0,renderType:r.DataRenderType.CheckList})}function b(e){var t=n.useComponentTracking();try{var a=e.control,s=e.options,u=e.readonly,i=e.type,d=e.isChecked,c=e.setChecked,f=e.entryAdornment,m=e.classes,p=e.controlClasses,y=void 0===p?{}:p,v=a.disabled,C="r"+a.uniqueId;/*#__PURE__*/return l.default.createElement("div",{className:e.className,id:e.id},/*#__PURE__*/l.default.createElement(n.RenderArrayElements,{array:null==s?void 0:s.filter(function(e){return null!=e.value})},function(e,t){var s=n.useComputed(function(){return d(a,e)}).value,p=s?r.rendererClass(null==y?void 0:y.selectedClass,m.selectedClass):r.rendererClass(null==y?void 0:y.notSelectedClass,m.notSelectedClass);/*#__PURE__*/return l.default.createElement("div",{className:o.default(r.rendererClass(null==y?void 0:y.entryWrapperClass,m.entryWrapperClass),p),onClick:function(){return!u&&c(a,e,!s)}},/*#__PURE__*/l.default.createElement("div",{className:m.entryClass},/*#__PURE__*/l.default.createElement("input",{id:C+"_"+t,className:m.checkClass,type:i,name:C,readOnly:u,disabled:v,checked:s,onChange:function(t){!u&&c(a,e,t.target.checked)}}),/*#__PURE__*/l.default.createElement("label",{className:m.labelClass,htmlFor:C+"_"+t},e.name)),null==f?void 0:f(e,t,s))}))}finally{t()}}function T(e,t,r){return r===e.includes(t)?e:r?[].concat(e,[t]):e.filter(function(e){return e!==t})}function E(e){return void 0===e&&(e={}),r.createDataRenderer(function(t,a){return function(o){return s({},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.as(),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,s({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,s=o.controlEnd,u=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)(u&&u.touched?u.error:void 0),s)}finally{t()}}function k(e){var t=n.useComponentTracking();try{var r,a=e.className,o=e.emptyText,s=e.schemaInterface,u=e.field,i=e.style,d=e.control.value,c=null!=(r=s.isEmptyValue(u,d)?o:s.textValue(u,d))?r:"";/*#__PURE__*/return l.default.createElement("div",{style:i,className:a},c)}finally{t()}}function O(e){var t=n.useComponentTracking();try{var r,a=e.children,u=e.accordion,i=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,b=(null!=(r=h.dataNode)?r:h.parentNode).control,T=n.useControl(!!u.defaultExpanded);b&&!b.meta.accordionState&&(b.meta.accordionState=T);var E=T.value,D=E||c?i:s({},i,{display:"none"}),R=x.renderLabelText(v(u.title,T)),k=C?C(T,R):/*#__PURE__*/l.default.createElement("button",{className:p,onClick:function(){return T.setValue(function(e){return!e})}},/*#__PURE__*/l.default.createElement("label",{className:N},R),/*#__PURE__*/l.default.createElement("i",{className:o.default(E?f:m)}));/*#__PURE__*/return l.default.createElement(l.default.Fragment,null,k,(g||E||c)&&/*#__PURE__*/l.default.createElement("div",{style:D,className:d},a))}finally{t()}}function A(e){var t=n.useComponentTracking();try{var a=function(e,t){/*#__PURE__*/return l.default.createElement("div",{key:t,className:r.rendererClass(u,i.className)},/*#__PURE__*/l.default.createElement("ul",{className:r.rendererClass(null,y)},e.map(function(e,t){/*#__PURE__*/return l.default.createElement("li",{key:t,className:r.rendererClass(null,m),onClick:function(){return f.value=t}},/*#__PURE__*/l.default.createElement("span",{className:r.rendererClass(null,o.default(p,t==N?C:v))},e.definition.title?e.definition.title:"<untitled>"))})),/*#__PURE__*/l.default.createElement("div",{className:r.rendererClass(null,x)},d(N,e[N])))},s=e.formNode,u=e.className,i=e.options,d=e.renderChild,c=e.designMode,f=n.useControl(0),m=i.tabClass,p=i.labelClass,y=i.tabListClass,v=i.inactiveClass,C=i.activeClass,x=i.contentClass,N=f.value;return c?/*#__PURE__*/l.default.createElement(l.default.Fragment,null,s.getChildNodes().map(function(e,t){return a([e],t)})):a(s.getChildNodes(),0)}finally{t()}}function S(e){var t=function(e){return void 0===e&&(e={}),r.createGroupRenderer(function(t,r){/*#__PURE__*/return l.default.createElement(A,s({},t,{options:e}))},{renderType:r.GroupRenderType.Tabs})}(null==e?void 0:e.tabs),n=null!=e?e:{},a=n.className,u=n.gridStyles,i=void 0===u?function(e){var t=e.columns;return{className:f,style:{display:"grid",gridTemplateColumns:"repeat("+(void 0===t?c:t)+", 1fr)"}}}:u,d=n.defaultGridColumns,c=void 0===d?2:d,f=n.gridClassName,m=n.standardClassName,p=n.flexClassName,y=n.defaultFlexGap;return{type:"group",render:function(e,n){var u=e.renderChild,d=e.renderOptions,c=e.formNode;if(r.isTabsRenderer(d))return t.render(e,n);if(r.isSelectChildRenderer(d)&&!e.designMode)/*#__PURE__*/return l.default.createElement(F,s({},e,{renderOptions:d}));var f=r.isGridRenderer(d)?i(d):r.isFlexRenderer(d)?function(e){return{className:p,style:{display:"flex",gap:e.gap?e.gap:y,flexDirection:e.direction?e.direction:void 0}}}(d):{className:m},v=f.style;/*#__PURE__*/return l.default.createElement("div",{className:r.rendererClass(e.className,o.default(a,f.className)),style:v},c.getChildNodes().map(function(e,t){return u(t,e)}))}}}function F(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,n=e.formNode.getChildNodes();/*#__PURE__*/return l.default.createElement("div",null,"number"==typeof r&&r<n.length&&r>=0&&e.renderChild(r,n[r]))},[a.deps]);/*#__PURE__*/return l.default.createElement(o,e)}finally{t()}}function L(){return r.createVisibilityRenderer(function(e){/*#__PURE__*/return l.default.createElement(w,e)})}function w(t){var r=n.useComponentTracking();try{var a=t.visibility,s=t.children,u=t.className,i=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(u),style:i,ref:d},s):/*#__PURE__*/l.default.createElement(l.default.Fragment,null)}finally{r()}}function I(e){return r.createDataRenderer(function(t){/*#__PURE__*/return l.default.createElement(q,{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 q(e){var t=n.useComponentTracking();try{var a=e.control,o=e.renderOptions,s=e.readonly,u=e.className,i=e.dataContext,d=e.dataNode,c=null!=d.elementIndex?d:i.parentNode,f=n.useComputed(function(){return{value:a.value,readonly:s,disabled:a.disabled,formData:i.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:u,dangerouslySetInnerHTML:{__html:m.value}})}finally{t()}}var V=["control","field","renderOptions"];function M(){return r.createDataRenderer(function(e,t){var a,o,i=e.control,d=e.field,c=u(e,V),f=null!=(o=(a=i.meta).nullControl)?o:a.nullControl=n.newControl(null!=i.current.value);return function(e){var n=t.renderData(s({},c,{control:f,field:s({},d,{type:r.FieldType.Bool}),renderOptions:{type:r.DataRenderType.Checkbox}}))(e);return s({},n,{children:/*#__PURE__*/l.default.createElement(G,{control:i,nullControl:f,children:n.children,readonly:c.readonly,defaultValue:c.definition.defaultValue})})}})}function G(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(j,{dataProps:t,renderers:r,defaultActions:e})},{renderType:r.DataRenderType.Array,collection:!0})}function j(e){var t,a=e.dataProps,o=e.renderers,u=e.defaultActions,i=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=a.formNode,b=r.mergeObjects(r.isArrayRenderer(i)?i:{},u),T=b.addText,E=b.noAdd,D=b.noRemove,R=b.removeText,k=r.isArrayRenderer(i)?i.childOptions:void 0,O=!r.isCompoundField(c),A=r.nodeForControl(O?{type:r.ControlDefinitionType.Data,field:v.field,children:v.children,renderOptions:null!=k?k:{type:r.DataRenderType.Standard},hideTitle:!0}:{type:r.ControlDefinitionType.Group,children:v.children,groupOptions:{type:r.GroupRenderType.Standard,hideTitle:!0}},h.tree),S=(null!=(t=v.children)?t:[]).map(function(e){return[N(e,void 0,!0),e]}),F=r.makeHookDepString(S,function(e){return e[0].deps}),L=n.useTrackedComponent(H,[F]),w=s({},r.createArrayActions(d.as(),c,{addText:T,removeText:R,noAdd:E,noRemove:D,readonly:f,disabled:d.disabled,designMode:m}),{required:p,renderElement:function(e,t){/*#__PURE__*/return l.default.createElement(L,{index:e,renderChildElement:I,dataContext:g,visibilities:S,wrap:t})},className:C||void 0,style:x},r.getLengthRestrictions(v));return o.renderArray(w);function I(e,t){var r,n;return y(null!=(r=null==(n=d.elements)?void 0:n[e].uniqueId)?r:e,A,O?{elementIndex:e}:{parentDataNode:t})}}function H(e){var t=e.index,n=e.renderChildElement,a=e.visibilities,l=e.wrap,o=e.dataContext,u=o.dataNode.getChildElement(t),i=a.map(function(e){var t=e[0];return t.runHook(s({},o,{parentNode:u,dataNode:r.lookupDataNode(e[1],u)}),t.state).value});if(0==i.length||i.some(function(e){return!0===e}))return l(n(t,u))}function J(e){return{render:function(t,r){/*#__PURE__*/return l.default.createElement(_,s({},t,e,{renderAction:r.renderAction}))},type:"array"}}function _(e){var t=n.useComponentTracking();try{var a=e.renderElement,s=e.className,u=e.removableClass,i=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(s,x&&u)},/*#__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(i,d)},e),/*#__PURE__*/l.default.createElement("div",{className:c},p(x(t)))):/*#__PURE__*/l.default.createElement("div",{className:i},e)})})),C&&/*#__PURE__*/l.default.createElement("div",{className:f},p(C)))}finally{t()}}function B(t){var r=n.useComponentTracking();try{var a=t.control,o=t.className,s=e.useRef(null);return n.useControlEffect(function(){return a.value},function(e){var t=s.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:s})}finally{r()}}function W(e,t){return void 0===t&&(t={}),r.createActionRenderer(e,function(e){var n,a=e.onClick,o=e.actionText,s=e.style,u=e.actionId,i=e.actionData,d=e.disabled;/*#__PURE__*/return l.default.createElement("button",{className:r.rendererClass(e.className,t.className),disabled:d,style:s,onClick:a},null!=(n=null==t.renderContent?void 0:t.renderContent(o,u,i))?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,u=I(e.jsonataClass),i=M(),d=(o=e.multilineClass,r.createDataRenderer(function(e){/*#__PURE__*/return l.default.createElement(B,s({},e,{className:r.rendererClass(e.className,o)}))})),c=E(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=s({optionRenderer:f,booleanOptions:U},e),N=x.inputClass,b=x.booleanOptions,T=x.optionRenderer,D=x.displayOnlyClass,R=x.defaultEmptyText,O=P(e.arrayOptions);return r.createDataRenderer(function(e,t){var n,a=e.field,o=a.type,C=e.renderOptions,x=C.type;if(a.collection&&null==e.elementIndex&&(x==r.DataRenderType.Standard||x==r.DataRenderType.Array))return O.render(e,t);if(o===r.FieldType.Compound){var g,h=null!=(g=r.isDataGroupRenderer(C)?C.groupOptions:void 0)?g:{type:"Standard",hideTitle:!0};return t.renderGroup(s({},e,{renderOptions:h}))}if(o==r.FieldType.Any)/*#__PURE__*/return l.default.createElement(l.default.Fragment,null,"Can't render field: ",null!=(n=a.displayName)?n:a.field);if(e.displayOnly||r.isDisplayOnlyRenderer(C))return function(t){return s({},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(C)&&C.emptyText?C.emptyText:R})})};if(null!=b&&o===r.FieldType.Bool&&null==e.options)return t.renderData(s({},e,{options:b}));if(x===r.DataRenderType.Standard&&r.hasOptions(e))return T.render(e,t);switch(x){case r.DataRenderType.NullToggle:return i.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 u.render(e,t)}if(r.isTextfieldRenderer(C)&&C.multiline)return d.render(e,t);var E=r.isTextfieldRenderer(C)?C.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!=E?E:void 0,convert:y(e.field.type)})})}function z(t){return void 0===t&&(t={}),{type:"adornment",render:function(a,o){var u=a.adornment,i=a.designMode,d=a.dataContext,c=a.useExpr;return{apply:function(a){if(r.isSetFieldAdornment(u)&&c){var f=c(u.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,s=r.schemaDataForFieldRef(a.field,l.parentNode).control,u=!a.defaultOnly;return n.useControlEffect(function(){return[null==o?void 0:o.value,null==(null==s?void 0:s.value)]},function(e){var t=e[0];null==s||s.setValue(function(e){return u||null==e?t:e})},!0),t},[m]);return r.wrapLayout(function(e){/*#__PURE__*/return l.default.createElement(p,{children:e,parentContext:d,adornment:u})})(a)}var y;return r.isIconAdornment(u)?r.appendMarkupAt(null!=(y=u.placement)?y:r.AdornmentPlacement.ControlStart,/*#__PURE__*/l.default.createElement("i",{className:u.iconClass}))(a):r.isAccordionAdornment(u)?r.wrapLayout(function(e){/*#__PURE__*/return l.default.createElement(O,s({renderers:o,children:e,accordion:u,contentStyle:a.style,contentClassName:a.className,designMode:i,dataContext:d},t.accordion))})(a):void 0},priority:0,adornment:u}}}}function K(e){var t=s({requiredElement:/*#__PURE__*/l.default.createElement("span",null," *"),labelContainer:function(e){return e}},e),n=t.className,a=t.groupLabelClass,u=t.controlLabelClass,i=t.requiredElement,d=t.labelContainer;return{render:function(e,t,s,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&&u))},t,c.renderLabelText(e.label),e.required&&i),s))},type:"label"}}function Q(e){return void 0===e&&(e={}),{data:Y(e.data),display:d(e.display),action:W(void 0,e.action),array:J(e.array),group:S(e.group),label:K(e.label),adornment:z(e.adornment),renderLayout:D(e.layout),visibility:L()}}var X={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",tabs:{className:"",tabListClass:"flex flex-wrap text-sm font-medium text-center text-gray-500 border-b border-gray-200 dark:border-gray-700 dark:text-gray-400",tabClass:"me-2",labelClass:"inline-flex items-center justify-center p-4 border-b-2 group",inactiveClass:"border-transparent rounded-t-lg hover:text-gray-600 hover:border-gray-300 dark:hover:text-gray-300 cursor-pointer",activeClass:"text-blue-600 border-blue-600 rounded-t-lg active dark:text-blue-500 dark:border-blue-500",contentClass:"my-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=b,exports.ControlInput=p,exports.DataArrayRenderer=j,exports.DefaultAccordion=O,exports.DefaultArrayRenderer=_,exports.DefaultBoolOptions=U,exports.DefaultDisplay=c,exports.DefaultDisplayOnly=k,exports.DefaultLayout=R,exports.DefaultVisibility=w,exports.JsonataRenderer=q,exports.SelectDataRenderer=x,exports.createButtonActionRenderer=W,exports.createCheckListRenderer=h,exports.createCheckboxRenderer=E,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=S,exports.createDefaultLabelRenderer=K,exports.createDefaultLayoutRenderer=D,exports.createDefaultRenderers=Q,exports.createDefaultVisibilityRenderer=L,exports.createInputConversion=y,exports.createJsonataRenderer=I,exports.createNullToggleRenderer=M,exports.createRadioRenderer=g,exports.createSelectConversion=N,exports.createSelectRenderer=C,exports.defaultTailwindTheme=X,exports.getAccordionState=function(e){return e.meta.accordionState},exports.setIncluded=T;
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 s(){return s=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},s.apply(null,arguments)}function u(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 d=["data","display","className","style"];function i(e){return void 0===e&&(e={}),{render:function(t){/*#__PURE__*/return l.default.createElement(c,s({},e,t))},type:"display"}}function c(e){var t=n.useComponentTracking();try{var a=e.data,s=e.display,i=e.className,c=e.style,f=u(e,d);switch(a.type){case r.DisplayDataType.Icon:/*#__PURE__*/return l.default.createElement("i",{style:c,className:o.default(r.getOverrideClass(i),s?s.value:a.iconClass)});case r.DisplayDataType.Text:/*#__PURE__*/return l.default.createElement("div",{style:c,className:r.rendererClass(i,f.textClassName)},s?r.coerceToString(s.value):a.text);case r.DisplayDataType.Html:/*#__PURE__*/return l.default.createElement("div",{style:c,className:r.rendererClass(i,f.htmlClassName),dangerouslySetInnerHTML:{__html:s?r.coerceToString(s.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,d=u(e,f),i=n.formControlProps(a),c=i.value,p=u(i,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",s({},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)}},d))}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,d=t.options,i=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=u(t,v),g=o.value,h=o.disabled,b=e.useState(!f||null==g)[0],T=e.useMemo(function(){return Object.fromEntries(d.map(function(e){return[c(e.value),e.value]}))},[d]),E=e.useMemo(function(){return new Set(d.filter(function(e){return e.group}).map(function(e){return e.group}))},[d]);/*#__PURE__*/return l.default.createElement("select",s({},N,{className:i,onChange:function(e){return o.value=T[e.target.value]},value:c(g),disabled:h||x}),b&&/*#__PURE__*/l.default.createElement("option",{value:""},f?C:p),[].concat(E.keys()).map(function(e){/*#__PURE__*/return l.default.createElement("optgroup",{key:e,label:e},d.filter(function(t){return t.group===e}).map(a))}),d.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(b,s({classes:e,controlClasses:t.renderOptions},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(b,s({classes:e,controlClasses:t.renderOptions},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 T(null!=e?e:[],t.value,r)})},control:t.control,type:"checkbox",entryAdornment:r.fieldOptionAdornment(t)}))},{collection:!0,renderType:r.DataRenderType.CheckList})}function b(e){var t=n.useComponentTracking();try{var a=e.control,s=e.options,u=e.readonly,d=e.type,i=e.isChecked,c=e.setChecked,f=e.entryAdornment,m=e.classes,p=e.controlClasses,y=void 0===p?{}:p,v=a.disabled,C="r"+a.uniqueId;/*#__PURE__*/return l.default.createElement("div",{className:e.className,id:e.id},/*#__PURE__*/l.default.createElement(n.RenderArrayElements,{array:null==s?void 0:s.filter(function(e){return null!=e.value})},function(e,t){var s=n.useComputed(function(){return i(a,e)}).value,p=s?r.rendererClass(null==y?void 0:y.selectedClass,m.selectedClass):r.rendererClass(null==y?void 0:y.notSelectedClass,m.notSelectedClass);/*#__PURE__*/return l.default.createElement("div",{className:o.default(r.rendererClass(null==y?void 0:y.entryWrapperClass,m.entryWrapperClass),p),onClick:function(){return!u&&c(a,e,!s)}},/*#__PURE__*/l.default.createElement("div",{className:m.entryClass},/*#__PURE__*/l.default.createElement("input",{id:C+"_"+t,className:m.checkClass,type:d,name:C,readOnly:u,disabled:v,checked:s,onChange:function(t){!u&&c(a,e,t.target.checked)}}),/*#__PURE__*/l.default.createElement("label",{className:m.labelClass,htmlFor:C+"_"+t},e.name)),null==f?void 0:f(e,t,s))}))}finally{t()}}function T(e,t,r){return r===e.includes(t)?e:r?[].concat(e,[t]):e.filter(function(e){return e!==t})}function E(e){return void 0===e&&(e={}),r.createDataRenderer(function(t,a){return function(o){return s({},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.as(),style:t.style,className:e.checkClass}),o.label&&a.renderLabel(o.label,void 0,void 0))})}},{renderType:r.DataRenderType.Checkbox})}function R(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(D,s({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 D(e){var t=n.useComponentTracking();try{var r=e.errorClass,a=e.renderError,o=e.layout,s=o.controlEnd,u=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)(u&&u.touched?u.error:void 0),s)}finally{t()}}function k(e){var t=n.useComponentTracking();try{var r,a=e.className,o=e.emptyText,s=e.schemaInterface,u=e.field,d=e.style,i=e.control.value,c=null!=(r=s.isEmptyValue(u,i)?o:s.textValue(u,i))?r:"";/*#__PURE__*/return l.default.createElement("div",{style:d,className:a},c)}finally{t()}}function O(e){var t=n.useComponentTracking();try{var r,a=e.children,u=e.accordion,d=e.contentStyle,i=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,b=(null!=(r=h.dataNode)?r:h.parentNode).control,T=n.useControl(!!u.defaultExpanded);b&&!b.meta.accordionState&&(b.meta.accordionState=T);var E=T.value,R=E||c?d:s({},d,{display:"none"}),D=x.renderLabelText(v(u.title,T)),k=C?C(T,D):/*#__PURE__*/l.default.createElement("button",{className:p,onClick:function(){return T.setValue(function(e){return!e})}},/*#__PURE__*/l.default.createElement("label",{className:N},D),/*#__PURE__*/l.default.createElement("i",{className:o.default(E?f:m)}));/*#__PURE__*/return l.default.createElement(l.default.Fragment,null,k,(g||E||c)&&/*#__PURE__*/l.default.createElement("div",{style:R,className:i},a))}finally{t()}}function F(e){var t=n.useComponentTracking();try{var a=function(e,t){/*#__PURE__*/return l.default.createElement("div",{key:t,className:r.rendererClass(u,d.className)},/*#__PURE__*/l.default.createElement("ul",{className:r.rendererClass(null,y)},e.map(function(e,t){/*#__PURE__*/return l.default.createElement("li",{key:t,className:r.rendererClass(null,m),onClick:function(){return f.value=t}},/*#__PURE__*/l.default.createElement("span",{className:r.rendererClass(null,o.default(p,t==N?C:v))},e.definition.title?e.definition.title:"<untitled>"))})),/*#__PURE__*/l.default.createElement("div",{className:r.rendererClass(null,x)},i(N,e[N])))},s=e.formNode,u=e.className,d=e.options,i=e.renderChild,c=e.designMode,f=n.useControl(0),m=d.tabClass,p=d.labelClass,y=d.tabListClass,v=d.inactiveClass,C=d.activeClass,x=d.contentClass,N=f.value;return c?/*#__PURE__*/l.default.createElement(l.default.Fragment,null,s.getChildNodes().map(function(e,t){return a([e],t)})):a(s.getChildNodes(),0)}finally{t()}}function A(e){var t=function(e){return void 0===e&&(e={}),r.createGroupRenderer(function(t,r){/*#__PURE__*/return l.default.createElement(F,s({},t,{options:e}))},{renderType:r.GroupRenderType.Tabs})}(null==e?void 0:e.tabs),n=null!=e?e:{},a=n.className,u=n.gridStyles,d=void 0===u?function(e){var t=e.columns;return{className:f,style:{display:"grid",gridTemplateColumns:"repeat("+(void 0===t?c:t)+", 1fr)"}}}:u,i=n.defaultGridColumns,c=void 0===i?2:i,f=n.gridClassName,m=n.standardClassName,p=n.flexClassName,y=n.defaultFlexGap;return{type:"group",render:function(e,n){var u=e.renderChild,i=e.renderOptions,c=e.formNode;if(r.isTabsRenderer(i))return t.render(e,n);if(r.isSelectChildRenderer(i)&&!e.designMode)/*#__PURE__*/return l.default.createElement(S,s({},e,{renderOptions:i}));var f=r.isGridRenderer(i)?d(i):r.isFlexRenderer(i)?function(e){return{className:p,style:{display:"flex",gap:e.gap?e.gap:y,flexDirection:e.direction?e.direction:void 0}}}(i):{className:m},v=f.style;/*#__PURE__*/return l.default.createElement("div",{className:r.rendererClass(e.className,o.default(a,f.className)),style:v},c.getChildNodes().map(function(e,t){return u(t,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,n=e.formNode.getChildNodes();/*#__PURE__*/return l.default.createElement("div",null,"number"==typeof r&&r<n.length&&r>=0&&e.renderChild(r,n[r]))},[a.deps]);/*#__PURE__*/return l.default.createElement(o,e)}finally{t()}}function L(){return r.createVisibilityRenderer(function(e){/*#__PURE__*/return l.default.createElement(w,e)})}function w(t){var r=n.useComponentTracking();try{var a=t.visibility,s=t.children,u=t.className,d=t.style,i=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(u),style:d,ref:i},s):/*#__PURE__*/l.default.createElement(l.default.Fragment,null)}finally{r()}}function I(e){return r.createDataRenderer(function(t){/*#__PURE__*/return l.default.createElement(q,{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 q(e){var t=n.useComponentTracking();try{var a=e.control,o=e.renderOptions,s=e.readonly,u=e.className,d=e.dataContext,i=e.dataNode,c=null!=i.elementIndex?i:d.parentNode,f=n.useComputed(function(){return{value:a.value,readonly:s,disabled:a.disabled,formData:d.formData,dataPath:r.getJsonPath(i)}}),m=r.useJsonataExpression(o.expression,r.getRootDataNode(c).control,r.getJsonPath(c),f,r.coerceToString);/*#__PURE__*/return l.default.createElement("div",{className:u,dangerouslySetInnerHTML:{__html:m.value}})}finally{t()}}var V=["control","field","renderOptions"];function M(){return r.createDataRenderer(function(e,t){var a,o,d=e.control,i=e.field,c=u(e,V),f=null!=(o=(a=d.meta).nullControl)?o:a.nullControl=n.newControl(null!=d.current.value);return function(e){var n=t.renderData(s({},c,{control:f,field:s({},i,{type:r.FieldType.Bool}),renderOptions:{type:r.DataRenderType.Checkbox}}))(e);return s({},n,{children:/*#__PURE__*/l.default.createElement(G,{control:d,nullControl:f,children:n.children,readonly:c.readonly,defaultValue:c.definition.defaultValue})})}})}function G(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(j,{dataProps:t,renderers:r,defaultActions:e})},{renderType:r.DataRenderType.Array,collection:!0})}function j(e){var t,a=e.dataProps,o=e.renderers,u=e.defaultActions,d=a.renderOptions,i=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=a.formNode,b=r.mergeObjects(r.isArrayRenderer(d)?d:{},u),T=b.addText,E=b.noAdd,R=b.noRemove,D=b.removeText,k=r.isArrayRenderer(d)?d.childOptions:void 0,O=!r.isCompoundField(c),F=r.nodeForControl(O?{type:r.ControlDefinitionType.Data,field:v.field,children:v.children,renderOptions:null!=k?k:{type:r.DataRenderType.Standard},hideTitle:!0}:{type:r.ControlDefinitionType.Group,children:v.children,groupOptions:{type:r.GroupRenderType.Standard,hideTitle:!0}},h.tree),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}),L=n.useTrackedComponent(H,[S]),w=s({},r.createArrayActions(i.as(),c,{addText:T,removeText:D,noAdd:E,noRemove:R,readonly:f,disabled:i.disabled,designMode:m}),{required:p,renderElement:function(e,t){/*#__PURE__*/return l.default.createElement(L,{index:e,renderChildElement:I,dataContext:g,visibilities:A,wrap:t})},className:C||void 0,style:x},r.getLengthRestrictions(v));return o.renderArray(w);function I(e,t){var r,n;return y(null!=(r=null==(n=i.elements)?void 0:n[e].uniqueId)?r:e,F,O?{elementIndex:e}:{parentDataNode:t})}}function H(e){var t=e.index,n=e.renderChildElement,a=e.visibilities,l=e.wrap,o=e.dataContext,u=o.dataNode.getChildElement(t),d=a.map(function(e){var t=e[0];return t.runHook(s({},o,{parentNode:u,dataNode:r.lookupDataNode(e[1],u)}),t.state).value});if(0==d.length||d.some(function(e){return!0===e}))return l(n(t,u))}function J(e){return{render:function(t,r){/*#__PURE__*/return l.default.createElement(_,s({},t,e,{renderAction:r.renderAction}))},type:"array"}}function _(e){var t=n.useComponentTracking();try{var a=e.renderElement,s=e.className,u=e.removableClass,d=e.childClass,i=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(s,x&&u)},/*#__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(d,i)},e),/*#__PURE__*/l.default.createElement("div",{className:c},p(x(t)))):/*#__PURE__*/l.default.createElement("div",{className:d},e)})})),C&&/*#__PURE__*/l.default.createElement("div",{className:f},p(C)))}finally{t()}}var B="ValueForField",W={RenderOptions:{value:B,name:"Value For Field",fields:r.buildSchema({fieldRef:r.stringField("Field Reference")})}};function U(t){var a=n.useComponentTracking();try{var o=t.schema,s=t.renderer,u=t.control,d=o.field.field,i=n.useControl({},void 0,function(e){var t;return n.setFields(e,((t={})[d]=u,t))}),c=e.useMemo(function(){return r.addMissingControlsForSchema(r.rootSchemaNode([o.field]),[])},[o]),f=r.useControlRendererComponent(r.groupedControl(c),s,{disabled:u.disabled},r.makeSchemaDataNode(o.parent,i));/*#__PURE__*/return l.default.createElement(f,null)}finally{a()}}function Y(t){var r=n.useComponentTracking();try{var a=t.control,o=t.className,s=e.useRef(null);return n.useControlEffect(function(){return a.value},function(e){var t=s.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:s})}finally{r()}}function z(e,t){return void 0===t&&(t={}),r.createActionRenderer(e,function(e){var n,a=e.onClick,o=e.actionText,s=e.style,u=e.actionId,d=e.actionData,i=e.disabled;/*#__PURE__*/return l.default.createElement("button",{className:r.rendererClass(e.className,t.className),disabled:i,style:s,onClick:a},null!=(n=null==t.renderContent?void 0:t.renderContent(o,u,d))?n:o)})}var K=[{name:"Yes",value:!0},{name:"No",value:!1}];function Q(e){var t,n,a;void 0===e&&(e={});var o,u=I(e.jsonataClass),d=M(),i=(o=e.multilineClass,r.createDataRenderer(function(e){/*#__PURE__*/return l.default.createElement(Y,s({},e,{className:r.rendererClass(e.className,o)}))})),c=E(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=s({optionRenderer:f,booleanOptions:K},e),N=x.inputClass,b=x.booleanOptions,T=x.optionRenderer,R=x.displayOnlyClass,D=x.defaultEmptyText,O=P(e.arrayOptions);return r.createDataRenderer(function(e,t){var n,a=e.field,o=a.type,C=e.renderOptions,x=C.type;if(a.collection&&null==e.elementIndex&&(x==r.DataRenderType.Standard||x==r.DataRenderType.Array))return O.render(e,t);if(o===r.FieldType.Compound){var g,h=null!=(g=r.isDataGroupRenderer(C)?C.groupOptions:void 0)?g:{type:"Standard",hideTitle:!0};return t.renderGroup(s({},e,{renderOptions:h}))}if(o==r.FieldType.Any)/*#__PURE__*/return l.default.createElement(l.default.Fragment,null,"Can't render field: ",null!=(n=a.displayName)?n:a.field);if(e.displayOnly||r.isDisplayOnlyRenderer(C))return function(t){return s({},t,{className:"@ "+r.rendererClass(t.className,R),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(C)&&C.emptyText?C.emptyText:D})})};if(null!=b&&o===r.FieldType.Bool&&null==e.options)return t.renderData(s({},e,{options:b}));if(x===r.DataRenderType.Standard&&r.hasOptions(e))return T.render(e,t);switch(x){case r.DataRenderType.NullToggle:return d.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 u.render(e,t)}if(r.isTextfieldRenderer(C)&&C.multiline)return i.render(e,t);var E=r.isTextfieldRenderer(C)?C.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!=E?E:void 0,convert:y(e.field.type)})})}function X(t){return void 0===t&&(t={}),{type:"adornment",render:function(a,o){var u=a.adornment,d=a.designMode,i=a.dataContext,c=a.useExpr;return{apply:function(a){if(r.isSetFieldAdornment(u)&&c){var f=c(u.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,s=r.schemaDataForFieldRef(a.field,l.parentNode).control,u=!a.defaultOnly;return n.useControlEffect(function(){return[null==o?void 0:o.value,null==(null==s?void 0:s.value)]},function(e){var t=e[0];null==s||s.setValue(function(e){return u||null==e?t:e})},!0),t},[m]);return r.wrapLayout(function(e){/*#__PURE__*/return l.default.createElement(p,{children:e,parentContext:i,adornment:u})})(a)}var y;return r.isIconAdornment(u)?r.appendMarkupAt(null!=(y=u.placement)?y:r.AdornmentPlacement.ControlStart,/*#__PURE__*/l.default.createElement("i",{className:u.iconClass}))(a):r.isAccordionAdornment(u)?r.wrapLayout(function(e){/*#__PURE__*/return l.default.createElement(O,s({renderers:o,children:e,accordion:u,contentStyle:a.style,contentClassName:a.className,designMode:d,dataContext:i},t.accordion))})(a):void 0},priority:0,adornment:u}}}}function Z(e){var t=s({requiredElement:/*#__PURE__*/l.default.createElement("span",null," *"),labelContainer:function(e){return e}},e),n=t.className,a=t.groupLabelClass,u=t.controlLabelClass,d=t.requiredElement,i=t.labelContainer;return{render:function(e,t,s,c){return e.type==r.LabelType.Text?e.label:i(/*#__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&&u))},t,c.renderLabelText(e.label),e.required&&d),s))},type:"label"}}function $(e){return void 0===e&&(e={}),{data:Q(e.data),display:i(e.display),action:z(void 0,e.action),array:J(e.array),group:A(e.group),label:Z(e.label),adornment:X(e.adornment),renderLayout:R(e.layout),visibility:L()}}var ee={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",tabs:{className:"",tabListClass:"flex flex-wrap text-sm font-medium text-center text-gray-500 border-b border-gray-200 dark:border-gray-700 dark:text-gray-400",tabClass:"me-2",labelClass:"inline-flex items-center justify-center p-4 border-b-2 group",inactiveClass:"border-transparent rounded-t-lg hover:text-gray-600 hover:border-gray-300 dark:hover:text-gray-300 cursor-pointer",activeClass:"text-blue-600 border-blue-600 rounded-t-lg active dark:text-blue-500 dark:border-blue-500",contentClass:"my-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=b,exports.ControlInput=p,exports.DataArrayRenderer=j,exports.DefaultAccordion=O,exports.DefaultArrayRenderer=_,exports.DefaultBoolOptions=K,exports.DefaultDisplay=c,exports.DefaultDisplayOnly=k,exports.DefaultLayout=D,exports.DefaultVisibility=w,exports.JsonataRenderer=q,exports.SelectDataRenderer=x,exports.ValueForFieldExtension=W,exports.createButtonActionRenderer=z,exports.createCheckListRenderer=h,exports.createCheckboxRenderer=E,exports.createClassStyledRenderers=function(){return $({layout:{className:"control"},group:{className:"group"},array:{className:"control-array"},action:{className:"action"},data:{inputClass:"data"},display:{htmlClassName:"html",textClassName:"text"}})},exports.createDefaultAdornmentRenderer=X,exports.createDefaultArrayDataRenderer=P,exports.createDefaultArrayRenderer=J,exports.createDefaultDataRenderer=Q,exports.createDefaultDisplayRenderer=i,exports.createDefaultGroupRenderer=A,exports.createDefaultLabelRenderer=Z,exports.createDefaultLayoutRenderer=R,exports.createDefaultRenderers=$,exports.createDefaultVisibilityRenderer=L,exports.createInputConversion=y,exports.createJsonataRenderer=I,exports.createNullToggleRenderer=M,exports.createRadioRenderer=g,exports.createSelectConversion=N,exports.createSelectRenderer=C,exports.createValueForFieldRenderer=function(e){return r.createDataRenderer(function(t,n){var a,o=t.renderOptions.fieldRef,s=o?null==(a=r.schemaDataForFieldRef(o,t.dataContext.parentNode))||null==(a=a.control)?void 0:a.value:void 0,u=s?r.schemaForFieldRef(s,e.schema):void 0;return u?/*#__PURE__*/l.default.createElement(U,{renderer:n,schema:u,control:t.control}):/*#__PURE__*/l.default.createElement(l.default.Fragment,null,s?"No schema node for "+s:"")},{renderType:B})},exports.defaultTailwindTheme=ee,exports.getAccordionState=function(e){return e.meta.accordionState},exports.setIncluded=T;
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/TabsRenderer.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 CheckEntryClasses,\n createDataRenderer,\n DataRenderType,\n FieldOption,\n fieldOptionAdornment,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport clsx from \"clsx\";\n\nexport interface CheckRendererOptions {\n className?: string;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n entryWrapperClass?: string;\n selectedClass?: string;\n notSelectedClass?: string;\n}\nexport function createRadioRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n classes={options}\n controlClasses={p.renderOptions as CheckEntryClasses}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => control.value == o.value}\n setChecked={(c, o) => (c.value = o.value)}\n control={p.control}\n type=\"radio\"\n entryAdornment={fieldOptionAdornment(p)}\n />\n ),\n {\n renderType: DataRenderType.Radio,\n },\n );\n}\n\nexport function createCheckListRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n classes={options}\n controlClasses={p.renderOptions as CheckEntryClasses}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => {\n const v = control.value;\n return Array.isArray(v) ? v.includes(o.value) : false;\n }}\n setChecked={(c, o, checked) => {\n c.setValue((x) => setIncluded(x ?? [], o.value, checked));\n }}\n control={p.control}\n type=\"checkbox\"\n entryAdornment={fieldOptionAdornment(p)}\n />\n ),\n {\n collection: true,\n renderType: DataRenderType.CheckList,\n },\n );\n}\n\nexport interface CheckButtonsProps {\n id?: string;\n className?: string;\n options?: FieldOption[] | null;\n control: Control<any>;\n classes: CheckRendererOptions;\n controlClasses?: CheckEntryClasses;\n readonly?: boolean;\n type: \"checkbox\" | \"radio\";\n isChecked: (c: Control<any>, o: FieldOption) => boolean;\n setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;\n entryAdornment?: (c: FieldOption, i: number, selected: boolean) => ReactNode;\n}\n\nexport function CheckButtons({\n control,\n options,\n readonly,\n className,\n id,\n type,\n isChecked,\n setChecked,\n entryAdornment,\n classes,\n controlClasses = {},\n}: CheckButtonsProps) {\n const { disabled } = control;\n const name = \"r\" + control.uniqueId;\n return (\n <div className={className} id={id}>\n <RenderArrayElements array={options?.filter((x) => x.value != null)}>\n {(o, i) => {\n const checked = useComputed(() => isChecked(control, o)).value;\n const selOrUnsel = checked\n ? rendererClass(\n controlClasses?.selectedClass,\n classes.selectedClass,\n )\n : rendererClass(\n controlClasses?.notSelectedClass,\n classes.notSelectedClass,\n );\n return (\n <div\n className={clsx(\n rendererClass(\n controlClasses?.entryWrapperClass,\n classes.entryWrapperClass,\n ),\n selOrUnsel,\n )}\n onClick={() => !readonly && setChecked(control, o, !checked)}\n >\n <div className={classes.entryClass}>\n <input\n id={name + \"_\" + i}\n className={classes.checkClass}\n type={type}\n name={name}\n readOnly={readonly}\n disabled={disabled}\n checked={checked}\n onChange={(x) => {\n !readonly && setChecked(control, o, x.target.checked);\n }}\n />\n <label className={classes.labelClass} htmlFor={name + \"_\" + i}>\n {o.name}\n </label>\n </div>\n {entryAdornment?.(o, i, checked)}\n </div>\n );\n }}\n </RenderArrayElements>\n </div>\n );\n}\n\nexport function setIncluded<A>(array: A[], elem: A, included: boolean): A[] {\n const already = array.includes(elem);\n if (included === already) {\n return array;\n }\n if (included) {\n return [...array, elem];\n }\n return array.filter((e) => e !== elem);\n}\n\nexport function createCheckboxRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (props, renderer) => (p) => ({\n ...p,\n label: undefined,\n children: (\n <div className={rendererClass(props.className, options.entryClass)}>\n <Fcheckbox\n id={props.id}\n control={props.control.as()}\n style={props.style}\n className={options.checkClass}\n />\n {p.label && renderer.renderLabel(p.label, undefined, undefined)}\n </div>\n ),\n }),\n { renderType: DataRenderType.Checkbox },\n );\n}\n","import React, { ReactNode } from \"react\";\nimport {\n createLayoutRenderer,\n RenderedLayout,\n rendererClass,\n renderLayoutParts,\n} from \"@react-typed-forms/schemas\";\n\nexport interface DefaultLayoutRendererOptions {\n className?: string;\n errorClass?: string;\n renderError?: (errorText: string | null | undefined) => ReactNode;\n}\n\nexport function createDefaultLayoutRenderer(\n options: DefaultLayoutRendererOptions = {},\n) {\n return createLayoutRenderer((props, renderers) => {\n const layout = renderLayoutParts(props, renderers);\n return {\n children: layout.wrapLayout(\n <DefaultLayout layout={layout} {...options} />,\n ),\n className: rendererClass(layout.className, options.className),\n style: layout.style,\n divRef: (e) =>\n e && props.errorControl\n ? (props.errorControl.meta.scrollElement = e)\n : undefined,\n };\n });\n}\n\nexport function DefaultLayout({\n errorClass,\n renderError = (e) => e && <div className={errorClass}>{e}</div>,\n layout: { controlEnd, controlStart, label, children, errorControl },\n}: DefaultLayoutRendererOptions & {\n layout: RenderedLayout;\n}) {\n const ec = errorControl;\n const errorText = ec && ec.touched ? ec.error : undefined;\n return (\n <>\n {label}\n {controlStart}\n {children}\n {renderError(errorText)}\n {controlEnd}\n </>\n );\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport {\n rendererClass,\n SchemaField,\n SchemaInterface,\n} from \"@react-typed-forms/schemas\";\n\nexport function DefaultDisplayOnly({\n control,\n className,\n emptyText,\n schemaInterface,\n field,\n style,\n}: {\n control: Control<any>;\n field: SchemaField;\n schemaInterface: SchemaInterface;\n className?: string;\n style?: React.CSSProperties;\n emptyText?: string | null;\n}) {\n const v = control.value;\n const text =\n (schemaInterface.isEmptyValue(field, v)\n ? emptyText\n : schemaInterface.textValue(field, v)) ?? \"\";\n return (\n <div style={style} className={className}>\n {text}\n </div>\n );\n}\n","import React, { CSSProperties, Fragment, ReactElement } from \"react\";\nimport { Control, useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\nimport { DefaultAccordionRendererOptions } from \"../createDefaultRenderers\";\nimport {\n AccordionAdornment,\n ControlDataContext,\n FormRenderer,\n} from \"@react-typed-forms/schemas\";\n\nexport function DefaultAccordion({\n children,\n accordion,\n contentStyle,\n contentClassName,\n designMode,\n iconOpenClass,\n iconClosedClass,\n className,\n renderTitle = (t) => t,\n renderToggler,\n renderers,\n titleClass,\n useCss,\n dataContext,\n}: {\n children: ReactElement;\n accordion: Partial<AccordionAdornment>;\n contentStyle?: CSSProperties;\n contentClassName?: string;\n designMode?: boolean;\n renderers: FormRenderer;\n dataContext: ControlDataContext;\n} & DefaultAccordionRendererOptions) {\n const dataControl = (dataContext.dataNode ?? dataContext.parentNode).control;\n const open = useControl(!!accordion.defaultExpanded);\n if (dataControl && !dataControl.meta.accordionState) {\n dataControl.meta.accordionState = open;\n }\n const isOpen = open.value;\n const fullContentStyle =\n isOpen || designMode ? contentStyle : { ...contentStyle, display: \"none\" };\n const title = renderers.renderLabelText(renderTitle(accordion.title, open));\n const toggler = renderToggler ? (\n renderToggler(open, title)\n ) : (\n <button className={className} onClick={() => open.setValue((x) => !x)}>\n <label className={titleClass}>{title}</label>\n <i className={clsx(isOpen ? iconOpenClass : iconClosedClass)} />\n </button>\n );\n\n return (\n <>\n {toggler}\n {(useCss || isOpen || designMode) && (\n <div style={fullContentStyle} className={contentClassName}>\n {children}\n </div>\n )}\n </>\n );\n}\n\nexport function getAccordionState(\n c: Control<unknown>,\n): Control<boolean> | undefined {\n return c.meta.accordionState;\n}\n","import {\n controlTitle,\n createGroupRenderer,\n FormNode,\n GroupRendererProps,\n GroupRenderType,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport React from \"react\";\nimport { useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\n\nexport interface TabsRendererOptions {\n className?: string;\n tabListClass?: string;\n tabClass?: string;\n labelClass?: string;\n activeClass?: string;\n inactiveClass?: string;\n contentClass?: string;\n}\n\nexport function createTabsRenderer(options: TabsRendererOptions = {}) {\n return createGroupRenderer(\n (p, renderer) => <TabsGroupRenderer {...p} options={options} />,\n {\n renderType: GroupRenderType.Tabs,\n },\n );\n}\n\nexport function TabsGroupRenderer({\n formNode,\n className,\n options,\n renderChild,\n designMode,\n}: GroupRendererProps & { options: TabsRendererOptions }) {\n const tabIndex = useControl(0);\n const {\n tabClass,\n labelClass,\n tabListClass,\n inactiveClass,\n activeClass,\n contentClass,\n } = options;\n const currentTab = tabIndex.value;\n return designMode ? (\n <>{formNode.getChildNodes().map((x, i) => renderTabs([x], i))}</>\n ) : (\n renderTabs(formNode.getChildNodes(), 0)\n );\n\n function renderTabs(tabs: FormNode[], key: number) {\n return (\n <div key={key} className={rendererClass(className, options.className)}>\n <ul className={rendererClass(null, tabListClass)}>\n {tabs.map((x, i) => (\n <li\n key={i}\n className={rendererClass(null, tabClass)}\n onClick={() => (tabIndex.value = i)}\n >\n <span\n className={rendererClass(\n null,\n clsx(\n labelClass,\n i == currentTab ? activeClass : inactiveClass,\n ),\n )}\n >\n {x.definition.title ? x.definition.title : \"<untitled>\"}\n </span>\n </li>\n ))}\n </ul>\n <div className={rendererClass(null, contentClass)}>\n {renderChild(currentTab, tabs[currentTab])}\n </div>\n </div>\n );\n }\n}\n","import {\n ControlLayoutProps,\n FlexRenderer,\n FormRenderer,\n GridRenderer,\n GroupRendererProps,\n GroupRendererRegistration,\n isFlexRenderer,\n isGridRenderer,\n isSelectChildRenderer,\n isTabsRenderer,\n rendererClass,\n SelectChildRenderer,\n} from \"@react-typed-forms/schemas\";\nimport clsx from \"clsx\";\nimport React, { CSSProperties, useCallback } from \"react\";\nimport { useTrackedComponent } from \"@react-typed-forms/core\";\nimport { createTabsRenderer, TabsRendererOptions } from \"./TabsRenderer\";\n\ninterface StyleProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport interface DefaultGroupRendererOptions {\n className?: string;\n standardClassName?: string;\n gridStyles?: (columns: GridRenderer) => StyleProps;\n gridClassName?: string;\n defaultGridColumns?: number;\n flexClassName?: string;\n defaultFlexGap?: string;\n tabs?: TabsRendererOptions;\n}\n\nexport function createDefaultGroupRenderer(\n options?: DefaultGroupRendererOptions,\n): GroupRendererRegistration {\n const tabsRenderer = createTabsRenderer(options?.tabs);\n const {\n className,\n gridStyles = defaultGridStyles,\n defaultGridColumns = 2,\n gridClassName,\n standardClassName,\n flexClassName,\n defaultFlexGap,\n } = options ?? {};\n\n function defaultGridStyles({\n columns = defaultGridColumns,\n }: GridRenderer): StyleProps {\n return {\n className: gridClassName,\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n },\n };\n }\n\n function flexStyles(options: FlexRenderer): StyleProps {\n return {\n className: flexClassName,\n style: {\n display: \"flex\",\n gap: options.gap ? options.gap : defaultFlexGap,\n flexDirection: options.direction\n ? (options.direction as any)\n : undefined,\n },\n };\n }\n\n function render(props: GroupRendererProps, renderers: FormRenderer) {\n const { renderChild, renderOptions, formNode } = props;\n if (isTabsRenderer(renderOptions))\n return tabsRenderer.render(props, renderers);\n if (isSelectChildRenderer(renderOptions) && !props.designMode) {\n return (\n <SelectChildGroupRenderer {...props} renderOptions={renderOptions} />\n );\n }\n\n const { style, className: gcn } = isGridRenderer(renderOptions)\n ? gridStyles(renderOptions)\n : isFlexRenderer(renderOptions)\n ? flexStyles(renderOptions)\n : ({ className: standardClassName } as StyleProps);\n return (\n <div\n className={rendererClass(props.className, clsx(className, gcn))}\n style={style}\n >\n {formNode.getChildNodes().map((c, i) => renderChild(i, c))}\n </div>\n );\n }\n\n return { type: \"group\", render };\n}\n\ntype SelectChildProps = Pick<\n GroupRendererProps,\n \"useEvalExpression\" | \"dataContext\" | \"formNode\" | \"renderChild\"\n> & {\n renderOptions: SelectChildRenderer;\n};\nfunction SelectChildGroupRenderer(props: SelectChildProps) {\n const { useEvalExpression, renderOptions } = props;\n const dynHook = useEvalExpression(renderOptions?.childIndexExpression, (x) =>\n x == \"string\" ? parseInt(x) : x,\n );\n const Render = useTrackedComponent(\n (p: SelectChildProps) => {\n const ctrl = dynHook.runHook(p.dataContext, dynHook.state);\n const childIndex = ctrl?.value;\n const childDefinitions = p.formNode.getChildNodes();\n return (\n <div>\n {typeof childIndex === \"number\" &&\n childIndex < childDefinitions.length &&\n childIndex >= 0 &&\n p.renderChild(childIndex, childDefinitions[childIndex])}\n </div>\n );\n },\n [dynHook.deps],\n );\n return <Render {...props} />;\n}\n","import React, { useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport {\n createVisibilityRenderer,\n VisibilityRendererProps,\n} from \"@react-typed-forms/schemas\";\n\nexport function createDefaultVisibilityRenderer() {\n return createVisibilityRenderer((props) => <DefaultVisibility {...props} />);\n}\n\nexport function DefaultVisibility({\n visibility,\n children,\n className,\n style,\n divRef,\n}: VisibilityRendererProps) {\n const v = visibility.value;\n useEffect(() => {\n if (v) {\n visibility.setValue((ex) => ({ visible: v.visible, showing: v.visible }));\n }\n }, [v?.visible]);\n return v?.visible ? (\n <div className={clsx(className)} style={style} ref={divRef}>\n {children}\n </div>\n ) : (\n <></>\n );\n}\n","import { Control, useComputed } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport {\n coerceToString,\n ControlDataContext,\n createDataRenderer,\n DataRenderType,\n getJsonPath,\n getRootDataNode,\n JsonataRenderOptions,\n rendererClass,\n SchemaDataNode,\n useJsonataExpression,\n} from \"@react-typed-forms/schemas\";\n\nexport function createJsonataRenderer(className?: string) {\n return createDataRenderer(\n (p) => (\n <JsonataRenderer\n renderOptions={p.renderOptions as JsonataRenderOptions}\n className={rendererClass(p.className, className)}\n dataNode={p.dataNode}\n dataContext={p.dataContext}\n control={p.control}\n readonly={p.readonly}\n />\n ),\n { renderType: DataRenderType.Jsonata },\n );\n}\n\nexport function JsonataRenderer({\n control,\n renderOptions,\n readonly,\n className,\n dataContext,\n dataNode,\n}: {\n control: Control<any>;\n renderOptions: JsonataRenderOptions;\n className?: string;\n dataContext: ControlDataContext;\n dataNode: SchemaDataNode;\n readonly: boolean;\n}) {\n const sdn = dataNode.elementIndex != null ? dataNode : dataContext.parentNode;\n const bindings = useComputed(() => ({\n value: control.value,\n readonly,\n disabled: control.disabled,\n formData: dataContext.formData,\n dataPath: getJsonPath(dataNode),\n }));\n const rendered = useJsonataExpression(\n renderOptions.expression,\n getRootDataNode(sdn).control!,\n getJsonPath(sdn),\n bindings,\n coerceToString,\n );\n return (\n <div\n className={className}\n dangerouslySetInnerHTML={{ __html: rendered.value }}\n />\n );\n}\n","import { 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 FormNode,\n FormRenderer,\n getLengthRestrictions,\n GroupedControlsDefinition,\n GroupRenderType,\n isArrayRenderer,\n isCompoundField,\n lookupDataNode,\n makeHookDepString,\n mergeObjects,\n nodeForControl,\n SchemaDataNode,\n} from \"@react-typed-forms/schemas\";\n\nexport function createDefaultArrayDataRenderer(\n defaultActions?: ArrayActionOptions,\n): DataRendererRegistration {\n return createDataRenderer(\n (props, renderers) => {\n return (\n <DataArrayRenderer\n dataProps={props}\n renderers={renderers}\n defaultActions={defaultActions}\n />\n );\n },\n { renderType: DataRenderType.Array, collection: true },\n );\n}\n\nexport function DataArrayRenderer({\n dataProps,\n renderers,\n defaultActions,\n}: {\n renderers: FormRenderer;\n dataProps: DataRendererProps;\n defaultActions?: ArrayActionOptions;\n}) {\n const {\n renderOptions,\n control,\n field,\n readonly,\n designMode,\n required,\n renderChild,\n definition,\n className,\n style,\n useChildVisibility,\n dataContext,\n formNode,\n } = dataProps;\n const { addText, noAdd, noRemove, noReorder, removeText } = mergeObjects(\n isArrayRenderer(renderOptions) ? renderOptions : ({} as ArrayRenderOptions),\n defaultActions as ArrayRenderOptions,\n );\n const childOptions = isArrayRenderer(renderOptions)\n ? renderOptions.childOptions\n : undefined;\n\n const renderAsElement = !isCompoundField(field);\n const childDefinition: FormNode = nodeForControl(\n !renderAsElement\n ? ({\n type: ControlDefinitionType.Group,\n children: definition.children,\n groupOptions: { type: GroupRenderType.Standard, hideTitle: true },\n } as GroupedControlsDefinition)\n : ({\n type: ControlDefinitionType.Data,\n field: definition.field,\n children: definition.children,\n renderOptions: childOptions ?? { type: DataRenderType.Standard },\n hideTitle: true,\n } as DataControlDefinition),\n formNode.tree,\n );\n\n const visibilities = (definition.children ?? []).map(\n (x) => [useChildVisibility(x, undefined, true), x] as const,\n );\n const deps = makeHookDepString(visibilities, (x) => x[0].deps);\n const Entry = useTrackedComponent(RenderEntry, [deps]);\n\n const arrayProps = {\n ...createArrayActions(control.as(), field, {\n addText,\n removeText,\n noAdd,\n noRemove,\n readonly,\n disabled: control.disabled,\n designMode,\n }),\n required,\n renderElement: (i, wrap) => (\n <Entry\n index={i}\n renderChildElement={renderChildElement}\n dataContext={dataContext}\n visibilities={visibilities}\n wrap={wrap}\n />\n ),\n className: className ? className : undefined,\n style,\n ...getLengthRestrictions(definition),\n } satisfies ArrayRendererProps;\n\n return renderers.renderArray(arrayProps);\n\n function renderChildElement(i: number, elementNode: SchemaDataNode) {\n return renderChild(\n control.elements?.[i].uniqueId ?? i,\n childDefinition,\n renderAsElement\n ? {\n elementIndex: i,\n }\n : { parentDataNode: elementNode },\n );\n }\n}\n\nfunction RenderEntry({\n index: i,\n renderChildElement,\n visibilities,\n wrap,\n dataContext,\n}: {\n index: number;\n renderChildElement: (i: number, element: SchemaDataNode) => ReactNode;\n visibilities: (readonly [EvalExpressionHook<boolean>, ControlDefinition])[];\n dataContext: ControlDataContext;\n wrap: (n: ReactNode) => ReactNode;\n}) {\n const elementNode = dataContext.dataNode!.getChildElement(i);\n const childVis = visibilities.map(\n ([hook, def]) =>\n hook.runHook(\n {\n ...dataContext,\n parentNode: elementNode,\n dataNode: lookupDataNode(def, elementNode),\n },\n hook.state,\n ).value,\n );\n const anyVisible = childVis.length == 0 || childVis.some((x) => x === true);\n if (!anyVisible) return undefined;\n return wrap(renderChildElement(i, elementNode));\n}\n\nexport interface DefaultArrayRendererOptions extends ArrayActionOptions {\n className?: string;\n removableClass?: string;\n childClass?: string;\n removableChildClass?: string;\n removeActionClass?: string;\n addActionClass?: string;\n}\n\nexport function createDefaultArrayRenderer(\n options?: DefaultArrayRendererOptions,\n): ArrayRendererRegistration {\n return {\n render: (props, { renderAction }) => (\n <DefaultArrayRenderer\n {...props}\n {...options}\n renderAction={renderAction}\n />\n ),\n type: \"array\",\n };\n}\n\nexport interface DefaultArrayRendererProps\n extends DefaultArrayRendererOptions,\n ArrayRendererProps {\n renderAction: (props: ActionRendererProps) => ReactNode;\n}\n\nexport function DefaultArrayRenderer(props: DefaultArrayRendererProps) {\n const {\n renderElement,\n className,\n removableClass,\n childClass,\n removableChildClass,\n removeActionClass,\n addActionClass,\n arrayControl,\n renderAction,\n style,\n } = props;\n const { addAction, removeAction } = applyArrayLengthRestrictions(props);\n return (\n <div style={style}>\n <div className={clsx(className, removeAction && removableClass)}>\n <RenderElements control={arrayControl}>\n {(_, x) =>\n renderElement(x, (children) =>\n removeAction ? (\n <>\n <div className={clsx(childClass, removableChildClass)}>\n {children}\n </div>\n <div className={removeActionClass}>\n {renderAction(removeAction(x))}\n </div>\n </>\n ) : (\n <div className={childClass}>{children}</div>\n ),\n )\n }\n </RenderElements>\n </div>\n {addAction && (\n <div className={addActionClass}>{renderAction(addAction)}</div>\n )}\n </div>\n );\n}\n","import React, { 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) {\n return <>Can't render field: {field.displayName ?? field.field}</>;\n }\n if (props.displayOnly || isDisplayOnlyRenderer(renderOptions))\n return (p) => {\n return {\n ...p,\n className: \"@ \" + rendererClass(p.className, displayOnlyClass),\n children: (\n <DefaultDisplayOnly\n field={props.field}\n schemaInterface={props.dataContext.schemaInterface}\n control={props.control}\n className={props.className}\n style={props.style}\n emptyText={\n isDisplayOnlyRenderer(renderOptions) && renderOptions.emptyText\n ? renderOptions.emptyText\n : defaultEmptyText\n }\n />\n ),\n };\n };\n const isBool = fieldType === FieldType.Bool;\n if (booleanOptions != null && isBool && props.options == null) {\n return renderers.renderData({ ...props, options: booleanOptions });\n }\n if (renderType === DataRenderType.Standard && hasOptions(props)) {\n return optionRenderer.render(props, renderers);\n }\n switch (renderType) {\n case DataRenderType.NullToggle:\n return nullToggler.render(props, renderers);\n case DataRenderType.CheckList:\n return checkListRenderer.render(props, renderers);\n case DataRenderType.Dropdown:\n return selectRenderer.render(props, renderers);\n case DataRenderType.Radio:\n return radioRenderer.render(props, renderers);\n case DataRenderType.Checkbox:\n return checkboxRenderer.render(props, renderers);\n case DataRenderType.Jsonata:\n return jsonataRenderer.render(props, renderers);\n }\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 tabs: {\n className: \"\",\n tabListClass:\n \"flex flex-wrap text-sm font-medium text-center text-gray-500 border-b border-gray-200 dark:border-gray-700 dark:text-gray-400\",\n tabClass: \"me-2\",\n labelClass:\n \"inline-flex items-center justify-center p-4 border-b-2 group\",\n inactiveClass:\n \"border-transparent rounded-t-lg hover:text-gray-600 hover:border-gray-300 dark:hover:text-gray-300 cursor-pointer\",\n activeClass:\n \"text-blue-600 border-blue-600 rounded-t-lg active dark:text-blue-500 dark:border-blue-500\",\n contentClass: \"my-2\",\n },\n },\n action: {\n className: \"bg-primary-500 rounded-lg p-3 text-white\",\n },\n layout: {\n className: \"flex flex-col\",\n errorClass: \"text-sm text-danger-500\",\n },\n data: {\n displayOnlyClass: \"flex flex-row items-center gap-2\",\n checkOptions: {\n className: \"flex items-center gap-4\",\n entryClass: \"flex gap-1 items-center\",\n },\n selectOptions: { emptyText: \"<select>\" },\n multilineClass: \"border p-2 outline-0 whitespace-pre-wrap\",\n },\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","classes","controlClasses","renderOptions","isChecked","setChecked","c","entryAdornment","fieldOptionAdornment","renderType","DataRenderType","Radio","createCheckListRenderer","Array","isArray","includes","checked","setValue","setIncluded","collection","CheckList","_ref$controlClasses","uniqueId","RenderArrayElements","array","useComputed","selOrUnsel","selectedClass","notSelectedClass","entryWrapperClass","onClick","entryClass","checkClass","readOnly","labelClass","htmlFor","elem","included","createCheckboxRenderer","renderer","children","Fcheckbox","as","renderLabel","Checkbox","createDefaultLayoutRenderer","createLayoutRenderer","renderers","layout","renderLayoutParts","wrapLayout","DefaultLayout","divRef","errorControl","meta","scrollElement","errorClass","_ref$renderError","renderError","_ref$layout","controlEnd","Fragment","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","TabsGroupRenderer","renderTabs","tabs","tabListClass","tabClass","tabIndex","currentTab","activeClass","inactiveClass","definition","contentClass","renderChild","formNode","getChildNodes","createDefaultGroupRenderer","tabsRenderer","createGroupRenderer","GroupRenderType","Tabs","createTabsRenderer","_ref$gridStyles","gridStyles","_ref2$columns","columns","gridClassName","gridTemplateColumns","defaultGridColumns","_ref$defaultGridColum","standardClassName","flexClassName","defaultFlexGap","isTabsRenderer","isSelectChildRenderer","SelectChildGroupRenderer","_ref3","isGridRenderer","isFlexRenderer","gap","flexDirection","direction","flexStyles","dynHook","useEvalExpression","childIndexExpression","Render","useTrackedComponent","ctrl","runHook","childIndex","childDefinitions","deps","createDefaultVisibilityRenderer","createVisibilityRenderer","DefaultVisibility","visibility","useEffect","ex","visible","showing","ref","createJsonataRenderer","JsonataRenderer","Jsonata","sdn","elementIndex","bindings","formData","dataPath","getJsonPath","rendered","useJsonataExpression","expression","getRootDataNode","createNullToggleRenderer","_control$meta","_control$meta$_nullCo","nullControl","newControl","current","newLayout","renderData","NullWrapper","defaultValue","r","_nullControl$meta$non","createDefaultArrayDataRenderer","defaultActions","DataArrayRenderer","dataProps","_definition$children","useChildVisibility","_mergeObjects","mergeObjects","isArrayRenderer","addText","noAdd","noRemove","removeText","childOptions","renderAsElement","isCompoundField","childDefinition","nodeForControl","ControlDefinitionType","Data","Standard","hideTitle","Group","groupOptions","tree","visibilities","makeHookDepString","Entry","RenderEntry","arrayProps","createArrayActions","renderElement","wrap","index","renderChildElement","getLengthRestrictions","renderArray","elementNode","_control$elements$i$u","_control$elements","elements","parentDataNode","getChildElement","childVis","hook","def","lookupDataNode","some","createDefaultArrayRenderer","_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","_field$displayName","fieldType","Compound","isDataGroupRenderer","renderGroup","Any","displayName","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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"}
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/TabsRenderer.tsx","../src/components/DefaultGroupRenderer.tsx","../src/components/DefaultVisibility.tsx","../src/components/JsonataRenderer.tsx","../src/components/NullToggle.tsx","../src/components/DefaultArrayRenderer.tsx","../src/components/ValueForFieldRenderer.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 CheckEntryClasses,\n createDataRenderer,\n DataRenderType,\n FieldOption,\n fieldOptionAdornment,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport clsx from \"clsx\";\n\nexport interface CheckRendererOptions {\n className?: string;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n entryWrapperClass?: string;\n selectedClass?: string;\n notSelectedClass?: string;\n}\nexport function createRadioRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n classes={options}\n controlClasses={p.renderOptions as CheckEntryClasses}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => control.value == o.value}\n setChecked={(c, o) => (c.value = o.value)}\n control={p.control}\n type=\"radio\"\n entryAdornment={fieldOptionAdornment(p)}\n />\n ),\n {\n renderType: DataRenderType.Radio,\n },\n );\n}\n\nexport function createCheckListRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n classes={options}\n controlClasses={p.renderOptions as CheckEntryClasses}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => {\n const v = control.value;\n return Array.isArray(v) ? v.includes(o.value) : false;\n }}\n setChecked={(c, o, checked) => {\n c.setValue((x) => setIncluded(x ?? [], o.value, checked));\n }}\n control={p.control}\n type=\"checkbox\"\n entryAdornment={fieldOptionAdornment(p)}\n />\n ),\n {\n collection: true,\n renderType: DataRenderType.CheckList,\n },\n );\n}\n\nexport interface CheckButtonsProps {\n id?: string;\n className?: string;\n options?: FieldOption[] | null;\n control: Control<any>;\n classes: CheckRendererOptions;\n controlClasses?: CheckEntryClasses;\n readonly?: boolean;\n type: \"checkbox\" | \"radio\";\n isChecked: (c: Control<any>, o: FieldOption) => boolean;\n setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;\n entryAdornment?: (c: FieldOption, i: number, selected: boolean) => ReactNode;\n}\n\nexport function CheckButtons({\n control,\n options,\n readonly,\n className,\n id,\n type,\n isChecked,\n setChecked,\n entryAdornment,\n classes,\n controlClasses = {},\n}: CheckButtonsProps) {\n const { disabled } = control;\n const name = \"r\" + control.uniqueId;\n return (\n <div className={className} id={id}>\n <RenderArrayElements array={options?.filter((x) => x.value != null)}>\n {(o, i) => {\n const checked = useComputed(() => isChecked(control, o)).value;\n const selOrUnsel = checked\n ? rendererClass(\n controlClasses?.selectedClass,\n classes.selectedClass,\n )\n : rendererClass(\n controlClasses?.notSelectedClass,\n classes.notSelectedClass,\n );\n return (\n <div\n className={clsx(\n rendererClass(\n controlClasses?.entryWrapperClass,\n classes.entryWrapperClass,\n ),\n selOrUnsel,\n )}\n onClick={() => !readonly && setChecked(control, o, !checked)}\n >\n <div className={classes.entryClass}>\n <input\n id={name + \"_\" + i}\n className={classes.checkClass}\n type={type}\n name={name}\n readOnly={readonly}\n disabled={disabled}\n checked={checked}\n onChange={(x) => {\n !readonly && setChecked(control, o, x.target.checked);\n }}\n />\n <label className={classes.labelClass} htmlFor={name + \"_\" + i}>\n {o.name}\n </label>\n </div>\n {entryAdornment?.(o, i, checked)}\n </div>\n );\n }}\n </RenderArrayElements>\n </div>\n );\n}\n\nexport function setIncluded<A>(array: A[], elem: A, included: boolean): A[] {\n const already = array.includes(elem);\n if (included === already) {\n return array;\n }\n if (included) {\n return [...array, elem];\n }\n return array.filter((e) => e !== elem);\n}\n\nexport function createCheckboxRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (props, renderer) => (p) => ({\n ...p,\n label: undefined,\n children: (\n <div className={rendererClass(props.className, options.entryClass)}>\n <Fcheckbox\n id={props.id}\n control={props.control.as()}\n style={props.style}\n className={options.checkClass}\n />\n {p.label && renderer.renderLabel(p.label, undefined, undefined)}\n </div>\n ),\n }),\n { renderType: DataRenderType.Checkbox },\n );\n}\n","import React, { ReactNode } from \"react\";\nimport {\n createLayoutRenderer,\n RenderedLayout,\n rendererClass,\n renderLayoutParts,\n} from \"@react-typed-forms/schemas\";\n\nexport interface DefaultLayoutRendererOptions {\n className?: string;\n errorClass?: string;\n renderError?: (errorText: string | null | undefined) => ReactNode;\n}\n\nexport function createDefaultLayoutRenderer(\n options: DefaultLayoutRendererOptions = {},\n) {\n return createLayoutRenderer((props, renderers) => {\n const layout = renderLayoutParts(props, renderers);\n return {\n children: layout.wrapLayout(\n <DefaultLayout layout={layout} {...options} />,\n ),\n className: rendererClass(layout.className, options.className),\n style: layout.style,\n divRef: (e) =>\n e && props.errorControl\n ? (props.errorControl.meta.scrollElement = e)\n : undefined,\n };\n });\n}\n\nexport function DefaultLayout({\n errorClass,\n renderError = (e) => e && <div className={errorClass}>{e}</div>,\n layout: { controlEnd, controlStart, label, children, errorControl },\n}: DefaultLayoutRendererOptions & {\n layout: RenderedLayout;\n}) {\n const ec = errorControl;\n const errorText = ec && ec.touched ? ec.error : undefined;\n return (\n <>\n {label}\n {controlStart}\n {children}\n {renderError(errorText)}\n {controlEnd}\n </>\n );\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport {\n rendererClass,\n SchemaField,\n SchemaInterface,\n} from \"@react-typed-forms/schemas\";\n\nexport function DefaultDisplayOnly({\n control,\n className,\n emptyText,\n schemaInterface,\n field,\n style,\n}: {\n control: Control<any>;\n field: SchemaField;\n schemaInterface: SchemaInterface;\n className?: string;\n style?: React.CSSProperties;\n emptyText?: string | null;\n}) {\n const v = control.value;\n const text =\n (schemaInterface.isEmptyValue(field, v)\n ? emptyText\n : schemaInterface.textValue(field, v)) ?? \"\";\n return (\n <div style={style} className={className}>\n {text}\n </div>\n );\n}\n","import React, { CSSProperties, Fragment, ReactElement } from \"react\";\nimport { Control, useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\nimport { DefaultAccordionRendererOptions } from \"../createDefaultRenderers\";\nimport {\n AccordionAdornment,\n ControlDataContext,\n FormRenderer,\n} from \"@react-typed-forms/schemas\";\n\nexport function DefaultAccordion({\n children,\n accordion,\n contentStyle,\n contentClassName,\n designMode,\n iconOpenClass,\n iconClosedClass,\n className,\n renderTitle = (t) => t,\n renderToggler,\n renderers,\n titleClass,\n useCss,\n dataContext,\n}: {\n children: ReactElement;\n accordion: Partial<AccordionAdornment>;\n contentStyle?: CSSProperties;\n contentClassName?: string;\n designMode?: boolean;\n renderers: FormRenderer;\n dataContext: ControlDataContext;\n} & DefaultAccordionRendererOptions) {\n const dataControl = (dataContext.dataNode ?? dataContext.parentNode).control;\n const open = useControl(!!accordion.defaultExpanded);\n if (dataControl && !dataControl.meta.accordionState) {\n dataControl.meta.accordionState = open;\n }\n const isOpen = open.value;\n const fullContentStyle =\n isOpen || designMode ? contentStyle : { ...contentStyle, display: \"none\" };\n const title = renderers.renderLabelText(renderTitle(accordion.title, open));\n const toggler = renderToggler ? (\n renderToggler(open, title)\n ) : (\n <button className={className} onClick={() => open.setValue((x) => !x)}>\n <label className={titleClass}>{title}</label>\n <i className={clsx(isOpen ? iconOpenClass : iconClosedClass)} />\n </button>\n );\n\n return (\n <>\n {toggler}\n {(useCss || isOpen || designMode) && (\n <div style={fullContentStyle} className={contentClassName}>\n {children}\n </div>\n )}\n </>\n );\n}\n\nexport function getAccordionState(\n c: Control<unknown>,\n): Control<boolean> | undefined {\n return c.meta.accordionState;\n}\n","import {\n controlTitle,\n createGroupRenderer,\n FormNode,\n GroupRendererProps,\n GroupRenderType,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport React from \"react\";\nimport { useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\n\nexport interface TabsRendererOptions {\n className?: string;\n tabListClass?: string;\n tabClass?: string;\n labelClass?: string;\n activeClass?: string;\n inactiveClass?: string;\n contentClass?: string;\n}\n\nexport function createTabsRenderer(options: TabsRendererOptions = {}) {\n return createGroupRenderer(\n (p, renderer) => <TabsGroupRenderer {...p} options={options} />,\n {\n renderType: GroupRenderType.Tabs,\n },\n );\n}\n\nexport function TabsGroupRenderer({\n formNode,\n className,\n options,\n renderChild,\n designMode,\n}: GroupRendererProps & { options: TabsRendererOptions }) {\n const tabIndex = useControl(0);\n const {\n tabClass,\n labelClass,\n tabListClass,\n inactiveClass,\n activeClass,\n contentClass,\n } = options;\n const currentTab = tabIndex.value;\n return designMode ? (\n <>{formNode.getChildNodes().map((x, i) => renderTabs([x], i))}</>\n ) : (\n renderTabs(formNode.getChildNodes(), 0)\n );\n\n function renderTabs(tabs: FormNode[], key: number) {\n return (\n <div key={key} className={rendererClass(className, options.className)}>\n <ul className={rendererClass(null, tabListClass)}>\n {tabs.map((x, i) => (\n <li\n key={i}\n className={rendererClass(null, tabClass)}\n onClick={() => (tabIndex.value = i)}\n >\n <span\n className={rendererClass(\n null,\n clsx(\n labelClass,\n i == currentTab ? activeClass : inactiveClass,\n ),\n )}\n >\n {x.definition.title ? x.definition.title : \"<untitled>\"}\n </span>\n </li>\n ))}\n </ul>\n <div className={rendererClass(null, contentClass)}>\n {renderChild(currentTab, tabs[currentTab])}\n </div>\n </div>\n );\n }\n}\n","import {\n ControlLayoutProps,\n FlexRenderer,\n FormRenderer,\n GridRenderer,\n GroupRendererProps,\n GroupRendererRegistration,\n isFlexRenderer,\n isGridRenderer,\n isSelectChildRenderer,\n isTabsRenderer,\n rendererClass,\n SelectChildRenderer,\n} from \"@react-typed-forms/schemas\";\nimport clsx from \"clsx\";\nimport React, { CSSProperties, useCallback } from \"react\";\nimport { useTrackedComponent } from \"@react-typed-forms/core\";\nimport { createTabsRenderer, TabsRendererOptions } from \"./TabsRenderer\";\n\ninterface StyleProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport interface DefaultGroupRendererOptions {\n className?: string;\n standardClassName?: string;\n gridStyles?: (columns: GridRenderer) => StyleProps;\n gridClassName?: string;\n defaultGridColumns?: number;\n flexClassName?: string;\n defaultFlexGap?: string;\n tabs?: TabsRendererOptions;\n}\n\nexport function createDefaultGroupRenderer(\n options?: DefaultGroupRendererOptions,\n): GroupRendererRegistration {\n const tabsRenderer = createTabsRenderer(options?.tabs);\n const {\n className,\n gridStyles = defaultGridStyles,\n defaultGridColumns = 2,\n gridClassName,\n standardClassName,\n flexClassName,\n defaultFlexGap,\n } = options ?? {};\n\n function defaultGridStyles({\n columns = defaultGridColumns,\n }: GridRenderer): StyleProps {\n return {\n className: gridClassName,\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n },\n };\n }\n\n function flexStyles(options: FlexRenderer): StyleProps {\n return {\n className: flexClassName,\n style: {\n display: \"flex\",\n gap: options.gap ? options.gap : defaultFlexGap,\n flexDirection: options.direction\n ? (options.direction as any)\n : undefined,\n },\n };\n }\n\n function render(props: GroupRendererProps, renderers: FormRenderer) {\n const { renderChild, renderOptions, formNode } = props;\n if (isTabsRenderer(renderOptions))\n return tabsRenderer.render(props, renderers);\n if (isSelectChildRenderer(renderOptions) && !props.designMode) {\n return (\n <SelectChildGroupRenderer {...props} renderOptions={renderOptions} />\n );\n }\n\n const { style, className: gcn } = isGridRenderer(renderOptions)\n ? gridStyles(renderOptions)\n : isFlexRenderer(renderOptions)\n ? flexStyles(renderOptions)\n : ({ className: standardClassName } as StyleProps);\n return (\n <div\n className={rendererClass(props.className, clsx(className, gcn))}\n style={style}\n >\n {formNode.getChildNodes().map((c, i) => renderChild(i, c))}\n </div>\n );\n }\n\n return { type: \"group\", render };\n}\n\ntype SelectChildProps = Pick<\n GroupRendererProps,\n \"useEvalExpression\" | \"dataContext\" | \"formNode\" | \"renderChild\"\n> & {\n renderOptions: SelectChildRenderer;\n};\nfunction SelectChildGroupRenderer(props: SelectChildProps) {\n const { useEvalExpression, renderOptions } = props;\n const dynHook = useEvalExpression(renderOptions?.childIndexExpression, (x) =>\n x == \"string\" ? parseInt(x) : x,\n );\n const Render = useTrackedComponent(\n (p: SelectChildProps) => {\n const ctrl = dynHook.runHook(p.dataContext, dynHook.state);\n const childIndex = ctrl?.value;\n const childDefinitions = p.formNode.getChildNodes();\n return (\n <div>\n {typeof childIndex === \"number\" &&\n childIndex < childDefinitions.length &&\n childIndex >= 0 &&\n p.renderChild(childIndex, childDefinitions[childIndex])}\n </div>\n );\n },\n [dynHook.deps],\n );\n return <Render {...props} />;\n}\n","import React, { useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport {\n createVisibilityRenderer,\n VisibilityRendererProps,\n} from \"@react-typed-forms/schemas\";\n\nexport function createDefaultVisibilityRenderer() {\n return createVisibilityRenderer((props) => <DefaultVisibility {...props} />);\n}\n\nexport function DefaultVisibility({\n visibility,\n children,\n className,\n style,\n divRef,\n}: VisibilityRendererProps) {\n const v = visibility.value;\n useEffect(() => {\n if (v) {\n visibility.setValue((ex) => ({ visible: v.visible, showing: v.visible }));\n }\n }, [v?.visible]);\n return v?.visible ? (\n <div className={clsx(className)} style={style} ref={divRef}>\n {children}\n </div>\n ) : (\n <></>\n );\n}\n","import { Control, useComputed } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport {\n coerceToString,\n ControlDataContext,\n createDataRenderer,\n DataRenderType,\n getJsonPath,\n getRootDataNode,\n JsonataRenderOptions,\n rendererClass,\n SchemaDataNode,\n useJsonataExpression,\n} from \"@react-typed-forms/schemas\";\n\nexport function createJsonataRenderer(className?: string) {\n return createDataRenderer(\n (p) => (\n <JsonataRenderer\n renderOptions={p.renderOptions as JsonataRenderOptions}\n className={rendererClass(p.className, className)}\n dataNode={p.dataNode}\n dataContext={p.dataContext}\n control={p.control}\n readonly={p.readonly}\n />\n ),\n { renderType: DataRenderType.Jsonata },\n );\n}\n\nexport function JsonataRenderer({\n control,\n renderOptions,\n readonly,\n className,\n dataContext,\n dataNode,\n}: {\n control: Control<any>;\n renderOptions: JsonataRenderOptions;\n className?: string;\n dataContext: ControlDataContext;\n dataNode: SchemaDataNode;\n readonly: boolean;\n}) {\n const sdn = dataNode.elementIndex != null ? dataNode : dataContext.parentNode;\n const bindings = useComputed(() => ({\n value: control.value,\n readonly,\n disabled: control.disabled,\n formData: dataContext.formData,\n dataPath: getJsonPath(dataNode),\n }));\n const rendered = useJsonataExpression(\n renderOptions.expression,\n getRootDataNode(sdn).control!,\n getJsonPath(sdn),\n bindings,\n coerceToString,\n );\n return (\n <div\n className={className}\n dangerouslySetInnerHTML={{ __html: rendered.value }}\n />\n );\n}\n","import { 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 FormNode,\n FormRenderer,\n getLengthRestrictions,\n GroupedControlsDefinition,\n GroupRenderType,\n isArrayRenderer,\n isCompoundField,\n lookupDataNode,\n makeHookDepString,\n mergeObjects,\n nodeForControl,\n SchemaDataNode,\n} from \"@react-typed-forms/schemas\";\n\nexport function createDefaultArrayDataRenderer(\n defaultActions?: ArrayActionOptions,\n): DataRendererRegistration {\n return createDataRenderer(\n (props, renderers) => {\n return (\n <DataArrayRenderer\n dataProps={props}\n renderers={renderers}\n defaultActions={defaultActions}\n />\n );\n },\n { renderType: DataRenderType.Array, collection: true },\n );\n}\n\nexport function DataArrayRenderer({\n dataProps,\n renderers,\n defaultActions,\n}: {\n renderers: FormRenderer;\n dataProps: DataRendererProps;\n defaultActions?: ArrayActionOptions;\n}) {\n const {\n renderOptions,\n control,\n field,\n readonly,\n designMode,\n required,\n renderChild,\n definition,\n className,\n style,\n useChildVisibility,\n dataContext,\n formNode,\n } = dataProps;\n const { addText, noAdd, noRemove, noReorder, removeText } = mergeObjects(\n isArrayRenderer(renderOptions) ? renderOptions : ({} as ArrayRenderOptions),\n defaultActions as ArrayRenderOptions,\n );\n const childOptions = isArrayRenderer(renderOptions)\n ? renderOptions.childOptions\n : undefined;\n\n const renderAsElement = !isCompoundField(field);\n const childDefinition: FormNode = nodeForControl(\n !renderAsElement\n ? ({\n type: ControlDefinitionType.Group,\n children: definition.children,\n groupOptions: { type: GroupRenderType.Standard, hideTitle: true },\n } as GroupedControlsDefinition)\n : ({\n type: ControlDefinitionType.Data,\n field: definition.field,\n children: definition.children,\n renderOptions: childOptions ?? { type: DataRenderType.Standard },\n hideTitle: true,\n } as DataControlDefinition),\n formNode.tree,\n );\n\n const visibilities = (definition.children ?? []).map(\n (x) => [useChildVisibility(x, undefined, true), x] as const,\n );\n const deps = makeHookDepString(visibilities, (x) => x[0].deps);\n const Entry = useTrackedComponent(RenderEntry, [deps]);\n\n const arrayProps = {\n ...createArrayActions(control.as(), field, {\n addText,\n removeText,\n noAdd,\n noRemove,\n readonly,\n disabled: control.disabled,\n designMode,\n }),\n required,\n renderElement: (i, wrap) => (\n <Entry\n index={i}\n renderChildElement={renderChildElement}\n dataContext={dataContext}\n visibilities={visibilities}\n wrap={wrap}\n />\n ),\n className: className ? className : undefined,\n style,\n ...getLengthRestrictions(definition),\n } satisfies ArrayRendererProps;\n\n return renderers.renderArray(arrayProps);\n\n function renderChildElement(i: number, elementNode: SchemaDataNode) {\n return renderChild(\n control.elements?.[i].uniqueId ?? i,\n childDefinition,\n renderAsElement\n ? {\n elementIndex: i,\n }\n : { parentDataNode: elementNode },\n );\n }\n}\n\nfunction RenderEntry({\n index: i,\n renderChildElement,\n visibilities,\n wrap,\n dataContext,\n}: {\n index: number;\n renderChildElement: (i: number, element: SchemaDataNode) => ReactNode;\n visibilities: (readonly [EvalExpressionHook<boolean>, ControlDefinition])[];\n dataContext: ControlDataContext;\n wrap: (n: ReactNode) => ReactNode;\n}) {\n const elementNode = dataContext.dataNode!.getChildElement(i);\n const childVis = visibilities.map(\n ([hook, def]) =>\n hook.runHook(\n {\n ...dataContext,\n parentNode: elementNode,\n dataNode: lookupDataNode(def, elementNode),\n },\n hook.state,\n ).value,\n );\n const anyVisible = childVis.length == 0 || childVis.some((x) => x === true);\n if (!anyVisible) return undefined;\n return wrap(renderChildElement(i, elementNode));\n}\n\nexport interface DefaultArrayRendererOptions extends ArrayActionOptions {\n className?: string;\n removableClass?: string;\n childClass?: string;\n removableChildClass?: string;\n removeActionClass?: string;\n addActionClass?: string;\n}\n\nexport function createDefaultArrayRenderer(\n options?: DefaultArrayRendererOptions,\n): ArrayRendererRegistration {\n return {\n render: (props, { renderAction }) => (\n <DefaultArrayRenderer\n {...props}\n {...options}\n renderAction={renderAction}\n />\n ),\n type: \"array\",\n };\n}\n\nexport interface DefaultArrayRendererProps\n extends DefaultArrayRendererOptions,\n ArrayRendererProps {\n renderAction: (props: ActionRendererProps) => ReactNode;\n}\n\nexport function DefaultArrayRenderer(props: DefaultArrayRendererProps) {\n const {\n renderElement,\n className,\n removableClass,\n childClass,\n removableChildClass,\n removeActionClass,\n addActionClass,\n arrayControl,\n renderAction,\n style,\n } = props;\n const { addAction, removeAction } = applyArrayLengthRestrictions(props);\n return (\n <div style={style}>\n <div className={clsx(className, removeAction && removableClass)}>\n <RenderElements control={arrayControl}>\n {(_, x) =>\n renderElement(x, (children) =>\n removeAction ? (\n <>\n <div className={clsx(childClass, removableChildClass)}>\n {children}\n </div>\n <div className={removeActionClass}>\n {renderAction(removeAction(x))}\n </div>\n </>\n ) : (\n <div className={childClass}>{children}</div>\n ),\n )\n }\n </RenderElements>\n </div>\n {addAction && (\n <div className={addActionClass}>{renderAction(addAction)}</div>\n )}\n </div>\n );\n}\n","import { Control, setFields, useControl } from \"@react-typed-forms/core\";\nimport {\n addMissingControlsForSchema,\n buildSchema,\n ControlDefinitionExtension,\n createDataRenderer,\n FormRenderer,\n groupedControl,\n makeSchemaDataNode,\n RenderOptions,\n rootSchemaNode,\n schemaDataForFieldRef,\n schemaForFieldRef,\n SchemaNode,\n stringField,\n useControlRendererComponent,\n} from \"@react-typed-forms/schemas\";\nimport React, { useMemo } from \"react\";\n\nexport interface ValueForFieldRenderOptions extends RenderOptions {\n type: \"ValueForField\";\n fieldRef?: string | null;\n}\n\nconst RenderType = \"ValueForField\";\n\nexport const ValueForFieldExtension: ControlDefinitionExtension = {\n RenderOptions: {\n value: RenderType,\n name: \"Value For Field\",\n fields: buildSchema<Omit<ValueForFieldRenderOptions, \"type\">>({\n fieldRef: stringField(\"Field Reference\"),\n }),\n },\n};\n\nexport interface ValueForFieldOptions {\n schema: SchemaNode;\n}\n\nexport function createValueForFieldRenderer(options: ValueForFieldOptions) {\n return createDataRenderer(\n (o, renderer) => {\n const { fieldRef } = o.renderOptions as ValueForFieldRenderOptions;\n const actualFieldRef = fieldRef\n ? (schemaDataForFieldRef(fieldRef, o.dataContext.parentNode)?.control\n ?.value as string)\n : undefined;\n const node = actualFieldRef\n ? schemaForFieldRef(actualFieldRef, options.schema)\n : undefined;\n return node ? (\n <ValueForField renderer={renderer} schema={node} control={o.control} />\n ) : (\n <>{actualFieldRef ? \"No schema node for \" + actualFieldRef : \"\"}</>\n );\n },\n {\n renderType: RenderType,\n },\n );\n}\n\nfunction ValueForField({\n schema,\n renderer,\n control,\n}: {\n schema: SchemaNode;\n renderer: FormRenderer;\n control: Control<any>;\n}) {\n const field = schema.field.field;\n const value = useControl<Record<string, any>>({}, undefined, (e) =>\n setFields(e, { [field]: control }),\n );\n const controls = useMemo(\n () => addMissingControlsForSchema(rootSchemaNode([schema.field]), []),\n [schema],\n );\n const Render = useControlRendererComponent(\n groupedControl(controls),\n renderer,\n { disabled: control.disabled },\n makeSchemaDataNode(schema.parent!, value),\n );\n return <Render />;\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) {\n return <>Can't render field: {field.displayName ?? field.field}</>;\n }\n if (props.displayOnly || isDisplayOnlyRenderer(renderOptions))\n return (p) => {\n return {\n ...p,\n className: \"@ \" + rendererClass(p.className, displayOnlyClass),\n children: (\n <DefaultDisplayOnly\n field={props.field}\n schemaInterface={props.dataContext.schemaInterface}\n control={props.control}\n className={props.className}\n style={props.style}\n emptyText={\n isDisplayOnlyRenderer(renderOptions) && renderOptions.emptyText\n ? renderOptions.emptyText\n : defaultEmptyText\n }\n />\n ),\n };\n };\n const isBool = fieldType === FieldType.Bool;\n if (booleanOptions != null && isBool && props.options == null) {\n return renderers.renderData({ ...props, options: booleanOptions });\n }\n if (renderType === DataRenderType.Standard && hasOptions(props)) {\n return optionRenderer.render(props, renderers);\n }\n switch (renderType) {\n case DataRenderType.NullToggle:\n return nullToggler.render(props, renderers);\n case DataRenderType.CheckList:\n return checkListRenderer.render(props, renderers);\n case DataRenderType.Dropdown:\n return selectRenderer.render(props, renderers);\n case DataRenderType.Radio:\n return radioRenderer.render(props, renderers);\n case DataRenderType.Checkbox:\n return checkboxRenderer.render(props, renderers);\n case DataRenderType.Jsonata:\n return jsonataRenderer.render(props, renderers);\n }\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 tabs: {\n className: \"\",\n tabListClass:\n \"flex flex-wrap text-sm font-medium text-center text-gray-500 border-b border-gray-200 dark:border-gray-700 dark:text-gray-400\",\n tabClass: \"me-2\",\n labelClass:\n \"inline-flex items-center justify-center p-4 border-b-2 group\",\n inactiveClass:\n \"border-transparent rounded-t-lg hover:text-gray-600 hover:border-gray-300 dark:hover:text-gray-300 cursor-pointer\",\n activeClass:\n \"text-blue-600 border-blue-600 rounded-t-lg active dark:text-blue-500 dark:border-blue-500\",\n contentClass: \"my-2\",\n },\n },\n action: {\n className: \"bg-primary-500 rounded-lg p-3 text-white\",\n },\n layout: {\n className: \"flex flex-col\",\n errorClass: \"text-sm text-danger-500\",\n },\n data: {\n displayOnlyClass: \"flex flex-row items-center gap-2\",\n checkOptions: {\n className: \"flex items-center gap-4\",\n entryClass: \"flex gap-1 items-center\",\n },\n selectOptions: { emptyText: \"<select>\" },\n multilineClass: \"border p-2 outline-0 whitespace-pre-wrap\",\n },\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","classes","controlClasses","renderOptions","isChecked","setChecked","c","entryAdornment","fieldOptionAdornment","renderType","DataRenderType","Radio","createCheckListRenderer","Array","isArray","includes","checked","setValue","setIncluded","collection","CheckList","_ref$controlClasses","uniqueId","RenderArrayElements","array","useComputed","selOrUnsel","selectedClass","notSelectedClass","entryWrapperClass","onClick","entryClass","checkClass","readOnly","labelClass","htmlFor","elem","included","createCheckboxRenderer","renderer","children","Fcheckbox","as","renderLabel","Checkbox","createDefaultLayoutRenderer","createLayoutRenderer","renderers","layout","renderLayoutParts","wrapLayout","DefaultLayout","divRef","errorControl","meta","scrollElement","errorClass","_ref$renderError","renderError","_ref$layout","controlEnd","Fragment","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","TabsGroupRenderer","renderTabs","tabs","tabListClass","tabClass","tabIndex","currentTab","activeClass","inactiveClass","definition","contentClass","renderChild","formNode","getChildNodes","createDefaultGroupRenderer","tabsRenderer","createGroupRenderer","GroupRenderType","Tabs","createTabsRenderer","_ref$gridStyles","gridStyles","_ref2$columns","columns","gridClassName","gridTemplateColumns","defaultGridColumns","_ref$defaultGridColum","standardClassName","flexClassName","defaultFlexGap","isTabsRenderer","isSelectChildRenderer","SelectChildGroupRenderer","_ref3","isGridRenderer","isFlexRenderer","gap","flexDirection","direction","flexStyles","dynHook","useEvalExpression","childIndexExpression","Render","useTrackedComponent","ctrl","runHook","childIndex","childDefinitions","deps","createDefaultVisibilityRenderer","createVisibilityRenderer","DefaultVisibility","visibility","useEffect","ex","visible","showing","ref","createJsonataRenderer","JsonataRenderer","Jsonata","sdn","elementIndex","bindings","formData","dataPath","getJsonPath","rendered","useJsonataExpression","expression","getRootDataNode","createNullToggleRenderer","_control$meta","_control$meta$_nullCo","nullControl","newControl","current","newLayout","renderData","NullWrapper","defaultValue","r","_nullControl$meta$non","createDefaultArrayDataRenderer","defaultActions","DataArrayRenderer","dataProps","_definition$children","useChildVisibility","_mergeObjects","mergeObjects","isArrayRenderer","addText","noAdd","noRemove","removeText","childOptions","renderAsElement","isCompoundField","childDefinition","nodeForControl","ControlDefinitionType","Data","Standard","hideTitle","Group","groupOptions","tree","visibilities","makeHookDepString","Entry","RenderEntry","arrayProps","createArrayActions","renderElement","wrap","index","renderChildElement","getLengthRestrictions","renderArray","elementNode","_control$elements$i$u","_control$elements","elements","parentDataNode","getChildElement","childVis","hook","def","lookupDataNode","some","createDefaultArrayRenderer","_ref4","DefaultArrayRenderer","renderAction","removableClass","childClass","removableChildClass","removeActionClass","addActionClass","arrayControl","_applyArrayLengthRest","applyArrayLengthRestrictions","addAction","removeAction","RenderElements","_","RenderType","ValueForFieldExtension","RenderOptions","fields","buildSchema","fieldRef","stringField","ValueForField","schema","_setFields","setFields","controls","addMissingControlsForSchema","rootSchemaNode","useControlRendererComponent","groupedControl","makeSchemaDataNode","parent","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","_field$displayName","fieldType","Compound","isDataGroupRenderer","renderGroup","Any","displayName","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","_schemaDataForFieldRe","actualFieldRef","node","schemaForFieldRef"],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -10,5 +10,6 @@ export * from "./components/DefaultVisibility";
10
10
  export * from "./components/JsonataRenderer";
11
11
  export * from "./components/NullToggle";
12
12
  export * from "./components/DefaultArrayRenderer";
13
+ export * from "./components/ValueForFieldRenderer";
13
14
  export * from "./createDefaultRenderers";
14
15
  export * from "./tailwind";
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 s from"clsx";import{DisplayDataType as o,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,createGroupRenderer as C,GroupRenderType as N,isTabsRenderer as h,isSelectChildRenderer as x,isGridRenderer as b,isFlexRenderer as g,createVisibilityRenderer as E,getJsonPath as T,useJsonataExpression as O,getRootDataNode as k,mergeObjects as A,isArrayRenderer as S,isCompoundField as w,nodeForControl as I,ControlDefinitionType as q,makeHookDepString as L,createArrayActions as D,getLengthRestrictions as V,lookupDataNode as F,applyArrayLengthRestrictions as M,createActionRenderer as R,isDataGroupRenderer as _,isDisplayOnlyRenderer as j,hasOptions as G,isTextfieldRenderer as H,isSetFieldAdornment as P,useDynamicHooks as B,wrapLayout as J,schemaDataForFieldRef as W,isIconAdornment as U,appendMarkupAt as Y,AdornmentPlacement as $,isAccordionAdornment as z,LabelType as K}from"@react-typed-forms/schemas";import{useComponentTracking as Q,formControlProps as X,useControl as Z,useControlEffect as ee,RenderArrayElements as te,useComputed as ne,Fcheckbox as le,useTrackedComponent as ae,newControl as re,RenderElements as se}from"@react-typed-forms/core";function oe(){return oe=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},oe.apply(null,arguments)}function ce(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 ie=["data","display","className","style"];function de(t={}){return{render:n=>/*#__PURE__*/e.createElement(ue,oe({},t,n)),type:"display"}}function ue(t){var n=Q();try{let{data:n,display:l,className:a,style:r}=t,u=ce(t,ie);switch(n.type){case o.Icon:/*#__PURE__*/return e.createElement("i",{style:r,className:s(d(a),l?l.value:n.iconClass)});case o.Text:/*#__PURE__*/return e.createElement("div",{style:r,className:c(a,u.textClassName)},l?i(l.value):n.text);case o.Html:/*#__PURE__*/return e.createElement("div",{style:r,className:c(a,u.htmlClassName),dangerouslySetInnerHTML:{__html:l?i(l.value):n.html}});case o.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 me=["control","convert"],pe=["errorText","value","onChange"];function ye(t){var n=Q();try{let{control:l,convert:a}=t,r=ce(t,me);const s=X(l),{value:o}=s,c=ce(s,pe),i=Z(()=>d(o));return ee(()=>l.value,e=>i.value=d(e)),/*#__PURE__*/e.createElement("input",oe({},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 ve(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 fe=["state","options","className","convert","required","emptyText","requiredText","readonly"];function Ce(t={}){return m((n,l)=>{var a;/*#__PURE__*/return e.createElement(Ne,{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:he(n.field.type)})},{options:!0})}function Ne(l){var a=Q();try{let{state:r,options:s,className:o,convert:c,required:i,emptyText:d="N/A",requiredText:u="<please select>",readonly:m}=l,p=ce(l,fe);const{value:y,disabled:v}=r,[f]=t(!i||null==y),C=n(()=>Object.fromEntries(s.map(e=>[c(e.value),e.value])),[s]),N=n(()=>new Set(s.filter(e=>e.group).map(e=>e.group)),[s]);/*#__PURE__*/return e.createElement("select",oe({},p,{className:o,onChange:e=>r.value=C[e.target.value],value:c(y),disabled:v||m}),f&&/*#__PURE__*/e.createElement("option",{value:""},i?u:d),[...N.keys()].map(t=>/*#__PURE__*/e.createElement("optgroup",{key:t,label:t},s.filter(e=>e.group===t).map(h))),s.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 he(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 xe(t={}){return m(n=>/*#__PURE__*/e.createElement(ge,oe({classes:t,controlClasses:n.renderOptions},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 be(t={}){return m(n=>/*#__PURE__*/e.createElement(ge,oe({classes:t,controlClasses:n.renderOptions},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=>Ee(null!=e?e:[],t.value,n))},control:n.control,type:"checkbox",entryAdornment:p(n)})),{collection:!0,renderType:y.CheckList})}function ge({control:t,options:n,readonly:l,className:a,id:r,type:o,isChecked:i,setChecked:d,entryAdornment:u,classes:m,controlClasses:p={}}){var y=Q();try{const{disabled:y}=t,v="r"+t.uniqueId;/*#__PURE__*/return e.createElement("div",{className:a,id:r},/*#__PURE__*/e.createElement(te,{array:null==n?void 0:n.filter(e=>null!=e.value)},(n,a)=>{const r=ne(()=>i(t,n)).value,f=r?c(null==p?void 0:p.selectedClass,m.selectedClass):c(null==p?void 0:p.notSelectedClass,m.notSelectedClass);/*#__PURE__*/return e.createElement("div",{className:s(c(null==p?void 0:p.entryWrapperClass,m.entryWrapperClass),f),onClick:()=>!l&&d(t,n,!r)},/*#__PURE__*/e.createElement("div",{className:m.entryClass},/*#__PURE__*/e.createElement("input",{id:v+"_"+a,className:m.checkClass,type:o,name:v,readOnly:l,disabled:y,checked:r,onChange:e=>{!l&&d(t,n,e.target.checked)}}),/*#__PURE__*/e.createElement("label",{className:m.labelClass,htmlFor:v+"_"+a},n.name)),null==u?void 0:u(n,a,r))}))}finally{y()}}function Ee(e,t,n){return n===e.includes(t)?e:n?[...e,t]:e.filter(e=>e!==t)}function Te(t={}){return m((n,l)=>a=>oe({},a,{label:void 0,children:/*#__PURE__*/e.createElement("div",{className:c(n.className,t.entryClass)},/*#__PURE__*/e.createElement(le,{id:n.id,control:n.control.as(),style:n.style,className:t.checkClass}),a.label&&l.renderLabel(a.label,void 0,void 0))}),{renderType:y.Checkbox})}function Oe(t={}){return v((n,l)=>{const a=f(n,l);return{children:a.wrapLayout(/*#__PURE__*/e.createElement(ke,oe({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 ke({errorClass:t,renderError:n=n=>n&&/*#__PURE__*/e.createElement("div",{className:t},n),layout:{controlEnd:l,controlStart:a,label:r,children:s,errorControl:o}}){var c=Q();try{/*#__PURE__*/return e.createElement(e.Fragment,null,r,a,s,n(o&&o.touched?o.error:void 0),l)}finally{c()}}function Ae({control:t,className:n,emptyText:l,schemaInterface:a,field:r,style:s}){var o=Q();try{var c;const o=t.value,i=null!=(c=a.isEmptyValue(r,o)?l:a.textValue(r,o))?c:"";/*#__PURE__*/return e.createElement("div",{style:s,className:n},i)}finally{o()}}function Se({children:t,accordion:n,contentStyle:l,contentClassName:a,designMode:r,iconOpenClass:o,iconClosedClass:c,className:i,renderTitle:d=e=>e,renderToggler:u,renderers:m,titleClass:p,useCss:y,dataContext:v}){var f=Q();try{var C;const f=(null!=(C=v.dataNode)?C:v.parentNode).control,N=Z(!!n.defaultExpanded);f&&!f.meta.accordionState&&(f.meta.accordionState=N);const h=N.value,x=h||r?l:oe({},l,{display:"none"}),b=m.renderLabelText(d(n.title,N)),g=u?u(N,b):/*#__PURE__*/e.createElement("button",{className:i,onClick:()=>N.setValue(e=>!e)},/*#__PURE__*/e.createElement("label",{className:p},b),/*#__PURE__*/e.createElement("i",{className:s(h?o:c)}));/*#__PURE__*/return e.createElement(e.Fragment,null,g,(y||h||r)&&/*#__PURE__*/e.createElement("div",{style:x,className:a},t))}finally{f()}}function we(e){return e.meta.accordionState}function Ie({formNode:t,className:n,options:l,renderChild:a,designMode:r}){var o=Q();try{const i=Z(0),{tabClass:d,labelClass:u,tabListClass:m,inactiveClass:p,activeClass:y,contentClass:v}=l,f=i.value;return r?/*#__PURE__*/e.createElement(e.Fragment,null,t.getChildNodes().map((e,t)=>C([e],t))):C(t.getChildNodes(),0);function C(t,r){/*#__PURE__*/return e.createElement("div",{key:r,className:c(n,l.className)},/*#__PURE__*/e.createElement("ul",{className:c(null,m)},t.map((t,n)=>/*#__PURE__*/e.createElement("li",{key:n,className:c(null,d),onClick:()=>i.value=n},/*#__PURE__*/e.createElement("span",{className:c(null,s(u,n==f?y:p))},t.definition.title?t.definition.title:"<untitled>")))),/*#__PURE__*/e.createElement("div",{className:c(null,v)},a(f,t[f])))}}finally{o()}}function qe(t){const n=function(t={}){return C((n,l)=>/*#__PURE__*/e.createElement(Ie,oe({},n,{options:t})),{renderType:N.Tabs})}(null==t?void 0:t.tabs),{className:l,gridStyles:a=m,defaultGridColumns:r=2,gridClassName:o,standardClassName:i,flexClassName:d,defaultFlexGap:u}=null!=t?t:{};function m({columns:e=r}){return{className:o,style:{display:"grid",gridTemplateColumns:`repeat(${e}, 1fr)`}}}return{type:"group",render:function(t,r){const{renderChild:o,renderOptions:m,formNode:p}=t;if(h(m))return n.render(t,r);if(x(m)&&!t.designMode)/*#__PURE__*/return e.createElement(Le,oe({},t,{renderOptions:m}));const{style:y,className:v}=b(m)?a(m):g(m)?function(e){return{className:d,style:{display:"flex",gap:e.gap?e.gap:u,flexDirection:e.direction?e.direction:void 0}}}(m):{className:i};/*#__PURE__*/return e.createElement("div",{className:c(t.className,s(l,v)),style:y},p.getChildNodes().map((e,t)=>o(t,e)))}}}function Le(t){var n=Q();try{const{useEvalExpression:n,renderOptions:l}=t,a=n(null==l?void 0:l.childIndexExpression,e=>"string"==e?parseInt(e):e),r=ae(t=>{const n=a.runHook(t.dataContext,a.state),l=null==n?void 0:n.value,r=t.formNode.getChildNodes();/*#__PURE__*/return e.createElement("div",null,"number"==typeof l&&l<r.length&&l>=0&&t.renderChild(l,r[l]))},[a.deps]);/*#__PURE__*/return e.createElement(r,t)}finally{n()}}function De(){return E(t=>/*#__PURE__*/e.createElement(Ve,t))}function Ve({visibility:t,children:n,className:a,style:r,divRef:o}){var c=Q();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:s(a),style:r,ref:o},n):/*#__PURE__*/e.createElement(e.Fragment,null)}finally{c()}}function Fe(t){return m(n=>/*#__PURE__*/e.createElement(Me,{renderOptions:n.renderOptions,className:c(n.className,t),dataNode:n.dataNode,dataContext:n.dataContext,control:n.control,readonly:n.readonly}),{renderType:y.Jsonata})}function Me({control:t,renderOptions:n,readonly:l,className:a,dataContext:r,dataNode:s}){var o=Q();try{const o=null!=s.elementIndex?s:r.parentNode,c=ne(()=>({value:t.value,readonly:l,disabled:t.disabled,formData:r.formData,dataPath:T(s)})),d=O(n.expression,k(o).control,T(o),c,i);/*#__PURE__*/return e.createElement("div",{className:a,dangerouslySetInnerHTML:{__html:d.value}})}finally{o()}}const Re=["control","field","renderOptions"];function _e(){return m((t,n)=>{var l,a;let{control:r,field:s}=t,o=ce(t,Re);const c=null!=(a=(l=r.meta).nullControl)?a:l.nullControl=re(null!=r.current.value);return t=>{const l=n.renderData(oe({},o,{control:c,field:oe({},s,{type:u.Bool}),renderOptions:{type:y.Checkbox}}))(t);return oe({},l,{children:/*#__PURE__*/e.createElement(je,{control:r,nullControl:c,children:l.children,readonly:o.readonly,defaultValue:o.definition.defaultValue})})}})}function je({children:e,nullControl:t,control:n,defaultValue:l,readonly:a}){return ee(()=>a,e=>t.disabled=e,!0),ee(()=>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 Ge(t){return m((n,l)=>/*#__PURE__*/e.createElement(He,{dataProps:n,renderers:l,defaultActions:t}),{renderType:y.Array,collection:!0})}function He({dataProps:t,renderers:n,defaultActions:l}){var a;const{renderOptions:r,control:s,field:o,readonly:c,designMode:i,required:d,renderChild:u,definition:m,className:p,style:v,useChildVisibility:f,dataContext:C,formNode:h}=t,{addText:x,noAdd:b,noRemove:g,removeText:E}=A(S(r)?r:{},l),T=S(r)?r.childOptions:void 0,O=!w(o),k=I(O?{type:q.Data,field:m.field,children:m.children,renderOptions:null!=T?T:{type:y.Standard},hideTitle:!0}:{type:q.Group,children:m.children,groupOptions:{type:N.Standard,hideTitle:!0}},h.tree),F=(null!=(a=m.children)?a:[]).map(e=>[f(e,void 0,!0),e]),M=L(F,e=>e[0].deps),R=ae(Pe,[M]),_=oe({},D(s.as(),o,{addText:x,removeText:E,noAdd:b,noRemove:g,readonly:c,disabled:s.disabled,designMode:i}),{required:d,renderElement:(t,n)=>/*#__PURE__*/e.createElement(R,{index:t,renderChildElement:j,dataContext:C,visibilities:F,wrap:n}),className:p||void 0,style:v},V(m));return n.renderArray(_);function j(e,t){var n,l;return u(null!=(n=null==(l=s.elements)?void 0:l[e].uniqueId)?n:e,k,O?{elementIndex:e}:{parentDataNode:t})}}function Pe({index:e,renderChildElement:t,visibilities:n,wrap:l,dataContext:a}){const r=a.dataNode.getChildElement(e),s=n.map(([e,t])=>e.runHook(oe({},a,{parentNode:r,dataNode:F(t,r)}),e.state).value);if(0==s.length||s.some(e=>!0===e))return l(t(e,r))}function Be(t){return{render:(n,{renderAction:l})=>/*#__PURE__*/e.createElement(Je,oe({},n,t,{renderAction:l})),type:"array"}}function Je(t){var n=Q();try{const{renderElement:n,className:l,removableClass:a,childClass:r,removableChildClass:o,removeActionClass:c,addActionClass:i,arrayControl:d,renderAction:u,style:m}=t,{addAction:p,removeAction:y}=M(t);/*#__PURE__*/return e.createElement("div",{style:m},/*#__PURE__*/e.createElement("div",{className:s(l,y&&a)},/*#__PURE__*/e.createElement(se,{control:d},(t,l)=>n(l,t=>y?/*#__PURE__*/e.createElement(e.Fragment,null,/*#__PURE__*/e.createElement("div",{className:s(r,o)},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 We({control:t,className:n}){var l=Q();try{const l=a(null);return ee(()=>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 Ue(t,n={}){return R(t,({onClick:t,actionText:l,className:a,style:r,actionId:s,actionData:o,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,s,o))?d:l)})}const Ye=[{name:"Yes",value:!0},{name:"No",value:!1}];function $e(t={}){var n,l,a;const r=Fe(t.jsonataClass),s=_e(),o=(i=t.multilineClass,m(t=>/*#__PURE__*/e.createElement(We,oe({},t,{className:c(t.className,i)}))));var i;const d=Te(null!=(n=t.checkOptions)?n:t.checkboxOptions),p=Ce(t.selectOptions),v=xe(null!=(l=t.radioOptions)?l:t.checkOptions),f=be(null!=(a=t.checkListOptions)?a:t.checkOptions),{inputClass:C,booleanOptions:N,optionRenderer:h,displayOnlyClass:x,defaultEmptyText:b}=oe({optionRenderer:p,booleanOptions:Ye},t),g=Ge(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 E;const e=null!=(E=_(i)?i.groupOptions:void 0)?E:{type:"Standard",hideTitle:!0};return n.renderGroup(oe({},t,{renderOptions:e}))}var T;if(a==u.Any)/*#__PURE__*/return e.createElement(e.Fragment,null,"Can't render field: ",null!=(T=l.displayName)?T:l.field);if(t.displayOnly||j(i))return n=>oe({},n,{className:"@ "+c(n.className,x),children:/*#__PURE__*/e.createElement(Ae,{field:t.field,schemaInterface:t.dataContext.schemaInterface,control:t.control,className:t.className,style:t.style,emptyText:j(i)&&i.emptyText?i.emptyText:b})});if(null!=N&&a===u.Bool&&null==t.options)return n.renderData(oe({},t,{options:N}));if(m===y.Standard&&G(t))return h.render(t,n);switch(m){case y.NullToggle:return s.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(H(i)&&i.multiline)return o.render(t,n);const O=H(i)?i.placeholder:void 0;/*#__PURE__*/return e.createElement(ye,{className:c(t.className,C),style:t.style,id:t.id,readOnly:t.readonly,control:t.control,placeholder:null!=O?O:void 0,convert:ve(t.field.type)})})}function ze(t={}){return{type:"adornment",render:({adornment:n,designMode:l,dataContext:a,useExpr:s},o)=>({apply:c=>{if(P(n)&&s){const d=s(n.expression,e=>e),u=B({value:d}),m=r(p,[u]);return J(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=W(t.field,n.parentNode).control,r=!t.defaultOnly;return ee(()=>[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 U(n)?Y(null!=(i=n.placement)?i:$.ControlStart,/*#__PURE__*/e.createElement("i",{className:n.iconClass}))(c):z(n)?J(r=>/*#__PURE__*/e.createElement(Se,oe({renderers:o,children:r,accordion:n,contentStyle:c.style,contentClassName:c.className,designMode:l,dataContext:a},t.accordion)))(c):void 0},priority:0,adornment:n})}}function Ke(t){const{className:n,groupLabelClass:l,controlLabelClass:a,requiredElement:r,labelContainer:o}=oe({requiredElement:/*#__PURE__*/e.createElement("span",null," *"),labelContainer:e=>e},t);return{render:(t,i,d,u)=>t.type==K.Text?t.label:o(/*#__PURE__*/e.createElement(e.Fragment,null,/*#__PURE__*/e.createElement("label",{htmlFor:t.forId,className:c(t.className,s(n,t.type===K.Group&&l,t.type===K.Control&&a))},i,u.renderLabelText(t.label),t.required&&r),d)),type:"label"}}function Qe(e={}){return{data:$e(e.data),display:de(e.display),action:Ue(void 0,e.action),array:Be(e.array),group:qe(e.group),label:Ke(e.label),adornment:ze(e.adornment),renderLayout:Oe(e.layout),visibility:De()}}function Xe(){return Qe({layout:{className:"control"},group:{className:"group"},array:{className:"control-array"},action:{className:"action"},data:{inputClass:"data"},display:{htmlClassName:"html",textClassName:"text"}})}const Ze={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",tabs:{className:"",tabListClass:"flex flex-wrap text-sm font-medium text-center text-gray-500 border-b border-gray-200 dark:border-gray-700 dark:text-gray-400",tabClass:"me-2",labelClass:"inline-flex items-center justify-center p-4 border-b-2 group",inactiveClass:"border-transparent rounded-t-lg hover:text-gray-600 hover:border-gray-300 dark:hover:text-gray-300 cursor-pointer",activeClass:"text-blue-600 border-blue-600 rounded-t-lg active dark:text-blue-500 dark:border-blue-500",contentClass:"my-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{ge as CheckButtons,ye as ControlInput,He as DataArrayRenderer,Se as DefaultAccordion,Je as DefaultArrayRenderer,Ye as DefaultBoolOptions,ue as DefaultDisplay,Ae as DefaultDisplayOnly,ke as DefaultLayout,Ve as DefaultVisibility,Me as JsonataRenderer,Ne as SelectDataRenderer,Ue as createButtonActionRenderer,be as createCheckListRenderer,Te as createCheckboxRenderer,Xe as createClassStyledRenderers,ze as createDefaultAdornmentRenderer,Ge as createDefaultArrayDataRenderer,Be as createDefaultArrayRenderer,$e as createDefaultDataRenderer,de as createDefaultDisplayRenderer,qe as createDefaultGroupRenderer,Ke as createDefaultLabelRenderer,Oe as createDefaultLayoutRenderer,Qe as createDefaultRenderers,De as createDefaultVisibilityRenderer,ve as createInputConversion,Fe as createJsonataRenderer,_e as createNullToggleRenderer,xe as createRadioRenderer,he as createSelectConversion,Ce as createSelectRenderer,Ze as defaultTailwindTheme,we as getAccordionState,Ee as setIncluded};
1
+ import e,{useState as t,useMemo as n,useEffect as l,useRef as r,useCallback as a}from"react";import s from"clsx";import{DisplayDataType as o,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,createGroupRenderer as C,GroupRenderType as N,isTabsRenderer as h,isSelectChildRenderer as x,isGridRenderer as b,isFlexRenderer as g,createVisibilityRenderer as E,getJsonPath as O,useJsonataExpression as T,getRootDataNode as k,mergeObjects as A,isArrayRenderer as S,isCompoundField as w,nodeForControl as I,ControlDefinitionType as F,makeHookDepString as q,createArrayActions as L,getLengthRestrictions as V,lookupDataNode as D,applyArrayLengthRestrictions as R,buildSchema as M,stringField as _,schemaDataForFieldRef as j,schemaForFieldRef as G,addMissingControlsForSchema as H,rootSchemaNode as P,useControlRendererComponent as B,groupedControl as J,makeSchemaDataNode as W,createActionRenderer as U,isDataGroupRenderer as Y,isDisplayOnlyRenderer as $,hasOptions as z,isTextfieldRenderer as K,isSetFieldAdornment as Q,useDynamicHooks as X,wrapLayout as Z,isIconAdornment as ee,appendMarkupAt as te,AdornmentPlacement as ne,isAccordionAdornment as le,LabelType as re}from"@react-typed-forms/schemas";import{useComponentTracking as ae,formControlProps as se,useControl as oe,useControlEffect as ce,RenderArrayElements as ie,useComputed as de,Fcheckbox as ue,useTrackedComponent as me,newControl as pe,RenderElements as ye,setFields as ve}from"@react-typed-forms/core";function fe(){return fe=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},fe.apply(null,arguments)}function Ce(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 Ne=["data","display","className","style"];function he(t={}){return{render:n=>/*#__PURE__*/e.createElement(xe,fe({},t,n)),type:"display"}}function xe(t){var n=ae();try{let{data:n,display:l,className:r,style:a}=t,u=Ce(t,Ne);switch(n.type){case o.Icon:/*#__PURE__*/return e.createElement("i",{style:a,className:s(d(r),l?l.value:n.iconClass)});case o.Text:/*#__PURE__*/return e.createElement("div",{style:a,className:c(r,u.textClassName)},l?i(l.value):n.text);case o.Html:/*#__PURE__*/return e.createElement("div",{style:a,className:c(r,u.htmlClassName),dangerouslySetInnerHTML:{__html:l?i(l.value):n.html}});case o.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 be=["control","convert"],ge=["errorText","value","onChange"];function Ee(t){var n=ae();try{let{control:l,convert:r}=t,a=Ce(t,be);const s=se(l),{value:o}=s,c=Ce(s,ge),i=oe(()=>d(o));return ce(()=>l.value,e=>i.value=d(e)),/*#__PURE__*/e.createElement("input",fe({},c,{type:r[0],value:i.value,onChange:e=>{i.value=e.target.value;const t=r[1](e.target.value);void 0!==t&&(l.value=t)}},a));function d(e){return null==e?"":r[2](e)}}finally{n()}}function Oe(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 Te=["state","options","className","convert","required","emptyText","requiredText","readonly"];function ke(t={}){return m((n,l)=>{var r;/*#__PURE__*/return e.createElement(Ae,{className:c(n.className,t.className),state:n.control,id:n.id,readonly:n.readonly,options:null!=(r=n.options)?r:[],required:n.required,emptyText:t.emptyText,requiredText:t.requiredText,convert:Se(n.field.type)})},{options:!0})}function Ae(l){var r=ae();try{let{state:a,options:s,className:o,convert:c,required:i,emptyText:d="N/A",requiredText:u="<please select>",readonly:m}=l,p=Ce(l,Te);const{value:y,disabled:v}=a,[f]=t(!i||null==y),C=n(()=>Object.fromEntries(s.map(e=>[c(e.value),e.value])),[s]),N=n(()=>new Set(s.filter(e=>e.group).map(e=>e.group)),[s]);/*#__PURE__*/return e.createElement("select",fe({},p,{className:o,onChange:e=>a.value=C[e.target.value],value:c(y),disabled:v||m}),f&&/*#__PURE__*/e.createElement("option",{value:""},i?u:d),[...N.keys()].map(t=>/*#__PURE__*/e.createElement("optgroup",{key:t,label:t},s.filter(e=>e.group===t).map(h))),s.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{r()}}function Se(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 we(t={}){return m(n=>/*#__PURE__*/e.createElement(Fe,fe({classes:t,controlClasses:n.renderOptions},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 Ie(t={}){return m(n=>/*#__PURE__*/e.createElement(Fe,fe({classes:t,controlClasses:n.renderOptions},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=>qe(null!=e?e:[],t.value,n))},control:n.control,type:"checkbox",entryAdornment:p(n)})),{collection:!0,renderType:y.CheckList})}function Fe({control:t,options:n,readonly:l,className:r,id:a,type:o,isChecked:i,setChecked:d,entryAdornment:u,classes:m,controlClasses:p={}}){var y=ae();try{const{disabled:y}=t,v="r"+t.uniqueId;/*#__PURE__*/return e.createElement("div",{className:r,id:a},/*#__PURE__*/e.createElement(ie,{array:null==n?void 0:n.filter(e=>null!=e.value)},(n,r)=>{const a=de(()=>i(t,n)).value,f=a?c(null==p?void 0:p.selectedClass,m.selectedClass):c(null==p?void 0:p.notSelectedClass,m.notSelectedClass);/*#__PURE__*/return e.createElement("div",{className:s(c(null==p?void 0:p.entryWrapperClass,m.entryWrapperClass),f),onClick:()=>!l&&d(t,n,!a)},/*#__PURE__*/e.createElement("div",{className:m.entryClass},/*#__PURE__*/e.createElement("input",{id:v+"_"+r,className:m.checkClass,type:o,name:v,readOnly:l,disabled:y,checked:a,onChange:e=>{!l&&d(t,n,e.target.checked)}}),/*#__PURE__*/e.createElement("label",{className:m.labelClass,htmlFor:v+"_"+r},n.name)),null==u?void 0:u(n,r,a))}))}finally{y()}}function qe(e,t,n){return n===e.includes(t)?e:n?[...e,t]:e.filter(e=>e!==t)}function Le(t={}){return m((n,l)=>r=>fe({},r,{label:void 0,children:/*#__PURE__*/e.createElement("div",{className:c(n.className,t.entryClass)},/*#__PURE__*/e.createElement(ue,{id:n.id,control:n.control.as(),style:n.style,className:t.checkClass}),r.label&&l.renderLabel(r.label,void 0,void 0))}),{renderType:y.Checkbox})}function Ve(t={}){return v((n,l)=>{const r=f(n,l);return{children:r.wrapLayout(/*#__PURE__*/e.createElement(De,fe({layout:r},t))),className:c(r.className,t.className),style:r.style,divRef:e=>e&&n.errorControl?n.errorControl.meta.scrollElement=e:void 0}})}function De({errorClass:t,renderError:n=n=>n&&/*#__PURE__*/e.createElement("div",{className:t},n),layout:{controlEnd:l,controlStart:r,label:a,children:s,errorControl:o}}){var c=ae();try{/*#__PURE__*/return e.createElement(e.Fragment,null,a,r,s,n(o&&o.touched?o.error:void 0),l)}finally{c()}}function Re({control:t,className:n,emptyText:l,schemaInterface:r,field:a,style:s}){var o=ae();try{var c;const o=t.value,i=null!=(c=r.isEmptyValue(a,o)?l:r.textValue(a,o))?c:"";/*#__PURE__*/return e.createElement("div",{style:s,className:n},i)}finally{o()}}function Me({children:t,accordion:n,contentStyle:l,contentClassName:r,designMode:a,iconOpenClass:o,iconClosedClass:c,className:i,renderTitle:d=e=>e,renderToggler:u,renderers:m,titleClass:p,useCss:y,dataContext:v}){var f=ae();try{var C;const f=(null!=(C=v.dataNode)?C:v.parentNode).control,N=oe(!!n.defaultExpanded);f&&!f.meta.accordionState&&(f.meta.accordionState=N);const h=N.value,x=h||a?l:fe({},l,{display:"none"}),b=m.renderLabelText(d(n.title,N)),g=u?u(N,b):/*#__PURE__*/e.createElement("button",{className:i,onClick:()=>N.setValue(e=>!e)},/*#__PURE__*/e.createElement("label",{className:p},b),/*#__PURE__*/e.createElement("i",{className:s(h?o:c)}));/*#__PURE__*/return e.createElement(e.Fragment,null,g,(y||h||a)&&/*#__PURE__*/e.createElement("div",{style:x,className:r},t))}finally{f()}}function _e(e){return e.meta.accordionState}function je({formNode:t,className:n,options:l,renderChild:r,designMode:a}){var o=ae();try{const i=oe(0),{tabClass:d,labelClass:u,tabListClass:m,inactiveClass:p,activeClass:y,contentClass:v}=l,f=i.value;return a?/*#__PURE__*/e.createElement(e.Fragment,null,t.getChildNodes().map((e,t)=>C([e],t))):C(t.getChildNodes(),0);function C(t,a){/*#__PURE__*/return e.createElement("div",{key:a,className:c(n,l.className)},/*#__PURE__*/e.createElement("ul",{className:c(null,m)},t.map((t,n)=>/*#__PURE__*/e.createElement("li",{key:n,className:c(null,d),onClick:()=>i.value=n},/*#__PURE__*/e.createElement("span",{className:c(null,s(u,n==f?y:p))},t.definition.title?t.definition.title:"<untitled>")))),/*#__PURE__*/e.createElement("div",{className:c(null,v)},r(f,t[f])))}}finally{o()}}function Ge(t){const n=function(t={}){return C((n,l)=>/*#__PURE__*/e.createElement(je,fe({},n,{options:t})),{renderType:N.Tabs})}(null==t?void 0:t.tabs),{className:l,gridStyles:r=m,defaultGridColumns:a=2,gridClassName:o,standardClassName:i,flexClassName:d,defaultFlexGap:u}=null!=t?t:{};function m({columns:e=a}){return{className:o,style:{display:"grid",gridTemplateColumns:`repeat(${e}, 1fr)`}}}return{type:"group",render:function(t,a){const{renderChild:o,renderOptions:m,formNode:p}=t;if(h(m))return n.render(t,a);if(x(m)&&!t.designMode)/*#__PURE__*/return e.createElement(He,fe({},t,{renderOptions:m}));const{style:y,className:v}=b(m)?r(m):g(m)?function(e){return{className:d,style:{display:"flex",gap:e.gap?e.gap:u,flexDirection:e.direction?e.direction:void 0}}}(m):{className:i};/*#__PURE__*/return e.createElement("div",{className:c(t.className,s(l,v)),style:y},p.getChildNodes().map((e,t)=>o(t,e)))}}}function He(t){var n=ae();try{const{useEvalExpression:n,renderOptions:l}=t,r=n(null==l?void 0:l.childIndexExpression,e=>"string"==e?parseInt(e):e),a=me(t=>{const n=r.runHook(t.dataContext,r.state),l=null==n?void 0:n.value,a=t.formNode.getChildNodes();/*#__PURE__*/return e.createElement("div",null,"number"==typeof l&&l<a.length&&l>=0&&t.renderChild(l,a[l]))},[r.deps]);/*#__PURE__*/return e.createElement(a,t)}finally{n()}}function Pe(){return E(t=>/*#__PURE__*/e.createElement(Be,t))}function Be({visibility:t,children:n,className:r,style:a,divRef:o}){var c=ae();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:s(r),style:a,ref:o},n):/*#__PURE__*/e.createElement(e.Fragment,null)}finally{c()}}function Je(t){return m(n=>/*#__PURE__*/e.createElement(We,{renderOptions:n.renderOptions,className:c(n.className,t),dataNode:n.dataNode,dataContext:n.dataContext,control:n.control,readonly:n.readonly}),{renderType:y.Jsonata})}function We({control:t,renderOptions:n,readonly:l,className:r,dataContext:a,dataNode:s}){var o=ae();try{const o=null!=s.elementIndex?s:a.parentNode,c=de(()=>({value:t.value,readonly:l,disabled:t.disabled,formData:a.formData,dataPath:O(s)})),d=T(n.expression,k(o).control,O(o),c,i);/*#__PURE__*/return e.createElement("div",{className:r,dangerouslySetInnerHTML:{__html:d.value}})}finally{o()}}const Ue=["control","field","renderOptions"];function Ye(){return m((t,n)=>{var l,r;let{control:a,field:s}=t,o=Ce(t,Ue);const c=null!=(r=(l=a.meta).nullControl)?r:l.nullControl=pe(null!=a.current.value);return t=>{const l=n.renderData(fe({},o,{control:c,field:fe({},s,{type:u.Bool}),renderOptions:{type:y.Checkbox}}))(t);return fe({},l,{children:/*#__PURE__*/e.createElement($e,{control:a,nullControl:c,children:l.children,readonly:o.readonly,defaultValue:o.definition.defaultValue})})}})}function $e({children:e,nullControl:t,control:n,defaultValue:l,readonly:r}){return ce(()=>r,e=>t.disabled=e,!0),ce(()=>t.value,e=>{var r;e?n.value=null!=(r=t.meta.nonNullValue)?r:l:(t.meta.nonNullValue=n.value,n.value=null)}),e}function ze(t){return m((n,l)=>/*#__PURE__*/e.createElement(Ke,{dataProps:n,renderers:l,defaultActions:t}),{renderType:y.Array,collection:!0})}function Ke({dataProps:t,renderers:n,defaultActions:l}){var r;const{renderOptions:a,control:s,field:o,readonly:c,designMode:i,required:d,renderChild:u,definition:m,className:p,style:v,useChildVisibility:f,dataContext:C,formNode:h}=t,{addText:x,noAdd:b,noRemove:g,removeText:E}=A(S(a)?a:{},l),O=S(a)?a.childOptions:void 0,T=!w(o),k=I(T?{type:F.Data,field:m.field,children:m.children,renderOptions:null!=O?O:{type:y.Standard},hideTitle:!0}:{type:F.Group,children:m.children,groupOptions:{type:N.Standard,hideTitle:!0}},h.tree),D=(null!=(r=m.children)?r:[]).map(e=>[f(e,void 0,!0),e]),R=q(D,e=>e[0].deps),M=me(Qe,[R]),_=fe({},L(s.as(),o,{addText:x,removeText:E,noAdd:b,noRemove:g,readonly:c,disabled:s.disabled,designMode:i}),{required:d,renderElement:(t,n)=>/*#__PURE__*/e.createElement(M,{index:t,renderChildElement:j,dataContext:C,visibilities:D,wrap:n}),className:p||void 0,style:v},V(m));return n.renderArray(_);function j(e,t){var n,l;return u(null!=(n=null==(l=s.elements)?void 0:l[e].uniqueId)?n:e,k,T?{elementIndex:e}:{parentDataNode:t})}}function Qe({index:e,renderChildElement:t,visibilities:n,wrap:l,dataContext:r}){const a=r.dataNode.getChildElement(e),s=n.map(([e,t])=>e.runHook(fe({},r,{parentNode:a,dataNode:D(t,a)}),e.state).value);if(0==s.length||s.some(e=>!0===e))return l(t(e,a))}function Xe(t){return{render:(n,{renderAction:l})=>/*#__PURE__*/e.createElement(Ze,fe({},n,t,{renderAction:l})),type:"array"}}function Ze(t){var n=ae();try{const{renderElement:n,className:l,removableClass:r,childClass:a,removableChildClass:o,removeActionClass:c,addActionClass:i,arrayControl:d,renderAction:u,style:m}=t,{addAction:p,removeAction:y}=R(t);/*#__PURE__*/return e.createElement("div",{style:m},/*#__PURE__*/e.createElement("div",{className:s(l,y&&r)},/*#__PURE__*/e.createElement(ye,{control:d},(t,l)=>n(l,t=>y?/*#__PURE__*/e.createElement(e.Fragment,null,/*#__PURE__*/e.createElement("div",{className:s(a,o)},t),/*#__PURE__*/e.createElement("div",{className:c},u(y(l)))):/*#__PURE__*/e.createElement("div",{className:a},t)))),p&&/*#__PURE__*/e.createElement("div",{className:i},u(p)))}finally{n()}}const et="ValueForField",tt={RenderOptions:{value:et,name:"Value For Field",fields:M({fieldRef:_("Field Reference")})}};function nt(t){return m((n,l)=>{var r;const{fieldRef:a}=n.renderOptions,s=a?null==(r=j(a,n.dataContext.parentNode))||null==(r=r.control)?void 0:r.value:void 0,o=s?G(s,t.schema):void 0;return o?/*#__PURE__*/e.createElement(lt,{renderer:l,schema:o,control:n.control}):/*#__PURE__*/e.createElement(e.Fragment,null,s?"No schema node for "+s:"")},{renderType:et})}function lt({schema:t,renderer:l,control:r}){var a=ae();try{const a=t.field.field,s=oe({},void 0,e=>ve(e,{[a]:r})),o=n(()=>H(P([t.field]),[]),[t]),c=B(J(o),l,{disabled:r.disabled},W(t.parent,s));/*#__PURE__*/return e.createElement(c,null)}finally{a()}}function rt({control:t,className:n}){var l=ae();try{const l=r(null);return ce(()=>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 at(t,n={}){return U(t,({onClick:t,actionText:l,className:r,style:a,actionId:s,actionData:o,disabled:i})=>{var d;/*#__PURE__*/return e.createElement("button",{className:c(r,n.className),disabled:i,style:a,onClick:t},null!=(d=null==n.renderContent?void 0:n.renderContent(l,s,o))?d:l)})}const st=[{name:"Yes",value:!0},{name:"No",value:!1}];function ot(t={}){var n,l,r;const a=Je(t.jsonataClass),s=Ye(),o=(i=t.multilineClass,m(t=>/*#__PURE__*/e.createElement(rt,fe({},t,{className:c(t.className,i)}))));var i;const d=Le(null!=(n=t.checkOptions)?n:t.checkboxOptions),p=ke(t.selectOptions),v=we(null!=(l=t.radioOptions)?l:t.checkOptions),f=Ie(null!=(r=t.checkListOptions)?r:t.checkOptions),{inputClass:C,booleanOptions:N,optionRenderer:h,displayOnlyClass:x,defaultEmptyText:b}=fe({optionRenderer:p,booleanOptions:st},t),g=ze(t.arrayOptions);return m((t,n)=>{const{field:l}=t,r=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(r===u.Compound){var E;const e=null!=(E=Y(i)?i.groupOptions:void 0)?E:{type:"Standard",hideTitle:!0};return n.renderGroup(fe({},t,{renderOptions:e}))}var O;if(r==u.Any)/*#__PURE__*/return e.createElement(e.Fragment,null,"Can't render field: ",null!=(O=l.displayName)?O:l.field);if(t.displayOnly||$(i))return n=>fe({},n,{className:"@ "+c(n.className,x),children:/*#__PURE__*/e.createElement(Re,{field:t.field,schemaInterface:t.dataContext.schemaInterface,control:t.control,className:t.className,style:t.style,emptyText:$(i)&&i.emptyText?i.emptyText:b})});if(null!=N&&r===u.Bool&&null==t.options)return n.renderData(fe({},t,{options:N}));if(m===y.Standard&&z(t))return h.render(t,n);switch(m){case y.NullToggle:return s.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 a.render(t,n)}if(K(i)&&i.multiline)return o.render(t,n);const T=K(i)?i.placeholder:void 0;/*#__PURE__*/return e.createElement(Ee,{className:c(t.className,C),style:t.style,id:t.id,readOnly:t.readonly,control:t.control,placeholder:null!=T?T:void 0,convert:Oe(t.field.type)})})}function ct(t={}){return{type:"adornment",render:({adornment:n,designMode:l,dataContext:r,useExpr:s},o)=>({apply:c=>{if(Q(n)&&s){const d=s(n.expression,e=>e),u=X({value:d}),m=a(p,[u]);return Z(t=>/*#__PURE__*/e.createElement(m,{children:t,parentContext:r,adornment:n}))(c);function p({children:e,adornment:t,parentContext:n}){const{value:l}=u(n),r=j(t.field,n.parentNode).control,a=!t.defaultOnly;return ce(()=>[null==l?void 0:l.value,null==(null==r?void 0:r.value)],([e])=>{null==r||r.setValue(t=>a||null==t?e:t)},!0),e}}var i;return ee(n)?te(null!=(i=n.placement)?i:ne.ControlStart,/*#__PURE__*/e.createElement("i",{className:n.iconClass}))(c):le(n)?Z(a=>/*#__PURE__*/e.createElement(Me,fe({renderers:o,children:a,accordion:n,contentStyle:c.style,contentClassName:c.className,designMode:l,dataContext:r},t.accordion)))(c):void 0},priority:0,adornment:n})}}function it(t){const{className:n,groupLabelClass:l,controlLabelClass:r,requiredElement:a,labelContainer:o}=fe({requiredElement:/*#__PURE__*/e.createElement("span",null," *"),labelContainer:e=>e},t);return{render:(t,i,d,u)=>t.type==re.Text?t.label:o(/*#__PURE__*/e.createElement(e.Fragment,null,/*#__PURE__*/e.createElement("label",{htmlFor:t.forId,className:c(t.className,s(n,t.type===re.Group&&l,t.type===re.Control&&r))},i,u.renderLabelText(t.label),t.required&&a),d)),type:"label"}}function dt(e={}){return{data:ot(e.data),display:he(e.display),action:at(void 0,e.action),array:Xe(e.array),group:Ge(e.group),label:it(e.label),adornment:ct(e.adornment),renderLayout:Ve(e.layout),visibility:Pe()}}function ut(){return dt({layout:{className:"control"},group:{className:"group"},array:{className:"control-array"},action:{className:"action"},data:{inputClass:"data"},display:{htmlClassName:"html",textClassName:"text"}})}const mt={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",tabs:{className:"",tabListClass:"flex flex-wrap text-sm font-medium text-center text-gray-500 border-b border-gray-200 dark:border-gray-700 dark:text-gray-400",tabClass:"me-2",labelClass:"inline-flex items-center justify-center p-4 border-b-2 group",inactiveClass:"border-transparent rounded-t-lg hover:text-gray-600 hover:border-gray-300 dark:hover:text-gray-300 cursor-pointer",activeClass:"text-blue-600 border-blue-600 rounded-t-lg active dark:text-blue-500 dark:border-blue-500",contentClass:"my-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{Fe as CheckButtons,Ee as ControlInput,Ke as DataArrayRenderer,Me as DefaultAccordion,Ze as DefaultArrayRenderer,st as DefaultBoolOptions,xe as DefaultDisplay,Re as DefaultDisplayOnly,De as DefaultLayout,Be as DefaultVisibility,We as JsonataRenderer,Ae as SelectDataRenderer,tt as ValueForFieldExtension,at as createButtonActionRenderer,Ie as createCheckListRenderer,Le as createCheckboxRenderer,ut as createClassStyledRenderers,ct as createDefaultAdornmentRenderer,ze as createDefaultArrayDataRenderer,Xe as createDefaultArrayRenderer,ot as createDefaultDataRenderer,he as createDefaultDisplayRenderer,Ge as createDefaultGroupRenderer,it as createDefaultLabelRenderer,Ve as createDefaultLayoutRenderer,dt as createDefaultRenderers,Pe as createDefaultVisibilityRenderer,Oe as createInputConversion,Je as createJsonataRenderer,Ye as createNullToggleRenderer,we as createRadioRenderer,Se as createSelectConversion,ke as createSelectRenderer,nt as createValueForFieldRenderer,mt as defaultTailwindTheme,_e as getAccordionState,qe 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/TabsRenderer.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 CheckEntryClasses,\n createDataRenderer,\n DataRenderType,\n FieldOption,\n fieldOptionAdornment,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport clsx from \"clsx\";\n\nexport interface CheckRendererOptions {\n className?: string;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n entryWrapperClass?: string;\n selectedClass?: string;\n notSelectedClass?: string;\n}\nexport function createRadioRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n classes={options}\n controlClasses={p.renderOptions as CheckEntryClasses}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => control.value == o.value}\n setChecked={(c, o) => (c.value = o.value)}\n control={p.control}\n type=\"radio\"\n entryAdornment={fieldOptionAdornment(p)}\n />\n ),\n {\n renderType: DataRenderType.Radio,\n },\n );\n}\n\nexport function createCheckListRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n classes={options}\n controlClasses={p.renderOptions as CheckEntryClasses}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => {\n const v = control.value;\n return Array.isArray(v) ? v.includes(o.value) : false;\n }}\n setChecked={(c, o, checked) => {\n c.setValue((x) => setIncluded(x ?? [], o.value, checked));\n }}\n control={p.control}\n type=\"checkbox\"\n entryAdornment={fieldOptionAdornment(p)}\n />\n ),\n {\n collection: true,\n renderType: DataRenderType.CheckList,\n },\n );\n}\n\nexport interface CheckButtonsProps {\n id?: string;\n className?: string;\n options?: FieldOption[] | null;\n control: Control<any>;\n classes: CheckRendererOptions;\n controlClasses?: CheckEntryClasses;\n readonly?: boolean;\n type: \"checkbox\" | \"radio\";\n isChecked: (c: Control<any>, o: FieldOption) => boolean;\n setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;\n entryAdornment?: (c: FieldOption, i: number, selected: boolean) => ReactNode;\n}\n\nexport function CheckButtons({\n control,\n options,\n readonly,\n className,\n id,\n type,\n isChecked,\n setChecked,\n entryAdornment,\n classes,\n controlClasses = {},\n}: CheckButtonsProps) {\n const { disabled } = control;\n const name = \"r\" + control.uniqueId;\n return (\n <div className={className} id={id}>\n <RenderArrayElements array={options?.filter((x) => x.value != null)}>\n {(o, i) => {\n const checked = useComputed(() => isChecked(control, o)).value;\n const selOrUnsel = checked\n ? rendererClass(\n controlClasses?.selectedClass,\n classes.selectedClass,\n )\n : rendererClass(\n controlClasses?.notSelectedClass,\n classes.notSelectedClass,\n );\n return (\n <div\n className={clsx(\n rendererClass(\n controlClasses?.entryWrapperClass,\n classes.entryWrapperClass,\n ),\n selOrUnsel,\n )}\n onClick={() => !readonly && setChecked(control, o, !checked)}\n >\n <div className={classes.entryClass}>\n <input\n id={name + \"_\" + i}\n className={classes.checkClass}\n type={type}\n name={name}\n readOnly={readonly}\n disabled={disabled}\n checked={checked}\n onChange={(x) => {\n !readonly && setChecked(control, o, x.target.checked);\n }}\n />\n <label className={classes.labelClass} htmlFor={name + \"_\" + i}>\n {o.name}\n </label>\n </div>\n {entryAdornment?.(o, i, checked)}\n </div>\n );\n }}\n </RenderArrayElements>\n </div>\n );\n}\n\nexport function setIncluded<A>(array: A[], elem: A, included: boolean): A[] {\n const already = array.includes(elem);\n if (included === already) {\n return array;\n }\n if (included) {\n return [...array, elem];\n }\n return array.filter((e) => e !== elem);\n}\n\nexport function createCheckboxRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (props, renderer) => (p) => ({\n ...p,\n label: undefined,\n children: (\n <div className={rendererClass(props.className, options.entryClass)}>\n <Fcheckbox\n id={props.id}\n control={props.control.as()}\n style={props.style}\n className={options.checkClass}\n />\n {p.label && renderer.renderLabel(p.label, undefined, undefined)}\n </div>\n ),\n }),\n { renderType: DataRenderType.Checkbox },\n );\n}\n","import React, { ReactNode } from \"react\";\nimport {\n createLayoutRenderer,\n RenderedLayout,\n rendererClass,\n renderLayoutParts,\n} from \"@react-typed-forms/schemas\";\n\nexport interface DefaultLayoutRendererOptions {\n className?: string;\n errorClass?: string;\n renderError?: (errorText: string | null | undefined) => ReactNode;\n}\n\nexport function createDefaultLayoutRenderer(\n options: DefaultLayoutRendererOptions = {},\n) {\n return createLayoutRenderer((props, renderers) => {\n const layout = renderLayoutParts(props, renderers);\n return {\n children: layout.wrapLayout(\n <DefaultLayout layout={layout} {...options} />,\n ),\n className: rendererClass(layout.className, options.className),\n style: layout.style,\n divRef: (e) =>\n e && props.errorControl\n ? (props.errorControl.meta.scrollElement = e)\n : undefined,\n };\n });\n}\n\nexport function DefaultLayout({\n errorClass,\n renderError = (e) => e && <div className={errorClass}>{e}</div>,\n layout: { controlEnd, controlStart, label, children, errorControl },\n}: DefaultLayoutRendererOptions & {\n layout: RenderedLayout;\n}) {\n const ec = errorControl;\n const errorText = ec && ec.touched ? ec.error : undefined;\n return (\n <>\n {label}\n {controlStart}\n {children}\n {renderError(errorText)}\n {controlEnd}\n </>\n );\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport {\n rendererClass,\n SchemaField,\n SchemaInterface,\n} from \"@react-typed-forms/schemas\";\n\nexport function DefaultDisplayOnly({\n control,\n className,\n emptyText,\n schemaInterface,\n field,\n style,\n}: {\n control: Control<any>;\n field: SchemaField;\n schemaInterface: SchemaInterface;\n className?: string;\n style?: React.CSSProperties;\n emptyText?: string | null;\n}) {\n const v = control.value;\n const text =\n (schemaInterface.isEmptyValue(field, v)\n ? emptyText\n : schemaInterface.textValue(field, v)) ?? \"\";\n return (\n <div style={style} className={className}>\n {text}\n </div>\n );\n}\n","import React, { CSSProperties, Fragment, ReactElement } from \"react\";\nimport { Control, useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\nimport { DefaultAccordionRendererOptions } from \"../createDefaultRenderers\";\nimport {\n AccordionAdornment,\n ControlDataContext,\n FormRenderer,\n} from \"@react-typed-forms/schemas\";\n\nexport function DefaultAccordion({\n children,\n accordion,\n contentStyle,\n contentClassName,\n designMode,\n iconOpenClass,\n iconClosedClass,\n className,\n renderTitle = (t) => t,\n renderToggler,\n renderers,\n titleClass,\n useCss,\n dataContext,\n}: {\n children: ReactElement;\n accordion: Partial<AccordionAdornment>;\n contentStyle?: CSSProperties;\n contentClassName?: string;\n designMode?: boolean;\n renderers: FormRenderer;\n dataContext: ControlDataContext;\n} & DefaultAccordionRendererOptions) {\n const dataControl = (dataContext.dataNode ?? dataContext.parentNode).control;\n const open = useControl(!!accordion.defaultExpanded);\n if (dataControl && !dataControl.meta.accordionState) {\n dataControl.meta.accordionState = open;\n }\n const isOpen = open.value;\n const fullContentStyle =\n isOpen || designMode ? contentStyle : { ...contentStyle, display: \"none\" };\n const title = renderers.renderLabelText(renderTitle(accordion.title, open));\n const toggler = renderToggler ? (\n renderToggler(open, title)\n ) : (\n <button className={className} onClick={() => open.setValue((x) => !x)}>\n <label className={titleClass}>{title}</label>\n <i className={clsx(isOpen ? iconOpenClass : iconClosedClass)} />\n </button>\n );\n\n return (\n <>\n {toggler}\n {(useCss || isOpen || designMode) && (\n <div style={fullContentStyle} className={contentClassName}>\n {children}\n </div>\n )}\n </>\n );\n}\n\nexport function getAccordionState(\n c: Control<unknown>,\n): Control<boolean> | undefined {\n return c.meta.accordionState;\n}\n","import {\n controlTitle,\n createGroupRenderer,\n FormNode,\n GroupRendererProps,\n GroupRenderType,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport React from \"react\";\nimport { useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\n\nexport interface TabsRendererOptions {\n className?: string;\n tabListClass?: string;\n tabClass?: string;\n labelClass?: string;\n activeClass?: string;\n inactiveClass?: string;\n contentClass?: string;\n}\n\nexport function createTabsRenderer(options: TabsRendererOptions = {}) {\n return createGroupRenderer(\n (p, renderer) => <TabsGroupRenderer {...p} options={options} />,\n {\n renderType: GroupRenderType.Tabs,\n },\n );\n}\n\nexport function TabsGroupRenderer({\n formNode,\n className,\n options,\n renderChild,\n designMode,\n}: GroupRendererProps & { options: TabsRendererOptions }) {\n const tabIndex = useControl(0);\n const {\n tabClass,\n labelClass,\n tabListClass,\n inactiveClass,\n activeClass,\n contentClass,\n } = options;\n const currentTab = tabIndex.value;\n return designMode ? (\n <>{formNode.getChildNodes().map((x, i) => renderTabs([x], i))}</>\n ) : (\n renderTabs(formNode.getChildNodes(), 0)\n );\n\n function renderTabs(tabs: FormNode[], key: number) {\n return (\n <div key={key} className={rendererClass(className, options.className)}>\n <ul className={rendererClass(null, tabListClass)}>\n {tabs.map((x, i) => (\n <li\n key={i}\n className={rendererClass(null, tabClass)}\n onClick={() => (tabIndex.value = i)}\n >\n <span\n className={rendererClass(\n null,\n clsx(\n labelClass,\n i == currentTab ? activeClass : inactiveClass,\n ),\n )}\n >\n {x.definition.title ? x.definition.title : \"<untitled>\"}\n </span>\n </li>\n ))}\n </ul>\n <div className={rendererClass(null, contentClass)}>\n {renderChild(currentTab, tabs[currentTab])}\n </div>\n </div>\n );\n }\n}\n","import {\n ControlLayoutProps,\n FlexRenderer,\n FormRenderer,\n GridRenderer,\n GroupRendererProps,\n GroupRendererRegistration,\n isFlexRenderer,\n isGridRenderer,\n isSelectChildRenderer,\n isTabsRenderer,\n rendererClass,\n SelectChildRenderer,\n} from \"@react-typed-forms/schemas\";\nimport clsx from \"clsx\";\nimport React, { CSSProperties, useCallback } from \"react\";\nimport { useTrackedComponent } from \"@react-typed-forms/core\";\nimport { createTabsRenderer, TabsRendererOptions } from \"./TabsRenderer\";\n\ninterface StyleProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport interface DefaultGroupRendererOptions {\n className?: string;\n standardClassName?: string;\n gridStyles?: (columns: GridRenderer) => StyleProps;\n gridClassName?: string;\n defaultGridColumns?: number;\n flexClassName?: string;\n defaultFlexGap?: string;\n tabs?: TabsRendererOptions;\n}\n\nexport function createDefaultGroupRenderer(\n options?: DefaultGroupRendererOptions,\n): GroupRendererRegistration {\n const tabsRenderer = createTabsRenderer(options?.tabs);\n const {\n className,\n gridStyles = defaultGridStyles,\n defaultGridColumns = 2,\n gridClassName,\n standardClassName,\n flexClassName,\n defaultFlexGap,\n } = options ?? {};\n\n function defaultGridStyles({\n columns = defaultGridColumns,\n }: GridRenderer): StyleProps {\n return {\n className: gridClassName,\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n },\n };\n }\n\n function flexStyles(options: FlexRenderer): StyleProps {\n return {\n className: flexClassName,\n style: {\n display: \"flex\",\n gap: options.gap ? options.gap : defaultFlexGap,\n flexDirection: options.direction\n ? (options.direction as any)\n : undefined,\n },\n };\n }\n\n function render(props: GroupRendererProps, renderers: FormRenderer) {\n const { renderChild, renderOptions, formNode } = props;\n if (isTabsRenderer(renderOptions))\n return tabsRenderer.render(props, renderers);\n if (isSelectChildRenderer(renderOptions) && !props.designMode) {\n return (\n <SelectChildGroupRenderer {...props} renderOptions={renderOptions} />\n );\n }\n\n const { style, className: gcn } = isGridRenderer(renderOptions)\n ? gridStyles(renderOptions)\n : isFlexRenderer(renderOptions)\n ? flexStyles(renderOptions)\n : ({ className: standardClassName } as StyleProps);\n return (\n <div\n className={rendererClass(props.className, clsx(className, gcn))}\n style={style}\n >\n {formNode.getChildNodes().map((c, i) => renderChild(i, c))}\n </div>\n );\n }\n\n return { type: \"group\", render };\n}\n\ntype SelectChildProps = Pick<\n GroupRendererProps,\n \"useEvalExpression\" | \"dataContext\" | \"formNode\" | \"renderChild\"\n> & {\n renderOptions: SelectChildRenderer;\n};\nfunction SelectChildGroupRenderer(props: SelectChildProps) {\n const { useEvalExpression, renderOptions } = props;\n const dynHook = useEvalExpression(renderOptions?.childIndexExpression, (x) =>\n x == \"string\" ? parseInt(x) : x,\n );\n const Render = useTrackedComponent(\n (p: SelectChildProps) => {\n const ctrl = dynHook.runHook(p.dataContext, dynHook.state);\n const childIndex = ctrl?.value;\n const childDefinitions = p.formNode.getChildNodes();\n return (\n <div>\n {typeof childIndex === \"number\" &&\n childIndex < childDefinitions.length &&\n childIndex >= 0 &&\n p.renderChild(childIndex, childDefinitions[childIndex])}\n </div>\n );\n },\n [dynHook.deps],\n );\n return <Render {...props} />;\n}\n","import React, { useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport {\n createVisibilityRenderer,\n VisibilityRendererProps,\n} from \"@react-typed-forms/schemas\";\n\nexport function createDefaultVisibilityRenderer() {\n return createVisibilityRenderer((props) => <DefaultVisibility {...props} />);\n}\n\nexport function DefaultVisibility({\n visibility,\n children,\n className,\n style,\n divRef,\n}: VisibilityRendererProps) {\n const v = visibility.value;\n useEffect(() => {\n if (v) {\n visibility.setValue((ex) => ({ visible: v.visible, showing: v.visible }));\n }\n }, [v?.visible]);\n return v?.visible ? (\n <div className={clsx(className)} style={style} ref={divRef}>\n {children}\n </div>\n ) : (\n <></>\n );\n}\n","import { Control, useComputed } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport {\n coerceToString,\n ControlDataContext,\n createDataRenderer,\n DataRenderType,\n getJsonPath,\n getRootDataNode,\n JsonataRenderOptions,\n rendererClass,\n SchemaDataNode,\n useJsonataExpression,\n} from \"@react-typed-forms/schemas\";\n\nexport function createJsonataRenderer(className?: string) {\n return createDataRenderer(\n (p) => (\n <JsonataRenderer\n renderOptions={p.renderOptions as JsonataRenderOptions}\n className={rendererClass(p.className, className)}\n dataNode={p.dataNode}\n dataContext={p.dataContext}\n control={p.control}\n readonly={p.readonly}\n />\n ),\n { renderType: DataRenderType.Jsonata },\n );\n}\n\nexport function JsonataRenderer({\n control,\n renderOptions,\n readonly,\n className,\n dataContext,\n dataNode,\n}: {\n control: Control<any>;\n renderOptions: JsonataRenderOptions;\n className?: string;\n dataContext: ControlDataContext;\n dataNode: SchemaDataNode;\n readonly: boolean;\n}) {\n const sdn = dataNode.elementIndex != null ? dataNode : dataContext.parentNode;\n const bindings = useComputed(() => ({\n value: control.value,\n readonly,\n disabled: control.disabled,\n formData: dataContext.formData,\n dataPath: getJsonPath(dataNode),\n }));\n const rendered = useJsonataExpression(\n renderOptions.expression,\n getRootDataNode(sdn).control!,\n getJsonPath(sdn),\n bindings,\n coerceToString,\n );\n return (\n <div\n className={className}\n dangerouslySetInnerHTML={{ __html: rendered.value }}\n />\n );\n}\n","import { 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 FormNode,\n FormRenderer,\n getLengthRestrictions,\n GroupedControlsDefinition,\n GroupRenderType,\n isArrayRenderer,\n isCompoundField,\n lookupDataNode,\n makeHookDepString,\n mergeObjects,\n nodeForControl,\n SchemaDataNode,\n} from \"@react-typed-forms/schemas\";\n\nexport function createDefaultArrayDataRenderer(\n defaultActions?: ArrayActionOptions,\n): DataRendererRegistration {\n return createDataRenderer(\n (props, renderers) => {\n return (\n <DataArrayRenderer\n dataProps={props}\n renderers={renderers}\n defaultActions={defaultActions}\n />\n );\n },\n { renderType: DataRenderType.Array, collection: true },\n );\n}\n\nexport function DataArrayRenderer({\n dataProps,\n renderers,\n defaultActions,\n}: {\n renderers: FormRenderer;\n dataProps: DataRendererProps;\n defaultActions?: ArrayActionOptions;\n}) {\n const {\n renderOptions,\n control,\n field,\n readonly,\n designMode,\n required,\n renderChild,\n definition,\n className,\n style,\n useChildVisibility,\n dataContext,\n formNode,\n } = dataProps;\n const { addText, noAdd, noRemove, noReorder, removeText } = mergeObjects(\n isArrayRenderer(renderOptions) ? renderOptions : ({} as ArrayRenderOptions),\n defaultActions as ArrayRenderOptions,\n );\n const childOptions = isArrayRenderer(renderOptions)\n ? renderOptions.childOptions\n : undefined;\n\n const renderAsElement = !isCompoundField(field);\n const childDefinition: FormNode = nodeForControl(\n !renderAsElement\n ? ({\n type: ControlDefinitionType.Group,\n children: definition.children,\n groupOptions: { type: GroupRenderType.Standard, hideTitle: true },\n } as GroupedControlsDefinition)\n : ({\n type: ControlDefinitionType.Data,\n field: definition.field,\n children: definition.children,\n renderOptions: childOptions ?? { type: DataRenderType.Standard },\n hideTitle: true,\n } as DataControlDefinition),\n formNode.tree,\n );\n\n const visibilities = (definition.children ?? []).map(\n (x) => [useChildVisibility(x, undefined, true), x] as const,\n );\n const deps = makeHookDepString(visibilities, (x) => x[0].deps);\n const Entry = useTrackedComponent(RenderEntry, [deps]);\n\n const arrayProps = {\n ...createArrayActions(control.as(), field, {\n addText,\n removeText,\n noAdd,\n noRemove,\n readonly,\n disabled: control.disabled,\n designMode,\n }),\n required,\n renderElement: (i, wrap) => (\n <Entry\n index={i}\n renderChildElement={renderChildElement}\n dataContext={dataContext}\n visibilities={visibilities}\n wrap={wrap}\n />\n ),\n className: className ? className : undefined,\n style,\n ...getLengthRestrictions(definition),\n } satisfies ArrayRendererProps;\n\n return renderers.renderArray(arrayProps);\n\n function renderChildElement(i: number, elementNode: SchemaDataNode) {\n return renderChild(\n control.elements?.[i].uniqueId ?? i,\n childDefinition,\n renderAsElement\n ? {\n elementIndex: i,\n }\n : { parentDataNode: elementNode },\n );\n }\n}\n\nfunction RenderEntry({\n index: i,\n renderChildElement,\n visibilities,\n wrap,\n dataContext,\n}: {\n index: number;\n renderChildElement: (i: number, element: SchemaDataNode) => ReactNode;\n visibilities: (readonly [EvalExpressionHook<boolean>, ControlDefinition])[];\n dataContext: ControlDataContext;\n wrap: (n: ReactNode) => ReactNode;\n}) {\n const elementNode = dataContext.dataNode!.getChildElement(i);\n const childVis = visibilities.map(\n ([hook, def]) =>\n hook.runHook(\n {\n ...dataContext,\n parentNode: elementNode,\n dataNode: lookupDataNode(def, elementNode),\n },\n hook.state,\n ).value,\n );\n const anyVisible = childVis.length == 0 || childVis.some((x) => x === true);\n if (!anyVisible) return undefined;\n return wrap(renderChildElement(i, elementNode));\n}\n\nexport interface DefaultArrayRendererOptions extends ArrayActionOptions {\n className?: string;\n removableClass?: string;\n childClass?: string;\n removableChildClass?: string;\n removeActionClass?: string;\n addActionClass?: string;\n}\n\nexport function createDefaultArrayRenderer(\n options?: DefaultArrayRendererOptions,\n): ArrayRendererRegistration {\n return {\n render: (props, { renderAction }) => (\n <DefaultArrayRenderer\n {...props}\n {...options}\n renderAction={renderAction}\n />\n ),\n type: \"array\",\n };\n}\n\nexport interface DefaultArrayRendererProps\n extends DefaultArrayRendererOptions,\n ArrayRendererProps {\n renderAction: (props: ActionRendererProps) => ReactNode;\n}\n\nexport function DefaultArrayRenderer(props: DefaultArrayRendererProps) {\n const {\n renderElement,\n className,\n removableClass,\n childClass,\n removableChildClass,\n removeActionClass,\n addActionClass,\n arrayControl,\n renderAction,\n style,\n } = props;\n const { addAction, removeAction } = applyArrayLengthRestrictions(props);\n return (\n <div style={style}>\n <div className={clsx(className, removeAction && removableClass)}>\n <RenderElements control={arrayControl}>\n {(_, x) =>\n renderElement(x, (children) =>\n removeAction ? (\n <>\n <div className={clsx(childClass, removableChildClass)}>\n {children}\n </div>\n <div className={removeActionClass}>\n {renderAction(removeAction(x))}\n </div>\n </>\n ) : (\n <div className={childClass}>{children}</div>\n ),\n )\n }\n </RenderElements>\n </div>\n {addAction && (\n <div className={addActionClass}>{renderAction(addAction)}</div>\n )}\n </div>\n );\n}\n","import React, { 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) {\n return <>Can't render field: {field.displayName ?? field.field}</>;\n }\n if (props.displayOnly || isDisplayOnlyRenderer(renderOptions))\n return (p) => {\n return {\n ...p,\n className: \"@ \" + rendererClass(p.className, displayOnlyClass),\n children: (\n <DefaultDisplayOnly\n field={props.field}\n schemaInterface={props.dataContext.schemaInterface}\n control={props.control}\n className={props.className}\n style={props.style}\n emptyText={\n isDisplayOnlyRenderer(renderOptions) && renderOptions.emptyText\n ? renderOptions.emptyText\n : defaultEmptyText\n }\n />\n ),\n };\n };\n const isBool = fieldType === FieldType.Bool;\n if (booleanOptions != null && isBool && props.options == null) {\n return renderers.renderData({ ...props, options: booleanOptions });\n }\n if (renderType === DataRenderType.Standard && hasOptions(props)) {\n return optionRenderer.render(props, renderers);\n }\n switch (renderType) {\n case DataRenderType.NullToggle:\n return nullToggler.render(props, renderers);\n case DataRenderType.CheckList:\n return checkListRenderer.render(props, renderers);\n case DataRenderType.Dropdown:\n return selectRenderer.render(props, renderers);\n case DataRenderType.Radio:\n return radioRenderer.render(props, renderers);\n case DataRenderType.Checkbox:\n return checkboxRenderer.render(props, renderers);\n case DataRenderType.Jsonata:\n return jsonataRenderer.render(props, renderers);\n }\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 tabs: {\n className: \"\",\n tabListClass:\n \"flex flex-wrap text-sm font-medium text-center text-gray-500 border-b border-gray-200 dark:border-gray-700 dark:text-gray-400\",\n tabClass: \"me-2\",\n labelClass:\n \"inline-flex items-center justify-center p-4 border-b-2 group\",\n inactiveClass:\n \"border-transparent rounded-t-lg hover:text-gray-600 hover:border-gray-300 dark:hover:text-gray-300 cursor-pointer\",\n activeClass:\n \"text-blue-600 border-blue-600 rounded-t-lg active dark:text-blue-500 dark:border-blue-500\",\n contentClass: \"my-2\",\n },\n },\n action: {\n className: \"bg-primary-500 rounded-lg p-3 text-white\",\n },\n layout: {\n className: \"flex flex-col\",\n errorClass: \"text-sm text-danger-500\",\n },\n data: {\n displayOnlyClass: \"flex flex-row items-center gap-2\",\n checkOptions: {\n className: \"flex items-center gap-4\",\n entryClass: \"flex gap-1 items-center\",\n },\n selectOptions: { emptyText: \"<select>\" },\n multilineClass: \"border p-2 outline-0 whitespace-pre-wrap\",\n },\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","classes","controlClasses","renderOptions","isChecked","setChecked","c","entryAdornment","fieldOptionAdornment","renderType","DataRenderType","Radio","createCheckListRenderer","Array","isArray","includes","checked","setValue","setIncluded","collection","CheckList","uniqueId","RenderArrayElements","array","useComputed","selOrUnsel","selectedClass","notSelectedClass","entryWrapperClass","onClick","entryClass","checkClass","readOnly","labelClass","htmlFor","elem","included","createCheckboxRenderer","renderer","children","Fcheckbox","as","renderLabel","Checkbox","createDefaultLayoutRenderer","createLayoutRenderer","renderers","layout","renderLayoutParts","wrapLayout","DefaultLayout","divRef","errorControl","meta","scrollElement","errorClass","renderError","controlEnd","controlStart","Fragment","touched","error","DefaultDisplayOnly","schemaInterface","isEmptyValue","DefaultAccordion","accordion","contentStyle","contentClassName","designMode","iconOpenClass","iconClosedClass","renderTitle","t","renderToggler","titleClass","useCss","dataContext","_dataContext$dataNode","dataControl","dataNode","parentNode","open","defaultExpanded","accordionState","isOpen","fullContentStyle","title","renderLabelText","toggler","getAccordionState","TabsGroupRenderer","formNode","renderChild","tabIndex","tabClass","tabListClass","inactiveClass","activeClass","contentClass","currentTab","getChildNodes","renderTabs","tabs","definition","createDefaultGroupRenderer","tabsRenderer","createGroupRenderer","GroupRenderType","Tabs","createTabsRenderer","gridStyles","defaultGridStyles","defaultGridColumns","gridClassName","standardClassName","flexClassName","defaultFlexGap","columns","gridTemplateColumns","isTabsRenderer","isSelectChildRenderer","SelectChildGroupRenderer","gcn","isGridRenderer","isFlexRenderer","gap","flexDirection","direction","flexStyles","useEvalExpression","dynHook","childIndexExpression","Render","useTrackedComponent","ctrl","runHook","childIndex","childDefinitions","deps","createDefaultVisibilityRenderer","createVisibilityRenderer","DefaultVisibility","visibility","useEffect","ex","visible","showing","ref","createJsonataRenderer","JsonataRenderer","Jsonata","sdn","elementIndex","bindings","formData","dataPath","getJsonPath","rendered","useJsonataExpression","expression","getRootDataNode","createNullToggleRenderer","_control$meta","_control$meta$_nullCo","nullControl","newControl","current","newLayout","renderData","NullWrapper","defaultValue","r","_nullControl$meta$non","createDefaultArrayDataRenderer","defaultActions","DataArrayRenderer","dataProps","_definition$children","useChildVisibility","addText","noAdd","noRemove","removeText","mergeObjects","isArrayRenderer","childOptions","renderAsElement","isCompoundField","childDefinition","nodeForControl","ControlDefinitionType","Data","Standard","hideTitle","Group","groupOptions","tree","visibilities","makeHookDepString","Entry","RenderEntry","arrayProps","createArrayActions","renderElement","wrap","index","renderChildElement","getLengthRestrictions","renderArray","elementNode","_control$elements$i$u","_control$elements","elements","parentDataNode","getChildElement","childVis","hook","def","lookupDataNode","some","createDefaultArrayRenderer","renderAction","DefaultArrayRenderer","removableClass","childClass","removableChildClass","removeActionClass","addActionClass","arrayControl","addAction","removeAction","applyArrayLengthRestrictions","RenderElements","_","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","_field$displayName","Any","displayName","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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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/DefaultDisplay.tsx","../src/components/ControlInput.tsx","../src/components/SelectDataRenderer.tsx","../src/components/CheckRenderer.tsx","../src/components/DefaultLayout.tsx","../src/components/DefaultDisplayOnly.tsx","../src/components/DefaultAccordion.tsx","../src/components/TabsRenderer.tsx","../src/components/DefaultGroupRenderer.tsx","../src/components/DefaultVisibility.tsx","../src/components/JsonataRenderer.tsx","../src/components/NullToggle.tsx","../src/components/DefaultArrayRenderer.tsx","../src/components/ValueForFieldRenderer.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 CheckEntryClasses,\n createDataRenderer,\n DataRenderType,\n FieldOption,\n fieldOptionAdornment,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport clsx from \"clsx\";\n\nexport interface CheckRendererOptions {\n className?: string;\n entryClass?: string;\n checkClass?: string;\n labelClass?: string;\n entryWrapperClass?: string;\n selectedClass?: string;\n notSelectedClass?: string;\n}\nexport function createRadioRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n classes={options}\n controlClasses={p.renderOptions as CheckEntryClasses}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => control.value == o.value}\n setChecked={(c, o) => (c.value = o.value)}\n control={p.control}\n type=\"radio\"\n entryAdornment={fieldOptionAdornment(p)}\n />\n ),\n {\n renderType: DataRenderType.Radio,\n },\n );\n}\n\nexport function createCheckListRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (p) => (\n <CheckButtons\n classes={options}\n controlClasses={p.renderOptions as CheckEntryClasses}\n {...p}\n className={rendererClass(p.className, options.className)}\n isChecked={(control, o) => {\n const v = control.value;\n return Array.isArray(v) ? v.includes(o.value) : false;\n }}\n setChecked={(c, o, checked) => {\n c.setValue((x) => setIncluded(x ?? [], o.value, checked));\n }}\n control={p.control}\n type=\"checkbox\"\n entryAdornment={fieldOptionAdornment(p)}\n />\n ),\n {\n collection: true,\n renderType: DataRenderType.CheckList,\n },\n );\n}\n\nexport interface CheckButtonsProps {\n id?: string;\n className?: string;\n options?: FieldOption[] | null;\n control: Control<any>;\n classes: CheckRendererOptions;\n controlClasses?: CheckEntryClasses;\n readonly?: boolean;\n type: \"checkbox\" | \"radio\";\n isChecked: (c: Control<any>, o: FieldOption) => boolean;\n setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;\n entryAdornment?: (c: FieldOption, i: number, selected: boolean) => ReactNode;\n}\n\nexport function CheckButtons({\n control,\n options,\n readonly,\n className,\n id,\n type,\n isChecked,\n setChecked,\n entryAdornment,\n classes,\n controlClasses = {},\n}: CheckButtonsProps) {\n const { disabled } = control;\n const name = \"r\" + control.uniqueId;\n return (\n <div className={className} id={id}>\n <RenderArrayElements array={options?.filter((x) => x.value != null)}>\n {(o, i) => {\n const checked = useComputed(() => isChecked(control, o)).value;\n const selOrUnsel = checked\n ? rendererClass(\n controlClasses?.selectedClass,\n classes.selectedClass,\n )\n : rendererClass(\n controlClasses?.notSelectedClass,\n classes.notSelectedClass,\n );\n return (\n <div\n className={clsx(\n rendererClass(\n controlClasses?.entryWrapperClass,\n classes.entryWrapperClass,\n ),\n selOrUnsel,\n )}\n onClick={() => !readonly && setChecked(control, o, !checked)}\n >\n <div className={classes.entryClass}>\n <input\n id={name + \"_\" + i}\n className={classes.checkClass}\n type={type}\n name={name}\n readOnly={readonly}\n disabled={disabled}\n checked={checked}\n onChange={(x) => {\n !readonly && setChecked(control, o, x.target.checked);\n }}\n />\n <label className={classes.labelClass} htmlFor={name + \"_\" + i}>\n {o.name}\n </label>\n </div>\n {entryAdornment?.(o, i, checked)}\n </div>\n );\n }}\n </RenderArrayElements>\n </div>\n );\n}\n\nexport function setIncluded<A>(array: A[], elem: A, included: boolean): A[] {\n const already = array.includes(elem);\n if (included === already) {\n return array;\n }\n if (included) {\n return [...array, elem];\n }\n return array.filter((e) => e !== elem);\n}\n\nexport function createCheckboxRenderer(options: CheckRendererOptions = {}) {\n return createDataRenderer(\n (props, renderer) => (p) => ({\n ...p,\n label: undefined,\n children: (\n <div className={rendererClass(props.className, options.entryClass)}>\n <Fcheckbox\n id={props.id}\n control={props.control.as()}\n style={props.style}\n className={options.checkClass}\n />\n {p.label && renderer.renderLabel(p.label, undefined, undefined)}\n </div>\n ),\n }),\n { renderType: DataRenderType.Checkbox },\n );\n}\n","import React, { ReactNode } from \"react\";\nimport {\n createLayoutRenderer,\n RenderedLayout,\n rendererClass,\n renderLayoutParts,\n} from \"@react-typed-forms/schemas\";\n\nexport interface DefaultLayoutRendererOptions {\n className?: string;\n errorClass?: string;\n renderError?: (errorText: string | null | undefined) => ReactNode;\n}\n\nexport function createDefaultLayoutRenderer(\n options: DefaultLayoutRendererOptions = {},\n) {\n return createLayoutRenderer((props, renderers) => {\n const layout = renderLayoutParts(props, renderers);\n return {\n children: layout.wrapLayout(\n <DefaultLayout layout={layout} {...options} />,\n ),\n className: rendererClass(layout.className, options.className),\n style: layout.style,\n divRef: (e) =>\n e && props.errorControl\n ? (props.errorControl.meta.scrollElement = e)\n : undefined,\n };\n });\n}\n\nexport function DefaultLayout({\n errorClass,\n renderError = (e) => e && <div className={errorClass}>{e}</div>,\n layout: { controlEnd, controlStart, label, children, errorControl },\n}: DefaultLayoutRendererOptions & {\n layout: RenderedLayout;\n}) {\n const ec = errorControl;\n const errorText = ec && ec.touched ? ec.error : undefined;\n return (\n <>\n {label}\n {controlStart}\n {children}\n {renderError(errorText)}\n {controlEnd}\n </>\n );\n}\n","import { Control } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport {\n rendererClass,\n SchemaField,\n SchemaInterface,\n} from \"@react-typed-forms/schemas\";\n\nexport function DefaultDisplayOnly({\n control,\n className,\n emptyText,\n schemaInterface,\n field,\n style,\n}: {\n control: Control<any>;\n field: SchemaField;\n schemaInterface: SchemaInterface;\n className?: string;\n style?: React.CSSProperties;\n emptyText?: string | null;\n}) {\n const v = control.value;\n const text =\n (schemaInterface.isEmptyValue(field, v)\n ? emptyText\n : schemaInterface.textValue(field, v)) ?? \"\";\n return (\n <div style={style} className={className}>\n {text}\n </div>\n );\n}\n","import React, { CSSProperties, Fragment, ReactElement } from \"react\";\nimport { Control, useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\nimport { DefaultAccordionRendererOptions } from \"../createDefaultRenderers\";\nimport {\n AccordionAdornment,\n ControlDataContext,\n FormRenderer,\n} from \"@react-typed-forms/schemas\";\n\nexport function DefaultAccordion({\n children,\n accordion,\n contentStyle,\n contentClassName,\n designMode,\n iconOpenClass,\n iconClosedClass,\n className,\n renderTitle = (t) => t,\n renderToggler,\n renderers,\n titleClass,\n useCss,\n dataContext,\n}: {\n children: ReactElement;\n accordion: Partial<AccordionAdornment>;\n contentStyle?: CSSProperties;\n contentClassName?: string;\n designMode?: boolean;\n renderers: FormRenderer;\n dataContext: ControlDataContext;\n} & DefaultAccordionRendererOptions) {\n const dataControl = (dataContext.dataNode ?? dataContext.parentNode).control;\n const open = useControl(!!accordion.defaultExpanded);\n if (dataControl && !dataControl.meta.accordionState) {\n dataControl.meta.accordionState = open;\n }\n const isOpen = open.value;\n const fullContentStyle =\n isOpen || designMode ? contentStyle : { ...contentStyle, display: \"none\" };\n const title = renderers.renderLabelText(renderTitle(accordion.title, open));\n const toggler = renderToggler ? (\n renderToggler(open, title)\n ) : (\n <button className={className} onClick={() => open.setValue((x) => !x)}>\n <label className={titleClass}>{title}</label>\n <i className={clsx(isOpen ? iconOpenClass : iconClosedClass)} />\n </button>\n );\n\n return (\n <>\n {toggler}\n {(useCss || isOpen || designMode) && (\n <div style={fullContentStyle} className={contentClassName}>\n {children}\n </div>\n )}\n </>\n );\n}\n\nexport function getAccordionState(\n c: Control<unknown>,\n): Control<boolean> | undefined {\n return c.meta.accordionState;\n}\n","import {\n controlTitle,\n createGroupRenderer,\n FormNode,\n GroupRendererProps,\n GroupRenderType,\n rendererClass,\n} from \"@react-typed-forms/schemas\";\nimport React from \"react\";\nimport { useControl } from \"@react-typed-forms/core\";\nimport clsx from \"clsx\";\n\nexport interface TabsRendererOptions {\n className?: string;\n tabListClass?: string;\n tabClass?: string;\n labelClass?: string;\n activeClass?: string;\n inactiveClass?: string;\n contentClass?: string;\n}\n\nexport function createTabsRenderer(options: TabsRendererOptions = {}) {\n return createGroupRenderer(\n (p, renderer) => <TabsGroupRenderer {...p} options={options} />,\n {\n renderType: GroupRenderType.Tabs,\n },\n );\n}\n\nexport function TabsGroupRenderer({\n formNode,\n className,\n options,\n renderChild,\n designMode,\n}: GroupRendererProps & { options: TabsRendererOptions }) {\n const tabIndex = useControl(0);\n const {\n tabClass,\n labelClass,\n tabListClass,\n inactiveClass,\n activeClass,\n contentClass,\n } = options;\n const currentTab = tabIndex.value;\n return designMode ? (\n <>{formNode.getChildNodes().map((x, i) => renderTabs([x], i))}</>\n ) : (\n renderTabs(formNode.getChildNodes(), 0)\n );\n\n function renderTabs(tabs: FormNode[], key: number) {\n return (\n <div key={key} className={rendererClass(className, options.className)}>\n <ul className={rendererClass(null, tabListClass)}>\n {tabs.map((x, i) => (\n <li\n key={i}\n className={rendererClass(null, tabClass)}\n onClick={() => (tabIndex.value = i)}\n >\n <span\n className={rendererClass(\n null,\n clsx(\n labelClass,\n i == currentTab ? activeClass : inactiveClass,\n ),\n )}\n >\n {x.definition.title ? x.definition.title : \"<untitled>\"}\n </span>\n </li>\n ))}\n </ul>\n <div className={rendererClass(null, contentClass)}>\n {renderChild(currentTab, tabs[currentTab])}\n </div>\n </div>\n );\n }\n}\n","import {\n ControlLayoutProps,\n FlexRenderer,\n FormRenderer,\n GridRenderer,\n GroupRendererProps,\n GroupRendererRegistration,\n isFlexRenderer,\n isGridRenderer,\n isSelectChildRenderer,\n isTabsRenderer,\n rendererClass,\n SelectChildRenderer,\n} from \"@react-typed-forms/schemas\";\nimport clsx from \"clsx\";\nimport React, { CSSProperties, useCallback } from \"react\";\nimport { useTrackedComponent } from \"@react-typed-forms/core\";\nimport { createTabsRenderer, TabsRendererOptions } from \"./TabsRenderer\";\n\ninterface StyleProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport interface DefaultGroupRendererOptions {\n className?: string;\n standardClassName?: string;\n gridStyles?: (columns: GridRenderer) => StyleProps;\n gridClassName?: string;\n defaultGridColumns?: number;\n flexClassName?: string;\n defaultFlexGap?: string;\n tabs?: TabsRendererOptions;\n}\n\nexport function createDefaultGroupRenderer(\n options?: DefaultGroupRendererOptions,\n): GroupRendererRegistration {\n const tabsRenderer = createTabsRenderer(options?.tabs);\n const {\n className,\n gridStyles = defaultGridStyles,\n defaultGridColumns = 2,\n gridClassName,\n standardClassName,\n flexClassName,\n defaultFlexGap,\n } = options ?? {};\n\n function defaultGridStyles({\n columns = defaultGridColumns,\n }: GridRenderer): StyleProps {\n return {\n className: gridClassName,\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n },\n };\n }\n\n function flexStyles(options: FlexRenderer): StyleProps {\n return {\n className: flexClassName,\n style: {\n display: \"flex\",\n gap: options.gap ? options.gap : defaultFlexGap,\n flexDirection: options.direction\n ? (options.direction as any)\n : undefined,\n },\n };\n }\n\n function render(props: GroupRendererProps, renderers: FormRenderer) {\n const { renderChild, renderOptions, formNode } = props;\n if (isTabsRenderer(renderOptions))\n return tabsRenderer.render(props, renderers);\n if (isSelectChildRenderer(renderOptions) && !props.designMode) {\n return (\n <SelectChildGroupRenderer {...props} renderOptions={renderOptions} />\n );\n }\n\n const { style, className: gcn } = isGridRenderer(renderOptions)\n ? gridStyles(renderOptions)\n : isFlexRenderer(renderOptions)\n ? flexStyles(renderOptions)\n : ({ className: standardClassName } as StyleProps);\n return (\n <div\n className={rendererClass(props.className, clsx(className, gcn))}\n style={style}\n >\n {formNode.getChildNodes().map((c, i) => renderChild(i, c))}\n </div>\n );\n }\n\n return { type: \"group\", render };\n}\n\ntype SelectChildProps = Pick<\n GroupRendererProps,\n \"useEvalExpression\" | \"dataContext\" | \"formNode\" | \"renderChild\"\n> & {\n renderOptions: SelectChildRenderer;\n};\nfunction SelectChildGroupRenderer(props: SelectChildProps) {\n const { useEvalExpression, renderOptions } = props;\n const dynHook = useEvalExpression(renderOptions?.childIndexExpression, (x) =>\n x == \"string\" ? parseInt(x) : x,\n );\n const Render = useTrackedComponent(\n (p: SelectChildProps) => {\n const ctrl = dynHook.runHook(p.dataContext, dynHook.state);\n const childIndex = ctrl?.value;\n const childDefinitions = p.formNode.getChildNodes();\n return (\n <div>\n {typeof childIndex === \"number\" &&\n childIndex < childDefinitions.length &&\n childIndex >= 0 &&\n p.renderChild(childIndex, childDefinitions[childIndex])}\n </div>\n );\n },\n [dynHook.deps],\n );\n return <Render {...props} />;\n}\n","import React, { useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport {\n createVisibilityRenderer,\n VisibilityRendererProps,\n} from \"@react-typed-forms/schemas\";\n\nexport function createDefaultVisibilityRenderer() {\n return createVisibilityRenderer((props) => <DefaultVisibility {...props} />);\n}\n\nexport function DefaultVisibility({\n visibility,\n children,\n className,\n style,\n divRef,\n}: VisibilityRendererProps) {\n const v = visibility.value;\n useEffect(() => {\n if (v) {\n visibility.setValue((ex) => ({ visible: v.visible, showing: v.visible }));\n }\n }, [v?.visible]);\n return v?.visible ? (\n <div className={clsx(className)} style={style} ref={divRef}>\n {children}\n </div>\n ) : (\n <></>\n );\n}\n","import { Control, useComputed } from \"@react-typed-forms/core\";\nimport React from \"react\";\nimport {\n coerceToString,\n ControlDataContext,\n createDataRenderer,\n DataRenderType,\n getJsonPath,\n getRootDataNode,\n JsonataRenderOptions,\n rendererClass,\n SchemaDataNode,\n useJsonataExpression,\n} from \"@react-typed-forms/schemas\";\n\nexport function createJsonataRenderer(className?: string) {\n return createDataRenderer(\n (p) => (\n <JsonataRenderer\n renderOptions={p.renderOptions as JsonataRenderOptions}\n className={rendererClass(p.className, className)}\n dataNode={p.dataNode}\n dataContext={p.dataContext}\n control={p.control}\n readonly={p.readonly}\n />\n ),\n { renderType: DataRenderType.Jsonata },\n );\n}\n\nexport function JsonataRenderer({\n control,\n renderOptions,\n readonly,\n className,\n dataContext,\n dataNode,\n}: {\n control: Control<any>;\n renderOptions: JsonataRenderOptions;\n className?: string;\n dataContext: ControlDataContext;\n dataNode: SchemaDataNode;\n readonly: boolean;\n}) {\n const sdn = dataNode.elementIndex != null ? dataNode : dataContext.parentNode;\n const bindings = useComputed(() => ({\n value: control.value,\n readonly,\n disabled: control.disabled,\n formData: dataContext.formData,\n dataPath: getJsonPath(dataNode),\n }));\n const rendered = useJsonataExpression(\n renderOptions.expression,\n getRootDataNode(sdn).control!,\n getJsonPath(sdn),\n bindings,\n coerceToString,\n );\n return (\n <div\n className={className}\n dangerouslySetInnerHTML={{ __html: rendered.value }}\n />\n );\n}\n","import { 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 FormNode,\n FormRenderer,\n getLengthRestrictions,\n GroupedControlsDefinition,\n GroupRenderType,\n isArrayRenderer,\n isCompoundField,\n lookupDataNode,\n makeHookDepString,\n mergeObjects,\n nodeForControl,\n SchemaDataNode,\n} from \"@react-typed-forms/schemas\";\n\nexport function createDefaultArrayDataRenderer(\n defaultActions?: ArrayActionOptions,\n): DataRendererRegistration {\n return createDataRenderer(\n (props, renderers) => {\n return (\n <DataArrayRenderer\n dataProps={props}\n renderers={renderers}\n defaultActions={defaultActions}\n />\n );\n },\n { renderType: DataRenderType.Array, collection: true },\n );\n}\n\nexport function DataArrayRenderer({\n dataProps,\n renderers,\n defaultActions,\n}: {\n renderers: FormRenderer;\n dataProps: DataRendererProps;\n defaultActions?: ArrayActionOptions;\n}) {\n const {\n renderOptions,\n control,\n field,\n readonly,\n designMode,\n required,\n renderChild,\n definition,\n className,\n style,\n useChildVisibility,\n dataContext,\n formNode,\n } = dataProps;\n const { addText, noAdd, noRemove, noReorder, removeText } = mergeObjects(\n isArrayRenderer(renderOptions) ? renderOptions : ({} as ArrayRenderOptions),\n defaultActions as ArrayRenderOptions,\n );\n const childOptions = isArrayRenderer(renderOptions)\n ? renderOptions.childOptions\n : undefined;\n\n const renderAsElement = !isCompoundField(field);\n const childDefinition: FormNode = nodeForControl(\n !renderAsElement\n ? ({\n type: ControlDefinitionType.Group,\n children: definition.children,\n groupOptions: { type: GroupRenderType.Standard, hideTitle: true },\n } as GroupedControlsDefinition)\n : ({\n type: ControlDefinitionType.Data,\n field: definition.field,\n children: definition.children,\n renderOptions: childOptions ?? { type: DataRenderType.Standard },\n hideTitle: true,\n } as DataControlDefinition),\n formNode.tree,\n );\n\n const visibilities = (definition.children ?? []).map(\n (x) => [useChildVisibility(x, undefined, true), x] as const,\n );\n const deps = makeHookDepString(visibilities, (x) => x[0].deps);\n const Entry = useTrackedComponent(RenderEntry, [deps]);\n\n const arrayProps = {\n ...createArrayActions(control.as(), field, {\n addText,\n removeText,\n noAdd,\n noRemove,\n readonly,\n disabled: control.disabled,\n designMode,\n }),\n required,\n renderElement: (i, wrap) => (\n <Entry\n index={i}\n renderChildElement={renderChildElement}\n dataContext={dataContext}\n visibilities={visibilities}\n wrap={wrap}\n />\n ),\n className: className ? className : undefined,\n style,\n ...getLengthRestrictions(definition),\n } satisfies ArrayRendererProps;\n\n return renderers.renderArray(arrayProps);\n\n function renderChildElement(i: number, elementNode: SchemaDataNode) {\n return renderChild(\n control.elements?.[i].uniqueId ?? i,\n childDefinition,\n renderAsElement\n ? {\n elementIndex: i,\n }\n : { parentDataNode: elementNode },\n );\n }\n}\n\nfunction RenderEntry({\n index: i,\n renderChildElement,\n visibilities,\n wrap,\n dataContext,\n}: {\n index: number;\n renderChildElement: (i: number, element: SchemaDataNode) => ReactNode;\n visibilities: (readonly [EvalExpressionHook<boolean>, ControlDefinition])[];\n dataContext: ControlDataContext;\n wrap: (n: ReactNode) => ReactNode;\n}) {\n const elementNode = dataContext.dataNode!.getChildElement(i);\n const childVis = visibilities.map(\n ([hook, def]) =>\n hook.runHook(\n {\n ...dataContext,\n parentNode: elementNode,\n dataNode: lookupDataNode(def, elementNode),\n },\n hook.state,\n ).value,\n );\n const anyVisible = childVis.length == 0 || childVis.some((x) => x === true);\n if (!anyVisible) return undefined;\n return wrap(renderChildElement(i, elementNode));\n}\n\nexport interface DefaultArrayRendererOptions extends ArrayActionOptions {\n className?: string;\n removableClass?: string;\n childClass?: string;\n removableChildClass?: string;\n removeActionClass?: string;\n addActionClass?: string;\n}\n\nexport function createDefaultArrayRenderer(\n options?: DefaultArrayRendererOptions,\n): ArrayRendererRegistration {\n return {\n render: (props, { renderAction }) => (\n <DefaultArrayRenderer\n {...props}\n {...options}\n renderAction={renderAction}\n />\n ),\n type: \"array\",\n };\n}\n\nexport interface DefaultArrayRendererProps\n extends DefaultArrayRendererOptions,\n ArrayRendererProps {\n renderAction: (props: ActionRendererProps) => ReactNode;\n}\n\nexport function DefaultArrayRenderer(props: DefaultArrayRendererProps) {\n const {\n renderElement,\n className,\n removableClass,\n childClass,\n removableChildClass,\n removeActionClass,\n addActionClass,\n arrayControl,\n renderAction,\n style,\n } = props;\n const { addAction, removeAction } = applyArrayLengthRestrictions(props);\n return (\n <div style={style}>\n <div className={clsx(className, removeAction && removableClass)}>\n <RenderElements control={arrayControl}>\n {(_, x) =>\n renderElement(x, (children) =>\n removeAction ? (\n <>\n <div className={clsx(childClass, removableChildClass)}>\n {children}\n </div>\n <div className={removeActionClass}>\n {renderAction(removeAction(x))}\n </div>\n </>\n ) : (\n <div className={childClass}>{children}</div>\n ),\n )\n }\n </RenderElements>\n </div>\n {addAction && (\n <div className={addActionClass}>{renderAction(addAction)}</div>\n )}\n </div>\n );\n}\n","import { Control, setFields, useControl } from \"@react-typed-forms/core\";\nimport {\n addMissingControlsForSchema,\n buildSchema,\n ControlDefinitionExtension,\n createDataRenderer,\n FormRenderer,\n groupedControl,\n makeSchemaDataNode,\n RenderOptions,\n rootSchemaNode,\n schemaDataForFieldRef,\n schemaForFieldRef,\n SchemaNode,\n stringField,\n useControlRendererComponent,\n} from \"@react-typed-forms/schemas\";\nimport React, { useMemo } from \"react\";\n\nexport interface ValueForFieldRenderOptions extends RenderOptions {\n type: \"ValueForField\";\n fieldRef?: string | null;\n}\n\nconst RenderType = \"ValueForField\";\n\nexport const ValueForFieldExtension: ControlDefinitionExtension = {\n RenderOptions: {\n value: RenderType,\n name: \"Value For Field\",\n fields: buildSchema<Omit<ValueForFieldRenderOptions, \"type\">>({\n fieldRef: stringField(\"Field Reference\"),\n }),\n },\n};\n\nexport interface ValueForFieldOptions {\n schema: SchemaNode;\n}\n\nexport function createValueForFieldRenderer(options: ValueForFieldOptions) {\n return createDataRenderer(\n (o, renderer) => {\n const { fieldRef } = o.renderOptions as ValueForFieldRenderOptions;\n const actualFieldRef = fieldRef\n ? (schemaDataForFieldRef(fieldRef, o.dataContext.parentNode)?.control\n ?.value as string)\n : undefined;\n const node = actualFieldRef\n ? schemaForFieldRef(actualFieldRef, options.schema)\n : undefined;\n return node ? (\n <ValueForField renderer={renderer} schema={node} control={o.control} />\n ) : (\n <>{actualFieldRef ? \"No schema node for \" + actualFieldRef : \"\"}</>\n );\n },\n {\n renderType: RenderType,\n },\n );\n}\n\nfunction ValueForField({\n schema,\n renderer,\n control,\n}: {\n schema: SchemaNode;\n renderer: FormRenderer;\n control: Control<any>;\n}) {\n const field = schema.field.field;\n const value = useControl<Record<string, any>>({}, undefined, (e) =>\n setFields(e, { [field]: control }),\n );\n const controls = useMemo(\n () => addMissingControlsForSchema(rootSchemaNode([schema.field]), []),\n [schema],\n );\n const Render = useControlRendererComponent(\n groupedControl(controls),\n renderer,\n { disabled: control.disabled },\n makeSchemaDataNode(schema.parent!, value),\n );\n return <Render />;\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) {\n return <>Can't render field: {field.displayName ?? field.field}</>;\n }\n if (props.displayOnly || isDisplayOnlyRenderer(renderOptions))\n return (p) => {\n return {\n ...p,\n className: \"@ \" + rendererClass(p.className, displayOnlyClass),\n children: (\n <DefaultDisplayOnly\n field={props.field}\n schemaInterface={props.dataContext.schemaInterface}\n control={props.control}\n className={props.className}\n style={props.style}\n emptyText={\n isDisplayOnlyRenderer(renderOptions) && renderOptions.emptyText\n ? renderOptions.emptyText\n : defaultEmptyText\n }\n />\n ),\n };\n };\n const isBool = fieldType === FieldType.Bool;\n if (booleanOptions != null && isBool && props.options == null) {\n return renderers.renderData({ ...props, options: booleanOptions });\n }\n if (renderType === DataRenderType.Standard && hasOptions(props)) {\n return optionRenderer.render(props, renderers);\n }\n switch (renderType) {\n case DataRenderType.NullToggle:\n return nullToggler.render(props, renderers);\n case DataRenderType.CheckList:\n return checkListRenderer.render(props, renderers);\n case DataRenderType.Dropdown:\n return selectRenderer.render(props, renderers);\n case DataRenderType.Radio:\n return radioRenderer.render(props, renderers);\n case DataRenderType.Checkbox:\n return checkboxRenderer.render(props, renderers);\n case DataRenderType.Jsonata:\n return jsonataRenderer.render(props, renderers);\n }\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 tabs: {\n className: \"\",\n tabListClass:\n \"flex flex-wrap text-sm font-medium text-center text-gray-500 border-b border-gray-200 dark:border-gray-700 dark:text-gray-400\",\n tabClass: \"me-2\",\n labelClass:\n \"inline-flex items-center justify-center p-4 border-b-2 group\",\n inactiveClass:\n \"border-transparent rounded-t-lg hover:text-gray-600 hover:border-gray-300 dark:hover:text-gray-300 cursor-pointer\",\n activeClass:\n \"text-blue-600 border-blue-600 rounded-t-lg active dark:text-blue-500 dark:border-blue-500\",\n contentClass: \"my-2\",\n },\n },\n action: {\n className: \"bg-primary-500 rounded-lg p-3 text-white\",\n },\n layout: {\n className: \"flex flex-col\",\n errorClass: \"text-sm text-danger-500\",\n },\n data: {\n displayOnlyClass: \"flex flex-row items-center gap-2\",\n checkOptions: {\n className: \"flex items-center gap-4\",\n entryClass: \"flex gap-1 items-center\",\n },\n selectOptions: { emptyText: \"<select>\" },\n multilineClass: \"border p-2 outline-0 whitespace-pre-wrap\",\n },\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","classes","controlClasses","renderOptions","isChecked","setChecked","c","entryAdornment","fieldOptionAdornment","renderType","DataRenderType","Radio","createCheckListRenderer","Array","isArray","includes","checked","setValue","setIncluded","collection","CheckList","uniqueId","RenderArrayElements","array","useComputed","selOrUnsel","selectedClass","notSelectedClass","entryWrapperClass","onClick","entryClass","checkClass","readOnly","labelClass","htmlFor","elem","included","createCheckboxRenderer","renderer","children","Fcheckbox","as","renderLabel","Checkbox","createDefaultLayoutRenderer","createLayoutRenderer","renderers","layout","renderLayoutParts","wrapLayout","DefaultLayout","divRef","errorControl","meta","scrollElement","errorClass","renderError","controlEnd","controlStart","Fragment","touched","error","DefaultDisplayOnly","schemaInterface","isEmptyValue","DefaultAccordion","accordion","contentStyle","contentClassName","designMode","iconOpenClass","iconClosedClass","renderTitle","t","renderToggler","titleClass","useCss","dataContext","_dataContext$dataNode","dataControl","dataNode","parentNode","open","defaultExpanded","accordionState","isOpen","fullContentStyle","title","renderLabelText","toggler","getAccordionState","TabsGroupRenderer","formNode","renderChild","tabIndex","tabClass","tabListClass","inactiveClass","activeClass","contentClass","currentTab","getChildNodes","renderTabs","tabs","definition","createDefaultGroupRenderer","tabsRenderer","createGroupRenderer","GroupRenderType","Tabs","createTabsRenderer","gridStyles","defaultGridStyles","defaultGridColumns","gridClassName","standardClassName","flexClassName","defaultFlexGap","columns","gridTemplateColumns","isTabsRenderer","isSelectChildRenderer","SelectChildGroupRenderer","gcn","isGridRenderer","isFlexRenderer","gap","flexDirection","direction","flexStyles","useEvalExpression","dynHook","childIndexExpression","Render","useTrackedComponent","ctrl","runHook","childIndex","childDefinitions","deps","createDefaultVisibilityRenderer","createVisibilityRenderer","DefaultVisibility","visibility","useEffect","ex","visible","showing","ref","createJsonataRenderer","JsonataRenderer","Jsonata","sdn","elementIndex","bindings","formData","dataPath","getJsonPath","rendered","useJsonataExpression","expression","getRootDataNode","createNullToggleRenderer","_control$meta","_control$meta$_nullCo","nullControl","newControl","current","newLayout","renderData","NullWrapper","defaultValue","r","_nullControl$meta$non","createDefaultArrayDataRenderer","defaultActions","DataArrayRenderer","dataProps","_definition$children","useChildVisibility","addText","noAdd","noRemove","removeText","mergeObjects","isArrayRenderer","childOptions","renderAsElement","isCompoundField","childDefinition","nodeForControl","ControlDefinitionType","Data","Standard","hideTitle","Group","groupOptions","tree","visibilities","makeHookDepString","Entry","RenderEntry","arrayProps","createArrayActions","renderElement","wrap","index","renderChildElement","getLengthRestrictions","renderArray","elementNode","_control$elements$i$u","_control$elements","elements","parentDataNode","getChildElement","childVis","hook","def","lookupDataNode","some","createDefaultArrayRenderer","renderAction","DefaultArrayRenderer","removableClass","childClass","removableChildClass","removeActionClass","addActionClass","arrayControl","addAction","removeAction","applyArrayLengthRestrictions","RenderElements","_","RenderType","ValueForFieldExtension","RenderOptions","fields","buildSchema","fieldRef","stringField","createValueForFieldRenderer","_schemaDataForFieldRe","actualFieldRef","schemaDataForFieldRef","node","schemaForFieldRef","schema","ValueForField","setFields","controls","addMissingControlsForSchema","rootSchemaNode","useControlRendererComponent","groupedControl","makeSchemaDataNode","parent","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","_field$displayName","Any","displayName","displayOnly","isDisplayOnlyRenderer","hasOptions","NullToggle","Dropdown","isTextfieldRenderer","multiline","placeholder","createDefaultAdornmentRenderer","adornment","useExpr","apply","rl","isSetFieldAdornment","dynamicHooks","useDynamicHooks","SetFieldWrapper","useCallback","setFieldWrapper","parentContext","otherField","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": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "lib/index.cjs",
@@ -37,7 +37,7 @@
37
37
  "peerDependencies": {
38
38
  "@react-typed-forms/core": "^4.0.0",
39
39
  "react": "^18.2.0",
40
- "@react-typed-forms/schemas": "14.0.0"
40
+ "@react-typed-forms/schemas": "14.0.2"
41
41
  },
42
42
  "devDependencies": {
43
43
  "react": "^18.2.0",
@@ -51,7 +51,7 @@
51
51
  "rimraf": "^3.0.2",
52
52
  "typescript": "^5.6.3",
53
53
  "@react-typed-forms/core": "4.0.0",
54
- "@react-typed-forms/schemas": "14.0.0"
54
+ "@react-typed-forms/schemas": "14.0.2"
55
55
  },
56
56
  "gitHead": "698e16cd3ab31b7dd0528fc76536f4d3205ce8c6",
57
57
  "scripts": {