reactaform 1.2.1 → 1.4.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/README.md +60 -0
- 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 +5 -1
- package/dist/reactaform.cjs.js +5 -10
- package/dist/reactaform.es.js +2320 -2300
- package/package.json +13 -8
- /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"),_=require("react"),Rr=require("react-dom");function Ye(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const i=Ye(_),ke=Ye(Rr),kr=`/* ReactaForm CSS Custom Properties (CSS Variables) */\r
|
|
2
2
|
\r
|
|
3
3
|
/* Default Light Theme */\r
|
|
4
4
|
:root {\r
|
|
@@ -284,14 +284,9 @@
|
|
|
284
284
|
\r
|
|
285
285
|
\r
|
|
286
286
|
}\r
|
|
287
|
-
`;var me={exports:{}},ce={};var Ve;function vr(){if(Ve)return ce;Ve=1;var e=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function n(a,t,o){var i=null;if(o!==void 0&&(i=""+o),t.key!==void 0&&(i=""+t.key),"key"in t){o={};for(var c in t)c!=="key"&&(o[c]=t[c])}else o=t;return t=o.ref,{$$typeof:e,type:a,key:i,ref:t!==void 0?t:null,props:o}}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===M?null:b.displayName||b.name||null;if(typeof b=="string")return b;switch(b){case x:return"Fragment";case v:return"Profiler";case R:return"StrictMode";case S:return"Suspense";case N:return"SuspenseList";case F: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 p:return"Portal";case k:return b.displayName||"Context";case E:return(b._context.displayName||"Context")+".Consumer";case w:var C=b.render;return b=b.displayName,b||(b=C.displayName||C.name||"",b=b!==""?"ForwardRef("+b+")":"ForwardRef"),b;case I:return C=b.displayName||null,C!==null?C:e(b.type)||"Memo";case j:C=b._payload,b=b._init;try{return e(b(C))}catch{}}return null}function r(b){return""+b}function n(b){try{r(b);var C=!1}catch{C=!0}if(C){C=console;var O=C.error,H=typeof Symbol=="function"&&Symbol.toStringTag&&b[Symbol.toStringTag]||b.constructor.name||"Object";return O.call(C,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",H),r(b)}}function a(b){if(b===x)return"<>";if(typeof b=="object"&&b!==null&&b.$$typeof===j)return"<...>";try{var C=e(b);return C?"<"+C+">":"<...>"}catch{return"<...>"}}function t(){var b=z.A;return b===null?null:b.getOwner()}function o(){return Error("react-stack-top-frame")}function i(b){if(B.call(b,"key")){var C=Object.getOwnPropertyDescriptor(b,"key").get;if(C&&C.isReactWarning)return!1}return b.key!==void 0}function c(b,C){function O(){oe||(oe=!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)",C))}O.isReactWarning=!0,Object.defineProperty(b,"key",{get:O,configurable:!0})}function m(){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 d(b,C,O,H,X,re){var L=O.ref;return b={$$typeof:y,type:b,key:C,props:O,_owner:H},(L!==void 0?L:null)!==null?Object.defineProperty(b,"ref",{enumerable:!1,get:m}):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:X}),Object.defineProperty(b,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:re}),Object.freeze&&(Object.freeze(b.props),Object.freeze(b)),b}function u(b,C,O,H,X,re){var L=C.children;if(L!==void 0)if(H)if(Q(L)){for(H=0;H<L.length;H++)f(L[H]);Object.freeze&&Object.freeze(L)}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 f(L);if(B.call(C,"key")){L=e(b);var $=Object.keys(C).filter(function(W){return W!=="key"});H=0<$.length?"{key: someKey, "+$.join(": ..., ")+": ...}":"{key: someKey}",V[L+H]||($=0<$.length?"{"+$.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} />`,H,L,$,L),V[L+H]=!0)}if(L=null,O!==void 0&&(n(O),L=""+O),i(C)&&(n(C.key),L=""+C.key),"key"in C){O={};for(var T in C)T!=="key"&&(O[T]=C[T])}else O=C;return L&&c(O,typeof b=="function"?b.displayName||b.name||"Unknown":b),d(b,L,O,t(),X,re)}function f(b){l(b)?b._store&&(b._store.validated=1):typeof b=="object"&&b!==null&&b.$$typeof===j&&(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 g=s,y=Symbol.for("react.transitional.element"),p=Symbol.for("react.portal"),x=Symbol.for("react.fragment"),R=Symbol.for("react.strict_mode"),v=Symbol.for("react.profiler"),E=Symbol.for("react.consumer"),k=Symbol.for("react.context"),w=Symbol.for("react.forward_ref"),S=Symbol.for("react.suspense"),N=Symbol.for("react.suspense_list"),I=Symbol.for("react.memo"),j=Symbol.for("react.lazy"),F=Symbol.for("react.activity"),M=Symbol.for("react.client.reference"),z=g.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,B=Object.prototype.hasOwnProperty,Q=Array.isArray,K=console.createTask?console.createTask:function(){return null};g={react_stack_bottom_frame:function(b){return b()}};var oe,J={},ee=g.react_stack_bottom_frame.bind(g,o)(),Y=K(a(o)),V={};le.Fragment=x,le.jsx=function(b,C,O){var H=1e4>z.recentlyCreatedOwnerStacks++;return u(b,C,O,!1,H?Error("react-stack-top-frame"):ee,H?K(a(b)):Y)},le.jsxs=function(b,C,O){var H=1e4>z.recentlyCreatedOwnerStacks++;return u(b,C,O,!0,H?Error("react-stack-top-frame"):ee,H?K(a(b)):Y)}})()),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),D=()=>{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,a])=>this.register(n,a)):Object.entries(r).forEach(([n,a])=>this.register(n,a))}getOrDefault(r,n){return this.get(r)??n}}function Je(e,r=300,n){const a=s.useRef(void 0),t=s.useRef(e),o=s.useRef(null),i=s.useRef(!1);s.useEffect(()=>{t.current=e},[e]),s.useEffect(()=>()=>{a.current!==void 0&&(window.clearTimeout(a.current),a.current=void 0)},[]);const c=s.useCallback(()=>{a.current!==void 0&&(window.clearTimeout(a.current),a.current=void 0),o.current=null,i.current=!1},[]),m=s.useCallback(()=>{if(a.current!==void 0&&(window.clearTimeout(a.current),a.current=void 0),o.current)try{t.current(...o.current)}finally{o.current=null,i.current=!1}},[]);return{callback:s.useCallback((...u)=>{if(n?.leading===!0&&!i.current){i.current=!0,t.current(...u),window.clearTimeout(a.current),a.current=window.setTimeout(()=>{i.current=!1,a.current=void 0},r);return}o.current=u,window.clearTimeout(a.current),a.current=window.setTimeout(()=>{a.current=void 0,o.current&&(t.current(...o.current),o.current=null,i.current=!1)},r)},[r,n?.leading]),cancel:c,flush:m}}const A={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"},U=(...e)=>{const r=[];for(const n of e)n&&(typeof n=="string"?r.push(n):typeof n=="object"&&Object.entries(n).forEach(([a,t])=>{t&&r.push(a)}));return r.join(" ")},Ge=({content:e,size:r="medium",animation:n=!0})=>{const{t:a,darkMode:t,formStyle:o,fieldStyle:i}=D(),[c,m]=s.useState(!1),[d,u]=s.useState({x:0,y:0}),[f,l]=s.useState(!1),g=s.useRef(null),y=s.useRef(null),p=s.useRef(null),x=s.useMemo(()=>{const k={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"}},w=(N,I,j)=>{const M=N?.[I];return(j&&M?M[j]:void 0)??{}};return{icon:{...k.icon,...w(o,"tooltip","icon"),...w(i,"tooltip","icon")},text:{...k.text,...w(o,"tooltip","text"),...w(i,"tooltip","text")},textVisible:k.textVisible}},[t,r,n,o,i]);s.useEffect(()=>{if(c){const E=requestAnimationFrame(()=>l(!1)),k=requestAnimationFrame(()=>{if(g.current){const w=g.current.getBoundingClientRect(),S=8;p.current=w;const N=w.right+S,I=w.top;u({x:N,y:I}),l(!0)}});return()=>{cancelAnimationFrame(k),cancelAnimationFrame(E)}}else requestAnimationFrame(()=>l(!1))},[c]),s.useEffect(()=>{if(!f)return;const E=requestAnimationFrame(()=>{if(!y.current)return;const k=y.current.getBoundingClientRect(),w=8,S=typeof window<"u"?window.innerWidth:1024,N=typeof window<"u"?window.innerHeight:768;let I=d.x,j=d.y;const F=p.current;F&&(I=F.right+w,j=F.top+F.height/2-k.height/2+-4,I+k.width>S-w&&(I=F.left-w-k.width)),I+k.width>S-w&&(I=Math.max(w,S-k.width-w)),I<w&&(I=w),j+k.height>N-w&&(j=Math.max(w,N-k.height-w)),j<w&&(j=w),(I!==d.x||j!==d.y)&&u({x:I,y:j})});return()=>cancelAnimationFrame(E)},[f,d.x,d.y]);const R=typeof document<"u"?document.getElementById("popup-root"):null,v=h.jsx("div",{ref:y,style:{...x.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?x.textVisible:{},top:d.y,left:d.x},"data-reactaform-theme":t?"dark":"light",children:a(e)});return h.jsxs(h.Fragment,{children:[h.jsx("span",{"data-testid":"tooltip-icon",ref:g,onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),style:{...x.icon},children:"?"}),c&&(R?je.createPortal(v,R):v)]})},ve=s.memo(({field:e,error:r,children:n,showLabel:a=!0})=>{const{t}=D(),o=e?.labelLayout==="column-center"?"center":"left";return h.jsxs("div",{className:`${A.field} column-layout`,style:{display:"flex",flexDirection:"column",gap:"var(--reactaform-label-gap, 4px)","--label-align":o},children:[a&&h.jsx("div",{style:{textAlign:o,width:"100%"},children:h.jsx("label",{id:`${e.name}-label`,className:A.label,htmlFor:e.name,style:{textAlign:o,width:"100%",minWidth:"unset",display:"block",marginBottom:"10px"},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,{id:`${e.name}-error`,children:r})]})});ve.displayName="ColumnFieldLayout";const Ke=s.memo(({field:e,error:r,children:n,rightAlign:a=!1})=>{const{t}=D(),o=s.useMemo(()=>({display:"flex",flexDirection:"column",gap:0}),[]),i=s.useMemo(()=>({display:"flex",flexDirection:"row",alignItems:"center",gap:"3px"}),[]);return h.jsxs("div",{className:`${A.field} row-layout`,children:[h.jsx("label",{id:`${e.name}-label`,className:A.label,htmlFor:e.name,style:{textAlign:"left",justifyContent:"flex-start"},children:t(e.displayName)}),h.jsxs("div",{style:o,children:[h.jsxs("div",{style:i,children:[a?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,{id:`${e.name}-error`,children:r})]})]})});Ke.displayName="RowFieldLayout";const q=({field:e,error:r,children:n,rightAlign:a=!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:a,children:n}),Ne=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 h.jsx("div",{id:r,style:n,children:e})});Ne.displayName="ErrorDiv";const Xe=s.memo(({name:e,onChange:r})=>{const{t:n}=D();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:a=>r(a.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,a){this.get(r)||this.register(r,{});const t=this.get(r);t[n]=a}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 P(e,r,n,a){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 o=be.get(t);if(o)return o(n,a)||null}return null}function er(e,r,n){if(e&&typeof e.validationHandlerName=="string"){const a=e.validationHandlerName;if(!ye.has(a)){const o=kr(a);ye.set(a,o)}const t=ye.get(a);if(t)return t(r,n)||null}return null}function ne(e){return typeof e=="object"&&e!==null}function Ie(e){if(!ne(e))return!1;const r=e;return typeof r.name=="string"&&typeof r.displayName=="string"}function rr(e){if(!ne(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=ne(e)?e:void 0;return!!r&&typeof r.name=="string"&&typeof r.size=="number"}}function Nr(e,r,n={}){try{const{includeMetadata:a=!1,dateFormat:t="iso",fileHandling:o="metadata",prettify:i=!1,excludeFields:c=[],includeOnlyFields:m=[]}=n;if(!e||typeof e!="object")return{success:!1,error:"Instance must be a valid object"};const d=[],u=[],f={},g=(rr(r)||ne(r)&&Array.isArray(r.properties)?r.properties:[]).filter(Ie),y=new Map(g.map(x=>[x.name,x]));for(const[x,R]of Object.entries(e)){if(c.includes(x)){u.push(x);continue}if(m.length>0&&!m.includes(x)){u.push(x);continue}if(R===void 0)continue;const v=y.get(x);try{f[x]=Ir(R,v,{dateFormat:t,fileHandling:o})}catch(E){d.push(`Error serializing field '${x}': ${String(E)}`),f[x]=null}}return a&&(f._metadata={serializedAt:new Date().toISOString(),version:(ne(r)?r.version:void 0)||"1.0.0",fieldCount:Object.keys(f).length-1}),{success:!0,data:i?JSON.stringify(f,null,2):JSON.stringify(f),metadata:{fieldCount:Object.keys(f).length,excludedFields:u,warnings:d}}}catch(a){return{success:!1,error:`Serialization failed: ${a instanceof Error?a.message:"Unknown error"}`}}}function Ir(e,r,n={}){const{dateFormat:a="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,a);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(o=>typeof o=="string"?Number(o):o):e;default:return e}return e instanceof Date?Le(e,a):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 a=new Date(e);if(!isNaN(a.getTime()))n=a;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 Ar(e,r,n={}){try{const{strict:a=!1,validateTypes:t=!0,preserveUnknownFields:o=!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(p){return{success:!1,error:`Invalid JSON: ${p instanceof Error?p.message:"Unknown parsing error"}`}}if(!c||typeof c!="object")return{success:!1,error:"Parsed data must be an object"};const m=[],d=[],u={},l=(rr(r)||ne(r)&&Array.isArray(r.properties)?r.properties:[]).filter(Ie),g=new Map(l.map(p=>[p.name,p]));for(const p of l){const x=p.name,R=c[x];if(R===void 0){a&&p.required&&d.push(`Required field '${x}' is missing`);continue}try{u[x]=Fr(R,p,{validateTypes:t,dateFormat:i})}catch(v){const E=`Error deserializing field '${x}': ${String(v)}`;a?d.push(E):(m.push(E),u[x]=R)}}if(o)for(const[p,x]of Object.entries(c))!g.has(p)&&p!=="_metadata"&&(a&&m.push(`Unknown field '${p}' preserved`),u[p]=x);const y=d.length>0;return{success:!y,data:u,warnings:m.length>0?m:void 0,validationErrors:y?d:void 0}}catch(a){return{success:!1,error:`Deserialization failed: ${a instanceof Error?a.message:"Unknown error"}`}}}function Fr(e,r,n={}){const{validateTypes:a=!0,dateFormat:t="auto"}=n;if(e==null)return e;try{switch(r.type){case"date":case"datetime":case"date-time":return Or(e,t,a);case"int":case"integer":return Se(e,a);case"float":case"number":return Ce(e,a);case"boolean":return Dr(e,a);case"int-array":return qe(e,"integer",a);case"float-array":return qe(e,"number",a);case"string":case"text":case"email":case"url":case"phone":return a?String(e):e;default:return e}}catch(o){if(a)throw new Error(`Type conversion failed: ${String(o)}`);return e}}function Mr(e,r={}){try{const{prettify:n=!0,includeMetadata:a=!0}=r;if(!e||typeof e!="object")return{success:!1,error:"Definition must be a valid object"};const t={...e};return a&&(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 $r(e,r={}){try{const{strict:n=!1,validateTypes:a=!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 o=[],i=[],c=["name","version","displayName"];for(const u of c)if(!t[u])if(n)i.push(`Required field '${u}' is missing`);else switch(o.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 m=Array.isArray(t.properties)?t.properties:null;m?t.properties=m.map((u,f)=>{const l=ne(u)?u:{},g={...l};if(!l.name){const y=`Property at index ${f} missing 'name'`;n?i.push(y):(o.push(`${y}, using 'field_${f}'`),g.name=`field_${f}`)}return l.displayName||(g.displayName=l.name||`Field ${f}`),l.type||(n&&a?i.push(`Property '${l.name||f}' missing 'type'`):(o.push(`Property '${l.name||f}' missing 'type', using 'string'`),g.type="string")),l.defaultValue===void 0&&(g.defaultValue=null),l.required===void 0&&(g.required=!1),g}):n?i.push("Properties must be an array"):(o.push("Properties not found or invalid, using empty array"),t.properties=[]);const d=i.length>0;return{success:!d,data:t,warnings:o.length>0?o:void 0,validationErrors:d?i:void 0}}catch(n){return{success:!1,error:`Definition deserialization failed: ${n instanceof Error?n.message:"Unknown error"}`}}}function Or(e,r,n){if(e instanceof Date)return e;if(typeof e=="number"){const a=new Date(e);if(n&&isNaN(a.getTime()))throw new Error(`Invalid timestamp: ${e}`);return a}if(typeof e=="string"){const a=new Date(e);if(n&&isNaN(a.getTime()))throw new Error(`Invalid date string: ${e}`);return a}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 Dr(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((a,t)=>{try{return r==="integer"?Se(a,n):Ce(a,n)}catch(o){if(n)throw new Error(`Array element ${t}: ${o}`);return a}})}const Vr=(e,r)=>{const n=new Map;let a=null,t=null,o=0;for(const i of e){const c=i.group;if(!c){a=null,t=null;continue}if(c===a)r[i.name].group=t??c;else{if(!n.has(c))n.set(c,1),t=null,r[i.name].group=c;else{const m=n.get(c),d=`${c}(${m})`;n.set(c,m+1),t=d,r[i.name].group=d,o++}a=c}}return o},zr=(e,r={})=>{const{includeEmpty:n=!0}=r,a=[];let t=null,o=[],i=0;for(const m of e){const d=m.group||null;d!==t?((o.length>0||n)&&(o.length===0&&i++,a.push({name:t,fields:o})),t=d,o=[m]):o.push(m)}(o.length>0||n)&&(o.length===0&&i++,a.push({name:t,fields:o}));const c=Math.max(0,...a.map(m=>m.fields.length));return{groups:a,metadata:{totalGroups:a.length,emptyGroups:i,largestGroup:c}}},xe=new Map,de=new Map,te=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(te.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 a=r;!r.includes("/")&&!r.includes(".")&&(a=`/locales/${e}/${r}.json`);const t=await fetch(a);if(!t.ok){const d=`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}):(te.add(n),{success:!1,translations:{},error:d})}const o=t.headers.get("content-type")||"";!o.includes("application/json")&&!o.includes("text/json")&&tr()&&console.warn(`Translation file at ${a} has unexpected content-type: ${o}`);const i=await t.text();if(!i){const d="Empty translation file";return te.add(n),{success:!1,translations:{},error:d}}let c;try{c=JSON.parse(i)}catch(d){const u=`Invalid JSON in translation file: ${d instanceof Error?d.message:String(d)}`;return te.add(n),{success:!1,translations:{},error:u}}if(!c||typeof c!="object"){const d="Invalid translation file format";return te.add(n),{success:!1,translations:{},error:d}}const m=Object.fromEntries(Object.entries(c).map(([d,u])=>[d,typeof u=="string"?u:String(u)]));if(!m||typeof m!="object"){const d="Invalid translation file format";return te.add(n),{success:!1,translations:{},error:d}}return de.set(n,m),Re.set(n,{loadedAt:new Date,size:Object.keys(m).length,source:"user"}),{success:!0,translations:m,fromCache:!1}}catch(a){const t=`Failed to load user translations: ${a instanceof Error?a.message:"Unknown error"}`;return te.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,a)=>{const t=parseInt(a,10)-1,o=r[t];if(o==null)return n;try{return String(o)}catch{return n}})}const qr=(e,r,n)=>(a,...t)=>{let o=a,i=!1;return!a||typeof a!="string"?String(a||""):(e.toLowerCase()==="en"?(o=a,i=!0):Object.prototype.hasOwnProperty.call(n,a)?(o=n[a],i=!0):Object.prototype.hasOwnProperty.call(r,a)?(o=r[a],i=!0):o=a,o=_r(o,t),!i&&tr()&&console.debug(`Missing translation for "${a}" in language "${e}"`),o)},Ae={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"]},Fe={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}},$e={},Br=new Set([...Object.keys(Ae),...Object.keys(Fe),...Object.keys(Me)]);for(const e of Br){const r={},n=Ae[e]??[],a=Fe[e]??{},t=Me[e]??{};for(const o of n){const i=a[o];r[o]={name:typeof i=="string"?i:String(o),shortName:o,factor:Object.prototype.hasOwnProperty.call(t,o)?t[o]:void 0}}for(const[o,i]of Object.entries(a))if(!r[o]){const c=typeof i=="string"?i:String(o);r[o]={name:c,shortName:o,factor:Object.prototype.hasOwnProperty.call(t,o)?t[o]:void 0}}for(const[o,i]of Object.entries(t))r[o]||(r[o]={name:String(o),shortName:String(o),factor:i});$e[e]=r}const Hr=Object.freeze(Object.defineProperty({__proto__:null,dimensionUnitDisplayMap:Fe,dimensionUnitsMap:Ae,dimensonUnitFactorsMap:Me,unitsByDimension:$e},Symbol.toStringTag,{value:"Module"})),Ur=({field:e,value:r,onChange:n,onError:a})=>{const{definitionName:t,t:o}=D(),i=s.useRef(a);s.useEffect(()=>{i.current=a},[a]),s.useEffect(()=>{const f=P(t,e,r??!1,o);i.current?.(f??null)},[r,e,t,o]);const c=f=>{const l=f.target.checked;n?.(l,null)},m=f=>{(f.key===" "||f.key==="Spacebar"||f.key==="Space"||f.key==="Enter")&&(f.preventDefault(),n?.(!r,null))},d=e.name,u=P(t,e,r??!1,o);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:A.label,htmlFor:d,style:{textAlign:"left",justifyContent:"flex-start"},children:o(e.displayName)}),h.jsx("input",{id:d,"data-testid":"boolean-checkbox",type:"checkbox",checked:!!r,onChange:c,onKeyDown:m,"aria-checked":!!r,"aria-invalid":!!u,"aria-describedby":u?`${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}})]})})},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=ar(e),n=parseInt(r.slice(1),16);return{r:n>>16&255,g:n>>8&255,b:n&255}}function ar(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:a})=>{const{t,definitionName:o}=D(),[i,c]=s.useState("#000000"),m=s.useRef(null),d=s.useRef(null),u=s.useRef(a);s.useEffect(()=>{u.current=a},[a]),s.useEffect(()=>{const v=r&&nr(r)?r:"#000000",E=ar(v);c(E)},[r]),s.useEffect(()=>{const v=P(o,e,r??"#000000",t);u.current?.(v??null)},[r,e,o,t]);const f=P(o,e,r??"#000000",t),l=v=>{const E=v.target.value;c(E),n?.(E,null)},g=v=>{const E=v.target.value;c(E),n?.(E,null)},y=Be.find(v=>v.value===i),{r:p,g:x,b:R}=Wr(i)||{r:0,g:0,b:0};return h.jsx(q,{field:e,error:f,children:h.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",width:"100%"},children:[h.jsxs("select",{ref:m,id:e.name,value:i,onChange:l,style:{minWidth:"120px",flex:1},className:U(A.input,A.inputSelect),"aria-invalid":!!f,"aria-describedby":f?`${e.name}-error`:void 0,children:[Be.map(v=>h.jsx("option",{value:v.value,children:t(v.label)},v.value)),y?null:h.jsxs("option",{value:i,children:["(",p,", ",x,", ",R,")"]},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:d,id:`${e.name}-color`,type:"color",value:i,onChange:g,style:{opacity:0,width:"100%",height:"100%",border:"none",padding:0,cursor:"pointer"},"aria-invalid":!!f,"aria-describedby":f?`${e.name}-error`:void 0})})]})})},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 a=n.getFullYear(),t=String(n.getMonth()+1).padStart(2,"0"),o=String(n.getDate()).padStart(2,"0");return`${a}-${t}-${o}`}return""},Gr=({field:e,value:r,onChange:n,onError:a})=>{const{t,definitionName:o}=D(),{name:i,required:c}=e,m=s.useRef(null),d=s.useRef(a);s.useEffect(()=>{d.current=a},[a]);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 p=ue(e.minDate);if(p&&y.getTime()<p.getTime())return t("Date must be on or after {{1}}",e.minDate)}if(e.maxDate){const p=ue(e.maxDate);if(p&&y.getTime()>p.getTime())return t("Date must be on or before {{1}}",e.maxDate)}}return P(o,e,l,t)??null},[e,o,t,c]),f=l=>{const g=l.target.value,y=u(g);n?.(g,y)};return s.useEffect(()=>{const l=u(r);l!==m.current&&(m.current=l,d.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:f,className:U(A.input,A.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:a})=>{const{t,definitionName:o}=D(),i=s.useRef(null),c=s.useRef(a);s.useEffect(()=>{c.current=a},[a]);const m=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)?P(o,e,u,t)??null:t("Invalid option selected"),[e,t,o]);s.useEffect(()=>{const u=r!=null?String(r):"",f=m(u);if(f&&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?.(f??null)},[r,m,n,e.options]);const d=u=>{const f=u.target.value,l=m(f);n?.(f,l)};return h.jsx(q,{field:e,error:m(String(r??"")),children:h.jsx("select",{id:e.name,"aria-invalid":!!m(String(r??"")),"aria-describedby":m(String(r??""))?`${e.name}-error`:void 0,defaultValue:String(r??""),ref:i,onChange:d,className:U(A.input,A.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:a})=>{const{definitionName:t,t:o}=D(),i=s.useRef(null),c=s.useCallback(f=>{const l=f.trim();return l===""?e.required?o("Value required"):null:Xr(l)?e.pattern&&!new RegExp(e.pattern).test(l)?e.patternErrorMessage?o(e.patternErrorMessage):o("Email does not match pattern: {{%1}}",{"%1":`${e.pattern}`}):P(t,e,f,o)??null:o("Must be valid email format")},[e,t,o]),m=f=>{const l=f.target.value,g=c(l);n?.(l,g)},d=s.useRef(null),u=s.useRef(a);return s.useEffect(()=>{u.current=a},[a]),s.useEffect(()=>{const f=r??"",l=c(f);i.current&&i.current.value!==String(f)&&(i.current.value=String(f)),l!==d.current&&(d.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:m,className:U(A.input,A.textInput),"aria-invalid":!!c(String(r??"")),"aria-describedby":c(String(r??""))?`${e.name}-error`:void 0})})},Qr=({field:e})=>{const{darkMode:r}=D(),{color:n=r?"#444444":"#CCCCCC",thickness:a=1,margin:t="8px 0"}=e;return h.jsx("div",{style:{width:"auto",height:"0",borderTop:`${a}px solid ${n}`,margin:t}})},et=({field:e,value:r,onChange:n,onError:a})=>{const{t,definitionName:o}=D(),[i,c]=s.useState(!1),m=s.useRef(null),d=s.useRef(a);s.useEffect(()=>{d.current=a},[a]);const u=s.useCallback(v=>e.required&&(!v||Array.isArray(v)&&v.length===0)?t("Value required"):P(o,e,v,t)??null,[e,o,t]),f=s.useMemo(()=>u(r),[r,u]);s.useEffect(()=>{const v=u(r);n?.(r,v),d.current?.(v??null)},[r,u]);const l=v=>{const E=v.target.files;let k=null;if(E&&E.length>0){const S=Array.from(E);e.multiple?k=[...Array.isArray(r)?r:[],...S]:k=S[0]}const w=u(k);n?.(k,w)},g=v=>{v.preventDefault(),v.stopPropagation(),c(!1);const E=v.dataTransfer.files;if(E&&E.length>0){const k=Array.from(E);let w=null;e.multiple?w=[...Array.isArray(r)?r:[],...k]:w=k[0];const S=u(w);n?.(w,S)}},y=v=>{v.preventDefault(),v.stopPropagation(),c(!0)},p=v=>{v.preventDefault(),v.stopPropagation(),c(!1)},x=v=>{if(Array.isArray(r)&&typeof v=="number"){const E=r.filter((S,N)=>N!==v),k=E.length>0?E:null,w=u(k);n?.(k,w)}else{const E=u(null);n?.(null,E)}},R=()=>{const v=Array.isArray(r)?r:r?[r]:[];return v.length===0?null:h.jsx("div",{style:{marginTop:"8px",display:"flex",flexDirection:"column",gap:"6px"},children:v.map((E,k)=>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:E.name}),h.jsx("button",{type:"button",onClick:()=>x(Array.isArray(r)?k: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:w=>{w.currentTarget.style.backgroundColor="var(--reactaform-bg-hover, #fee)"},onMouseLeave:w=>{w.currentTarget.style.backgroundColor="transparent"},children:"×"})]},`${E.name}-${k}`))})};return h.jsx(q,{field:e,error:f,children:h.jsxs("div",{style:{width:"100%"},children:[h.jsxs("div",{onDrop:g,onDragOver:y,onDragLeave:p,style:{position:"relative",border:`1px dashed ${i?"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: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:()=>m.current?.click(),onKeyDown:v=>{(v.key==="Enter"||v.key===" ")&&(v.preventDefault(),m.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:[h.jsx("input",{id:e.name,ref:m,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})]}),R()]})})},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),at=({field:e,value:r,onChange:n,onError:a})=>{const{t,definitionName:o}=D(),[i,c]=s.useState(Array.isArray(r)?r.join(", "):String(r??"")),m=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 g=nt(l);if(e.minCount!==void 0&&g.length<e.minCount)return t("Minimum number of values: {{1}}",e.minCount);if(e.maxCount!==void 0&&g.length>e.maxCount)return t("Maximum number of values: {{1}}",e.maxCount);for(const p of g){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 P(o,e,g,t)??null},[o,e,t]),d=l=>{const g=l.target.value,y=m(g);c(g),n?.(g,y)},u=s.useRef(null),f=s.useRef(a);return s.useEffect(()=>{f.current=a},[a]),s.useEffect(()=>{const l=Array.isArray(r)?r.join(", "):String(r??""),g=m(l);g!==u.current&&(u.current=g,f.current?.(g??null))},[r,e.required,m,t]),h.jsx(q,{field:e,error:m(i),children:h.jsx("input",{id:e.name,type:"text",value:i,onChange:d,className:U(A.input,A.textInput),style:{flex:1},"aria-invalid":!!m(i),"aria-describedby":m(i)?`${e.name}-error`:void 0})})},ot=/^[-+]?(?:\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:a})=>{const{t,definitionName:o}=D(),i=s.useRef(null),c=s.useCallback(f=>{if(f.trim()==="")return e.required?t("Value required"):null;if(!ot.test(f))return t("Must be a valid float");const l=st(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):P(o,e,l,t)??null},[e,o,t]),m=s.useRef(null),d=s.useRef(a);s.useEffect(()=>{d.current=a},[a]),s.useEffect(()=>{const f=String(r??""),l=c(f);l!==m.current&&(m.current=l,d.current?.(l??null)),i.current&&document.activeElement!==i.current&&(i.current.value=f)},[r,e,c,t]);const u=f=>{const l=f.target.value,g=c(l);n?.(l,g)};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:U(A.input,A.inputNumber),"aria-invalid":!!c(String(r??"")),"aria-describedby":c(String(r??""))?`${e.name}-error`:void 0})})};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:a}=D(),t=e.alignment||"center",o={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 m=e.localized?.split(";").map(x=>x.trim()),[d,u]=s.useState(c||""),f=s.useRef(c||null);if(s.useEffect(()=>{if(!c)return;const x=c.split("/"),R=x.pop(),v=R.lastIndexOf(".");if(v===-1)return;const E=R.substring(0,v),k=R.substring(v);let w=null;m?.includes(n)&&(w=`${E}_${n}${k}`);const S=new AbortController;if(w){const N=[...x,w].join("/");fetch(N,{method:"HEAD",signal:S.signal}).then(I=>{const j=I.ok?N:c;j!==f.current&&(f.current=j,u(j))}).catch(()=>{c!==f.current&&(f.current=c,u(c))})}else{const N=c;N!==f.current&&(f.current=N,requestAnimationFrame(()=>u(N)))}return()=>{S.abort()}},[c,n,m]),!d)return null;const{width:l,height:g}=e,y={},p={borderRadius:"8px",objectFit:"contain",boxShadow:"0 2px 6px rgba(0,0,0,0.1)",margin:"0 0 8px 0"};return l&&g?(y.width=l,y.height=g,p.width=`${l}px`,p.height=`${g}px`):l&&!g?(y.width=l,p.width=`${l}px`,p.height="auto"):!l&&g&&(y.height=g,p.width="auto",p.height=`${g}px`),h.jsx(q,{field:e,children:h.jsx("div",{"data-testid":"image-wrapper",style:{display:"flex",justifyContent:o[t]||"center",margin:"0 0"},children:h.jsx("img",{src:d,alt:a?.(e.displayName||"Image")||e.displayName||"Image",...y,style:p})})})};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:a})=>{const{t,definitionName:o}=D(),i=",",[c,m]=s.useState(Array.isArray(r)?r.join(i+" "):String(r??"")),d=p=>!p||p.trim()===""?[]:p.split(i).map(x=>x.trim()).filter(Boolean).map(x=>Number(x)),u=s.useCallback(p=>{if(p.trim()==="")return e.required?t("Value required"):null;if(!ut(p))return t("Each value must be a valid integer");const x=d(p);if(e.minCount!==void 0&&x.length<e.minCount)return t("Minimum number of values: {{1}}",`${e.minCount}`);if(e.maxCount!==void 0&&x.length>e.maxCount)return t("Maximum number of values: {{1}}",`${e.maxCount}`);for(const v of x){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 P(o,e,x,t)??null},[o,e,t]),f=p=>{const x=p.target.value,R=u(x);m(x),n?.(x,R)},l=s.useRef(null),g=s.useRef(a);s.useEffect(()=>{g.current=a},[a]),s.useEffect(()=>{const p=Array.isArray(r)?r.join(i+" "):String(r??""),x=u(p);x!==l.current&&(l.current=x,g.current?.(x??null))},[r,e.required,u,t]);const y=u(c);return h.jsx(q,{field:e,error:y,children:h.jsx("input",{id:e.name,type:"text",value:c,onChange:f,className:U(A.input,A.textInput),style:{flex:1},"aria-invalid":!!y,"aria-describedby":y?`${e.name}-error`:void 0})})};function mt(e){return/^[-+]?\d*$/.test(e)}const dt=({field:e,value:r,onChange:n,onError:a})=>{const{t,definitionName:o}=D(),i=s.useRef(null),c=s.useCallback(g=>{const y=parseInt(g,10);return Number.isNaN(y)?null:y},[]),m=s.useCallback(g=>{if(g.trim()==="")return e.required?t("Value required"):null;if(!mt(g))return t("Must be a valid integer");const y=c(g);if(y===null)return t("Must be a valid integer");if(e.min!==void 0&&(e.minInclusive?y<e.min:y<=e.min))return t("Must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?y>e.max:y>=e.max))return t("Must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max);if(e.step!==void 0){const x=Number(e.step);if(!Number.isInteger(x))return t("Invalid step value");if(y%x!==0)return t("Must be a multiple of {{1}}",x)}return P(o,e,y,t)??null},[e,o,t,c]),d=s.useRef(null),u=s.useRef(a);s.useEffect(()=>{u.current=a},[a]),s.useEffect(()=>{const g=String(r??""),y=m(g);y!==d.current&&(d.current=y,u.current?.(y??null)),i.current&&document.activeElement!==i.current&&(i.current.value=g)},[r,e,m,t]);const f=g=>{const y=g.target.value,p=m(y);n?.(y,p)},l=m(String(r??""));return h.jsx(q,{field:e,error:l,children:h.jsx("input",{id:e.name,type:"text",defaultValue:String(r??""),ref:i,onChange:f,className:U(A.input,A.inputNumber),"aria-invalid":!!l,"aria-describedby":l?`${e.name}-error`:void 0})})},pt=({field:e,value:r,onChange:n,onError:a})=>{const{t,definitionName:o}=D(),i=e.minHeight??"80px",c=s.useRef(null),m=s.useRef(null),d=s.useRef(a);s.useEffect(()=>{d.current=a},[a]);const u=s.useCallback(y=>y.trim()===""?e.required?t("Value required"):null:e.minLength!==void 0&&y.length<e.minLength?t("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&y.length>e.maxLength?t("Must be at most {{1}} characters",e.maxLength):P(o,e,y,t),[e,o,t]),f=y=>{const p=y.target.value,x=u(p);n?.(p,x)};s.useEffect(()=>{const y=u(r);y!==m.current&&(m.current=y,d.current?.(y??null)),c.current&&c.current.value!==String(r??"")&&(c.current.value=String(r??""))},[r,u]);const l={id:e.name,defaultValue:String(r??""),ref:c,onChange:f,style:{resize:"vertical",minHeight:i,width:"100%",boxSizing:"border-box"},className:U(A.input,A.textInput)},g=u(r);return h.jsx(q,{field:e,error:g,children:h.jsx("textarea",{...l,"aria-invalid":!!g,"aria-describedby":g?`${e.name}-error`:void 0})})},gt=({field:e,value:r,onChange:n,onError:a})=>{const t=s.useRef(a);s.useEffect(()=>{t.current=a},[a]);const{t:o,darkMode:i,formStyle:c,fieldStyle:m,definitionName:d}=D(),u=(j,F,M)=>{if(!F)return{};const B=j?.[F];return(M&&B?B[M]:void 0)??{}},f=s.useRef(null),[l,g]=s.useState(!1),[y,p]=s.useState(null),x=s.useMemo(()=>e.options.map(j=>({value:j.value,label:o(j.label)})),[e.options,o]),R=s.useMemo(()=>{const j=Array.isArray(r)?r:[],F=new Set(x.map(M=>M.value));return j.filter(M=>F.has(M))},[r,x]),v=j=>{const F=Array.isArray(j)?j:[];return e.required&&F.length===0?o("Value required"):P(d,e,F,o)??null},E=()=>{if(!f.current)return;const j=f.current.getBoundingClientRect();p({x:j.left,y:j.bottom}),g(F=>!F)},k=j=>{const F=R.includes(j)?R.filter(z=>z!==j):[...R,j],M=v(F);t.current?.(M??null),n?.(F,M)},w=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(m,void 0,"control")}),[c,m]),S=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(m,void 0,"clearButton")}),[c,m]),N=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(m,void 0,"arrow")}),[c,m]),I=v(Array.isArray(r)?r:[]);return h.jsxs("div",{children:[h.jsx(q,{field:e,error:null,children:h.jsx("div",{style:{width:"100%"},children:h.jsxs("div",{ref:f,className:"reactaform-multiselection-control",style:w,onClick:E,tabIndex:0,role:"button","aria-haspopup":"listbox","aria-expanded":l,"aria-invalid":!!I,"aria-describedby":I?`${e.name}-error`:void 0,onKeyDown:j=>{(j.key==="Enter"||j.key===" ")&&(j.preventDefault(),E())},children:[h.jsxs("span",{style:{flex:1,color:"var(--reactaform-text-muted, #888)"},children:[R.length," / ",x.length," selected"]}),R.length>0&&h.jsx("button",{type:"button","aria-label":"Clear selections",onClick:j=>{j.stopPropagation(),n?.([],null)},style:S,children:h.jsx("span",{style:S,"aria-hidden":!0,children:"✖"})}),h.jsx("span",{style:N,"aria-hidden":!0,children:"▼"})]})})}),l&&y&&h.jsx(ht,{position:y,options:x,selectedValues:R,onToggleOption:k,onClose:()=>g(!1),controlRef:f,darkMode:i})]})},ht=({position:e,options:r,selectedValues:n,onToggleOption:a,onClose:t,controlRef:o,darkMode:i})=>{const c=s.useRef(null),[m,d]=s.useState(-1),{formStyle:u,fieldStyle:f}=D(),l=(S,N,I)=>{if(!N)return{};const F=S?.[N];return(I&&F?F[I]:void 0)??{}},g=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(f,void 0,"popup")}),[u,f]),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(f,void 0,"option")}),[u,f]);s.useEffect(()=>{const S=N=>{const I=N.target;!c.current?.contains(I)&&!o.current?.contains(I)&&t()};return document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[t,o]),s.useEffect(()=>{c.current&&r.length>0&&requestAnimationFrame(()=>d(S=>S===-1?0:S))},[r.length]),s.useEffect(()=>{if(!c.current||m<0)return;const S=c.current.querySelector(`#multi-opt-${m}`);S&&requestAnimationFrame(()=>S.focus())},[m]);const p=250,x=200,[R,v]=s.useState(null),[E,k]=s.useState(null);if(s.useEffect(()=>{if(typeof window>"u")return;const S=()=>{let j=e.x,F=e.y,M=p;const z=o?.current;if(z){const B=z.getBoundingClientRect();j=B.left,F=B.bottom,M=Math.max(80,Math.round(B.width))}j=Math.min(j,window.innerWidth-M),F=Math.min(F,window.innerHeight-x),v({left:j,top:F}),k(M)};S(),window.addEventListener("scroll",S,!0),window.addEventListener("resize",S);let N=null;const I=o?.current;return typeof ResizeObserver<"u"&&I&&(N=new ResizeObserver(()=>S()),N.observe(I)),()=>{window.removeEventListener("scroll",S,!0),window.removeEventListener("resize",S),N&&I&&N.unobserve(I)}},[o,e.x,e.y]),typeof window>"u")return null;let w=document.getElementById("popup-root");return w||(w=document.createElement("div"),w.id="popup-root",document.body.appendChild(w)),je.createPortal(h.jsx("div",{ref:c,role:"listbox","aria-activedescendant":m>=0?`multi-opt-${m}`:void 0,style:{position:"absolute",top:R?R.top:e.y,left:R?R.left:e.x,width:E??p,...g},"data-reactaform-theme":i?"dark":"light",children:r.map((S,N)=>{const I=n.includes(S.value),j=i?"var(--reactaform-hover-bg, rgba(255,255,255,0.01))":"var(--reactaform-hover-bg, #eee)",F={...y,background:N===m?j:y.background};return h.jsxs("div",{id:`multi-opt-${N}`,onMouseDown:M=>{M.stopPropagation(),a(S.value)},onKeyDown:M=>{const z=r.length;switch(M.key){case"ArrowDown":M.preventDefault(),d(B=>(B+1)%z);break;case"ArrowUp":M.preventDefault(),d(B=>(B-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(),a(S.value);break;case"Escape":M.preventDefault(),t(),o?.current?.focus();break}},tabIndex:N===m?0:-1,role:"option","aria-selected":I,style:F,onMouseEnter:M=>{M.currentTarget.style.background=j,d(N)},onMouseLeave:M=>{M.currentTarget.style.background="transparent",d(z=>z===N?-1:z)},children:[h.jsx("input",{type:"checkbox",checked:I,readOnly:!0,style:{marginRight:8,width:"1.125em",height:"1.125em",verticalAlign:"middle",accentColor:i?"#10b981":"#22c55e",cursor:"pointer"}}),S.label]},S.value)})}),w)},bt=({field:e,value:r,onChange:n,onError:a})=>{const{t,definitionName:o}=D(),i=s.useRef(null),c=e.min??void 0,m=e.max??void 0,d=Math.max(1,Math.round(e.step??1)),u=s.useCallback(x=>isNaN(x)?t("Must be a valid integer"):Number.isInteger(x)?c!==void 0&&x<c?t("Must be �?{{1}}",c):m!==void 0&&x>m?t("Must be �?{{1}}",m):P(o,e,x,t)??null:t("Must be an integer"),[o,e,t,c,m]),f=s.useRef(null),l=s.useRef(a);s.useEffect(()=>{l.current=a},[a]),s.useEffect(()=>{if(document.activeElement===i.current)return;const R=String(r),v=u(r);i.current&&(i.current.value=R),v!==f.current&&(f.current=v,l.current?.(v??null))},[r,u]);const g=x=>{if(x.trim()==="")return e.required?t("Value required"):null;const v=Number(x);return u(v)},y=x=>{const R=x.target.value,v=x.target.valueAsNumber,E=g(R);n?.(v,E)},p=g(String(r??""));return h.jsx(q,{field:e,error:p,children:h.jsx("input",{ref:i,id:e.name,type:"number",defaultValue:String(r??""),min:c,max:m,step:d,onChange:y,style:{width:"100%",height:"100%"},className:A.input,"aria-invalid":!!p,"aria-describedby":p?`${e.name}-error`:void 0})})},yt=({field:e,value:r,onChange:n,onError:a})=>{const{t}=D(),o=s.useRef(null),{definitionName:i}=D(),c=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 P(i,e,l,t)},[i,e,t]),m=s.useRef(null),d=s.useRef(a);s.useEffect(()=>{d.current=a},[a]),s.useEffect(()=>{const f=String(r??""),l=c(f);o.current&&o.current.value!==String(f)&&(o.current.value=String(f)),l!==m.current&&(m.current=l,d.current?.(l??null))},[r,c]);const u=f=>{const l=f.target.value,g=l.trim();let y=null;if(g===""){y=e.required?t("Value required"):null,n?.(l,y);return}y||(y=c(l)),n?.(l,y)};return h.jsx(q,{field:e,error:c(String(r??"")),children:h.jsx("input",{id:e.name,type:"tel",defaultValue:String(r??""),ref:o,onChange:u,className:U(A.input,A.textInput),"aria-invalid":!!c(String(r??"")),"aria-describedby":c(String(r??""))?`${e.name}-error`:void 0})})},xt=({field:e,value:r,onChange:n,onError:a})=>{const{t,definitionName:o}=D(),i=e.layout?.toLowerCase()==="horizontal"?"row":"column",c=s.useRef(null),m=s.useRef(a);s.useEffect(()=>{m.current=a},[a]);const d=s.useCallback(f=>f===""||f===null||f===void 0?t("Value required"):!e.options||e.options.length===0?null:e.options.some(g=>g.value===f)?P(o,e,f,t)??null:t("Invalid option selected"),[e,t,o]);s.useEffect(()=>{const f=r!=null?String(r):"",l=d(f);if(m.current?.(l??null),c.current){const g=Array.from(c.current.querySelectorAll("input[type=radio]"));if(l&&e.options&&e.options.length>0){const y=String(e.options[0].value);g.forEach(p=>p.checked=p.value===y),n?.(y,null)}else g.forEach(y=>y.checked=y.value===f)}},[r,d,n,e.options]);const u=f=>{const l=f.target.value,g=d(l);m.current?.(g??null),n?.(l,g)};return h.jsx(q,{field:e,error:d(String(r??"")),children:h.jsx("div",{className:A.input,role:"radiogroup","aria-labelledby":`${e.name}-label`,"aria-invalid":!!d(String(r??"")),style:{display:"flex",flexDirection:i,flexWrap:i==="row"?"wrap":"nowrap",gap:i==="row"?"12px":"4px",alignItems:i==="row"?"center":"stretch",width:"100%",padding:i==="row"?"8px":void 0,boxSizing:"border-box"},ref:c,children:(e.options??[]).map(f=>h.jsxs("label",{className:U(A.label),style:{display:i==="column"?"flex":"inline-flex",gap:"8px",alignItems:"center",whiteSpace:"nowrap",marginBottom:i==="column"?6:0,cursor:"pointer",width:i==="column"?"100%":void 0,justifyContent:"flex-start"},children:[h.jsx("input",{type:"radio",name:e.name,value:String(f.value),defaultChecked:String(r??"")===String(f.value),onChange:u,style:{width:"1.1em",height:"1.1em"}}),h.jsx("span",{style:{userSelect:"none",textAlign:i==="column"?"left":void 0,flex:i==="column"?1:void 0,fontWeight:400},children:t(f.label)})]},String(f.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:a})=>{const{t,definitionName:o}=D(),[i,c]=s.useState(null),m=s.useRef([]),d=e.max||5,u=s.useCallback(p=>e.required&&p===0?t("Value required"):P(o,e,p,t)??null,[e,t,o]),f=s.useRef(null),l=s.useRef(a);s.useEffect(()=>{l.current=a},[a]),s.useEffect(()=>{let p=r||0;r<0&&(p=0),r>d&&(p=d);const x=u(p);x!==f.current&&(f.current=x,l.current?.(x??null))},[r,u,d]);const g=p=>{const x=u(p);n?.(p,x)},y=(()=>{let p=r||0;return p<0&&(p=0),p>d&&(p=d),p})();return h.jsx(q,{field:e,error:u(y),children:h.jsx("div",{role:"radiogroup","aria-labelledby":`${e.name}-label`,style:vt,"aria-invalid":!!u(y),"aria-describedby":u(y)?`${e.name}-error`:void 0,children:(()=>{const p=e.icon,x=p&&String(p).trim()?String(p):"★";return[...Array(d)].map((R,v)=>{const E=v<y,w=i!==null&&v<=i||E?"gold":"lightgray";return h.jsx("span",{ref:S=>m.current[v]=S,role:"radio",tabIndex:y>0?v===y-1?0:-1:v===0?0:-1,"aria-checked":E,onClick:()=>g(v+1),onKeyDown:S=>{if(S.key==="Enter"||S.key===" ")S.preventDefault(),g(v+1);else if(S.key==="ArrowRight"||S.key==="ArrowUp"){S.preventDefault();const N=Math.min(d-1,v+1);m.current[N]?.focus()}else if(S.key==="ArrowLeft"||S.key==="ArrowDown"){S.preventDefault();const N=Math.max(0,v-1);m.current[N]?.focus()}},onMouseEnter:()=>c(v),onMouseLeave:()=>c(null),style:{...wt,color:w},"aria-label":`Rating ${v+1}`,title:t(`${e.displayName} ${v+1}`),children:x},v)})})()})})},Ct=({field:e,value:r,onChange:n,onError:a})=>{const{t,definitionName:o}=D(),i=s.useRef(null),c=s.useRef(null),m=s.useRef(a);s.useEffect(()=>{m.current=a},[a]);const d=s.useMemo(()=>e.pattern?new RegExp(e.pattern):null,[e.pattern]),u=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):P(o,e,p,t),[e,o,t,d]),f=p=>{const x=p.target.value,R=u(x);n?.(x,R)};s.useEffect(()=>{const p=u(r??"");i.current&&i.current.value!==String(r??"")&&(i.current.value=String(r??"")),p!==c.current&&(c.current=p,m.current?.(p??null))},[r,u]);const[l,g]=s.useState(!1),y=()=>g(p=>!p);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:f,className:U(A.input,A.textInput),style:{flex:1,minWidth:0},"aria-invalid":!!u(String(r??"")),"aria-describedby":u(String(r??""))?`${e.name}-error`:void 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:a})=>{const{t,definitionName:o}=D(),i=s.useRef(null),c=s.useRef(null),m=s.useCallback(y=>{let p=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):(p||(p=P(o,e,x,t)),p)},[o,e,t]),d=s.useRef(null),u=s.useRef(a);s.useEffect(()=>{u.current=a},[a]),s.useEffect(()=>{const y=String(r),p=m(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),p!==d.current&&(d.current=p,u.current?.(p??null))},[r,m,e.min]);const f=e.min??0,l=e.max??100,g=y=>{const p=y.target.value,x=m(p);n?.(p,x)};return h.jsx(q,{field:e,error:m(String(r??"")),children:h.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",width:"100%"},children:[h.jsx("input",{ref:c,id:`${e.name}-range`,type:"range",defaultValue:isNaN(Number(r))?String(f):String(Number(r)),onChange:g,min:f,max:l,style:{padding:"0px, 0px",flex:1},className:A.rangeInput,"aria-invalid":!!m(String(r??"")),"aria-describedby":m(String(r??""))?`${e.name}-error`:void 0}),h.jsx("input",{id:e.name,ref:i,type:"text",defaultValue:String(r??""),onChange:g,required:!0,style:{width:"40px",minWidth:"40px",height:"2.3em",textAlign:"center",flexShrink:0},className:U(A.input,A.textInput),"aria-invalid":!!m(String(r??"")),"aria-describedby":m(String(r??""))?`${e.name}-error`:void 0})]})})},kt=({field:e,value:r,onChange:n,onError:a})=>{const{t,formStyle:o,fieldStyle:i,definitionName:c}=D(),m=o,d=i,u=(w,S,N)=>{if(!S)return{};const I=w?.[S];return(N&&I?I[N]:void 0)??{}},f=s.useMemo(()=>({display:"inline-block",position:"relative",width:44,height:24,...u(m,"switch","label"),...u(d,void 0,"label")}),[m,d]),l=s.useMemo(()=>({position:"absolute",opacity:0,top:0,left:0,width:"100%",height:"100%",margin:0,cursor:"pointer",pointerEvents:"none",...u(m,"switch","hiddenInput"),...u(d,void 0,"hiddenInput")}),[m,d]),g=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(m,"switch","slider"),...u(d,void 0,"slider")}),[m,d]),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(m,"switch","knob"),...u(d,void 0,"knob")}),[m,d]),p=!!r,x=s.useRef(null),R=s.useRef(a),v=s.useCallback(w=>w?P(c,e,w,t)??null:e.required?t("Value required"):null,[e,t,c]),E=()=>{const w=!p,S=v(w);n?.(w,S)};s.useEffect(()=>{R.current=a},[a]),s.useEffect(()=>{const w=v(p);w!==x.current&&(x.current=w,R.current?.(w??null))},[p,e,v]);const k=e.name;return h.jsx(q,{field:e,error:v(p),rightAlign:!1,children:h.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[h.jsx("label",{className:A.label,htmlFor:k,style:{textAlign:"left",justifyContent:"flex-start"},children:t(e.displayName)}),h.jsxs("label",{style:f,children:[h.jsx("input",{id:e.name,type:"checkbox",checked:p,readOnly:!0,"aria-label":t(e.displayName),"aria-invalid":!!v(p),"aria-describedby":v(p)?`${e.name}-error`:void 0,style:l,tabIndex:-1}),h.jsx("span",{role:"switch","data-testid":"switch",tabIndex:0,"aria-checked":p,"aria-invalid":!!v(p),"aria-describedby":v(p)?`${e.name}-error`:void 0,onClick:E,onKeyDown:w=>{(w.key===" "||w.key==="Spacebar"||w.key==="Space"||w.key==="Enter")&&(w.preventDefault(),E())},className:`reactaform-switch ${p?"active checked on":""} `,style:p?{...g,backgroundColor:"var(--reactaform-switch-on-bg, #22c55e)",borderColor:"var(--reactaform-switch-on-border, #16a34a)"}:g,children:h.jsx("span",{style:{...y,transform:p?"translateX(20px)":void 0}})})]})]})})},He=({field:e,value:r,onChange:n,onError:a})=>{const{t,definitionName:o}=D(),i=s.useRef(null),c=s.useRef(null),m=s.useRef(a);s.useEffect(()=>{m.current=a},[a]);const d=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):d&&!d.test(l)?e.patternErrorMessage?t(e.patternErrorMessage):t("Input does not match pattern: {{1}}",e.pattern):P(o,e,l,t),[e,o,t,d]),f=l=>{const g=l.target.value,y=u(g);n?.(g,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,m.current?.(l??null))},[r,u]),h.jsx(q,{field:e,error:u(String(r??"")),children:h.jsx("input",{id:e.name,"aria-invalid":!!u(String(r??"")),"aria-describedby":u(String(r??""))?`${e.name}-error`:void 0,type:"text",defaultValue:String(r??""),ref:i,onChange:f,className:U(A.input,A.textInput)})})},Nt=({field:e,value:r,onChange:n,onError:a})=>{const{t,definitionName:o}=D(),i=s.useRef(null),c=s.useRef(a),m=e.includeSeconds??!0;s.useEffect(()=>{c.current=a},[a]);const d=s.useCallback(f=>{if(!f||f.trim()==="")return e.required||e.min||e.max?t("Value required"):null;const l=p=>{const x=p.split(":").map(v=>parseInt(v,10));if(x.some(v=>Number.isNaN(v)))return NaN;let R=0;if(x.length===3)R=x[0]*3600+x[1]*60+x[2];else if(x.length===2)R=x[0]*3600+x[1]*60;else if(x.length===1)R=x[0]*3600;else return NaN;return R},g=l(f);if(Number.isNaN(g))return t("Invalid time format");if(e.min&&typeof e.min=="string"){const p=l(e.min);if(!Number.isNaN(p)&&g<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)&&g>p)return t("Time must be on or before {{1}}",e.max)}return P(o,e,f,t)??null},[e,o,t]),u=f=>{const l=f.target.value,g=d(l);n?.(l,g)};return s.useEffect(()=>{const f=d(r);f!==i.current&&(i.current=f,c.current?.(f??null))},[r,d]),h.jsx(q,{field:e,error:d(r),children:h.jsx("input",{id:e.name,type:"time",value:r,step:m?1:60,onChange:u,min:typeof e.min=="string"?e.min:void 0,max:typeof e.max=="string"?e.max:void 0,className:U(A.input,A.textInput),"aria-invalid":!!d(r),"aria-describedby":d(r)?`${e.name}-error`:void 0})})};function It({pos:e,options:r,onClose:n,onClickOption:a}){const t=s.useRef(null),o=s.useRef(!1),i=typeof window<"u"?document.getElementById("popup-root")||document.body:null;if(s.useEffect(()=>{function g(y){o.current||y.target.dataset?.popupMenu==="item"||t.current&&y.target instanceof Node&&!t.current.contains(y.target)&&n()}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[n]),!i||r===void 0||r.length===0||!e||e.x==null||e.y==null)return null;const c=e.x,m=e.y,d=typeof window<"u"?window.innerWidth:1024,u=Math.max(0,d-160),f=Math.max(0,Math.min(c,u)),l=Math.max(0,m);return je.createPortal(h.jsx("div",{ref:t,onMouseDown:g=>{g.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((g,y)=>h.jsx("div",{"data-popup-menu":"item",onMouseDown:p=>{p.stopPropagation(),o.current=!0},onClick:p=>{p.stopPropagation(),p.preventDefault(),a(g),n(),setTimeout(()=>{o.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:p=>{p.currentTarget.style.backgroundColor="var(--reactaform-hover-bg, #e0e0e0)"},onMouseLeave:p=>{p.currentTarget.style.backgroundColor="transparent"},children:g.label},g.label??y))}),i)}const fe={};function At(e,r){if(e in fe)return;const n=$e[e]??{},a={},t={},o={};for(const[c,m]of Object.entries(n))typeof m.factor=="number"&&(a[c]=m.factor),t[c]=r(c),o[r(c)]=c;const i=Object.keys(n)[0]??"";fe[e]={default:i,factors:a,labels:t,reverseLabels:o}}function Ft(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(o=>{const i=Ft(r,o,e);return Number.isFinite(i)?{label:`${i.toFixed(6)} ${o}`,value:i.toString(),unit:o}:{label:`${String(i)} ${o}`,value:String(i),unit:o}});const t=n.factors[r];return t===void 0?[]:Object.entries(n.factors).map(([o,i])=>{const c=e/t*i;return Number.isFinite(c)?{label:`${c.toFixed(6)} ${o}`,value:c.toString(),unit:o}:{label:`${String(c)} ${o}`,value:String(c),unit:o}})}function pe(e,r){return e in r.labels?e:r.reverseLabels&&r.reverseLabels[e]?r.reverseLabels[e]:null}const $t=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/,Ot=({unitFactors:e,field:r,value:n,onChange:a,onError:t})=>{const{t:o,definitionName:i}=D(),c=s.useRef(null),m=s.useRef(null),d=s.useRef(null),[u,f]=s.useState(null),[l,g]=s.useState(null),[y,p]=s.useState(!1),[x,R]=s.useState(null),[v,E]=s.useState([]),k=s.useCallback((V,b)=>{if(!V||V.trim()==="")return r.required?o("Value required"):null;if(!$t.test(V))return o("Must be a valid number");const C=P(i,r,[V,b],o);return C||null},[i,r,o]),w=e.reverseLabels!==void 0?e.reverseLabels:Object.fromEntries(Object.entries(e.labels).map(([V,b])=>[b,V]));s.useEffect(()=>{const V=String(n[0]);let b=n[1]??e.default;b=pe(b,e)||b;const C=document.activeElement;C===c.current||C===m.current||(c.current&&(c.current.value=V),m.current&&(m.current.value=b),d.current!==null&&(cancelAnimationFrame(d.current),d.current=null),d.current=requestAnimationFrame(()=>{d.current=null,f(null),g(null)}))},[n,e]),s.useEffect(()=>()=>{d.current!==null&&(cancelAnimationFrame(d.current),d.current=null)},[]);const S=s.useRef(null),N=s.useRef(t);s.useEffect(()=>{N.current=t},[t]),s.useEffect(()=>{const V=String(n[0]);let b=n[1]??e.default;b=pe(b,e)||b;const C=k(V,b);C!==S.current&&(S.current=C,N.current?.(C??null))},[n,e,k]);const I=(V,b,C)=>{const O=w[b]||b;a?.([V,O],C)},j=V=>{const b=V.target.value,C=m.current?m.current.value:e.default,O=k(b,C);f(b),I(b,C,O)},F=V=>{const b=V.target.value,C=c.current?c.current.value:String(n[0]??""),O=k(C,b);g(b),m.current&&(m.current.value=b),I(C,b,O)},M=V=>{const b=c.current?c.current.value:String(n[0]??""),C=parseFloat(b),O=m.current?m.current.value:e.default;if(k(b,O)||!b.trim()||!Number.isFinite(C))return;const X=V.currentTarget.getBoundingClientRect(),re=X.left,L=X.bottom;R({x:re,y:L});const $=Mt(C,O,e);if($.length===0){E([]),p(!1);return}E($),p(T=>!T)},z=V=>{const{value:b,unit:C}=V;p(!1),R(null),c.current&&(c.current.value=b),m.current&&(m.current.value=C),f(b),g(C);const O=k(b,C);I(b,C,O)},B=String(n[0]??""),Q=pe(n[1]??e.default,e)||(n[1]??e.default),K=u??B,J=!!k(K,l??Q)||!K.trim(),ee={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"},Y=k(B,Q);return h.jsx(q,{field:r,error:Y,children:h.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--reactaform-unit-gap, 8px)",width:"100%"},children:[h.jsx("input",{id:r.name,type:"text",ref:c,defaultValue:String(n[0]??""),onChange:j,style:{width:"var(--reactaform-unit-input-width, 100px)"},className:U(A.input,A.textInput),"aria-invalid":!!Y,"aria-describedby":Y?`${r.name}-error`:void 0}),h.jsx("select",{id:`${r.name}-unit`,ref:m,defaultValue:pe(n[1]??e.default,e)||(n[1]??e.default),onChange:F,className:U(A.input,A.inputSelect),"aria-invalid":!!Y,"aria-describedby":Y?`${r.name}-error`:void 0,children:Object.keys(e.labels).map(V=>h.jsx("option",{value:V,children:e.labels[V]??V},V))}),h.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[h.jsx("button",{onClick:M,"aria-disabled":J,disabled:J,style:ee,className:A.button,children:h.jsx("span",{style:{fontSize:"var(--reactaform-unit-btn-icon-size, 1em)",lineHeight:"1",transform:"translateY(-1px)",pointerEvents:"none"},children:"⟷"})}),y&&v&&h.jsx(It,{pos:x,options:v,onClose:()=>{R(null),p(!1)},onClickOption:z})]})]})})};function Dt({field:e,value:r,onChange:n}){const{t:a}=D(),t=e.dimension;if(!t)return null;fe[t]||At(t,a);const o=fe[t];return o?h.jsx(Ot,{unitFactors:o,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}},Vt=({field:e,value:r,onChange:n,onError:a})=>{const{t,definitionName:o}=D(),i=s.useRef(null),c=s.useCallback(f=>{const l=f.trim();if(l==="")return e.required?t("Value required"):null;if(!Ue.test(l)&&!We(l)){const y=e.allowRelative===!0;let p=!1;if(Ue.test(l)||We(l))p=!0;else if(y)try{new URL(l,"http://example.com"),p=!0}catch{p=!1}if(!p)return t("Must be a valid URL")}return P(o,e,l,t)??null},[o,e,t]),m=f=>{const l=f.target.value,g=c(l);n?.(l.trim(),g)},d=s.useRef(null),u=s.useRef(a);return s.useEffect(()=>{u.current=a},[a]),s.useEffect(()=>{const f=r??"",l=c(f);i.current&&i.current.value!==String(f)&&(i.current.value=String(f)),l!==d.current&&(d.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:m,style:{alignItems:"left"},className:U(A.input,A.textInput),placeholder:"https://example.com","aria-invalid":!!c(String(r??"")),"aria-describedby":c(String(r??""))?`${e.name}-error`:void 0})})},Ee=new ge,zt=new Set(["checkbox","switch","dropdown","radio","multi-selection","slider","stepper","color","rating"]),or={checkbox:Ur,color:Yr,date:Gr,dropdown:Kr,email:Zr,file:et,float:it,"float-array":at,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:Dt,url:Vt};function sr(e,r,n){if(!n&&e in or){console.warn(`Can't Overwrite Base Component type "${e}".`);return}if(zt.has(e)){Ee.register(e,r);return}const a=t=>{const{callback:i,cancel:c}=Je((...m)=>{const d=t.onChange;typeof d=="function"&&d(...m)},200);return s.useEffect(()=>()=>{c()},[c]),s.createElement(r,{...t,onChange:i})};Ee.register(e,a)}function Tt(e,r){sr(e,r,!1)}function ir(e){return Ee.get(e)}let Ye=!1;function cr(){Ye||(Object.entries(or).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 a={name:r||"Unnamed Instance",version:e.version,definition:e.name,values:n},t=JSON.stringify(a,null,2);alert(t)});const fr=s.memo(({field:e,value:r,handleChange:n,handleError:a})=>{const t=ir(e.type),o=s.useCallback((c,m)=>n(e.name,c,m),[n,e.name]),i=s.useCallback(c=>a?.(e.name,c),[a,e.name]);return t?h.jsx(t,{field:e,value:r,onChange:o,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,a)=>h.jsx(fr,{field:e,value:r[e.name],handleChange:n,handleError:a},e.name),dr=s.memo(({groupName:e,isOpen:r,fields:n,valuesMap:a,handleChange:t,handleError:o,toggleGroup:i,t:c})=>{const m=s.useCallback(()=>i(e),[i,e]),{formStyle:d,fieldStyle:u}=D(),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||{},...u?.fieldset||{}}),[d,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)",...d?.legend||{},...u?.legend||{}}),[d,u]);return h.jsxs("fieldset",{style:f,children:[h.jsxs("legend",{onClick:m,style:l,children:[h.jsx("span",{children:c(e)}),h.jsx("span",{children:r?"▼":"▶"})]}),r&&n.map(g=>h.jsx("div",{children:mr(g,a,t,o)},g.name))]})});dr.displayName="FieldGroup";const Pt=(e,r,n,a,t,o,i,c,m)=>{const d=r.slice(0,c).filter(g=>i[g.name]),f=zr(d).groups,l=[];return f.forEach(g=>{if(g.name){const y=e[g.name]??!0;l.push(h.jsx(dr,{groupName:g.name,isOpen:y,fields:g.fields,valuesMap:n,handleChange:t,handleError:o,toggleGroup:m,t:a},g.name))}else g.fields.forEach(y=>l.push(h.jsx("div",{children:mr(y,n,t,o)},y.name)))}),l},_t=e=>{const r={};return e.forEach(n=>{r[n.name]=!1}),r},Oe=(e,r,n,a)=>{const t=r[e];if(!t?.children)return;const o=n[e],i=o!=null?String(o):"";(t.children[i]||[]).forEach(m=>{a[m]=!0,Oe(m,r,n,a)})},pr=(e,r,n)=>{const a=r[e];a?.children&&Object.values(a.children).flat().forEach(t=>{n[t]=!1,pr(t,r,n)})},qt=(e,r,n,a)=>{const t={...n};return e.forEach(o=>{(!o.parents||Object.keys(o.parents).length===0)&&(t[o.name]=!0,Oe(o.name,a,r,t))}),t},Bt=(e,r,n,a,t)=>{const o={...e};if(pr(a,r,o),t!=null){const i=r[a];if(i?.children){const c=String(t);(i.children[c]||[]).forEach(d=>{o[d]=!0,Oe(d,r,n,o)})}}return o};function Ht(e,r,n,a,t){const o=Object.values(t).filter(Boolean);if(o.length>0)return{success:!1,message:a("Please fix validation errors before submitting."),errors:o};const i={...n},c=[];if(e&&Array.isArray(e.properties))for(const d of e.properties){const u=d.name,f=i[u];if(f==null)continue;const l=d.type;try{if(l==="int"||l==="number"||l==="float"){const g=Number(String(f).trim());isNaN(g)?c.push(a(`Invalid number format for field ${d.displayName||u}`)):i[u]=g}else if(l==="int-array"||l==="float-array"){const y=String(f).split(",").map(p=>p.trim()).filter(Boolean).map(p=>{const x=Number(p);return isNaN(x)?(c.push(a(`Invalid number "${p}" in array for field ${d.displayName||u}`)),0):x});c.length===0&&(i[u]=y)}}catch(g){c.push(a(`Error processing field ${d.displayName||u}: ${g}`))}}if(c.length>0)return{success:!1,message:a("Data transformation errors occurred."),errors:c};const m=er(e,i,a);if(m&&m.length>0)return{success:!1,message:"Validation Fail",errors:m};if(e&&typeof e.submitHandlerName=="string"){const d=Lt(e.submitHandlerName);if(d)try{const u=d(e,r?.name??null,i,a);if(u&&u.length>0)return{success:!1,message:a("Submission failed."),errors:Array.isArray(u)?u:[u]}}catch(u){return{success:!1,message:a("Submission handler error occurred."),errors:[String(u)]}}}return{success:!0,message:a("Form submitted successfully."),data:i}}const gr=({definition:e,instance:r,chunkSize:n=50,chunkDelay:a=50})=>{const{properties:t,displayName:o}=e,i=D(),{t:c,formStyle:m,language:d}=i,u={...i,definitionName:e?.name??i.definitionName},[f,l]=s.useState("en"),[g,y]=s.useState([]),[p,x]=s.useState({}),[R,v]=s.useState({}),[E,k]=s.useState({}),[w,S]=s.useState({}),[N,I]=s.useState({}),[j,F]=s.useState(null),[M,z]=s.useState(null),[B,Q]=s.useState(0),[K,oe]=s.useState(!1),[J,ee]=s.useState(!1),[Y,V]=s.useState(r.name||""),b=s.useRef(r),C=s.useRef(!1);s.useEffect(()=>{const $=Object.fromEntries(t.map(_=>[_.name,{..._,children:{}}]));t.forEach(_=>{_.parents&&Object.entries(_.parents).forEach(([se,he])=>{const ie=$[se];ie&&he.forEach(yr=>{ie.children||(ie.children={});const De=String(yr);ie.children[De]=[...ie.children[De]||[],_.name]})})}),Vr(t,$);const T=Object.values($),W={};T.forEach(_=>{if(_.type==="unit"){const se=typeof _.defaultValue=="number"?String(_.defaultValue):"",he=typeof _.defaultUnit=="string"?_.defaultUnit:String(_.defaultUnit??"m");W[_.name]=[se,he]}else W[_.name]=_.defaultValue}),b.current=r,Object.keys(r.values).forEach(_=>{$[_]!==void 0&&(W[_]=r.values[_])});const G=_t(T),Z={};T.forEach(_=>{_.group&&!(_.group in Z)&&(Z[_.group]=!0)});const ae=requestAnimationFrame(()=>{y(T),x($),v(W),k(qt(T,W,G,$)),S(Z),oe(!0),V(r.name)});return()=>cancelAnimationFrame(ae)},[t,r,e]),s.useEffect(()=>{if(!K||B>=g.length)return;const $=setTimeout(()=>{Q(T=>Math.min(T+n,g.length))},a);return()=>clearTimeout($)},[K,B,g.length,n,a]);const O=s.useCallback(($,T,W)=>{F(null),z(null),v(G=>{const Z={...G,[$]:T},ae=p[$];return ae&&["checkbox","dropdown","multi-select","radio","switch"].includes(ae.type)&&k(se=>Bt(se,p,Z,$,String(T))),Z}),I(G=>W?{...G,[$]:W}:Object.fromEntries(Object.entries(G).filter(([ae])=>ae!==$)))},[p,F,z]);s.useEffect(()=>{let $=0;return $=requestAnimationFrame(()=>{d!==f&&(l(d||"en"),F(null),z(null))}),()=>cancelAnimationFrame($)},[d,f]),s.useEffect(()=>{let $=0;return $=requestAnimationFrame(()=>{if(C.current){C.current=!1,b.current=r,V(r.name||"");return}b.current=r,F(null),z(null),V(r.name||"")}),()=>cancelAnimationFrame($)},[r,r.name]);const H=s.useCallback(($,T)=>{I(W=>T?{...W,[$]:String(T)}:Object.fromEntries(Object.entries(W).filter(([Z])=>Z!==$)))},[]),X=()=>{C.current=!0;const $=b.current?.name;b.current.name=Y;const T=Ht(e,b.current,R,c,N),W=typeof T.message=="string"?T.message:String(T.message),G=Object.values(T.errors??{}).join(`
|
|
293
|
-
`);F(G?W+`
|
|
294
|
-
`+G:W),z(T.success),T.success||(b.current.name=$??b.current.name,V($??""))},re=$=>{S(T=>({...T,[$]:!T[$]}))},L=s.useMemo(()=>Object.values(N).some(Boolean),[N]);return h.jsx(ke.Provider,{value:u,children:h.jsxs("div",{style:m.container,children:[o&&h.jsx("h2",{style:m.titleStyle,children:c(o)}),j&&h.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:[h.jsx("div",{style:{whiteSpace:"pre-wrap",flex:1},children:j}),h.jsx("button",{onClick:()=>{F(null),z(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:Y,onChange:$=>{V($),F(null),z(null)}}),h.jsxs(h.Fragment,{children:[Pt(w,g,R,c,O,H,E,B,re),B<g.length&&h.jsx("div",{style:{fontSize:"0.9em",color:"var(--reactaform-text-muted, #666)"}})]}),h.jsx("button",{onClick:X,disabled:L,onMouseEnter:()=>ee(!0),onMouseLeave:()=>ee(!1),style:{padding:"var(--reactaform-button-padding, var(--reactaform-space) 12px)",backgroundColor:L?"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:L?"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:L?"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
|
+
`,Ee=_.createContext(void 0),F=()=>{const e=_.useContext(Ee);if(!e)throw new Error("❌ useReactaFormContext must be used within a <ReactaFormProvider>");return e};class de{map={};register(r,t){this.map[r]=t}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(([t,o])=>this.register(t,o)):Object.entries(r).forEach(([t,o])=>this.register(t,o))}getOrDefault(r,t){return this.get(r)??t}}function Xe(e,r=300,t){const o=_.useRef(void 0),n=_.useRef(e),a=_.useRef(null),l=_.useRef(!1);_.useEffect(()=>{n.current=e},[e]),_.useEffect(()=>()=>{o.current!==void 0&&(window.clearTimeout(o.current),o.current=void 0)},[]);const c=_.useCallback(()=>{o.current!==void 0&&(window.clearTimeout(o.current),o.current=void 0),a.current=null,l.current=!1},[]),s=_.useCallback(()=>{if(o.current!==void 0&&(window.clearTimeout(o.current),o.current=void 0),a.current)try{n.current(...a.current)}finally{a.current=null,l.current=!1}},[]);return{callback:_.useCallback((...u)=>{if(t?.leading===!0&&!l.current){l.current=!0,n.current(...u),window.clearTimeout(o.current),o.current=window.setTimeout(()=>{l.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&&(n.current(...a.current),a.current=null,l.current=!1)},r)},[r,t?.leading]),cancel:c,flush:s}}const E={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"},T=(...e)=>{const r=[];for(const t of e)t&&(typeof t=="string"?r.push(t):typeof t=="object"&&Object.entries(t).forEach(([o,n])=>{n&&r.push(o)}));return r.join(" ")},Ze=({content:e,size:r="medium",animation:t=!0})=>{const{t:o,darkMode:n,formStyle:a,fieldStyle:l}=F(),[c,s]=i.useState(!1),[m,u]=i.useState({x:0,y:0}),[d,f]=i.useState(!1),h=i.useRef(null),b=i.useRef(null),p=i.useRef(null),y=i.useId(),C=i.useMemo(()=>{const w={icon:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"1.2em",height:"1.2em",fontSize:"0.9em",fontWeight:"bold",borderRadius:"50%",backgroundColor:n?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.06)",color:n?"#f0f0f0":"#333",border:`1px solid ${n?"rgba(255,255,255,0.2)":"rgba(0,0,0,0.1)"}`,cursor:"pointer",transition:t?"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:"fixed",backgroundColor:`var(--reactaform-tooltip-color-bg, ${n?"rgba(45,45,45,0.95)":"rgba(60,60,60,0.92)"})`,color:`var(--reactaform-tooltip-color, ${n?"#f0f0f0":"#fff"})`,borderRadius:"6px",border:`1px solid ${n?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)"}`,boxShadow:n?"0 8px 16px rgba(0,0,0,0.4)":"0 6px 18px rgba(0,0,0,0.12)",zIndex:2147483647,opacity:0,pointerEvents:"none",transition:t?"opacity 0.2s ease":void 0,whiteSpace:"normal",wordBreak:"break-word",boxSizing:"border-box"},textVisible:{opacity:1,pointerEvents:"auto"}},v=(M,S,k)=>{const D=M?.[S];return(k&&D?D[k]:void 0)??{}};return{icon:{...w.icon,...v(a,"tooltip","icon"),...v(l,"tooltip","icon")},text:{...w.text,...v(a,"tooltip","text"),...v(l,"tooltip","text")},textVisible:w.textVisible}},[n,r,t,a,l]);i.useLayoutEffect(()=>{if(!c||!h.current||!b.current)return;const N=h.current.getBoundingClientRect(),w=b.current.getBoundingClientRect(),v=8,R=window.innerWidth,M=window.innerHeight;let S=N.right+v,k=N.top+N.height/2-w.height/2;S+w.width>R-v&&(S=N.left-v-w.width),S=Math.max(v,Math.min(S,R-w.width-v)),k=Math.max(v,Math.min(k,M-w.height-v)),u({x:S,y:k}),f(!0)},[c]),i.useEffect(()=>{if(!d)return;const N=requestAnimationFrame(()=>{if(!b.current)return;const w=b.current.getBoundingClientRect(),v=8,R=typeof window<"u"?window.innerWidth:1024,M=typeof window<"u"?window.innerHeight:768;let S=m.x,k=m.y;const I=p.current;I&&(S=I.right+v,k=I.top+I.height/2-w.height/2+-4,S+w.width>R-v&&(S=I.left-v-w.width)),S+w.width>R-v&&(S=Math.max(v,R-w.width-v)),S<v&&(S=v),k+w.height>M-v&&(k=Math.max(v,M-w.height-v)),k<v&&(k=v),(S!==m.x||k!==m.y)&&u({x:S,y:k})});return()=>cancelAnimationFrame(N)},[d,m.x,m.y]);const x=typeof document<"u"?document.getElementById("popup-root"):null,j=g.jsx("div",{ref:b,"data-tooltip-id":y,style:{...C.text,transform:d?"translateY(0) scale(1)":"translateY(-4px) scale(0.98)",transition:"opacity 120ms ease, transform 120ms ease, visibility 120ms ease",width:240,...d?C.textVisible:{},top:m.y,left:m.x},"data-reactaform-theme":n?"dark":"light",children:o(e)});return g.jsxs(g.Fragment,{children:[g.jsx("span",{"data-testid":"tooltip-icon",ref:h,"aria-describedby":c?y:void 0,onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),style:{...C.icon},children:"?"}),c&&(x?ke.createPortal(j,x):j)]})},ve=i.memo(({field:e,error:r,children:t,showLabel:o=!0})=>{const{t:n}=F(),a=e?.labelLayout==="column-center"?"center":"left";return g.jsxs("div",{className:`${E.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:E.label,htmlFor:e.name,style:{textAlign:a,width:"100%",minWidth:"unset",display:"block",marginBottom:"10px"},children:n(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:t})}),e.tooltip&&g.jsx(Ze,{content:e.tooltip})]}),r&&g.jsx(Ne,{id:`${e.name}-error`,children:r})]})});ve.displayName="ColumnFieldLayout";const Qe=i.memo(({field:e,error:r,children:t,rightAlign:o=!1})=>{const{t:n}=F(),a=i.useMemo(()=>({display:"flex",flexDirection:"column",gap:0}),[]),l=i.useMemo(()=>({display:"flex",flexDirection:"row",alignItems:"center",gap:"3px"}),[]);return g.jsxs("div",{className:`${E.field} row-layout`,children:[g.jsx("label",{id:`${e.name}-label`,className:E.label,htmlFor:e.name,style:{textAlign:"left",justifyContent:"flex-start"},children:n(e.displayName)}),g.jsxs("div",{style:a,children:[g.jsxs("div",{style:l,children:[o?g.jsx("div",{style:{display:"flex",flex:1,justifyContent:"flex-end",alignItems:"center",gap:"var(--reactaform-inline-gap, 8px)"},children:t}):t,e.tooltip&&g.jsx(Ze,{content:e.tooltip})]}),r&&g.jsx(Ne,{id:`${e.name}-error`,children:r})]})]})});Qe.displayName="RowFieldLayout";const q=({field:e,error:r,children:t,rightAlign:o=!1})=>e.labelLayout==="column-left"||e.labelLayout==="column-center"?g.jsx(ve,{field:e,error:r,showLabel:!0,children:t}):e.type==="checkbox"||e.type==="switch"?g.jsx(ve,{field:e,error:r,showLabel:!1,children:t}):g.jsx(Qe,{field:e,error:r,rightAlign:o,children:t}),Ne=i.memo(({children:e,id:r})=>{const t=i.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:t,children:e})});Ne.displayName="ErrorDiv";const er=i.memo(({name:e,onChange:r})=>{const{t}=F();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:t("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:t("Enter instance name")})]}),g.jsx("div",{style:{height:"1px",backgroundColor:"var(--reactaform-separator, #e6e6e6)",marginTop:12,marginBottom:12}})]})});er.displayName="InstanceName";class Er extends de{registerInCategory(r,t,o){this.get(r)||this.register(r,{});const n=this.get(r);n[t]=o}getFromCategory(r,t){return this.get(r)?.[t]}listFromCategory(r){return Object.keys(this.get(r)||{})}listCategories(){return this.list()}}const rr=new de,tr=new Er;function nr(e,r){rr.register(e,r)}function or(e,r,t){tr.registerInCategory(e,r,t)}function ar(e,r){return tr.getFromCategory(e,r)||null}function sr(e){return rr.get(e)||null}function Nr(e){return(typeof e=="object"||typeof e=="function")&&e!==null&&typeof e.then=="function"}const be=new Map,ye=new Map;function z(e,r,t,o){if(!r)return null;let n=null,a=null;if(typeof r.validationHandlerName=="string")n=e,a=r.validationHandlerName;else if(Array.isArray(r.validationHandlerName)){const[s,m]=r.validationHandlerName;m?(n=s,a=m):s&&(n=e,a=s)}if(n===null||a===null)return null;const l=`${n}:${a}`;if(!be.has(l)){const s=ar(n,a);be.set(l,s)}const c=be.get(l);if(c)try{return c(t,o)||null}catch(s){return String(s instanceof Error?s.message:s)}return null}async function ir(e,r,t){if(e&&typeof e.validationHandlerName=="string"){const o=e.validationHandlerName;if(!ye.has(o)){const a=sr(o);ye.set(o,a)}const n=ye.get(o);if(n)try{const a=n(r,t);return Nr(a)?await a||null:a||null}catch(a){return[String(a instanceof Error?a.message:a)]}}return null}function Z(e){return typeof e=="object"&&e!==null}function Ie(e){if(!Z(e))return!1;const r=e;return typeof r.name=="string"&&typeof r.displayName=="string"}function cr(e){if(!Z(e))return!1;const r=e;return typeof r.name!="string"||typeof r.version!="string"||!Array.isArray(r.properties)?!1:r.properties.every(t=>Ie(t))}function we(e){try{return typeof File<"u"&&e instanceof File}catch{const r=Z(e)?e:void 0;return!!r&&typeof r.name=="string"&&typeof r.size=="number"}}function Ir(e,r,t={}){try{const{includeMetadata:o=!1,dateFormat:n="iso",fileHandling:a="metadata",prettify:l=!1,excludeFields:c=[],includeOnlyFields:s=[]}=t;if(!e||typeof e!="object")return{success:!1,error:"Instance must be a valid object"};const m=[],u=[],d={},h=(cr(r)||Z(r)&&Array.isArray(r.properties)?r.properties:[]).filter(Ie),b=new Map(h.map(y=>[y.name,y]));for(const[y,C]of Object.entries(e)){if(c.includes(y)){u.push(y);continue}if(s.length>0&&!s.includes(y)){u.push(y);continue}if(C===void 0)continue;const x=b.get(y);try{d[y]=Mr(C,x,{dateFormat:n,fileHandling:a})}catch(j){m.push(`Error serializing field '${y}': ${String(j)}`),d[y]=null}}return o&&(d._metadata={serializedAt:new Date().toISOString(),version:(Z(r)?r.version:void 0)||"1.0.0",fieldCount:Object.keys(d).length-1}),{success:!0,data:l?JSON.stringify(d,null,2):JSON.stringify(d),metadata:{fieldCount:Object.keys(d).length,excludedFields:u,warnings:m}}}catch(o){return{success:!1,error:`Serialization failed: ${o instanceof Error?o.message:"Unknown error"}`}}}function Mr(e,r,t={}){const{dateFormat:o="iso",fileHandling:n="metadata"}=t;if(e==null)return null;if(r)switch(r.type){case"date":case"datetime":case"date-time":return He(e,o);case"file":return Te(e,n);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?He(e,o):we(e)||Array.isArray(e)&&we(e[0])?Te(e,n):e}function He(e,r){let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){const o=new Date(e);if(!isNaN(o.getTime()))t=o;else return e}else return e;switch(r){case"timestamp":return t.getTime();case"locale":return t.toLocaleString();case"iso":default:return t.toISOString()}}function Te(e,r){return r==="skip"?null:Array.isArray(e)?e.map(t=>Be(t,r)):Be(e,r)}function Be(e,r){if(!we(e))return e;const t=e;return r==="metadata"?{name:t.name,size:t.size,type:t.type,lastModified:t.lastModified}:{name:t.name,size:t.size,type:t.type,lastModified:t.lastModified,_note:"Base64 encoding requires async implementation"}}function $r(e,r,t={}){try{const{strict:o=!1,validateTypes:n=!0,preserveUnknownFields:a=!0,dateFormat:l="auto"}=t;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(p){return{success:!1,error:`Invalid JSON: ${p instanceof Error?p.message:"Unknown parsing error"}`}}if(!c||typeof c!="object")return{success:!1,error:"Parsed data must be an object"};const s=[],m=[],u={},f=(cr(r)||Z(r)&&Array.isArray(r.properties)?r.properties:[]).filter(Ie),h=new Map(f.map(p=>[p.name,p]));for(const p of f){const y=p.name,C=c[y];if(C===void 0){o&&p.required&&m.push(`Required field '${y}' is missing`);continue}try{u[y]=Fr(C,p,{validateTypes:n,dateFormat:l})}catch(x){const j=`Error deserializing field '${y}': ${String(x)}`;o?m.push(j):(s.push(j),u[y]=C)}}if(a)for(const[p,y]of Object.entries(c))!h.has(p)&&p!=="_metadata"&&(o&&s.push(`Unknown field '${p}' preserved`),u[p]=y);const b=m.length>0;return{success:!b,data:u,warnings:s.length>0?s:void 0,validationErrors:b?m:void 0}}catch(o){return{success:!1,error:`Deserialization failed: ${o instanceof Error?o.message:"Unknown error"}`}}}function Fr(e,r,t={}){const{validateTypes:o=!0,dateFormat:n="auto"}=t;if(e==null)return e;try{switch(r.type){case"date":case"datetime":case"date-time":return Dr(e,n,o);case"int":case"integer":return Se(e,o);case"float":case"number":return Ce(e,o);case"boolean":return Or(e,o);case"int-array":return Ue(e,"integer",o);case"float-array":return Ue(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 Vr(e,r={}){try{const{prettify:t=!0,includeMetadata:o=!0}=r;if(!e||typeof e!="object")return{success:!1,error:"Definition must be a valid object"};const n={...e};return o&&(n._metadata={serializedAt:new Date().toISOString(),version:n.version||"1.0.0",propertyCount:(Array.isArray(n.properties)?n.properties.length:0)||0}),{success:!0,data:t?JSON.stringify(n,null,2):JSON.stringify(n),metadata:{fieldCount:(Array.isArray(n.properties)?n.properties.length:0)||0,excludedFields:[],warnings:[]}}}catch(t){return{success:!1,error:`Definition serialization failed: ${t instanceof Error?t.message:"Unknown error"}`}}}function Ar(e,r={}){try{const{strict:t=!1,validateTypes:o=!0}=r;let n;if(typeof e=="string")try{n=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")n={...e};else return{success:!1,error:"Input must be a string or object"};const a=[],l=[],c=["name","version","displayName"];for(const u of c)if(!n[u])if(t)l.push(`Required field '${u}' is missing`);else switch(a.push(`Missing field '${u}', using default`),u){case"name":n.name="unnamed-definition";break;case"version":n.version="1.0.0";break;case"displayName":n.displayName=n.name||"Unnamed Definition";break}const s=Array.isArray(n.properties)?n.properties:null;s?n.properties=s.map((u,d)=>{const f=Z(u)?u:{},h={...f};if(!f.name){const b=`Property at index ${d} missing 'name'`;t?l.push(b):(a.push(`${b}, using 'field_${d}'`),h.name=`field_${d}`)}return f.displayName||(h.displayName=f.name||`Field ${d}`),f.type||(t&&o?l.push(`Property '${f.name||d}' missing 'type'`):(a.push(`Property '${f.name||d}' missing 'type', using 'string'`),h.type="string")),f.defaultValue===void 0&&(h.defaultValue=null),f.required===void 0&&(h.required=!1),h}):t?l.push("Properties must be an array"):(a.push("Properties not found or invalid, using empty array"),n.properties=[]);const m=l.length>0;return{success:!m,data:n,warnings:a.length>0?a:void 0,validationErrors:m?l:void 0}}catch(t){return{success:!1,error:`Definition deserialization failed: ${t instanceof Error?t.message:"Unknown error"}`}}}function Dr(e,r,t){if(e instanceof Date)return e;if(typeof e=="number"){const o=new Date(e);if(t&&isNaN(o.getTime()))throw new Error(`Invalid timestamp: ${e}`);return o}if(typeof e=="string"){const o=new Date(e);if(t&&isNaN(o.getTime()))throw new Error(`Invalid date string: ${e}`);return o}if(t)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 t=parseInt(e,10);if(r&&isNaN(t))throw new Error(`Cannot convert "${e}" to integer`);return t}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 t=parseFloat(e);if(r&&isNaN(t))throw new Error(`Cannot convert "${e}" to number`);return t}if(r)throw new Error(`Cannot convert ${typeof e} to number`);return e}function Or(e,r){if(typeof e=="boolean")return e;if(typeof e=="string"){const t=e.toLowerCase();if(t==="true"||t==="1")return!0;if(t==="false"||t==="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 Ue(e,r,t){if(!Array.isArray(e)){if(typeof e=="string")return e.split(",").map(n=>n.trim()).filter(Boolean).map(n=>r==="integer"?Se(n,t):Ce(n,t));if(t)throw new Error(`Expected array, got ${typeof e}`);return e}return e.map((o,n)=>{try{return r==="integer"?Se(o,t):Ce(o,t)}catch(a){if(t)throw new Error(`Array element ${n}: ${a}`);return o}})}const zr=(e,r)=>{const t=new Map;let o=null,n=null,a=0;for(const l of e){const c=l.group;if(!c){o=null,n=null;continue}if(c===o)r[l.name].group=n??c;else{if(!t.has(c))t.set(c,1),n=null,r[l.name].group=c;else{const s=t.get(c),m=`${c}(${s})`;t.set(c,s+1),n=m,r[l.name].group=m,a++}o=c}}return a},Lr=(e,r={})=>{const{includeEmpty:t=!0}=r,o=[];let n=null,a=[],l=0;for(const s of e){const m=s.group||null;m!==n?((a.length>0||t)&&(a.length===0&&l++,o.push({name:n,fields:a})),n=m,a=[s]):a.push(s)}(a.length>0||t)&&(a.length===0&&l++,o.push({name:n,fields:a}));const c=Math.max(0,...o.map(s=>s.fields.length));return{groups:o,metadata:{totalGroups:o.length,emptyGroups:l,largestGroup:c}}},xe=new Map,ue=new Map,X=new Set,je=new Map,Pr=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}`}}},qr=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 t=await Pr(r);return t.success&&(xe.set(r,t.translations),je.set(r,{loadedAt:new Date,size:Object.keys(t.translations).length,source:"common"})),t},Hr=async(e,r)=>{if(!e||!r)return{success:!1,translations:{},error:"Both language and localizeName are required"};const t=`${e.toLowerCase()}/${r}`;if(X.has(t))return{success:!1,translations:{},error:"Previously failed to load",fromCache:!0};if(ue.has(t))return{success:!0,translations:ue.get(t)||{},fromCache:!0};try{let o=r;!r.includes("/")&&!r.includes(".")&&(o=`/locales/${e}/${r}.json`);const n=await fetch(o);if(!n.ok){const m=`HTTP ${n.status}: ${n.statusText}`;return n.status===404?(ue.set(t,{}),je.set(t,{loadedAt:new Date,size:0,source:"user"}),{success:!0,translations:{},fromCache:!1}):(X.add(t),{success:!1,translations:{},error:m})}const a=n.headers.get("content-type")||"";!a.includes("application/json")&&!a.includes("text/json")&&lr()&&console.warn(`Translation file at ${o} has unexpected content-type: ${a}`);const l=await n.text();if(!l){const m="Empty translation file";return X.add(t),{success:!1,translations:{},error:m}}let c;try{c=JSON.parse(l)}catch(m){const u=`Invalid JSON in translation file: ${m instanceof Error?m.message:String(m)}`;return X.add(t),{success:!1,translations:{},error:u}}if(!c||typeof c!="object"){const m="Invalid translation file format";return X.add(t),{success:!1,translations:{},error:m}}const s=Object.fromEntries(Object.entries(c).map(([m,u])=>[m,typeof u=="string"?u:String(u)]));if(!s||typeof s!="object"){const m="Invalid translation file format";return X.add(t),{success:!1,translations:{},error:m}}return ue.set(t,s),je.set(t,{loadedAt:new Date,size:Object.keys(s).length,source:"user"}),{success:!0,translations:s,fromCache:!1}}catch(o){const n=`Failed to load user translations: ${o instanceof Error?o.message:"Unknown error"}`;return X.add(t),{success:!1,translations:{},error:n}}};function lr(){try{if(typeof process<"u"&&process?.env?.NODE_ENV==="development")return!0}catch{}return!1}function Tr(e,r){return r.length===0?e:e.replace(/\{\{(\d+)\}\}/g,(t,o)=>{const n=parseInt(o,10)-1,a=r[n];if(a==null)return t;try{return String(a)}catch{return t}})}const Br=(e,r,t)=>(o,...n)=>{let a=o,l=!1;return!o||typeof o!="string"?String(o||""):(e.toLowerCase()==="en"?(a=o,l=!0):Object.prototype.hasOwnProperty.call(t,o)?(a=t[o],l=!0):Object.prototype.hasOwnProperty.call(r,o)?(a=r[o],l=!0):a=o,a=Tr(a,n),!l&&lr()&&console.debug(`Missing translation for "${o}" in language "${e}"`),a)},Me={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"]},$e={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)"}},Fe={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}},Ve={},Ur=new Set([...Object.keys(Me),...Object.keys($e),...Object.keys(Fe)]);for(const e of Ur){const r={},t=Me[e]??[],o=$e[e]??{},n=Fe[e]??{};for(const a of t){const l=o[a];r[a]={name:typeof l=="string"?l:String(a),shortName:a,factor:Object.prototype.hasOwnProperty.call(n,a)?n[a]:void 0}}for(const[a,l]of Object.entries(o))if(!r[a]){const c=typeof l=="string"?l:String(a);r[a]={name:c,shortName:a,factor:Object.prototype.hasOwnProperty.call(n,a)?n[a]:void 0}}for(const[a,l]of Object.entries(n))r[a]||(r[a]={name:String(a),shortName:String(a),factor:l});Ve[e]=r}const Wr=Object.freeze(Object.defineProperty({__proto__:null,dimensionUnitDisplayMap:$e,dimensionUnitsMap:Me,dimensonUnitFactorsMap:Fe,unitsByDimension:Ve},Symbol.toStringTag,{value:"Module"})),_r=({field:e,value:r,onChange:t,onError:o})=>{const{definitionName:n,t:a}=F(),l=i.useRef(o);i.useEffect(()=>{l.current=o},[o]),i.useEffect(()=>{const d=z(n,e,r??!1,a);l.current?.(d??null)},[r,e,n,a]);const c=d=>{const f=d.target.checked;t?.(f,null)},s=d=>{(d.key===" "||d.key==="Spacebar"||d.key==="Space"||d.key==="Enter")&&(d.preventDefault(),t?.(!r,null))},m=e.name,u=z(n,e,r??!1,a);return g.jsx(q,{field:e,rightAlign:!1,children:g.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[g.jsx("label",{className:E.label,htmlFor:m,style:{textAlign:"left",justifyContent:"flex-start"},children:a(e.displayName)}),g.jsx("input",{id:m,"data-testid":"boolean-checkbox",type:"checkbox",checked:!!r,onChange:c,onKeyDown:s,"aria-checked":!!r,"aria-invalid":!!u,"aria-describedby":u?`${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}})]})})},We=[{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 ur(e){return/^#([0-9A-F]{3}){1,2}$/i.test(e)}function Kr(e){if(!ur(e))return null;const r=fr(e),t=parseInt(r.slice(1),16);return{r:t>>16&255,g:t>>8&255,b:t&255}}function fr(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 Jr=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),[l,c]=i.useState("#000000"),s=i.useRef(null),m=i.useRef(null),u=i.useRef(o);i.useEffect(()=>{u.current=o},[o]),i.useEffect(()=>{const x=r&&ur(r)?r:"#000000",j=fr(x);c(j)},[r]),i.useEffect(()=>{const x=z(a,e,r??"#000000",n);u.current?.(x??null)},[r,e,a,n]);const d=z(a,e,r??"#000000",n),f=x=>{const j=x.target.value;c(j),t?.(j,null)},h=x=>{const j=x.target.value;c(j),t?.(j,null)},b=We.find(x=>x.value===l),{r:p,g:y,b:C}=Kr(l)||{r:0,g:0,b:0};return g.jsx(q,{field:e,error:d,children:g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",width:"100%"},children:[g.jsxs("select",{ref:s,id:e.name,value:l,onChange:f,style:{minWidth:"120px",flex:1},className:T(E.input,E.inputSelect),"aria-invalid":!!d,"aria-describedby":d?`${e.name}-error`:void 0,children:[We.map(x=>g.jsx("option",{value:x.value,children:n(x.label)},x.value)),b?null:g.jsxs("option",{value:l,children:["(",p,", ",y,", ",C,")"]},l)]}),g.jsx("label",{style:{width:"2.5em",height:"1.8em",display:"inline-block",border:"1px solid #ccc",borderRadius:"4px",backgroundColor:l,cursor:"pointer",overflow:"hidden",flexShrink:0},children:g.jsx("input",{ref:m,id:`${e.name}-color`,type:"color",value:l,onChange:h,style:{opacity:0,width:"100%",height:"100%",border:"none",padding:0,cursor:"pointer"},"aria-invalid":!!d,"aria-describedby":d?`${e.name}-error`:void 0})})]})})},se=e=>{if(!e)return null;const r=new Date(e);return isNaN(r.getTime())?null:r},Gr=e=>{if(!e)return"";if(/^\d{4}-\d{2}-\d{2}$/.test(e))return se(e)?e:"";const t=se(e);if(t){const o=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getDate()).padStart(2,"0");return`${o}-${n}-${a}`}return""},Yr=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),{name:l,required:c}=e,s=i.useRef(null),m=i.useRef(o);i.useEffect(()=>{m.current=o},[o]);const u=i.useCallback(f=>{if(!f||f.trim()==="")return c?n("Value required"):null;if(f){const b=se(f);if(!b)return n("Invalid date format");if(e.minDate){const p=se(e.minDate);if(p&&b.getTime()<p.getTime())return n("Date must be on or after {{1}}",e.minDate)}if(e.maxDate){const p=se(e.maxDate);if(p&&b.getTime()>p.getTime())return n("Date must be on or before {{1}}",e.maxDate)}}return z(a,e,f,n)??null},[e,a,n,c]),d=f=>{const h=f.target.value,b=u(h);t?.(h,b)};return i.useEffect(()=>{const f=u(r);f!==s.current&&(s.current=f,m.current?.(f??null))},[r,u]),g.jsx(q,{field:e,error:u(r),children:g.jsx("input",{id:l,type:"date",value:Gr(r),onChange:d,className:T(E.input,E.textInput),...e.minDate?{min:e.minDate}:{},...e.maxDate?{max:e.maxDate}:{},"aria-invalid":!!u(r),"aria-describedby":u(r)?`${l}-error`:void 0})})},Xr=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),l=i.useRef(null),c=i.useRef(o);i.useEffect(()=>{c.current=o},[o]);const s=i.useCallback(u=>u===""||u===null||u===void 0?n("Value required"):!e.options||e.options.length===0?null:e.options.some(f=>f.value===u)?z(a,e,u,n)??null:n("Invalid option selected"),[e,n,a]);i.useEffect(()=>{const u=r!=null?String(r):"",d=s(u);if(d&&e.options&&e.options.length>0){const f=String(e.options[0].value);l.current&&(l.current.value=f),t?.(f,null),c.current?.(null)}else l.current&&(l.current.value=u),c.current?.(d??null)},[r,s,t,e.options]);const m=u=>{const d=u.target.value,f=s(d);t?.(d,f)};return g.jsx(q,{field:e,error:s(String(r??"")),children:g.jsx("select",{id:e.name,"aria-invalid":!!s(String(r??"")),"aria-describedby":s(String(r??""))?`${e.name}-error`:void 0,defaultValue:String(r??""),ref:l,onChange:m,className:T(E.input,E.inputSelect),children:(e.options??[]).map(u=>g.jsx("option",{value:String(u.value),children:n(u.label)},String(u.value)))})})};function Zr(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}const Qr=({field:e,value:r,onChange:t,onError:o})=>{const{definitionName:n,t:a}=F(),l=i.useRef(null),c=i.useCallback(d=>{const f=d.trim();return f===""?e.required?a("Value required"):null:Zr(f)?e.pattern&&!new RegExp(e.pattern).test(f)?e.patternErrorMessage?a(e.patternErrorMessage):a("Email does not match pattern: {{%1}}",{"%1":`${e.pattern}`}):z(n,e,d,a)??null:a("Must be valid email format")},[e,n,a]),s=d=>{const f=d.target.value,h=c(f);t?.(f,h)},m=i.useRef(null),u=i.useRef(o);return i.useEffect(()=>{u.current=o},[o]),i.useEffect(()=>{const d=r??"",f=c(d);l.current&&l.current.value!==String(d)&&(l.current.value=String(d)),f!==m.current&&(m.current=f,u.current?.(f??null))},[r,c]),g.jsx(q,{field:e,error:c(String(r??"")),children:g.jsx("input",{id:e.name,type:"email",defaultValue:String(r??""),ref:l,onChange:s,className:T(E.input,E.textInput),"aria-invalid":!!c(String(r??"")),"aria-describedby":c(String(r??""))?`${e.name}-error`:void 0})})},et=({field:e})=>{const{darkMode:r}=F(),{color:t=r?"#444444":"#CCCCCC",thickness:o=1,margin:n="8px 0"}=e;return g.jsx("div",{style:{width:"auto",height:"0",borderTop:`${o}px solid ${t}`,margin:n}})},rt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),[l,c]=i.useState(!1),s=i.useRef(null),m=i.useRef(o);i.useEffect(()=>{m.current=o},[o]);const u=i.useCallback(x=>e.required&&(!x||Array.isArray(x)&&x.length===0)?n("Value required"):z(a,e,x,n)??null,[e,a,n]),d=i.useMemo(()=>u(r),[r,u]);i.useEffect(()=>{const x=u(r);t?.(r,x),m.current?.(x??null)},[r,u]);const f=x=>{const j=x.target.files;let N=null;if(j&&j.length>0){const v=Array.from(j);e.multiple?N=[...Array.isArray(r)?r:[],...v]:N=v[0]}const w=u(N);t?.(N,w)},h=x=>{x.preventDefault(),x.stopPropagation(),c(!1);const j=x.dataTransfer.files;if(j&&j.length>0){const N=Array.from(j);let w=null;e.multiple?w=[...Array.isArray(r)?r:[],...N]:w=N[0];const v=u(w);t?.(w,v)}},b=x=>{x.preventDefault(),x.stopPropagation(),c(!0)},p=x=>{x.preventDefault(),x.stopPropagation(),c(!1)},y=x=>{if(Array.isArray(r)&&typeof x=="number"){const j=r.filter((v,R)=>R!==x),N=j.length>0?j:null,w=u(N);t?.(N,w)}else{const j=u(null);t?.(null,j)}},C=()=>{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((j,N)=>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:j.name}),g.jsx("button",{type:"button",onClick:()=>y(Array.isArray(r)?N:void 0),"aria-label":n("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:w=>{w.currentTarget.style.backgroundColor="var(--reactaform-bg-hover, #fee)"},onMouseLeave:w=>{w.currentTarget.style.backgroundColor="transparent"},children:"×"})]},`${j.name}-${N}`))})};return g.jsx(q,{field:e,error:d,children:g.jsxs("div",{style:{width:"100%"},children:[g.jsxs("div",{onDrop:h,onDragOver:b,onDragLeave:p,style:{position:"relative",border:`1px dashed ${l?"var(--reactaform-color-primary, #2563eb)":d?"var(--reactaform-color-error, #ef4444)":"var(--reactaform-border-color, #d1d5db)"}`,borderRadius:"var(--reactaform-border-radius, 4px)",padding:"8px 12px",textAlign:"center",backgroundColor:l?"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:()=>s.current?.click(),onKeyDown:x=>{(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),s.current?.click())},role:"button","aria-label":e.multiple?n("Choose Files or Drag & Drop"):n("Choose File or Drag & Drop"),"aria-invalid":!!d,"aria-describedby":d?`${e.name}-error`:void 0,children:[g.jsx("input",{id:e.name,ref:s,type:"file",accept:e.accept,multiple:e.multiple,style:{display:"none"},onChange:f}),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:l?n("Drop files here"):e.multiple?n("Choose Files or Drag & Drop"):n("Choose File or Drag & Drop")}),e.accept&&g.jsx("div",{style:{fontSize:"0.75rem",color:"var(--reactaform-text-muted, #6b7280)",whiteSpace:"nowrap",opacity:l?0:1,transition:"opacity 0.15s ease",pointerEvents:l?"none":"auto"},children:e.accept})]}),C()]})})},tt=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/;function nt(e){return e.split(",").map(r=>r.trim()).every(r=>tt.test(r))}const ot=e=>!e||e.trim()===""?[]:e.split(",").map(r=>r.trim()).filter(Boolean).map(Number),at=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),[l,c]=i.useState(Array.isArray(r)?r.join(", "):String(r??"")),s=i.useCallback(f=>{if(f.trim()==="")return e.required?n("Value required"):null;if(!nt(f))return n("Each value must be a valid float");const h=ot(f);if(e.minCount!==void 0&&h.length<e.minCount)return n("Minimum number of values: {{1}}",e.minCount);if(e.maxCount!==void 0&&h.length>e.maxCount)return n("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 n("Each value must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?p>e.max:p>=e.max))return n("Each value must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max)}return z(a,e,h,n)??null},[a,e,n]),m=f=>{const h=f.target.value,b=s(h);c(h),t?.(h,b)},u=i.useRef(null),d=i.useRef(o);return i.useEffect(()=>{d.current=o},[o]),i.useEffect(()=>{const f=Array.isArray(r)?r.join(", "):String(r??""),h=s(f);h!==u.current&&(u.current=h,d.current?.(h??null))},[r,e.required,s,n]),g.jsx(q,{field:e,error:s(l),children:g.jsx("input",{id:e.name,type:"text",value:l,onChange:m,className:T(E.input,E.textInput),style:{flex:1},"aria-invalid":!!s(l),"aria-describedby":s(l)?`${e.name}-error`:void 0})})},st=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/,it=e=>{const r=Number.parseFloat(e);return Number.isNaN(r)?null:r},ct=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),l=i.useRef(null),c=i.useCallback(d=>{if(d.trim()==="")return e.required?n("Value required"):null;if(!st.test(d))return n("Must be a valid float");const f=it(d);return f===null?n("Must be a valid float"):e.min!==void 0&&(e.minInclusive?f<e.min:f<=e.min)?n("Must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min):e.max!==void 0&&(e.maxInclusive?f>e.max:f>=e.max)?n("Must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max):z(a,e,f,n)??null},[e,a,n]),s=i.useRef(null),m=i.useRef(o);i.useEffect(()=>{m.current=o},[o]),i.useEffect(()=>{const d=String(r??""),f=c(d);f!==s.current&&(s.current=f,m.current?.(f??null)),l.current&&document.activeElement!==l.current&&(l.current.value=d)},[r,e,c,n]);const u=d=>{const f=d.target.value,h=c(f);t?.(f,h)};return g.jsx(q,{field:e,error:c(String(r??"")),children:g.jsx("input",{id:e.name,type:"text",defaultValue:String(r??""),ref:l,onChange:u,className:T(E.input,E.inputNumber),"aria-invalid":!!c(String(r??"")),"aria-describedby":c(String(r??""))?`${e.name}-error`:void 0})})};function lt(){try{return"/"}catch{}try{if(typeof process<"u"&&process?.env?.PUBLIC_URL)return process.env.PUBLIC_URL}catch{}return"/"}const ut=({field:e,value:r})=>{const{language:t,t:o}=F(),n=e.alignment||"center",a={left:"flex-start",center:"center",right:"flex-end"},l=typeof r=="string"?r:"";let c=l&&l.trim()!==""?l:typeof e.defaultValue=="string"?e.defaultValue:"";c&&!c.startsWith("/")&&(c=`${lt()}${c}`);const s=e.localized?.split(";").map(y=>y.trim()),[m,u]=i.useState(c||""),d=i.useRef(c||null);if(i.useEffect(()=>{if(!c)return;const y=c.split("/"),C=y.pop(),x=C.lastIndexOf(".");if(x===-1)return;const j=C.substring(0,x),N=C.substring(x);let w=null;s?.includes(t)&&(w=`${j}_${t}${N}`);const v=new AbortController;if(w){const R=[...y,w].join("/");fetch(R,{method:"HEAD",signal:v.signal}).then(M=>{const S=M.ok?R:c;S!==d.current&&(d.current=S,u(S))}).catch(()=>{c!==d.current&&(d.current=c,u(c))})}else{const R=c;R!==d.current&&(d.current=R,requestAnimationFrame(()=>u(R)))}return()=>{v.abort()}},[c,t,s]),!m)return null;const{width:f,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 f&&h?(b.width=f,b.height=h,p.width=`${f}px`,p.height=`${h}px`):f&&!h?(b.width=f,p.width=`${f}px`,p.height="auto"):!f&&h&&(b.height=h,p.width="auto",p.height=`${h}px`),g.jsx(q,{field:e,children:g.jsx("div",{"data-testid":"image-wrapper",style:{display:"flex",justifyContent:a[n]||"center",margin:"0 0"},children:g.jsx("img",{src:m,alt:o?.(e.displayName||"Image")||e.displayName||"Image",...b,style:p})})})};function ft(e){const r=/^-?\d+$/;return e.split(",").map(t=>t.trim()).every(t=>r.test(t))}const mt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),l=",",[c,s]=i.useState(Array.isArray(r)?r.join(l+" "):String(r??"")),m=p=>!p||p.trim()===""?[]:p.split(l).map(y=>y.trim()).filter(Boolean).map(y=>Number(y)),u=i.useCallback(p=>{if(p.trim()==="")return e.required?n("Value required"):null;if(!ft(p))return n("Each value must be a valid integer");const y=m(p);if(e.minCount!==void 0&&y.length<e.minCount)return n("Minimum number of values: {{1}}",`${e.minCount}`);if(e.maxCount!==void 0&&y.length>e.maxCount)return n("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 n("Each value must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?x>e.max:x>=e.max))return n("Each value must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max)}return z(a,e,y,n)??null},[a,e,n]),d=p=>{const y=p.target.value,C=u(y);s(y),t?.(y,C)},f=i.useRef(null),h=i.useRef(o);i.useEffect(()=>{h.current=o},[o]),i.useEffect(()=>{const p=Array.isArray(r)?r.join(l+" "):String(r??""),y=u(p);y!==f.current&&(f.current=y,h.current?.(y??null))},[r,e.required,u,n]);const b=u(c);return g.jsx(q,{field:e,error:b,children:g.jsx("input",{id:e.name,type:"text",value:c,onChange:d,className:T(E.input,E.textInput),style:{flex:1},"aria-invalid":!!b,"aria-describedby":b?`${e.name}-error`:void 0})})};function dt(e){return/^[-+]?\d*$/.test(e)}const pt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),l=i.useRef(null),c=i.useCallback(h=>{const b=parseInt(h,10);return Number.isNaN(b)?null:b},[]),s=i.useCallback(h=>{if(h.trim()==="")return e.required?n("Value required"):null;if(!dt(h))return n("Must be a valid integer");const b=c(h);if(b===null)return n("Must be a valid integer");if(e.min!==void 0&&(e.minInclusive?b<e.min:b<=e.min))return n("Must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?b>e.max:b>=e.max))return n("Must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max);if(e.step!==void 0){const y=Number(e.step);if(!Number.isInteger(y))return n("Invalid step value");if(b%y!==0)return n("Must be a multiple of {{1}}",y)}return z(a,e,b,n)??null},[e,a,n,c]),m=i.useRef(null),u=i.useRef(o);i.useEffect(()=>{u.current=o},[o]),i.useEffect(()=>{const h=String(r??""),b=s(h);b!==m.current&&(m.current=b,u.current?.(b??null)),l.current&&document.activeElement!==l.current&&(l.current.value=h)},[r,e,s,n]);const d=h=>{const b=h.target.value,p=s(b);t?.(b,p)},f=s(String(r??""));return g.jsx(q,{field:e,error:f,children:g.jsx("input",{id:e.name,type:"text",defaultValue:String(r??""),ref:l,onChange:d,className:T(E.input,E.inputNumber),"aria-invalid":!!f,"aria-describedby":f?`${e.name}-error`:void 0})})},gt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),l=e.minHeight??"80px",c=i.useRef(null),s=i.useRef(null),m=i.useRef(o);i.useEffect(()=>{m.current=o},[o]);const u=i.useCallback(b=>b.trim()===""?e.required?n("Value required"):null:e.minLength!==void 0&&b.length<e.minLength?n("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&b.length>e.maxLength?n("Must be at most {{1}} characters",e.maxLength):z(a,e,b,n),[e,a,n]),d=b=>{const p=b.target.value,y=u(p);t?.(p,y)};i.useEffect(()=>{const b=u(r);b!==s.current&&(s.current=b,m.current?.(b??null)),c.current&&c.current.value!==String(r??"")&&(c.current.value=String(r??""))},[r,u]);const f={id:e.name,defaultValue:String(r??""),ref:c,onChange:d,style:{resize:"vertical",minHeight:l,width:"100%",boxSizing:"border-box"},className:T(E.input,E.textInput)},h=u(r);return g.jsx(q,{field:e,error:h,children:g.jsx("textarea",{...f,"aria-invalid":!!h,"aria-describedby":h?`${e.name}-error`:void 0})})},ht=({field:e,value:r,onChange:t,onError:o})=>{const n=i.useRef(o);i.useEffect(()=>{n.current=o},[o]);const{t:a,darkMode:l,formStyle:c,fieldStyle:s,definitionName:m}=F(),u=(S,k,I)=>{if(!k)return{};const H=S?.[k];return(I&&H?H[I]:void 0)??{}},d=i.useRef(null),[f,h]=i.useState(!1),[b,p]=i.useState(null),y=i.useMemo(()=>e.options.map(S=>({value:S.value,label:a(S.label)})),[e.options,a]),C=i.useMemo(()=>{const S=Array.isArray(r)?r:[],k=new Set(y.map(I=>I.value));return S.filter(I=>k.has(I))},[r,y]),x=S=>{const k=Array.isArray(S)?S:[];return e.required&&k.length===0?a("Value required"):z(m,e,k,a)??null},j=()=>{if(!d.current)return;const S=d.current.getBoundingClientRect();p({x:S.left,y:S.bottom}),h(k=>!k)},N=S=>{const k=C.includes(S)?C.filter(D=>D!==S):[...C,S],I=x(k);n.current?.(I??null),t?.(k,I)},w=i.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(s,void 0,"control")}),[c,s]),v=i.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(s,void 0,"clearButton")}),[c,s]),R=i.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(s,void 0,"arrow")}),[c,s]),M=x(Array.isArray(r)?r:[]);return g.jsxs("div",{children:[g.jsx(q,{field:e,error:null,children:g.jsx("div",{style:{width:"100%"},children:g.jsxs("div",{ref:d,className:"reactaform-multiselection-control",style:w,onClick:j,tabIndex:0,role:"button","aria-haspopup":"listbox","aria-expanded":f,"aria-invalid":!!M,"aria-describedby":M?`${e.name}-error`:void 0,onKeyDown:S=>{(S.key==="Enter"||S.key===" ")&&(S.preventDefault(),j())},children:[g.jsxs("span",{style:{flex:1,color:"var(--reactaform-text-muted, #888)"},children:[C.length," / ",y.length," selected"]}),C.length>0&&g.jsx("button",{type:"button","aria-label":"Clear selections",onClick:S=>{S.stopPropagation(),t?.([],null)},style:v,children:g.jsx("span",{style:v,"aria-hidden":!0,children:"✖"})}),g.jsx("span",{style:R,"aria-hidden":!0,children:"▼"})]})})}),f&&b&&g.jsx(bt,{position:b,options:y,selectedValues:C,onToggleOption:N,onClose:()=>h(!1),controlRef:d,darkMode:l})]})},bt=({position:e,options:r,selectedValues:t,onToggleOption:o,onClose:n,controlRef:a,darkMode:l})=>{const c=i.useRef(null),[s,m]=i.useState(-1),{formStyle:u,fieldStyle:d}=F(),f=(v,R,M)=>{if(!R)return{};const k=v?.[R];return(M&&k?k[M]:void 0)??{}},h=i.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)",...f(u,"multiSelect","popup"),...f(d,void 0,"popup")}),[u,d]),b=i.useMemo(()=>({padding:"6px 8px",cursor:"pointer",display:"flex",alignItems:"center",background:"transparent",color:"var(--reactaform-text-color, #000)",...f(u,"multiSelect","option"),...f(d,void 0,"option")}),[u,d]);i.useEffect(()=>{const v=R=>{const M=R.target;!c.current?.contains(M)&&!a.current?.contains(M)&&n()};return document.addEventListener("mousedown",v),()=>document.removeEventListener("mousedown",v)},[n,a]),i.useEffect(()=>{c.current&&r.length>0&&requestAnimationFrame(()=>m(v=>v===-1?0:v))},[r.length]),i.useEffect(()=>{if(!c.current||s<0)return;const v=c.current.querySelector(`#multi-opt-${s}`);v&&requestAnimationFrame(()=>v.focus())},[s]);const p=250,y=200,[C,x]=i.useState(null),[j,N]=i.useState(null);if(i.useEffect(()=>{if(typeof window>"u")return;const v=()=>{let S=e.x,k=e.y,I=p;const D=a?.current;if(D){const H=D.getBoundingClientRect();S=H.left,k=H.bottom,I=Math.max(80,Math.round(H.width))}S=Math.min(S,window.innerWidth-I),k=Math.min(k,window.innerHeight-y),x({left:S,top:k}),N(I)};v(),window.addEventListener("scroll",v,!0),window.addEventListener("resize",v);let R=null;const M=a?.current;return typeof ResizeObserver<"u"&&M&&(R=new ResizeObserver(()=>v()),R.observe(M)),()=>{window.removeEventListener("scroll",v,!0),window.removeEventListener("resize",v),R&&M&&R.unobserve(M)}},[a,e.x,e.y]),typeof window>"u")return null;let w=document.getElementById("popup-root");return w||(w=document.createElement("div"),w.id="popup-root",document.body.appendChild(w)),ke.createPortal(g.jsx("div",{ref:c,role:"listbox","aria-activedescendant":s>=0?`multi-opt-${s}`:void 0,style:{position:"absolute",top:C?C.top:e.y,left:C?C.left:e.x,width:j??p,...h},"data-reactaform-theme":l?"dark":"light",children:r.map((v,R)=>{const M=t.includes(v.value),S=l?"var(--reactaform-hover-bg, rgba(255,255,255,0.01))":"var(--reactaform-hover-bg, #eee)",k={...b,background:R===s?S:b.background};return g.jsxs("div",{id:`multi-opt-${R}`,onMouseDown:I=>{I.stopPropagation(),o(v.value)},onKeyDown:I=>{const D=r.length;switch(I.key){case"ArrowDown":I.preventDefault(),m(H=>(H+1)%D);break;case"ArrowUp":I.preventDefault(),m(H=>(H-1+D)%D);break;case"Home":I.preventDefault(),m(0);break;case"End":I.preventDefault(),m(D-1);break;case"Enter":case" ":I.preventDefault(),I.stopPropagation(),o(v.value);break;case"Escape":I.preventDefault(),n(),a?.current?.focus();break}},tabIndex:R===s?0:-1,role:"option","aria-selected":M,style:k,onMouseEnter:I=>{I.currentTarget.style.background=S,m(R)},onMouseLeave:I=>{I.currentTarget.style.background="transparent",m(D=>D===R?-1:D)},children:[g.jsx("input",{type:"checkbox",checked:M,readOnly:!0,style:{marginRight:8,width:"1.125em",height:"1.125em",verticalAlign:"middle",accentColor:l?"#10b981":"#22c55e",cursor:"pointer"}}),v.label]},v.value)})}),w)},yt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),l=i.useRef(null),c=e.min??void 0,s=e.max??void 0,m=Math.max(1,Math.round(e.step??1)),u=i.useCallback(y=>isNaN(y)?n("Must be a valid integer"):Number.isInteger(y)?c!==void 0&&y<c?n("Must be �?{{1}}",c):s!==void 0&&y>s?n("Must be �?{{1}}",s):z(a,e,y,n)??null:n("Must be an integer"),[a,e,n,c,s]),d=i.useRef(null),f=i.useRef(o);i.useEffect(()=>{f.current=o},[o]),i.useEffect(()=>{if(document.activeElement===l.current)return;const C=String(r),x=u(r);l.current&&(l.current.value=C),x!==d.current&&(d.current=x,f.current?.(x??null))},[r,u]);const h=y=>{if(y.trim()==="")return e.required?n("Value required"):null;const x=Number(y);return u(x)},b=y=>{const C=y.target.value,x=y.target.valueAsNumber,j=h(C);t?.(x,j)},p=h(String(r??""));return g.jsx(q,{field:e,error:p,children:g.jsx("input",{ref:l,id:e.name,type:"number",defaultValue:String(r??""),min:c,max:s,step:m,onChange:b,style:{width:"100%",height:"100%"},className:E.input,"aria-invalid":!!p,"aria-describedby":p?`${e.name}-error`:void 0})})},xt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n}=F(),a=i.useRef(null),{definitionName:l}=F(),c=i.useCallback(d=>{const f=String(d??"").trim();if(f==="")return e.required?n("Value required"):null;if(e.pattern)try{if(!new RegExp(e.pattern).test(f))return e.patternErrorMessage?n(e.patternErrorMessage):n("Phone number does not match pattern: {{1}}",`${e.pattern}`)}catch{}return z(l,e,f,n)},[l,e,n]),s=i.useRef(null),m=i.useRef(o);i.useEffect(()=>{m.current=o},[o]),i.useEffect(()=>{const d=String(r??""),f=c(d);a.current&&a.current.value!==String(d)&&(a.current.value=String(d)),f!==s.current&&(s.current=f,m.current?.(f??null))},[r,c]);const u=d=>{const f=d.target.value,h=f.trim();let b=null;if(h===""){b=e.required?n("Value required"):null,t?.(f,b);return}b||(b=c(f)),t?.(f,b)};return g.jsx(q,{field:e,error:c(String(r??"")),children:g.jsx("input",{id:e.name,type:"tel",defaultValue:String(r??""),ref:a,onChange:u,className:T(E.input,E.textInput),"aria-invalid":!!c(String(r??"")),"aria-describedby":c(String(r??""))?`${e.name}-error`:void 0})})},vt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),l=e.layout?.toLowerCase()==="horizontal"?"row":"column",c=i.useRef(null),s=i.useRef(o);i.useEffect(()=>{s.current=o},[o]);const m=i.useCallback(d=>d===""||d===null||d===void 0?n("Value required"):!e.options||e.options.length===0?null:e.options.some(h=>h.value===d)?z(a,e,d,n)??null:n("Invalid option selected"),[e,n,a]);i.useEffect(()=>{const d=r!=null?String(r):"",f=m(d);if(s.current?.(f??null),c.current){const h=Array.from(c.current.querySelectorAll("input[type=radio]"));if(f&&e.options&&e.options.length>0){const b=String(e.options[0].value);h.forEach(p=>p.checked=p.value===b),t?.(b,null)}else h.forEach(b=>b.checked=b.value===d)}},[r,m,t,e.options]);const u=d=>{const f=d.target.value,h=m(f);s.current?.(h??null),t?.(f,h)};return g.jsx(q,{field:e,error:m(String(r??"")),children:g.jsx("div",{className:E.input,role:"radiogroup","aria-labelledby":`${e.name}-label`,"aria-invalid":!!m(String(r??"")),style:{display:"flex",flexDirection:l,flexWrap:l==="row"?"wrap":"nowrap",gap:l==="row"?"12px":"4px",alignItems:l==="row"?"center":"stretch",width:"100%",padding:l==="row"?"8px":void 0,boxSizing:"border-box"},ref:c,children:(e.options??[]).map(d=>g.jsxs("label",{className:T(E.label),style:{display:l==="column"?"flex":"inline-flex",gap:"8px",alignItems:"center",whiteSpace:"nowrap",marginBottom:l==="column"?6:0,cursor:"pointer",width:l==="column"?"100%":void 0,justifyContent:"flex-start"},children:[g.jsx("input",{type:"radio",name:e.name,value:String(d.value),defaultChecked:String(r??"")===String(d.value),onChange:u,style:{width:"1.1em",height:"1.1em"}}),g.jsx("span",{style:{userSelect:"none",textAlign:l==="column"?"left":void 0,flex:l==="column"?1:void 0,fontWeight:400},children:n(d.label)})]},String(d.value)))})})},wt={display:"flex",gap:4},St={cursor:"pointer",fontSize:"1.5rem",lineHeight:1,display:"inline-block",marginRight:"0.25rem",userSelect:"none",transition:"color 0.12s ease"},Ct=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),[l,c]=i.useState(null),s=i.useRef([]),m=e.max||5,u=i.useCallback(p=>e.required&&p===0?n("Value required"):z(a,e,p,n)??null,[e,n,a]),d=i.useRef(null),f=i.useRef(o);i.useEffect(()=>{f.current=o},[o]),i.useEffect(()=>{let p=r||0;r<0&&(p=0),r>m&&(p=m);const y=u(p);y!==d.current&&(d.current=y,f.current?.(y??null))},[r,u,m]);const h=p=>{const y=u(p);t?.(p,y)},b=(()=>{let p=r||0;return p<0&&(p=0),p>m&&(p=m),p})();return g.jsx(q,{field:e,error:u(b),children:g.jsx("div",{role:"radiogroup","aria-labelledby":`${e.name}-label`,style:wt,"aria-invalid":!!u(b),"aria-describedby":u(b)?`${e.name}-error`:void 0,children:(()=>{const p=e.icon,y=p&&String(p).trim()?String(p):"★";return[...Array(m)].map((C,x)=>{const j=x<b,w=l!==null&&x<=l||j?"gold":"lightgray";return g.jsx("span",{ref:v=>s.current[x]=v,role:"radio",tabIndex:b>0?x===b-1?0:-1:x===0?0:-1,"aria-checked":j,onClick:()=>h(x+1),onKeyDown:v=>{if(v.key==="Enter"||v.key===" ")v.preventDefault(),h(x+1);else if(v.key==="ArrowRight"||v.key==="ArrowUp"){v.preventDefault();const R=Math.min(m-1,x+1);s.current[R]?.focus()}else if(v.key==="ArrowLeft"||v.key==="ArrowDown"){v.preventDefault();const R=Math.max(0,x-1);s.current[R]?.focus()}},onMouseEnter:()=>c(x),onMouseLeave:()=>c(null),style:{...St,color:w},"aria-label":`Rating ${x+1}`,title:n(`${e.displayName} ${x+1}`),children:y},x)})})()})})},jt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),l=i.useRef(null),c=i.useRef(null),s=i.useRef(o);i.useEffect(()=>{s.current=o},[o]);const m=i.useMemo(()=>e.pattern?new RegExp(e.pattern):null,[e.pattern]),u=i.useCallback(p=>p===""?e.required?n("Value required"):null:e.minLength!==void 0&&p.length<e.minLength?n("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&p.length>e.maxLength?n("Must be at most {{1}} characters",e.maxLength):m&&!m.test(p)?e.patternErrorMessage?n(e.patternErrorMessage):n("Input does not match pattern: {{1}}",e.pattern):z(a,e,p,n),[e,a,n,m]),d=p=>{const y=p.target.value,C=u(y);t?.(y,C)};i.useEffect(()=>{const p=u(r??"");l.current&&l.current.value!==String(r??"")&&(l.current.value=String(r??"")),p!==c.current&&(c.current=p,s.current?.(p??null))},[r,u]);const[f,h]=i.useState(!1),b=()=>h(p=>!p);return g.jsx(q,{field:e,error:u(String(r??"")),children:g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,width:"100%"},children:[g.jsx("input",{id:e.name,type:f?"text":"password",defaultValue:String(r??""),ref:l,onChange:d,className:T(E.input,E.textInput),style:{flex:1,minWidth:0},"aria-invalid":!!u(String(r??"")),"aria-describedby":u(String(r??""))?`${e.name}-error`:void 0}),g.jsx("button",{type:"button",onClick:b,"aria-label":n(f?"Hide password":"Show password"),style:{background:"transparent",border:"none",cursor:"pointer",fontSize:16,lineHeight:1,padding:"4px 6px",flexShrink:0},children:f?"🙈":"👁️"})]})})},Rt=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/;function kt(e){return Rt.test(e)}const Et=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),l=i.useRef(null),c=i.useRef(null),s=i.useCallback(b=>{let p=null;if(b.trim()==="")return n("Value required");if(!kt(b))return n("Invalid number");const y=Number(b);return typeof e.min=="number"&&y<e.min?n("Value should be at least {{1}}",e.min):typeof e.max=="number"&&y>e.max?n("Value should be at most {{1}}",e.max):(p||(p=z(a,e,y,n)),p)},[a,e,n]),m=i.useRef(null),u=i.useRef(o);i.useEffect(()=>{u.current=o},[o]),i.useEffect(()=>{const b=String(r),p=s(b);c.current&&document.activeElement!==c.current&&(c.current.value=isNaN(Number(b))?String(e.min??0):String(Number(b))),l.current&&document.activeElement!==l.current&&(l.current.value=b),p!==m.current&&(m.current=p,u.current?.(p??null))},[r,s,e.min]);const d=e.min??0,f=e.max??100,h=b=>{const p=b.target.value,y=s(p);t?.(p,y)};return g.jsx(q,{field:e,error:s(String(r??"")),children:g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",width:"100%"},children:[g.jsx("input",{ref:c,id:`${e.name}-range`,type:"range",defaultValue:isNaN(Number(r))?String(d):String(Number(r)),onChange:h,min:d,max:f,style:{padding:"0px, 0px",flex:1},className:E.rangeInput,"aria-invalid":!!s(String(r??"")),"aria-describedby":s(String(r??""))?`${e.name}-error`:void 0}),g.jsx("input",{id:e.name,ref:l,type:"text",defaultValue:String(r??""),onChange:h,required:!0,style:{width:"40px",minWidth:"40px",height:"2.3em",textAlign:"center",flexShrink:0},className:T(E.input,E.textInput),"aria-invalid":!!s(String(r??"")),"aria-describedby":s(String(r??""))?`${e.name}-error`:void 0})]})})},Nt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,formStyle:a,fieldStyle:l,definitionName:c}=F(),s=a,m=l,u=(w,v,R)=>{if(!v)return{};const M=w?.[v];return(R&&M?M[R]:void 0)??{}},d=i.useMemo(()=>({display:"inline-block",position:"relative",width:44,height:24,...u(s,"switch","label"),...u(m,void 0,"label")}),[s,m]),f=i.useMemo(()=>({position:"absolute",opacity:0,top:0,left:0,width:"100%",height:"100%",margin:0,cursor:"pointer",pointerEvents:"none",...u(s,"switch","hiddenInput"),...u(m,void 0,"hiddenInput")}),[s,m]),h=i.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(s,"switch","slider"),...u(m,void 0,"slider")}),[s,m]),b=i.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(s,"switch","knob"),...u(m,void 0,"knob")}),[s,m]),p=!!r,y=i.useRef(null),C=i.useRef(o),x=i.useCallback(w=>w?z(c,e,w,n)??null:e.required?n("Value required"):null,[e,n,c]),j=()=>{const w=!p,v=x(w);t?.(w,v)};i.useEffect(()=>{C.current=o},[o]),i.useEffect(()=>{const w=x(p);w!==y.current&&(y.current=w,C.current?.(w??null))},[p,e,x]);const N=e.name;return g.jsx(q,{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:E.label,htmlFor:N,style:{textAlign:"left",justifyContent:"flex-start"},children:n(e.displayName)}),g.jsxs("label",{style:d,children:[g.jsx("input",{id:e.name,type:"checkbox",checked:p,readOnly:!0,"aria-label":n(e.displayName),"aria-invalid":!!x(p),"aria-describedby":x(p)?`${e.name}-error`:void 0,style:f,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:j,onKeyDown:w=>{(w.key===" "||w.key==="Spacebar"||w.key==="Space"||w.key==="Enter")&&(w.preventDefault(),j())},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}})})]})]})})},_e=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),l=i.useRef(null),c=i.useRef(null),s=i.useRef(o);i.useEffect(()=>{s.current=o},[o]);const m=i.useMemo(()=>e.pattern?new RegExp(e.pattern):null,[e.pattern]),u=i.useCallback(f=>f.trim()===""?e.required?n("Value required"):null:e.minLength!==void 0&&f.length<e.minLength?n("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&f.length>e.maxLength?n("Must be at most {{1}} characters",e.maxLength):m&&!m.test(f)?e.patternErrorMessage?n(e.patternErrorMessage):n("Input does not match pattern: {{1}}",e.pattern):z(a,e,f,n),[e,a,n,m]),d=f=>{const h=f.target.value,b=u(h);t?.(h,b)};return i.useEffect(()=>{const f=u(r);l.current&&l.current.value!==String(r??"")&&(l.current.value=String(r??"")),f!==c.current&&(c.current=f,s.current?.(f??null))},[r,u]),g.jsx(q,{field:e,error:u(String(r??"")),children:g.jsx("input",{id:e.name,"aria-invalid":!!u(String(r??"")),"aria-describedby":u(String(r??""))?`${e.name}-error`:void 0,type:"text",defaultValue:String(r??""),ref:l,onChange:d,className:T(E.input,E.textInput)})})},It=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),l=i.useRef(null),c=i.useRef(o),s=e.includeSeconds??!0;i.useEffect(()=>{c.current=o},[o]);const m=i.useCallback(d=>{if(!d||d.trim()==="")return e.required||e.min||e.max?n("Value required"):null;const f=p=>{const y=p.split(":").map(x=>parseInt(x,10));if(y.some(x=>Number.isNaN(x)))return NaN;let C=0;if(y.length===3)C=y[0]*3600+y[1]*60+y[2];else if(y.length===2)C=y[0]*3600+y[1]*60;else if(y.length===1)C=y[0]*3600;else return NaN;return C},h=f(d);if(Number.isNaN(h))return n("Invalid time format");if(e.min&&typeof e.min=="string"){const p=f(e.min);if(!Number.isNaN(p)&&h<p)return n("Time must be on or after {{1}}",e.min)}if(e.max&&typeof e.max=="string"){const p=f(e.max);if(!Number.isNaN(p)&&h>p)return n("Time must be on or before {{1}}",e.max)}return z(a,e,d,n)??null},[e,a,n]),u=d=>{const f=d.target.value,h=m(f);t?.(f,h)};return i.useEffect(()=>{const d=m(r);d!==l.current&&(l.current=d,c.current?.(d??null))},[r,m]),g.jsx(q,{field:e,error:m(r),children:g.jsx("input",{id:e.name,type:"time",value:r,step:s?1:60,onChange:u,min:typeof e.min=="string"?e.min:void 0,max:typeof e.max=="string"?e.max:void 0,className:T(E.input,E.textInput),"aria-invalid":!!m(r),"aria-describedby":m(r)?`${e.name}-error`:void 0})})};function Mt({pos:e,options:r,onClose:t,onClickOption:o}){const n=i.useRef(null),a=i.useRef(!1),l=typeof window<"u"?document.getElementById("popup-root")||document.body:null;if(i.useEffect(()=>{function h(b){a.current||b.target.dataset?.popupMenu==="item"||n.current&&b.target instanceof Node&&!n.current.contains(b.target)&&t()}return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[t]),!l||r===void 0||r.length===0||!e||e.x==null||e.y==null)return null;const c=e.x,s=e.y,m=typeof window<"u"?window.innerWidth:1024,u=Math.max(0,m-160),d=Math.max(0,Math.min(c,u)),f=Math.max(0,s);return ke.createPortal(g.jsx("div",{ref:n,onMouseDown:h=>{h.stopPropagation()},style:{position:"fixed",top:f,left:d,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),t(),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))}),l)}const ie={};function $t(e,r){if(e in ie)return;const t=Ve[e]??{},o={},n={},a={};for(const[c,s]of Object.entries(t))typeof s.factor=="number"&&(o[c]=s.factor),n[c]=r(c),a[r(c)]=c;const l=Object.keys(t)[0]??"";ie[e]={default:l,factors:o,labels:n,reverseLabels:a}}function Ft(e,r,t){if(e==="C"){if(r==="F")return t*(9/5)+32;if(r==="K")return t+273.15}else if(e==="F"){if(r==="C")return(t-32)*5/9;if(r==="K")return(t-32)*5/9+273.15}else if(e==="K"){if(r==="C")return t-273.15;if(r==="F")return(t-273.15)*9/5+32}return t}function Vt(e,r,t){if(!Number.isFinite(e))return[];if(t===ie.temperature)return Object.keys(t.labels).map(a=>{const l=Ft(r,a,e);return Number.isFinite(l)?{label:`${l.toFixed(6)} ${a}`,value:l.toString(),unit:a}:{label:`${String(l)} ${a}`,value:String(l),unit:a}});const n=t.factors[r];return n===void 0?[]:Object.entries(t.factors).map(([a,l])=>{const c=e/n*l;return Number.isFinite(c)?{label:`${c.toFixed(6)} ${a}`,value:c.toString(),unit:a}:{label:`${String(c)} ${a}`,value:String(c),unit:a}})}function fe(e,r){return e in r.labels?e:r.reverseLabels&&r.reverseLabels[e]?r.reverseLabels[e]:null}const At=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/,Dt=({unitFactors:e,field:r,value:t,onChange:o,onError:n})=>{const{t:a,definitionName:l}=F(),c=i.useRef(null),s=i.useRef(null),m=i.useRef(null),[u,d]=i.useState(null),[f,h]=i.useState(null),[b,p]=i.useState(!1),[y,C]=i.useState(null),[x,j]=i.useState([]),N=i.useCallback((A,$)=>{if(!A||A.trim()==="")return r.required?a("Value required"):null;if(!At.test(A))return a("Must be a valid number");const O=z(l,r,[A,$],a);return O||null},[l,r,a]),w=e.reverseLabels!==void 0?e.reverseLabels:Object.fromEntries(Object.entries(e.labels).map(([A,$])=>[$,A]));i.useEffect(()=>{const A=String(t[0]);let $=t[1]??e.default;$=fe($,e)||$;const O=document.activeElement;O===c.current||O===s.current||(c.current&&(c.current.value=A),s.current&&(s.current.value=$),m.current!==null&&(cancelAnimationFrame(m.current),m.current=null),m.current=requestAnimationFrame(()=>{m.current=null,d(null),h(null)}))},[t,e]),i.useEffect(()=>()=>{m.current!==null&&(cancelAnimationFrame(m.current),m.current=null)},[]);const v=i.useRef(null),R=i.useRef(n);i.useEffect(()=>{R.current=n},[n]),i.useEffect(()=>{const A=String(t[0]);let $=t[1]??e.default;$=fe($,e)||$;const O=N(A,$);O!==v.current&&(v.current=O,R.current?.(O??null))},[t,e,N]);const M=(A,$,O)=>{const W=w[$]||$;o?.([A,W],O)},S=A=>{const $=A.target.value,O=s.current?s.current.value:e.default,W=N($,O);d($),M($,O,W)},k=A=>{const $=A.target.value,O=c.current?c.current.value:String(t[0]??""),W=N(O,$);h($),s.current&&(s.current.value=$),M(O,$,W)},I=A=>{const $=c.current?c.current.value:String(t[0]??""),O=parseFloat($),W=s.current?s.current.value:e.default;if(N($,W)||!$.trim()||!Number.isFinite(O))return;const le=A.currentTarget.getBoundingClientRect(),ge=le.left,ee=le.bottom;C({x:ge,y:ee});const V=Vt(O,W,e);if(V.length===0){j([]),p(!1);return}j(V),p(L=>!L)},D=A=>{const{value:$,unit:O}=A;p(!1),C(null),c.current&&(c.current.value=$),s.current&&(s.current.value=O),d($),h(O);const W=N($,O);M($,O,W)},H=String(t[0]??""),te=fe(t[1]??e.default,e)||(t[1]??e.default),ne=u??H,Y=!!N(ne,f??te)||!ne.trim(),ce={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:Y?"var(--reactaform-button-disabled-bg, #cccccc)":"var(--reactaform-button-bg, var(--reactaform-success-color))",color:"var(--reactaform-button-text, #ffffff)",cursor:Y?"var(--reactaform-button-disabled-cursor, not-allowed)":"pointer",opacity:Y?+"var(--reactaform-button-disabled-opacity, 0.6)":1,display:"flex",alignItems:"center",justifyContent:"center"},G=N(H,te);return g.jsx(q,{field:r,error:G,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:c,defaultValue:String(t[0]??""),onChange:S,style:{width:"var(--reactaform-unit-input-width, 100px)"},className:T(E.input,E.textInput),"aria-invalid":!!G,"aria-describedby":G?`${r.name}-error`:void 0}),g.jsx("select",{id:`${r.name}-unit`,ref:s,defaultValue:fe(t[1]??e.default,e)||(t[1]??e.default),onChange:k,className:T(E.input,E.inputSelect),"aria-invalid":!!G,"aria-describedby":G?`${r.name}-error`:void 0,children:Object.keys(e.labels).map(A=>g.jsx("option",{value:A,children:e.labels[A]??A},A))}),g.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[g.jsx("button",{onClick:I,"aria-disabled":Y,disabled:Y,style:ce,className:E.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(Mt,{pos:y,options:x,onClose:()=>{C(null),p(!1)},onClickOption:D})]})]})})};function Ot({field:e,value:r,onChange:t}){const{t:o}=F(),n=e.dimension;if(!n)return null;ie[n]||$t(n,o);const a=ie[n];return a?g.jsx(Dt,{unitFactors:a,field:e,value:r,onChange:t}):null}const Ke=/^(https?|ftp|file):\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]$/i,Je=e=>{try{return new URL(e),!0}catch{return!1}},zt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=F(),l=i.useRef(null),c=i.useCallback(d=>{const f=d.trim();if(f==="")return e.required?n("Value required"):null;if(!Ke.test(f)&&!Je(f)){const b=e.allowRelative===!0;let p=!1;if(Ke.test(f)||Je(f))p=!0;else if(b)try{new URL(f,"http://example.com"),p=!0}catch{p=!1}if(!p)return n("Must be a valid URL")}return z(a,e,f,n)??null},[a,e,n]),s=d=>{const f=d.target.value,h=c(f);t?.(f.trim(),h)},m=i.useRef(null),u=i.useRef(o);return i.useEffect(()=>{u.current=o},[o]),i.useEffect(()=>{const d=r??"",f=c(d);l.current&&l.current.value!==String(d)&&(l.current.value=String(d)),f!==m.current&&(m.current=f,u.current?.(f??null))},[r,c]),g.jsx(q,{field:e,error:c(String(r??"")),children:g.jsx("input",{id:e.name,type:"url",defaultValue:String(r??""),ref:l,onChange:s,style:{alignItems:"left"},className:T(E.input,E.textInput),placeholder:"https://example.com","aria-invalid":!!c(String(r??"")),"aria-describedby":c(String(r??""))?`${e.name}-error`:void 0})})},Re=new de,Lt=new Set(["checkbox","switch","dropdown","radio","multi-selection","slider","stepper","color","rating"]),mr={checkbox:_r,color:Jr,date:Yr,dropdown:Xr,email:Qr,file:rt,float:ct,"float-array":at,image:ut,int:pt,"int-array":mt,"multi-selection":ht,multiline:gt,password:jt,phone:xt,radio:vt,rating:Ct,separator:et,slider:Et,string:_e,stepper:yt,switch:Nt,text:_e,time:It,unit:Ot,url:zt};function dr(e,r,t){const o=r;if(!t&&e in mr){console.warn(`Can't Overwrite Base Component type "${e}".`);return}if(Lt.has(e)){Re.register(e,o);return}const n=a=>{const{callback:c,cancel:s}=Xe((...m)=>{const u=a.onChange;typeof u=="function"&&u(...m)},200);return i.useEffect(()=>()=>{s()},[s]),i.createElement(o,{...a,onChange:c})};Re.register(e,n)}function Ae(e,r){dr(e,r,!1)}function De(e){return Re.get(e)}let Ge=!1;function pr(){Ge||(Object.entries(mr).forEach(([e,r])=>{dr(e,r,!0)}),Ge=!0)}const Oe=new de;function ze(e,r){Oe.register(e,r)}function Pt(e){return Oe.get(e)}function qt(e){return Oe.get(e)}ze("Preset_AlertSubmitHandler",(e,r,t)=>{const o={name:r||"Unnamed Instance",version:e.version,definition:e.name,values:t},n=JSON.stringify(o,null,2);alert(n)});const Q=new Map,U={components:new Map,fieldValidators:new Map,formValidators:new Map,submissionHandlers:new Map};function gr(e,r,t){if(!e)return!0;if(t&&!t(e))return!1;switch(r){case"error":throw new Error(`Plugin conflict: "${e.newPlugin}" tried to register ${e.type} "${e.name}" already registered by "${e.existingPlugin}"`);case"warn":return console.warn(`Plugin conflict: "${e.newPlugin}" tried to register ${e.type} "${e.name}" already registered by "${e.existingPlugin}". Skipping.`),!1;case"override":return console.info(`Plugin "${e.newPlugin}" is overriding ${e.type} "${e.name}" previously registered by "${e.existingPlugin}"`),!0;case"skip":return!1}}function Ht(e){const r=[];if(e.components){for(const t of Object.keys(e.components))if(De(t)){const n=U.components.get(t);n&&n!==e.name&&r.push({type:"component",name:t,existingPlugin:n,newPlugin:e.name})}}if(e.fieldValidators)for(const[t,o]of Object.entries(e.fieldValidators))for(const n of Object.keys(o)){const l=U.fieldValidators.get(t)?.get(n);ar(t,n)&&l&&l!==e.name&&r.push({type:"fieldValidator",name:`${t}:${n}`,existingPlugin:l,newPlugin:e.name})}if(e.formValidators)for(const t of Object.keys(e.formValidators)){const o=sr(t),n=U.formValidators.get(t);o&&n&&n!==e.name&&r.push({type:"formValidator",name:t,existingPlugin:n,newPlugin:e.name})}if(e.submissionHandlers)for(const t of Object.keys(e.submissionHandlers)){const o=qt(t),n=U.submissionHandlers.get(t);o&&n&&n!==e.name&&r.push({type:"submissionHandler",name:t,existingPlugin:n,newPlugin:e.name})}return r}function me(e,r,t,o,n,a,l,c){for(const s of Object.keys(e)){let m;if(c?m=n.find(u=>u.type==="fieldValidator"&&u.name===`${c}:${s}`):e===o.components?m=n.find(u=>u.type==="component"&&u.name===s):e===o.formValidators?m=n.find(u=>u.type==="formValidator"&&u.name===s):e===o.submissionHandlers&&(m=n.find(u=>u.type==="submissionHandler"&&u.name===s)),gr(m||null,a,l))if(c){const u=r.get(c)||new Map;u.set(s,o.name),r.set(c,u),t(s,e[s])}else r.set(s,o.name),t(s,e[s])}}function Tt(e,r){const t=r?.conflictResolution||"error";if(Q.has(e.name)){const n={type:"plugin",name:e.name,existingPlugin:e.name,newPlugin:e.name};if(!gr(n,t,r?.onConflict))return}const o=Ht(e);if(e.components&&me(e.components,U.components,Ae,e,o,t,r?.onConflict),e.fieldValidators)for(const[n,a]of Object.entries(e.fieldValidators))me(a,U.fieldValidators,(l,c)=>or(n,l,c),e,o,t,r?.onConflict,n);e.formValidators&&me(e.formValidators,U.formValidators,nr,e,o,t,r?.onConflict),e.submissionHandlers&&me(e.submissionHandlers,U.submissionHandlers,ze,e,o,t,r?.onConflict),e.setup&&e.setup(),Q.set(e.name,e)}function Bt(e,r=!1){const t=Q.get(e);if(!t)return!1;if(t.cleanup&&t.cleanup(),r){if(t.components)for(const o of Object.keys(t.components))U.components.delete(o);if(t.fieldValidators)for(const[o,n]of Object.entries(t.fieldValidators)){const a=U.fieldValidators.get(o);if(a){for(const l of Object.keys(n))a.delete(l);a.size===0&&U.fieldValidators.delete(o)}}if(t.formValidators)for(const o of Object.keys(t.formValidators))U.formValidators.delete(o);if(t.submissionHandlers)for(const o of Object.keys(t.submissionHandlers))U.submissionHandlers.delete(o)}return Q.delete(e),!0}function Ut(e){return Q.get(e)}function Wt(){return Array.from(Q.values())}function _t(e){return Q.has(e)}function Kt(e){for(const[r,t]of Object.entries(e))Ae(r,t)}const hr=i.memo(({field:e,value:r,handleChange:t,handleError:o})=>{const n=De(e.type),a=i.useCallback((c,s)=>t(e.name,c,s),[t,e.name]),l=i.useCallback(c=>o?.(e.name,c),[o,e.name]);return n?g.jsx(n,{field:e,value:r,onChange:a,onError:l}):null},(e,r)=>e.field===r.field&&e.value===r.value&&e.handleChange===r.handleChange&&e.handleError===r.handleError);hr.displayName="FieldWrapper";const br=(e,r,t,o)=>g.jsx(hr,{field:e,value:r[e.name],handleChange:t,handleError:o},e.name),yr=i.memo(({groupName:e,isOpen:r,fields:t,valuesMap:o,handleChange:n,handleError:a,toggleGroup:l,t:c})=>{const s=i.useCallback(()=>l(e),[l,e]),{formStyle:m,fieldStyle:u}=F(),d=i.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]),f=i.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 g.jsxs("fieldset",{style:d,children:[g.jsxs("legend",{onClick:s,style:f,children:[g.jsx("span",{children:c(e)}),g.jsx("span",{children:r?"▼":"▶"})]}),r&&t.map(h=>g.jsx("div",{children:br(h,o,n,a)},h.name))]})});yr.displayName="FieldGroup";const Jt=(e,r,t,o,n,a,l,c,s)=>{const m=r.slice(0,c).filter(h=>l[h.name]),d=Lr(m).groups,f=[];return d.forEach(h=>{if(h.name){const b=e[h.name]??!0;f.push(g.jsx(yr,{groupName:h.name,isOpen:b,fields:h.fields,valuesMap:t,handleChange:n,handleError:a,toggleGroup:s,t:o},h.name))}else h.fields.forEach(b=>f.push(g.jsx("div",{children:br(b,t,n,a)},b.name)))}),f},Gt=e=>{const r={};return e.forEach(t=>{r[t.name]=!1}),r},Le=(e,r,t,o)=>{const n=r[e];if(!n?.children)return;const a=t[e],l=a!=null?String(a):"";(n.children[l]||[]).forEach(s=>{o[s]=!0,Le(s,r,t,o)})},xr=(e,r,t)=>{const o=r[e];o?.children&&Object.values(o.children).flat().forEach(n=>{t[n]=!1,xr(n,r,t)})},Yt=(e,r,t,o)=>{const n={...t};return e.forEach(a=>{(!a.parents||Object.keys(a.parents).length===0)&&(n[a.name]=!0,Le(a.name,o,r,n))}),n},Xt=(e,r,t,o,n)=>{const a={...e};if(xr(o,r,a),n!=null){const l=r[o];if(l?.children){const c=String(n);(l.children[c]||[]).forEach(m=>{a[m]=!0,Le(m,r,t,a)})}}return a};async function Zt(e,r,t,o,n){const a=Object.values(n).filter(Boolean);if(a.length>0)return{success:!1,message:o("Please fix validation errors before submitting."),errors:a};const l={...t},c=[];if(e&&Array.isArray(e.properties))for(const m of e.properties){const u=m.name,d=l[u];if(d==null)continue;const f=m.type;try{if(f==="int"||f==="number"||f==="float"){const h=Number(String(d).trim());isNaN(h)?c.push(o(`Invalid number format for field ${m.displayName||u}`)):l[u]=h}else if(f==="int-array"||f==="float-array"){const b=String(d).split(",").map(p=>p.trim()).filter(Boolean).map(p=>{const y=Number(p);return isNaN(y)?(c.push(o(`Invalid number "${p}" in array for field ${m.displayName||u}`)),0):y});c.length===0&&(l[u]=b)}}catch(h){c.push(o(`Error processing field ${m.displayName||u}: ${h}`))}}if(c.length>0)return{success:!1,message:o("Data transformation errors occurred."),errors:c};const s=await ir(e,l,o);if(s&&s.length>0)return{success:!1,message:"Validation Fail",errors:s};if(e&&typeof e.submitHandlerName=="string"){const m=Pt(e.submitHandlerName);if(m)try{const u=await m(e,r?.name??null,l,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:l}}const vr=({definition:e,instance:r,chunkSize:t=50,chunkDelay:o=50})=>{const{properties:n,displayName:a}=e,l=F(),{t:c,formStyle:s,language:m}=l,u={...l,definitionName:e?.name??l.definitionName},[d,f]=i.useState("en"),[h,b]=i.useState([]),[p,y]=i.useState({}),[C,x]=i.useState({}),[j,N]=i.useState({}),[w,v]=i.useState({}),[R,M]=i.useState({}),[S,k]=i.useState(null),[I,D]=i.useState(null),[H,te]=i.useState(0),[ne,Pe]=i.useState(!1),[Y,ce]=i.useState(!1),[G,A]=i.useState(r.name||""),$=i.useRef(r),O=i.useRef(!1);i.useEffect(()=>{const V=Object.fromEntries(n.map(P=>[P.name,{...P,children:{}}]));n.forEach(P=>{P.parents&&Object.entries(P.parents).forEach(([oe,he])=>{const ae=V[oe];ae&&he.forEach(jr=>{ae.children||(ae.children={});const qe=String(jr);ae.children[qe]=[...ae.children[qe]||[],P.name]})})}),zr(n,V);const L=Object.values(V),B={};L.forEach(P=>{if(P.type==="unit"){const oe=typeof P.defaultValue=="number"?String(P.defaultValue):"",he=typeof P.defaultUnit=="string"?P.defaultUnit:String(P.defaultUnit??"m");B[P.name]=[oe,he]}else B[P.name]=P.defaultValue}),$.current=r,Object.keys(r.values).forEach(P=>{V[P]!==void 0&&(B[P]=r.values[P])});const K=Gt(L),J={};L.forEach(P=>{P.group&&!(P.group in J)&&(J[P.group]=!0)});const re=requestAnimationFrame(()=>{b(L),y(V),x(B),N(Yt(L,B,K,V)),v(J),Pe(!0),A(r.name)});return()=>cancelAnimationFrame(re)},[n,r,e]),i.useEffect(()=>{if(!ne||H>=h.length)return;const V=setTimeout(()=>{te(L=>Math.min(L+t,h.length))},o);return()=>clearTimeout(V)},[ne,H,h.length,t,o]);const W=i.useCallback((V,L,B)=>{k(null),D(null),x(K=>{const J={...K,[V]:L},re=p[V];return re&&["checkbox","dropdown","multi-select","radio","switch"].includes(re.type)&&N(oe=>Xt(oe,p,J,V,String(L))),J}),M(K=>B?{...K,[V]:B}:Object.fromEntries(Object.entries(K).filter(([re])=>re!==V)))},[p,k,D]);i.useEffect(()=>{let V=0;return V=requestAnimationFrame(()=>{m!==d&&(f(m||"en"),k(null),D(null))}),()=>cancelAnimationFrame(V)},[m,d]),i.useEffect(()=>{let V=0;return V=requestAnimationFrame(()=>{if(O.current){O.current=!1,$.current=r,A(r.name||"");return}$.current=r,k(null),D(null),A(r.name||"")}),()=>cancelAnimationFrame(V)},[r,r.name]);const pe=i.useCallback((V,L)=>{M(B=>L?{...B,[V]:String(L)}:Object.fromEntries(Object.entries(B).filter(([J])=>J!==V)))},[]),le=async()=>{O.current=!0;const V=$.current?.name;$.current.name=G;const L=await Zt(e,$.current,C,c,R),B=typeof L.message=="string"?L.message:String(L.message),K=Object.values(L.errors??{}).join(`
|
|
288
|
+
`);k(K?B+`
|
|
289
|
+
`+K:B),D(L.success),L.success||($.current.name=V??$.current.name,A(V??""))},ge=V=>{v(L=>({...L,[V]:!L[V]}))},ee=i.useMemo(()=>Object.values(R).some(Boolean),[R]);return g.jsx(Ee.Provider,{value:u,children:g.jsxs("div",{style:s.container,children:[a&&g.jsx("h2",{style:s.titleStyle,children:c(a)}),S&&g.jsxs("div",{role:"status",style:{marginBottom:12,padding:12,borderRadius:6,backgroundColor:I?"rgba(76, 175, 80, 0.12)":"rgba(225, 29, 72, 0.06)",border:`1px solid ${I?"rgba(76,175,80,0.3)":"rgba(225,29,72,0.12)"}`,color:I?"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:S}),g.jsx("button",{onClick:()=>{k(null),D(null)},"aria-label":c("Dismiss"),style:{marginLeft:12,background:"transparent",border:"none",cursor:"pointer",color:"inherit",fontSize:16,lineHeight:1},children:"×"})]}),r&&g.jsx(er,{name:G,onChange:V=>{A(V),k(null),D(null)}}),g.jsxs(g.Fragment,{children:[Jt(w,h,C,c,W,pe,j,H,ge),H<h.length&&g.jsx("div",{style:{fontSize:"0.9em",color:"var(--reactaform-text-muted, #666)"}})]}),g.jsx("button",{onClick:le,disabled:ee,onMouseEnter:()=>ce(!0),onMouseLeave:()=>ce(!1),style:{padding:"var(--reactaform-button-padding, var(--reactaform-space) 12px)",backgroundColor:ee?"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:ee?"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:ee?"var(--reactaform-button-disabled-opacity, 0.6)":Y?"var(--reactaform-button-hover-opacity, 0.9)":"1"},children:c("Submit")})]})})};pr();const Qt=(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"}}),en=(e,r=!1)=>{const t={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:t,textInput:t,optionInput:t,select:{...t,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:{...
|
|
298
|
+
</svg>")`},textarea:{...t,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"}}},wr=({children:e,definitionName:r="",defaultStyle:t,defaultLanguage:o="en",defaultDarkMode:n=!1,defaultLocalizeName:a="",className:l="reactaform-container"})=>{const c=r,s=a,m=n,u=o,d=i.useMemo(()=>t??{},[t]),[f,h]=i.useState({}),[b,p]=i.useState({}),[y,C]=i.useState({}),[x,j]=i.useState({});i.useEffect(()=>{let M=!0;return(async()=>{if(u==="en"){M&&(h({}),p({}));return}try{const k=await qr(u),I=k.success?k.translations:{};M&&h(I);const D=await Hr(u,s),H=D.success?D.translations:{};M&&p(H)}catch{M&&(h({}),p({}))}})(),()=>{M=!1}},[u,s]),i.useEffect(()=>{j(Qt(d,m)),C(en(d,m))},[d,m]);const N=i.useMemo(()=>Br(u,f,b),[u,f,b]),w=i.useCallback((M,...S)=>N(M,...S),[N]),v=i.useMemo(()=>({definitionName:c,language:u,darkMode:m,formStyle:x,fieldStyle:y,t:w}),[c,u,m,y,x,w]),R=d?.height?{height:"100%"}:void 0;return g.jsx(Ee.Provider,{value:v,children:g.jsx("div",{"data-reactaform-theme":m?"dark":"light",className:l,style:R,children:e})})};function rn(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 t=0;t<r.properties.length;t++){const o=r.properties[t];if(!o||typeof o!="object")return`Property at index ${t} must be an object`;if(!o.name||typeof o.name!="string")return`Property at index ${t} 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 tn(e,r={}){const{validateSchema:t=!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 n;try{n=JSON.parse(o)}catch(a){return{success:!1,error:`Invalid JSON format: ${a instanceof Error?a.message:"Unknown parsing error"}`}}if(t){const a=rn(n);if(a)return{success:!1,error:`Schema validation failed: ${a}`}}return{success:!0,definition:n}}catch(o){return{success:!1,error:`Unexpected error loading definition: ${o instanceof Error?o.message:"Unknown error"}`}}}function Sr(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 t={name:r,definition:e.name??"unknown",version:e.version??"1.0.0",values:{}},o=e.properties||[];return Array.isArray(o)&&o.forEach(n=>{const a=n;a.defaultValue!==void 0&&(t.values[a.name]=a.defaultValue)}),{success:!0,instance:t}}catch(t){return{success:!1,error:`Error creating instance: ${t instanceof Error?t.message:"Unknown error"}`}}}function nn(e){try{if(!e)return{success:!1,error:"Instance data is required"};let r;if(typeof e=="string")try{r=JSON.parse(e)}catch(t){return{success:!1,error:`Invalid JSON format: ${t instanceof Error?t.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 on(e,r,t){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:{}},n=o.values,a={};(r.properties||[]).forEach(s=>{a[s.name]=s});const l=(s,m,u)=>{if(s==null)return s;const d=m.toLowerCase();try{if(d==="string")return String(s);if(d==="int"||d==="integer"||d==="number"||d==="float"){if(typeof s=="number")return s;if(typeof s=="boolean")return s?1:0;if(typeof s=="string"){const f=Number(s.trim());return Number.isNaN(f)?0:f}return 0}if(d==="boolean"||d==="bool")return typeof s=="boolean"?s:typeof s=="number"?s!==0:typeof s=="string"?["true","1","yes"].includes(s.toLowerCase()):!!s;if(d==="unit"){if(Array.isArray(s)&&s.length>=1)return s;if(typeof s=="number")return[s,u&&u.defaultUnit||""];if(typeof s=="string"){const f=Number(s);return Number.isNaN(f)?[0,u&&u.defaultUnit||""]:[f,u&&u.defaultUnit||""]}return s}if(d.endsWith("[]")||d==="array")return Array.isArray(s)?s:typeof s=="string"?s.split(",").map(f=>f.trim()).filter(Boolean):[s]}catch{}return s},c=e.values||{};Object.keys(c).forEach(s=>{const m=c[s],u=a[s];if(!u)return;const d=Array.isArray(m)?"array":m===null?"null":typeof m,f=(u.type||"").toLowerCase();d===f||f==="string"&&typeof m=="string"?n[s]=m:n[s]=l(m,f,u)}),(r.properties||[]).forEach(s=>{const m=s.name;m in n||(n[m]=s.defaultValue)});try{typeof t=="function"&&t?.(e,o,r)}catch(s){return{success:!1,error:`Upgrade callback error: ${s instanceof Error?s.message:String(s)}`}}return{success:!0,upgradedInstance:o}}catch(o){return{success:!1,error:`Error upgrading instance: ${o instanceof Error?o.message:"Unknown error"}`}}}pr();function an(e){const[r,t]=i.useState(null);return i.useEffect(()=>{const o=document.querySelector("[data-reactaform-theme]");if(!o)return;const n=o.closest("[data-reactaform-theme]");if(!n)return;const a=()=>t(n.getAttribute("data-reactaform-theme"));a();const l=new MutationObserver(c=>{for(const s of c)s.type==="attributes"&&s.attributeName==="data-reactaform-theme"&&a()});return l.observe(n,{attributes:!0,attributeFilter:["data-reactaform-theme"]}),()=>l.disconnect()},[e]),r}const sn=({definitionData:e,instance:r,language:t,className:o,darkMode:n,style:a})=>{const l=i.useMemo(()=>{try{return typeof e=="string"?JSON.parse(e):e??null}catch{return null}},[e]),c={fontSize:"inherit",fontFamily:"inherit",...a},s=an(),m=n??s==="dark",u=t??"en";if(i.useEffect(()=>{let f=document.getElementById("popup-root");f||(f=document.createElement("div"),f.id="popup-root",document.body.appendChild(f))},[]),!l)return g.jsx("div",{style:{color:"red"},children:"Error: No form definition provided."});let d=r;if(!d){const f=Sr(l,l.name);if(!f.success||!f.instance)return g.jsx("div",{style:{color:"red"},children:"Error: Failed to create instance from definition."});d=f.instance}return g.jsx(wr,{definitionName:l.name,defaultStyle:c,defaultLanguage:u,defaultDarkMode:m,defaultLocalizeName:l.localization||"",className:o,children:g.jsx(vr,{definition:l,instance:d})})};function Cr(){if(!document.getElementById("reactaform-styles"))try{const e=document.createElement("style");e.id="reactaform-styles",e.textContent=kr,document.head.appendChild(e)}catch{}}typeof document<"u"&&Cr();exports.CSS_CLASSES=E;exports.ReactaForm=sn;exports.ReactaFormProvider=wr;exports.ReactaFormRenderer=vr;exports.StandardFieldLayout=q;exports.Units=Wr;exports.combineClasses=T;exports.createInstanceFromDefinition=Sr;exports.deserializeDefinition=Ar;exports.deserializeInstance=$r;exports.getAllPlugins=Wt;exports.getComponent=De;exports.getPlugin=Ut;exports.hasPlugin=_t;exports.injectReactaFormStyles=Cr;exports.loadInstance=nn;exports.loadJsonDefinition=tn;exports.registerComponent=Ae;exports.registerComponents=Kt;exports.registerFieldValidationHandler=or;exports.registerFormValidationHandler=nr;exports.registerPlugin=Tt;exports.registerSubmissionHandler=ze;exports.serializeDefinition=Vr;exports.serializeInstance=Ir;exports.unregisterPlugin=Bt;exports.upgradeInstanceToLatestDefinition=on;exports.useDebouncedCallback=Xe;exports.useReactaFormContext=F;exports.validateFieldValue=z;exports.validateFormValues=ir;
|