reactaform 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common-BeJOG7Z0.js +1 -0
- package/dist/common-Crb-me6O.js +1 -0
- package/dist/{common-ClNcU_yE.js → common-DINaqn4M.mjs} +2 -2
- package/dist/common-DLr0UoG9.js +1 -0
- package/dist/common-DRIndE7S.js +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/reactaform.cjs.js +6 -11
- package/dist/reactaform.css +1 -1
- package/dist/reactaform.es.js +1867 -1913
- package/package.json +10 -4
- /package/dist/{common-CTK4jqc5.js → common-CTK4jqc5.mjs} +0 -0
- /package/dist/{common-DRxsgpaH.js → common-DRxsgpaH.mjs} +0 -0
- /package/dist/{common-DXEjsP3o.js → common-DXEjsP3o.mjs} +0 -0
package/dist/reactaform.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react/jsx-runtime"),W=require("react"),hr=require("react-dom");function He(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,o.get?o:{enumerable:!0,get:()=>e[n]})}}return r.default=e,Object.freeze(r)}const s=He(W),Ce=He(hr),br=`/* ReactaForm CSS Custom Properties (CSS Variables) */\r
|
|
2
2
|
\r
|
|
3
3
|
/* Default Light Theme */\r
|
|
4
4
|
:root {\r
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
line-height: 1.4;\r
|
|
139
139
|
min-width: 100px;\r
|
|
140
140
|
color: var(--reactaform-text-color);\r
|
|
141
|
-
font-weight:
|
|
141
|
+
font-weight: 600;\r
|
|
142
142
|
font-size: var(--reactaform-font-size);\r
|
|
143
143
|
user-select: none;\r
|
|
144
144
|
}\r
|
|
@@ -284,14 +284,9 @@
|
|
|
284
284
|
\r
|
|
285
285
|
\r
|
|
286
286
|
}\r
|
|
287
|
-
`;var me={exports:{}},ce={};var De;function vr(){if(De)return ce;De=1;var e=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function n(o,t,a){var i=null;if(a!==void 0&&(i=""+a),t.key!==void 0&&(i=""+t.key),"key"in t){a={};for(var c in t)c!=="key"&&(a[c]=t[c])}else a=t;return t=a.ref,{$$typeof:e,type:o,key:i,ref:t!==void 0?t:null,props:a}}return ce.Fragment=r,ce.jsx=n,ce.jsxs=n,ce}var le={};var ze;function wr(){return ze||(ze=1,process.env.NODE_ENV!=="production"&&(function(){function e(b){if(b==null)return null;if(typeof b=="function")return b.$$typeof===$?null:b.displayName||b.name||null;if(typeof b=="string")return b;switch(b){case x:return"Fragment";case w:return"Profiler";case v:return"StrictMode";case R:return"Suspense";case k:return"SuspenseList";case A:return"Activity"}if(typeof b=="object")switch(typeof b.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),b.$$typeof){case d:return"Portal";case E:return b.displayName||"Context";case I:return(b._context.displayName||"Context")+".Consumer";case S:var j=b.render;return b=b.displayName,b||(b=j.displayName||j.name||"",b=b!==""?"ForwardRef("+b+")":"ForwardRef"),b;case C:return j=b.displayName||null,j!==null?j:e(b.type)||"Memo";case N:j=b._payload,b=b._init;try{return e(b(j))}catch{}}return null}function r(b){return""+b}function n(b){try{r(b);var j=!1}catch{j=!0}if(j){j=console;var P=j.error,B=typeof Symbol=="function"&&Symbol.toStringTag&&b[Symbol.toStringTag]||b.constructor.name||"Object";return P.call(j,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",B),r(b)}}function o(b){if(b===x)return"<>";if(typeof b=="object"&&b!==null&&b.$$typeof===N)return"<...>";try{var j=e(b);return j?"<"+j+">":"<...>"}catch{return"<...>"}}function t(){var b=D.A;return b===null?null:b.getOwner()}function a(){return Error("react-stack-top-frame")}function i(b){if(U.call(b,"key")){var j=Object.getOwnPropertyDescriptor(b,"key").get;if(j&&j.isReactWarning)return!1}return b.key!==void 0}function c(b,j){function P(){ae||(ae=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",j))}P.isReactWarning=!0,Object.defineProperty(b,"key",{get:P,configurable:!0})}function f(){var b=e(this.type);return J[b]||(J[b]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),b=this.props.ref,b!==void 0?b:null}function m(b,j,P,B,Z,ee){var T=P.ref;return b={$$typeof:y,type:b,key:j,props:P,_owner:B},(T!==void 0?T:null)!==null?Object.defineProperty(b,"ref",{enumerable:!1,get:f}):Object.defineProperty(b,"ref",{enumerable:!1,value:null}),b._store={},Object.defineProperty(b._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(b,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(b,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:Z}),Object.defineProperty(b,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:ee}),Object.freeze&&(Object.freeze(b.props),Object.freeze(b)),b}function u(b,j,P,B,Z,ee){var T=j.children;if(T!==void 0)if(B)if(ne(T)){for(B=0;B<T.length;B++)g(T[B]);Object.freeze&&Object.freeze(T)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else g(T);if(U.call(j,"key")){T=e(b);var O=Object.keys(j).filter(function(Y){return Y!=="key"});B=0<O.length?"{key: someKey, "+O.join(": ..., ")+": ...}":"{key: someKey}",M[T+B]||(O=0<O.length?"{"+O.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
React keys must be passed directly to JSX without using spread:
|
|
291
|
-
let props = %s;
|
|
292
|
-
<%s key={someKey} {...props} />`,B,T,O,T),M[T+B]=!0)}if(T=null,P!==void 0&&(n(P),T=""+P),i(j)&&(n(j.key),T=""+j.key),"key"in j){P={};for(var L in j)L!=="key"&&(P[L]=j[L])}else P=j;return T&&c(P,typeof b=="function"?b.displayName||b.name||"Unknown":b),m(b,T,P,t(),Z,ee)}function g(b){l(b)?b._store&&(b._store.validated=1):typeof b=="object"&&b!==null&&b.$$typeof===N&&(b._payload.status==="fulfilled"?l(b._payload.value)&&b._payload.value._store&&(b._payload.value._store.validated=1):b._store&&(b._store.validated=1))}function l(b){return typeof b=="object"&&b!==null&&b.$$typeof===y}var p=s,y=Symbol.for("react.transitional.element"),d=Symbol.for("react.portal"),x=Symbol.for("react.fragment"),v=Symbol.for("react.strict_mode"),w=Symbol.for("react.profiler"),I=Symbol.for("react.consumer"),E=Symbol.for("react.context"),S=Symbol.for("react.forward_ref"),R=Symbol.for("react.suspense"),k=Symbol.for("react.suspense_list"),C=Symbol.for("react.memo"),N=Symbol.for("react.lazy"),A=Symbol.for("react.activity"),$=Symbol.for("react.client.reference"),D=p.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,U=Object.prototype.hasOwnProperty,ne=Array.isArray,K=console.createTask?console.createTask:function(){return null};p={react_stack_bottom_frame:function(b){return b()}};var ae,J={},Q=p.react_stack_bottom_frame.bind(p,a)(),z=K(o(a)),M={};le.Fragment=x,le.jsx=function(b,j,P){var B=1e4>D.recentlyCreatedOwnerStacks++;return u(b,j,P,!1,B?Error("react-stack-top-frame"):Q,B?K(o(b)):z)},le.jsxs=function(b,j,P){var B=1e4>D.recentlyCreatedOwnerStacks++;return u(b,j,P,!0,B?Error("react-stack-top-frame"):Q,B?K(o(b)):z)}})()),le}var Te;function Sr(){return Te||(Te=1,process.env.NODE_ENV==="production"?me.exports=vr():me.exports=wr()),me.exports}var h=Sr();const ke=s.createContext(void 0),V=()=>{const e=s.useContext(ke);if(!e)throw new Error("❌ useReactaFormContext must be used within a <ReactaFormProvider>");return e};class ge{map={};register(r,n){this.map[r]=n}get(r){return this.map[r]}has(r){return r in this.map}list(){return Object.keys(this.map)}entries(){return Object.entries(this.map)}values(){return Object.values(this.map)}size(){return Object.keys(this.map).length}unregister(r){return r in this.map?(delete this.map[r],!0):!1}clear(){this.map={}}registerAll(r){Array.isArray(r)?r.forEach(([n,o])=>this.register(n,o)):Object.entries(r).forEach(([n,o])=>this.register(n,o))}getOrDefault(r,n){return this.get(r)??n}}function Je(e,r=300,n){const o=s.useRef(void 0),t=s.useRef(e),a=s.useRef(null),i=s.useRef(!1);s.useEffect(()=>{t.current=e},[e]),s.useEffect(()=>()=>{o.current!==void 0&&(window.clearTimeout(o.current),o.current=void 0)},[]);const c=s.useCallback(()=>{o.current!==void 0&&(window.clearTimeout(o.current),o.current=void 0),a.current=null,i.current=!1},[]),f=s.useCallback(()=>{if(o.current!==void 0&&(window.clearTimeout(o.current),o.current=void 0),a.current)try{t.current(...a.current)}finally{a.current=null,i.current=!1}},[]);return{callback:s.useCallback((...u)=>{if(n?.leading===!0&&!i.current){i.current=!0,t.current(...u),window.clearTimeout(o.current),o.current=window.setTimeout(()=>{i.current=!1,o.current=void 0},r);return}a.current=u,window.clearTimeout(o.current),o.current=window.setTimeout(()=>{o.current=void 0,a.current&&(t.current(...a.current),a.current=null,i.current=!1)},r)},[r,n?.leading]),cancel:c,flush:f}}const F={field:"reactaform-field",label:"reactaform-label",input:"reactaform-input",textInput:"reactaform-input--text",inputNumber:"reactaform-input--number",inputSelect:"reactaform-select",rangeInput:"reactaform-input--range",button:"reactaform-button"},W=(...e)=>{const r=[];for(const n of e)n&&(typeof n=="string"?r.push(n):typeof n=="object"&&Object.entries(n).forEach(([o,t])=>{t&&r.push(o)}));return r.join(" ")},Ge=({content:e,size:r="medium",animation:n=!0})=>{const{t:o,darkMode:t,formStyle:a,fieldStyle:i}=V(),[c,f]=s.useState(!1),[m,u]=s.useState({x:0,y:0}),[g,l]=s.useState(!1),p=s.useRef(null),y=s.useRef(null),d=s.useRef(null),x=s.useMemo(()=>{const E={icon:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"1.2em",height:"1.2em",fontSize:"0.9em",fontWeight:"bold",borderRadius:"50%",backgroundColor:t?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.06)",color:t?"#f0f0f0":"#333",border:`1px solid ${t?"rgba(255,255,255,0.2)":"rgba(0,0,0,0.1)"}`,cursor:"pointer",transition:n?"all 0.2s ease":void 0,marginLeft:"0.3em"},text:{...{small:{padding:"4px 8px",fontSize:"11px",maxWidth:"200px"},medium:{padding:"6px 10px",fontSize:"12px",maxWidth:"240px"},large:{padding:"8px 12px",fontSize:"13px",maxWidth:"280px"}}[r],position:"absolute",backgroundColor:`var(--reactaform-tooltip-color-bg, ${t?"rgba(45,45,45,0.95)":"rgba(60,60,60,0.92)"})`,color:`var(--reactaform-tooltip-color, ${t?"#f0f0f0":"#fff"})`,borderRadius:"6px",border:`1px solid ${t?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)"}`,boxShadow:t?"0 8px 16px rgba(0,0,0,0.4)":"0 6px 18px rgba(0,0,0,0.12)",zIndex:2147483647,opacity:0,visibility:"hidden",transition:n?"opacity 0.2s ease, visibility 0.2s ease":void 0,pointerEvents:"none",whiteSpace:"normal",wordBreak:"break-word",boxSizing:"border-box"},textVisible:{opacity:1,visibility:"visible"}},S=(k,C,N)=>{const $=k?.[C];return(N&&$?$[N]:void 0)??{}};return{icon:{...E.icon,...S(a,"tooltip","icon"),...S(i,"tooltip","icon")},text:{...E.text,...S(a,"tooltip","text"),...S(i,"tooltip","text")},textVisible:E.textVisible}},[t,r,n,a,i]);s.useEffect(()=>{if(c){const I=requestAnimationFrame(()=>l(!1)),E=requestAnimationFrame(()=>{if(p.current){const S=p.current.getBoundingClientRect(),R=8;d.current=S;const k=S.right+R,C=S.top;u({x:k,y:C}),l(!0)}});return()=>{cancelAnimationFrame(E),cancelAnimationFrame(I)}}else requestAnimationFrame(()=>l(!1))},[c]),s.useEffect(()=>{if(!g)return;const I=requestAnimationFrame(()=>{if(!y.current)return;const E=y.current.getBoundingClientRect(),S=8,R=typeof window<"u"?window.innerWidth:1024,k=typeof window<"u"?window.innerHeight:768;let C=m.x,N=m.y;const A=d.current;A&&(C=A.right+S,N=A.top+A.height/2-E.height/2+-4,C+E.width>R-S&&(C=A.left-S-E.width)),C+E.width>R-S&&(C=Math.max(S,R-E.width-S)),C<S&&(C=S),N+E.height>k-S&&(N=Math.max(S,k-E.height-S)),N<S&&(N=S),(C!==m.x||N!==m.y)&&u({x:C,y:N})});return()=>cancelAnimationFrame(I)},[g,m.x,m.y]);const v=typeof document<"u"?document.getElementById("popup-root"):null,w=h.jsx("div",{ref:y,style:{...x.text,transform:g?"translateY(0) scale(1)":"translateY(-4px) scale(0.98)",transition:"opacity 120ms ease, transform 120ms ease, visibility 120ms ease",width:240,...g?x.textVisible:{},top:m.y,left:m.x},"data-reactaform-theme":t?"dark":"light",children:o(e)});return h.jsxs(h.Fragment,{children:[h.jsx("span",{"data-testid":"tooltip-icon",ref:p,onMouseEnter:()=>f(!0),onMouseLeave:()=>f(!1),style:{...x.icon},children:"?"}),c&&(v?je.createPortal(w,v):w)]})},ve=s.memo(({field:e,error:r,children:n,showLabel:o=!0})=>{const{t}=V(),a=e?.labelLayout==="column-center"?"center":"left";return h.jsxs("div",{className:`${F.field} column-layout`,style:{display:"flex",flexDirection:"column",gap:"var(--reactaform-label-gap, 4px)","--label-align":a},children:[o&&h.jsx("div",{style:{textAlign:a,width:"100%"},children:h.jsx("label",{className:F.label,htmlFor:e.name,style:{textAlign:a,width:"100%",minWidth:"unset",display:"block"},children:t(e.displayName)})}),h.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--reactaform-inline-gap, 8px)",width:"100%"},children:[h.jsx("div",{style:{flex:1,minWidth:0,maxWidth:"100%"},children:h.jsx("div",{style:{width:"100%"},children:n})}),e.tooltip&&h.jsx(Ge,{content:e.tooltip})]}),r&&h.jsx(Ne,{children:r})]})});ve.displayName="ColumnFieldLayout";const Ke=s.memo(({field:e,error:r,children:n,rightAlign:o=!1})=>{const{t}=V(),a=s.useMemo(()=>({display:"flex",flexDirection:"column",gap:0}),[]),i=s.useMemo(()=>({display:"flex",flexDirection:"row",alignItems:"center",gap:"3px"}),[]);return h.jsxs("div",{className:`${F.field} row-layout`,children:[h.jsx("label",{className:F.label,htmlFor:e.name,style:{textAlign:"left",justifyContent:"flex-start"},children:t(e.displayName)}),h.jsxs("div",{style:a,children:[h.jsxs("div",{style:i,children:[o?h.jsx("div",{style:{display:"flex",flex:1,justifyContent:"flex-end",alignItems:"center",gap:"var(--reactaform-inline-gap, 8px)"},children:n}):n,e.tooltip&&h.jsx(Ge,{content:e.tooltip})]}),r&&h.jsx(Ne,{children:r})]})]})});Ke.displayName="RowFieldLayout";const q=({field:e,error:r,children:n,rightAlign:o=!1})=>e?.labelLayout==="column-left"||e?.labelLayout==="column-center"?h.jsx(ve,{field:e,error:r,showLabel:!0,children:n}):e?.type==="checkbox"||e?.type==="switch"?h.jsx(ve,{field:e,error:r,showLabel:!1,children:n}):h.jsx(Ke,{field:e,error:r,rightAlign:o,children:n}),Ne=s.memo(({children:e})=>{const r=s.useMemo(()=>({color:"var(--reactaform-error-color)",fontSize:"13px",marginTop:"4px",fontWeight:"var(--reactaform-font-weight)",display:"flex",flex:1,justifyContent:"flex-start",alignItems:"flex-start"}),[]);return h.jsx("div",{style:r,children:e})});Ne.displayName="ErrorDiv";const Xe=s.memo(({name:e,onChange:r})=>{const{t:n}=V();return h.jsxs("div",{style:{marginBottom:16},children:[h.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 2fr",gap:12,alignItems:"center"},children:[h.jsx("label",{htmlFor:"instance-name-input",style:{margin:0,fontSize:"0.95em",fontWeight:500,color:"var(--reactaform-text-color, #333)"},children:n("Instance Name")}),h.jsx("input",{id:"instance-name-input",type:"text",value:e,onChange:o=>r(o.target.value),style:{width:"100%",padding:"var(--reactaform-input-padding, 8px 12px)",fontSize:"var(--reactaform-input-font-size, 14px)",border:"1px solid var(--reactaform-input-border, #ddd)",borderRadius:"var(--reactaform-border-radius, 4px)",backgroundColor:"var(--reactaform-input-bg, #fff)",color:"var(--reactaform-text-color, #333)",boxSizing:"border-box"},placeholder:n("Enter instance name")})]}),h.jsx("div",{style:{height:"1px",backgroundColor:"var(--reactaform-separator, #e6e6e6)",marginTop:12,marginBottom:12}})]})});Xe.displayName="InstanceName";class Cr extends ge{registerInCategory(r,n,o){this.get(r)||this.register(r,{});const t=this.get(r);t[n]=o}getFromCategory(r,n){return this.get(r)?.[n]}listFromCategory(r){return Object.keys(this.get(r)||{})}listCategories(){return this.list()}}const Ze=new ge,Qe=new Cr;function Rr(e,r){Ze.register(e,r)}function Er(e,r,n){Qe.registerInCategory(e,r,n)}function jr(e,r){return Qe.getFromCategory(e,r)||null}function kr(e){return Ze.get(e)||null}const be=new Map,ye=new Map;function H(e,r,n,o){if(r&&typeof r.validationHandlerName=="string"){const t=`${e}:${r.validationHandlerName}`;if(!be.has(t)){const i=jr(e,r.validationHandlerName);be.set(t,i)}const a=be.get(t);if(a)return a(n,o)||null}return null}function er(e,r,n){if(e&&typeof e.validationHandlerName=="string"){const o=e.validationHandlerName;if(!ye.has(o)){const a=kr(o);ye.set(o,a)}const t=ye.get(o);if(t)return t(r,n)||null}return null}function te(e){return typeof e=="object"&&e!==null}function Ie(e){if(!te(e))return!1;const r=e;return typeof r.name=="string"&&typeof r.displayName=="string"}function rr(e){if(!te(e))return!1;const r=e;return typeof r.name!="string"||typeof r.version!="string"||!Array.isArray(r.properties)?!1:r.properties.every(n=>Ie(n))}function we(e){try{return typeof File<"u"&&e instanceof File}catch{const r=te(e)?e:void 0;return!!r&&typeof r.name=="string"&&typeof r.size=="number"}}function Nr(e,r,n={}){try{const{includeMetadata:o=!1,dateFormat:t="iso",fileHandling:a="metadata",prettify:i=!1,excludeFields:c=[],includeOnlyFields:f=[]}=n;if(!e||typeof e!="object")return{success:!1,error:"Instance must be a valid object"};const m=[],u=[],g={},p=(rr(r)||te(r)&&Array.isArray(r.properties)?r.properties:[]).filter(Ie),y=new Map(p.map(x=>[x.name,x]));for(const[x,v]of Object.entries(e)){if(c.includes(x)){u.push(x);continue}if(f.length>0&&!f.includes(x)){u.push(x);continue}if(v===void 0)continue;const w=y.get(x);try{g[x]=Ir(v,w,{dateFormat:t,fileHandling:a})}catch(I){m.push(`Error serializing field '${x}': ${String(I)}`),g[x]=null}}return o&&(g._metadata={serializedAt:new Date().toISOString(),version:(te(r)?r.version:void 0)||"1.0.0",fieldCount:Object.keys(g).length-1}),{success:!0,data:i?JSON.stringify(g,null,2):JSON.stringify(g),metadata:{fieldCount:Object.keys(g).length,excludedFields:u,warnings:m}}}catch(o){return{success:!1,error:`Serialization failed: ${o instanceof Error?o.message:"Unknown error"}`}}}function Ir(e,r,n={}){const{dateFormat:o="iso",fileHandling:t="metadata"}=n;if(e==null)return null;if(r)switch(r.type){case"date":case"datetime":case"date-time":return Le(e,o);case"file":return Pe(e,t);case"int":case"integer":return typeof e=="string"?parseInt(e,10):e;case"float":case"number":return typeof e=="string"?parseFloat(e):e;case"boolean":return typeof e=="string"?e==="true":!!e;case"int-array":case"float-array":return Array.isArray(e)?e.map(a=>typeof a=="string"?Number(a):a):e;default:return e}return e instanceof Date?Le(e,o):we(e)||Array.isArray(e)&&we(e[0])?Pe(e,t):e}function Le(e,r){let n=null;if(e instanceof Date)n=e;else if(typeof e=="string"){const o=new Date(e);if(!isNaN(o.getTime()))n=o;else return e}else return e;switch(r){case"timestamp":return n.getTime();case"locale":return n.toLocaleString();case"iso":default:return n.toISOString()}}function Pe(e,r){return r==="skip"?null:Array.isArray(e)?e.map(n=>_e(n,r)):_e(e,r)}function _e(e,r){if(!we(e))return e;const n=e;return r==="metadata"?{name:n.name,size:n.size,type:n.type,lastModified:n.lastModified}:{name:n.name,size:n.size,type:n.type,lastModified:n.lastModified,_note:"Base64 encoding requires async implementation"}}function Fr(e,r,n={}){try{const{strict:o=!1,validateTypes:t=!0,preserveUnknownFields:a=!0,dateFormat:i="auto"}=n;if(!e||typeof e!="string")return{success:!1,error:"Serialized data must be a non-empty string"};let c;try{c=JSON.parse(e)}catch(d){return{success:!1,error:`Invalid JSON: ${d instanceof Error?d.message:"Unknown parsing error"}`}}if(!c||typeof c!="object")return{success:!1,error:"Parsed data must be an object"};const f=[],m=[],u={},l=(rr(r)||te(r)&&Array.isArray(r.properties)?r.properties:[]).filter(Ie),p=new Map(l.map(d=>[d.name,d]));for(const d of l){const x=d.name,v=c[x];if(v===void 0){o&&d.required&&m.push(`Required field '${x}' is missing`);continue}try{u[x]=Ar(v,d,{validateTypes:t,dateFormat:i})}catch(w){const I=`Error deserializing field '${x}': ${String(w)}`;o?m.push(I):(f.push(I),u[x]=v)}}if(a)for(const[d,x]of Object.entries(c))!p.has(d)&&d!=="_metadata"&&(o&&f.push(`Unknown field '${d}' preserved`),u[d]=x);const y=m.length>0;return{success:!y,data:u,warnings:f.length>0?f:void 0,validationErrors:y?m:void 0}}catch(o){return{success:!1,error:`Deserialization failed: ${o instanceof Error?o.message:"Unknown error"}`}}}function Ar(e,r,n={}){const{validateTypes:o=!0,dateFormat:t="auto"}=n;if(e==null)return e;try{switch(r.type){case"date":case"datetime":case"date-time":return $r(e,t,o);case"int":case"integer":return Se(e,o);case"float":case"number":return Ce(e,o);case"boolean":return Vr(e,o);case"int-array":return qe(e,"integer",o);case"float-array":return qe(e,"number",o);case"string":case"text":case"email":case"url":case"phone":return o?String(e):e;default:return e}}catch(a){if(o)throw new Error(`Type conversion failed: ${String(a)}`);return e}}function Mr(e,r={}){try{const{prettify:n=!0,includeMetadata:o=!0}=r;if(!e||typeof e!="object")return{success:!1,error:"Definition must be a valid object"};const t={...e};return o&&(t._metadata={serializedAt:new Date().toISOString(),version:t.version||"1.0.0",propertyCount:(Array.isArray(t.properties)?t.properties.length:0)||0}),{success:!0,data:n?JSON.stringify(t,null,2):JSON.stringify(t),metadata:{fieldCount:(Array.isArray(t.properties)?t.properties.length:0)||0,excludedFields:[],warnings:[]}}}catch(n){return{success:!1,error:`Definition serialization failed: ${n instanceof Error?n.message:"Unknown error"}`}}}function Or(e,r={}){try{const{strict:n=!1,validateTypes:o=!0}=r;let t;if(typeof e=="string")try{t=JSON.parse(e)}catch(u){return{success:!1,error:`Invalid JSON for definition: ${u instanceof Error?u.message:"Unknown parsing error"}`}}else if(e&&typeof e=="object")t={...e};else return{success:!1,error:"Input must be a string or object"};const a=[],i=[],c=["name","version","displayName"];for(const u of c)if(!t[u])if(n)i.push(`Required field '${u}' is missing`);else switch(a.push(`Missing field '${u}', using default`),u){case"name":t.name="unnamed-definition";break;case"version":t.version="1.0.0";break;case"displayName":t.displayName=t.name||"Unnamed Definition";break}const f=Array.isArray(t.properties)?t.properties:null;f?t.properties=f.map((u,g)=>{const l=te(u)?u:{},p={...l};if(!l.name){const y=`Property at index ${g} missing 'name'`;n?i.push(y):(a.push(`${y}, using 'field_${g}'`),p.name=`field_${g}`)}return l.displayName||(p.displayName=l.name||`Field ${g}`),l.type||(n&&o?i.push(`Property '${l.name||g}' missing 'type'`):(a.push(`Property '${l.name||g}' missing 'type', using 'string'`),p.type="string")),l.defaultValue===void 0&&(p.defaultValue=null),l.required===void 0&&(p.required=!1),p}):n?i.push("Properties must be an array"):(a.push("Properties not found or invalid, using empty array"),t.properties=[]);const m=i.length>0;return{success:!m,data:t,warnings:a.length>0?a:void 0,validationErrors:m?i:void 0}}catch(n){return{success:!1,error:`Definition deserialization failed: ${n instanceof Error?n.message:"Unknown error"}`}}}function $r(e,r,n){if(e instanceof Date)return e;if(typeof e=="number"){const o=new Date(e);if(n&&isNaN(o.getTime()))throw new Error(`Invalid timestamp: ${e}`);return o}if(typeof e=="string"){const o=new Date(e);if(n&&isNaN(o.getTime()))throw new Error(`Invalid date string: ${e}`);return o}if(n)throw new Error(`Cannot convert ${typeof e} to Date`);return e}function Se(e,r){if(typeof e=="number"&&Number.isInteger(e))return e;if(typeof e=="string"&&e.trim()!==""){const n=parseInt(e,10);if(r&&isNaN(n))throw new Error(`Cannot convert "${e}" to integer`);return n}if(r)throw new Error(`Cannot convert ${typeof e} to integer`);return e}function Ce(e,r){if(typeof e=="number")return e;if(typeof e=="string"&&e.trim()!==""){const n=parseFloat(e);if(r&&isNaN(n))throw new Error(`Cannot convert "${e}" to number`);return n}if(r)throw new Error(`Cannot convert ${typeof e} to number`);return e}function Vr(e,r){if(typeof e=="boolean")return e;if(typeof e=="string"){const n=e.toLowerCase();if(n==="true"||n==="1")return!0;if(n==="false"||n==="0")return!1;if(r)throw new Error(`Cannot convert "${e}" to boolean`)}if(typeof e=="number")return!!e;if(r)throw new Error(`Cannot convert ${typeof e} to boolean`);return e}function qe(e,r,n){if(!Array.isArray(e)){if(typeof e=="string")return e.split(",").map(t=>t.trim()).filter(Boolean).map(t=>r==="integer"?Se(t,n):Ce(t,n));if(n)throw new Error(`Expected array, got ${typeof e}`);return e}return e.map((o,t)=>{try{return r==="integer"?Se(o,n):Ce(o,n)}catch(a){if(n)throw new Error(`Array element ${t}: ${a}`);return o}})}const Dr=(e,r)=>{const n=new Map;let o=null,t=null,a=0;for(const i of e){const c=i.group;if(!c){o=null,t=null;continue}if(c===o)r[i.name].group=t??c;else{if(!n.has(c))n.set(c,1),t=null,r[i.name].group=c;else{const f=n.get(c),m=`${c}(${f})`;n.set(c,f+1),t=m,r[i.name].group=m,a++}o=c}}return a},zr=(e,r={})=>{const{includeEmpty:n=!0}=r,o=[];let t=null,a=[],i=0;for(const f of e){const m=f.group||null;m!==t?((a.length>0||n)&&(a.length===0&&i++,o.push({name:t,fields:a})),t=m,a=[f]):a.push(f)}(a.length>0||n)&&(a.length===0&&i++,o.push({name:t,fields:a}));const c=Math.max(0,...o.map(f=>f.fields.length));return{groups:o,metadata:{totalGroups:o.length,emptyGroups:i,largestGroup:c}}},xe=new Map,de=new Map,re=new Set,Re=new Map,Tr=async e=>{try{let r;switch(e.toLowerCase()){case"fr":r=(await Promise.resolve().then(()=>require("./common-DLr0UoG9.cjs"))).default;break;case"de":r=(await Promise.resolve().then(()=>require("./common-BgCI2TVb.cjs"))).default;break;case"es":r=(await Promise.resolve().then(()=>require("./common-DRIndE7S.cjs"))).default;break;case"zh-cn":r=(await Promise.resolve().then(()=>require("./common-BeJOG7Z0.cjs"))).default;break;case"en":r={};break;default:r={}}return{success:!0,translations:r,fromCache:!1}}catch(r){return{success:!1,translations:{},error:`Failed to load common translations for ${e}: ${r}`}}},Lr=async e=>{if(!e)return{success:!1,translations:{},error:"Language is required"};const r=e.toLowerCase();if(r==="en")return{success:!0,translations:{},fromCache:!1};if(xe.has(r))return{success:!0,translations:xe.get(r)||{},fromCache:!0};const n=await Tr(r);return n.success&&(xe.set(r,n.translations),Re.set(r,{loadedAt:new Date,size:Object.keys(n.translations).length,source:"common"})),n},Pr=async(e,r)=>{if(!e||!r)return{success:!1,translations:{},error:"Both language and localizeName are required"};const n=`${e.toLowerCase()}/${r}`;if(re.has(n))return{success:!1,translations:{},error:"Previously failed to load",fromCache:!0};if(de.has(n))return{success:!0,translations:de.get(n)||{},fromCache:!0};try{let o=r;!r.includes("/")&&!r.includes(".")&&(o=`/locales/${e}/${r}.json`);const t=await fetch(o);if(!t.ok){const m=`HTTP ${t.status}: ${t.statusText}`;return t.status===404?(de.set(n,{}),Re.set(n,{loadedAt:new Date,size:0,source:"user"}),{success:!0,translations:{},fromCache:!1}):(re.add(n),{success:!1,translations:{},error:m})}const a=t.headers.get("content-type")||"";!a.includes("application/json")&&!a.includes("text/json")&&tr()&&console.warn(`Translation file at ${o} has unexpected content-type: ${a}`);const i=await t.text();if(!i){const m="Empty translation file";return re.add(n),{success:!1,translations:{},error:m}}let c;try{c=JSON.parse(i)}catch(m){const u=`Invalid JSON in translation file: ${m instanceof Error?m.message:String(m)}`;return re.add(n),{success:!1,translations:{},error:u}}if(!c||typeof c!="object"){const m="Invalid translation file format";return re.add(n),{success:!1,translations:{},error:m}}const f=Object.fromEntries(Object.entries(c).map(([m,u])=>[m,typeof u=="string"?u:String(u)]));if(!f||typeof f!="object"){const m="Invalid translation file format";return re.add(n),{success:!1,translations:{},error:m}}return de.set(n,f),Re.set(n,{loadedAt:new Date,size:Object.keys(f).length,source:"user"}),{success:!0,translations:f,fromCache:!1}}catch(o){const t=`Failed to load user translations: ${o instanceof Error?o.message:"Unknown error"}`;return re.add(n),{success:!1,translations:{},error:t}}};function tr(){try{if(typeof process<"u"&&process?.env?.NODE_ENV==="development")return!0}catch{}return!1}function _r(e,r){return r.length===0?e:e.replace(/\{\{(\d+)\}\}/g,(n,o)=>{const t=parseInt(o,10)-1,a=r[t];if(a==null)return n;try{return String(a)}catch{return n}})}const qr=(e,r,n)=>(o,...t)=>{let a=o,i=!1;return!o||typeof o!="string"?String(o||""):(e.toLowerCase()==="en"?(a=o,i=!0):Object.prototype.hasOwnProperty.call(n,o)?(a=n[o],i=!0):Object.prototype.hasOwnProperty.call(r,o)?(a=r[o],i=!0):a=o,a=_r(a,t),!i&&tr()&&console.debug(`Missing translation for "${o}" in language "${e}"`),a)},Fe={length:["m","cm","mm","km","in","ft","yd","mi"],area:["m^2","cm^2","mm^2","in^2","ft^2","yd^2"],volume:["L","m^3","cm^3","mL","in^3","ft^3","yd^3"],weight:["kg","g","mg","t","lb","oz"],time:["min","s","h","ms","d"],temperature:["C","F","K"],angle:["deg","rad","rev"]},Ae={length:{m:"Meter (m)",mm:"Millimeter (mm)",cm:"Centimeter (cm)",km:"Kilometer (km)",in:"Inch (in)",ft:"Foot (ft)",yd:"Yard (yd)",mi:"Mile (mi)"},area:{"m^2":"Square meter (m^2)","mm^2":"Square millimeter (mm^2)","cm^2":"Square centimeter (cm^2)","in^2":"Square inch (in^2)","ft^2":"Square foot (ft^2)","yd^2":"Square yard (yd^2)"},volume:{L:"Liter (L)","cm^3":"Cubic centimeter (cm^3)","m^3":"Cubic meter (m^3)",mL:"Milliliter (mL)","in^3":"Cubic inch (in^3)","ft^3":"Cubic foot (ft^3)","yd^3":"Cubic yard (yd^3)"},weight:{kg:"Kilogram (kg)",g:"Gram (g)",mg:"Milligram (mg)",t:"Tonne (t)",lb:"Pound (lb)",oz:"Ounce (oz)"},time:{s:"Second (s)",min:"Minute (min)",h:"Hour (h)",ms:"Millisecond (ms)",d:"Day (d)",wk:"Week (wk)"},temperature:{C:"Celsius (C)",F:"Fahrenheit (F)",K:"Kelvin (K)"},angle:{deg:"Degree (deg)",rad:"Radian (rad)",rev:"Revolution (rev)"}},Me={length:{mm:1e3,cm:100,m:1,km:.001,in:100/2.54,ft:100/(2.54*12),yd:100/(2.54*36),mi:1/1609.344},area:{"m^2":1,"mm^2":1e6,"cm^2":1e4,"km^2":1/1e6,"in^2":(100/2.54)**2,"ft^2":(100/(2.54*12))**2,"yd^2":(100/(2.54*36))**2},volume:{"cm^3":1e6,"m^3":1,L:1,mL:1e6,"in^3":(100/2.54)**3,"ft^3":(100/(2.54*12))**3,"yd^3":(100/(2.54*36))**3},weight:{mg:1e6,g:1e3,kg:1,t:.001,lb:1/.45359237,oz:1/.028349523125},time:{ms:1e3,s:1,min:1/60,h:1/3600,d:1/86400,wk:1/604800},temperature:{C:1,F:33.8,K:274.15},angle:{deg:1,rad:Math.PI/180,rev:1/360}},Oe={},Br=new Set([...Object.keys(Fe),...Object.keys(Ae),...Object.keys(Me)]);for(const e of Br){const r={},n=Fe[e]??[],o=Ae[e]??{},t=Me[e]??{};for(const a of n){const i=o[a];r[a]={name:typeof i=="string"?i:String(a),shortName:a,factor:Object.prototype.hasOwnProperty.call(t,a)?t[a]:void 0}}for(const[a,i]of Object.entries(o))if(!r[a]){const c=typeof i=="string"?i:String(a);r[a]={name:c,shortName:a,factor:Object.prototype.hasOwnProperty.call(t,a)?t[a]:void 0}}for(const[a,i]of Object.entries(t))r[a]||(r[a]={name:String(a),shortName:String(a),factor:i});Oe[e]=r}const Hr=Object.freeze(Object.defineProperty({__proto__:null,dimensionUnitDisplayMap:Ae,dimensionUnitsMap:Fe,dimensonUnitFactorsMap:Me,unitsByDimension:Oe},Symbol.toStringTag,{value:"Module"})),Ur=({field:e,value:r,onChange:n,onError:o})=>{const{definitionName:t,t:a}=V(),i=s.useRef(o);s.useEffect(()=>{i.current=o},[o]),s.useEffect(()=>{const u=H(t,e,r??!1,a);i.current?.(u??null)},[r,e,t,a]);const c=u=>{const g=u.target.checked;n?.(g,null)},f=u=>{(u.key===" "||u.key==="Spacebar"||u.key==="Space"||u.key==="Enter")&&(u.preventDefault(),n?.(!r,null))},m=e.name;return h.jsx(q,{field:e,rightAlign:!1,children:h.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[h.jsx("label",{className:F.label,htmlFor:m,style:{textAlign:"left",justifyContent:"flex-start"},children:a(e.displayName)}),h.jsx("input",{id:m,"data-testid":"boolean-checkbox",type:"checkbox",checked:!!r,onChange:c,onKeyDown:f,"aria-checked":!!r,style:{cursor:"pointer",margin:"8px 0 8px 0",width:"1.2em",height:"1.2em",verticalAlign:"middle",color:"#FFFFFF",accentColor:"#0000FF",opacity:void 0}})]})})},Be=[{label:"Black",value:"#000000"},{label:"White",value:"#ffffff"},{label:"Red",value:"#ff0000"},{label:"Green",value:"#008000"},{label:"Blue",value:"#0000ff"},{label:"Yellow",value:"#ffff00"},{label:"Cyan",value:"#00ffff"},{label:"Magenta",value:"#ff00ff"},{label:"Orange",value:"#ffa500"},{label:"Purple",value:"#800080"},{label:"Brown",value:"#a52a2a"},{label:"Gray",value:"#808080"},{label:"Light Gray",value:"#d3d3d3"},{label:"Pink",value:"#ffc0cb"}];function nr(e){return/^#([0-9A-F]{3}){1,2}$/i.test(e)}function Wr(e){if(!nr(e))return null;const r=or(e),n=parseInt(r.slice(1),16);return{r:n>>16&255,g:n>>8&255,b:n&255}}function or(e){return e?(e=e.toLowerCase(),/^#([a-f0-9]){3}$/i.test(e)?"#"+e.slice(1).split("").map(r=>r+r).join(""):e):"#000000"}const Yr=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),[i,c]=s.useState("#000000"),f=s.useRef(null),m=s.useRef(null),u=s.useRef(o);s.useEffect(()=>{u.current=o},[o]),s.useEffect(()=>{const v=r&&nr(r)?r:"#000000",w=or(v);c(w)},[r]),s.useEffect(()=>{const v=H(a,e,r??"#000000",t);u.current?.(v??null)},[r,e,a,t]);const g=v=>{const w=v.target.value;c(w),n?.(w,null)},l=v=>{const w=v.target.value;c(w),n?.(w,null)},p=Be.find(v=>v.value===i),{r:y,g:d,b:x}=Wr(i)||{r:0,g:0,b:0};return h.jsx(q,{field:e,error:null,children:h.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",width:"100%"},children:[h.jsxs("select",{ref:f,id:e.name,value:i,onChange:g,style:{minWidth:"120px",flex:1},className:W(F.input,F.inputSelect),children:[Be.map(v=>h.jsx("option",{value:v.value,children:t(v.label)},v.value)),p?null:h.jsxs("option",{value:i,children:["(",y,", ",d,", ",x,")"]},i)]}),h.jsx("label",{style:{width:"2.5em",height:"1.8em",display:"inline-block",border:"1px solid #ccc",borderRadius:"4px",backgroundColor:i,cursor:"pointer",overflow:"hidden",flexShrink:0},children:h.jsx("input",{ref:m,type:"color",value:i,onChange:l,style:{opacity:0,width:"100%",height:"100%",border:"none",padding:0,cursor:"pointer"}})})]})})},ue=e=>{if(!e)return null;const r=new Date(e);return isNaN(r.getTime())?null:r},Jr=e=>{if(!e)return"";if(/^\d{4}-\d{2}-\d{2}$/.test(e))return ue(e)?e:"";const n=ue(e);if(n){const o=n.getFullYear(),t=String(n.getMonth()+1).padStart(2,"0"),a=String(n.getDate()).padStart(2,"0");return`${o}-${t}-${a}`}return""},Gr=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),{name:i,required:c}=e,f=s.useRef(null),m=s.useRef(o);s.useEffect(()=>{m.current=o},[o]);const u=s.useCallback(l=>{if(!l||l.trim()==="")return c?t("Value required"):null;if(l){const y=ue(l);if(!y)return t("Invalid date format");if(e.minDate){const d=ue(e.minDate);if(d&&y.getTime()<d.getTime())return t("Date must be on or after {{1}}",e.minDate)}if(e.maxDate){const d=ue(e.maxDate);if(d&&y.getTime()>d.getTime())return t("Date must be on or before {{1}}",e.maxDate)}}return H(a,e,l,t)??null},[e,a,t,c]),g=l=>{const p=l.target.value,y=u(p);n?.(p,y)};return s.useEffect(()=>{const l=u(r);l!==f.current&&(f.current=l,m.current?.(l??null))},[r,u]),h.jsx(q,{field:e,error:u(r),children:h.jsx("input",{id:i,type:"date",value:Jr(r),onChange:g,className:W(F.input,F.textInput),...e.minDate?{min:e.minDate}:{},...e.maxDate?{max:e.maxDate}:{},"aria-invalid":!!u(r),"aria-describedby":u(r)?`${i}-error`:void 0})})},Kr=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),i=s.useRef(null),c=s.useRef(o);s.useEffect(()=>{c.current=o},[o]);const f=s.useCallback(u=>u===""||u===null||u===void 0?t("Value required"):!e.options||e.options.length===0?null:e.options.some(l=>l.value===u)?H(a,e,u,t)??null:t("Invalid option selected"),[e,t,a]);s.useEffect(()=>{const u=r!=null?String(r):"",g=f(u);if(g&&e.options&&e.options.length>0){const l=String(e.options[0].value);i.current&&(i.current.value=l),n?.(l,null),c.current?.(null)}else i.current&&(i.current.value=u),c.current?.(g??null)},[r,f,n,e.options]);const m=u=>{const g=u.target.value,l=f(g);n?.(g,l)};return h.jsx(q,{field:e,error:f(String(r??"")),children:h.jsx("select",{defaultValue:String(r??""),ref:i,onChange:m,className:W(F.input,F.inputSelect),children:(e.options??[]).map(u=>h.jsx("option",{value:String(u.value),children:t(u.label)},String(u.value)))})})};function Xr(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}const Zr=({field:e,value:r,onChange:n,onError:o})=>{const{definitionName:t,t:a}=V(),i=s.useRef(null),c=s.useCallback(g=>{const l=g.trim();return l===""?e.required?a("Value required"):null:Xr(l)?e.pattern&&!new RegExp(e.pattern).test(l)?a("Email does not match pattern: {{%1}}",{"%1":`${e.pattern}`}):H(t,e,g,a)??null:a("Must be valid email format")},[e,t,a]),f=g=>{const l=g.target.value,p=c(l);n?.(l,p)},m=s.useRef(null),u=s.useRef(o);return s.useEffect(()=>{u.current=o},[o]),s.useEffect(()=>{const g=r??"",l=c(g);i.current&&i.current.value!==String(g)&&(i.current.value=String(g)),l!==m.current&&(m.current=l,u.current?.(l??null))},[r,c]),h.jsx(q,{field:e,error:c(String(r??"")),children:h.jsx("input",{id:e.name,type:"email",defaultValue:String(r??""),ref:i,onChange:f,className:W(F.input,F.textInput)})})},Qr=({field:e})=>{const{darkMode:r}=V(),{color:n=r?"#444444":"#CCCCCC",thickness:o=1,margin:t="8px 0"}=e;return h.jsx("div",{style:{width:"auto",height:"0",borderTop:`${o}px solid ${n}`,margin:t}})},et=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),[i,c]=s.useState(!1),f=s.useRef(null),m=s.useRef(o);s.useEffect(()=>{m.current=o},[o]);const u=s.useCallback(w=>e.required&&(!w||Array.isArray(w)&&w.length===0)?t("Value required"):H(a,e,w,t)??null,[e,a,t]),g=s.useMemo(()=>u(r),[r,u]);s.useEffect(()=>{const w=u(r);n?.(r,w),m.current?.(w??null)},[r,u]);const l=w=>{const I=w.target.files;let E=null;if(I&&I.length>0){const R=Array.from(I);e.multiple?E=[...Array.isArray(r)?r:[],...R]:E=R[0]}const S=u(E);n?.(E,S)},p=w=>{w.preventDefault(),w.stopPropagation(),c(!1);const I=w.dataTransfer.files;if(I&&I.length>0){const E=Array.from(I);let S=null;e.multiple?S=[...Array.isArray(r)?r:[],...E]:S=E[0];const R=u(S);n?.(S,R)}},y=w=>{w.preventDefault(),w.stopPropagation(),c(!0)},d=w=>{w.preventDefault(),w.stopPropagation(),c(!1)},x=w=>{if(Array.isArray(r)&&typeof w=="number"){const I=r.filter((R,k)=>k!==w),E=I.length>0?I:null,S=u(E);n?.(E,S)}else{const I=u(null);n?.(null,I)}},v=()=>{const w=Array.isArray(r)?r:r?[r]:[];return w.length===0?null:h.jsx("div",{style:{marginTop:"8px",display:"flex",flexDirection:"column",gap:"6px"},children:w.map((I,E)=>h.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"6px 10px",backgroundColor:"var(--reactaform-input-bg, #fff)",border:"1px solid var(--reactaform-border-color, #d1d5db)",borderRadius:"4px",fontSize:"0.875rem",gap:"8px"},children:[h.jsx("div",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:I.name}),h.jsx("button",{type:"button",onClick:()=>x(Array.isArray(r)?E:void 0),"aria-label":t("Remove file"),style:{background:"transparent",border:"none",color:"var(--reactaform-color-error, #ef4444)",cursor:"pointer",padding:"2px 6px",fontSize:"1.125rem",lineHeight:1,borderRadius:"4px",transition:"background-color 0.2s",flexShrink:0},onMouseEnter:S=>{S.currentTarget.style.backgroundColor="var(--reactaform-bg-hover, #fee)"},onMouseLeave:S=>{S.currentTarget.style.backgroundColor="transparent"},children:"×"})]},`${I.name}-${E}`))})};return h.jsx(q,{field:e,error:g,children:h.jsxs("div",{style:{width:"100%"},children:[h.jsxs("div",{onDrop:p,onDragOver:y,onDragLeave:d,style:{position:"relative",border:`1px dashed ${i?"var(--reactaform-color-primary, #2563eb)":g?"var(--reactaform-color-error, #ef4444)":"var(--reactaform-border-color, #d1d5db)"}`,borderRadius:"var(--reactaform-border-radius, 4px)",padding:"8px 12px",textAlign:"center",backgroundColor:i?"var(--reactaform-bg-hover, #f0f9ff)":"var(--reactaform-input-bg, #fff)",transition:"all 0.2s ease",cursor:"pointer",minHeight:"var(--reactaform-input-height, 34px)",width:"100%",maxWidth:"100%",alignSelf:"stretch",boxSizing:"border-box",display:"flex",alignItems:"center",justifyContent:"center",gap:"8px"},onClick:()=>f.current?.click(),children:[h.jsx("input",{id:e.name,ref:f,type:"file",accept:e.accept,multiple:e.multiple,style:{display:"none"},onChange:l}),h.jsx("div",{style:{fontSize:"1.25rem",opacity:.6,lineHeight:1,flexShrink:0},children:"📁"}),h.jsx("div",{style:{fontSize:"0.875rem",fontWeight:400,color:"var(--reactaform-text-color, #111827)",flex:1,textAlign:"left"},children:i?t("Drop files here"):e.multiple?t("Choose Files or Drag & Drop"):t("Choose File or Drag & Drop")}),e.accept&&h.jsx("div",{style:{fontSize:"0.75rem",color:"var(--reactaform-text-muted, #6b7280)",whiteSpace:"nowrap",opacity:i?0:1,transition:"opacity 0.15s ease",pointerEvents:i?"none":"auto"},children:e.accept})]}),v()]})})},rt=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/;function tt(e){return e.split(",").map(r=>r.trim()).every(r=>rt.test(r))}const nt=e=>!e||e.trim()===""?[]:e.split(",").map(r=>r.trim()).filter(Boolean).map(Number),ot=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),[i,c]=s.useState(Array.isArray(r)?r.join(", "):String(r??"")),f=s.useCallback(l=>{if(l.trim()==="")return e.required?t("Value required"):null;if(!tt(l))return t("Each value must be a valid float");const p=nt(l);if(e.minCount!==void 0&&p.length<e.minCount)return t("Minimum number of values: {{1}}",e.minCount);if(e.maxCount!==void 0&&p.length>e.maxCount)return t("Maximum number of values: {{1}}",e.maxCount);for(const d of p){if(e.min!==void 0&&(e.minInclusive?d<e.min:d<=e.min))return t("Each value must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?d>e.max:d>=e.max))return t("Each value must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max)}return H(a,e,p,t)??null},[a,e,t]),m=l=>{const p=l.target.value,y=f(p);c(p),n?.(p,y)},u=s.useRef(null),g=s.useRef(o);return s.useEffect(()=>{g.current=o},[o]),s.useEffect(()=>{const l=Array.isArray(r)?r.join(", "):String(r??""),p=f(l);p!==u.current&&(u.current=p,g.current?.(p??null))},[r,e.required,f,t]),h.jsx(q,{field:e,error:f(i),children:h.jsx("input",{type:"text",value:i,onChange:m,className:W(F.input,F.textInput),style:{flex:1}})})},at=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/,st=e=>{const r=Number.parseFloat(e);return Number.isNaN(r)?null:r},it=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),i=s.useRef(null),c=s.useCallback(g=>{if(g.trim()==="")return e.required?t("Value required"):null;if(!at.test(g))return t("Must be a valid float");const l=st(g);return l===null?t("Must be a valid float"):e.min!==void 0&&(e.minInclusive?l<e.min:l<=e.min)?t("Must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min):e.max!==void 0&&(e.maxInclusive?l>e.max:l>=e.max)?t("Must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max):H(a,e,l,t)??null},[e,a,t]),f=s.useRef(null),m=s.useRef(o);s.useEffect(()=>{m.current=o},[o]),s.useEffect(()=>{const g=String(r??""),l=c(g);l!==f.current&&(f.current=l,m.current?.(l??null)),i.current&&document.activeElement!==i.current&&(i.current.value=g)},[r,e,c,t]);const u=g=>{const l=g.target.value,p=c(l);n?.(l,p)};return h.jsx(q,{field:e,error:c(String(r??"")),children:h.jsx("input",{id:e.name,type:"text",defaultValue:String(r??""),ref:i,onChange:u,className:W(F.input,F.inputNumber)})})};function ct(){try{return"/"}catch{}try{if(typeof process<"u"&&process?.env?.PUBLIC_URL)return process.env.PUBLIC_URL}catch{}return"/"}const lt=({field:e,value:r})=>{const{language:n,t:o}=V(),t=e.alignment||"center",a={left:"flex-start",center:"center",right:"flex-end"},i=typeof r=="string"?r:"";let c=i&&i.trim()!==""?i:typeof e.defaultValue=="string"?e.defaultValue:"";c&&!c.startsWith("/")&&(c=`${ct()}${c}`);const f=e.localized?.split(";").map(x=>x.trim()),[m,u]=s.useState(c||""),g=s.useRef(c||null);if(s.useEffect(()=>{if(!c)return;const x=c.split("/"),v=x.pop(),w=v.lastIndexOf(".");if(w===-1)return;const I=v.substring(0,w),E=v.substring(w);let S=null;f?.includes(n)&&(S=`${I}_${n}${E}`);const R=new AbortController;if(S){const k=[...x,S].join("/");fetch(k,{method:"HEAD",signal:R.signal}).then(C=>{const N=C.ok?k:c;N!==g.current&&(g.current=N,u(N))}).catch(()=>{c!==g.current&&(g.current=c,u(c))})}else{const k=c;k!==g.current&&(g.current=k,requestAnimationFrame(()=>u(k)))}return()=>{R.abort()}},[c,n,f]),!m)return null;const{width:l,height:p}=e,y={},d={borderRadius:"8px",objectFit:"contain",boxShadow:"0 2px 6px rgba(0,0,0,0.1)",margin:"0 0 8px 0"};return l&&p?(y.width=l,y.height=p,d.width=`${l}px`,d.height=`${p}px`):l&&!p?(y.width=l,d.width=`${l}px`,d.height="auto"):!l&&p&&(y.height=p,d.width="auto",d.height=`${p}px`),h.jsx(q,{field:e,children:h.jsx("div",{"data-testid":"image-wrapper",style:{display:"flex",justifyContent:a[t]||"center",margin:"0 0"},children:h.jsx("img",{src:m,alt:o?.(e.displayName||"Image")||e.displayName||"Image",...y,style:d})})})};function ut(e){const r=/^-?\d+$/;return e.split(",").map(n=>n.trim()).every(n=>r.test(n))}const ft=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),i=",",[c,f]=s.useState(Array.isArray(r)?r.join(i+" "):String(r??"")),m=y=>!y||y.trim()===""?[]:y.split(i).map(d=>d.trim()).filter(Boolean).map(d=>Number(d)),u=s.useCallback(y=>{if(y.trim()==="")return e.required?t("Value required"):null;if(!ut(y))return t("Each value must be a valid integer");const d=m(y);if(e.minCount!==void 0&&d.length<e.minCount)return t("Minimum number of values: {{1}}",`${e.minCount}`);if(e.maxCount!==void 0&&d.length>e.maxCount)return t("Maximum number of values: {{1}}",`${e.maxCount}`);for(const v of d){if(e.min!==void 0&&(e.minInclusive?v<e.min:v<=e.min))return t("Each value must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?v>e.max:v>=e.max))return t("Each value must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max)}return H(a,e,d,t)??null},[a,e,t]),g=y=>{const d=y.target.value,x=u(d);f(d),n?.(d,x)},l=s.useRef(null),p=s.useRef(o);return s.useEffect(()=>{p.current=o},[o]),s.useEffect(()=>{const y=Array.isArray(r)?r.join(i+" "):String(r??""),d=u(y);d!==l.current&&(l.current=d,p.current?.(d??null))},[r,e.required,u,t]),h.jsx(q,{field:e,error:u(c),children:h.jsx("input",{type:"text",value:c,onChange:g,className:W(F.input,F.textInput),style:{flex:1}})})};function mt(e){return/^[-+]?\d*$/.test(e)}const dt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),i=s.useRef(null),c=s.useCallback(l=>{const p=parseInt(l,10);return Number.isNaN(p)?null:p},[]),f=s.useCallback(l=>{if(l.trim()==="")return e.required?t("Value required"):null;if(!mt(l))return t("Must be a valid integer");const p=c(l);if(p===null)return t("Must be a valid integer");if(e.min!==void 0&&(e.minInclusive?p<e.min:p<=e.min))return t("Must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?p>e.max:p>=e.max))return t("Must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max);if(e.step!==void 0){const d=Number(e.step);if(!Number.isInteger(d))return t("Invalid step value");if(p%d!==0)return t("Must be a multiple of {{1}}",d)}return H(a,e,p,t)??null},[e,a,t,c]),m=s.useRef(null),u=s.useRef(o);s.useEffect(()=>{u.current=o},[o]),s.useEffect(()=>{const l=String(r??""),p=f(l);p!==m.current&&(m.current=p,u.current?.(p??null)),i.current&&document.activeElement!==i.current&&(i.current.value=l)},[r,e,f,t]);const g=l=>{const p=l.target.value,y=f(p);n?.(p,y)};return h.jsx(q,{field:e,error:f(String(r??"")),children:h.jsx("input",{id:e.name,type:"text",defaultValue:String(r??""),ref:i,onChange:g,className:W(F.input,F.inputNumber)})})},pt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),i=e.minHeight??"80px",c=s.useRef(null),f=s.useRef(null),m=s.useRef(o);s.useEffect(()=>{m.current=o},[o]);const u=s.useCallback(p=>p.trim()===""?e.required?t("Value required"):null:e.minLength!==void 0&&p.length<e.minLength?t("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&p.length>e.maxLength?t("Must be at most {{1}} characters",e.maxLength):H(a,e,p,t),[e,a,t]),g=p=>{const y=p.target.value,d=u(y);n?.(y,d)};s.useEffect(()=>{const p=u(r);p!==f.current&&(f.current=p,m.current?.(p??null)),c.current&&c.current.value!==String(r??"")&&(c.current.value=String(r??""))},[r,u]);const l={defaultValue:String(r??""),ref:c,onChange:g,style:{resize:"vertical",minHeight:i,width:"100%",boxSizing:"border-box"},className:W(F.input,F.textInput)};return h.jsx(q,{field:e,error:u(r),children:h.jsx("textarea",{...l})})},gt=({field:e,value:r,onChange:n,onError:o})=>{const t=s.useRef(o);s.useEffect(()=>{t.current=o},[o]);const{t:a,darkMode:i,formStyle:c,fieldStyle:f,definitionName:m}=V(),u=(C,N,A)=>{if(!N)return{};const D=C?.[N];return(A&&D?D[A]:void 0)??{}},g=s.useRef(null),[l,p]=s.useState(!1),[y,d]=s.useState(null),x=s.useMemo(()=>e.options.map(C=>({value:C.value,label:a(C.label)})),[e.options,a]),v=s.useMemo(()=>{const C=Array.isArray(r)?r:[],N=new Set(x.map(A=>A.value));return C.filter(A=>N.has(A))},[r,x]),w=C=>{const N=Array.isArray(C)?C:[];return e.required&&N.length===0?a("Value required"):H(m,e,N,a)??null},I=()=>{if(!g.current)return;const C=g.current.getBoundingClientRect();d({x:C.left,y:C.bottom}),p(N=>!N)},E=C=>{const N=v.includes(C)?v.filter($=>$!==C):[...v,C],A=w(N);t.current?.(A??null),n?.(N,A)},S=s.useMemo(()=>({height:"var(--reactaform-input-height, 2.5rem)",padding:"var(--reactaform-input-padding, 8px)",display:"flex",alignItems:"center",boxSizing:"border-box",cursor:"pointer",position:"relative",borderRadius:"var(--reactaform-border-radius, 4px)",border:"1px solid var(--reactaform-border-color, #ccc)",background:"var(--reactaform-secondary-bg, #fff)",color:"var(--reactaform-text-color, #000)",...u(c,"multiSelect","control"),...u(f,void 0,"control")}),[c,f]),R=s.useMemo(()=>({position:"absolute",right:"1.5em",top:"50%",transform:"translateY(-50%)",background:"none",border:"none",cursor:"pointer",fontSize:"0.8em",color:"var(--reactaform-text-muted, #999)",padding:0,...u(c,"multiSelect","clearButton"),...u(f,void 0,"clearButton")}),[c,f]),k=s.useMemo(()=>({position:"absolute",right:"0.7em",top:"50%",transform:"translateY(-50%)",pointerEvents:"none",fontSize:"0.8em",color:"var(--reactaform-text-muted, #999)",...u(c,"multiSelect","arrow"),...u(f,void 0,"arrow")}),[c,f]);return h.jsxs("div",{children:[h.jsx(q,{field:e,error:null,children:h.jsx("div",{style:{width:"100%"},children:h.jsxs("div",{ref:g,className:"reactaform-multiselection-control",style:S,onClick:I,tabIndex:0,role:"button","aria-haspopup":"listbox","aria-expanded":l,onKeyDown:C=>{(C.key==="Enter"||C.key===" ")&&(C.preventDefault(),I())},children:[h.jsxs("span",{style:{flex:1,color:"var(--reactaform-text-muted, #888)"},children:[v.length," / ",x.length," selected"]}),v.length>0&&h.jsx("button",{type:"button","aria-label":"Clear selections",onClick:C=>{C.stopPropagation(),n?.([],null)},style:R,children:h.jsx("span",{style:R,"aria-hidden":!0,children:"✖"})}),h.jsx("span",{style:k,"aria-hidden":!0,children:"▼"})]})})}),l&&y&&h.jsx(ht,{position:y,options:x,selectedValues:v,onToggleOption:E,onClose:()=>p(!1),controlRef:g,darkMode:i})]})},ht=({position:e,options:r,selectedValues:n,onToggleOption:o,onClose:t,controlRef:a,darkMode:i})=>{const c=s.useRef(null),[f,m]=s.useState(-1),{formStyle:u,fieldStyle:g}=V(),l=(R,k,C)=>{if(!k)return{};const A=R?.[k];return(C&&A?A[C]:void 0)??{}},p=s.useMemo(()=>({maxHeight:200,overflowY:"auto",background:"var(--reactaform-secondary-bg, #fff)",border:"1px solid var(--reactaform-border-color, #ccc)",borderRadius:4,zIndex:2e3,boxShadow:"var(--reactaform-shadow, 0 2px 8px rgba(0,0,0,0.15))",pointerEvents:"auto",color:"var(--reactaform-text-color, #000)",fontSize:"var(--reactaform-popup-font-size, 0.875rem)",...l(u,"multiSelect","popup"),...l(g,void 0,"popup")}),[u,g]),y=s.useMemo(()=>({padding:"6px 8px",cursor:"pointer",display:"flex",alignItems:"center",background:"transparent",color:"var(--reactaform-text-color, #000)",...l(u,"multiSelect","option"),...l(g,void 0,"option")}),[u,g]);s.useEffect(()=>{const R=k=>{const C=k.target;!c.current?.contains(C)&&!a.current?.contains(C)&&t()};return document.addEventListener("mousedown",R),()=>document.removeEventListener("mousedown",R)},[t,a]),s.useEffect(()=>{c.current&&r.length>0&&requestAnimationFrame(()=>m(R=>R===-1?0:R))},[r.length]),s.useEffect(()=>{if(!c.current||f<0)return;const R=c.current.querySelector(`#multi-opt-${f}`);R&&requestAnimationFrame(()=>R.focus())},[f]);const d=250,x=200,[v,w]=s.useState(null),[I,E]=s.useState(null);if(s.useEffect(()=>{if(typeof window>"u")return;const R=()=>{let N=e.x,A=e.y,$=d;const D=a?.current;if(D){const U=D.getBoundingClientRect();N=U.left,A=U.bottom,$=Math.max(80,Math.round(U.width))}N=Math.min(N,window.innerWidth-$),A=Math.min(A,window.innerHeight-x),w({left:N,top:A}),E($)};R(),window.addEventListener("scroll",R,!0),window.addEventListener("resize",R);let k=null;const C=a?.current;return typeof ResizeObserver<"u"&&C&&(k=new ResizeObserver(()=>R()),k.observe(C)),()=>{window.removeEventListener("scroll",R,!0),window.removeEventListener("resize",R),k&&C&&k.unobserve(C)}},[a,e.x,e.y]),typeof window>"u")return null;let S=document.getElementById("popup-root");return S||(S=document.createElement("div"),S.id="popup-root",document.body.appendChild(S)),je.createPortal(h.jsx("div",{ref:c,role:"listbox","aria-activedescendant":f>=0?`multi-opt-${f}`:void 0,style:{position:"absolute",top:v?v.top:e.y,left:v?v.left:e.x,width:I??d,...p},"data-reactaform-theme":i?"dark":"light",children:r.map((R,k)=>{const C=n.includes(R.value),N=i?"var(--reactaform-hover-bg, rgba(255,255,255,0.01))":"var(--reactaform-hover-bg, #eee)",A={...y,background:k===f?N:y.background};return h.jsxs("div",{id:`multi-opt-${k}`,onMouseDown:$=>{$.stopPropagation(),o(R.value)},onKeyDown:$=>{const D=r.length;switch($.key){case"ArrowDown":$.preventDefault(),m(U=>(U+1)%D);break;case"ArrowUp":$.preventDefault(),m(U=>(U-1+D)%D);break;case"Home":$.preventDefault(),m(0);break;case"End":$.preventDefault(),m(D-1);break;case"Enter":case" ":$.preventDefault(),$.stopPropagation(),o(R.value);break;case"Escape":$.preventDefault(),t(),a?.current?.focus();break}},tabIndex:k===f?0:-1,role:"option","aria-selected":C,style:A,onMouseEnter:$=>{$.currentTarget.style.background=N,m(k)},onMouseLeave:$=>{$.currentTarget.style.background="transparent",m(D=>D===k?-1:D)},children:[h.jsx("input",{type:"checkbox",checked:C,readOnly:!0,style:{marginRight:8,width:"1.125em",height:"1.125em",verticalAlign:"middle",accentColor:i?"#10b981":"#22c55e",cursor:"pointer"}}),R.label]},R.value)})}),S)},bt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),i=s.useRef(null),c=e.min??void 0,f=e.max??void 0,m=Math.max(1,Math.round(e.step??1)),u=s.useCallback(d=>isNaN(d)?t("Must be a valid integer"):Number.isInteger(d)?c!==void 0&&d<c?t("Must be �?{{1}}",c):f!==void 0&&d>f?t("Must be �?{{1}}",f):H(a,e,d,t)??null:t("Must be an integer"),[a,e,t,c,f]),g=s.useRef(null),l=s.useRef(o);s.useEffect(()=>{l.current=o},[o]),s.useEffect(()=>{if(document.activeElement===i.current)return;const x=String(r),v=u(r);i.current&&(i.current.value=x),v!==g.current&&(g.current=v,l.current?.(v??null))},[r,u]);const p=d=>{if(d.trim()==="")return e.required?t("Value required"):null;const v=Number(d);return u(v)},y=d=>{const x=d.target.value,v=d.target.valueAsNumber,w=p(x);n?.(v,w)};return h.jsx(q,{field:e,error:p(String(r??"")),children:h.jsx("input",{ref:i,id:e.name,type:"number",defaultValue:String(r??""),min:c,max:f,step:m,onChange:y,style:{width:"100%",height:"100%"},className:F.input})})},yt=({field:e,value:r,onChange:n,onError:o})=>{const{t}=V(),a=s.useRef(null),{definitionName:i}=V(),c=s.useCallback(g=>{const l=String(g??"").trim();if(l==="")return e.required?t("Value required"):null;if(e.pattern)try{if(!new RegExp(e.pattern).test(l))return t("Phone number does not match pattern: {{1}}",`${e.pattern}`)}catch{}return H(i,e,l,t)},[i,e,t]),f=s.useRef(null),m=s.useRef(o);s.useEffect(()=>{m.current=o},[o]),s.useEffect(()=>{const g=String(r??""),l=c(g);a.current&&a.current.value!==String(g)&&(a.current.value=String(g)),l!==f.current&&(f.current=l,m.current?.(l??null))},[r,c]);const u=g=>{const l=g.target.value,p=l.trim();let y=null;if(p===""){y=e.required?t("Value required"):null,n?.(l,y);return}!y&&e.pattern&&!new RegExp(e.pattern).test(p)&&(y=t("Phone number does not match pattern: {{1}}",`${e.pattern}`)),n?.(l,y)};return h.jsx(q,{field:e,error:c(String(r??"")),children:h.jsx("input",{type:"tel",defaultValue:String(r??""),ref:a,onChange:u,className:W(F.input,F.textInput)})})},xt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),i=e.layout?.toLowerCase()==="horizontal"?"row":"column",c=s.useRef(null),f=s.useRef(o);s.useEffect(()=>{f.current=o},[o]);const m=s.useCallback(g=>g===""||g===null||g===void 0?t("Value required"):!e.options||e.options.length===0?null:e.options.some(p=>p.value===g)?H(a,e,g,t)??null:t("Invalid option selected"),[e,t,a]);s.useEffect(()=>{const g=r!=null?String(r):"",l=m(g);if(f.current?.(l??null),c.current){const p=Array.from(c.current.querySelectorAll("input[type=radio]"));if(l&&e.options&&e.options.length>0){const y=String(e.options[0].value);p.forEach(d=>d.checked=d.value===y),n?.(y,null)}else p.forEach(y=>y.checked=y.value===g)}},[r,m,n,e.options]);const u=g=>{const l=g.target.value,p=m(l);f.current?.(p??null),n?.(l,p)};return h.jsx(q,{field:e,error:m(String(r??"")),children:h.jsx("div",{style:{display:"flex",flexDirection:i,flexWrap:i==="row"?"wrap":"nowrap",gap:i==="row"?"12px":"4px",alignItems:i==="row"?"center":"flex-start",width:"100%"},ref:c,children:(e.options??[]).map(g=>h.jsxs("label",{style:{display:"flex",gap:"6px",alignItems:"center",whiteSpace:"nowrap"},children:[h.jsx("input",{type:"radio",name:e.name,value:String(g.value),defaultChecked:String(r??"")===String(g.value),onChange:u}),t(g.label)]},String(g.value)))})})},vt={display:"flex",gap:4},wt={cursor:"pointer",fontSize:"1.5rem",lineHeight:1,display:"inline-block",marginRight:"0.25rem",userSelect:"none",transition:"color 0.12s ease"},St=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),[i,c]=s.useState(null),f=e.max||5,m=s.useCallback(y=>e.required&&y===0?t("Value required"):H(a,e,y,t)??null,[e,t,a]),u=s.useRef(null),g=s.useRef(o);s.useEffect(()=>{g.current=o},[o]),s.useEffect(()=>{let y=r||0;r<0&&(y=0),r>f&&(y=f);const d=m(y);d!==u.current&&(u.current=d,g.current?.(d??null))},[r,m,f]);const l=y=>{const d=m(y);n?.(y,d)},p=(()=>{let y=r||0;return y<0&&(y=0),y>f&&(y=f),y})();return h.jsx(q,{field:e,error:m(p),children:h.jsx("div",{style:vt,children:(()=>{const y=e.icon,d=y&&String(y).trim()?String(y):"★";return[...Array(f)].map((x,v)=>{const w=v<p,E=i!==null&&v<=i||w?"gold":"lightgray";return h.jsx("span",{onClick:()=>l(v+1),onMouseEnter:()=>c(v),onMouseLeave:()=>c(null),style:{...wt,color:E},"aria-label":`Rating ${v+1}`,title:t(`${e.displayName} ${v+1}`),children:d},v)})})()})})},Ct=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),i=s.useRef(null),c=s.useRef(null),f=s.useRef(o);s.useEffect(()=>{f.current=o},[o]);const m=s.useMemo(()=>e.pattern?new RegExp(e.pattern):null,[e.pattern]),u=s.useCallback(d=>d===""?e.required?t("Value required"):null:e.minLength!==void 0&&d.length<e.minLength?t("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&d.length>e.maxLength?t("Must be at most {{1}} characters",e.maxLength):m&&!m.test(d)?t("Input does not match pattern: {{1}}",e.pattern):H(a,e,d,t),[e,a,t,m]),g=d=>{const x=d.target.value,v=u(x);n?.(x,v)};s.useEffect(()=>{const d=u(r??"");i.current&&i.current.value!==String(r??"")&&(i.current.value=String(r??"")),d!==c.current&&(c.current=d,f.current?.(d??null))},[r,u]);const[l,p]=s.useState(!1),y=()=>p(d=>!d);return h.jsx(q,{field:e,error:u(String(r??"")),children:h.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,width:"100%"},children:[h.jsx("input",{id:e.name,type:l?"text":"password",defaultValue:String(r??""),ref:i,onChange:g,className:W(F.input,F.textInput),style:{flex:1,minWidth:0}}),h.jsx("button",{type:"button",onClick:y,"aria-label":t(l?"Hide password":"Show password"),style:{background:"transparent",border:"none",cursor:"pointer",fontSize:16,lineHeight:1,padding:"4px 6px",flexShrink:0},children:l?"🙈":"👁️"})]})})},Rt=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/;function Et(e){return Rt.test(e)}const jt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),i=s.useRef(null),c=s.useRef(null),f=s.useCallback(y=>{let d=null;if(y.trim()==="")return t("Value required");if(!Et(y))return t("Invalid number");const x=Number(y);return typeof e.min=="number"&&x<e.min?t("Value should be at least {{1}}",e.min):typeof e.max=="number"&&x>e.max?t("Value should be at most {{1}}",e.max):(d||(d=H(a,e,x,t)),d)},[a,e,t]),m=s.useRef(null),u=s.useRef(o);s.useEffect(()=>{u.current=o},[o]),s.useEffect(()=>{const y=String(r),d=f(y);c.current&&document.activeElement!==c.current&&(c.current.value=isNaN(Number(y))?String(e.min??0):String(Number(y))),i.current&&document.activeElement!==i.current&&(i.current.value=y),d!==m.current&&(m.current=d,u.current?.(d??null))},[r,f,e.min]);const g=e.min??0,l=e.max??100,p=y=>{const d=y.target.value,x=f(d);n?.(d,x)};return h.jsx(q,{field:e,error:f(String(r??"")),children:h.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",width:"100%"},children:[h.jsx("input",{ref:c,type:"range",defaultValue:isNaN(Number(r))?String(g):String(Number(r)),onChange:p,min:g,max:l,style:{padding:"0px, 0px",flex:1},className:F.rangeInput}),h.jsx("input",{ref:i,type:"text",defaultValue:String(r??""),onChange:p,required:!0,style:{width:"40px",minWidth:"40px",height:"2.3em",textAlign:"center",flexShrink:0},className:W(F.input,F.textInput)})]})})},kt=({field:e,value:r,onChange:n,onError:o})=>{const{t,formStyle:a,fieldStyle:i,definitionName:c}=V(),f=a,m=i,u=(S,R,k)=>{if(!R)return{};const C=S?.[R];return(k&&C?C[k]:void 0)??{}},g=s.useMemo(()=>({display:"inline-block",position:"relative",width:44,height:24,...u(f,"switch","label"),...u(m,void 0,"label")}),[f,m]),l=s.useMemo(()=>({position:"absolute",opacity:0,top:0,left:0,width:"100%",height:"100%",margin:0,cursor:"pointer",pointerEvents:"none",...u(f,"switch","hiddenInput"),...u(m,void 0,"hiddenInput")}),[f,m]),p=s.useMemo(()=>({position:"absolute",cursor:"pointer",top:0,left:0,right:0,bottom:0,backgroundColor:"var(--reactaform-switch-off-bg, #ccc)",transition:"0.3s",borderRadius:24,borderWidth:2,borderStyle:"solid",borderColor:"transparent",...u(f,"switch","slider"),...u(m,void 0,"slider")}),[f,m]),y=s.useMemo(()=>({position:"absolute",height:16,width:16,left:2,bottom:2,backgroundColor:"white",transition:"0.3s",borderRadius:"50%",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.3)",...u(f,"switch","knob"),...u(m,void 0,"knob")}),[f,m]),d=!!r,x=s.useRef(null),v=s.useRef(o),w=s.useCallback(S=>S?H(c,e,S,t)??null:e.required?t("Value required"):null,[e,t,c]),I=()=>{const S=!d,R=w(S);n?.(S,R)};s.useEffect(()=>{v.current=o},[o]),s.useEffect(()=>{const S=w(d);S!==x.current&&(x.current=S,v.current?.(S??null))},[d,e,w]);const E=e.name;return h.jsx(q,{field:e,error:w(d),rightAlign:!1,children:h.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[h.jsx("label",{className:F.label,htmlFor:E,style:{textAlign:"left",justifyContent:"flex-start"},children:t(e.displayName)}),h.jsxs("label",{style:g,children:[h.jsx("input",{id:e.name,type:"checkbox",checked:d,readOnly:!0,"aria-label":t(e.displayName),style:l,tabIndex:-1}),h.jsx("span",{role:"switch","data-testid":"switch",tabIndex:0,"aria-checked":d,onClick:I,onKeyDown:S=>{(S.key===" "||S.key==="Spacebar"||S.key==="Space"||S.key==="Enter")&&(S.preventDefault(),I())},className:`reactaform-switch ${d?"active checked on":""} `,style:d?{...p,backgroundColor:"var(--reactaform-switch-on-bg, #22c55e)",borderColor:"var(--reactaform-switch-on-border, #16a34a)"}:p,children:h.jsx("span",{style:{...y,transform:d?"translateX(20px)":void 0}})})]})]})})},He=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),i=s.useRef(null),c=s.useRef(null),f=s.useRef(o);s.useEffect(()=>{f.current=o},[o]);const m=s.useMemo(()=>e.pattern?new RegExp(e.pattern):null,[e.pattern]),u=s.useCallback(l=>l.trim()===""?e.required?t("Value required"):null:e.minLength!==void 0&&l.length<e.minLength?t("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&l.length>e.maxLength?t("Must be at most {{1}} characters",e.maxLength):m&&!m.test(l)?t("Input does not match pattern: {{1}}",e.pattern):H(a,e,l,t),[e,a,t,m]),g=l=>{const p=l.target.value,y=u(p);n?.(p,y)};return s.useEffect(()=>{const l=u(r);i.current&&i.current.value!==String(r??"")&&(i.current.value=String(r??"")),l!==c.current&&(c.current=l,f.current?.(l??null))},[r,u]),h.jsx(q,{field:e,error:u(String(r??"")),children:h.jsx("input",{id:e.name,type:"text",defaultValue:String(r??""),ref:i,onChange:g,className:W(F.input,F.textInput)})})},Nt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),i=s.useRef(null),c=s.useRef(o),f=e.includeSeconds??!0;s.useEffect(()=>{c.current=o},[o]);const m=s.useCallback(g=>{if(!g||g.trim()==="")return e.required||e.min||e.max?t("Value required"):null;const l=d=>{const x=d.split(":").map(w=>parseInt(w,10));if(x.some(w=>Number.isNaN(w)))return NaN;let v=0;if(x.length===3)v=x[0]*3600+x[1]*60+x[2];else if(x.length===2)v=x[0]*3600+x[1]*60;else if(x.length===1)v=x[0]*3600;else return NaN;return v},p=l(g);if(Number.isNaN(p))return t("Invalid time format");if(e.min&&typeof e.min=="string"){const d=l(e.min);if(!Number.isNaN(d)&&p<d)return t("Time must be on or after {{1}}",e.min)}if(e.max&&typeof e.max=="string"){const d=l(e.max);if(!Number.isNaN(d)&&p>d)return t("Time must be on or before {{1}}",e.max)}return H(a,e,g,t)??null},[e,a,t]),u=g=>{const l=g.target.value,p=m(l);n?.(l,p)};return s.useEffect(()=>{const g=m(r);g!==i.current&&(i.current=g,c.current?.(g??null))},[r,m]),h.jsx(q,{field:e,error:m(r),children:h.jsx("input",{id:e.name,type:"time",value:r,step:f?1:60,onChange:u,min:typeof e.min=="string"?e.min:void 0,max:typeof e.max=="string"?e.max:void 0,className:W(F.input,F.textInput)})})};function It({pos:e,options:r,onClose:n,onClickOption:o}){const t=s.useRef(null),a=s.useRef(!1),i=typeof window<"u"?document.getElementById("popup-root")||document.body:null;if(s.useEffect(()=>{function p(y){a.current||y.target.dataset?.popupMenu==="item"||t.current&&y.target instanceof Node&&!t.current.contains(y.target)&&n()}return document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)},[n]),!i||r===void 0||r.length===0||!e||e.x==null||e.y==null)return null;const c=e.x,f=e.y,m=typeof window<"u"?window.innerWidth:1024,u=Math.max(0,m-160),g=Math.max(0,Math.min(c,u)),l=Math.max(0,f);return je.createPortal(h.jsx("div",{ref:t,onMouseDown:p=>{p.stopPropagation()},style:{position:"fixed",top:l,left:g,backgroundColor:"var(--reactaform-primary-bg, #fff)",border:"1px solid var(--reactaform-border-color, #ccc)",borderRadius:"var(--reactaform-border-radius, 4px)",boxShadow:"var(--reactaform-shadow, 0 2px 10px rgba(0,0,0,0.2))",zIndex:9999,minWidth:"var(--reactaform-menu-min-width, 150px)",pointerEvents:"auto"},children:r.map((p,y)=>h.jsx("div",{"data-popup-menu":"item",onMouseDown:d=>{d.stopPropagation(),a.current=!0},onClick:d=>{d.stopPropagation(),d.preventDefault(),o(p),n(),setTimeout(()=>{a.current=!1},100)},style:{padding:"var(--reactaform-menu-item-padding, 8px 12px)",cursor:"pointer",fontSize:"var(--reactaform-menu-item-font-size, 0.8em)",borderBottom:y<r.length-1?"1px solid var(--reactaform-border-light, #eee)":void 0,transition:"background-color 0.15s ease"},onMouseEnter:d=>{d.currentTarget.style.backgroundColor="var(--reactaform-hover-bg, #e0e0e0)"},onMouseLeave:d=>{d.currentTarget.style.backgroundColor="transparent"},children:p.label},p.label??y))}),i)}const fe={};function Ft(e,r){if(e in fe)return;const n=Oe[e]??{},o={},t={},a={};for(const[c,f]of Object.entries(n))typeof f.factor=="number"&&(o[c]=f.factor),t[c]=r(c),a[r(c)]=c;const i=Object.keys(n)[0]??"";fe[e]={default:i,factors:o,labels:t,reverseLabels:a}}function At(e,r,n){if(e==="C"){if(r==="F")return n*(9/5)+32;if(r==="K")return n+273.15}else if(e==="F"){if(r==="C")return(n-32)*5/9;if(r==="K")return(n-32)*5/9+273.15}else if(e==="K"){if(r==="C")return n-273.15;if(r==="F")return(n-273.15)*9/5+32}return n}function Mt(e,r,n){if(!Number.isFinite(e))return[];if(n===fe.temperature)return Object.keys(n.labels).map(a=>{const i=At(r,a,e);return Number.isFinite(i)?{label:`${i.toFixed(6)} ${a}`,value:i.toString(),unit:a}:{label:`${String(i)} ${a}`,value:String(i),unit:a}});const t=n.factors[r];return t===void 0?[]:Object.entries(n.factors).map(([a,i])=>{const c=e/t*i;return Number.isFinite(c)?{label:`${c.toFixed(6)} ${a}`,value:c.toString(),unit:a}:{label:`${String(c)} ${a}`,value:String(c),unit:a}})}function pe(e,r){return e in r.labels?e:r.reverseLabels&&r.reverseLabels[e]?r.reverseLabels[e]:null}const Ot=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/,$t=({unitFactors:e,field:r,value:n,onChange:o,onError:t})=>{const{t:a,definitionName:i}=V(),c=s.useRef(null),f=s.useRef(null),m=s.useRef(null),[u,g]=s.useState(null),[l,p]=s.useState(null),[y,d]=s.useState(!1),[x,v]=s.useState(null),[w,I]=s.useState([]),E=s.useCallback((z,M)=>{if(!z||z.trim()==="")return r.required?a("Value required"):null;if(!Ot.test(z))return a("Must be a valid number");const b=H(i,r,[z,M],a);return b||null},[i,r,a]),S=e.reverseLabels!==void 0?e.reverseLabels:Object.fromEntries(Object.entries(e.labels).map(([z,M])=>[M,z]));s.useEffect(()=>{const z=String(n[0]);let M=n[1]??e.default;M=pe(M,e)||M;const b=document.activeElement;b===c.current||b===f.current||(c.current&&(c.current.value=z),f.current&&(f.current.value=M),m.current!==null&&(cancelAnimationFrame(m.current),m.current=null),m.current=requestAnimationFrame(()=>{m.current=null,g(null),p(null)}))},[n,e]),s.useEffect(()=>()=>{m.current!==null&&(cancelAnimationFrame(m.current),m.current=null)},[]);const R=s.useRef(null),k=s.useRef(t);s.useEffect(()=>{k.current=t},[t]),s.useEffect(()=>{const z=String(n[0]);let M=n[1]??e.default;M=pe(M,e)||M;const b=E(z,M);b!==R.current&&(R.current=b,k.current?.(b??null))},[n,e,E]);const C=(z,M,b)=>{const j=S[M]||M;o?.([z,j],b)},N=z=>{const M=z.target.value,b=f.current?f.current.value:e.default,j=E(M,b);g(M),C(M,b,j)},A=z=>{const M=z.target.value,b=c.current?c.current.value:String(n[0]??""),j=E(b,M);p(M),f.current&&(f.current.value=M),C(b,M,j)},$=z=>{const M=c.current?c.current.value:String(n[0]??""),b=parseFloat(M),j=f.current?f.current.value:e.default;if(E(M,j)||!M.trim()||!Number.isFinite(b))return;const B=z.currentTarget.getBoundingClientRect(),Z=B.left,ee=B.bottom;v({x:Z,y:ee});const T=Mt(b,j,e);if(T.length===0){I([]),d(!1);return}I(T),d(O=>!O)},D=z=>{const{value:M,unit:b}=z;d(!1),v(null),c.current&&(c.current.value=M),f.current&&(f.current.value=b),g(M),p(b);const j=E(M,b);C(M,b,j)},U=String(n[0]??""),ne=pe(n[1]??e.default,e)||(n[1]??e.default),K=u??U,J=!!E(K,l??ne)||!K.trim(),Q={width:"var(--reactaform-unit-btn-width, 2.5em)",height:"var(--reactaform-unit-btn-height, 2.5em)",padding:"var(--reactaform-unit-btn-padding, 0)",border:"none",borderRadius:"var(--reactaform-button-border-radius, var(--reactaform-border-radius, 0.25em))",backgroundColor:J?"var(--reactaform-button-disabled-bg, #cccccc)":"var(--reactaform-button-bg, var(--reactaform-success-color))",color:"var(--reactaform-button-text, #ffffff)",cursor:J?"var(--reactaform-button-disabled-cursor, not-allowed)":"pointer",opacity:J?+"var(--reactaform-button-disabled-opacity, 0.6)":1,display:"flex",alignItems:"center",justifyContent:"center"};return h.jsx(q,{field:r,error:E(U,ne),children:h.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--reactaform-unit-gap, 8px)",width:"100%"},children:[h.jsx("input",{type:"text",ref:c,defaultValue:String(n[0]??""),onChange:N,style:{width:"var(--reactaform-unit-input-width, 100px)"},className:W(F.input,F.textInput)}),h.jsx("select",{ref:f,defaultValue:pe(n[1]??e.default,e)||(n[1]??e.default),onChange:A,className:W(F.input,F.inputSelect),children:Object.keys(e.labels).map(z=>h.jsx("option",{value:z,children:e.labels[z]??z},z))}),h.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[h.jsx("button",{onClick:$,"aria-disabled":J,disabled:J,style:Q,className:F.button,children:h.jsx("span",{style:{fontSize:"var(--reactaform-unit-btn-icon-size, 1em)",lineHeight:"1",transform:"translateY(-1px)",pointerEvents:"none"},children:"⟷"})}),y&&w&&h.jsx(It,{pos:x,options:w,onClose:()=>{v(null),d(!1)},onClickOption:D})]})]})})};function Vt({field:e,value:r,onChange:n}){const{t:o}=V(),t=e.dimension;if(!t)return null;fe[t]||Ft(t,o);const a=fe[t];return a?h.jsx($t,{unitFactors:a,field:e,value:r,onChange:n}):null}const Ue=/^(https?|ftp|file):\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]$/i,We=e=>{try{return new URL(e),!0}catch{return!1}},Dt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=V(),i=s.useRef(null),c=s.useCallback(g=>{const l=g.trim();if(l==="")return e.required?t("Value required"):null;if(!Ue.test(l)&&!We(l)){const y=e.allowRelative===!0;let d=!1;if(Ue.test(l)||We(l))d=!0;else if(y)try{new URL(l,"http://example.com"),d=!0}catch{d=!1}if(!d)return t("Must be a valid URL")}return H(a,e,l,t)??null},[a,e,t]),f=g=>{const l=g.target.value,p=c(l);n?.(l.trim(),p)},m=s.useRef(null),u=s.useRef(o);return s.useEffect(()=>{u.current=o},[o]),s.useEffect(()=>{const g=r??"",l=c(g);i.current&&i.current.value!==String(g)&&(i.current.value=String(g)),l!==m.current&&(m.current=l,u.current?.(l??null))},[r,c]),h.jsx(q,{field:e,error:c(String(r??"")),children:h.jsx("input",{id:e.name,type:"url",defaultValue:String(r??""),ref:i,onChange:f,style:{alignItems:"left"},className:W(F.input,F.textInput),placeholder:"https://example.com"})})},Ee=new ge,zt=new Set(["checkbox","switch","dropdown","radio","multi-selection","slider","stepper","color","rating"]),ar={checkbox:Ur,color:Yr,date:Gr,dropdown:Kr,email:Zr,file:et,float:it,"float-array":ot,image:lt,int:dt,"int-array":ft,"multi-selection":gt,multiline:pt,password:Ct,phone:yt,radio:xt,rating:St,separator:Qr,slider:jt,string:He,stepper:bt,switch:kt,text:He,time:Nt,unit:Vt,url:Dt};function sr(e,r,n){if(!n&&e in ar){console.warn(`Can't Overwrite Base Component type "${e}".`);return}if(zt.has(e)){Ee.register(e,r);return}const o=t=>{const{callback:i,cancel:c}=Je((...f)=>{const m=t.onChange;typeof m=="function"&&m(...f)},200);return s.useEffect(()=>()=>{c()},[c]),s.createElement(r,{...t,onChange:i})};Ee.register(e,o)}function Tt(e,r){sr(e,r,!1)}function ir(e){return Ee.get(e)}let Ye=!1;function cr(){Ye||(Object.entries(ar).forEach(([e,r])=>{sr(e,r,!0)}),Ye=!0)}const lr=new ge;function ur(e,r){lr.register(e,r)}function Lt(e){return lr.get(e)}ur("Preset_AlertSubmitHandler",(e,r,n)=>{const o={name:r||"Unnamed Instance",version:e.version,definition:e.name,values:n},t=JSON.stringify(o,null,2);alert(t)});const fr=s.memo(({field:e,value:r,handleChange:n,handleError:o})=>{const t=ir(e.type),a=s.useCallback((c,f)=>n(e.name,c,f),[n,e.name]),i=s.useCallback(c=>o?.(e.name,c),[o,e.name]);return t?h.jsx(t,{field:e,value:r,onChange:a,onError:i}):null},(e,r)=>e.field===r.field&&e.value===r.value&&e.handleChange===r.handleChange&&e.handleError===r.handleError);fr.displayName="FieldWrapper";const mr=(e,r,n,o)=>h.jsx(fr,{field:e,value:r[e.name],handleChange:n,handleError:o},e.name),dr=s.memo(({groupName:e,isOpen:r,fields:n,valuesMap:o,handleChange:t,handleError:a,toggleGroup:i,t:c})=>{const f=s.useCallback(()=>i(e),[i,e]),{formStyle:m,fieldStyle:u}=V(),g=s.useMemo(()=>({border:"1px solid var(--reactaform-border-color, #bbb)",padding:"var(--reactaform-fieldset-padding, 0.5em)",borderRadius:"var(--reactaform-border-radius, 4px)",marginBottom:"var(--reactaform-space, 8px)",...m?.fieldset||{},...u?.fieldset||{}}),[m,u]),l=s.useMemo(()=>({fontWeight:"bold",cursor:"pointer",display:"flex",justifyContent:"space-between",alignItems:"center",padding:"0 var(--reactaform-space, 8px)",color:"var(--reactaform-text-color, inherit)",...m?.legend||{},...u?.legend||{}}),[m,u]);return h.jsxs("fieldset",{style:g,children:[h.jsxs("legend",{onClick:f,style:l,children:[h.jsx("span",{children:c(e)}),h.jsx("span",{children:r?"▼":"▶"})]}),r&&n.map(p=>h.jsx("div",{children:mr(p,o,t,a)},p.name))]})});dr.displayName="FieldGroup";const Pt=(e,r,n,o,t,a,i,c,f)=>{const m=r.slice(0,c).filter(p=>i[p.name]),g=zr(m).groups,l=[];return g.forEach(p=>{if(p.name){const y=e[p.name]??!0;l.push(h.jsx(dr,{groupName:p.name,isOpen:y,fields:p.fields,valuesMap:n,handleChange:t,handleError:a,toggleGroup:f,t:o},p.name))}else p.fields.forEach(y=>l.push(h.jsx("div",{children:mr(y,n,t,a)},y.name)))}),l},_t=e=>{const r={};return e.forEach(n=>{r[n.name]=!1}),r},$e=(e,r,n,o)=>{const t=r[e];if(!t?.children)return;const a=n[e],i=a!=null?String(a):"";(t.children[i]||[]).forEach(f=>{o[f]=!0,$e(f,r,n,o)})},pr=(e,r,n)=>{const o=r[e];o?.children&&Object.values(o.children).flat().forEach(t=>{n[t]=!1,pr(t,r,n)})},qt=(e,r,n,o)=>{const t={...n};return e.forEach(a=>{(!a.parents||Object.keys(a.parents).length===0)&&(t[a.name]=!0,$e(a.name,o,r,t))}),t},Bt=(e,r,n,o,t)=>{const a={...e};if(pr(o,r,a),t!=null){const i=r[o];if(i?.children){const c=String(t);(i.children[c]||[]).forEach(m=>{a[m]=!0,$e(m,r,n,a)})}}return a};function Ht(e,r,n,o,t){const a=Object.values(t).filter(Boolean);if(a.length>0)return{success:!1,message:o("Please fix validation errors before submitting."),errors:a};const i={...n},c=[];if(e&&Array.isArray(e.properties))for(const m of e.properties){const u=m.name,g=i[u];if(g==null)continue;const l=m.type;try{if(l==="int"||l==="number"||l==="float"){const p=Number(String(g).trim());isNaN(p)?c.push(o(`Invalid number format for field ${m.displayName||u}`)):i[u]=p}else if(l==="int-array"||l==="float-array"){const y=String(g).split(",").map(d=>d.trim()).filter(Boolean).map(d=>{const x=Number(d);return isNaN(x)?(c.push(o(`Invalid number "${d}" in array for field ${m.displayName||u}`)),0):x});c.length===0&&(i[u]=y)}}catch(p){c.push(o(`Error processing field ${m.displayName||u}: ${p}`))}}if(c.length>0)return{success:!1,message:o("Data transformation errors occurred."),errors:c};const f=er(e,i,o);if(f&&f.length>0)return{success:!1,message:"Validation Fail",errors:f};if(e&&typeof e.submitHandlerName=="string"){const m=Lt(e.submitHandlerName);if(m)try{const u=m(e,r?.name??null,i,o);if(u&&u.length>0)return{success:!1,message:o("Submission failed."),errors:Array.isArray(u)?u:[u]}}catch(u){return{success:!1,message:o("Submission handler error occurred."),errors:[String(u)]}}}return{success:!0,message:o("Form submitted successfully."),data:i}}const gr=({definition:e,instance:r,chunkSize:n=50,chunkDelay:o=50})=>{const{properties:t,displayName:a}=e,i=V(),{t:c,formStyle:f,language:m}=i,u={...i,definitionName:e?.name??i.definitionName},[g,l]=s.useState("en"),[p,y]=s.useState([]),[d,x]=s.useState({}),[v,w]=s.useState({}),[I,E]=s.useState({}),[S,R]=s.useState({}),[k,C]=s.useState({}),[N,A]=s.useState(null),[$,D]=s.useState(null),[U,ne]=s.useState(0),[K,ae]=s.useState(!1),[J,Q]=s.useState(!1),[z,M]=s.useState(r.name||""),b=s.useRef(r),j=s.useRef(!1);s.useEffect(()=>{const O=Object.fromEntries(t.map(_=>[_.name,{..._,children:{}}]));t.forEach(_=>{_.parents&&Object.entries(_.parents).forEach(([se,he])=>{const ie=O[se];ie&&he.forEach(yr=>{ie.children||(ie.children={});const Ve=String(yr);ie.children[Ve]=[...ie.children[Ve]||[],_.name]})})}),Dr(t,O);const L=Object.values(O),Y={};L.forEach(_=>{if(_.type==="unit"){const se=typeof _.defaultValue=="number"?String(_.defaultValue):"",he=typeof _.defaultUnit=="string"?_.defaultUnit:String(_.defaultUnit??"m");Y[_.name]=[se,he]}else Y[_.name]=_.defaultValue}),b.current=r,Object.keys(r.values).forEach(_=>{O[_]!==void 0&&(Y[_]=r.values[_])});const G=_t(L),X={};L.forEach(_=>{_.group&&!(_.group in X)&&(X[_.group]=!0)});const oe=requestAnimationFrame(()=>{y(L),x(O),w(Y),E(qt(L,Y,G,O)),R(X),ae(!0),M(r.name)});return()=>cancelAnimationFrame(oe)},[t,r,e]),s.useEffect(()=>{if(!K||U>=p.length)return;const O=setTimeout(()=>{ne(L=>Math.min(L+n,p.length))},o);return()=>clearTimeout(O)},[K,U,p.length,n,o]);const P=s.useCallback((O,L,Y)=>{A(null),D(null),w(G=>{const X={...G,[O]:L},oe=d[O];return oe&&["checkbox","dropdown","multi-select","radio","switch"].includes(oe.type)&&E(se=>Bt(se,d,X,O,String(L))),X}),C(G=>Y?{...G,[O]:Y}:Object.fromEntries(Object.entries(G).filter(([oe])=>oe!==O)))},[d,A,D]);s.useEffect(()=>{let O=0;return O=requestAnimationFrame(()=>{m!==g&&(l(m||"en"),A(null),D(null))}),()=>cancelAnimationFrame(O)},[m,g]),s.useEffect(()=>{let O=0;return O=requestAnimationFrame(()=>{if(j.current){j.current=!1,b.current=r,M(r.name||"");return}b.current=r,A(null),D(null),M(r.name||"")}),()=>cancelAnimationFrame(O)},[r,r.name]);const B=s.useCallback((O,L)=>{C(Y=>L?{...Y,[O]:String(L)}:Object.fromEntries(Object.entries(Y).filter(([X])=>X!==O)))},[]),Z=()=>{j.current=!0;const O=b.current?.name;b.current.name=z;const L=Ht(e,b.current,v,c,k),Y=typeof L.message=="string"?L.message:String(L.message),G=Object.values(L.errors??{}).join(`
|
|
293
|
-
`);A(G?Y+`
|
|
294
|
-
`+G:Y),D(L.success),L.success||(b.current.name=O??b.current.name,M(O??""))},ee=O=>{R(L=>({...L,[O]:!L[O]}))},T=s.useMemo(()=>Object.values(k).some(Boolean),[k]);return h.jsx(ke.Provider,{value:u,children:h.jsxs("div",{style:f.container,children:[a&&h.jsx("h2",{style:f.titleStyle,children:c(a)}),N&&h.jsxs("div",{role:"status",style:{marginBottom:12,padding:12,borderRadius:6,backgroundColor:$?"rgba(76, 175, 80, 0.12)":"rgba(225, 29, 72, 0.06)",border:`1px solid ${$?"rgba(76,175,80,0.3)":"rgba(225,29,72,0.12)"}`,color:$?"var(--reactaform-success-color, #4CAF50)":"var(--reactaform-error-color, #e11d48)",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[h.jsx("div",{style:{whiteSpace:"pre-wrap",flex:1},children:N}),h.jsx("button",{onClick:()=>{A(null),D(null)},"aria-label":c("Dismiss"),style:{marginLeft:12,background:"transparent",border:"none",cursor:"pointer",color:"inherit",fontSize:16,lineHeight:1},children:"×"})]}),r&&h.jsx(Xe,{name:z,onChange:O=>{M(O),A(null),D(null)}}),h.jsxs(h.Fragment,{children:[Pt(S,p,v,c,P,B,I,U,ee),U<p.length&&h.jsx("div",{style:{fontSize:"0.9em",color:"var(--reactaform-text-muted, #666)"}})]}),h.jsx("button",{onClick:Z,disabled:T,onMouseEnter:()=>Q(!0),onMouseLeave:()=>Q(!1),style:{padding:"var(--reactaform-button-padding, var(--reactaform-space) 12px)",backgroundColor:T?"var(--reactaform-button-disabled-bg, #cccccc)":"var(--reactaform-button-bg, var(--reactaform-success-color))",color:"var(--reactaform-button-text, #ffffff)",border:"none",borderRadius:"4px",cursor:T?"var(--reactaform-button-disabled-cursor, not-allowed)":"pointer",fontSize:"var(--reactaform-button-font-size, 14px)",fontWeight:"var(--reactaform-button-font-weight, 500)",boxShadow:"var(--reactaform-button-shadow, none)",marginTop:"var(--reactaform-button-margin-top, 0.5em)",transition:"opacity 0.2s ease",opacity:T?"var(--reactaform-button-disabled-opacity, 0.6)":J?"var(--reactaform-button-hover-opacity, 0.9)":"1"},children:c("Submit")})]})})};cr();const Ut=(e,r=!1)=>({container:{padding:"var(--reactaform-space-sm, 8px)",margin:"0 auto",backgroundColor:"transparent",borderRadius:0,color:"var(--reactaform-color-text)",fontFamily:e?.fontFamily||"var(--reactaform-font-family, system-ui, -apple-system, sans-serif)",boxSizing:"border-box",minHeight:e?.minHeight??"0",...e?.width?{width:e.width,overflowX:"auto"}:{maxWidth:"100%"},...e?.height?{height:e.height,overflowY:"auto"}:{}},buttonStyle:{padding:"var(--reactaform-space-sm, 8px) var(--reactaform-space-md, 16px)",backgroundColor:"var(--reactaform-color-primary)",color:"var(--reactaform-color-background)",border:"1px solid var(--reactaform-color-primary)",borderRadius:"var(--reactaform-border-radius, 6px)",cursor:"pointer",fontSize:e?.fontSize||"1rem",fontWeight:"600",transition:"all 0.2s ease",boxShadow:"var(--reactaform-shadow-small, 0 1px 3px rgba(0, 0, 0, 0.12))"},titleStyle:{marginBottom:"var(--reactaform-space-lg, 24px)",color:"var(--reactaform-color-text)",fontSize:typeof e?.fontSize=="number"?`${e.fontSize*1.5}px`:"1.5rem",fontWeight:"700",lineHeight:"1.2",textAlign:"left"}}),Wt=(e,r=!1)=>{const n={color:"var(--reactaform-color-text)",fontFamily:e?.fontFamily||"var(--reactaform-font-family, inherit)",transition:"all 0.2s ease",outline:"none",width:"100%",boxSizing:"border-box"};return{container:{fontFamily:e?.fontFamily||"var(--reactaform-font-family, inherit)",fontSize:e?.fontSize||"var(--reactaform-font-size, 1rem)",width:"100%",maxWidth:e?.width||"100%",marginBottom:"var(--reactaform-space-md, 16px)"},label:{display:"block",marginBottom:"var(--reactaform-space-xs, 4px)",fontWeight:"500",color:"var(--reactaform-color-text)",fontSize:"var(--reactaform-font-size, 1rem)",fontFamily:e?.fontFamily||"var(--reactaform-font-family, inherit)"},input:n,textInput:n,optionInput:n,select:{...n,cursor:"pointer",backgroundRepeat:"no-repeat",backgroundPosition:"right 8px center",backgroundSize:"16px",paddingRight:"32px",backgroundImage:`url("data:image/svg+xml;utf8,<svg
|
|
287
|
+
`,je=W.createContext(void 0),$=()=>{const e=W.useContext(je);if(!e)throw new Error("❌ useReactaFormContext must be used within a <ReactaFormProvider>");return e};class le{map={};register(r,n){this.map[r]=n}get(r){return this.map[r]}has(r){return r in this.map}list(){return Object.keys(this.map)}entries(){return Object.entries(this.map)}values(){return Object.values(this.map)}size(){return Object.keys(this.map).length}unregister(r){return r in this.map?(delete this.map[r],!0):!1}clear(){this.map={}}registerAll(r){Array.isArray(r)?r.forEach(([n,o])=>this.register(n,o)):Object.entries(r).forEach(([n,o])=>this.register(n,o))}getOrDefault(r,n){return this.get(r)??n}}function Ue(e,r=300,n){const o=W.useRef(void 0),t=W.useRef(e),a=W.useRef(null),c=W.useRef(!1);W.useEffect(()=>{t.current=e},[e]),W.useEffect(()=>()=>{o.current!==void 0&&(window.clearTimeout(o.current),o.current=void 0)},[]);const u=W.useCallback(()=>{o.current!==void 0&&(window.clearTimeout(o.current),o.current=void 0),a.current=null,c.current=!1},[]),i=W.useCallback(()=>{if(o.current!==void 0&&(window.clearTimeout(o.current),o.current=void 0),a.current)try{t.current(...a.current)}finally{a.current=null,c.current=!1}},[]);return{callback:W.useCallback((...m)=>{if(n?.leading===!0&&!c.current){c.current=!0,t.current(...m),window.clearTimeout(o.current),o.current=window.setTimeout(()=>{c.current=!1,o.current=void 0},r);return}a.current=m,window.clearTimeout(o.current),o.current=window.setTimeout(()=>{o.current=void 0,a.current&&(t.current(...a.current),a.current=null,c.current=!1)},r)},[r,n?.leading]),cancel:u,flush:i}}const N={field:"reactaform-field",label:"reactaform-label",input:"reactaform-input",textInput:"reactaform-input--text",inputNumber:"reactaform-input--number",inputSelect:"reactaform-select",rangeInput:"reactaform-input--range",button:"reactaform-button"},B=(...e)=>{const r=[];for(const n of e)n&&(typeof n=="string"?r.push(n):typeof n=="object"&&Object.entries(n).forEach(([o,t])=>{t&&r.push(o)}));return r.join(" ")},We=({content:e,size:r="medium",animation:n=!0})=>{const{t:o,darkMode:t,formStyle:a,fieldStyle:c}=$(),[u,i]=s.useState(!1),[d,m]=s.useState({x:0,y:0}),[f,l]=s.useState(!1),h=s.useRef(null),b=s.useRef(null),p=s.useRef(null),y=s.useMemo(()=>{const R={icon:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"1.2em",height:"1.2em",fontSize:"0.9em",fontWeight:"bold",borderRadius:"50%",backgroundColor:t?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.06)",color:t?"#f0f0f0":"#333",border:`1px solid ${t?"rgba(255,255,255,0.2)":"rgba(0,0,0,0.1)"}`,cursor:"pointer",transition:n?"all 0.2s ease":void 0,marginLeft:"0.3em"},text:{...{small:{padding:"4px 8px",fontSize:"11px",maxWidth:"200px"},medium:{padding:"6px 10px",fontSize:"12px",maxWidth:"240px"},large:{padding:"8px 12px",fontSize:"13px",maxWidth:"280px"}}[r],position:"absolute",backgroundColor:`var(--reactaform-tooltip-color-bg, ${t?"rgba(45,45,45,0.95)":"rgba(60,60,60,0.92)"})`,color:`var(--reactaform-tooltip-color, ${t?"#f0f0f0":"#fff"})`,borderRadius:"6px",border:`1px solid ${t?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)"}`,boxShadow:t?"0 8px 16px rgba(0,0,0,0.4)":"0 6px 18px rgba(0,0,0,0.12)",zIndex:2147483647,opacity:0,visibility:"hidden",transition:n?"opacity 0.2s ease, visibility 0.2s ease":void 0,pointerEvents:"none",whiteSpace:"normal",wordBreak:"break-word",boxSizing:"border-box"},textVisible:{opacity:1,visibility:"visible"}},v=(E,k,j)=>{const M=E?.[k];return(j&&M?M[j]:void 0)??{}};return{icon:{...R.icon,...v(a,"tooltip","icon"),...v(c,"tooltip","icon")},text:{...R.text,...v(a,"tooltip","text"),...v(c,"tooltip","text")},textVisible:R.textVisible}},[t,r,n,a,c]);s.useEffect(()=>{if(u){const C=requestAnimationFrame(()=>l(!1)),R=requestAnimationFrame(()=>{if(h.current){const v=h.current.getBoundingClientRect(),w=8;p.current=v;const E=v.right+w,k=v.top;m({x:E,y:k}),l(!0)}});return()=>{cancelAnimationFrame(R),cancelAnimationFrame(C)}}else requestAnimationFrame(()=>l(!1))},[u]),s.useEffect(()=>{if(!f)return;const C=requestAnimationFrame(()=>{if(!b.current)return;const R=b.current.getBoundingClientRect(),v=8,w=typeof window<"u"?window.innerWidth:1024,E=typeof window<"u"?window.innerHeight:768;let k=d.x,j=d.y;const I=p.current;I&&(k=I.right+v,j=I.top+I.height/2-R.height/2+-4,k+R.width>w-v&&(k=I.left-v-R.width)),k+R.width>w-v&&(k=Math.max(v,w-R.width-v)),k<v&&(k=v),j+R.height>E-v&&(j=Math.max(v,E-R.height-v)),j<v&&(j=v),(k!==d.x||j!==d.y)&&m({x:k,y:j})});return()=>cancelAnimationFrame(C)},[f,d.x,d.y]);const S=typeof document<"u"?document.getElementById("popup-root"):null,x=g.jsx("div",{ref:b,style:{...y.text,transform:f?"translateY(0) scale(1)":"translateY(-4px) scale(0.98)",transition:"opacity 120ms ease, transform 120ms ease, visibility 120ms ease",width:240,...f?y.textVisible:{},top:d.y,left:d.x},"data-reactaform-theme":t?"dark":"light",children:o(e)});return g.jsxs(g.Fragment,{children:[g.jsx("span",{"data-testid":"tooltip-icon",ref:h,onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),style:{...y.icon},children:"?"}),u&&(S?Ce.createPortal(x,S):x)]})},be=s.memo(({field:e,error:r,children:n,showLabel:o=!0})=>{const{t}=$(),a=e?.labelLayout==="column-center"?"center":"left";return g.jsxs("div",{className:`${N.field} column-layout`,style:{display:"flex",flexDirection:"column",gap:"var(--reactaform-label-gap, 4px)","--label-align":a},children:[o&&g.jsx("div",{style:{textAlign:a,width:"100%"},children:g.jsx("label",{id:`${e.name}-label`,className:N.label,htmlFor:e.name,style:{textAlign:a,width:"100%",minWidth:"unset",display:"block",marginBottom:"10px"},children:t(e.displayName)})}),g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--reactaform-inline-gap, 8px)",width:"100%"},children:[g.jsx("div",{style:{flex:1,minWidth:0,maxWidth:"100%"},children:g.jsx("div",{style:{width:"100%"},children:n})}),e.tooltip&&g.jsx(We,{content:e.tooltip})]}),r&&g.jsx(Re,{id:`${e.name}-error`,children:r})]})});be.displayName="ColumnFieldLayout";const _e=s.memo(({field:e,error:r,children:n,rightAlign:o=!1})=>{const{t}=$(),a=s.useMemo(()=>({display:"flex",flexDirection:"column",gap:0}),[]),c=s.useMemo(()=>({display:"flex",flexDirection:"row",alignItems:"center",gap:"3px"}),[]);return g.jsxs("div",{className:`${N.field} row-layout`,children:[g.jsx("label",{id:`${e.name}-label`,className:N.label,htmlFor:e.name,style:{textAlign:"left",justifyContent:"flex-start"},children:t(e.displayName)}),g.jsxs("div",{style:a,children:[g.jsxs("div",{style:c,children:[o?g.jsx("div",{style:{display:"flex",flex:1,justifyContent:"flex-end",alignItems:"center",gap:"var(--reactaform-inline-gap, 8px)"},children:n}):n,e.tooltip&&g.jsx(We,{content:e.tooltip})]}),r&&g.jsx(Re,{id:`${e.name}-error`,children:r})]})]})});_e.displayName="RowFieldLayout";const P=({field:e,error:r,children:n,rightAlign:o=!1})=>e.labelLayout==="column-left"||e.labelLayout==="column-center"?g.jsx(be,{field:e,error:r,showLabel:!0,children:n}):e.type==="checkbox"||e.type==="switch"?g.jsx(be,{field:e,error:r,showLabel:!1,children:n}):g.jsx(_e,{field:e,error:r,rightAlign:o,children:n}),Re=s.memo(({children:e,id:r})=>{const n=s.useMemo(()=>({color:"var(--reactaform-error-color)",fontSize:"13px",marginTop:"4px",fontWeight:"var(--reactaform-font-weight)",display:"flex",flex:1,justifyContent:"flex-start",alignItems:"flex-start"}),[]);return g.jsx("div",{id:r,style:n,children:e})});Re.displayName="ErrorDiv";const Ke=s.memo(({name:e,onChange:r})=>{const{t:n}=$();return g.jsxs("div",{style:{marginBottom:16},children:[g.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 2fr",gap:12,alignItems:"center"},children:[g.jsx("label",{htmlFor:"instance-name-input",style:{margin:0,fontSize:"0.95em",fontWeight:500,color:"var(--reactaform-text-color, #333)"},children:n("Instance Name")}),g.jsx("input",{id:"instance-name-input",type:"text",value:e,onChange:o=>r(o.target.value),style:{width:"100%",padding:"var(--reactaform-input-padding, 8px 12px)",fontSize:"var(--reactaform-input-font-size, 14px)",border:"1px solid var(--reactaform-input-border, #ddd)",borderRadius:"var(--reactaform-border-radius, 4px)",backgroundColor:"var(--reactaform-input-bg, #fff)",color:"var(--reactaform-text-color, #333)",boxSizing:"border-box"},placeholder:n("Enter instance name")})]}),g.jsx("div",{style:{height:"1px",backgroundColor:"var(--reactaform-separator, #e6e6e6)",marginTop:12,marginBottom:12}})]})});Ke.displayName="InstanceName";class yr extends le{registerInCategory(r,n,o){this.get(r)||this.register(r,{});const t=this.get(r);t[n]=o}getFromCategory(r,n){return this.get(r)?.[n]}listFromCategory(r){return Object.keys(this.get(r)||{})}listCategories(){return this.list()}}const Je=new le,Ge=new yr;function xr(e,r){Je.register(e,r)}function vr(e,r,n){Ge.registerInCategory(e,r,n)}function wr(e,r){return Ge.getFromCategory(e,r)||null}function Sr(e){return Je.get(e)||null}function Ye(e){return(typeof e=="object"||typeof e=="function")&&e!==null&&typeof e.then=="function"}const pe=new Map,ge=new Map;function L(e,r,n,o){if(r&&typeof r.validationHandlerName=="string"){const t=`${e}:${r.validationHandlerName}`;if(!pe.has(t)){const c=wr(e,r.validationHandlerName);pe.set(t,c)}const a=pe.get(t);if(a)try{const c=a(n,o);return Ye(c)?null:c||null}catch(c){return String(c instanceof Error?c.message:c)}}return null}async function Xe(e,r,n){if(e&&typeof e.validationHandlerName=="string"){const o=e.validationHandlerName;if(!ge.has(o)){const a=Sr(o);ge.set(o,a)}const t=ge.get(o);if(t)try{const a=t(r,n);return Ye(a)?await a||null:a||null}catch(a){return[String(a instanceof Error?a.message:a)]}}return null}function X(e){return typeof e=="object"&&e!==null}function Ee(e){if(!X(e))return!1;const r=e;return typeof r.name=="string"&&typeof r.displayName=="string"}function Ze(e){if(!X(e))return!1;const r=e;return typeof r.name!="string"||typeof r.version!="string"||!Array.isArray(r.properties)?!1:r.properties.every(n=>Ee(n))}function ye(e){try{return typeof File<"u"&&e instanceof File}catch{const r=X(e)?e:void 0;return!!r&&typeof r.name=="string"&&typeof r.size=="number"}}function Cr(e,r,n={}){try{const{includeMetadata:o=!1,dateFormat:t="iso",fileHandling:a="metadata",prettify:c=!1,excludeFields:u=[],includeOnlyFields:i=[]}=n;if(!e||typeof e!="object")return{success:!1,error:"Instance must be a valid object"};const d=[],m=[],f={},h=(Ze(r)||X(r)&&Array.isArray(r.properties)?r.properties:[]).filter(Ee),b=new Map(h.map(y=>[y.name,y]));for(const[y,S]of Object.entries(e)){if(u.includes(y)){m.push(y);continue}if(i.length>0&&!i.includes(y)){m.push(y);continue}if(S===void 0)continue;const x=b.get(y);try{f[y]=jr(S,x,{dateFormat:t,fileHandling:a})}catch(C){d.push(`Error serializing field '${y}': ${String(C)}`),f[y]=null}}return o&&(f._metadata={serializedAt:new Date().toISOString(),version:(X(r)?r.version:void 0)||"1.0.0",fieldCount:Object.keys(f).length-1}),{success:!0,data:c?JSON.stringify(f,null,2):JSON.stringify(f),metadata:{fieldCount:Object.keys(f).length,excludedFields:m,warnings:d}}}catch(o){return{success:!1,error:`Serialization failed: ${o instanceof Error?o.message:"Unknown error"}`}}}function jr(e,r,n={}){const{dateFormat:o="iso",fileHandling:t="metadata"}=n;if(e==null)return null;if(r)switch(r.type){case"date":case"datetime":case"date-time":return Ve(e,o);case"file":return De(e,t);case"int":case"integer":return typeof e=="string"?parseInt(e,10):e;case"float":case"number":return typeof e=="string"?parseFloat(e):e;case"boolean":return typeof e=="string"?e==="true":!!e;case"int-array":case"float-array":return Array.isArray(e)?e.map(a=>typeof a=="string"?Number(a):a):e;default:return e}return e instanceof Date?Ve(e,o):ye(e)||Array.isArray(e)&&ye(e[0])?De(e,t):e}function Ve(e,r){let n=null;if(e instanceof Date)n=e;else if(typeof e=="string"){const o=new Date(e);if(!isNaN(o.getTime()))n=o;else return e}else return e;switch(r){case"timestamp":return n.getTime();case"locale":return n.toLocaleString();case"iso":default:return n.toISOString()}}function De(e,r){return r==="skip"?null:Array.isArray(e)?e.map(n=>ze(n,r)):ze(e,r)}function ze(e,r){if(!ye(e))return e;const n=e;return r==="metadata"?{name:n.name,size:n.size,type:n.type,lastModified:n.lastModified}:{name:n.name,size:n.size,type:n.type,lastModified:n.lastModified,_note:"Base64 encoding requires async implementation"}}function Rr(e,r,n={}){try{const{strict:o=!1,validateTypes:t=!0,preserveUnknownFields:a=!0,dateFormat:c="auto"}=n;if(!e||typeof e!="string")return{success:!1,error:"Serialized data must be a non-empty string"};let u;try{u=JSON.parse(e)}catch(p){return{success:!1,error:`Invalid JSON: ${p instanceof Error?p.message:"Unknown parsing error"}`}}if(!u||typeof u!="object")return{success:!1,error:"Parsed data must be an object"};const i=[],d=[],m={},l=(Ze(r)||X(r)&&Array.isArray(r.properties)?r.properties:[]).filter(Ee),h=new Map(l.map(p=>[p.name,p]));for(const p of l){const y=p.name,S=u[y];if(S===void 0){o&&p.required&&d.push(`Required field '${y}' is missing`);continue}try{m[y]=Er(S,p,{validateTypes:t,dateFormat:c})}catch(x){const C=`Error deserializing field '${y}': ${String(x)}`;o?d.push(C):(i.push(C),m[y]=S)}}if(a)for(const[p,y]of Object.entries(u))!h.has(p)&&p!=="_metadata"&&(o&&i.push(`Unknown field '${p}' preserved`),m[p]=y);const b=d.length>0;return{success:!b,data:m,warnings:i.length>0?i:void 0,validationErrors:b?d:void 0}}catch(o){return{success:!1,error:`Deserialization failed: ${o instanceof Error?o.message:"Unknown error"}`}}}function Er(e,r,n={}){const{validateTypes:o=!0,dateFormat:t="auto"}=n;if(e==null)return e;try{switch(r.type){case"date":case"datetime":case"date-time":return Ir(e,t,o);case"int":case"integer":return xe(e,o);case"float":case"number":return ve(e,o);case"boolean":return Fr(e,o);case"int-array":return Le(e,"integer",o);case"float-array":return Le(e,"number",o);case"string":case"text":case"email":case"url":case"phone":return o?String(e):e;default:return e}}catch(a){if(o)throw new Error(`Type conversion failed: ${String(a)}`);return e}}function kr(e,r={}){try{const{prettify:n=!0,includeMetadata:o=!0}=r;if(!e||typeof e!="object")return{success:!1,error:"Definition must be a valid object"};const t={...e};return o&&(t._metadata={serializedAt:new Date().toISOString(),version:t.version||"1.0.0",propertyCount:(Array.isArray(t.properties)?t.properties.length:0)||0}),{success:!0,data:n?JSON.stringify(t,null,2):JSON.stringify(t),metadata:{fieldCount:(Array.isArray(t.properties)?t.properties.length:0)||0,excludedFields:[],warnings:[]}}}catch(n){return{success:!1,error:`Definition serialization failed: ${n instanceof Error?n.message:"Unknown error"}`}}}function Nr(e,r={}){try{const{strict:n=!1,validateTypes:o=!0}=r;let t;if(typeof e=="string")try{t=JSON.parse(e)}catch(m){return{success:!1,error:`Invalid JSON for definition: ${m instanceof Error?m.message:"Unknown parsing error"}`}}else if(e&&typeof e=="object")t={...e};else return{success:!1,error:"Input must be a string or object"};const a=[],c=[],u=["name","version","displayName"];for(const m of u)if(!t[m])if(n)c.push(`Required field '${m}' is missing`);else switch(a.push(`Missing field '${m}', using default`),m){case"name":t.name="unnamed-definition";break;case"version":t.version="1.0.0";break;case"displayName":t.displayName=t.name||"Unnamed Definition";break}const i=Array.isArray(t.properties)?t.properties:null;i?t.properties=i.map((m,f)=>{const l=X(m)?m:{},h={...l};if(!l.name){const b=`Property at index ${f} missing 'name'`;n?c.push(b):(a.push(`${b}, using 'field_${f}'`),h.name=`field_${f}`)}return l.displayName||(h.displayName=l.name||`Field ${f}`),l.type||(n&&o?c.push(`Property '${l.name||f}' missing 'type'`):(a.push(`Property '${l.name||f}' missing 'type', using 'string'`),h.type="string")),l.defaultValue===void 0&&(h.defaultValue=null),l.required===void 0&&(h.required=!1),h}):n?c.push("Properties must be an array"):(a.push("Properties not found or invalid, using empty array"),t.properties=[]);const d=c.length>0;return{success:!d,data:t,warnings:a.length>0?a:void 0,validationErrors:d?c:void 0}}catch(n){return{success:!1,error:`Definition deserialization failed: ${n instanceof Error?n.message:"Unknown error"}`}}}function Ir(e,r,n){if(e instanceof Date)return e;if(typeof e=="number"){const o=new Date(e);if(n&&isNaN(o.getTime()))throw new Error(`Invalid timestamp: ${e}`);return o}if(typeof e=="string"){const o=new Date(e);if(n&&isNaN(o.getTime()))throw new Error(`Invalid date string: ${e}`);return o}if(n)throw new Error(`Cannot convert ${typeof e} to Date`);return e}function xe(e,r){if(typeof e=="number"&&Number.isInteger(e))return e;if(typeof e=="string"&&e.trim()!==""){const n=parseInt(e,10);if(r&&isNaN(n))throw new Error(`Cannot convert "${e}" to integer`);return n}if(r)throw new Error(`Cannot convert ${typeof e} to integer`);return e}function ve(e,r){if(typeof e=="number")return e;if(typeof e=="string"&&e.trim()!==""){const n=parseFloat(e);if(r&&isNaN(n))throw new Error(`Cannot convert "${e}" to number`);return n}if(r)throw new Error(`Cannot convert ${typeof e} to number`);return e}function Fr(e,r){if(typeof e=="boolean")return e;if(typeof e=="string"){const n=e.toLowerCase();if(n==="true"||n==="1")return!0;if(n==="false"||n==="0")return!1;if(r)throw new Error(`Cannot convert "${e}" to boolean`)}if(typeof e=="number")return!!e;if(r)throw new Error(`Cannot convert ${typeof e} to boolean`);return e}function Le(e,r,n){if(!Array.isArray(e)){if(typeof e=="string")return e.split(",").map(t=>t.trim()).filter(Boolean).map(t=>r==="integer"?xe(t,n):ve(t,n));if(n)throw new Error(`Expected array, got ${typeof e}`);return e}return e.map((o,t)=>{try{return r==="integer"?xe(o,n):ve(o,n)}catch(a){if(n)throw new Error(`Array element ${t}: ${a}`);return o}})}const Mr=(e,r)=>{const n=new Map;let o=null,t=null,a=0;for(const c of e){const u=c.group;if(!u){o=null,t=null;continue}if(u===o)r[c.name].group=t??u;else{if(!n.has(u))n.set(u,1),t=null,r[c.name].group=u;else{const i=n.get(u),d=`${u}(${i})`;n.set(u,i+1),t=d,r[c.name].group=d,a++}o=u}}return a},$r=(e,r={})=>{const{includeEmpty:n=!0}=r,o=[];let t=null,a=[],c=0;for(const i of e){const d=i.group||null;d!==t?((a.length>0||n)&&(a.length===0&&c++,o.push({name:t,fields:a})),t=d,a=[i]):a.push(i)}(a.length>0||n)&&(a.length===0&&c++,o.push({name:t,fields:a}));const u=Math.max(0,...o.map(i=>i.fields.length));return{groups:o,metadata:{totalGroups:o.length,emptyGroups:c,largestGroup:u}}},he=new Map,ce=new Map,Y=new Set,we=new Map,Ar=async e=>{try{let r;switch(e.toLowerCase()){case"fr":r=(await Promise.resolve().then(()=>require("./common-DLr0UoG9.js"))).default;break;case"de":r=(await Promise.resolve().then(()=>require("./common-Crb-me6O.js"))).default;break;case"es":r=(await Promise.resolve().then(()=>require("./common-DRIndE7S.js"))).default;break;case"zh-cn":r=(await Promise.resolve().then(()=>require("./common-BeJOG7Z0.js"))).default;break;case"en":r={};break;default:r={}}return{success:!0,translations:r,fromCache:!1}}catch(r){return{success:!1,translations:{},error:`Failed to load common translations for ${e}: ${r}`}}},Vr=async e=>{if(!e)return{success:!1,translations:{},error:"Language is required"};const r=e.toLowerCase();if(r==="en")return{success:!0,translations:{},fromCache:!1};if(he.has(r))return{success:!0,translations:he.get(r)||{},fromCache:!0};const n=await Ar(r);return n.success&&(he.set(r,n.translations),we.set(r,{loadedAt:new Date,size:Object.keys(n.translations).length,source:"common"})),n},Dr=async(e,r)=>{if(!e||!r)return{success:!1,translations:{},error:"Both language and localizeName are required"};const n=`${e.toLowerCase()}/${r}`;if(Y.has(n))return{success:!1,translations:{},error:"Previously failed to load",fromCache:!0};if(ce.has(n))return{success:!0,translations:ce.get(n)||{},fromCache:!0};try{let o=r;!r.includes("/")&&!r.includes(".")&&(o=`/locales/${e}/${r}.json`);const t=await fetch(o);if(!t.ok){const d=`HTTP ${t.status}: ${t.statusText}`;return t.status===404?(ce.set(n,{}),we.set(n,{loadedAt:new Date,size:0,source:"user"}),{success:!0,translations:{},fromCache:!1}):(Y.add(n),{success:!1,translations:{},error:d})}const a=t.headers.get("content-type")||"";!a.includes("application/json")&&!a.includes("text/json")&&Qe()&&console.warn(`Translation file at ${o} has unexpected content-type: ${a}`);const c=await t.text();if(!c){const d="Empty translation file";return Y.add(n),{success:!1,translations:{},error:d}}let u;try{u=JSON.parse(c)}catch(d){const m=`Invalid JSON in translation file: ${d instanceof Error?d.message:String(d)}`;return Y.add(n),{success:!1,translations:{},error:m}}if(!u||typeof u!="object"){const d="Invalid translation file format";return Y.add(n),{success:!1,translations:{},error:d}}const i=Object.fromEntries(Object.entries(u).map(([d,m])=>[d,typeof m=="string"?m:String(m)]));if(!i||typeof i!="object"){const d="Invalid translation file format";return Y.add(n),{success:!1,translations:{},error:d}}return ce.set(n,i),we.set(n,{loadedAt:new Date,size:Object.keys(i).length,source:"user"}),{success:!0,translations:i,fromCache:!1}}catch(o){const t=`Failed to load user translations: ${o instanceof Error?o.message:"Unknown error"}`;return Y.add(n),{success:!1,translations:{},error:t}}};function Qe(){try{if(typeof process<"u"&&process?.env?.NODE_ENV==="development")return!0}catch{}return!1}function zr(e,r){return r.length===0?e:e.replace(/\{\{(\d+)\}\}/g,(n,o)=>{const t=parseInt(o,10)-1,a=r[t];if(a==null)return n;try{return String(a)}catch{return n}})}const Lr=(e,r,n)=>(o,...t)=>{let a=o,c=!1;return!o||typeof o!="string"?String(o||""):(e.toLowerCase()==="en"?(a=o,c=!0):Object.prototype.hasOwnProperty.call(n,o)?(a=n[o],c=!0):Object.prototype.hasOwnProperty.call(r,o)?(a=r[o],c=!0):a=o,a=zr(a,t),!c&&Qe()&&console.debug(`Missing translation for "${o}" in language "${e}"`),a)},ke={length:["m","cm","mm","km","in","ft","yd","mi"],area:["m^2","cm^2","mm^2","in^2","ft^2","yd^2"],volume:["L","m^3","cm^3","mL","in^3","ft^3","yd^3"],weight:["kg","g","mg","t","lb","oz"],time:["min","s","h","ms","d"],temperature:["C","F","K"],angle:["deg","rad","rev"]},Ne={length:{m:"Meter (m)",mm:"Millimeter (mm)",cm:"Centimeter (cm)",km:"Kilometer (km)",in:"Inch (in)",ft:"Foot (ft)",yd:"Yard (yd)",mi:"Mile (mi)"},area:{"m^2":"Square meter (m^2)","mm^2":"Square millimeter (mm^2)","cm^2":"Square centimeter (cm^2)","in^2":"Square inch (in^2)","ft^2":"Square foot (ft^2)","yd^2":"Square yard (yd^2)"},volume:{L:"Liter (L)","cm^3":"Cubic centimeter (cm^3)","m^3":"Cubic meter (m^3)",mL:"Milliliter (mL)","in^3":"Cubic inch (in^3)","ft^3":"Cubic foot (ft^3)","yd^3":"Cubic yard (yd^3)"},weight:{kg:"Kilogram (kg)",g:"Gram (g)",mg:"Milligram (mg)",t:"Tonne (t)",lb:"Pound (lb)",oz:"Ounce (oz)"},time:{s:"Second (s)",min:"Minute (min)",h:"Hour (h)",ms:"Millisecond (ms)",d:"Day (d)",wk:"Week (wk)"},temperature:{C:"Celsius (C)",F:"Fahrenheit (F)",K:"Kelvin (K)"},angle:{deg:"Degree (deg)",rad:"Radian (rad)",rev:"Revolution (rev)"}},Ie={length:{mm:1e3,cm:100,m:1,km:.001,in:100/2.54,ft:100/(2.54*12),yd:100/(2.54*36),mi:1/1609.344},area:{"m^2":1,"mm^2":1e6,"cm^2":1e4,"km^2":1/1e6,"in^2":(100/2.54)**2,"ft^2":(100/(2.54*12))**2,"yd^2":(100/(2.54*36))**2},volume:{"cm^3":1e6,"m^3":1,L:1,mL:1e6,"in^3":(100/2.54)**3,"ft^3":(100/(2.54*12))**3,"yd^3":(100/(2.54*36))**3},weight:{mg:1e6,g:1e3,kg:1,t:.001,lb:1/.45359237,oz:1/.028349523125},time:{ms:1e3,s:1,min:1/60,h:1/3600,d:1/86400,wk:1/604800},temperature:{C:1,F:33.8,K:274.15},angle:{deg:1,rad:Math.PI/180,rev:1/360}},Fe={},Or=new Set([...Object.keys(ke),...Object.keys(Ne),...Object.keys(Ie)]);for(const e of Or){const r={},n=ke[e]??[],o=Ne[e]??{},t=Ie[e]??{};for(const a of n){const c=o[a];r[a]={name:typeof c=="string"?c:String(a),shortName:a,factor:Object.prototype.hasOwnProperty.call(t,a)?t[a]:void 0}}for(const[a,c]of Object.entries(o))if(!r[a]){const u=typeof c=="string"?c:String(a);r[a]={name:u,shortName:a,factor:Object.prototype.hasOwnProperty.call(t,a)?t[a]:void 0}}for(const[a,c]of Object.entries(t))r[a]||(r[a]={name:String(a),shortName:String(a),factor:c});Fe[e]=r}const qr=Object.freeze(Object.defineProperty({__proto__:null,dimensionUnitDisplayMap:Ne,dimensionUnitsMap:ke,dimensonUnitFactorsMap:Ie,unitsByDimension:Fe},Symbol.toStringTag,{value:"Module"})),Pr=({field:e,value:r,onChange:n,onError:o})=>{const{definitionName:t,t:a}=$(),c=s.useRef(o);s.useEffect(()=>{c.current=o},[o]),s.useEffect(()=>{const f=L(t,e,r??!1,a);c.current?.(f??null)},[r,e,t,a]);const u=f=>{const l=f.target.checked;n?.(l,null)},i=f=>{(f.key===" "||f.key==="Spacebar"||f.key==="Space"||f.key==="Enter")&&(f.preventDefault(),n?.(!r,null))},d=e.name,m=L(t,e,r??!1,a);return g.jsx(P,{field:e,rightAlign:!1,children:g.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[g.jsx("label",{className:N.label,htmlFor:d,style:{textAlign:"left",justifyContent:"flex-start"},children:a(e.displayName)}),g.jsx("input",{id:d,"data-testid":"boolean-checkbox",type:"checkbox",checked:!!r,onChange:u,onKeyDown:i,"aria-checked":!!r,"aria-invalid":!!m,"aria-describedby":m?`${e.name}-error`:void 0,style:{cursor:"pointer",margin:"8px 0 8px 0",width:"1.2em",height:"1.2em",verticalAlign:"middle",color:"#FFFFFF",accentColor:"#0000FF",opacity:void 0}})]})})},Oe=[{label:"Black",value:"#000000"},{label:"White",value:"#ffffff"},{label:"Red",value:"#ff0000"},{label:"Green",value:"#008000"},{label:"Blue",value:"#0000ff"},{label:"Yellow",value:"#ffff00"},{label:"Cyan",value:"#00ffff"},{label:"Magenta",value:"#ff00ff"},{label:"Orange",value:"#ffa500"},{label:"Purple",value:"#800080"},{label:"Brown",value:"#a52a2a"},{label:"Gray",value:"#808080"},{label:"Light Gray",value:"#d3d3d3"},{label:"Pink",value:"#ffc0cb"}];function er(e){return/^#([0-9A-F]{3}){1,2}$/i.test(e)}function Tr(e){if(!er(e))return null;const r=rr(e),n=parseInt(r.slice(1),16);return{r:n>>16&255,g:n>>8&255,b:n&255}}function rr(e){return e?(e=e.toLowerCase(),/^#([a-f0-9]){3}$/i.test(e)?"#"+e.slice(1).split("").map(r=>r+r).join(""):e):"#000000"}const Br=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),[c,u]=s.useState("#000000"),i=s.useRef(null),d=s.useRef(null),m=s.useRef(o);s.useEffect(()=>{m.current=o},[o]),s.useEffect(()=>{const x=r&&er(r)?r:"#000000",C=rr(x);u(C)},[r]),s.useEffect(()=>{const x=L(a,e,r??"#000000",t);m.current?.(x??null)},[r,e,a,t]);const f=L(a,e,r??"#000000",t),l=x=>{const C=x.target.value;u(C),n?.(C,null)},h=x=>{const C=x.target.value;u(C),n?.(C,null)},b=Oe.find(x=>x.value===c),{r:p,g:y,b:S}=Tr(c)||{r:0,g:0,b:0};return g.jsx(P,{field:e,error:f,children:g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",width:"100%"},children:[g.jsxs("select",{ref:i,id:e.name,value:c,onChange:l,style:{minWidth:"120px",flex:1},className:B(N.input,N.inputSelect),"aria-invalid":!!f,"aria-describedby":f?`${e.name}-error`:void 0,children:[Oe.map(x=>g.jsx("option",{value:x.value,children:t(x.label)},x.value)),b?null:g.jsxs("option",{value:c,children:["(",p,", ",y,", ",S,")"]},c)]}),g.jsx("label",{style:{width:"2.5em",height:"1.8em",display:"inline-block",border:"1px solid #ccc",borderRadius:"4px",backgroundColor:c,cursor:"pointer",overflow:"hidden",flexShrink:0},children:g.jsx("input",{ref:d,id:`${e.name}-color`,type:"color",value:c,onChange:h,style:{opacity:0,width:"100%",height:"100%",border:"none",padding:0,cursor:"pointer"},"aria-invalid":!!f,"aria-describedby":f?`${e.name}-error`:void 0})})]})})},oe=e=>{if(!e)return null;const r=new Date(e);return isNaN(r.getTime())?null:r},Hr=e=>{if(!e)return"";if(/^\d{4}-\d{2}-\d{2}$/.test(e))return oe(e)?e:"";const n=oe(e);if(n){const o=n.getFullYear(),t=String(n.getMonth()+1).padStart(2,"0"),a=String(n.getDate()).padStart(2,"0");return`${o}-${t}-${a}`}return""},Ur=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),{name:c,required:u}=e,i=s.useRef(null),d=s.useRef(o);s.useEffect(()=>{d.current=o},[o]);const m=s.useCallback(l=>{if(!l||l.trim()==="")return u?t("Value required"):null;if(l){const b=oe(l);if(!b)return t("Invalid date format");if(e.minDate){const p=oe(e.minDate);if(p&&b.getTime()<p.getTime())return t("Date must be on or after {{1}}",e.minDate)}if(e.maxDate){const p=oe(e.maxDate);if(p&&b.getTime()>p.getTime())return t("Date must be on or before {{1}}",e.maxDate)}}return L(a,e,l,t)??null},[e,a,t,u]),f=l=>{const h=l.target.value,b=m(h);n?.(h,b)};return s.useEffect(()=>{const l=m(r);l!==i.current&&(i.current=l,d.current?.(l??null))},[r,m]),g.jsx(P,{field:e,error:m(r),children:g.jsx("input",{id:c,type:"date",value:Hr(r),onChange:f,className:B(N.input,N.textInput),...e.minDate?{min:e.minDate}:{},...e.maxDate?{max:e.maxDate}:{},"aria-invalid":!!m(r),"aria-describedby":m(r)?`${c}-error`:void 0})})},Wr=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),c=s.useRef(null),u=s.useRef(o);s.useEffect(()=>{u.current=o},[o]);const i=s.useCallback(m=>m===""||m===null||m===void 0?t("Value required"):!e.options||e.options.length===0?null:e.options.some(l=>l.value===m)?L(a,e,m,t)??null:t("Invalid option selected"),[e,t,a]);s.useEffect(()=>{const m=r!=null?String(r):"",f=i(m);if(f&&e.options&&e.options.length>0){const l=String(e.options[0].value);c.current&&(c.current.value=l),n?.(l,null),u.current?.(null)}else c.current&&(c.current.value=m),u.current?.(f??null)},[r,i,n,e.options]);const d=m=>{const f=m.target.value,l=i(f);n?.(f,l)};return g.jsx(P,{field:e,error:i(String(r??"")),children:g.jsx("select",{id:e.name,"aria-invalid":!!i(String(r??"")),"aria-describedby":i(String(r??""))?`${e.name}-error`:void 0,defaultValue:String(r??""),ref:c,onChange:d,className:B(N.input,N.inputSelect),children:(e.options??[]).map(m=>g.jsx("option",{value:String(m.value),children:t(m.label)},String(m.value)))})})};function _r(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}const Kr=({field:e,value:r,onChange:n,onError:o})=>{const{definitionName:t,t:a}=$(),c=s.useRef(null),u=s.useCallback(f=>{const l=f.trim();return l===""?e.required?a("Value required"):null:_r(l)?e.pattern&&!new RegExp(e.pattern).test(l)?e.patternErrorMessage?a(e.patternErrorMessage):a("Email does not match pattern: {{%1}}",{"%1":`${e.pattern}`}):L(t,e,f,a)??null:a("Must be valid email format")},[e,t,a]),i=f=>{const l=f.target.value,h=u(l);n?.(l,h)},d=s.useRef(null),m=s.useRef(o);return s.useEffect(()=>{m.current=o},[o]),s.useEffect(()=>{const f=r??"",l=u(f);c.current&&c.current.value!==String(f)&&(c.current.value=String(f)),l!==d.current&&(d.current=l,m.current?.(l??null))},[r,u]),g.jsx(P,{field:e,error:u(String(r??"")),children:g.jsx("input",{id:e.name,type:"email",defaultValue:String(r??""),ref:c,onChange:i,className:B(N.input,N.textInput),"aria-invalid":!!u(String(r??"")),"aria-describedby":u(String(r??""))?`${e.name}-error`:void 0})})},Jr=({field:e})=>{const{darkMode:r}=$(),{color:n=r?"#444444":"#CCCCCC",thickness:o=1,margin:t="8px 0"}=e;return g.jsx("div",{style:{width:"auto",height:"0",borderTop:`${o}px solid ${n}`,margin:t}})},Gr=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),[c,u]=s.useState(!1),i=s.useRef(null),d=s.useRef(o);s.useEffect(()=>{d.current=o},[o]);const m=s.useCallback(x=>e.required&&(!x||Array.isArray(x)&&x.length===0)?t("Value required"):L(a,e,x,t)??null,[e,a,t]),f=s.useMemo(()=>m(r),[r,m]);s.useEffect(()=>{const x=m(r);n?.(r,x),d.current?.(x??null)},[r,m]);const l=x=>{const C=x.target.files;let R=null;if(C&&C.length>0){const w=Array.from(C);e.multiple?R=[...Array.isArray(r)?r:[],...w]:R=w[0]}const v=m(R);n?.(R,v)},h=x=>{x.preventDefault(),x.stopPropagation(),u(!1);const C=x.dataTransfer.files;if(C&&C.length>0){const R=Array.from(C);let v=null;e.multiple?v=[...Array.isArray(r)?r:[],...R]:v=R[0];const w=m(v);n?.(v,w)}},b=x=>{x.preventDefault(),x.stopPropagation(),u(!0)},p=x=>{x.preventDefault(),x.stopPropagation(),u(!1)},y=x=>{if(Array.isArray(r)&&typeof x=="number"){const C=r.filter((w,E)=>E!==x),R=C.length>0?C:null,v=m(R);n?.(R,v)}else{const C=m(null);n?.(null,C)}},S=()=>{const x=Array.isArray(r)?r:r?[r]:[];return x.length===0?null:g.jsx("div",{style:{marginTop:"8px",display:"flex",flexDirection:"column",gap:"6px"},children:x.map((C,R)=>g.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"6px 10px",backgroundColor:"var(--reactaform-input-bg, #fff)",border:"1px solid var(--reactaform-border-color, #d1d5db)",borderRadius:"4px",fontSize:"0.875rem",gap:"8px"},children:[g.jsx("div",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:C.name}),g.jsx("button",{type:"button",onClick:()=>y(Array.isArray(r)?R:void 0),"aria-label":t("Remove file"),style:{background:"transparent",border:"none",color:"var(--reactaform-color-error, #ef4444)",cursor:"pointer",padding:"2px 6px",fontSize:"1.125rem",lineHeight:1,borderRadius:"4px",transition:"background-color 0.2s",flexShrink:0},onMouseEnter:v=>{v.currentTarget.style.backgroundColor="var(--reactaform-bg-hover, #fee)"},onMouseLeave:v=>{v.currentTarget.style.backgroundColor="transparent"},children:"×"})]},`${C.name}-${R}`))})};return g.jsx(P,{field:e,error:f,children:g.jsxs("div",{style:{width:"100%"},children:[g.jsxs("div",{onDrop:h,onDragOver:b,onDragLeave:p,style:{position:"relative",border:`1px dashed ${c?"var(--reactaform-color-primary, #2563eb)":f?"var(--reactaform-color-error, #ef4444)":"var(--reactaform-border-color, #d1d5db)"}`,borderRadius:"var(--reactaform-border-radius, 4px)",padding:"8px 12px",textAlign:"center",backgroundColor:c?"var(--reactaform-bg-hover, #f0f9ff)":"var(--reactaform-input-bg, #fff)",transition:"all 0.2s ease",cursor:"pointer",minHeight:"var(--reactaform-input-height, 34px)",width:"100%",maxWidth:"100%",alignSelf:"stretch",boxSizing:"border-box",display:"flex",alignItems:"center",justifyContent:"center",gap:"8px"},onClick:()=>i.current?.click(),onKeyDown:x=>{(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),i.current?.click())},role:"button","aria-label":e.multiple?t("Choose Files or Drag & Drop"):t("Choose File or Drag & Drop"),"aria-invalid":!!f,"aria-describedby":f?`${e.name}-error`:void 0,children:[g.jsx("input",{id:e.name,ref:i,type:"file",accept:e.accept,multiple:e.multiple,style:{display:"none"},onChange:l}),g.jsx("div",{style:{fontSize:"1.25rem",opacity:.6,lineHeight:1,flexShrink:0},children:"📁"}),g.jsx("div",{style:{fontSize:"0.875rem",fontWeight:400,color:"var(--reactaform-text-color, #111827)",flex:1,textAlign:"left"},children:c?t("Drop files here"):e.multiple?t("Choose Files or Drag & Drop"):t("Choose File or Drag & Drop")}),e.accept&&g.jsx("div",{style:{fontSize:"0.75rem",color:"var(--reactaform-text-muted, #6b7280)",whiteSpace:"nowrap",opacity:c?0:1,transition:"opacity 0.15s ease",pointerEvents:c?"none":"auto"},children:e.accept})]}),S()]})})},Yr=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/;function Xr(e){return e.split(",").map(r=>r.trim()).every(r=>Yr.test(r))}const Zr=e=>!e||e.trim()===""?[]:e.split(",").map(r=>r.trim()).filter(Boolean).map(Number),Qr=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),[c,u]=s.useState(Array.isArray(r)?r.join(", "):String(r??"")),i=s.useCallback(l=>{if(l.trim()==="")return e.required?t("Value required"):null;if(!Xr(l))return t("Each value must be a valid float");const h=Zr(l);if(e.minCount!==void 0&&h.length<e.minCount)return t("Minimum number of values: {{1}}",e.minCount);if(e.maxCount!==void 0&&h.length>e.maxCount)return t("Maximum number of values: {{1}}",e.maxCount);for(const p of h){if(e.min!==void 0&&(e.minInclusive?p<e.min:p<=e.min))return t("Each value must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?p>e.max:p>=e.max))return t("Each value must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max)}return L(a,e,h,t)??null},[a,e,t]),d=l=>{const h=l.target.value,b=i(h);u(h),n?.(h,b)},m=s.useRef(null),f=s.useRef(o);return s.useEffect(()=>{f.current=o},[o]),s.useEffect(()=>{const l=Array.isArray(r)?r.join(", "):String(r??""),h=i(l);h!==m.current&&(m.current=h,f.current?.(h??null))},[r,e.required,i,t]),g.jsx(P,{field:e,error:i(c),children:g.jsx("input",{id:e.name,type:"text",value:c,onChange:d,className:B(N.input,N.textInput),style:{flex:1},"aria-invalid":!!i(c),"aria-describedby":i(c)?`${e.name}-error`:void 0})})},et=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/,rt=e=>{const r=Number.parseFloat(e);return Number.isNaN(r)?null:r},tt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),c=s.useRef(null),u=s.useCallback(f=>{if(f.trim()==="")return e.required?t("Value required"):null;if(!et.test(f))return t("Must be a valid float");const l=rt(f);return l===null?t("Must be a valid float"):e.min!==void 0&&(e.minInclusive?l<e.min:l<=e.min)?t("Must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min):e.max!==void 0&&(e.maxInclusive?l>e.max:l>=e.max)?t("Must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max):L(a,e,l,t)??null},[e,a,t]),i=s.useRef(null),d=s.useRef(o);s.useEffect(()=>{d.current=o},[o]),s.useEffect(()=>{const f=String(r??""),l=u(f);l!==i.current&&(i.current=l,d.current?.(l??null)),c.current&&document.activeElement!==c.current&&(c.current.value=f)},[r,e,u,t]);const m=f=>{const l=f.target.value,h=u(l);n?.(l,h)};return g.jsx(P,{field:e,error:u(String(r??"")),children:g.jsx("input",{id:e.name,type:"text",defaultValue:String(r??""),ref:c,onChange:m,className:B(N.input,N.inputNumber),"aria-invalid":!!u(String(r??"")),"aria-describedby":u(String(r??""))?`${e.name}-error`:void 0})})};function nt(){try{return"/"}catch{}try{if(typeof process<"u"&&process?.env?.PUBLIC_URL)return process.env.PUBLIC_URL}catch{}return"/"}const ot=({field:e,value:r})=>{const{language:n,t:o}=$(),t=e.alignment||"center",a={left:"flex-start",center:"center",right:"flex-end"},c=typeof r=="string"?r:"";let u=c&&c.trim()!==""?c:typeof e.defaultValue=="string"?e.defaultValue:"";u&&!u.startsWith("/")&&(u=`${nt()}${u}`);const i=e.localized?.split(";").map(y=>y.trim()),[d,m]=s.useState(u||""),f=s.useRef(u||null);if(s.useEffect(()=>{if(!u)return;const y=u.split("/"),S=y.pop(),x=S.lastIndexOf(".");if(x===-1)return;const C=S.substring(0,x),R=S.substring(x);let v=null;i?.includes(n)&&(v=`${C}_${n}${R}`);const w=new AbortController;if(v){const E=[...y,v].join("/");fetch(E,{method:"HEAD",signal:w.signal}).then(k=>{const j=k.ok?E:u;j!==f.current&&(f.current=j,m(j))}).catch(()=>{u!==f.current&&(f.current=u,m(u))})}else{const E=u;E!==f.current&&(f.current=E,requestAnimationFrame(()=>m(E)))}return()=>{w.abort()}},[u,n,i]),!d)return null;const{width:l,height:h}=e,b={},p={borderRadius:"8px",objectFit:"contain",boxShadow:"0 2px 6px rgba(0,0,0,0.1)",margin:"0 0 8px 0"};return l&&h?(b.width=l,b.height=h,p.width=`${l}px`,p.height=`${h}px`):l&&!h?(b.width=l,p.width=`${l}px`,p.height="auto"):!l&&h&&(b.height=h,p.width="auto",p.height=`${h}px`),g.jsx(P,{field:e,children:g.jsx("div",{"data-testid":"image-wrapper",style:{display:"flex",justifyContent:a[t]||"center",margin:"0 0"},children:g.jsx("img",{src:d,alt:o?.(e.displayName||"Image")||e.displayName||"Image",...b,style:p})})})};function at(e){const r=/^-?\d+$/;return e.split(",").map(n=>n.trim()).every(n=>r.test(n))}const st=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),c=",",[u,i]=s.useState(Array.isArray(r)?r.join(c+" "):String(r??"")),d=p=>!p||p.trim()===""?[]:p.split(c).map(y=>y.trim()).filter(Boolean).map(y=>Number(y)),m=s.useCallback(p=>{if(p.trim()==="")return e.required?t("Value required"):null;if(!at(p))return t("Each value must be a valid integer");const y=d(p);if(e.minCount!==void 0&&y.length<e.minCount)return t("Minimum number of values: {{1}}",`${e.minCount}`);if(e.maxCount!==void 0&&y.length>e.maxCount)return t("Maximum number of values: {{1}}",`${e.maxCount}`);for(const x of y){if(e.min!==void 0&&(e.minInclusive?x<e.min:x<=e.min))return t("Each value must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?x>e.max:x>=e.max))return t("Each value must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max)}return L(a,e,y,t)??null},[a,e,t]),f=p=>{const y=p.target.value,S=m(y);i(y),n?.(y,S)},l=s.useRef(null),h=s.useRef(o);s.useEffect(()=>{h.current=o},[o]),s.useEffect(()=>{const p=Array.isArray(r)?r.join(c+" "):String(r??""),y=m(p);y!==l.current&&(l.current=y,h.current?.(y??null))},[r,e.required,m,t]);const b=m(u);return g.jsx(P,{field:e,error:b,children:g.jsx("input",{id:e.name,type:"text",value:u,onChange:f,className:B(N.input,N.textInput),style:{flex:1},"aria-invalid":!!b,"aria-describedby":b?`${e.name}-error`:void 0})})};function it(e){return/^[-+]?\d*$/.test(e)}const ct=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),c=s.useRef(null),u=s.useCallback(h=>{const b=parseInt(h,10);return Number.isNaN(b)?null:b},[]),i=s.useCallback(h=>{if(h.trim()==="")return e.required?t("Value required"):null;if(!it(h))return t("Must be a valid integer");const b=u(h);if(b===null)return t("Must be a valid integer");if(e.min!==void 0&&(e.minInclusive?b<e.min:b<=e.min))return t("Must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?b>e.max:b>=e.max))return t("Must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max);if(e.step!==void 0){const y=Number(e.step);if(!Number.isInteger(y))return t("Invalid step value");if(b%y!==0)return t("Must be a multiple of {{1}}",y)}return L(a,e,b,t)??null},[e,a,t,u]),d=s.useRef(null),m=s.useRef(o);s.useEffect(()=>{m.current=o},[o]),s.useEffect(()=>{const h=String(r??""),b=i(h);b!==d.current&&(d.current=b,m.current?.(b??null)),c.current&&document.activeElement!==c.current&&(c.current.value=h)},[r,e,i,t]);const f=h=>{const b=h.target.value,p=i(b);n?.(b,p)},l=i(String(r??""));return g.jsx(P,{field:e,error:l,children:g.jsx("input",{id:e.name,type:"text",defaultValue:String(r??""),ref:c,onChange:f,className:B(N.input,N.inputNumber),"aria-invalid":!!l,"aria-describedby":l?`${e.name}-error`:void 0})})},ut=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),c=e.minHeight??"80px",u=s.useRef(null),i=s.useRef(null),d=s.useRef(o);s.useEffect(()=>{d.current=o},[o]);const m=s.useCallback(b=>b.trim()===""?e.required?t("Value required"):null:e.minLength!==void 0&&b.length<e.minLength?t("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&b.length>e.maxLength?t("Must be at most {{1}} characters",e.maxLength):L(a,e,b,t),[e,a,t]),f=b=>{const p=b.target.value,y=m(p);n?.(p,y)};s.useEffect(()=>{const b=m(r);b!==i.current&&(i.current=b,d.current?.(b??null)),u.current&&u.current.value!==String(r??"")&&(u.current.value=String(r??""))},[r,m]);const l={id:e.name,defaultValue:String(r??""),ref:u,onChange:f,style:{resize:"vertical",minHeight:c,width:"100%",boxSizing:"border-box"},className:B(N.input,N.textInput)},h=m(r);return g.jsx(P,{field:e,error:h,children:g.jsx("textarea",{...l,"aria-invalid":!!h,"aria-describedby":h?`${e.name}-error`:void 0})})},lt=({field:e,value:r,onChange:n,onError:o})=>{const t=s.useRef(o);s.useEffect(()=>{t.current=o},[o]);const{t:a,darkMode:c,formStyle:u,fieldStyle:i,definitionName:d}=$(),m=(j,I,M)=>{if(!I)return{};const T=j?.[I];return(M&&T?T[M]:void 0)??{}},f=s.useRef(null),[l,h]=s.useState(!1),[b,p]=s.useState(null),y=s.useMemo(()=>e.options.map(j=>({value:j.value,label:a(j.label)})),[e.options,a]),S=s.useMemo(()=>{const j=Array.isArray(r)?r:[],I=new Set(y.map(M=>M.value));return j.filter(M=>I.has(M))},[r,y]),x=j=>{const I=Array.isArray(j)?j:[];return e.required&&I.length===0?a("Value required"):L(d,e,I,a)??null},C=()=>{if(!f.current)return;const j=f.current.getBoundingClientRect();p({x:j.left,y:j.bottom}),h(I=>!I)},R=j=>{const I=S.includes(j)?S.filter(z=>z!==j):[...S,j],M=x(I);t.current?.(M??null),n?.(I,M)},v=s.useMemo(()=>({height:"var(--reactaform-input-height, 2.5rem)",padding:"var(--reactaform-input-padding, 8px)",display:"flex",alignItems:"center",boxSizing:"border-box",cursor:"pointer",position:"relative",borderRadius:"var(--reactaform-border-radius, 4px)",border:"1px solid var(--reactaform-border-color, #ccc)",background:"var(--reactaform-secondary-bg, #fff)",color:"var(--reactaform-text-color, #000)",...m(u,"multiSelect","control"),...m(i,void 0,"control")}),[u,i]),w=s.useMemo(()=>({position:"absolute",right:"1.5em",top:"50%",transform:"translateY(-50%)",background:"none",border:"none",cursor:"pointer",fontSize:"0.8em",color:"var(--reactaform-text-muted, #999)",padding:0,...m(u,"multiSelect","clearButton"),...m(i,void 0,"clearButton")}),[u,i]),E=s.useMemo(()=>({position:"absolute",right:"0.7em",top:"50%",transform:"translateY(-50%)",pointerEvents:"none",fontSize:"0.8em",color:"var(--reactaform-text-muted, #999)",...m(u,"multiSelect","arrow"),...m(i,void 0,"arrow")}),[u,i]),k=x(Array.isArray(r)?r:[]);return g.jsxs("div",{children:[g.jsx(P,{field:e,error:null,children:g.jsx("div",{style:{width:"100%"},children:g.jsxs("div",{ref:f,className:"reactaform-multiselection-control",style:v,onClick:C,tabIndex:0,role:"button","aria-haspopup":"listbox","aria-expanded":l,"aria-invalid":!!k,"aria-describedby":k?`${e.name}-error`:void 0,onKeyDown:j=>{(j.key==="Enter"||j.key===" ")&&(j.preventDefault(),C())},children:[g.jsxs("span",{style:{flex:1,color:"var(--reactaform-text-muted, #888)"},children:[S.length," / ",y.length," selected"]}),S.length>0&&g.jsx("button",{type:"button","aria-label":"Clear selections",onClick:j=>{j.stopPropagation(),n?.([],null)},style:w,children:g.jsx("span",{style:w,"aria-hidden":!0,children:"✖"})}),g.jsx("span",{style:E,"aria-hidden":!0,children:"▼"})]})})}),l&&b&&g.jsx(mt,{position:b,options:y,selectedValues:S,onToggleOption:R,onClose:()=>h(!1),controlRef:f,darkMode:c})]})},mt=({position:e,options:r,selectedValues:n,onToggleOption:o,onClose:t,controlRef:a,darkMode:c})=>{const u=s.useRef(null),[i,d]=s.useState(-1),{formStyle:m,fieldStyle:f}=$(),l=(w,E,k)=>{if(!E)return{};const I=w?.[E];return(k&&I?I[k]:void 0)??{}},h=s.useMemo(()=>({maxHeight:200,overflowY:"auto",background:"var(--reactaform-secondary-bg, #fff)",border:"1px solid var(--reactaform-border-color, #ccc)",borderRadius:4,zIndex:2e3,boxShadow:"var(--reactaform-shadow, 0 2px 8px rgba(0,0,0,0.15))",pointerEvents:"auto",color:"var(--reactaform-text-color, #000)",fontSize:"var(--reactaform-popup-font-size, 0.875rem)",...l(m,"multiSelect","popup"),...l(f,void 0,"popup")}),[m,f]),b=s.useMemo(()=>({padding:"6px 8px",cursor:"pointer",display:"flex",alignItems:"center",background:"transparent",color:"var(--reactaform-text-color, #000)",...l(m,"multiSelect","option"),...l(f,void 0,"option")}),[m,f]);s.useEffect(()=>{const w=E=>{const k=E.target;!u.current?.contains(k)&&!a.current?.contains(k)&&t()};return document.addEventListener("mousedown",w),()=>document.removeEventListener("mousedown",w)},[t,a]),s.useEffect(()=>{u.current&&r.length>0&&requestAnimationFrame(()=>d(w=>w===-1?0:w))},[r.length]),s.useEffect(()=>{if(!u.current||i<0)return;const w=u.current.querySelector(`#multi-opt-${i}`);w&&requestAnimationFrame(()=>w.focus())},[i]);const p=250,y=200,[S,x]=s.useState(null),[C,R]=s.useState(null);if(s.useEffect(()=>{if(typeof window>"u")return;const w=()=>{let j=e.x,I=e.y,M=p;const z=a?.current;if(z){const T=z.getBoundingClientRect();j=T.left,I=T.bottom,M=Math.max(80,Math.round(T.width))}j=Math.min(j,window.innerWidth-M),I=Math.min(I,window.innerHeight-y),x({left:j,top:I}),R(M)};w(),window.addEventListener("scroll",w,!0),window.addEventListener("resize",w);let E=null;const k=a?.current;return typeof ResizeObserver<"u"&&k&&(E=new ResizeObserver(()=>w()),E.observe(k)),()=>{window.removeEventListener("scroll",w,!0),window.removeEventListener("resize",w),E&&k&&E.unobserve(k)}},[a,e.x,e.y]),typeof window>"u")return null;let v=document.getElementById("popup-root");return v||(v=document.createElement("div"),v.id="popup-root",document.body.appendChild(v)),Ce.createPortal(g.jsx("div",{ref:u,role:"listbox","aria-activedescendant":i>=0?`multi-opt-${i}`:void 0,style:{position:"absolute",top:S?S.top:e.y,left:S?S.left:e.x,width:C??p,...h},"data-reactaform-theme":c?"dark":"light",children:r.map((w,E)=>{const k=n.includes(w.value),j=c?"var(--reactaform-hover-bg, rgba(255,255,255,0.01))":"var(--reactaform-hover-bg, #eee)",I={...b,background:E===i?j:b.background};return g.jsxs("div",{id:`multi-opt-${E}`,onMouseDown:M=>{M.stopPropagation(),o(w.value)},onKeyDown:M=>{const z=r.length;switch(M.key){case"ArrowDown":M.preventDefault(),d(T=>(T+1)%z);break;case"ArrowUp":M.preventDefault(),d(T=>(T-1+z)%z);break;case"Home":M.preventDefault(),d(0);break;case"End":M.preventDefault(),d(z-1);break;case"Enter":case" ":M.preventDefault(),M.stopPropagation(),o(w.value);break;case"Escape":M.preventDefault(),t(),a?.current?.focus();break}},tabIndex:E===i?0:-1,role:"option","aria-selected":k,style:I,onMouseEnter:M=>{M.currentTarget.style.background=j,d(E)},onMouseLeave:M=>{M.currentTarget.style.background="transparent",d(z=>z===E?-1:z)},children:[g.jsx("input",{type:"checkbox",checked:k,readOnly:!0,style:{marginRight:8,width:"1.125em",height:"1.125em",verticalAlign:"middle",accentColor:c?"#10b981":"#22c55e",cursor:"pointer"}}),w.label]},w.value)})}),v)},ft=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),c=s.useRef(null),u=e.min??void 0,i=e.max??void 0,d=Math.max(1,Math.round(e.step??1)),m=s.useCallback(y=>isNaN(y)?t("Must be a valid integer"):Number.isInteger(y)?u!==void 0&&y<u?t("Must be �?{{1}}",u):i!==void 0&&y>i?t("Must be �?{{1}}",i):L(a,e,y,t)??null:t("Must be an integer"),[a,e,t,u,i]),f=s.useRef(null),l=s.useRef(o);s.useEffect(()=>{l.current=o},[o]),s.useEffect(()=>{if(document.activeElement===c.current)return;const S=String(r),x=m(r);c.current&&(c.current.value=S),x!==f.current&&(f.current=x,l.current?.(x??null))},[r,m]);const h=y=>{if(y.trim()==="")return e.required?t("Value required"):null;const x=Number(y);return m(x)},b=y=>{const S=y.target.value,x=y.target.valueAsNumber,C=h(S);n?.(x,C)},p=h(String(r??""));return g.jsx(P,{field:e,error:p,children:g.jsx("input",{ref:c,id:e.name,type:"number",defaultValue:String(r??""),min:u,max:i,step:d,onChange:b,style:{width:"100%",height:"100%"},className:N.input,"aria-invalid":!!p,"aria-describedby":p?`${e.name}-error`:void 0})})},dt=({field:e,value:r,onChange:n,onError:o})=>{const{t}=$(),a=s.useRef(null),{definitionName:c}=$(),u=s.useCallback(f=>{const l=String(f??"").trim();if(l==="")return e.required?t("Value required"):null;if(e.pattern)try{if(!new RegExp(e.pattern).test(l))return e.patternErrorMessage?t(e.patternErrorMessage):t("Phone number does not match pattern: {{1}}",`${e.pattern}`)}catch{}return L(c,e,l,t)},[c,e,t]),i=s.useRef(null),d=s.useRef(o);s.useEffect(()=>{d.current=o},[o]),s.useEffect(()=>{const f=String(r??""),l=u(f);a.current&&a.current.value!==String(f)&&(a.current.value=String(f)),l!==i.current&&(i.current=l,d.current?.(l??null))},[r,u]);const m=f=>{const l=f.target.value,h=l.trim();let b=null;if(h===""){b=e.required?t("Value required"):null,n?.(l,b);return}b||(b=u(l)),n?.(l,b)};return g.jsx(P,{field:e,error:u(String(r??"")),children:g.jsx("input",{id:e.name,type:"tel",defaultValue:String(r??""),ref:a,onChange:m,className:B(N.input,N.textInput),"aria-invalid":!!u(String(r??"")),"aria-describedby":u(String(r??""))?`${e.name}-error`:void 0})})},pt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),c=e.layout?.toLowerCase()==="horizontal"?"row":"column",u=s.useRef(null),i=s.useRef(o);s.useEffect(()=>{i.current=o},[o]);const d=s.useCallback(f=>f===""||f===null||f===void 0?t("Value required"):!e.options||e.options.length===0?null:e.options.some(h=>h.value===f)?L(a,e,f,t)??null:t("Invalid option selected"),[e,t,a]);s.useEffect(()=>{const f=r!=null?String(r):"",l=d(f);if(i.current?.(l??null),u.current){const h=Array.from(u.current.querySelectorAll("input[type=radio]"));if(l&&e.options&&e.options.length>0){const b=String(e.options[0].value);h.forEach(p=>p.checked=p.value===b),n?.(b,null)}else h.forEach(b=>b.checked=b.value===f)}},[r,d,n,e.options]);const m=f=>{const l=f.target.value,h=d(l);i.current?.(h??null),n?.(l,h)};return g.jsx(P,{field:e,error:d(String(r??"")),children:g.jsx("div",{className:N.input,role:"radiogroup","aria-labelledby":`${e.name}-label`,"aria-invalid":!!d(String(r??"")),style:{display:"flex",flexDirection:c,flexWrap:c==="row"?"wrap":"nowrap",gap:c==="row"?"12px":"4px",alignItems:c==="row"?"center":"stretch",width:"100%",padding:c==="row"?"8px":void 0,boxSizing:"border-box"},ref:u,children:(e.options??[]).map(f=>g.jsxs("label",{className:B(N.label),style:{display:c==="column"?"flex":"inline-flex",gap:"8px",alignItems:"center",whiteSpace:"nowrap",marginBottom:c==="column"?6:0,cursor:"pointer",width:c==="column"?"100%":void 0,justifyContent:"flex-start"},children:[g.jsx("input",{type:"radio",name:e.name,value:String(f.value),defaultChecked:String(r??"")===String(f.value),onChange:m,style:{width:"1.1em",height:"1.1em"}}),g.jsx("span",{style:{userSelect:"none",textAlign:c==="column"?"left":void 0,flex:c==="column"?1:void 0,fontWeight:400},children:t(f.label)})]},String(f.value)))})})},gt={display:"flex",gap:4},ht={cursor:"pointer",fontSize:"1.5rem",lineHeight:1,display:"inline-block",marginRight:"0.25rem",userSelect:"none",transition:"color 0.12s ease"},bt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),[c,u]=s.useState(null),i=s.useRef([]),d=e.max||5,m=s.useCallback(p=>e.required&&p===0?t("Value required"):L(a,e,p,t)??null,[e,t,a]),f=s.useRef(null),l=s.useRef(o);s.useEffect(()=>{l.current=o},[o]),s.useEffect(()=>{let p=r||0;r<0&&(p=0),r>d&&(p=d);const y=m(p);y!==f.current&&(f.current=y,l.current?.(y??null))},[r,m,d]);const h=p=>{const y=m(p);n?.(p,y)},b=(()=>{let p=r||0;return p<0&&(p=0),p>d&&(p=d),p})();return g.jsx(P,{field:e,error:m(b),children:g.jsx("div",{role:"radiogroup","aria-labelledby":`${e.name}-label`,style:gt,"aria-invalid":!!m(b),"aria-describedby":m(b)?`${e.name}-error`:void 0,children:(()=>{const p=e.icon,y=p&&String(p).trim()?String(p):"★";return[...Array(d)].map((S,x)=>{const C=x<b,v=c!==null&&x<=c||C?"gold":"lightgray";return g.jsx("span",{ref:w=>i.current[x]=w,role:"radio",tabIndex:b>0?x===b-1?0:-1:x===0?0:-1,"aria-checked":C,onClick:()=>h(x+1),onKeyDown:w=>{if(w.key==="Enter"||w.key===" ")w.preventDefault(),h(x+1);else if(w.key==="ArrowRight"||w.key==="ArrowUp"){w.preventDefault();const E=Math.min(d-1,x+1);i.current[E]?.focus()}else if(w.key==="ArrowLeft"||w.key==="ArrowDown"){w.preventDefault();const E=Math.max(0,x-1);i.current[E]?.focus()}},onMouseEnter:()=>u(x),onMouseLeave:()=>u(null),style:{...ht,color:v},"aria-label":`Rating ${x+1}`,title:t(`${e.displayName} ${x+1}`),children:y},x)})})()})})},yt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),c=s.useRef(null),u=s.useRef(null),i=s.useRef(o);s.useEffect(()=>{i.current=o},[o]);const d=s.useMemo(()=>e.pattern?new RegExp(e.pattern):null,[e.pattern]),m=s.useCallback(p=>p===""?e.required?t("Value required"):null:e.minLength!==void 0&&p.length<e.minLength?t("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&p.length>e.maxLength?t("Must be at most {{1}} characters",e.maxLength):d&&!d.test(p)?e.patternErrorMessage?t(e.patternErrorMessage):t("Input does not match pattern: {{1}}",e.pattern):L(a,e,p,t),[e,a,t,d]),f=p=>{const y=p.target.value,S=m(y);n?.(y,S)};s.useEffect(()=>{const p=m(r??"");c.current&&c.current.value!==String(r??"")&&(c.current.value=String(r??"")),p!==u.current&&(u.current=p,i.current?.(p??null))},[r,m]);const[l,h]=s.useState(!1),b=()=>h(p=>!p);return g.jsx(P,{field:e,error:m(String(r??"")),children:g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,width:"100%"},children:[g.jsx("input",{id:e.name,type:l?"text":"password",defaultValue:String(r??""),ref:c,onChange:f,className:B(N.input,N.textInput),style:{flex:1,minWidth:0},"aria-invalid":!!m(String(r??"")),"aria-describedby":m(String(r??""))?`${e.name}-error`:void 0}),g.jsx("button",{type:"button",onClick:b,"aria-label":t(l?"Hide password":"Show password"),style:{background:"transparent",border:"none",cursor:"pointer",fontSize:16,lineHeight:1,padding:"4px 6px",flexShrink:0},children:l?"🙈":"👁️"})]})})},xt=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/;function vt(e){return xt.test(e)}const wt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),c=s.useRef(null),u=s.useRef(null),i=s.useCallback(b=>{let p=null;if(b.trim()==="")return t("Value required");if(!vt(b))return t("Invalid number");const y=Number(b);return typeof e.min=="number"&&y<e.min?t("Value should be at least {{1}}",e.min):typeof e.max=="number"&&y>e.max?t("Value should be at most {{1}}",e.max):(p||(p=L(a,e,y,t)),p)},[a,e,t]),d=s.useRef(null),m=s.useRef(o);s.useEffect(()=>{m.current=o},[o]),s.useEffect(()=>{const b=String(r),p=i(b);u.current&&document.activeElement!==u.current&&(u.current.value=isNaN(Number(b))?String(e.min??0):String(Number(b))),c.current&&document.activeElement!==c.current&&(c.current.value=b),p!==d.current&&(d.current=p,m.current?.(p??null))},[r,i,e.min]);const f=e.min??0,l=e.max??100,h=b=>{const p=b.target.value,y=i(p);n?.(p,y)};return g.jsx(P,{field:e,error:i(String(r??"")),children:g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",width:"100%"},children:[g.jsx("input",{ref:u,id:`${e.name}-range`,type:"range",defaultValue:isNaN(Number(r))?String(f):String(Number(r)),onChange:h,min:f,max:l,style:{padding:"0px, 0px",flex:1},className:N.rangeInput,"aria-invalid":!!i(String(r??"")),"aria-describedby":i(String(r??""))?`${e.name}-error`:void 0}),g.jsx("input",{id:e.name,ref:c,type:"text",defaultValue:String(r??""),onChange:h,required:!0,style:{width:"40px",minWidth:"40px",height:"2.3em",textAlign:"center",flexShrink:0},className:B(N.input,N.textInput),"aria-invalid":!!i(String(r??"")),"aria-describedby":i(String(r??""))?`${e.name}-error`:void 0})]})})},St=({field:e,value:r,onChange:n,onError:o})=>{const{t,formStyle:a,fieldStyle:c,definitionName:u}=$(),i=a,d=c,m=(v,w,E)=>{if(!w)return{};const k=v?.[w];return(E&&k?k[E]:void 0)??{}},f=s.useMemo(()=>({display:"inline-block",position:"relative",width:44,height:24,...m(i,"switch","label"),...m(d,void 0,"label")}),[i,d]),l=s.useMemo(()=>({position:"absolute",opacity:0,top:0,left:0,width:"100%",height:"100%",margin:0,cursor:"pointer",pointerEvents:"none",...m(i,"switch","hiddenInput"),...m(d,void 0,"hiddenInput")}),[i,d]),h=s.useMemo(()=>({position:"absolute",cursor:"pointer",top:0,left:0,right:0,bottom:0,backgroundColor:"var(--reactaform-switch-off-bg, #ccc)",transition:"0.3s",borderRadius:24,borderWidth:2,borderStyle:"solid",borderColor:"transparent",...m(i,"switch","slider"),...m(d,void 0,"slider")}),[i,d]),b=s.useMemo(()=>({position:"absolute",height:16,width:16,left:2,bottom:2,backgroundColor:"white",transition:"0.3s",borderRadius:"50%",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.3)",...m(i,"switch","knob"),...m(d,void 0,"knob")}),[i,d]),p=!!r,y=s.useRef(null),S=s.useRef(o),x=s.useCallback(v=>v?L(u,e,v,t)??null:e.required?t("Value required"):null,[e,t,u]),C=()=>{const v=!p,w=x(v);n?.(v,w)};s.useEffect(()=>{S.current=o},[o]),s.useEffect(()=>{const v=x(p);v!==y.current&&(y.current=v,S.current?.(v??null))},[p,e,x]);const R=e.name;return g.jsx(P,{field:e,error:x(p),rightAlign:!1,children:g.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[g.jsx("label",{className:N.label,htmlFor:R,style:{textAlign:"left",justifyContent:"flex-start"},children:t(e.displayName)}),g.jsxs("label",{style:f,children:[g.jsx("input",{id:e.name,type:"checkbox",checked:p,readOnly:!0,"aria-label":t(e.displayName),"aria-invalid":!!x(p),"aria-describedby":x(p)?`${e.name}-error`:void 0,style:l,tabIndex:-1}),g.jsx("span",{role:"switch","data-testid":"switch",tabIndex:0,"aria-checked":p,"aria-invalid":!!x(p),"aria-describedby":x(p)?`${e.name}-error`:void 0,onClick:C,onKeyDown:v=>{(v.key===" "||v.key==="Spacebar"||v.key==="Space"||v.key==="Enter")&&(v.preventDefault(),C())},className:`reactaform-switch ${p?"active checked on":""} `,style:p?{...h,backgroundColor:"var(--reactaform-switch-on-bg, #22c55e)",borderColor:"var(--reactaform-switch-on-border, #16a34a)"}:h,children:g.jsx("span",{style:{...b,transform:p?"translateX(20px)":void 0}})})]})]})})},qe=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),c=s.useRef(null),u=s.useRef(null),i=s.useRef(o);s.useEffect(()=>{i.current=o},[o]);const d=s.useMemo(()=>e.pattern?new RegExp(e.pattern):null,[e.pattern]),m=s.useCallback(l=>l.trim()===""?e.required?t("Value required"):null:e.minLength!==void 0&&l.length<e.minLength?t("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&l.length>e.maxLength?t("Must be at most {{1}} characters",e.maxLength):d&&!d.test(l)?e.patternErrorMessage?t(e.patternErrorMessage):t("Input does not match pattern: {{1}}",e.pattern):L(a,e,l,t),[e,a,t,d]),f=l=>{const h=l.target.value,b=m(h);n?.(h,b)};return s.useEffect(()=>{const l=m(r);c.current&&c.current.value!==String(r??"")&&(c.current.value=String(r??"")),l!==u.current&&(u.current=l,i.current?.(l??null))},[r,m]),g.jsx(P,{field:e,error:m(String(r??"")),children:g.jsx("input",{id:e.name,"aria-invalid":!!m(String(r??"")),"aria-describedby":m(String(r??""))?`${e.name}-error`:void 0,type:"text",defaultValue:String(r??""),ref:c,onChange:f,className:B(N.input,N.textInput)})})},Ct=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),c=s.useRef(null),u=s.useRef(o),i=e.includeSeconds??!0;s.useEffect(()=>{u.current=o},[o]);const d=s.useCallback(f=>{if(!f||f.trim()==="")return e.required||e.min||e.max?t("Value required"):null;const l=p=>{const y=p.split(":").map(x=>parseInt(x,10));if(y.some(x=>Number.isNaN(x)))return NaN;let S=0;if(y.length===3)S=y[0]*3600+y[1]*60+y[2];else if(y.length===2)S=y[0]*3600+y[1]*60;else if(y.length===1)S=y[0]*3600;else return NaN;return S},h=l(f);if(Number.isNaN(h))return t("Invalid time format");if(e.min&&typeof e.min=="string"){const p=l(e.min);if(!Number.isNaN(p)&&h<p)return t("Time must be on or after {{1}}",e.min)}if(e.max&&typeof e.max=="string"){const p=l(e.max);if(!Number.isNaN(p)&&h>p)return t("Time must be on or before {{1}}",e.max)}return L(a,e,f,t)??null},[e,a,t]),m=f=>{const l=f.target.value,h=d(l);n?.(l,h)};return s.useEffect(()=>{const f=d(r);f!==c.current&&(c.current=f,u.current?.(f??null))},[r,d]),g.jsx(P,{field:e,error:d(r),children:g.jsx("input",{id:e.name,type:"time",value:r,step:i?1:60,onChange:m,min:typeof e.min=="string"?e.min:void 0,max:typeof e.max=="string"?e.max:void 0,className:B(N.input,N.textInput),"aria-invalid":!!d(r),"aria-describedby":d(r)?`${e.name}-error`:void 0})})};function jt({pos:e,options:r,onClose:n,onClickOption:o}){const t=s.useRef(null),a=s.useRef(!1),c=typeof window<"u"?document.getElementById("popup-root")||document.body:null;if(s.useEffect(()=>{function h(b){a.current||b.target.dataset?.popupMenu==="item"||t.current&&b.target instanceof Node&&!t.current.contains(b.target)&&n()}return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[n]),!c||r===void 0||r.length===0||!e||e.x==null||e.y==null)return null;const u=e.x,i=e.y,d=typeof window<"u"?window.innerWidth:1024,m=Math.max(0,d-160),f=Math.max(0,Math.min(u,m)),l=Math.max(0,i);return Ce.createPortal(g.jsx("div",{ref:t,onMouseDown:h=>{h.stopPropagation()},style:{position:"fixed",top:l,left:f,backgroundColor:"var(--reactaform-primary-bg, #fff)",border:"1px solid var(--reactaform-border-color, #ccc)",borderRadius:"var(--reactaform-border-radius, 4px)",boxShadow:"var(--reactaform-shadow, 0 2px 10px rgba(0,0,0,0.2))",zIndex:9999,minWidth:"var(--reactaform-menu-min-width, 150px)",pointerEvents:"auto"},children:r.map((h,b)=>g.jsx("div",{"data-popup-menu":"item",onMouseDown:p=>{p.stopPropagation(),a.current=!0},onClick:p=>{p.stopPropagation(),p.preventDefault(),o(h),n(),setTimeout(()=>{a.current=!1},100)},style:{padding:"var(--reactaform-menu-item-padding, 8px 12px)",cursor:"pointer",fontSize:"var(--reactaform-menu-item-font-size, 0.8em)",borderBottom:b<r.length-1?"1px solid var(--reactaform-border-light, #eee)":void 0,transition:"background-color 0.15s ease"},onMouseEnter:p=>{p.currentTarget.style.backgroundColor="var(--reactaform-hover-bg, #e0e0e0)"},onMouseLeave:p=>{p.currentTarget.style.backgroundColor="transparent"},children:h.label},h.label??b))}),c)}const ae={};function Rt(e,r){if(e in ae)return;const n=Fe[e]??{},o={},t={},a={};for(const[u,i]of Object.entries(n))typeof i.factor=="number"&&(o[u]=i.factor),t[u]=r(u),a[r(u)]=u;const c=Object.keys(n)[0]??"";ae[e]={default:c,factors:o,labels:t,reverseLabels:a}}function Et(e,r,n){if(e==="C"){if(r==="F")return n*(9/5)+32;if(r==="K")return n+273.15}else if(e==="F"){if(r==="C")return(n-32)*5/9;if(r==="K")return(n-32)*5/9+273.15}else if(e==="K"){if(r==="C")return n-273.15;if(r==="F")return(n-273.15)*9/5+32}return n}function kt(e,r,n){if(!Number.isFinite(e))return[];if(n===ae.temperature)return Object.keys(n.labels).map(a=>{const c=Et(r,a,e);return Number.isFinite(c)?{label:`${c.toFixed(6)} ${a}`,value:c.toString(),unit:a}:{label:`${String(c)} ${a}`,value:String(c),unit:a}});const t=n.factors[r];return t===void 0?[]:Object.entries(n.factors).map(([a,c])=>{const u=e/t*c;return Number.isFinite(u)?{label:`${u.toFixed(6)} ${a}`,value:u.toString(),unit:a}:{label:`${String(u)} ${a}`,value:String(u),unit:a}})}function ue(e,r){return e in r.labels?e:r.reverseLabels&&r.reverseLabels[e]?r.reverseLabels[e]:null}const Nt=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/,It=({unitFactors:e,field:r,value:n,onChange:o,onError:t})=>{const{t:a,definitionName:c}=$(),u=s.useRef(null),i=s.useRef(null),d=s.useRef(null),[m,f]=s.useState(null),[l,h]=s.useState(null),[b,p]=s.useState(!1),[y,S]=s.useState(null),[x,C]=s.useState([]),R=s.useCallback((V,F)=>{if(!V||V.trim()==="")return r.required?a("Value required"):null;if(!Nt.test(V))return a("Must be a valid number");const D=L(c,r,[V,F],a);return D||null},[c,r,a]),v=e.reverseLabels!==void 0?e.reverseLabels:Object.fromEntries(Object.entries(e.labels).map(([V,F])=>[F,V]));s.useEffect(()=>{const V=String(n[0]);let F=n[1]??e.default;F=ue(F,e)||F;const D=document.activeElement;D===u.current||D===i.current||(u.current&&(u.current.value=V),i.current&&(i.current.value=F),d.current!==null&&(cancelAnimationFrame(d.current),d.current=null),d.current=requestAnimationFrame(()=>{d.current=null,f(null),h(null)}))},[n,e]),s.useEffect(()=>()=>{d.current!==null&&(cancelAnimationFrame(d.current),d.current=null)},[]);const w=s.useRef(null),E=s.useRef(t);s.useEffect(()=>{E.current=t},[t]),s.useEffect(()=>{const V=String(n[0]);let F=n[1]??e.default;F=ue(F,e)||F;const D=R(V,F);D!==w.current&&(w.current=D,E.current?.(D??null))},[n,e,R]);const k=(V,F,D)=>{const U=v[F]||F;o?.([V,U],D)},j=V=>{const F=V.target.value,D=i.current?i.current.value:e.default,U=R(F,D);f(F),k(F,D,U)},I=V=>{const F=V.target.value,D=u.current?u.current.value:String(n[0]??""),U=R(D,F);h(F),i.current&&(i.current.value=F),k(D,F,U)},M=V=>{const F=u.current?u.current.value:String(n[0]??""),D=parseFloat(F),U=i.current?i.current.value:e.default;if(R(F,U)||!F.trim()||!Number.isFinite(D))return;const ie=V.currentTarget.getBoundingClientRect(),fe=ie.left,Z=ie.bottom;S({x:fe,y:Z});const A=kt(D,U,e);if(A.length===0){C([]),p(!1);return}C(A),p(O=>!O)},z=V=>{const{value:F,unit:D}=V;p(!1),S(null),u.current&&(u.current.value=F),i.current&&(i.current.value=D),f(F),h(D);const U=R(F,D);k(F,D,U)},T=String(n[0]??""),ee=ue(n[1]??e.default,e)||(n[1]??e.default),re=m??T,G=!!R(re,l??ee)||!re.trim(),se={width:"var(--reactaform-unit-btn-width, 2.5em)",height:"var(--reactaform-unit-btn-height, 2.5em)",padding:"var(--reactaform-unit-btn-padding, 0)",border:"none",borderRadius:"var(--reactaform-button-border-radius, var(--reactaform-border-radius, 0.25em))",backgroundColor:G?"var(--reactaform-button-disabled-bg, #cccccc)":"var(--reactaform-button-bg, var(--reactaform-success-color))",color:"var(--reactaform-button-text, #ffffff)",cursor:G?"var(--reactaform-button-disabled-cursor, not-allowed)":"pointer",opacity:G?+"var(--reactaform-button-disabled-opacity, 0.6)":1,display:"flex",alignItems:"center",justifyContent:"center"},J=R(T,ee);return g.jsx(P,{field:r,error:J,children:g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--reactaform-unit-gap, 8px)",width:"100%"},children:[g.jsx("input",{id:r.name,type:"text",ref:u,defaultValue:String(n[0]??""),onChange:j,style:{width:"var(--reactaform-unit-input-width, 100px)"},className:B(N.input,N.textInput),"aria-invalid":!!J,"aria-describedby":J?`${r.name}-error`:void 0}),g.jsx("select",{id:`${r.name}-unit`,ref:i,defaultValue:ue(n[1]??e.default,e)||(n[1]??e.default),onChange:I,className:B(N.input,N.inputSelect),"aria-invalid":!!J,"aria-describedby":J?`${r.name}-error`:void 0,children:Object.keys(e.labels).map(V=>g.jsx("option",{value:V,children:e.labels[V]??V},V))}),g.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[g.jsx("button",{onClick:M,"aria-disabled":G,disabled:G,style:se,className:N.button,children:g.jsx("span",{style:{fontSize:"var(--reactaform-unit-btn-icon-size, 1em)",lineHeight:"1",transform:"translateY(-1px)",pointerEvents:"none"},children:"⟷"})}),b&&x&&g.jsx(jt,{pos:y,options:x,onClose:()=>{S(null),p(!1)},onClickOption:z})]})]})})};function Ft({field:e,value:r,onChange:n}){const{t:o}=$(),t=e.dimension;if(!t)return null;ae[t]||Rt(t,o);const a=ae[t];return a?g.jsx(It,{unitFactors:a,field:e,value:r,onChange:n}):null}const Pe=/^(https?|ftp|file):\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]$/i,Te=e=>{try{return new URL(e),!0}catch{return!1}},Mt=({field:e,value:r,onChange:n,onError:o})=>{const{t,definitionName:a}=$(),c=s.useRef(null),u=s.useCallback(f=>{const l=f.trim();if(l==="")return e.required?t("Value required"):null;if(!Pe.test(l)&&!Te(l)){const b=e.allowRelative===!0;let p=!1;if(Pe.test(l)||Te(l))p=!0;else if(b)try{new URL(l,"http://example.com"),p=!0}catch{p=!1}if(!p)return t("Must be a valid URL")}return L(a,e,l,t)??null},[a,e,t]),i=f=>{const l=f.target.value,h=u(l);n?.(l.trim(),h)},d=s.useRef(null),m=s.useRef(o);return s.useEffect(()=>{m.current=o},[o]),s.useEffect(()=>{const f=r??"",l=u(f);c.current&&c.current.value!==String(f)&&(c.current.value=String(f)),l!==d.current&&(d.current=l,m.current?.(l??null))},[r,u]),g.jsx(P,{field:e,error:u(String(r??"")),children:g.jsx("input",{id:e.name,type:"url",defaultValue:String(r??""),ref:c,onChange:i,style:{alignItems:"left"},className:B(N.input,N.textInput),placeholder:"https://example.com","aria-invalid":!!u(String(r??"")),"aria-describedby":u(String(r??""))?`${e.name}-error`:void 0})})},Se=new le,$t=new Set(["checkbox","switch","dropdown","radio","multi-selection","slider","stepper","color","rating"]),tr={checkbox:Pr,color:Br,date:Ur,dropdown:Wr,email:Kr,file:Gr,float:tt,"float-array":Qr,image:ot,int:ct,"int-array":st,"multi-selection":lt,multiline:ut,password:yt,phone:dt,radio:pt,rating:bt,separator:Jr,slider:wt,string:qe,stepper:ft,switch:St,text:qe,time:Ct,unit:Ft,url:Mt};function nr(e,r,n){const o=r;if(!n&&e in tr){console.warn(`Can't Overwrite Base Component type "${e}".`);return}if($t.has(e)){Se.register(e,o);return}const t=a=>{const{callback:u,cancel:i}=Ue((...d)=>{const m=a.onChange;typeof m=="function"&&m(...d)},200);return s.useEffect(()=>()=>{i()},[i]),s.createElement(o,{...a,onChange:u})};Se.register(e,t)}function At(e,r){nr(e,r,!1)}function or(e){return Se.get(e)}let Be=!1;function ar(){Be||(Object.entries(tr).forEach(([e,r])=>{nr(e,r,!0)}),Be=!0)}const sr=new le;function ir(e,r){sr.register(e,r)}function Vt(e){return sr.get(e)}ir("Preset_AlertSubmitHandler",(e,r,n)=>{const o={name:r||"Unnamed Instance",version:e.version,definition:e.name,values:n},t=JSON.stringify(o,null,2);alert(t)});const cr=s.memo(({field:e,value:r,handleChange:n,handleError:o})=>{const t=or(e.type),a=s.useCallback((u,i)=>n(e.name,u,i),[n,e.name]),c=s.useCallback(u=>o?.(e.name,u),[o,e.name]);return t?g.jsx(t,{field:e,value:r,onChange:a,onError:c}):null},(e,r)=>e.field===r.field&&e.value===r.value&&e.handleChange===r.handleChange&&e.handleError===r.handleError);cr.displayName="FieldWrapper";const ur=(e,r,n,o)=>g.jsx(cr,{field:e,value:r[e.name],handleChange:n,handleError:o},e.name),lr=s.memo(({groupName:e,isOpen:r,fields:n,valuesMap:o,handleChange:t,handleError:a,toggleGroup:c,t:u})=>{const i=s.useCallback(()=>c(e),[c,e]),{formStyle:d,fieldStyle:m}=$(),f=s.useMemo(()=>({border:"1px solid var(--reactaform-border-color, #bbb)",padding:"var(--reactaform-fieldset-padding, 0.5em)",borderRadius:"var(--reactaform-border-radius, 4px)",marginBottom:"var(--reactaform-space, 8px)",...d?.fieldset||{},...m?.fieldset||{}}),[d,m]),l=s.useMemo(()=>({fontWeight:"bold",cursor:"pointer",display:"flex",justifyContent:"space-between",alignItems:"center",padding:"0 var(--reactaform-space, 8px)",color:"var(--reactaform-text-color, inherit)",...d?.legend||{},...m?.legend||{}}),[d,m]);return g.jsxs("fieldset",{style:f,children:[g.jsxs("legend",{onClick:i,style:l,children:[g.jsx("span",{children:u(e)}),g.jsx("span",{children:r?"▼":"▶"})]}),r&&n.map(h=>g.jsx("div",{children:ur(h,o,t,a)},h.name))]})});lr.displayName="FieldGroup";const Dt=(e,r,n,o,t,a,c,u,i)=>{const d=r.slice(0,u).filter(h=>c[h.name]),f=$r(d).groups,l=[];return f.forEach(h=>{if(h.name){const b=e[h.name]??!0;l.push(g.jsx(lr,{groupName:h.name,isOpen:b,fields:h.fields,valuesMap:n,handleChange:t,handleError:a,toggleGroup:i,t:o},h.name))}else h.fields.forEach(b=>l.push(g.jsx("div",{children:ur(b,n,t,a)},b.name)))}),l},zt=e=>{const r={};return e.forEach(n=>{r[n.name]=!1}),r},Me=(e,r,n,o)=>{const t=r[e];if(!t?.children)return;const a=n[e],c=a!=null?String(a):"";(t.children[c]||[]).forEach(i=>{o[i]=!0,Me(i,r,n,o)})},mr=(e,r,n)=>{const o=r[e];o?.children&&Object.values(o.children).flat().forEach(t=>{n[t]=!1,mr(t,r,n)})},Lt=(e,r,n,o)=>{const t={...n};return e.forEach(a=>{(!a.parents||Object.keys(a.parents).length===0)&&(t[a.name]=!0,Me(a.name,o,r,t))}),t},Ot=(e,r,n,o,t)=>{const a={...e};if(mr(o,r,a),t!=null){const c=r[o];if(c?.children){const u=String(t);(c.children[u]||[]).forEach(d=>{a[d]=!0,Me(d,r,n,a)})}}return a};async function qt(e,r,n,o,t){const a=Object.values(t).filter(Boolean);if(a.length>0)return{success:!1,message:o("Please fix validation errors before submitting."),errors:a};const c={...n},u=[];if(e&&Array.isArray(e.properties))for(const d of e.properties){const m=d.name,f=c[m];if(f==null)continue;const l=d.type;try{if(l==="int"||l==="number"||l==="float"){const h=Number(String(f).trim());isNaN(h)?u.push(o(`Invalid number format for field ${d.displayName||m}`)):c[m]=h}else if(l==="int-array"||l==="float-array"){const b=String(f).split(",").map(p=>p.trim()).filter(Boolean).map(p=>{const y=Number(p);return isNaN(y)?(u.push(o(`Invalid number "${p}" in array for field ${d.displayName||m}`)),0):y});u.length===0&&(c[m]=b)}}catch(h){u.push(o(`Error processing field ${d.displayName||m}: ${h}`))}}if(u.length>0)return{success:!1,message:o("Data transformation errors occurred."),errors:u};const i=await Xe(e,c,o);if(i&&i.length>0)return{success:!1,message:"Validation Fail",errors:i};if(e&&typeof e.submitHandlerName=="string"){const d=Vt(e.submitHandlerName);if(d)try{const m=await d(e,r?.name??null,c,o);if(m&&m.length>0)return{success:!1,message:o("Submission failed."),errors:Array.isArray(m)?m:[m]}}catch(m){return{success:!1,message:o("Submission handler error occurred."),errors:[String(m)]}}}return{success:!0,message:o("Form submitted successfully."),data:c}}const fr=({definition:e,instance:r,chunkSize:n=50,chunkDelay:o=50})=>{const{properties:t,displayName:a}=e,c=$(),{t:u,formStyle:i,language:d}=c,m={...c,definitionName:e?.name??c.definitionName},[f,l]=s.useState("en"),[h,b]=s.useState([]),[p,y]=s.useState({}),[S,x]=s.useState({}),[C,R]=s.useState({}),[v,w]=s.useState({}),[E,k]=s.useState({}),[j,I]=s.useState(null),[M,z]=s.useState(null),[T,ee]=s.useState(0),[re,$e]=s.useState(!1),[G,se]=s.useState(!1),[J,V]=s.useState(r.name||""),F=s.useRef(r),D=s.useRef(!1);s.useEffect(()=>{const A=Object.fromEntries(t.map(q=>[q.name,{...q,children:{}}]));t.forEach(q=>{q.parents&&Object.entries(q.parents).forEach(([te,de])=>{const ne=A[te];ne&&de.forEach(gr=>{ne.children||(ne.children={});const Ae=String(gr);ne.children[Ae]=[...ne.children[Ae]||[],q.name]})})}),Mr(t,A);const O=Object.values(A),H={};O.forEach(q=>{if(q.type==="unit"){const te=typeof q.defaultValue=="number"?String(q.defaultValue):"",de=typeof q.defaultUnit=="string"?q.defaultUnit:String(q.defaultUnit??"m");H[q.name]=[te,de]}else H[q.name]=q.defaultValue}),F.current=r,Object.keys(r.values).forEach(q=>{A[q]!==void 0&&(H[q]=r.values[q])});const _=zt(O),K={};O.forEach(q=>{q.group&&!(q.group in K)&&(K[q.group]=!0)});const Q=requestAnimationFrame(()=>{b(O),y(A),x(H),R(Lt(O,H,_,A)),w(K),$e(!0),V(r.name)});return()=>cancelAnimationFrame(Q)},[t,r,e]),s.useEffect(()=>{if(!re||T>=h.length)return;const A=setTimeout(()=>{ee(O=>Math.min(O+n,h.length))},o);return()=>clearTimeout(A)},[re,T,h.length,n,o]);const U=s.useCallback((A,O,H)=>{I(null),z(null),x(_=>{const K={..._,[A]:O},Q=p[A];return Q&&["checkbox","dropdown","multi-select","radio","switch"].includes(Q.type)&&R(te=>Ot(te,p,K,A,String(O))),K}),k(_=>H?{..._,[A]:H}:Object.fromEntries(Object.entries(_).filter(([Q])=>Q!==A)))},[p,I,z]);s.useEffect(()=>{let A=0;return A=requestAnimationFrame(()=>{d!==f&&(l(d||"en"),I(null),z(null))}),()=>cancelAnimationFrame(A)},[d,f]),s.useEffect(()=>{let A=0;return A=requestAnimationFrame(()=>{if(D.current){D.current=!1,F.current=r,V(r.name||"");return}F.current=r,I(null),z(null),V(r.name||"")}),()=>cancelAnimationFrame(A)},[r,r.name]);const me=s.useCallback((A,O)=>{k(H=>O?{...H,[A]:String(O)}:Object.fromEntries(Object.entries(H).filter(([K])=>K!==A)))},[]),ie=async()=>{D.current=!0;const A=F.current?.name;F.current.name=J;const O=await qt(e,F.current,S,u,E),H=typeof O.message=="string"?O.message:String(O.message),_=Object.values(O.errors??{}).join(`
|
|
288
|
+
`);I(_?H+`
|
|
289
|
+
`+_:H),z(O.success),O.success||(F.current.name=A??F.current.name,V(A??""))},fe=A=>{w(O=>({...O,[A]:!O[A]}))},Z=s.useMemo(()=>Object.values(E).some(Boolean),[E]);return g.jsx(je.Provider,{value:m,children:g.jsxs("div",{style:i.container,children:[a&&g.jsx("h2",{style:i.titleStyle,children:u(a)}),j&&g.jsxs("div",{role:"status",style:{marginBottom:12,padding:12,borderRadius:6,backgroundColor:M?"rgba(76, 175, 80, 0.12)":"rgba(225, 29, 72, 0.06)",border:`1px solid ${M?"rgba(76,175,80,0.3)":"rgba(225,29,72,0.12)"}`,color:M?"var(--reactaform-success-color, #4CAF50)":"var(--reactaform-error-color, #e11d48)",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[g.jsx("div",{style:{whiteSpace:"pre-wrap",flex:1},children:j}),g.jsx("button",{onClick:()=>{I(null),z(null)},"aria-label":u("Dismiss"),style:{marginLeft:12,background:"transparent",border:"none",cursor:"pointer",color:"inherit",fontSize:16,lineHeight:1},children:"×"})]}),r&&g.jsx(Ke,{name:J,onChange:A=>{V(A),I(null),z(null)}}),g.jsxs(g.Fragment,{children:[Dt(v,h,S,u,U,me,C,T,fe),T<h.length&&g.jsx("div",{style:{fontSize:"0.9em",color:"var(--reactaform-text-muted, #666)"}})]}),g.jsx("button",{onClick:ie,disabled:Z,onMouseEnter:()=>se(!0),onMouseLeave:()=>se(!1),style:{padding:"var(--reactaform-button-padding, var(--reactaform-space) 12px)",backgroundColor:Z?"var(--reactaform-button-disabled-bg, #cccccc)":"var(--reactaform-button-bg, var(--reactaform-success-color))",color:"var(--reactaform-button-text, #ffffff)",border:"none",borderRadius:"4px",cursor:Z?"var(--reactaform-button-disabled-cursor, not-allowed)":"pointer",fontSize:"var(--reactaform-button-font-size, 14px)",fontWeight:"var(--reactaform-button-font-weight, 500)",boxShadow:"var(--reactaform-button-shadow, none)",marginTop:"var(--reactaform-button-margin-top, 0.5em)",transition:"opacity 0.2s ease",opacity:Z?"var(--reactaform-button-disabled-opacity, 0.6)":G?"var(--reactaform-button-hover-opacity, 0.9)":"1"},children:u("Submit")})]})})};ar();const Pt=(e,r=!1)=>({container:{padding:"var(--reactaform-space-sm, 8px)",margin:"0 auto",backgroundColor:"transparent",borderRadius:0,color:"var(--reactaform-color-text)",fontFamily:e?.fontFamily||"var(--reactaform-font-family, system-ui, -apple-system, sans-serif)",boxSizing:"border-box",minHeight:e?.minHeight??"0",...e?.width?{width:e.width,overflowX:"auto"}:{maxWidth:"100%"},...e?.height?{height:e.height,overflowY:"auto"}:{}},buttonStyle:{padding:"var(--reactaform-space-sm, 8px) var(--reactaform-space-md, 16px)",backgroundColor:"var(--reactaform-color-primary)",color:"var(--reactaform-color-background)",border:"1px solid var(--reactaform-color-primary)",borderRadius:"var(--reactaform-border-radius, 6px)",cursor:"pointer",fontSize:e?.fontSize||"1rem",fontWeight:"600",transition:"all 0.2s ease",boxShadow:"var(--reactaform-shadow-small, 0 1px 3px rgba(0, 0, 0, 0.12))"},titleStyle:{marginBottom:"var(--reactaform-space-lg, 24px)",color:"var(--reactaform-color-text)",fontSize:typeof e?.fontSize=="number"?`${e.fontSize*1.5}px`:"1.5rem",fontWeight:"700",lineHeight:"1.2",textAlign:"left"}}),Tt=(e,r=!1)=>{const n={color:"var(--reactaform-color-text)",fontFamily:e?.fontFamily||"var(--reactaform-font-family, inherit)",transition:"all 0.2s ease",outline:"none",width:"100%",boxSizing:"border-box"};return{container:{fontFamily:e?.fontFamily||"var(--reactaform-font-family, inherit)",fontSize:e?.fontSize||"var(--reactaform-font-size, 1rem)",width:"100%",maxWidth:e?.width||"100%",marginBottom:"var(--reactaform-space-md, 16px)"},label:{display:"block",marginBottom:"var(--reactaform-space-xs, 4px)",fontWeight:"500",color:"var(--reactaform-color-text)",fontSize:"var(--reactaform-font-size, 1rem)",fontFamily:e?.fontFamily||"var(--reactaform-font-family, inherit)"},input:n,textInput:n,optionInput:n,select:{...n,cursor:"pointer",backgroundRepeat:"no-repeat",backgroundPosition:"right 8px center",backgroundSize:"16px",paddingRight:"32px",backgroundImage:`url("data:image/svg+xml;utf8,<svg
|
|
295
290
|
xmlns='http://www.w3.org/2000/svg'
|
|
296
291
|
viewBox='0 0 24 24'
|
|
297
292
|
fill='none'
|
|
@@ -300,4 +295,4 @@ React keys must be passed directly to JSX without using spread:
|
|
|
300
295
|
stroke-linecap='round'
|
|
301
296
|
stroke-linejoin='round'>
|
|
302
297
|
<polyline points='6,9 12,15 18,9'/>
|
|
303
|
-
</svg>")`},textarea:{...n,minHeight:"80px",resize:"vertical",paddingTop:"var(--reactaform-space-sm, 8px)"},error:{color:"var(--reactaform-color-error)",fontSize:"0.875rem",marginTop:"var(--reactaform-space-xs, 4px)",display:"block"}}},
|
|
298
|
+
</svg>")`},textarea:{...n,minHeight:"80px",resize:"vertical",paddingTop:"var(--reactaform-space-sm, 8px)"},error:{color:"var(--reactaform-color-error)",fontSize:"0.875rem",marginTop:"var(--reactaform-space-xs, 4px)",display:"block"}}},dr=({children:e,definitionName:r="",defaultStyle:n,defaultLanguage:o="en",defaultDarkMode:t=!1,defaultLocalizeName:a="",className:c="reactaform-container"})=>{const u=r,i=a,d=t,m=o,f=s.useMemo(()=>n??{},[n]),[l,h]=s.useState({}),[b,p]=s.useState({}),[y,S]=s.useState({}),[x,C]=s.useState({});s.useEffect(()=>{let k=!0;return(async()=>{if(m==="en"){k&&(h({}),p({}));return}try{const I=await Vr(m),M=I.success?I.translations:{};k&&h(M);const z=await Dr(m,i),T=z.success?z.translations:{};k&&p(T)}catch{k&&(h({}),p({}))}})(),()=>{k=!1}},[m,i]),s.useEffect(()=>{C(Pt(f,d)),S(Tt(f,d))},[f,d]);const R=s.useMemo(()=>Lr(m,l,b),[m,l,b]),v=s.useCallback((k,...j)=>R(k,...j),[R]),w=s.useMemo(()=>({definitionName:u,language:m,darkMode:d,formStyle:x,fieldStyle:y,t:v}),[u,m,d,y,x,v]),E=f?.height?{height:"100%"}:void 0;return g.jsx(je.Provider,{value:w,children:g.jsx("div",{"data-reactaform-theme":d?"dark":"light",className:c,style:E,children:e})})};function Bt(e){if(!e||typeof e!="object")return"Definition must be an object";const r=e;if(!r.name||typeof r.name!="string")return"Definition must include a 'name' string";if(!r.version||typeof r.version!="string")return"Definition must include a 'version' string";if(r.properties!==void 0&&!Array.isArray(r.properties))return"'properties' must be an array if provided";if(Array.isArray(r.properties))for(let n=0;n<r.properties.length;n++){const o=r.properties[n];if(!o||typeof o!="object")return`Property at index ${n} must be an object`;if(!o.name||typeof o.name!="string")return`Property at index ${n} must have a string 'name'`;if(!o.type||typeof o.type!="string")return`Property '${o.name}' must have a string 'type'`}return null}async function Ht(e,r={}){const{validateSchema:n=!0}=r;try{if(!e||typeof e!="string")return{success:!1,error:"jsonData must be a non-empty JSON string"};const o=e.trim();if(!o)return{success:!1,error:"jsonData is empty"};let t;try{t=JSON.parse(o)}catch(a){return{success:!1,error:`Invalid JSON format: ${a instanceof Error?a.message:"Unknown parsing error"}`}}if(n){const a=Bt(t);if(a)return{success:!1,error:`Schema validation failed: ${a}`}}return{success:!0,definition:t}}catch(o){return{success:!1,error:`Unexpected error loading definition: ${o instanceof Error?o.message:"Unknown error"}`}}}function pr(e,r){try{if(!e)return{success:!1,error:"Definition is required"};if(!r||typeof r!="string")return{success:!1,error:"Instance name is required"};const n={name:r,definition:e.name??"unknown",version:e.version??"1.0.0",values:{}},o=e.properties||[];return Array.isArray(o)&&o.forEach(t=>{const a=t;a.defaultValue!==void 0&&(n.values[a.name]=a.defaultValue)}),{success:!0,instance:n}}catch(n){return{success:!1,error:`Error creating instance: ${n instanceof Error?n.message:"Unknown error"}`}}}function Ut(e){try{if(!e)return{success:!1,error:"Instance data is required"};let r;if(typeof e=="string")try{r=JSON.parse(e)}catch(n){return{success:!1,error:`Invalid JSON format: ${n instanceof Error?n.message:"Unknown parsing error"}`}}else r=e;return typeof r!="object"||r===null?{success:!1,error:"Instance must be a valid object"}:{success:!0,instance:r}}catch(r){return{success:!1,error:`Error loading instance: ${r instanceof Error?r.message:"Unknown error"}`}}}function Wt(e,r,n){try{if(!e)return{success:!1,error:"Instance is required"};if(!r)return{success:!1,error:"Latest definition is required"};if(e.definition===r.name&&e.version===r.version)return{success:!0,upgradedInstance:e};const o={name:e.name||r.name+"-instance",definition:r.name,version:r.version,values:{}},t=o.values,a={};(r.properties||[]).forEach(i=>{a[i.name]=i});const c=(i,d,m)=>{if(i==null)return i;const f=d.toLowerCase();try{if(f==="string")return String(i);if(f==="int"||f==="integer"||f==="number"||f==="float"){if(typeof i=="number")return i;if(typeof i=="boolean")return i?1:0;if(typeof i=="string"){const l=Number(i.trim());return Number.isNaN(l)?0:l}return 0}if(f==="boolean"||f==="bool")return typeof i=="boolean"?i:typeof i=="number"?i!==0:typeof i=="string"?["true","1","yes"].includes(i.toLowerCase()):!!i;if(f==="unit"){if(Array.isArray(i)&&i.length>=1)return i;if(typeof i=="number")return[i,m&&m.defaultUnit||""];if(typeof i=="string"){const l=Number(i);return Number.isNaN(l)?[0,m&&m.defaultUnit||""]:[l,m&&m.defaultUnit||""]}return i}if(f.endsWith("[]")||f==="array")return Array.isArray(i)?i:typeof i=="string"?i.split(",").map(l=>l.trim()).filter(Boolean):[i]}catch{}return i},u=e.values||{};Object.keys(u).forEach(i=>{const d=u[i],m=a[i];if(!m)return;const f=Array.isArray(d)?"array":d===null?"null":typeof d,l=(m.type||"").toLowerCase();f===l||l==="string"&&typeof d=="string"?t[i]=d:t[i]=c(d,l,m)}),(r.properties||[]).forEach(i=>{const d=i.name;d in t||(t[d]=i.defaultValue)});try{typeof n=="function"&&n?.(e,o,r)}catch(i){return{success:!1,error:`Upgrade callback error: ${i instanceof Error?i.message:String(i)}`}}return{success:!0,upgradedInstance:o}}catch(o){return{success:!1,error:`Error upgrading instance: ${o instanceof Error?o.message:"Unknown error"}`}}}ar();function _t(e){const[r,n]=s.useState(null);return s.useEffect(()=>{const o=document.querySelector("[data-reactaform-theme]");if(!o)return;const t=o.closest("[data-reactaform-theme]");if(!t)return;const a=()=>n(t.getAttribute("data-reactaform-theme"));a();const c=new MutationObserver(u=>{for(const i of u)i.type==="attributes"&&i.attributeName==="data-reactaform-theme"&&a()});return c.observe(t,{attributes:!0,attributeFilter:["data-reactaform-theme"]}),()=>c.disconnect()},[e]),r}const Kt=({definitionData:e,instance:r,language:n,className:o,darkMode:t,style:a})=>{const c=s.useMemo(()=>{try{return typeof e=="string"?JSON.parse(e):e??null}catch{return null}},[e]),u={fontSize:"inherit",fontFamily:"inherit",...a},i=_t(),d=t??i==="dark",m=n??"en";if(s.useEffect(()=>{let l=document.getElementById("popup-root");l||(l=document.createElement("div"),l.id="popup-root",document.body.appendChild(l))},[]),!c)return g.jsx("div",{style:{color:"red"},children:"Error: No form definition provided."});let f=r;if(!f){const l=pr(c,c.name);if(!l.success||!l.instance)return g.jsx("div",{style:{color:"red"},children:"Error: Failed to create instance from definition."});f=l.instance}return g.jsx(dr,{definitionName:c.name,defaultStyle:u,defaultLanguage:m,defaultDarkMode:d,defaultLocalizeName:c.localization||"",className:o,children:g.jsx(fr,{definition:c,instance:f})})};function Jt(){if(!(typeof document>"u")&&!document.getElementById("reactaform-styles"))try{const e=document.createElement("style");e.id="reactaform-styles",e.textContent=br,document.head.appendChild(e)}catch{}}Jt();exports.CSS_CLASSES=N;exports.ReactaForm=Kt;exports.ReactaFormProvider=dr;exports.ReactaFormRenderer=fr;exports.StandardFieldLayout=P;exports.Units=qr;exports.combineClasses=B;exports.createInstanceFromDefinition=pr;exports.deserializeDefinition=Nr;exports.deserializeInstance=Rr;exports.getComponent=or;exports.loadInstance=Ut;exports.loadJsonDefinition=Ht;exports.registerComponent=At;exports.registerFieldValidationHandler=vr;exports.registerFormValidationHandler=xr;exports.registerSubmissionHandler=ir;exports.serializeDefinition=kr;exports.serializeInstance=Cr;exports.upgradeInstanceToLatestDefinition=Wt;exports.useDebouncedCallback=Ue;exports.useReactaFormContext=$;exports.validateFieldValue=L;exports.validateFormValues=Xe;
|
package/dist/reactaform.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--reactaform-primary-bg: #f9f9f9;--reactaform-secondary-bg: #fff;--reactaform-text-color: #000;--reactaform-text-muted: #666;--reactaform-border-color: #ccc;--reactaform-border-hover: #999;--reactaform-border-focus: #4CAF50;--reactaform-error-color: #e11d48;--reactaform-success-color: #4CAF50;--reactaform-space: 8px;--reactaform-space-lg: 12px;--reactaform-hover-bg: #f5f5f5;--reactaform-column-gap: var(--reactaform-space);--reactaform-inline-gap: var(--reactaform-space);--reactaform-label-gap: 4px;--reactaform-font-size: 14px;--reactaform-font-weight: 500;--reactaform-border-radius: 0px;--reactaform-shadow: 0 2px 4px rgba(0, 0, 0, .1);--reactaform-button-bg: var(--reactaform-success-color);--reactaform-button-text: #ffffff;--reactaform-button-padding: var(--reactaform-space) 12px;--reactaform-button-border-radius: var(--reactaform-border-radius);--reactaform-button-font-size: 14px;--reactaform-button-font-weight: var(--reactaform-font-weight);--reactaform-button-hover-opacity: .9;--reactaform-button-disabled-opacity: .6;--reactaform-button-disabled-bg: #cccccc;--reactaform-button-disabled-cursor: not-allowed;--reactaform-button-margin-top: .5em;--reactaform-button-shadow: none;--reactaform-input-padding: var(--reactaform-space);--reactaform-container-padding: var(--reactaform-space-lg);--reactaform-field-gap: var(--reactaform-space);--reactaform-input-bg: var(--reactaform-secondary-bg);--reactaform-field-text-color: #0000ff;--reactaform-tooltip-color-bg: rgba(60,60,60,.92);--reactaform-tooltip-color: #ffffff}[data-reactaform-theme=dark]{--reactaform-primary-bg: #121212;--reactaform-secondary-bg: #1A1A1A;--reactaform-input-bg: #262626;--reactaform-text-color: #EDEDED;--reactaform-text-muted: #A5A5A5;--reactaform-field-text-color: #C8C8E5;--reactaform-border-color: #3A3A3A;--reactaform-border-hover: #4A4A4A;--reactaform-border-focus: #4DA6FF;--reactaform-error-color: #FF6B6B;--reactaform-success-color: #4CAF6A;--reactaform-hover-bg: rgba(255, 255, 255, .06);--reactaform-shadow: 0 2px 8px rgba(0, 0, 0, .45);--reactaform-tooltip-color-bg: rgba(40, 40, 40, .95);--reactaform-tooltip-color: #F5F5F5}.reactaform-container{background-color:var(--reactaform-primary-bg);color:var(--reactaform-text-color);padding:var(--reactaform-container-padding);border-radius:var(--reactaform-border-radius);box-shadow:var(--reactaform-shadow);gap:var(--reactaform-space-lg);max-width:100%;margin:0 auto}.reactaform-field{display:grid;grid-template-columns:1fr 2fr;align-items:start;padding:0;gap:var(--reactaform-column-gap);margin-bottom:var(--reactaform-field-gap)}.reactaform-label{justify-self:start;align-self:center;white-space:normal;line-height:1.4;min-width:100px;color:var(--reactaform-text-color);font-weight:
|
|
1
|
+
:root{--reactaform-primary-bg: #f9f9f9;--reactaform-secondary-bg: #fff;--reactaform-text-color: #000;--reactaform-text-muted: #666;--reactaform-border-color: #ccc;--reactaform-border-hover: #999;--reactaform-border-focus: #4CAF50;--reactaform-error-color: #e11d48;--reactaform-success-color: #4CAF50;--reactaform-space: 8px;--reactaform-space-lg: 12px;--reactaform-hover-bg: #f5f5f5;--reactaform-column-gap: var(--reactaform-space);--reactaform-inline-gap: var(--reactaform-space);--reactaform-label-gap: 4px;--reactaform-font-size: 14px;--reactaform-font-weight: 500;--reactaform-border-radius: 0px;--reactaform-shadow: 0 2px 4px rgba(0, 0, 0, .1);--reactaform-button-bg: var(--reactaform-success-color);--reactaform-button-text: #ffffff;--reactaform-button-padding: var(--reactaform-space) 12px;--reactaform-button-border-radius: var(--reactaform-border-radius);--reactaform-button-font-size: 14px;--reactaform-button-font-weight: var(--reactaform-font-weight);--reactaform-button-hover-opacity: .9;--reactaform-button-disabled-opacity: .6;--reactaform-button-disabled-bg: #cccccc;--reactaform-button-disabled-cursor: not-allowed;--reactaform-button-margin-top: .5em;--reactaform-button-shadow: none;--reactaform-input-padding: var(--reactaform-space);--reactaform-container-padding: var(--reactaform-space-lg);--reactaform-field-gap: var(--reactaform-space);--reactaform-input-bg: var(--reactaform-secondary-bg);--reactaform-field-text-color: #0000ff;--reactaform-tooltip-color-bg: rgba(60,60,60,.92);--reactaform-tooltip-color: #ffffff}[data-reactaform-theme=dark]{--reactaform-primary-bg: #121212;--reactaform-secondary-bg: #1A1A1A;--reactaform-input-bg: #262626;--reactaform-text-color: #EDEDED;--reactaform-text-muted: #A5A5A5;--reactaform-field-text-color: #C8C8E5;--reactaform-border-color: #3A3A3A;--reactaform-border-hover: #4A4A4A;--reactaform-border-focus: #4DA6FF;--reactaform-error-color: #FF6B6B;--reactaform-success-color: #4CAF6A;--reactaform-hover-bg: rgba(255, 255, 255, .06);--reactaform-shadow: 0 2px 8px rgba(0, 0, 0, .45);--reactaform-tooltip-color-bg: rgba(40, 40, 40, .95);--reactaform-tooltip-color: #F5F5F5}.reactaform-container{background-color:var(--reactaform-primary-bg);color:var(--reactaform-text-color);padding:var(--reactaform-container-padding);border-radius:var(--reactaform-border-radius);box-shadow:var(--reactaform-shadow);gap:var(--reactaform-space-lg);max-width:100%;margin:0 auto}.reactaform-field{display:grid;grid-template-columns:1fr 2fr;align-items:start;padding:0;gap:var(--reactaform-column-gap);margin-bottom:var(--reactaform-field-gap)}.reactaform-label{justify-self:start;align-self:center;white-space:normal;line-height:1.4;min-width:100px;color:var(--reactaform-text-color);font-weight:600;font-size:var(--reactaform-font-size);-webkit-user-select:none;user-select:none}.reactaform-input{width:100%;color:var(--reactaform-text-color);border:1px solid var(--reactaform-border-color);border-radius:var(--reactaform-border-radius);padding:var(--reactaform-input-padding);box-sizing:border-box;background-color:var(--reactaform-input-bg);font-size:var(--reactaform-font-size);transition:border-color .2s ease;box-shadow:inset 0 1px #ffffff08}.reactaform-input:hover{border-color:var(--reactaform-border-hover)}.reactaform-input:focus{outline:none;border-color:var(--reactaform-border-focus);box-shadow:0 0 0 3px #22d3ee66,0 0 16px #22d3ee40,inset 0 1px #ffffff0d}.reactaform-input--text{text-align:left}.reactaform-input--number{text-align:right}.reactaform-input--select{text-align:left;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg fill='%23666' height='8' viewBox='0 0 24 24' width='8' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>");background-repeat:no-repeat;background-position:right var(--reactaform-space) center;background-size:20px;padding-right:32px}.reactaform-select{text-align:left;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg fill='%23666' height='8' viewBox='0 0 24 24' width='8' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>");background-repeat:no-repeat;background-position:right var(--reactaform-space) center;background-size:2.5em;padding-right:32px;background-color:var(--reactaform-input-bg)}.reactaform-textarea{width:100%;background-color:var(--reactaform-input-bg);color:var(--reactaform-text-color);border:1px solid var(--reactaform-border-color);border-radius:var(--reactaform-border-radius);padding:var(--reactaform-input-padding);box-sizing:border-box}@media(max-width:1024px){.reactaform-container{padding:calc(var(--reactaform-space) * .8)}.reactaform-field{gap:calc(var(--reactaform-column-gap) * .8)}}@media(max-width:768px){.reactaform-field{grid-template-columns:1fr;gap:6px}.reactaform-label{justify-self:start;margin-bottom:4px;font-size:.9rem}.reactaform-container{padding:var(--reactaform-space)}.reactaform-input,.reactaform-textarea,.reactaform-select{font-size:16px;padding:12px}.reactaform-checkbox-wrapper,.reactaform-radio-wrapper{padding:8px 0;min-height:44px;align-items:center}.reactaform-group{margin-bottom:calc(var(--reactaform-space) * 1.5)}}@media(max-width:480px){.reactaform-container{padding:calc(var(--reactaform-space) * .7)}.reactaform-field{gap:8px}.reactaform-label{font-size:.85rem;line-height:1.3}.reactaform-input,.reactaform-textarea,.reactaform-select{padding:14px}}
|