@overmap-ai/forms 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/forms.js +1 -1
- package/dist/forms.umd.cjs +1 -1
- package/package.json +1 -1
package/dist/forms.js
CHANGED
package/dist/forms.umd.cjs
CHANGED
|
@@ -248,4 +248,4 @@
|
|
|
248
248
|
*
|
|
249
249
|
* This source code is licensed under the ISC license.
|
|
250
250
|
* See the LICENSE file in the root directory of this source tree.
|
|
251
|
-
*/const re=M("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),$i=d.memo(i=>{const{ref:n,file:e,className:r,error:o,rightSlot:s,size:l,...f}=i,c=()=>o?t.jsxs(t.Fragment,{children:[t.jsx(a.LuIcon,{icon:Bi,color:"var(--base-a11)"}),t.jsx(a.Text,{accentColor:"base",className:"truncate",size:l,children:o})]}):e?t.jsxs(t.Fragment,{children:[t.jsx(a.LuIcon,{icon:bo,color:"var(--base-a11)"}),t.jsx(a.Text,{className:"truncate",size:l,children:e.name})]}):t.jsx(t.Fragment,{children:t.jsx("div",{className:"flex w-full justify-center",children:t.jsx(a.Spinner,{size:l})})});return t.jsxs(a.Card,{className:R.cx(r,"flex w-full items-center gap-2"),ref:n,size:"xs",...f,children:[c(),s]})});$i.displayName="FileCard";function $e(i){return Array.isArray(i)?i.every(n=>typeof n=="string"):!1}class De{constructor(){C(this,"observers",new Set)}notify(n){for(const e of this.observers)e(n)}observe(n){return this.observers.add(n),()=>{this.observers.delete(n)}}}class Di extends De{constructor(e){const{identifier:r}=e;super();C(this,"identifier");this.identifier=r}getOptions(){return{identifier:this.identifier}}setOptions(e){this.identifier=e.identifier??this.identifier,this.notify(this)}serialize(){return{type:this.type,identifier:this.identifier}}}class k extends Di{constructor(e){const{label:r,description:o=null,required:s,image:l,...f}=e;super(f);C(this,"label");C(this,"description");C(this,"required");C(this,"image");this.label=r,this.description=o,this.required=s,this.image=l}getError(e){if(!(!this.required&&this.isValueBlank(e))){if(this.required&&this.isValueBlank(e))return"This field is required.";for(const r of this.getFieldValidators()){const o=r(e);if(o)return o}}}serialize(){return{...super.serialize(),label:this.label,description:this.description,required:this.required,image:this.image}}getOptions(){return{...super.getOptions(),label:this.label,description:this.description,required:this.required,image:this.image}}setOptions(e){const{label:r,description:o=null,required:s,image:l,...f}=e;this.label=r??this.label,this.description=o??this.description,this.required=s??this.required,this.image=l??this.image,super.setOptions(f)}isValueBlank(e){return this.areValuesEqual(e,this.blankValue())}cleanValue(e){return e}isValueClean(e){return this.areValuesEqual(e,this.cleanValue(e))}cleanSerializedValue(e){return e}isSerializedValueClean(e){return this.areSerializedValuesEqual(e,this.cleanSerializedValue(e))}isSerializedValueBlank(e){return this.areSerializedValuesEqual(e,this.blankSerializedValue())}getFieldValidators(){return[]}}const B=d.createContext({}),Pi=i=>{const[n,e]=d.useState(null);return d.useLayoutEffect(()=>{const r=URL.createObjectURL(i);return e(r),()=>{URL.revokeObjectURL(r)}},[i]),n},Me=d.memo(i=>{const{file:n,...e}=i,r=Pi(n);return t.jsx("img",{src:r??void 0,alt:n.name,...e})});Me.displayName="ImageFile";const rt=d.createContext(()=>{throw new Error("No ImageViewerProvider found")}),hi=()=>d.useContext(rt),ji=d.memo(i=>{const{file:n,onClose:e}=i,r=d.useCallback(()=>{Gn.saveAs(n,n.name)},[n]);return t.jsx(a.Overlay.Root,{open:!0,onOpenChange:e,children:t.jsxs(a.Overlay.Content,{onOpenAutoFocus:a.preventDefault,children:[t.jsxs(a.ButtonGroup,{className:"absolute right-0 top-0 flex items-center gap-2 p-2",accentColor:"base",variant:"ghost",children:[t.jsxs(a.Tooltip.Root,{children:[t.jsx(a.Tooltip.Trigger,{asChild:!0,children:t.jsx(a.IconButton,{onClick:r,"aria-label":"download",children:t.jsx(a.LuIcon,{icon:Zn})})}),t.jsx(a.Tooltip.Content,{size:"sm",children:"Download"})]}),t.jsx(a.Separator,{orientation:"vertical",size:"sm"}),t.jsx(a.Overlay.Close,{asChild:!0,children:t.jsx(a.IconButton,{onClick:e,"aria-label":"close",children:t.jsx(a.LuIcon,{icon:re})})})]}),t.jsx("figure",{className:"flex size-full items-center justify-center overflow-hidden p-4",children:t.jsx(Me,{className:"max-h-full max-w-full",file:n})})]})})});ji.displayName="ImageViewer";const ot=d.memo(i=>{const{children:n}=i,[e,r]=d.useState(null),o=d.useCallback(()=>{r(null)},[]),s=d.useCallback(f=>{r(f(o))},[o]),l=d.useCallback(()=>{e&&(e.onClose&&e.onClose(),o())},[o,e]);return t.jsxs(rt.Provider,{value:s,children:[n,e&&t.jsx(ji,{file:e.file,onClose:l})]})});ot.displayName="FileViewerProvider";const A=d.memo(i=>{const{label:n,error:e,description:r,required:o,children:s,inputId:l,image:f,size:c}=i,[h,p]=d.useState(void 0),m=hi();d.useEffect(()=>{f instanceof Promise?f.then(p).catch(console.error):p(f)},[f]);const g=d.useCallback(()=>{h&&m(()=>({file:h}))},[m,h]),V=o?`${n} *`:n;return t.jsxs("div",{className:"flex flex-col gap-1",children:[h&&t.jsx(Me,{className:"h-[100px] w-full min-w-[300px] cursor-pointer rounded-md object-cover",file:h,onClick:g}),(!!n||!!r)&&t.jsxs("div",{className:"flex flex-col",children:[t.jsx("label",{className:"w-max max-w-full",htmlFor:l,children:t.jsx(a.Text,{size:c,className:"text-wrap",children:V})}),!!r&&t.jsx(a.Text,{accentColor:"base",size:c,children:r})]}),s,!!e&&t.jsx(a.Text,{accentColor:"danger",size:c,children:e})]})});A.displayName="InputWithLabel";const at=i=>i.map(n=>t.jsx(d.Fragment,{children:n.render()},n.identifier)),fi=i=>i.map(n=>t.jsx(d.Fragment,{children:n.render()},n.identifier)),D=i=>{const{field:n}=i,{field:{value:e,name:r,onChange:o,onBlur:s,disabled:l},fieldState:{isTouched:f,error:c}}=Y.useController({name:n.identifier});return{value:e,name:r,disabled:l,isTouched:f,error:(c==null?void 0:c.message)??"",onChange:o,onBlur:s}},Ui=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),[h,p]=d.useState(""),[m,g]=d.useState(""),V=d.useCallback(z=>{l(z),s()},[l,s]),F=d.useCallback(z=>{r&&r.findIndex(b=>b===z.target.value.trim())>=0?g("All options must be unique"):z.target.value?g(""):g("Option cannot be empty"),p(z.target.value)},[p,r]),w=d.useCallback(()=>{if(m)return;if(!h.trim()){g("Option cannot be empty");return}const z=h.trim();V([...r,z]),p("")},[h,m,V,r]),S=d.useCallback(z=>{z.key==="Enter"&&(z.preventDefault(),w())},[w]),v=d.useCallback(z=>{const b=Array.from(r);b.splice(z,1),V(b)},[r,V]),I=d.useCallback(z=>{if(!z.destination)return;const b=z.source.index,L=z.destination.index,G=Array.from(r),[ie]=G.splice(b,1);G.splice(L,0,ie),V(G)},[V,r]),q=d.useCallback(()=>{s()},[s]);return t.jsx(Li.DragDropContext,{onDragEnd:I,children:t.jsxs(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:m||f,image:n.image,children:[(!c||r.length===0)&&t.jsxs("div",{className:"flex gap-2",children:[t.jsx(a.Input.Root,{className:"grow",accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{value:h,onChange:F,onKeyDown:S,id:n.identifier,placeholder:n.placeholder,onBlur:q,name:o,disabled:c})}),t.jsx(a.IconButton,{size:e,accentColor:"base",variant:"soft",type:"button","aria-label":"Add option",disabled:!!m||c,onClick:w,children:t.jsx(a.LuIcon,{icon:Z})})]}),r.length!==0&&t.jsx(Li.Droppable,{droppableId:`${n.identifier}-droppable`,children:z=>t.jsxs("div",{className:"flex flex-col gap-1",...z.droppableProps,ref:z.innerRef,children:[r.map((b,L)=>t.jsx(Li.Draggable,{draggableId:`${b}-draggable`,index:L,isDragDisabled:c,children:({draggableProps:G,dragHandleProps:ie,innerRef:ce})=>t.jsxs(a.Badge,{...ie,...G,ref:ce,className:"flex items-center justify-between gap-2",accentColor:"base",size:e,variant:"soft",children:[t.jsx(a.Text,{className:"truncate",highContrast:!0,children:typeof b=="object"&&"label"in b?b.label:b}),t.jsx(a.IconButton,{className:"bg-transparent!",size:e,variant:"ghost",type:"button","aria-label":"Delete option",accentColor:"base",disabled:c,onClick:()=>{v(L)},children:t.jsx(a.LuIcon,{icon:re})})]})},`${n.identifier}-${b}-${L}`)),z.placeholder]})})]})})});Ui.displayName="MultiStringFieldInput";class he extends k{constructor(e){const{minimum_length:r,maximum_length:o,placeholder:s,...l}=e;super(l);C(this,"type","multi-string");C(this,"minLength");C(this,"maxLength");C(this,"placeholder");this.minLength=r??0,this.maxLength=o??1/0,this.placeholder=s??"Press enter to add a new option"}render(){return t.jsx(Ui,{field:this})}serialize(){return{...super.serialize(),minimum_length:this.minLength,maximum_length:this.maxLength,placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),minimum_length:this.minLength,maximum_length:this.maxLength,placeholder:this.placeholder}}duplicate(e){return new he({...this.getOptions(),identifier:e})}setOptions(e){const{minimum_length:r,maximum_length:o,placeholder:s,...l}=e;this.minLength=r??this.minLength,this.maxLength=o??this.maxLength,this.placeholder=s??this.placeholder,super.setOptions(l)}serializeValue(e){return e}deserializeValue(e){return e}getFieldValidators(){const e=super.getFieldValidators();return e.push(r=>{if(r.length<this.minLength)return`Must have at least ${this.minLength} options.`}),e.push(r=>{if(r.length>this.maxLength)return`Must have at most ${this.maxLength} options.`}),e}static deserialize(e){return new he(e)}isSerializedValue(e){return $e(e)}isValue(e){return $e(e)}blankValue(){return[]}areValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}}class Pe extends k{constructor(e){const{options:r,...o}=e;super(o);C(this,"options");this.options=r.map(s=>(typeof s=="string"&&(s={label:s,value:s}),s))}serialize(){return{...super.serialize(),options:this.options}}getOptions(){return{...super.getOptions(),options:this.options}}setOptions(e){const{options:r,...o}=e;this.options=(r==null?void 0:r.map(s=>(typeof s=="string"&&(s={label:s,value:s}),s)))??this.options,super.setOptions(o)}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new he({label:"Options",description:"List possible options for the user to select from.",required:!0,identifier:`${r}options`,minimum_length:2}),showDirectly:!0}]}}const Gi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(!!m),s()},[s,l]),p=d.useCallback(()=>{s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,error:f,image:n.image,required:n.required,children:t.jsx(a.Checkbox.Root,{id:n.identifier,name:o,checked:r??!1,onCheckedChange:h,onBlur:p,size:e,accentColor:"base",variant:"surface",disabled:c,children:t.jsx(a.Checkbox.Indicator,{children:t.jsx(a.LuIcon,{icon:W})})})})});Gi.displayName="BooleanFieldInput";class fe extends k{constructor(e){super(e);C(this,"type","boolean")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}setOptions(e){super.setOptions(e)}duplicate(e){return new fe({...this.getOptions(),identifier:e})}static deserialize(e){return new fe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Gi,{field:this})}isSerializedValue(e){return typeof e=="boolean"}isValue(e){return typeof e=="boolean"}blankValue(){return!1}blankSerializedValue(){return!1}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return e===r}}const ki=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{const V=g.target.valueAsNumber,F=isNaN(V)?null:V;l(F)},[l]),p=d.useCallback(()=>{s()},[s]),m=d.useCallback(g=>{g.key==="Enter"&&g.preventDefault()},[]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.Input.Root,{accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{id:n.identifier,name:o,onChange:h,onBlur:p,value:r??"",type:"number",min:n.minimum,max:n.maximum,step:n.integers?1:"any",placeholder:n.placeholder??"Enter a number",disabled:c,onKeyDown:m})})})});ki.displayName="NumberFieldInput";class H extends k{constructor(e){const{minimum:r=Number.MIN_SAFE_INTEGER,maximum:o=Number.MAX_SAFE_INTEGER,integers:s=!1,placeholder:l,...f}=e;super(f);C(this,"type","number");C(this,"minimum");C(this,"maximum");C(this,"integers");C(this,"placeholder");this.minimum=r,this.maximum=o,this.integers=s,this.placeholder=l}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Minimum",description:"Minimum value",integers:!0,required:!1,identifier:`${r}minimum`}),showDirectly:!1},{field:new H({label:"Maximum",description:"Maximum value",integers:!0,required:!1,identifier:`${r}maximum`}),showDirectly:!1},{field:new fe({label:"Integers",description:"Whole numbers only",required:!1,identifier:`${r}integers`}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.minimum,o=this.maximum;return typeof r=="number"&&e.push(s=>{if(typeof s=="number"&&s<r)return`Must be at least ${this.minimum}.`}),typeof o=="number"&&e.push(s=>{if(typeof s=="number"&&s>o)return`Must be at most ${this.maximum}.`}),this.integers&&e.push(s=>{if(typeof s=="number"&&!Number.isInteger(s))return"Must be a whole number."}),e}serialize(){return{...super.serialize(),minimum:this.minimum,maximum:this.maximum,integers:this.integers,placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),minimum:this.minimum,maximum:this.maximum,integers:this.integers,placeholder:this.placeholder}}duplicate(e){return new H({...this.getOptions(),identifier:e})}setOptions(e){const{minimum:r,maximum:o,integers:s,placeholder:l,...f}=e;this.minimum=r??this.minimum,this.maximum=o??this.maximum,this.integers=s??this.integers,this.placeholder=l??this.placeholder,super.setOptions(f)}static deserialize(e){return new H(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(ki,{field:this})}isSerializedValue(e){return this.isValue(e)}isValue(e){return typeof e=="number"&&!isNaN(e)||e===null}areValuesEqual(e,r){return e===r}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const je=1e4;class Hi extends k{constructor(e){const{minLength:r,maxLength:o,placeholder:s="",...l}=e;super(l);C(this,"minLength");C(this,"maxLength");C(this,"placeholder");this.minLength=r?Math.max(r,0):void 0,this.maxLength=o?Math.max(o,0):je,this.placeholder=s}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Minimum length",description:"Minimum number of characters",required:!1,identifier:`${r}minimum_length`,minimum:0,maximum:100,integers:!0}),showDirectly:!1},{field:new H({label:"Maximum length",description:"Maximum number of characters",required:!1,identifier:`${r}maximum_length`,minimum:1,maximum:je,integers:!0}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators();return this.minLength&&e.push(r=>{if(this.minLength&&(!r||r.length<this.minLength))return!this.required&&!r?void 0:`Minimum ${this.minLength} character(s).`}),this.maxLength&&e.push(r=>{if(typeof r=="string"&&this.maxLength&&r.length>this.maxLength)return`Maximum ${this.maxLength} character(s).`}),e}serialize(){return{...super.serialize(),minimum_length:this.minLength,maximum_length:this.maxLength,placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),minLength:this.minLength,maxLength:this.maxLength,placeholder:this.placeholder}}setOptions(e){const{minLength:r,maxLength:o,placeholder:s,...l}=e;this.minLength=r,this.maxLength=o??this.maxLength,this.placeholder=s,super.setOptions(l)}serializeValue(e){return e}deserializeValue(e){return e}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}blankSerializedValue(){return""}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return e===r}}const Ji=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(m),s()},[s,l]),p=d.useCallback(()=>{s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.CheckboxGroup.Root,{id:n.identifier,name:o,className:"flex flex-col gap-1",accentColor:"base",variant:"surface",size:e,values:r,onValuesChange:h,disabled:c,children:n.options.map((m,g)=>t.jsxs("label",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(a.CheckboxGroup.Item,{value:m.value,onBlur:p,children:t.jsx(a.CheckboxGroup.ItemIndicator,{children:t.jsx(a.LuIcon,{icon:W})})}),t.jsx(a.Text,{size:e,accentColor:"base",className:"truncate",children:m.label})]},`${n.identifier}-${m.value}-${g}`))})})});Ji.displayName="CheckboxListFieldInput";class pe extends Pe{constructor(e){super(e);C(this,"type","checkbox-list")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new pe({...this.getOptions(),identifier:e})}static deserialize(e){return new pe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Ji,{field:this})}isSerializedValue(e){if(!$e(e))return!1;const r=new Set(this.options.map(({value:o})=>o));return e.every(o=>r.has(o))}isValue(e){return this.isSerializedValue(e)}blankValue(){return[]}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}areValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}}const Wi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),[h,p]=d.useState(!1),m=d.useCallback(V=>{l(V??null),s(),p(!1)},[l,s]),g=d.useCallback(V=>{p(V),V||s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.Popover.Root,{open:h,onOpenChange:g,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:t.jsxs(a.Button,{id:n.identifier,name:o,type:"button",className:"!justify-between",accentColor:"base",variant:"surface",size:e,disabled:c,children:[t.jsx(a.Text,{className:"truncate",highContrast:!!r,children:r?r.toLocaleString(void 0,{year:"numeric",month:"2-digit",day:"2-digit"}):"yyyy-mm-dd"}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Popover.Content,{align:"start",size:e,children:t.jsx(a.DayPicker,{size:e,required:!1,mode:"single",variant:"solid",selected:r??void 0,onSelect:m})})]})})});Wi.displayName="DateFieldInput";class xe extends k{constructor(e){super(e);C(this,"type","date")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new xe({...this.getOptions(),identifier:e})}static deserialize(e){return new xe(e)}setOptions(e){super.setOptions(e)}serializeValue(e){return e?e.toISOString():null}deserializeValue(e){return e?new Date(e):null}render(){return t.jsx(Wi,{field:this})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:this.isValue(this.deserializeValue(e))}isValue(e){return!(!(e instanceof Date)&&e!==null||e instanceof Date&&isNaN(e.getTime()))}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return!e&&!r?!0:!e||!r?!1:e.getTime()===r.getTime()}}var O=(i=>(i.Text="text",i.Selection="selection",i.Numeric="numeric",i.Temporal="temporal",i.Capture="capture",i.Assessment="assessment",i.Verification="verification",i))(O||{});const Xi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(m),s()},[s,l]),p=d.useCallback(m=>{m||s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.Menu.Root,{onOpenChange:p,align:"start",children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsxs(a.Button,{id:n.identifier,name:o,className:"!justify-between",variant:"surface",type:"button",size:e,accentColor:"base",disabled:c,children:[t.jsx(a.Text,{className:"truncate",highContrast:r&&r.length>0,children:r&&r.length>0?r.join(", "):n.placeholder??"Select one or more..."}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Menu.Content,{size:e,children:t.jsx(a.Menu.Scroll,{children:t.jsxs(a.Menu.MultiSelectGroup,{values:r,onValuesChange:h,children:[t.jsxs(a.Menu.SelectAllItem,{children:[t.jsx(a.Menu.CheckboxItemIndicator,{children:m=>m?t.jsx(a.LuIcon,{icon:ui}):t.jsx(a.LuIcon,{icon:W})}),"Select all"]}),n.options.map((m,g)=>t.jsxs(a.Menu.MultiSelectItem,{value:m.value,children:[t.jsx(a.Menu.SelectedIndicator,{children:t.jsx(a.LuIcon,{icon:W})}),m.label]},`${n.identifier}-${m.value}-${g}`))]})})})]})})});Xi.displayName="MultiSelectFieldInput";class te extends Pe{constructor(e){const{placeholder:r,...o}=e;super(o);C(this,"type","multi-select");C(this,"placeholder");this.placeholder=r}serialize(){return super.serialize()}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new te({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:r}=e;this.placeholder=r,super.setOptions(e)}static deserialize(e){return new te(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Xi,{field:this})}isSerializedValue(e){if(!$e(e))return!1;const r=new Set(this.options.map(({value:o})=>o));return e.every(o=>r.has(o))}isValue(e){return this.isSerializedValue(e)}blankValue(){return[]}areValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}}const Ki=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g??null),s()},[s,l]),p=d.useCallback(g=>{g||s()},[s]),m=d.useMemo(()=>n.options.find(g=>g.value===r),[n.options,r]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.Menu.Root,{onOpenChange:p,align:"start",children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsxs(a.Button,{id:n.identifier,name:o,className:"!justify-between",accentColor:"base",variant:"surface",type:"button",size:e,disabled:c,children:[t.jsx(a.Text,{className:"truncate",highContrast:!!m,children:m?m.label:n.placeholder??"Select one..."}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Menu.Content,{size:e,children:t.jsx(a.Menu.Scroll,{children:t.jsx(a.Menu.SelectGroup,{required:!1,value:r??void 0,onValueChange:h,children:n.options.map((g,V)=>t.jsxs(a.Menu.SelectItem,{value:g.value,children:[t.jsx(a.Menu.SelectedIndicator,{children:t.jsx(a.LuIcon,{icon:W})}),g.label]},`${n.identifier}-${g.value}-${V}`))})})})]})})});Ki.displayName="SelectFieldInput";class oe extends Pe{constructor(e){const{placeholder:r,...o}=e;super(o);C(this,"type","select");C(this,"placeholder");this.placeholder=r}serialize(){return super.serialize()}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new oe({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:r}=e;this.placeholder=r,super.setOptions(e)}static deserialize(e){return new oe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Ki,{field:this})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:new Set([null,...this.options.map(({value:o})=>o)]).has(e)}isValue(e){return this.isSerializedValue(e)}blankValue(){return null}areValuesEqual(e,r){return e===r}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const Yi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g)},[l]),p=d.useCallback(()=>{s()},[s]),m=d.useMemo(()=>Array.from({length:n.length},()=>N.v4()),[n.length]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.OneTimePasswordField.Root,{id:n.identifier,name:o,value:r,onValueChange:h,validationType:n.validationType,disabled:c,orientation:"horizontal",dir:"ltr",type:"text",autoComplete:"off",autoFocus:!1,autoSubmit:!1,className:"p-0.25 flex h-max w-full gap-1 overflow-x-auto",accentColor:"base",variant:"surface",size:e,onBlur:p,children:[m.map(g=>t.jsx(a.OneTimePasswordField.Input,{id:g},g)),t.jsx(a.OneTimePasswordField.HiddenInput,{})]})})});Yi.displayName="OTPFieldInput";class me extends k{constructor(e){const{length:r,validationType:o,...s}=e;super(s);C(this,"type","otp");C(this,"length");C(this,"validationType");this.length=r,this.validationType=o}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Length",integers:!0,required:!1,minimum:1,maximum:16,identifier:`${r}length`}),showDirectly:!1},{field:new oe({label:"Type",required:!1,identifier:`${r}validationType`,options:[{value:"none",label:"Any"},{value:"numeric",label:"Numeric"},{value:"alpha",label:"Alpha"},{value:"alphanumeric",label:"Alphanumeric"}]}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.length;return e.push(o=>{if(o.length!=r)return`Must be ${r} characters.`}),e}serialize(){return{...super.serialize(),length:this.length,validationType:this.validationType}}getOptions(){return{...super.getOptions(),length:this.length,validationType:this.validationType}}duplicate(e){return new me({...this.getOptions(),identifier:e})}setOptions(e){const{length:r,validationType:o,...s}=e;this.length=r??this.length,this.validationType=o??this.validationType,super.setOptions(s)}static deserialize(e){return new me(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Yi,{field:this})}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}areValuesEqual(e,r){return e===r}blankSerializedValue(){return""}areSerializedValuesEqual(e,r){return e===r}}const ge={pass:{label:"Pass",icon:Vo},fail:{label:"Fail",icon:So},na:{label:"N/A",icon:vo}},Ie=Object.keys(ge);class ae extends File{constructor(e,...r){super(...r);C(this,"uuid");this.uuid=e}static from(e,r){return new ae(e,[r],r.name,{lastModified:r.lastModified,type:r.type})}}class Ce extends Promise{constructor(e,r){super(e);C(this,"_uuid");this._uuid=r}get uuid(){return this._uuid}set uuid(e){this._uuid=e}static from(e,r){return new Ce((o,s)=>{Promise.resolve(e).then(o).catch(s)},r)}then(e,r){const o=super.then(e,r);return o.uuid=this.uuid,o}catch(e){const r=super.catch(e);return r.uuid=this.uuid,r}finally(e){const r=super.finally(e);return r.uuid=this.uuid,r}}function st(i){return Array.isArray(i)?i.every(n=>n instanceof Ce||n instanceof ae):!1}function pi(i,n){const e=new Set(i.map(({uuid:o})=>o)),r=new Set(n.map(({uuid:o})=>o));return e.size===r.size&&e.isSubsetOf(r)}const Zi=d.memo(i=>{const{ref:n,file:e,error:r,rightSlot:o,className:s,size:l,...f}=i;return t.jsxs(a.Card,{className:R.cx(s,"p-0! relative flex h-48 w-full flex-col overflow-hidden"),ref:n,size:"xs",...f,children:[!e&&!r&&t.jsx("div",{className:"absolute inset-0 flex grow items-center justify-center",children:t.jsx(a.Spinner,{size:l})}),!!e&&!r&&t.jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center overflow-hidden p-3",children:t.jsx(Me,{className:"block size-full max-w-full object-cover",file:e})}),!!r&&t.jsx("div",{className:"grow"}),(!!e||!!r)&&t.jsxs(t.Fragment,{children:[t.jsx(a.Separator,{size:"full"}),t.jsxs("div",{className:"flex w-full shrink-0 items-center gap-2 self-end p-3",children:[r?t.jsx(a.LuIcon,{color:"var(--base-11)",icon:Bi}):e&&t.jsx(a.LuIcon,{color:"var(--base-11)",icon:Rn}),t.jsx(a.Text,{className:"truncate",size:l,children:r??(e==null?void 0:e.name)}),o]})]})]})});Zi.displayName="ImageCard";const Qi=d.memo(i=>{const{file:n,...e}=i,r=Pi(n);return t.jsx("video",{src:r??void 0,...e})});Qi.displayName="VideoFile";const Ri=d.memo(i=>{const{ref:n,file:e,className:r,error:o,rightSlot:s,size:l,...f}=i;return t.jsxs(a.Card,{className:R.cx(r,"p-0! relative flex h-48 w-full flex-col overflow-hidden"),ref:n,size:"xs",...f,children:[!e&&!o&&t.jsx("div",{className:"absolute inset-0 flex grow items-center justify-center",children:t.jsx(a.Spinner,{size:l})}),!!e&&!o&&t.jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center overflow-hidden p-3",children:t.jsx(Qi,{className:"block size-full max-w-full object-cover",file:e,controls:!0})}),!!o&&t.jsx("div",{className:"grow"}),(!!e||!!o)&&t.jsxs(t.Fragment,{children:[t.jsx(a.Separator,{size:"full"}),t.jsxs("div",{className:"flex w-full shrink-0 items-center gap-2 self-end p-3",children:[o?t.jsx(a.LuIcon,{color:"var(--danger-11)",icon:Bi}):e&&t.jsx(a.LuIcon,{color:"var(--base-11)",icon:Po}),t.jsx(a.Text,{className:"truncate",size:l,children:o??(e==null?void 0:e.name)}),s]})]})]})});Ri.displayName="VideoCard";const en=d.memo(i=>{const{fileOrPromise:n,onRemove:e,disabled:r,size:o}=i,[s,l]=d.useState(n instanceof Ce?null:n),[f,c]=d.useState(null),h=hi();to.useActiveEffect(v=>{if(c(null),!(n instanceof Ce)){l(n);return}l(null),n.then(I=>{v()&&l(I)}).catch(I=>{v()&&c(I instanceof Error?I.message:"Unknown error")})},[n]);const p=d.useCallback(()=>{if(!s)return;const v=new Blob([s]);Gn.saveAs(v,s.name)},[s]),m=d.useCallback(()=>{e(n)},[e,n]),g=d.useCallback(()=>{if(!s)return;const v=URL.createObjectURL(s);window.open(v,"_blank"),URL.revokeObjectURL(v)},[s]),V=d.useCallback(()=>{s&&h(v=>({file:s,onDelete:r?void 0:()=>{m(),v()}}))},[r,m,h,s]),F=d.useMemo(()=>t.jsx("div",{className:"flex grow justify-end",children:t.jsxs(a.Menu.Root,{modal:!0,children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.IconButton,{onClick:a.stopPropagation,type:"button",variant:"ghost",accentColor:"base",size:o,children:t.jsx(a.LuIcon,{icon:Qn})})}),t.jsxs(a.Menu.Content,{size:o,children:[t.jsxs(a.Menu.Item,{onSelect:p,disabled:!s,children:[t.jsx(a.LuIcon,{icon:Zn})," Download"]}),r?null:t.jsxs(t.Fragment,{children:[t.jsx(a.Menu.Separator,{}),t.jsxs(a.Menu.Item,{onSelect:m,children:[t.jsx(a.LuIcon,{icon:ue})," Delete"]})]})]})]})}),[r,m,p,s,o]),w=!!(s!=null&&s.type.startsWith("image/")),S=!!(s!=null&&s.type.startsWith("video/"));return w?t.jsx(Zi,{className:"cursor-pointer",onClick:V,file:s,error:f??void 0,rightSlot:F,size:o}):S?t.jsx(Ri,{className:"cursor-pointer",onClick:V,file:s,error:f??void 0,rightSlot:F,size:o}):t.jsx($i,{className:"cursor-pointer",file:s,error:f??void 0,onClick:g,rightSlot:F,size:o})});en.displayName="DisplayFile";const nn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useRef(null),p=d.useCallback(z=>{const b=n.cleanValue({...r,status:z});l(b),s()},[n,s,l,r]),m=d.useCallback(z=>{const b=z.target.value,L={...r,notes:b};l(L)},[r,l]),g=d.useCallback(()=>{s()},[s]),V=d.useCallback(z=>{const b=r.files.filter(({uuid:L})=>L!==z.uuid);l({...r,files:b}),s()},[l,s,r]),F=d.useCallback(()=>{var z;(z=h.current)==null||z.click()},[]),w=d.useCallback(z=>{const b=Array.from(z.target.files??[]).map(G=>ae.from(N.v4(),G)),L={...r,files:[...r.files,...b]};l(L),s()},[s,l,r]);d.useEffect(()=>{if(!h.current)return;const z=new AbortController;return h.current.addEventListener("cancel",()=>{s()},{signal:z.signal}),()=>{z.abort()}},[s,r]);const S=r.status&&n.showNotesAndFilesOn.includes(r.status),v=`${n.identifier}-status`,I=`${n.identifier}-notes`,q=`${n.identifier}-files`;return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx(a.RadioGroup.Root,{id:v,className:"flex gap-2",name:o,value:r.status,disabled:c,accentColor:"base",variant:"surface",size:e,onValueChange:p,children:Ie.map(z=>{const{label:b}=ge[z];return t.jsxs("label",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(a.RadioGroup.Item,{value:z,children:t.jsx(a.RadioGroup.Indicator,{children:t.jsx(a.LuIcon,{icon:Xn,className:"fill-current"})})}),t.jsx(a.Text,{size:e,accentColor:"base",className:"truncate",children:b})]},`${n.identifier}-${z}`)})}),S&&t.jsxs(t.Fragment,{children:[t.jsx("div",{children:t.jsx(a.TextArea,{id:I,value:r.notes??"",name:o,onChange:m,onBlur:g,className:"field-sizing-content min-h-12 w-full",placeholder:"Notes",resize:"vertical",accentColor:"base",variant:"surface",size:e,disabled:c})}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs(a.Button,{className:"w-max",size:e,variant:"surface",accentColor:"base",onClick:F,type:"button",disabled:c,children:[t.jsx(a.LuIcon,{icon:Ei}),"Select files"]}),t.jsx("input",{id:q,name:o,type:"file",ref:h,multiple:!0,className:"hidden",onChange:w,value:""}),r.files.length>0&&t.jsx("div",{className:"flex h-max flex-wrap gap-2",children:r.files.map(z=>t.jsx(en,{size:e,fileOrPromise:z,onRemove:V,disabled:c},z.uuid))})]})]})]})})});nn.displayName="PassFailFieldInput";const tn=i=>typeof i=="string"&&Ie.includes(i),lt=i=>!(i===null||typeof i!="object"||!("status"in i)||!tn(i.status)||!("notes"in i)||typeof i.notes!="string"||!("files"in i)||!(Array.isArray(i.files)&&i.files.length===0)),dt=i=>!(i===null||typeof i!="object"||!("status"in i)||!tn(i.status)||!("notes"in i)||typeof i.notes!="string"||!("files"in i)||!st(i.files)),ct=i=>({status:i.status,notes:i.notes,files:[]}),ut=i=>({status:i.status,notes:i.notes,files:[]}),ht=(i,n)=>!(i.status!==n.status||i.notes!==n.notes||!pi(i.files,n.files)),ft=(i,n)=>!(i.status!==n.status||i.notes!==n.notes||i.files.length!==n.files.length);class Ve extends k{constructor(e){const{showNotesAndFilesOn:r,...o}=e;super(o);C(this,"type","pass-fail");C(this,"showNotesAndFilesOn");this.showNotesAndFilesOn=r}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new te({identifier:`${r}showNotesAndFilesOn`,label:"Show notes and files on",description:"Show the notes and files on desired statuses.",options:Ie.map(o=>{const{label:s}=ge[o];return{value:o,label:s}}),required:!1}),showDirectly:!1}]}serialize(){return{...super.serialize(),showNotesAndFilesOn:this.showNotesAndFilesOn}}getOptions(){return{...super.getOptions(),showNotesAndFilesOn:this.showNotesAndFilesOn}}duplicate(e){return new Ve({...this.getOptions(),identifier:e})}setOptions(e){const{showNotesAndFilesOn:r,...o}=e;this.showNotesAndFilesOn=r??this.showNotesAndFilesOn,super.setOptions(o)}getFieldValidators(){const e=super.getFieldValidators(),r=this.showNotesAndFilesOn,o=this.blankValue();return r.length>0&&(e.push(s=>{if(!(!s.status||!r.includes(s.status))&&o.notes===s.notes)return"Notes is required."}),e.push(s=>{if(!(!s.status||!r.includes(s.status))&&pi(o.files,s.files))return"Files is required."})),e}static deserialize(e){return new Ve({...e,showNotesAndFilesOn:e.showNotesAndFilesOn??!1})}serializeValue(e){return ct(e)}deserializeValue(e){return ut(e)}render(){return t.jsx(nn,{field:this})}isSerializedValue(e){return lt(e)}isValue(e){return dt(e)}areValuesEqual(e,r){return ht(e,r)}blankValue(){return{status:null,notes:"",files:[]}}cleanValue(e){return e.status&&this.showNotesAndFilesOn.includes(e.status)?e:{status:e.status,notes:"",files:[]}}cleanSerializedValue(e){return super.cleanSerializedValue(e)}blankSerializedValue(){return{status:null,notes:"",files:[]}}areSerializedValuesEqual(e,r){return ft(e,r)}}const rn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g),s()},[s,l]),p=d.useCallback(()=>{s()},[s]),m=d.useCallback(()=>{l(null),s()},[s,l]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.RadioGroup.Root,{id:n.identifier,name:o,className:"flex flex-col gap-1",accentColor:"base",variant:"surface",size:e,value:r??"",onValueChange:h,disabled:c,children:[n.options.map((g,V)=>t.jsxs("label",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(a.RadioGroup.Item,{value:g.value,onBlur:p,children:t.jsx(a.RadioGroup.Indicator,{children:t.jsx(a.LuIcon,{icon:Xn,className:"fill-current"})})}),t.jsx(a.Text,{size:e,accentColor:"base",className:"truncate",children:g.label})]},`${n.identifier}-${g.value}-${V}`)),!!r&&t.jsxs(a.Button,{onClick:m,className:"-mx-2 w-max",type:"button",variant:"ghost",accentColor:"base",size:e,children:[t.jsx(a.LuIcon,{icon:re}),"Clear"]})]})})});rn.displayName="RadioFieldInput";class ye extends Pe{constructor(e){super(e);C(this,"type","radio")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new ye({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){return new ye(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(rn,{field:this})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:new Set([null,...this.options.map(({value:o})=>o)]).has(e)}isValue(e){return this.isSerializedValue(e)}blankValue(){return null}areValuesEqual(e,r){return e===r}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const jo=R.cva(["group flex cursor-pointer items-center justify-center text-yellow-500 transition-colors disabled:pointer-events-none disabled:opacity-50"],{variants:{size:{xs:["size-5"],sm:["size-6"],md:["size-7"],lg:["size-8"],xl:["size-9"]}}}),on=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g),s()},[s,l]),p=d.useCallback(()=>{l(null),s()},[s,l]),m=Array.from({length:n.maxRating},(g,V)=>V+1);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs("div",{className:"flex flex-row items-center gap-1",children:[t.jsx(a.Rating.Root,{id:n.identifier,name:o,className:"flex items-center gap-0.5",value:r,onValueChange:h,disabled:c,children:m.map(g=>t.jsx(a.Rating.Item,{value:g,className:jo({size:e}),children:t.jsx(a.LuIcon,{icon:tt,className:"size-full group-data-[active=true]:fill-current"})},`${n.identifier}-${g}`))}),!c&&r!==null&&t.jsx(a.IconButton,{onClick:p,type:"button",variant:"ghost",accentColor:"base",size:e,children:t.jsx(a.LuIcon,{icon:re})})]})})});on.displayName="RatingFieldInput";class ve extends k{constructor(e){const{maxRating:r,...o}=e;super(o);C(this,"type","rating");C(this,"maxRating");this.maxRating=r}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Max Rating",description:"Maximum rating value",integers:!0,required:!1,minimum:1,maximum:10,identifier:`${r}maxRating`}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.maxRating;return e.push(o=>{if(typeof o=="number"&&(o<1||o>r))return`Rating must be between 1 and ${r}.`}),e}serialize(){return{...super.serialize(),maxRating:this.maxRating}}getOptions(){return{...super.getOptions(),maxRating:this.maxRating}}duplicate(e){return new ve({...this.getOptions(),identifier:e})}setOptions(e){const{maxRating:r,...o}=e;this.maxRating=r??this.maxRating,super.setOptions(o)}static deserialize(e){return new ve(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(on,{field:this})}isSerializedValue(e){return this.isValue(e)}isValue(e){return typeof e=="number"&&!isNaN(e)||e===null}areValuesEqual(e,r){return e===r}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const an=d.createContext(null),pt=()=>{const i=d.use(an);if(!i)throw new Error("useScannerContext must be used within a component tree wrapped by ScannerProvider.");return i},Uo=()=>{const i=d.use(an);if(!i)throw new Error("useScanner must be used within a component tree wrapped by ScannerProvider.");return i.openScanner},mi=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,...l}=i;return t.jsxs(a.Overlay.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[!!n&&t.jsx(a.Overlay.Trigger,{asChild:!0,children:n}),t.jsxs(a.Overlay.Content,{children:[t.jsx(a.Overlay.Title,{className:"sr-only",children:"Scanner"}),t.jsx(a.Overlay.Description,{className:"sr-only",children:"Scan a barcode or a qr code."}),t.jsx(mt,{...l})]})]})});mi.displayName="Scanner";const mt=d.memo(i=>{const{paused:n,formats:e,timeBetweenDecodingAttempts:r,trySkew:o,onDecodeResult:s,onDecodeError:l,onError:f}=i,{wasmUrl:c}=pt(),{ref:h}=ro.useZxing({wasmUrl:c,paused:n,formats:e,timeBetweenDecodingAttempts:r,trySkew:o,onDecodeResult:s,onDecodeError:l,onError:f});return t.jsxs("div",{className:"bg-(--color-background) flex size-full flex-col justify-center overflow-hidden",children:[t.jsx("div",{className:"flex w-full justify-end p-4",children:t.jsx(a.Overlay.Close,{asChild:!0,children:t.jsx(a.IconButton,{"aria-label":"close",variant:"soft",accentColor:"base",children:t.jsx(a.LuIcon,{icon:re})})})}),t.jsx("div",{className:"max-h-full w-full grow overflow-hidden p-4",children:t.jsx("video",{className:"size-full",ref:h,muted:!0,playsInline:!0})})]})});mt.displayName="ScannerInternal";const gt=d.memo(i=>{const{children:n,wasmUrl:e}=i,[r,o]=d.useState(null),s=d.useCallback(()=>{o(null)},[]),l=d.useCallback(h=>{o(h(s))},[s]),f=d.useCallback(()=>{r&&(r.onClose&&r.onClose(),s())},[s,r]),c=d.useMemo(()=>({wasmUrl:e,openScanner:l}),[e,l]);return t.jsxs(an,{value:c,children:[n,r&&t.jsx(mi,{open:!0,onOpenChange:f,...r})]})});gt.displayName="ScannerProvider";const sn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),[h,p]=d.useState(!1),m=d.useCallback(S=>{const v=S.target.value;l(v)},[l]),g=d.useCallback(()=>{s()},[s]),V=d.useCallback(S=>{l(S.rawValue),s(),p(!1)},[l,s]),F=d.useCallback(()=>{p(!0)},[]),w=d.useCallback(()=>{p(!1),s()},[s]);return t.jsxs(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:[t.jsx(a.TextArea,{className:"field-sizing-content w-full",accentColor:"base",variant:"surface",size:e,id:n.identifier,name:o,value:r??"",placeholder:"Enter a qr or barcode",onChange:m,onBlur:g,disabled:c}),t.jsxs(a.Button,{onClick:F,className:"w-max",type:"button",variant:"soft",size:e,accentColor:"base",disabled:c,children:[t.jsx(a.LuIcon,{icon:_o}),"Scan"]}),t.jsx(mi,{open:h,onDecodeResult:V,onOpenChange:w})]})});sn.displayName="ScanFieldInput";class qe extends k{constructor(e){super(e);C(this,"type","qr")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new qe({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){return new qe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(sn,{field:this})}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}areValuesEqual(e,r){return e===r}blankSerializedValue(){return""}areSerializedValuesEqual(e,r){return e===r}}const ln=500,dn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{const V=g.target.value;l(V)},[l]),p=d.useCallback(()=>{s()},[s]),m=d.useCallback(g=>{g.key==="Enter"&&g.preventDefault()},[]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.Input.Root,{accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{id:n.identifier,className:"truncate",name:o,value:r??"",type:"text",placeholder:n.placeholder,onChange:h,onBlur:p,disabled:c,onKeyDown:m})})})});dn.displayName="StringFieldInput";class Se extends Hi{constructor(e){const{...r}=e,o=e.maxLength?Math.min(ln,e.maxLength):ln,s=e.minLength?Math.min(e.minLength,o):void 0;super({...r,maxLength:o,minLength:s});C(this,"type","string")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new Se({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){const{maximum_length:r,minimum_length:o,...s}=e;return new Se({...s,maxLength:r,minLength:o,placeholder:"Enter a short description"})}render(){return t.jsx(dn,{field:this})}}const cn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{const g=m.target.value;l(g)},[l]),p=d.useCallback(()=>{s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.TextArea,{id:n.identifier,value:r??"",name:o,onChange:h,onBlur:p,className:"field-sizing-content min-h-12",placeholder:n.placeholder,resize:"vertical",accentColor:"base",variant:"surface",size:e,disabled:c})})});cn.displayName="TextFieldInput";class ze extends Hi{constructor(e){const r=e.maxLength?Math.min(je,e.maxLength):je,o=e.minLength?Math.min(e.minLength,r):void 0;super({...e,maxLength:r,minLength:o});C(this,"type","text")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new ze({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){const{maximum_length:r,minimum_length:o,...s}=e;return new ze({...s,maxLength:r,minLength:o,placeholder:"Enter a description"})}render(){return t.jsx(cn,{field:this})}}const un=Go(),Ct=new Set(un);function Go(i=!0){const n=new Set;for(let e=-12;e<=14;e++){const r=e>=0?"+":"-",o=Math.abs(e).toString().padStart(2,"0");n.add(`${r}${o}:00`)}if(i){const e=[-12.5,-9.5,-3.5,3.5,4.5,5.5,6.5,9.5,10.5,12.5];for(const r of e){const o=r>=0?"+":"-",s=Math.floor(Math.abs(r)).toString().padStart(2,"0");n.add(`${o}${s}:30`)}}return Array.from(n).sort((e,r)=>Vt(e)-Vt(r))}function Vt(i){const n=i[0]==="+"?1:-1,e=Number(i.slice(1,3)),r=Number(i.slice(4,6));return n*(e*60+r)}const ko="+00:00",Ho=/^T([01]\d|2[0-3]):([0-5]\d):00([+-]\d{2}:\d{2})$/,gi=i=>typeof i=="string"&&Ct.has(i),yt=()=>{const i=-new Date().getTimezoneOffset(),n=i>=0?"+":"-",e=Math.abs(i),r=Math.floor(e/60),o=e%60,s=`${n}${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`;return gi(s)?s:ko};function vt(i){const n=/^([+-])(\d{2}):(\d{2})$/.exec(i);if(!n)throw new Error(`Invalid UTC offset: ${i}`);return(n[1]==="+"?1:-1)*(Number(n[2])*60+Number(n[3]))}const Ue=i=>{const n=Ho.exec(i);if(!n)return null;const e=n[3];return gi(e)?{hours:Number(n[1]),minutes:Number(n[2]),utcOffset:e}:null},E=i=>typeof i=="string"&&Ue(i)!==null,hn=(i,n,e=yt())=>{if(!Number.isInteger(i)||i<0||i>23)throw new Error(`Invalid hour: ${i}`);if(!Number.isInteger(n)||n<0||n>59)throw new Error(`Invalid minute: ${n}`);if(!gi(e))throw new Error("Unsupported UTC offset");const r=i.toString().padStart(2,"0"),o=n.toString().padStart(2,"0");return`T${r}:${o}:00${e}`},Ci=i=>`UTC${i}`,se=i=>{const n=Ue(i);if(!n)throw new Error(`Invalid time value: ${i}`);return(n.hours*60+n.minutes-vt(n.utcOffset)+1440)%1440},Vi=(i,n=!0)=>{const e=Ue(i);if(!e)throw new Error(`Invalid time value: ${i}`);const r=(e.hours%12||12).toString().padStart(2,"0"),o=e.minutes.toString().padStart(2,"0"),s=e.hours>=12?"PM":"AM",l=`${r}:${o} ${s}`;return n?`${l} ${Ci(e.utcOffset)}`:l},Ge=i=>typeof i=="object"&&(E(i.from)||E(i.to)),fn=(i,n)=>{const e=se(i),r=n.from?se(n.from):null,o=n.to?se(n.to):null;return r===null&&o===null?!0:r===null?e<=o:o===null?e>=r:r<=o?e>=r&&e<=o:e>=r||e<=o},yi=d.memo(i=>{const{value:n,onChange:e,onBlur:r,disabled:o,size:s="md",id:l,name:f,compact:c=!1}=i,h=n?Ue(n):null,p=h?`${h.hours.toString().padStart(2,"0")}:${h.minutes.toString().padStart(2,"0")}`:"",m=d.useCallback(F=>{const w=F.target.value;if(!w){e(null);return}const[S,v]=w.split(":").map(Number);e(hn(S,v,h==null?void 0:h.utcOffset))},[e,h==null?void 0:h.utcOffset]),g=d.useCallback(F=>{h&&(e(hn(h.hours,h.minutes,F)),r==null||r())},[r,e,h]),V=d.useCallback(F=>{F||r==null||r()},[r]);return t.jsxs("div",{className:"flex min-w-0 gap-2",children:[t.jsx(a.Input.Root,{className:"min-w-0 grow",accentColor:"base",variant:"surface",size:s,children:t.jsx(a.Input.Field,{id:l,name:f,className:R.cx("[&::-webkit-calendar-picker-indicator]:invert-40 dark:[&::-webkit-calendar-picker-indicator]:invert-60",{"[&::-webkit-datetime-edit]:opacity-60":!n}),type:"time",step:60,value:p,onChange:m,onBlur:r,disabled:o})}),t.jsxs(a.Menu.Root,{align:"end",onOpenChange:V,children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsxs(a.Button,{type:"button",className:c?"!justify-between":"min-w-32 !justify-between",accentColor:"base",variant:"surface",size:s,disabled:o||!h,children:[t.jsx(a.Text,{className:"truncate",highContrast:!!h,children:h?Ci(h.utcOffset):"UTC offset"}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Menu.Content,{size:s,children:t.jsx(a.Menu.Scroll,{children:t.jsx(a.Menu.SelectGroup,{required:!0,value:h==null?void 0:h.utcOffset,onValueChange:g,children:un.map(F=>t.jsxs(a.Menu.SelectItem,{value:F,children:[t.jsx(a.Menu.SelectedIndicator,{children:t.jsx(a.LuIcon,{icon:W})}),Ci(F)]},F))})})})]})]})});yi.displayName="TimeFieldControl";const pn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n});return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(yi,{id:n.identifier,name:o,size:e,value:r,onChange:l,onBlur:s,disabled:c})})});pn.displayName="TimeFieldInput";class Oe extends k{constructor(e){super(e);C(this,"type","time")}static deserialize(e){return new Oe(e)}getOptions(){return super.getOptions()}duplicate(e){return new Oe({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(pn,{field:this})}isSerializedValue(e){return e===null||E(e)}isValue(e){return e===null||E(e)}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return e===r}}const mn=d.memo(i=>{var S;const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useRef(null),p=d.useCallback(()=>{var v;(v=h.current)==null||v.click()},[]),m=d.useCallback(()=>{if(!h.current)return;const v=h.current.files;if(!v){s();return}const I=Array.from(v).map(z=>ae.from(N.v4(),z)),q=[...r,...I];l(q),s()},[s,l,r]),g=d.useCallback(v=>{const I=r.filter(({uuid:q})=>q!==v.uuid);l(I),s()},[r,l,s]);d.useEffect(()=>{if(!h.current)return;const v=new AbortController;return h.current.addEventListener("cancel",()=>{s()},{signal:v.signal}),()=>{v.abort()}},[s,r]);const w=n.maxFiles>1?"Select files":"Select a file";return t.jsxs(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:[t.jsxs(a.Button,{className:"w-max",size:e,variant:"surface",accentColor:"base",onClick:p,type:"button",disabled:c,children:[t.jsx(a.LuIcon,{icon:Ei}),w]}),t.jsx("input",{id:n.identifier,name:o,type:"file",ref:h,accept:(S=n.extensions)==null?void 0:S.join(","),multiple:n.maxFiles>1,className:"hidden",onChange:m,value:""}),r.length>0&&t.jsx("div",{className:"mt-1 flex h-max flex-col gap-2",children:r.map(v=>t.jsx(en,{size:e,fileOrPromise:v,onRemove:g,disabled:c},v.uuid))})]})});mn.displayName="UploadFieldInput";class we extends k{constructor(e){const{extensions:r,maximum_files:o,maximum_size:s,...l}=e;super(l);C(this,"type","upload");C(this,"extensions");C(this,"maxFileSize");C(this,"maxFiles");this.maxFileSize=typeof s=="number"?s:void 0,this.maxFiles=Math.max(typeof o=="number"?o:1,1),this.extensions=r}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"How many files can be uploaded?",description:"By default, only one file can be uploaded.",required:!1,minimum:1,maximum:10,identifier:`${r}maximum_files`,integers:!0}),showDirectly:!1},{field:new H({label:"What is the maximum size of each file?",description:`Maximum file size in megabytes (between 1MB–${Te}MB).`,required:!1,identifier:`${r}maximum_size`,minimum:1,maximum:Te,integers:!0}),showDirectly:!1},{field:new te({label:"Accepted file types",description:"Types of allowed files to upload. If left blank, all files will be accepted.",required:!1,identifier:`${r}extensions`,options:[{value:"image/*",label:"Images"},{value:"audio/*",label:"Audio files"},{value:"video/*",label:"Videos"},{value:"text/*",label:"Text files"},{value:"application/*",label:"Application files (includes PDFs and Word documents)"}]}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.maxFileSize??Te,o=r*1e3*1e3,s=this.maxFiles||1;return e.push(l=>{if(l.some(f=>f instanceof ae&&f.size>o))return`Files must be at most ${r}MB.`}),e.push(l=>{if(l.length>s)return`You can only upload ${s} files.`}),e}serialize(){return{...super.serialize(),extensions:this.extensions,maximum_size:this.maxFileSize,maximum_files:this.maxFiles}}getOptions(){return{...super.getOptions(),extensions:this.extensions,maximum_size:this.maxFileSize,maximum_files:this.maxFiles}}duplicate(e){return new we({...this.getOptions(),identifier:e})}setOptions(e){const{extensions:r,maximum_files:o,maximum_size:s,...l}=e;this.maxFileSize=typeof s=="number"?s:this.maxFileSize,this.maxFiles=typeof o=="number"?o:this.maxFiles,this.extensions=r,super.setOptions(l)}static deserialize(e){return new we(e)}serializeValue(e){return[]}deserializeValue(e){return[]}render(){return t.jsx(mn,{field:this})}isSerializedValue(e){return Array.isArray(e)&&e.length===0}isValue(e){return Array.isArray(e)?e.every(r=>r instanceof Ce||r instanceof ae):!1}areValuesEqual(e,r){return pi(e,r)}blankValue(){return[]}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){return e.length===r.length}}const gn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(V=>{const F=V.target.value;F!==""&&!URL.canParse(F)||l(F!==""?new URL(F):null)},[l]),p=d.useCallback(()=>{s()},[s]),m=d.useCallback(V=>{V.key==="Enter"&&V.preventDefault()},[]),g=d.useCallback(()=>{r!==null&&window.open(r,"_blank","noopener,noreferrer")},[r]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs("div",{className:"flex w-full gap-2",children:[t.jsx(a.Input.Root,{className:"grow",accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{id:n.identifier,className:"truncate",name:o,value:r?r.toString():"",type:"url",inputMode:"url",placeholder:n.placeholder,onChange:h,onBlur:p,disabled:c,onKeyDown:m})}),t.jsx(a.IconButton,{size:e,variant:"soft",accentColor:"base",type:"button",disabled:r===null,onClick:g,children:t.jsx(a.LuIcon,{icon:Fo})})]})})});gn.displayName="URLFieldInput";class _e extends k{constructor(e){const{placeholder:r="https://example.com",...o}=e;super(o);C(this,"type","url");C(this,"placeholder");this.placeholder=r}serialize(){return{...super.serialize(),placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new _e({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:r,...o}=e;this.placeholder=r??this.placeholder,super.setOptions(o)}static deserialize(e){return new _e(e)}serializeValue(e){return(e==null?void 0:e.toString())??null}deserializeValue(e){return e===null?null:new URL(e)}isSerializedValue(e){return e===null?!0:typeof e!="string"?!1:URL.canParse(e)}isValue(e){return e===null||e instanceof URL}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return(e==null?void 0:e.toString())===(r==null?void 0:r.toString())}render(){return t.jsx(gn,{field:this})}}const Cn={date:xe,time:Oe,number:H,boolean:fe,select:oe,string:Se,url:_e,text:ze,upload:we,qr:qe,"multi-string":he,"multi-select":te,radio:ye,"checkbox-list":pe,"pass-fail":Ve,otp:me,rating:ve},St=Object.keys(Cn),T={"checkbox-list":{description:"Allows the user to select a multiple options from a list.",group:O.Selection,icon:wo,name:"Checkbox list"},"multi-select":{description:"Allows the user to select a multiple options from a list of options.",group:O.Selection,icon:Io,name:"Multi-select"},"multi-string":{description:"Allows the user to provide multiple unique strings.",group:O.Text,icon:Oo,name:"Multi-string"},"pass-fail":{description:"Track pass, fail, or N/A outcome.",group:O.Assessment,icon:zo,name:"Pass - Fail"},boolean:{description:"Perfect for both optional and required yes/no questions.",group:O.Selection,icon:Ao,name:"Checkbox"},date:{description:"Allows specifying a date.",group:O.Temporal,icon:Co,name:"Date"},time:{description:"Allows specifying a time and UTC offset.",group:O.Temporal,icon:Do,name:"Time"},number:{description:"Allows specifying a number within a given range.",group:O.Numeric,icon:Mo,name:"Number"},otp:{description:"Allows specifying a number within a given range.",group:O.Verification,icon:To,name:"OTP"},qr:{description:"Used for scanning/reading QR and barcodes.",group:O.Capture,icon:Lo,name:"Scan"},radio:{description:"Allows the user to select a single option from a list of options.",group:O.Selection,icon:yo,name:"Option list"},rating:{description:"Allows users to select a rating value.",group:O.Assessment,icon:tt,name:"Rating"},select:{description:"Allows the user to select a single option from a list of options.",group:O.Selection,icon:qo,name:"Dropdown"},string:{description:"Short text fields can hold up to 500 characters on a single line.",group:O.Text,icon:$o,name:"Short Text"},text:{description:"Paragraph fields can hold up to 10000 characters and can have multiple lines.",group:O.Text,icon:po,name:"Paragraph"},upload:{description:"Allows a file to be uploaded.",group:O.Capture,icon:Ei,name:"Upload"},url:{description:"Allows users to enter a URL.",group:O.Text,icon:xo,name:"URL"}},zt={[O.Assessment]:{name:"Assessment"},[O.Capture]:{name:"Capture"},[O.Numeric]:{name:"Numeric"},[O.Selection]:{name:"Selection"},[O.Temporal]:{name:"Temporal"},[O.Text]:{name:"Text"},[O.Verification]:{name:"Verification"}},Te=50,wt=Te*1e3,Ft=wt*1e3,$="Unlabelled",Vn="Unlabelled";class x{constructor(n){C(this,"id");C(this,"label");C(this,"getApplyFn");C(this,"serialize");C(this,"deserialize");const{id:e,getApplyFn:r,label:o,serialize:s,deserialize:l}=n;this.id=e,this.getApplyFn=r,this.label=o,this.serialize=s,this.deserialize=l}static create(n){return new x(n)}}const bt=x.create({id:"nullable-boolean-equals",label:"is",getApplyFn:i=>n=>n===i,serialize:i=>i,deserialize:i=>i}),Nt=x.create({id:"nullable-boolean-not-equals",label:"is not",getApplyFn:i=>n=>n!==i,serialize:i=>i,deserialize:i=>i}),Mt=x.create({id:"date-equals",getApplyFn:i=>n=>n.getTime()===i.getTime(),label:"is",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),xt=x.create({id:"date-not-equals",getApplyFn:i=>n=>n.getTime()!==i.getTime(),label:"is not",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),It=x.create({id:"date-before",getApplyFn:i=>n=>n.getTime()<i.getTime(),label:"before",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),qt=x.create({id:"date-after",label:"after",getApplyFn:i=>n=>n.getTime()>i.getTime(),serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),Ot=x.create({id:"date-range-in",label:"in between",getApplyFn:i=>n=>!(i!=null&&i.from&&i.from.getTime()>n.getTime()||i!=null&&i.to&&i.to.getTime()<n.getTime()),serialize:i=>{var n,e;return{from:((n=i.from)==null?void 0:n.toISOString())??null,to:((e=i.to)==null?void 0:e.toISOString())??null}},deserialize:i=>({from:i.from?new Date(i.from):void 0,to:i.to?new Date(i.to):void 0})}),_t=x.create({id:"date-range-not-in",label:"not in between",getApplyFn:i=>n=>!!(i!=null&&i.from&&i.from.getTime()>n.getTime()||i!=null&&i.to&&i.to.getTime()<n.getTime()),serialize:i=>{var n,e;return{from:((n=i.from)==null?void 0:n.toISOString())??null,to:((e=i.to)==null?void 0:e.toISOString())??null}},deserialize:i=>({from:i.from?new Date(i.from):void 0,to:i.to?new Date(i.to):void 0})}),Tt=x.create({id:"has-files",label:"is",getApplyFn:i=>n=>n.length>0,serialize:i=>i,deserialize:i=>i}),Lt=x.create({id:"does-not-have-files",label:"is not",getApplyFn:i=>n=>n.length===0,serialize:i=>i,deserialize:i=>i}),yn=x.create({id:"number-equals",getApplyFn:i=>n=>n===i,label:"is",serialize:i=>i,deserialize:i=>i}),vn=x.create({id:"number-not-equals",getApplyFn:i=>n=>n!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Sn=x.create({id:"number-less-than",getApplyFn:i=>n=>n<i,label:"is less than",serialize:i=>i,deserialize:i=>i}),zn=x.create({id:"number-less-than-or-equals",getApplyFn:i=>n=>n<=i,label:"is less than or equal to",serialize:i=>i,deserialize:i=>i}),wn=x.create({id:"number-greater-than",getApplyFn:i=>n=>n>i,label:"is greater than",serialize:i=>i,deserialize:i=>i}),Fn=x.create({id:"number-greater-than-or-equals",getApplyFn:i=>n=>n>=i,label:"is greater than or equal to",serialize:i=>i,deserialize:i=>i}),bn=x.create({id:"number-range-in",getApplyFn:i=>n=>!(i.to&&n>i.to||i.from&&n<i.from),label:"is between",serialize:i=>i,deserialize:i=>i}),Nn=x.create({id:"number-range-not-in",getApplyFn:i=>n=>!!(i.to&&n>i.to||i.from&&n<i.from),label:"is not between",serialize:i=>i,deserialize:i=>i}),Bt=x.create({id:"pass-fail-equals",getApplyFn:i=>n=>n===i,label:"is",serialize:i=>i,deserialize:i=>i}),At=x.create({id:"pass-fail-not-equals",getApplyFn:i=>n=>n!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Et=x.create({id:"pass-fail-array-includes",getApplyFn:i=>{const n=new Set(i);return e=>n.has(e)},label:"is any of",serialize:i=>i,deserialize:i=>i}),$t=x.create({id:"pass-fail-array-excludes",getApplyFn:i=>{const n=new Set(i);return e=>!n.has(e)},label:"is none of",serialize:i=>i,deserialize:i=>i}),le=x.create({id:"nullable-string-equals",getApplyFn:i=>n=>n===i,label:"is",serialize:i=>i,deserialize:i=>i}),de=x.create({id:"nullable-string-not-equals",getApplyFn:i=>n=>n!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Le=x.create({id:"string-includes",getApplyFn:i=>n=>n.includes(i),label:"includes",serialize:i=>i,deserialize:i=>i}),Be=x.create({id:"string-excludes",getApplyFn:i=>n=>!n.includes(i),label:"does not include",serialize:i=>i,deserialize:i=>i}),Mn=x.create({id:"string-array-includes",getApplyFn:i=>{const n=new Set(i);return e=>n.has(e)},label:"is any of",serialize:i=>i,deserialize:i=>i}),xn=x.create({id:"string-array-excludes",getApplyFn:i=>{const n=new Set(i);return e=>!n.has(e)},label:"is none of",serialize:i=>i,deserialize:i=>i}),vi=x.create({id:"string-array-every",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.isSubsetOf(r)}},label:"has all of",serialize:i=>i,deserialize:i=>i}),Si=x.create({id:"string-array-some",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return!n.isDisjointFrom(r)}},label:"has any of",serialize:i=>i,deserialize:i=>i}),zi=x.create({id:"string-array-none",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.isDisjointFrom(r)}},label:"has none of",serialize:i=>i,deserialize:i=>i}),wi=x.create({id:"string-array-equals",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.size===r.size&&r.isSubsetOf(n)}},label:"is",serialize:i=>i,deserialize:i=>i}),Fi=x.create({id:"string-array-not-equals",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.size!==r.size||!r.isSubsetOf(n)}},label:"is not",serialize:i=>i,deserialize:i=>i}),Dt=x.create({id:"time-equals",label:"is",getApplyFn:i=>n=>n===i,serialize:i=>i,deserialize:i=>i}),Pt=x.create({id:"time-not-equals",label:"is not",getApplyFn:i=>n=>n!==i,serialize:i=>i,deserialize:i=>i}),jt=x.create({id:"time-before",label:"before",getApplyFn:i=>n=>se(n)<se(i),serialize:i=>i,deserialize:i=>i}),Ut=x.create({id:"time-after",label:"after",getApplyFn:i=>n=>se(n)>se(i),serialize:i=>i,deserialize:i=>i}),Gt=x.create({id:"time-range-in",label:"in between",getApplyFn:i=>n=>fn(n,i),serialize:i=>i,deserialize:i=>i}),kt=x.create({id:"time-range-not-in",label:"not in between",getApplyFn:i=>n=>!fn(n,i),serialize:i=>i,deserialize:i=>i}),y=i=>i;class P extends De{constructor(e){const{id:r,field:o,conditionValue:s,conditionModifier:l}=e;super();C(this,"id");C(this,"conditionValue");C(this,"conditionModifier");C(this,"field");C(this,"getConditionValue",()=>this.conditionValue);C(this,"setConditionValue",e=>{const r=this.modifiers[this.conditionModifier];e!==void 0&&!r.isConditionValueValid(e)||(this.conditionValue=e,this.notify(this))});C(this,"getConditionModifier",()=>this.conditionModifier);C(this,"setConditionModifier",e=>{const r=this.modifiers[e],o=this.getConditionValue();o&&!r.isConditionValueValid(o)&&(this.conditionValue=void 0),this.conditionModifier=e,this.notify(this)});C(this,"getConditionModifiers",()=>Object.entries(this.modifiers));C(this,"accessorFn",e=>e[this.field.identifier]);C(this,"getApplyFn",()=>{const e=this.modifiers[this.conditionModifier],r=this.getConditionValue(),o=r!==void 0&&e.isConditionValueValid(r),s=o?e.modifier.getApplyFn(r):null;return l=>{if(!o)return!0;const f=this.transformValue(l);return e.isValueValid(f)?s(f):!1}});this.id=r,this.field=o,this.conditionValue=s,this.conditionModifier=l}serialize(){return{id:this.id,type:this.field.type,fieldId:this.field.identifier,conditionValue:this.conditionValue!==void 0?this.modifiers[this.conditionModifier].modifier.serialize(this.conditionValue):void 0,conditionModifier:this.conditionModifier}}transformValue(e){return e}}const Ht=d.memo,Fe=Ht(function(i){const{ref:n,children:e,...r}=i,o=d.useCallback(s=>typeof e=="function"?t.jsxs(t.Fragment,{children:[e(s),t.jsx(a.Menu.SelectedIndicator,{className:"ml-[auto]",children:t.jsx(a.LuIcon,{icon:W})})]}):t.jsxs(t.Fragment,{children:[e,t.jsx(a.Menu.SelectedIndicator,{className:"ml-[auto]",children:t.jsx(a.LuIcon,{icon:W})})]}),[e]);return t.jsx(a.Menu.SelectItem,{ref:n,...r,children:o})}),Jt=Ht(function(i){const{ref:n,children:e,...r}=i,o=d.useCallback(s=>typeof e=="function"?t.jsxs(t.Fragment,{children:[e(s),t.jsx(a.Menu.SelectedIndicator,{className:"ml-auto",children:t.jsx(a.LuIcon,{icon:W})})]}):t.jsxs(t.Fragment,{children:[e,t.jsx(a.Menu.SelectedIndicator,{className:"ml-auto",children:t.jsx(a.LuIcon,{icon:W})})]}),[e]);return t.jsx(a.Menu.MultiSelectItem,{ref:n,...r,children:o})}),In=d.memo(i=>{const{ref:n,children:e,...r}=i,o=d.useCallback(s=>typeof e=="function"?t.jsxs(t.Fragment,{children:[e(s),t.jsx(a.Menu.CheckboxItemIndicator,{className:"ml-[auto]",children:l=>l?t.jsx(a.LuIcon,{icon:ui}):t.jsx(a.LuIcon,{icon:W})})]}):t.jsxs(t.Fragment,{children:[e,t.jsx(a.Menu.CheckboxItemIndicator,{className:"ml-[auto]",children:l=>l?t.jsx(a.LuIcon,{icon:ui}):t.jsx(a.LuIcon,{icon:W})})]}),[e]);return t.jsx(a.Menu.SelectAllItem,{ref:n,...r,children:o})});In.displayName="SelectAllItemTemplate";const U=i=>{const{children:n,condition:e,size:r="sm",variant:o,accentColor:s,radius:l}=i,f=d.useCallback(c=>{e.setConditionModifier(c)},[e]);return t.jsxs(a.Menu.Root,{align:"start",children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{size:r,variant:o,radius:l,accentColor:s,children:t.jsx(a.Menu.SelectGroup,{required:!0,value:e.getConditionModifier(),onValueChange:f,children:e.getConditionModifiers().map(([c,h])=>t.jsx(Fe,{value:c,children:h.modifier.label},c))})})]})},bi=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,align:f,accentColor:c="base",...h}=i;return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,align:f,children:t.jsx(a.DayPicker,{size:l,accentColor:c,...h})})]})});bi.displayName="DayPickerPopover";const Wt=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,accentColor:f="base",values:c,onValuesChange:h,placeholder:p="Enter text",...m}=i,[g,V]=d.useState(""),F=d.useCallback(I=>{V(I.target.value)},[]),w=d.useCallback(I=>{I.key==="Enter"&&(I.preventDefault(),I.stopPropagation(),h([...c,g]),V(""))},[g,h,c]),S=d.useCallback(()=>{h([...c,g]),V("")},[g,h,c]),v=d.useCallback(I=>{const q=[...c];q.splice(I,1),h(q)},[h,c]);return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,accentColor:f,...m,children:t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs("div",{className:"flex gap-2",children:[t.jsx(a.Input.Root,{className:"grow",accentColor:"base",variant:"outline",size:"sm",children:t.jsx(a.Input.Field,{value:g,onChange:F,onKeyDown:w,placeholder:p,...m})}),t.jsx(a.IconButton,{size:"sm",accentColor:"base",variant:"soft",type:"button",onClick:S,children:t.jsx(a.LuIcon,{icon:Z})})]}),c.length>0&&t.jsx("div",{className:"flex flex-col gap-1",children:c.map((I,q)=>t.jsxs(a.Badge,{className:"flex items-center justify-between gap-2",accentColor:"base",size:"sm",variant:"soft",children:[t.jsx("span",{className:"truncate",children:I}),t.jsx(a.IconButton,{size:"xs",variant:"ghost",type:"button",accentColor:"base",onClick:()=>{v(q)},children:t.jsx(a.LuIcon,{icon:re})})]},`${I}-${q}`))})]})})]})});Wt.displayName="NumberInputPopover";const be=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,accentColor:f="base",value:c,onValueChange:h,placeholder:p="Enter a number",...m}=i,[g,V]=d.useState(null);d.useEffect(()=>{c!==void 0&&V(c)},[c]);const F=d.useCallback(S=>{const v=S.target.valueAsNumber;V(isNaN(v)?null:v)},[]),w=d.useCallback(S=>{const v=S.target.valueAsNumber;h==null||h(isNaN(v)?null:v)},[h]);return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,...m,children:t.jsx(a.Input.Root,{size:l,accentColor:f,children:t.jsx(a.Input.Field,{placeholder:p,type:"number",value:g??"",onChange:F,onBlur:w})})})]})});be.displayName="NumberInputPopover";const j=i=>{const{condition:n,onClick:e,...r}=i,o=d.useCallback(()=>{e(n)},[n,e]);return t.jsx(a.IconButton,{onClick:o,...r,children:t.jsx(a.LuIcon,{icon:re})})};j.displayName="RemoveConditionButton";const ke=d.memo(i=>{const{ref:n,selectFieldOptions:e,...r}=i,o=d.useMemo(()=>e.map(s=>typeof s=="string"?{value:s,label:s}:s),[e]);return t.jsxs(a.Menu.MultiSelectGroup,{ref:n,...r,children:[t.jsx(In,{children:"Select all"}),o.map(s=>t.jsx(Jt,{value:s.value,children:t.jsx("span",{className:"truncate",children:s.label})},s.value))]})});ke.displayName="SelectFieldOptionMultiSelectGroup";const qn=d.memo(i=>{const{ref:n,selectFieldOptions:e,...r}=i,o=d.useMemo(()=>e.map(s=>typeof s=="string"?{value:s,label:s}:s),[e]);return t.jsx(a.Menu.SelectGroup,{ref:n,...r,children:o.map(s=>t.jsx(Fe,{value:s.value,children:t.jsx("span",{className:"truncate",children:s.label})},s.value))})});qn.displayName="SelectFieldOptionSelectGroup";const Ae=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,accentColor:f="base",value:c,onValueChange:h,placeholder:p="Enter text",...m}=i,[g,V]=d.useState(""),F=d.useCallback(S=>{V(S.target.value)},[]),w=d.useCallback(S=>{const v=S.target.value;h==null||h(v)},[h]);return d.useEffect(()=>{c&&V(c)},[c]),t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,...m,children:t.jsx(a.Input.Root,{size:l,accentColor:f,children:t.jsx(a.Input.Field,{placeholder:p,type:"text",value:g,onChange:F,onBlur:w})})})]})});Ae.displayName="TextInputPopover";const Ni=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l="sm",accentColor:f="base",value:c,onValueChange:h,...p}=i;return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,accentColor:f,...p,children:t.jsx(yi,{compact:!0,size:l,value:c,onChange:h})})]})});Ni.displayName="TimeInputPopover";const Xt=i=>{const{condition:n,onRemove:e}=i,r=n.getConditionValue(),o=n.getConditionModifier(),s=()=>{switch(r){case void 0:return"...";case!0:return"true";case!1:return"false";case null:return"empty"}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[n.field.type].icon}),t.jsx("span",{className:"truncate",children:n.field.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[o].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:s()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsxs(a.Menu.SelectGroup,{required:!0,value:r,onValueChange:n.setConditionValue,children:[t.jsx(Fe,{value:!0,children:"true"}),t.jsx(Fe,{value:!1,children:"false"})]})})]}),t.jsx(j,{condition:n,onClick:e})]})},Kt={equals:y({modifier:bt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Nt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class He extends P{constructor(e){super(e);C(this,"modifiers",Kt)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Kt[s];let c;return o!==void 0&&(c=f.modifier.deserialize(o)),new He({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Xt,{condition:this,...e},this.id)}}const Ee=[],Yt=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{c.length>0?n.setConditionValue(c):n.setConditionValue(void 0)},[n]),f=()=>{if(o===void 0)return"...";if(o===null)return"empty";switch(o.length){case 0:return"...";default:return`${o.length} options`}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"soft",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"soft",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"truncate",children:f()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{values:o??Ee,selectFieldOptions:n.field.options,onValuesChange:l})})]}),t.jsx(j,{condition:n,onClick:e})]})},Zt={equals:y({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:y({modifier:vi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:y({modifier:Si,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:y({modifier:zi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Je extends P{constructor(e){super(e);C(this,"modifiers",Zt)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Zt[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Je({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Yt,{condition:this,...e},this.id)}}class Mi extends De{constructor(e){super();C(this,"conditions");C(this,"conditionObserver",()=>{this.conditions=[...this.conditions],this.notify(this)});C(this,"initConditions",e=>{for(const r of e)r.observe(this.conditionObserver);return e});this.conditions=this.initConditions(e)}getConditions(){return this.conditions}addCondition(e){this.conditions=this.initConditions([...this.conditions,e]),this.notify(this)}addConditions(e){this.conditions=this.initConditions([...this.conditions,...e]),this.notify(this)}removeCondition(e){this.conditions=this.initConditions(this.conditions.filter(r=>r.id!==e.id)),this.notify(this)}removeConditions(e){const r=new Set(e.map(o=>o.id));this.conditions=this.initConditions(this.conditions.filter(o=>!r.has(o.id))),this.notify(this)}applyConditions(e){return this.conditions.length===0?!0:this.conditions.map(o=>[o.getApplyFn(),o.accessorFn]).every(([o,s])=>o(s(e)))}}const Jo=(i,n)=>d.useMemo(()=>{const e=new Mi(i);return e.observe(r=>n(r.getConditions())),e},[i,n]),Qt=i=>{const{condition:n,onRemove:e}=i,r=n.getConditionValue(),o=n.getConditionModifier(),s=()=>{var l,f;switch(o){case"equals":case"notEquals":{const c=n.modifiers.equals,h=r!==void 0&&c.isConditionValueValid(r)?r:void 0;return t.jsx(bi,{required:!1,size:"sm",mode:"single",selected:h??void 0,onSelect:p=>n.setConditionValue(p),children:t.jsx(a.Button,{type:"button",className:"truncate",children:h!==void 0?(h==null?void 0:h.toLocaleDateString())??"empty":"..."})})}case"before":case"after":{const c=n.modifiers.after,h=r!==void 0&&c.isConditionValueValid(r)?r:void 0;return t.jsx(bi,{required:!0,size:"sm",mode:"single",selected:h,onSelect:n.setConditionValue,children:t.jsx(a.Button,{type:"button",className:"truncate",children:h?h.toLocaleDateString():"..."})})}case"in":case"notIn":{const c=n.modifiers.in,h=r!==void 0&&c.isConditionValueValid(r)?r:void 0;return t.jsx(bi,{required:!0,mode:"range",size:"sm",selected:h,onSelect:n.setConditionValue,children:t.jsx(a.Button,{className:"truncate",children:h?`${(l=h.from)==null?void 0:l.toLocaleDateString()} - ${(f=h.to)==null?void 0:f.toLocaleDateString()}`:"..."})})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[n.field.type].icon}),t.jsx("span",{className:"truncate",children:n.field.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[o].modifier.label})}),s(),t.jsx(j,{condition:n,onClick:e})]})},Rt={equals:y({modifier:Mt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),notEquals:y({modifier:xt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),before:y({modifier:It,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),after:y({modifier:qt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),in:y({modifier:Ot,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>"to"in(i??{})&&"from"in(i??{}),isSerializedValueValid:i=>typeof i=="object"&&"to"in i&&"from"in i}),notIn:y({modifier:_t,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>"to"in(i??{})&&"from"in(i??{}),isSerializedValueValid:i=>typeof i=="object"&&"to"in i&&"from"in i})};class We extends P{constructor(e){super(e);C(this,"modifiers",Rt)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Rt[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new We({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Qt,{condition:this,...e},this.id)}}const er=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{c.length>0?n.setConditionValue(c):n.setConditionValue(void 0)},[n]),f=()=>{if(o===void 0)return"...";if(o===null)return"empty";switch(o.length){case 0:return"...";default:return`${o.length} options`}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"truncate",children:f()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{values:o??Ee,selectFieldOptions:r.options,onValuesChange:l})})]}),t.jsx(j,{condition:n,onClick:e})]})},ir={equals:y({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:y({modifier:vi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:y({modifier:Si,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:y({modifier:zi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Xe extends P{constructor(e){super(e);C(this,"modifiers",ir)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=ir[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Xe({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(er,{condition:this,...e},this.id)}}const nr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{n.setConditionValue(c.length>0?c:void 0)},[n]),f=()=>{if(o===void 0)return"...";if(o===null)return"empty";switch(o.length){case 0:return"...";case 1:return o[0].toString();default:return`${o.length} values`}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsx(Wt,{values:o??Ee,onValuesChange:l,children:t.jsx(a.Button,{type:"button",className:"truncate",children:f()})}),t.jsx(j,{condition:n,onClick:e})]})},tr={equals:y({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:y({modifier:vi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:y({modifier:Si,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:y({modifier:zi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Ke extends P{constructor(e){super(e);C(this,"modifiers",tr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=tr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Ke({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(nr,{condition:this,...e},this.id)}}const rr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{n.setConditionValue(c??void 0)},[n]),f=()=>{switch(s){case"equals":case"greaterThanOrEquals":case"lessThanOrEquals":case"greaterThan":case"lessThan":{const c=n.modifiers.greaterThan,h=o!==void 0&&c.isConditionValueValid(o)?o:void 0;return t.jsx(be,{value:h??null,onValueChange:l,size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:h!==void 0?h??"empty":"..."})})}case"inRange":case"notInRange":{const c=n.modifiers.inRange,h=o!==void 0&&c.isConditionValueValid(o)?o:void 0;return t.jsxs(t.Fragment,{children:[t.jsx(be,{value:(h==null?void 0:h.from)??null,onValueChange:p=>{n.setConditionValue({from:p,to:(h==null?void 0:h.to)??null})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(h==null?void 0:h.from)??"..."})}),t.jsx(be,{value:(h==null?void 0:h.to)??null,onValueChange:p=>{n.setConditionValue({from:(h==null?void 0:h.from)??null,to:p})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(h==null?void 0:h.to)??"..."})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),f(),t.jsx(j,{condition:n,onClick:e})]})},or={equals:y({modifier:yn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),notEquals:y({modifier:vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThan:y({modifier:Sn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThanOrEquals:y({modifier:zn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThan:y({modifier:wn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThanOrEquals:y({modifier:Fn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),inRange:y({modifier:bn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"}),notInRange:y({modifier:Nn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"})};class Ye extends P{constructor(e){super(e);C(this,"modifiers",or)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=or[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Ye({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(rr,{condition:this,...e},this.id)}}const ar=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},sr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Ze extends P{constructor(e){super(e);C(this,"modifiers",sr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=sr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Ze({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(ar,{condition:this,...e},this.id)}}const lr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":{const f=n.modifiers.equals,c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:c!==void 0?c?ge[c].label:"empty":"..."})})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(a.Menu.SelectGroup,{required:!1,value:c,onValueChange:n.setConditionValue,children:Ie.map(h=>{const{label:p}=ge[h];return t.jsx(Fe,{value:h,children:t.jsx("span",{className:"truncate",children:p})},h)})})})]})}case"includes":case"excludes":{const f=n.modifiers.includes,c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",children:c?`${c.length} statuses`:"..."})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsxs(a.Menu.MultiSelectGroup,{values:c??Ee,onValuesChange:n.setConditionValue,children:[t.jsx(In,{children:"Select all"}),Ie.map(h=>{const{label:p,icon:m}=ge[h];return t.jsxs(Jt,{value:h,children:[t.jsx(a.LuIcon,{icon:m}),t.jsx("span",{className:"truncate",children:p})]},h)})]})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},dr={equals:y({modifier:Bt,isValueValid:i=>i!==null,isConditionValueValid:i=>typeof i=="string",isSerializedValueValid:i=>typeof i=="string"}),notEquals:y({modifier:At,isValueValid:i=>i!==null,isConditionValueValid:i=>typeof i=="string",isSerializedValueValid:i=>typeof i=="string"}),includes:y({modifier:Et,isValueValid:i=>i!==null,isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:y({modifier:$t,isValueValid:i=>i!==null,isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class Qe extends P{constructor(e){super(e);C(this,"modifiers",dr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=dr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Qe({field:r,conditionModifier:s,conditionValue:c,...l})}transformValue(e){return e.status}render(e){return t.jsx(lr,{condition:this,...e},this.id)}}const cr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useMemo(()=>r.options.map(h=>typeof h=="string"?{value:h,label:h}:h),[r.options]),f=d.useMemo(()=>{const h={};for(const p of l)h[p.value]=p.label;return h},[l]),c=()=>{switch(s){case"equals":case"notEquals":{const h=n.modifiers.equals,p=o!==void 0&&h.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:p!==void 0?p?f[p]:"empty":"..."})})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(qn,{required:!0,selectFieldOptions:r.options,value:p??void 0,onValueChange:n.setConditionValue})})]})}case"includes":case"excludes":{const h=n.modifiers.includes,p=o!==void 0&&h.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",children:p?`${p.length} options`:"..."})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{selectFieldOptions:r.options,values:p??Ee,onValuesChange:n.setConditionValue})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),c(),t.jsx(j,{condition:n,onClick:e})]})},ur={equals:y({modifier:le,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),notEquals:y({modifier:de,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),includes:y({modifier:Mn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:y({modifier:xn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class Re extends P{constructor(e){super(e);C(this,"modifiers",ur)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=ur[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Re({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(cr,{condition:this,...e},this.id)}}const hr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"greaterThanOrEquals":case"lessThanOrEquals":case"greaterThan":case"lessThan":{const f=n.modifiers[s],c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsx(be,{value:c??null,onValueChange:h=>n.setConditionValue(h??void 0),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:c!==void 0?c:"..."})})}case"inRange":case"notInRange":{const f=n.modifiers.inRange,c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsxs(t.Fragment,{children:[t.jsx(be,{value:(c==null?void 0:c.from)??null,onValueChange:h=>{n.setConditionValue({from:h,to:(c==null?void 0:c.to)??null})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(c==null?void 0:c.from)??"..."})}),t.jsx(be,{value:(c==null?void 0:c.to)??null,onValueChange:h=>{n.setConditionValue({from:(c==null?void 0:c.from)??null,to:h})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(c==null?void 0:c.to)??"..."})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},fr={equals:y({modifier:yn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),notEquals:y({modifier:vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThan:y({modifier:Sn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThanOrEquals:y({modifier:zn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThan:y({modifier:wn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThanOrEquals:y({modifier:Fn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),inRange:y({modifier:bn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"}),notInRange:y({modifier:Nn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"})};class ei extends P{constructor(e){super(e);C(this,"modifiers",fr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=fr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ei({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(hr,{condition:this,...e},this.id)}}const pr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},mr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ii extends P{constructor(e){super(e);C(this,"modifiers",mr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=mr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ii({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(pr,{condition:this,...e},this.id)}}const gr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useMemo(()=>r.options.map(p=>typeof p=="string"?{value:p,label:p}:p),[r.options]),f=d.useMemo(()=>{const p={};for(const m of l)p[m.value]=m.label;return p},[l]),c=d.useCallback(p=>{p.length>0?n.setConditionValue(p):n.setConditionValue([])},[n]),h=()=>{switch(s){case"equals":case"notEquals":{const p=n.modifiers.equals,m=o!==void 0&&p.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:m!==void 0?m?f[m]:"empty":"..."})})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(qn,{required:!1,selectFieldOptions:r.options,value:m??void 0,onValueChange:n.setConditionValue})})]})}case"includes":case"excludes":{const p=n.modifiers.includes,m=o!==void 0&&p.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",children:m?`${m.length} options`:"..."})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{selectFieldOptions:r.options,values:m??Ee,onValuesChange:c})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),h(),t.jsx(j,{condition:n,onClick:e})]})},Cr={equals:y({modifier:le,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),notEquals:y({modifier:de,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),includes:y({modifier:Mn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:y({modifier:xn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class ni extends P{constructor(e){super(e);C(this,"modifiers",Cr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Cr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ni({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(gr,{condition:this,...e},this.id)}}const Vr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},yr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ti extends P{constructor(e){super(e);C(this,"modifiers",yr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=yr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ti({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Vr,{condition:this,...e},this.id)}}const vr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},Sr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ri extends P{constructor(e){super(e);C(this,"modifiers",Sr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Sr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ri({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(vr,{condition:this,...e},this.id)}}const zr=i=>{const{condition:n,onRemove:e}=i,r=n.getConditionValue(),o=n.getConditionModifier(),s=()=>{switch(o){case"equals":case"notEquals":case"before":case"after":{const l=typeof r=="string"?r:void 0;return t.jsx(Ni,{value:l,onValueChange:f=>n.setConditionValue(f??void 0),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:l?Vi(l):"..."})})}case"in":case"notIn":{const l=r&&typeof r=="object"?r:void 0,f=c=>{n.setConditionValue(c.from||c.to?c:void 0)};return t.jsxs(t.Fragment,{children:[t.jsx(Ni,{value:l==null?void 0:l.from,onValueChange:c=>f({from:c,to:(l==null?void 0:l.to)??null}),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:l!=null&&l.from?Vi(l.from):"..."})}),t.jsx(Ni,{value:l==null?void 0:l.to,onValueChange:c=>f({from:(l==null?void 0:l.from)??null,to:c}),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:l!=null&&l.to?Vi(l.to):"..."})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[n.field.type].icon}),t.jsx("span",{className:"truncate",children:n.field.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[o].modifier.label})}),s(),t.jsx(j,{condition:n,onClick:e})]})},wr={equals:y({modifier:Dt,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),notEquals:y({modifier:Pt,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),before:y({modifier:jt,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),after:y({modifier:Ut,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),in:y({modifier:Gt,isValueValid:i=>E(i),isConditionValueValid:i=>Ge(i),isSerializedValueValid:i=>Ge(i)}),notIn:y({modifier:kt,isValueValid:i=>E(i),isConditionValueValid:i=>Ge(i),isSerializedValueValid:i=>Ge(i)})};class oi extends P{constructor(e){super(e);C(this,"modifiers",wr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=wr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new oi({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(zr,{condition:this,...e},this.id)}}const Fr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(o){case void 0:return"...";case!0:return"true";case!1:return"false";case null:return"empty"}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:l()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsxs(a.Menu.SelectGroup,{required:!0,value:o,onValueChange:n.setConditionValue,children:[t.jsx(Fe,{value:!0,children:"empty"}),t.jsx(Fe,{value:!1,children:"not empty"})]})})]}),t.jsx(j,{condition:n,onClick:e})]})},br={equals:y({modifier:Tt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Lt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ai extends P{constructor(e){super(e);C(this,"modifiers",br)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=br[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ai({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Fr,{condition:this,...e},this.id)}}const Nr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},Mr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class si extends P{constructor(e){super(e);C(this,"modifiers",Mr)}transformValue(e){return(e==null?void 0:e.toString())??""}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Mr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new si({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Nr,{condition:this,...e},this.id)}}const Wo={date:We,time:oi,number:Ye,boolean:He,select:ni,string:ti,url:si,text:ri,upload:ai,qr:ii,"multi-string":Ke,"multi-select":Xe,radio:Re,"checkbox-list":Je,"pass-fail":Qe,otp:Ze,rating:ei},xr=(i,n)=>{if(i.type!==n.type)throw new Error(`field and condition type mismatch ${i.type} !== ${n.type}`);return Wo[n.type].deserialize(n,i)},On=(i,n)=>{const e=_n(i,n),r={};for(const o of i)r[o.identifier]=o;return e.map(o=>xr(r[o.fieldId],o))},Ir=(i,n)=>Tn(i,n).map(r=>r.serialize()),_n=(i,n)=>{const e=new Set(i.map(r=>r.identifier));return n.filter(r=>e.has(r.fieldId))},Tn=(i,n)=>{const e=new Set(i.map(r=>r.identifier));return n.filter(r=>e.has(r.field.identifier))},xi=i=>Cn[i.type].deserialize(i);function Xo(i){return i.map(qr)}const qr=i=>i.type==="section"?X.deserialize(i):xi(i);function Ko(i){return i.map(xi)}function Yo(i){const n=[];for(const e of i)if(e instanceof X)for(const r of e.getFields())n.push(r);else n.push(e);return n}function Zo(i){const n={};for(const e of i)n[e.identifier]=e;return n}function Or(i,n,e=!0){const r=e?Ii(i,n):n,o={};for(const s of i){if(!(s.identifier in r))continue;const l=r[s.identifier];o[s.identifier]=s.serializeValue(l)}return o}function _r(i,n,e=!0){const r=e?Ln(i,n):n,o={};for(const s of i){if(!(s.identifier in r))continue;const l=r[s.identifier];o[s.identifier]=s.deserializeValue(l)}return o}function Ii(i,n){const e={};for(const r of i){if(!(r.identifier in n))continue;const o=n[r.identifier];r.isValue(o)&&(e[r.identifier]=r.cleanValue(o))}return e}function Ln(i,n){const e={};for(const r of i){if(!(r.identifier in n))continue;const o=n[r.identifier];r.isSerializedValue(o)&&(e[r.identifier]=r.cleanSerializedValue(o))}return e}function Tr(i,n){const e=Ii(i,n),r={},o={};for(const s of i){if(!(s.identifier in e))continue;const l=e[s.identifier];switch(s.type){case"upload":if(!s.isValue(l))break;o[s.identifier]=l,r[s.identifier]=[];break;case"pass-fail":if(!s.isValue(l))break;o[s.identifier]=l.files,r[s.identifier]={...l,files:[]};break;default:r[s.identifier]=n[s.identifier]}}return[r,o]}function Lr(i,n,e){const r={};for(const o of i){if(!(o.identifier in n))continue;const s=n[o.identifier];switch(o.type){case"upload":if(!o.isValue(s))break;r[o.identifier]=e[o.identifier]??[];break;case"pass-fail":if(!o.isValue(s))break;r[o.identifier]={...s,files:e[o.identifier]??[]};break;default:if(!o.isValue(s))break;r[o.identifier]=s}}return r}const Br=(i,n)=>{const e={};for(const r of i){const o=n[r.identifier];e[r.identifier]=o!==void 0?o:r.blankValue()}return e},Ar=(i,n,e)=>{const r={};for(const o of i){const s=n[o.identifier],l=e[o.identifier];o.areValuesEqual(s,l)||(r[o.identifier]=l)}return r},Er=(i,n,e)=>{const r={};for(const o of i){const s=n[o.identifier],l=e[o.identifier];o.areValuesEqual(s,l)&&(r[o.identifier]=l)}return r},Bn=(i,n,e)=>i.every(r=>{const o=n[r.identifier],s=e[r.identifier];return r.areValuesEqual(o,s)}),An=i=>{const n={};for(const e of i)n[e.identifier]=e.blankValue();return n},$r=(i,n)=>Bn(i,n,An(i)),Qo=R.cva(["flex","flex-col"],{variants:{size:{xs:["gap-2"],sm:["gap-4"],md:["gap-6"],lg:["gap-8"],xl:["gap-10"]}}}),qi=R.cva(["flex","flex-col"],{variants:{size:{xs:["gap-2"],sm:["gap-4"],md:["gap-6"],lg:["gap-8"],xl:["gap-10"]}}}),En=d.memo(i=>{const{fieldSection:n}=i,{label:e,description:r}=n,o=Y.useWatch(),{fieldSchema:s,size:l}=d.use(B),f=d.useMemo(()=>s.getFieldSections(),[s]),c=d.useMemo(()=>f.findIndex(({identifier:g})=>g===n.identifier),[f,n.identifier]),h=d.useMemo(()=>f.filter(g=>n.identifier in g.conditions),[f,n.identifier]),p=d.useMemo(()=>h.length===0?!0:h.some(g=>{const V=g.getConditions(n.identifier);return new Mi(V).applyConditions(o)}),[h,n,o]),m=fi(n.fields);return p?t.jsxs(t.Fragment,{children:[c!==0?t.jsx(a.Separator,{size:"full"}):null,t.jsxs("div",{className:"flex flex-col gap-4",children:[(e||r)&&t.jsx(t.Fragment,{children:t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsx(a.Heading,{size:l,children:e}),r&&t.jsx(a.Text,{accentColor:"base",size:l,children:r})]})}),t.jsx("div",{className:qi({size:l}),children:m})]})]}):null});En.displayName="FieldSectionLayout";const li=class li extends Di{constructor(e){const{label:r=null,description:o=null,fields:s,conditions:l={},...f}=e;super(f);C(this,"type","section");C(this,"label");C(this,"description");C(this,"conditions");C(this,"fields",[]);C(this,"fieldObserver",()=>{this.notify(this)});C(this,"initFields",e=>{for(const r of e)r.observe(this.fieldObserver);return e});C(this,"conditionObserver",()=>{this.notify(this)});C(this,"initConditions",e=>{for(const r of Object.values(e).flat())r.observe(this.conditionObserver);return e});this.label=r,this.description=o,this.fields=this.initFields(s),this.conditions=this.initConditions(l)}serialize(){const e={};for(const[r,o]of Object.entries(this.conditions))e[r]=o.map(s=>s.serialize());return{...super.serialize(),label:this.label,description:this.description,conditions:e,fields:this.fields.map(r=>r.serialize())}}getOptions(){return{...super.getOptions(),label:this.label,description:this.description,fields:this.fields,conditions:this.conditions}}duplicate(e){return new li({...this.getOptions(),identifier:e,fields:this.fields.map(r=>r.duplicate(N.v4()))})}setOptions(e){const{label:r,description:o,fields:s,conditions:l,...f}=e;this.label=r??this.label,this.description=o??this.description,this.fields=s||this.fields,this.conditions=l||this.conditions,super.setOptions(f)}getErrors(e){const r={};for(const o of this.fields){const s=o.getError(e[o.identifier]);s&&(r[o.identifier]=s)}return r}getFields(){return this.fields}addField(e,r){const o=[...this.fields];o.splice(r??this.fields.length,0,e),this.fields=this.initFields(o),this.notify(this)}moveField(e,r){const o=[...this.fields],[s]=o.splice(e,1);o.splice(r,0,s),this.fields=o,this.notify(this)}removeField(e){this.fields=this.initFields(this.fields.filter(({identifier:o})=>o!==e.identifier));const r={};for(const[o,s]of Object.entries(this.conditions))r[o]=s.filter(l=>l.field.identifier!==e.identifier);this.conditions=r,this.notify(this)}getConditions(e){return this.conditions[e]}addCondition(e,r){this.conditions=this.initConditions({...this.conditions,[e]:[...this.conditions[e]??[],r]}),this.notify(this)}addConditions(e,r){this.conditions=this.initConditions({...this.conditions,[e]:[...this.conditions[e]??[],...r]}),this.notify(this)}removeCondition(e,r){this.conditions=this.initConditions({...this.conditions,[e]:(this.conditions[e]??[]).filter(o=>o.id!==r.id)}),this.notify(this)}removeConditions(e,r){const o=new Set(r.map(s=>s.id));this.conditions=this.initConditions({...this.conditions,[e]:(this.conditions[e]??[]).filter(s=>!o.has(s.id))}),this.notify(this)}getConditionals(){return new Set(Object.keys(this.conditions))}addConditional(e){this.conditions=this.initConditions({...this.conditions,[e]:[]}),this.notify(this)}removeConditional(e){const r={...this.conditions};delete r[e],this.conditions=this.initConditions(r),this.notify(this)}render(){return t.jsx(En,{fieldSection:this})}};C(li,"deserialize",e=>{const r=e.fields.map(xi),o={};for(const[s,l]of Object.entries(e.conditions))o[s]=On(r,l);return new li({...e,fields:r,conditions:o})});let X=li;const ee=d.createContext({}),Oi=d.memo(i=>{const{children:n,variant:e,size:r,accentColor:o,onSelectFieldType:s,...l}=i,f=d.useMemo(()=>{const c={[O.Assessment]:[],[O.Capture]:[],[O.Numeric]:[],[O.Selection]:[],[O.Temporal]:[],[O.Text]:[],[O.Verification]:[]};for(const h of St){const{group:p}=T[h];c[p].push(h)}return c},[]);return t.jsxs(a.Menu.Root,{...l,children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{variant:e,size:r,accentColor:o,children:t.jsx(a.Menu.Scroll,{children:Object.entries(f).map(([c,h])=>{const{name:p}=zt[c];return h.length===0?null:t.jsxs(a.Menu.Group,{children:[t.jsx(a.Menu.Label,{children:p}),h.map(m=>t.jsx(Dr,{fieldType:m,onSelectFieldType:s},m))]},c)})})})]})});Oi.displayName="CreateFieldDropdownMenu";const Dr=d.memo(i=>{const{fieldType:n,onSelectFieldType:e}=i,r=d.useCallback(()=>{e(n)},[n,e]),{icon:o,name:s}=T[n];return t.jsxs(a.Menu.Item,{onSelect:r,children:[t.jsx(a.LuIcon,{icon:o}),t.jsx(a.Text,{className:"truncate",children:s})]})});Dr.displayName="CreateFieldDropdownMenuItem";const _i=i=>{switch(i){case"text":return new ze({label:"",required:!1,identifier:N.v4()});case"boolean":return new fe({label:"",required:!1,identifier:N.v4()});case"number":return new H({label:"",required:!1,identifier:N.v4()});case"date":return new xe({label:"",required:!1,identifier:N.v4()});case"time":return new Oe({label:"",required:!1,identifier:N.v4()});case"string":return new Se({label:"",required:!1,identifier:N.v4()});case"url":return new _e({label:"",required:!1,identifier:N.v4()});case"select":return new oe({label:"",options:[],required:!1,identifier:N.v4()});case"multi-string":return new he({label:"",required:!1,identifier:N.v4()});case"multi-select":return new te({label:"",options:[],required:!1,identifier:N.v4()});case"upload":return new we({label:"",required:!1,identifier:N.v4(),maximum_files:6,maximum_size:Te});case"qr":return new qe({label:"",required:!1,identifier:N.v4()});case"radio":return new ye({label:"",options:[],required:!1,identifier:N.v4()});case"checkbox-list":return new pe({label:"",options:[],required:!1,identifier:N.v4()});case"pass-fail":return new Ve({label:"",required:!1,identifier:N.v4(),showNotesAndFilesOn:["fail"]});case"otp":return new me({label:"",validationType:"none",required:!1,identifier:N.v4(),length:6});case"rating":return new ve({label:"",required:!1,identifier:N.v4(),maxRating:5})}},$n=i=>{switch(i.type){case"text":return new ri({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"boolean":return new He({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"number":return new Ye({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"date":return new We({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"time":return new oi({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"string":return new ti({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"url":return new si({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"select":return new ni({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"multi-string":return new Ke({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"multi-select":return new Xe({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"upload":return new ai({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"qr":return new ii({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"radio":return new Re({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"checkbox-list":return new Je({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"pass-fail":return new Qe({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"otp":return new Ze({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"rating":return new ei({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i})}},Pr=(i,n)=>{switch(i){case"checkbox-list":return pe.getFieldCreationSchema(n);case"multi-select":return te.getFieldCreationSchema(n);case"number":return H.getFieldCreationSchema(n);case"radio":return ye.getFieldCreationSchema(n);case"select":return oe.getFieldCreationSchema(n);case"string":return Se.getFieldCreationSchema(n);case"text":return ze.getFieldCreationSchema(n);case"upload":return we.getFieldCreationSchema(n);case"pass-fail":return Ve.getFieldCreationSchema(n);case"otp":return me.getFieldCreationSchema(n);case"rating":return ve.getFieldCreationSchema(n);default:return}},jr=d.memo(i=>{const{popoverInputs:n,...e}=i;return t.jsxs(a.Popover.Root,{children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:t.jsxs(a.Button,{variant:"soft",type:"button",size:"sm",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:Bo}),"Settings"]})}),t.jsx(a.Popover.Content,{size:"sm",...e,children:t.jsx("div",{className:R.cx("flex w-full max-w-[350px] flex-col",qi({size:"sm"})),children:n})})]})});jr.displayName="FieldSettingsPopover";const Ur=d.memo(i=>{const{parentPath:n,fieldIndex:e,field:r}=i,o=hi(),{disableRequiredFields:s}=d.use(ee),[l,f]=d.useState(void 0);d.useEffect(()=>{r.image instanceof Promise?r.image.then(f).catch(console.error):f(r.image)},[r]);const c=d.useCallback(()=>{r.setOptions({image:void 0})},[r]),[h,p]=d.useMemo(()=>{const z=[],b=[],L=Pr(r.type,`${n}.${e}`)??[];for(const G of L)G.showDirectly?z.push(G.field):b.push(G.field);return[z,b]},[r,n,e]),m=fi(h),g=fi(p),V=p.length>0,F=d.useCallback(()=>{l&&o(()=>({file:l}))},[o,l]),w=d.useCallback(z=>{r.setOptions({required:!!z})},[r]),S=d.useCallback(z=>{r.setOptions({label:z.target.value})},[r]),v=d.useCallback(z=>{r.setOptions({description:z.target.value})},[r]),{icon:I,name:q}=T[r.type];return t.jsxs("div",{className:"flex w-full grow flex-col gap-4",children:[t.jsxs("div",{className:"flex w-full justify-between gap-2",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs(a.Badge,{accentColor:"base",variant:"soft",size:"sm",children:[t.jsx(a.LuIcon,{icon:I}),q]}),!s&&t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Checkbox.Root,{checked:r.required,onCheckedChange:w,size:"sm",children:t.jsx(a.Checkbox.Indicator,{children:t.jsx(a.LuIcon,{icon:W})})}),t.jsx(a.Text,{size:"sm",accentColor:"base",children:"Required"})]})]}),V&&t.jsx(jr,{popoverInputs:g,align:"end"})]}),l&&t.jsxs("div",{className:"group relative inline-block w-full min-w-[300px]",children:[t.jsx(Me,{className:"h-[100px] w-full min-w-[300px] cursor-pointer rounded-md object-cover",file:l,onClick:F}),t.jsx(a.IconButton,{type:"button",className:"group-hover:not-disabled:flex absolute right-2 top-2 hidden",variant:"solid",accentColor:"base","aria-label":"delete",onClick:c,size:"sm",children:t.jsx(a.LuIcon,{icon:ue})})]}),t.jsxs("div",{className:"flex w-full flex-col gap-2 overflow-hidden",children:[t.jsx(a.Input.Root,{variant:"outline",size:"md",children:t.jsx(a.Input.Field,{placeholder:"Enter your question",value:r.label??"",onChange:S,maxLength:200})}),t.jsx(a.TextArea,{className:"field-sizing-content",placeholder:"Enter a field description (optional)",value:r.description??"",onChange:v,maxLength:1e3,resize:"vertical",size:"md"})]}),h.length>0&&t.jsx("div",{className:R.cx("w-full",qi({size:"sm"})),children:m})]})});Ur.displayName="FieldBuilder";const Dn=d.memo(i=>{const{field:n,fieldSection:e,fieldIndex:r,sectionIndex:o}=i,s=d.useRef(null),l=`fields.${o}.fields`,f=d.useCallback(w=>{e.addField(_i(w),r+1)},[r,e]),c=d.useCallback(()=>{e.addField(n.duplicate(N.v4()))},[n,e]),h=d.useCallback(w=>{const S=w==="up"?o-1:o+1;e.moveField(r,S)},[e,r,o]),p=d.useCallback(w=>{const{files:S}=w.target;if(!S||S.length!==1)return;const v=S.item(0);if(v){if(v.size>Ft){a.toast.error({title:"File upload error",description:`The file ${v.name} exceeded the maximum file size`});return}n.setOptions({image:v})}},[n]),m=d.useCallback(()=>{h("up")},[h]),g=d.useCallback(()=>{h("down")},[h]),V=d.useCallback(()=>{var w;(w=s.current)==null||w.click()},[]),F=d.useCallback(()=>{e.removeField(n)},[n,e]);return t.jsxs(a.Card,{className:"flex w-full items-center justify-between gap-4",size:"sm",children:[t.jsx(Ur,{fieldIndex:r,field:n,parentPath:l}),t.jsxs(a.ButtonGroup,{className:"flex flex-col gap-0.5",variant:"ghost",accentColor:"base",size:"sm",children:[t.jsx(Oi,{onSelectFieldType:f,size:"sm",children:t.jsx(a.IconButton,{type:"button",children:t.jsx(a.LuIcon,{icon:Z})})}),t.jsx(a.IconButton,{type:"button",onClick:m,children:t.jsx(a.LuIcon,{icon:nt})}),t.jsx(a.IconButton,{type:"button",onClick:g,children:t.jsx(a.LuIcon,{icon:it})}),t.jsx(a.IconButton,{type:"button",onClick:c,children:t.jsx(a.LuIcon,{icon:Ai})}),t.jsx(a.IconButton,{type:"button",onClick:V,children:t.jsx(a.LuIcon,{icon:Rn})}),t.jsx(a.IconButton,{type:"button",onClick:F,children:t.jsx(a.LuIcon,{icon:ue})})]}),t.jsx("input",{className:"hidden",ref:s,type:"file",accept:"image/*",onChange:p})]})});Dn.displayName="FieldBuilderWithActions";const Pn=d.memo(i=>{const{children:n,variant:e,size:r,accentColor:o,fields:s,onSelectField:l,...f}=i;return t.jsxs(a.Menu.Root,{...f,children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{variant:e,size:r,accentColor:o,children:t.jsx(a.Menu.Scroll,{children:s.map(c=>t.jsx(Gr,{field:c,onSelectField:l},c.identifier))})})]})});Pn.displayName="FieldDropdownMenu";const Gr=d.memo(i=>{const{field:n,onSelectField:e}=i,r=d.useCallback(()=>{e(n)},[n,e]);return t.jsxs(a.Menu.Item,{onSelect:r,children:[t.jsx(a.LuIcon,{icon:T[n.type].icon}),n.label||$]})});Gr.displayName="FieldDropdownMenuItem";const kr=d.memo(i=>{const{children:n,variant:e,size:r,accentColor:o,fieldSections:s,onSelectFieldSection:l,...f}=i;return t.jsxs(a.Menu.Root,{...f,children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{variant:e,size:r,accentColor:o,children:s.map(c=>t.jsx(Hr,{fieldSection:c,onSelectFieldSection:l},c.identifier))})]})});kr.displayName="FieldSectionDropdownMenu";const Hr=d.memo(i=>{const{fieldSection:n,onSelectFieldSection:e}=i,r=d.useCallback(()=>{e(n)},[n,e]);return t.jsxs(a.Menu.Item,{onSelect:r,children:[t.jsx(a.LuIcon,{icon:et}),n.label||Vn]})});Hr.displayName="FieldSectionDropdownMenuItem";const Jr=d.memo(i=>{const{id:n,sourceX:e,sourceY:r,targetX:o,targetY:s,style:l,markerEnd:f,data:c}=i,{targetSection:h,sourceSection:p,layoutDirection:m}=c,g=d.useMemo(()=>p.getConditions(h.identifier),[p,h.identifier]),V=d.useCallback(()=>{p.removeConditional(h.identifier)},[p,h.identifier]),F=d.useCallback(q=>{p.addCondition(h.identifier,$n(q))},[p,h.identifier]),w=d.useCallback(q=>{p.removeCondition(h.identifier,q)},[p,h.identifier]),[S,v,I]=_.getBezierPath({sourceX:e,sourceY:r,sourcePosition:m==="LR"?_.Position.Right:_.Position.Bottom,targetX:o,targetY:s,targetPosition:m==="LR"?_.Position.Left:_.Position.Top});return t.jsxs(t.Fragment,{children:[t.jsx(_.BaseEdge,{id:n,path:S,style:l,markerEnd:f,labelX:v,labelY:I}),t.jsx(_.EdgeLabelRenderer,{children:t.jsxs(a.Card,{size:"xs",variant:"surface",className:"nodrag nopan bg-(--base-2) pointer-events-auto absolute inline-flex flex-col gap-2",onMouseDown:a.stopPropagation,onClick:a.stopPropagation,"data-floating-content":"",style:{transform:`translate(-50%, -50%) translate(${v}px, ${I}px)`},children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Text,{size:"xs",className:"max-w-[280px] truncate",children:p.label||"Untitled section"}),t.jsxs("div",{className:"ml-auto flex items-center gap-1",children:[t.jsx(Pn,{fields:p.fields,onSelectField:F,children:t.jsx(a.IconButton,{"aria-label":"Add condition",type:"button",variant:"surface",size:"xs",accentColor:"base",children:t.jsx(a.LuIcon,{icon:Z})})}),t.jsxs(a.Tooltip.Root,{children:[t.jsx(a.Tooltip.Trigger,{asChild:!0,children:t.jsx(a.IconButton,{"aria-label":"Remove conditional logic",type:"button",variant:"surface",size:"xs",accentColor:"base",color:"danger",onClick:V,children:t.jsx(a.LuIcon,{icon:ue})})}),t.jsx(a.Tooltip.Content,{size:"sm",children:"Remove conditional logic"})]})]})]}),g.length>0&&t.jsx("div",{className:"flex h-max w-full flex-col flex-wrap gap-1",children:g.map(q=>t.jsx(d.Fragment,{children:q.render({onRemove:w})},q.id))})]})})]})});Jr.displayName="FieldSectionConditionEdgeComponent";const Wr=d.memo(i=>{const{data:n,selected:e}=i,{fieldSection:r,index:o,layoutDirection:s}=n,{fieldSchema:l}=d.use(ee),f=d.useCallback(()=>{l.removeFieldSection(r)},[l,r]),c=d.useCallback(V=>{r.addField(_i(V))},[r]),h=d.useCallback(()=>{const V=new X({identifier:N.v4(),fields:[]});l.addFieldSection(V),r.addConditional(V.identifier)},[l,r]),p=d.useCallback(()=>{l.addFieldSection(r.duplicate(N.v4()))},[l,r]),m=d.useCallback(V=>{r.setOptions({label:V.target.value})},[r]),g=d.useCallback(V=>{r.setOptions({description:V.target.value})},[r]);return t.jsxs(a.Card,{variant:"surface",className:"bg-(--base-2) relative cursor-pointer",size:"sm","data-selected":e?"true":void 0,children:[t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsxs("div",{className:"flex w-full flex-col gap-2 overflow-hidden",children:[t.jsx(a.Input.Root,{variant:"outline",size:"md",accentColor:"base",children:t.jsx(a.Input.Field,{placeholder:"Enter a section label (optional)",value:r.label??"",onChange:m,maxLength:200})}),t.jsx(a.TextArea,{className:"field-sizing-content",placeholder:"Enter a section description (optional)",value:r.description??"",onChange:g,maxLength:1e3,resize:"vertical",size:"md"})]}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(a.Text,{weight:"bold",children:"Fields"}),t.jsx(Oi,{onSelectFieldType:c,size:"sm",children:t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:Z})," Add field"]})})]}),t.jsx("div",{className:"flex flex-col gap-3",children:r.fields.map((V,F)=>t.jsx(Dn,{field:V,fieldSection:r,fieldIndex:F,sectionIndex:o},V.identifier))})]}),t.jsx(_.NodeToolbar,{isVisible:!0,position:_.Position.Right,align:"start",offset:8,onMouseDown:a.stopPropagation,children:t.jsx(a.Card,{variant:"surface",className:"bg-(--base-2) flex flex-col items-center gap-1 p-1",size:"xs",onClick:a.stopPropagation,children:t.jsxs(a.ButtonGroup,{className:"flex flex-col gap-2",variant:"surface",size:"xs",accentColor:"base",children:[t.jsx(a.IconButton,{type:"button",onClick:h,children:t.jsx(a.LuIcon,{icon:No})}),t.jsx(a.IconButton,{type:"button",onClick:p,children:t.jsx(a.LuIcon,{icon:Ai})}),t.jsx(a.IconButton,{type:"button",onClick:f,children:t.jsx(a.LuIcon,{icon:ue})})]})})}),t.jsx(_.Handle,{type:"target",className:"size-4! bg-(--base-3)! border-(--base-7)!",position:s==="LR"?_.Position.Left:_.Position.Top}),t.jsx(_.Handle,{type:"source",className:"size-4! bg-(--base-3)! border-(--base-7)!",position:s==="LR"?_.Position.Right:_.Position.Bottom})]})});Wr.displayName="CustomNode";const Ro={fieldSection:Wr},ea={fieldSectionCondition:Jr},ia=(i,n,e)=>{const r=new kn.graphlib.Graph().setDefaultEdgeLabel(()=>({}));return r.setGraph({rankdir:e,nodesep:200,edgesep:500,ranksep:500}),n.forEach(o=>r.setEdge(o.source,o.target,{width:500,height:200,labelpos:"c"})),i.forEach(o=>{var s,l;return r.setNode(o.id,{...o,width:((s=o.measured)==null?void 0:s.width)??0,height:((l=o.measured)==null?void 0:l.height)??0})}),kn.layout(r),[i.map(o=>{var c,h;const s=r.node(o.id),l=s.x-(((c=o.measured)==null?void 0:c.width)??0)/2,f=s.y-(((h=o.measured)==null?void 0:h.height)??0)/2;return{...o,position:{x:l,y:f}}}),n]},na={hideAttribution:!0},Xr=d.memo(()=>{var Q;const{errors:i}=Y.useFormState(),{handleSubmit:n}=Y.useFormContext(),{onSave:e,onCancel:r}=d.use(ee),{fieldSchema:o}=d.use(ee),s=d.useRef(null),[l,f]=d.useState(),[c,h]=d.useState("TB");d.useLayoutEffect(()=>{s.current&&s.current.classList.remove("light")},[]);const p=d.useMemo(()=>o.fieldSections.map((J,K)=>({id:J.identifier,position:{x:0,y:0},data:{index:K,fieldSection:J,layoutDirection:c},draggable:!0,type:"fieldSection"})),[o.fieldSections,c]),m=d.useMemo(()=>{const J=[],K={};for(const ne of o.fieldSections)K[ne.identifier]=ne;for(const ne of o.fieldSections){const Ti=ne.conditions;for(const[di,la]of Object.entries(Ti))J.push({id:`${ne.identifier}-${di}`,source:ne.identifier,target:di,data:{targetSection:K[di],sourceSection:ne,layoutDirection:c},animated:la.length>0,markerEnd:_.MarkerType.Arrow,style:{strokeWidth:2,stroke:"var(--base-a8)"},type:"fieldSectionCondition"})}return J},[o.fieldSections,c]),[g,V,F]=_.useNodesState(p),[w,S,v]=_.useEdgesState(m);d.useEffect(()=>{V(p)},[p,V]),d.useEffect(()=>{S(m)},[m,S]);const[I,q]=d.useMemo(()=>ia(g,w,c),[w,c,g]),z=d.useCallback(()=>{o.addFieldSection(new X({identifier:N.v4(),fields:[]}))},[o]),b=d.useCallback(J=>{const{source:K,target:ne}=J,Ti=o.fieldSections.find(({identifier:di})=>di===K);Ti.setOptions({conditions:{...Ti.conditions,[ne]:[]}})},[o.fieldSections]),L=d.useCallback(J=>{const K=o.getSectionDependencyGraph();return!Un.willCreateCycle(K,J.source,J.target)},[o]),G=d.useCallback(()=>{l==null||l.zoomOut()},[l]),ie=d.useCallback(()=>{l==null||l.zoomIn()},[l]),ce=d.useCallback(()=>{l==null||l.fitView()},[l]);return t.jsxs("form",{className:"flex size-full flex-col gap-4",onSubmit:n(e),children:[t.jsxs(a.Card,{className:"relative size-full",variant:"outline",children:[t.jsx(_.ReactFlow,{ref:s,onInit:f,nodes:I,onNodesChange:F,edges:q,onEdgesChange:v,nodeTypes:Ro,edgeTypes:ea,onConnect:b,attributionPosition:"bottom-left",fitView:!0,minZoom:0,isValidConnection:L,proOptions:na}),t.jsx(_.Panel,{position:"top-left",children:t.jsx(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:t.jsxs(a.Button,{type:"button",variant:"surface",onClick:z,children:[t.jsx(a.LuIcon,{icon:Z})," Add section"]})})}),t.jsxs(_.Panel,{position:"top-right",className:"flex flex-col items-center gap-2",children:[t.jsxs(a.ToggleGroup.Root,{className:"flex flex-col",type:"single",accentColor:"base",size:"sm",value:c,onValueChange:h,children:[t.jsx(a.ToggleGroup.IconItem,{className:"rounded-b-none",value:"LR",type:"button",children:t.jsx(a.LuIcon,{icon:go})}),t.jsx(a.ToggleGroup.IconItem,{className:"rounded-t-none",value:"TB",type:"button",children:t.jsx(a.LuIcon,{icon:mo})})]}),t.jsx(a.Separator,{size:"sm"}),t.jsxs(a.ButtonGroup,{className:"flex flex-col",size:"sm",accentColor:"base",variant:"soft",children:[t.jsx(a.IconButton,{className:"rounded-b-none",onClick:ie,type:"button",children:t.jsx(a.LuIcon,{icon:Z})}),t.jsx(a.IconButton,{onClick:G,radius:"none",type:"button",children:t.jsx(a.LuIcon,{icon:ui})}),t.jsx(a.IconButton,{className:"rounded-t-none",onClick:ce,type:"button",children:t.jsx(a.LuIcon,{icon:Eo})})]})]}),t.jsx(_.Panel,{position:"bottom-right",children:t.jsxs(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:[r&&t.jsx(a.Button,{type:"button",variant:"soft",accentColor:"base",onClick:r,children:"Cancel"}),t.jsx(a.Button,{type:"submit",variant:"surface",children:"Save"})]})})]}),!!((Q=i.fields)!=null&&Q.message)&&t.jsx(a.Text,{size:"xs",accentColor:"danger",children:i.fields.message})]})});Xr.displayName="FormBuilderFlowBuilder";const ta=(i,n,e={})=>{const{conditions:r=!1}=e,o=i.get(n.identifier);if(!o)throw new Error(`Attempting to reseed serialized section with identifier ${n.identifier} which is not present in the reseeded identifier map`);const s=new Map,l=n.fields.map(c=>{const h=N.v4(),{image:p,...m}=c;return s.set(c.identifier,h),{...m,identifier:h}}),f={};if(r)for(const[c,h]of Object.entries(n.conditions??{})){const p=i.get(c);if(!p)continue;const m=h.map(g=>{const V=s.get(g.fieldId);if(!V)throw new Error(`Serialized condition referencing undefined field with identifier: ${g.fieldId}`);return{...g,fieldId:V}});f[p]=m}return{...n,identifier:o,conditions:f,fields:l}},ra=(i,n={})=>{const e=new Map(i.map(r=>[r.identifier,N.v4()]));return i.map(r=>ta(e,r,n))},jn=(i,n)=>{const e={},r=i.filter(o=>o instanceof X);for(const o of i)if(o instanceof X){const s=r.filter(f=>o.identifier in f.conditions);if(s.length>0&&!s.some(f=>{const c=f.getConditions(o.identifier);return new Mi(c).applyConditions(n)}))continue;const l=o.getErrors(n);Object.assign(e,l)}else{if(!(o instanceof k))throw new Error("Invalid field type");const s=o.identifier,l=o.getError(Hn(n,s));l&&so(e,s,l)}return e},oa=async i=>{const n={},e=[];for(const r of i){const{fields:o}=r,s=[];for(const l of o){if(l.image){if(l.image instanceof Promise)try{n[l.identifier]=await l.image}catch(f){console.error("Failed to get image from promise",f)}else n[l.identifier]=l.image;delete l.image}s.push(l)}e.push({...r,fields:s})}return{fields:e,images:n}};async function aa(i){const n={};for(const[e,r]of Object.entries(i))n[e]=await Promise.all(r);return n}class Ne extends De{constructor(e){super();C(this,"fieldSections");C(this,"fieldObserver",()=>{this.notify(this)});C(this,"initFields",e=>{for(const r of e)r.observe(this.fieldObserver);return e});this.fieldSections=this.initFields(e)}serialize(){return this.fieldSections.map(e=>e.serialize())}static deserialize(e){return new Ne(e.map(X.deserialize))}static reseedFieldSections(e,r){return ra(e,r)}getFields(){return this.fieldSections.flatMap(e=>e.getFields())}getFieldSections(){return this.fieldSections}addFieldSection(e,r){const o=[...this.fieldSections];o.splice(r??this.fieldSections.length,0,e),this.fieldSections=this.initFields(o),this.notify(this)}removeFieldSection(e){const r=this.fieldSections.filter(o=>o.identifier!==e.identifier);for(const o of r)o.removeConditional(o.identifier);this.fieldSections=this.initFields(r),this.notify(this)}moveFieldSection(e,r){const o=[...this.fieldSections],[s]=o.splice(e,1);o.splice(r,0,s),this.fieldSections=this.initFields(o),this.notify(this)}getSectionDependencyGraph(){const e=new oo.DirectedGraph({type:"directed"});for(const r of this.fieldSections)for(const o of Object.keys(r.conditions))e.mergeEdge(r.identifier,o);return e}getDependenciesOfSection(e){const r=this.getSectionDependencyGraph(),o=new Map(this.fieldSections.map(l=>[l.identifier,l])),s=[];return ao.bfsFromNode(r,e,(l,f,c)=>{s.push(o.get(l))},{mode:"in"}),s}cleanValues(e){return Ii(this.getFields(),e)}cleanSerializedValues(e){return Ln(this.getFields(),e)}deserializeValues(e,r){return _r(this.getFields(),e,r)}serializeValues(e,r){return Or(this.getFields(),e,r)}initializeValues(e){return Br(this.getFields(),e)}validateValues(e){return jn(this.getFieldSections(),e)}areValuesValid(e){return Object.keys(this.validateValues(e)).length===0}deserializeConditions(e){return On(this.getFields(),e)}cleanConditions(e){return Tn(this.getFields(),e)}serializeConditions(e){return Ir(this.getFields(),e)}cleanSerializedConditions(e){return _n(this.getFields(),e)}changedFieldValues(e,r){return Ar(this.getFields(),e,r)}unchangedFieldValues(e,r){return Er(this.getFields(),e,r)}areValuesEqual(e,r){return Bn(this.getFields(),e,r)}areValuesBlank(e){return $r(this.getFields(),e)}blankValues(){return An(this.getFields())}extractFilesAndPromisesFromFieldValues(e){return Tr(this.getFields(),e)}insertFilesAndPromisesToFieldValues(e,r){return Lr(this.getFields(),e,r)}}const Kr=d.memo(i=>{const{sourceFieldSection:n,targetFieldSection:e}=i,r=d.useMemo(()=>n.getConditions(e.identifier),[n,e.identifier]),o=d.useCallback(()=>{n.removeConditional(e.identifier)},[n,e.identifier]),s=d.useCallback(f=>{n.addCondition(e.identifier,$n(f))},[n,e.identifier]),l=d.useCallback(f=>{n.removeCondition(e.identifier,f)},[n,e.identifier]);return t.jsxs(a.Card,{className:"flex flex-col gap-2",size:"sm",children:[t.jsxs(a.ButtonGroup,{className:"flex justify-between gap-2",size:"sm",accentColor:"base",variant:"soft",children:[t.jsxs(a.Badge,{accentColor:"base",variant:"soft",size:"sm",children:[t.jsx(a.LuIcon,{icon:et}),n.label??Vn]}),t.jsx(a.IconButton,{type:"button",onClick:o,variant:"ghost",children:t.jsx(a.LuIcon,{icon:ue})})]}),t.jsxs("div",{className:"flex h-max w-full flex-wrap gap-2",children:[r.map(f=>f.render({onRemove:l})),t.jsx(Pn,{fields:n.fields,onSelectField:s,align:"start",children:t.jsx(a.IconButton,{type:"button",size:"sm",variant:"soft",accentColor:"base",children:t.jsx(a.LuIcon,{icon:Z})})})]})]})});Kr.displayName="FieldSectionConditionalItem";const Yr=d.memo(i=>{const{fieldSection:n}=i,{fieldSchema:e}=d.use(ee),r=d.useMemo(()=>e.fieldSections.filter(c=>n.identifier in c.conditions),[e.fieldSections,n.identifier]),o=d.useCallback(c=>{c.addConditional(n.identifier)},[n.identifier]),s=d.useCallback(c=>{n.setOptions({label:c.target.value})},[n]),l=d.useCallback(c=>{n.setOptions({description:c.target.value})},[n]),f=d.useMemo(()=>{const c=e.getSectionDependencyGraph();return e.fieldSections.filter(h=>!Un.willCreateCycle(c,h.identifier,n.identifier))},[n.identifier,e]);return t.jsxs("div",{className:"flex w-full grow flex-col gap-4",children:[t.jsxs("div",{className:"flex w-full flex-col gap-2 overflow-hidden",children:[t.jsx(a.Input.Root,{variant:"outline",size:"md",children:t.jsx(a.Input.Field,{placeholder:"Enter a section label (optional)",value:n.label??"",onChange:s,maxLength:200})}),t.jsx(a.TextArea,{className:"field-sizing-content",placeholder:"Enter a section description (optional)",value:n.description??"",onChange:l,maxLength:1e3,resize:"vertical",size:"md"})]}),t.jsx(a.Separator,{size:"full"}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs("div",{className:"flex justify-between gap-2",children:[t.jsx(a.Text,{accentColor:"base",children:"Conditions"}),t.jsx(kr,{fieldSections:f,onSelectFieldSection:o,children:t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",className:"w-max",children:[t.jsx(a.LuIcon,{icon:Z}),"Add condition"]})})]}),r.map(c=>t.jsx(Kr,{sourceFieldSection:c,targetFieldSection:n},c.identifier))]}),t.jsx(a.Separator,{size:"full"})]})});Yr.displayName="FieldSectionBuilder";const Zr=d.memo(i=>{const{fieldSection:n,sectionIndex:e}=i,{fieldSchema:r}=d.use(ee),o=a.useAlertDialog(),s=d.useCallback(()=>{r.removeFieldSection(n)},[r,n]),l=d.useCallback(w=>{const S=w==="up"?e-1:e+1;r.moveFieldSection(e,S)},[r,e]),f=d.useCallback(()=>{r.addFieldSection(n.duplicate(N.v4()))},[r,n]),c=d.useCallback(w=>{n.addField(_i(w))},[n]),h=d.useCallback(()=>{l("up")},[l]),p=d.useCallback(()=>{l("down")},[l]),m=d.useCallback(async()=>{const w=[n.serialize()],S=Ne.reseedFieldSections(w,{conditions:!1}),v=JSON.stringify(S);await navigator.clipboard.writeText(v),a.toast.success({title:"Section copied"})},[n]),g=d.useCallback(async()=>{const S=r.getDependenciesOfSection(n.identifier).map(q=>q.serialize()),v=Ne.reseedFieldSections(S,{conditions:!0}),I=JSON.stringify(v);await navigator.clipboard.writeText(I),a.toast.success({title:"Section copied"})},[n,r]),V=d.useCallback(async()=>{const w=r.getDependenciesOfSection(n.identifier),S=w.length>1,v=w.length-1;S?o({title:"Copy section dependencies?",description:`This section has ${v} dependent section${v>1?"s":""} that will also be copied to maintain the conditions. Do you want to include these dependencies?`,action:"Include",onAction:g,cancel:"Dont include",onCancel:m}):m()},[n,r,o,g,m]),F=d.useCallback(async()=>{let w="";try{w=await navigator.clipboard.readText()}catch{a.toast.error({title:"Paste failed",description:"Unable to read clipboard contents."});return}const S=w.trim();if(!S){a.toast.error({title:"Paste failed",description:"Clipboard is empty."});return}let v;try{v=JSON.parse(S)}catch{a.toast.error({title:"Invalid JSON",description:"Check the JSON and try again."});return}const I=Array.isArray(v)?v:[v],q=[];for(const z of I){if(!z||typeof z!="object")continue;const b=z;if(b.type!=="section"||!Array.isArray(b.fields))continue;const L={type:"section",identifier:typeof b.identifier=="string"?b.identifier:N.v4(),label:typeof b.label=="string"||b.label===null?b.label:null,description:typeof b.description=="string"||b.description===null?b.description:null,conditions:b.conditions&&typeof b.conditions=="object"?b.conditions:{},fields:b.fields};try{q.push(X.deserialize(L))}catch{}}if(q.length===0){a.toast.error({title:"Paste failed",description:"No valid sections found in the JSON."});return}q.forEach((z,b)=>{r.addFieldSection(z,e+1+b)}),a.toast.success({title:"Section pasted",description:"Serialized JSON imported successfully."})},[r,e]);return t.jsxs(a.Card,{variant:"outline",className:"flex w-full items-center justify-between gap-4",size:"sm",children:[t.jsxs("div",{className:"flex w-full grow flex-col gap-4",children:[t.jsx(Yr,{fieldSection:n}),t.jsxs("div",{className:"flex w-full flex-col gap-2",children:[t.jsxs("div",{className:"flex justify-between gap-2",children:[t.jsx(a.Text,{accentColor:"base",size:"md",children:"Fields"}),t.jsx(Oi,{onSelectFieldType:c,size:"sm",children:t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",children:[t.jsx(a.LuIcon,{icon:Z})," Add field"]})})]}),n.fields.map((w,S)=>t.jsx(Dn,{field:w,fieldSection:n,fieldIndex:S,sectionIndex:e},w.identifier))]})]}),t.jsxs(a.ButtonGroup,{className:"flex flex-col gap-0.5",variant:"ghost",accentColor:"base",size:"sm",children:[t.jsx(a.IconButton,{type:"button",onClick:h,children:t.jsx(a.LuIcon,{icon:nt})}),t.jsx(a.IconButton,{type:"button",onClick:p,children:t.jsx(a.LuIcon,{icon:it})}),t.jsxs(a.Menu.Root,{align:"end",children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.IconButton,{type:"button",children:t.jsx(a.LuIcon,{icon:Qn})})}),t.jsxs(a.Menu.Content,{size:"sm",children:[t.jsxs(a.Menu.Item,{onSelect:f,children:[t.jsx(a.LuIcon,{icon:Ai}),"Duplicate section"]}),t.jsxs(a.Menu.Item,{onSelect:V,children:[t.jsx(a.LuIcon,{icon:Kn}),"Copy JSON"]}),t.jsxs(a.Menu.Item,{onSelect:F,children:[t.jsx(a.LuIcon,{icon:Yn}),"Paste JSON"]}),t.jsxs(a.Menu.Item,{onSelect:s,children:[t.jsx(a.LuIcon,{icon:ue}),"Delete section"]})]})]})]})]})});Zr.displayName="FieldSectionWithActions";const Qr=d.memo(()=>{var c;const{handleSubmit:i}=Y.useFormContext(),{errors:n}=Y.useFormState(),{onSave:e,onCancel:r}=d.use(ee),{fieldSchema:o}=d.use(ee),s=d.useCallback(()=>{o.addFieldSection(new X({identifier:N.v4(),fields:[]}))},[o]),l=d.useCallback(async()=>{try{const h=o.serialize(),p=Ne.reseedFieldSections(h),m=JSON.stringify(p);await navigator.clipboard.writeText(m),a.toast.success({title:"Sections copied",description:"All sections JSON copied to clipboard."})}catch{a.toast.error({title:"Copy failed",description:"Unable to copy the sections JSON."})}},[o]),f=d.useCallback(async()=>{let h="";try{h=await navigator.clipboard.readText()}catch{a.toast.error({title:"Paste failed",description:"Unable to read clipboard contents."});return}const p=h.trim();if(!p){a.toast.error({title:"Paste failed",description:"Clipboard is empty."});return}let m;try{m=JSON.parse(p)}catch{a.toast.error({title:"Invalid JSON",description:"Check the JSON and try again."});return}const g=Array.isArray(m)?m:[m],V=[];for(const w of g){if(!w||typeof w!="object")continue;const S=w;if(S.type!=="section"||!Array.isArray(S.fields))continue;const v={type:"section",identifier:typeof S.identifier=="string"?S.identifier:N.v4(),label:typeof S.label=="string"||S.label===null?S.label:null,description:typeof S.description=="string"||S.description===null?S.description:null,conditions:S.conditions&&typeof S.conditions=="object"?S.conditions:{},fields:S.fields};try{V.push(X.deserialize(v))}catch{}}if(V.length===0){a.toast.error({title:"Paste failed",description:"No valid sections found in the JSON."});return}const F=o.fieldSections.length;V.forEach((w,S)=>{o.addFieldSection(w,F+S)}),a.toast.success({title:"Sections pasted",description:"Serialized JSON imported successfully."})},[o]);return t.jsxs("form",{className:"flex flex-col gap-4",onSubmit:i(e),children:[t.jsxs("div",{className:"flex flex-col gap-4",children:[t.jsxs("div",{className:"flex items-center justify-end gap-2",children:[t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",onClick:l,children:[t.jsx(a.LuIcon,{icon:Kn})," Copy JSON"]}),t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",onClick:f,children:[t.jsx(a.LuIcon,{icon:Yn})," Paste JSON"]})]}),o.fieldSections.map((h,p)=>t.jsx(Zr,{fieldSection:h,sectionIndex:p},h.identifier)),t.jsxs(a.Button,{className:"mb-4",type:"button",variant:"soft",accentColor:"base",size:"sm",onClick:s,children:[t.jsx(a.LuIcon,{icon:Z})," Add section"]})]}),!!((c=n.fields)!=null&&c.message)&&t.jsx(a.Text,{size:"xs",accentColor:"danger",children:n.fields.message}),t.jsxs(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:[r&&t.jsx(a.Button,{type:"button",variant:"soft",accentColor:"base",onClick:r,children:"Cancel"}),t.jsx(a.Button,{type:"submit",variant:"surface",children:"Save"})]})]})});Qr.displayName="FormBuilderListBuilder";function Rr(i){const n=e=>{const r={};for(const[o,s]of Object.entries(e))typeof s=="string"?r[o]={type:"validate",message:s}:r[o]=n(s);return r};return n(i)}const eo=d.memo(d.forwardRef((i,n)=>{const{disabled:e=!1,fieldSchema:r,values:o={},onValuesChange:s,onSubmit:l,submitText:f="Submit",hideSubmit:c=!1,cancelText:h,onCancel:p,hideCancel:m=!1,className:g,submitButtonProps:V,cancelButtonProps:F,cancelIcon:w,submitIcon:S,size:v="md"}=i,I=d.useMemo(()=>r.initializeValues(o),[r,o]),q=d.useCallback(Q=>{l==null||l(Q)},[l]),z=Y.useForm({values:I,mode:"onBlur",criteriaMode:"all",disabled:e,resolver:Q=>{const J=r.validateValues(Q),K=Rr(J);return Object.keys(J).length>0?{values:{},errors:K}:{values:Q,errors:{}}}}),b=d.useCallback(Q=>{s==null||s(Q)},[s]);d.useEffect(()=>{const{unsubscribe:Q}=z.watch((J,{type:K})=>{K==="change"&&b(J)});return()=>{Q()}},[z,b]);const L=at(r.getFieldSections()),G=d.useMemo(()=>({fieldSchema:r,size:v}),[r,v]),ie=!m&&!!p,ce=!c;return t.jsx(Y.FormProvider,{...z,children:t.jsx(B,{value:G,children:t.jsxs("form",{ref:n,className:R.cx(g,"flex flex-col gap-4"),onSubmit:z.handleSubmit(q),children:[t.jsx("div",{className:Qo({size:v}),children:L}),!e&&(ie||ce)?t.jsxs(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:v,children:[ie?t.jsxs(a.Button,{accentColor:"base",type:"button",variant:"soft",onClick:p,...F,children:[t.jsx(a.LuIcon,{icon:w??re}),h]}):null,ce?t.jsxs(a.Button,{type:"submit",accentColor:"primary",variant:"surface",...V,children:[t.jsx(a.LuIcon,{icon:S??W}),f]}):null]}):null]})})})})),io=d.memo(()=>{const{fieldSchema:i}=d.use(ee);return t.jsx(eo,{fieldSchema:i,disabled:!1})});io.displayName="FormBuilderPreview";const no=d.memo(i=>{const{children:n,initialFields:e,onSave:r,onCancel:o,disableRequiredFields:s=!1}=i,l=d.useCallback(F=>{var q;const w={};(!F.fields||F.fields.length===0)&&(w.fields="At least one field is required.");const S=[];for(const[z,b]of F.fields.entries())for(const[L,G]of b.fields.entries()){const ie=((q=Pr(G.type,`fields.${z}.fields.${L}`))==null?void 0:q.map(({field:ce})=>ce))??[];S.push(...ie)}const v={};for(const z of S)v[z.identifier]=Hn(F,z.identifier);const I=jn(S,v);return Object.keys(I).length>0&&(w.fields=I.fields),Object.keys(w).length>0&&a.toast.error({title:"Some form settings are invalid",description:"Please check settings highlighted in red."}),w},[]),f=d.useMemo(()=>({fields:e??[]}),[e]),c=Y.useForm({values:f,mode:"onSubmit",criteriaMode:"all",reValidateMode:"onSubmit",resolver:F=>{const w=l(F),S=Rr(w);return Object.keys(w).length>0?{values:{},errors:S}:{values:F,errors:{}}}}),h=d.useCallback(F=>{c.setValue("fields",F.serialize())},[c]),p=Y.useWatch({control:c.control,compute:F=>F.fields}),m=d.useMemo(()=>{const F=Ne.deserialize(p);return F.observe(h),F},[p,h]),g=d.useMemo(()=>({fieldSchema:m,disableRequiredFields:s,onSave:r,onCancel:o}),[s,r,o,m]),V=d.useMemo(()=>({fieldSchema:m,size:"sm"}),[m]);return t.jsx(ee,{value:g,children:t.jsx(B,{value:V,children:t.jsx(Y.FormProvider,{...c,children:n})})})});no.displayName="FormBuilderRoot";const sa={Root:no,FlowBuilder:Xr,ListBuilder:Qr,Preview:io};u.BaseCondition=P,u.BaseField=k,u.BaseFormElement=Di,u.BaseOptionsField=Pe,u.BaseStringField=Hi,u.BooleanEqualsConditionModifier=bt,u.BooleanField=fe,u.BooleanFieldCondition=He,u.BooleanFieldConditionCell=Xt,u.BooleanFieldInput=Gi,u.BooleanNotEqualsConditionModifier=Nt,u.CheckboxListField=pe,u.CheckboxListFieldCondition=Je,u.CheckboxListFieldConditionCell=Yt,u.CheckboxListFieldInput=Ji,u.ConditionManager=Mi,u.DateAfterConditionModifier=qt,u.DateBeforeConditionModifier=It,u.DateEqualsConditionModifier=Mt,u.DateField=xe,u.DateFieldCondition=We,u.DateFieldConditionCell=Qt,u.DateFieldInput=Wi,u.DateNotEqualsConditionModifier=xt,u.DateRangeInConditionModifier=Ot,u.DateRangeNotInConditionModifier=_t,u.DoesNotHaveFilesConditionModifier=Lt,u.FIELD_TYPES=St,u.FieldSchema=Ne,u.FieldSection=X,u.FieldSectionLayout=En,u.FieldTypeGroup=O,u.FieldTypeToClsMapping=Cn,u.FieldsRenderer=eo,u.FileCard=$i,u.FormBuilder=sa,u.HasFilesConditionModifier=Tt,u.ImageCard=Zi,u.ImageFile=Me,u.ImageViewer=ji,u.ImageViewerProvider=ot,u.InputWithLabel=A,u.LONG_TEXT_FIELD_MAX_LENGTH=je,u.MultiSelectField=te,u.MultiSelectFieldCondition=Xe,u.MultiSelectFieldConditionCell=er,u.MultiSelectFieldInput=Xi,u.MultiStringField=he,u.MultiStringFieldCondition=Ke,u.MultiStringFieldConditionCell=nr,u.MultiStringFieldInput=Ui,u.NumberEqualsConditionModifier=yn,u.NumberField=H,u.NumberFieldCondition=Ye,u.NumberFieldConditionCell=rr,u.NumberFieldInput=ki,u.NumberGreaterThanConditionModifier=wn,u.NumberGreaterThanOrEqualsConditionModifier=Fn,u.NumberLessThanConditionModifier=Sn,u.NumberLessThanOrEqualsConditionModifier=zn,u.NumberNotEqualsConditionModifier=vn,u.NumberRangeInConditionModifier=bn,u.NumberRangeNotInConditionModifier=Nn,u.OTPField=me,u.OTPFieldCondition=Ze,u.OTPFieldConditionCell=ar,u.OTPFieldInput=Yi,u.Observable=De,u.PassFailArrayExcludesConditionModifier=$t,u.PassFailArrayIncludesConditionModifier=Et,u.PassFailEqualsConditionModifier=Bt,u.PassFailField=Ve,u.PassFailFieldCondition=Qe,u.PassFailFieldConditionCell=lr,u.PassFailFieldInput=nn,u.PassFailNotEqualsConditionModifier=At,u.RadioField=ye,u.RadioFieldCondition=Re,u.RadioFieldConditionCell=cr,u.RadioFieldInput=rn,u.RatingField=ve,u.RatingFieldCondition=ei,u.RatingFieldConditionCell=hr,u.RatingFieldInput=on,u.SHORT_TEXT_FIELD_MAX_LENGTH=ln,u.ScanField=qe,u.ScanFieldCondition=ii,u.ScanFieldConditionCell=pr,u.ScanFieldInput=sn,u.Scanner=mi,u.ScannerProvider=gt,u.SelectField=oe,u.SelectFieldCondition=ni,u.SelectFieldConditionCell=gr,u.SelectFieldInput=Ki,u.StringArrayEqualsConditionModifier=wi,u.StringArrayEveryConditionModifier=vi,u.StringArrayExcludesConditionModifier=xn,u.StringArrayIncludesConditionModifier=Mn,u.StringArrayNoneConditionModifier=zi,u.StringArrayNotEqualsConditionModifier=Fi,u.StringArraySomeConditionModifier=Si,u.StringEqualsConditionModifier=le,u.StringExcludesConditionModifier=Be,u.StringField=Se,u.StringFieldCondition=ti,u.StringFieldConditionCell=Vr,u.StringFieldInput=dn,u.StringIncludesConditionModifier=Le,u.StringNotEqualsConditionModifier=de,u.TextField=ze,u.TextFieldCondition=ri,u.TextFieldConditionCell=vr,u.TextFieldInput=cn,u.TimeAfterConditionModifier=Ut,u.TimeBeforeConditionModifier=jt,u.TimeEqualsConditionModifier=Dt,u.TimeField=Oe,u.TimeFieldCondition=oi,u.TimeFieldConditionCell=zr,u.TimeFieldControl=yi,u.TimeFieldInput=pn,u.TimeNotEqualsConditionModifier=Pt,u.TimeRangeInConditionModifier=Gt,u.TimeRangeNotInConditionModifier=kt,u.UNLABELLED_FIELD_LABEL=$,u.UNLABELLED_SECTION_LABEL=Vn,u.URLField=_e,u.URLFieldCondition=si,u.URLFieldConditionCell=Nr,u.URLFieldInput=gn,u.UTC_OFFSETS=un,u.UTC_OFFSETS_SET=Ct,u.UUIDFile=ae,u.UUIDPromise=Ce,u.UploadField=we,u.UploadFieldCondition=ai,u.UploadFieldConditionCell=Fr,u.UploadFieldInput=mn,u.VideoCard=Ri,u.VideoFile=Qi,u.areFieldValuesBlank=$r,u.areFieldValuesEqual=Bn,u.areFileAndPromiseArraysEqual=pi,u.arePassFieldValuesEqual=ht,u.areSerializedPassFailFieldValuesEqual=ft,u.awaitFilesAndPromises=aa,u.blankFieldValues=An,u.changedFieldValues=Ar,u.cleanConditions=Tn,u.cleanFieldValues=Ii,u.cleanSerializedConditions=_n,u.cleanSerializedFieldValues=Ln,u.createCondition=$n,u.createConditionModifierConfig=y,u.createField=_i,u.createTime=hn,u.deserialize=qr,u.deserializeCondition=xr,u.deserializeConditions=On,u.deserializeField=xi,u.deserializeFieldValues=_r,u.deserializeFields=Xo,u.deserializeOnlyFields=Ko,u.deserializePassFailFieldValue=ut,u.extractFilesAndPromisesFromFieldValues=Tr,u.fieldDataMapping=T,u.fieldSpacingCva=qi,u.fieldTypeGroupDataMapping=zt,u.flattenFields=Yo,u.formatTime=Vi,u.formatUTCOffset=Ci,u.getCurrentUTCOffset=yt,u.getFieldsMapping=Zo,u.getUTCMinuteOfDay=se,u.getUTCOffsetMinutes=vt,u.initializeFieldValues=Br,u.insertFilesAndPromisesToFieldValues=Lr,u.isFileAndPromiseArray=st,u.isPassFailFieldStatus=tn,u.isPassFailFieldValue=dt,u.isSerializedPassFailFieldValue=lt,u.isStringArray=$e,u.isTime=E,u.isTimeInRange=fn,u.isTimeRange=Ge,u.isUTCOffset=gi,u.maxFileSizeB=Ft,u.maxFileSizeKB=wt,u.maxFileSizeMB=Te,u.parseTime=Ue,u.passFailFieldStatusMapping=ge,u.passFailFieldStatuses=Ie,u.separateImagesFromFields=oa,u.serializeConditions=Ir,u.serializeFieldValues=Or,u.serializePassFailFieldValue=ct,u.unchangedFieldValues=Er,u.useConditionManager=Jo,u.useFieldInput=D,u.useFieldInputs=fi,u.useFieldSectionInputs=at,u.useImageViewer=hi,u.useObjectUrl=Pi,u.useScanner=Uo,u.useScannerContext=pt,u.validateFieldValues=jn,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})});
|
|
251
|
+
*/const re=M("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),$i=d.memo(i=>{const{ref:n,file:e,className:r,error:o,rightSlot:s,size:l,...f}=i,c=()=>o?t.jsxs(t.Fragment,{children:[t.jsx(a.LuIcon,{icon:Bi,color:"var(--base-a11)"}),t.jsx(a.Text,{accentColor:"base",className:"truncate",size:l,children:o})]}):e?t.jsxs(t.Fragment,{children:[t.jsx(a.LuIcon,{icon:bo,color:"var(--base-a11)"}),t.jsx(a.Text,{className:"truncate",size:l,children:e.name})]}):t.jsx(t.Fragment,{children:t.jsx("div",{className:"flex w-full justify-center",children:t.jsx(a.Spinner,{size:l})})});return t.jsxs(a.Card,{className:R.cx(r,"flex w-full items-center gap-2"),ref:n,size:"xs",...f,children:[c(),s]})});$i.displayName="FileCard";function $e(i){return Array.isArray(i)?i.every(n=>typeof n=="string"):!1}class De{constructor(){C(this,"observers",new Set)}notify(n){for(const e of this.observers)e(n)}observe(n){return this.observers.add(n),()=>{this.observers.delete(n)}}}class Di extends De{constructor(e){const{identifier:r}=e;super();C(this,"identifier");this.identifier=r}getOptions(){return{identifier:this.identifier}}setOptions(e){this.identifier=e.identifier??this.identifier,this.notify(this)}serialize(){return{type:this.type,identifier:this.identifier}}}class k extends Di{constructor(e){const{label:r,description:o=null,required:s,image:l,...f}=e;super(f);C(this,"label");C(this,"description");C(this,"required");C(this,"image");this.label=r,this.description=o,this.required=s,this.image=l}getError(e){if(!(!this.required&&this.isValueBlank(e))){if(this.required&&this.isValueBlank(e))return"This field is required.";for(const r of this.getFieldValidators()){const o=r(e);if(o)return o}}}serialize(){return{...super.serialize(),label:this.label,description:this.description,required:this.required,image:this.image}}getOptions(){return{...super.getOptions(),label:this.label,description:this.description,required:this.required,image:this.image}}setOptions(e){const{label:r,description:o=null,required:s,image:l,...f}=e;this.label=r??this.label,this.description=o??this.description,this.required=s??this.required,this.image=l??this.image,super.setOptions(f)}isValueBlank(e){return this.areValuesEqual(e,this.blankValue())}cleanValue(e){return e}isValueClean(e){return this.areValuesEqual(e,this.cleanValue(e))}cleanSerializedValue(e){return e}isSerializedValueClean(e){return this.areSerializedValuesEqual(e,this.cleanSerializedValue(e))}isSerializedValueBlank(e){return this.areSerializedValuesEqual(e,this.blankSerializedValue())}getFieldValidators(){return[]}}const B=d.createContext({}),Pi=i=>{const[n,e]=d.useState(null);return d.useLayoutEffect(()=>{const r=URL.createObjectURL(i);return e(r),()=>{URL.revokeObjectURL(r)}},[i]),n},Me=d.memo(i=>{const{file:n,...e}=i,r=Pi(n);return t.jsx("img",{src:r??void 0,alt:n.name,...e})});Me.displayName="ImageFile";const rt=d.createContext(()=>{throw new Error("No ImageViewerProvider found")}),hi=()=>d.useContext(rt),ji=d.memo(i=>{const{file:n,onClose:e}=i,r=d.useCallback(()=>{Gn.saveAs(n,n.name)},[n]);return t.jsx(a.Overlay.Root,{open:!0,onOpenChange:e,children:t.jsxs(a.Overlay.Content,{onOpenAutoFocus:a.preventDefault,children:[t.jsxs(a.ButtonGroup,{className:"absolute right-0 top-0 flex items-center gap-2 p-2",accentColor:"base",variant:"ghost",children:[t.jsxs(a.Tooltip.Root,{children:[t.jsx(a.Tooltip.Trigger,{asChild:!0,children:t.jsx(a.IconButton,{onClick:r,"aria-label":"download",children:t.jsx(a.LuIcon,{icon:Zn})})}),t.jsx(a.Tooltip.Content,{size:"sm",children:"Download"})]}),t.jsx(a.Separator,{orientation:"vertical",size:"sm"}),t.jsx(a.Overlay.Close,{asChild:!0,children:t.jsx(a.IconButton,{onClick:e,"aria-label":"close",children:t.jsx(a.LuIcon,{icon:re})})})]}),t.jsx("figure",{className:"flex size-full items-center justify-center overflow-hidden p-4",children:t.jsx(Me,{className:"max-h-full max-w-full",file:n})})]})})});ji.displayName="ImageViewer";const ot=d.memo(i=>{const{children:n}=i,[e,r]=d.useState(null),o=d.useCallback(()=>{r(null)},[]),s=d.useCallback(f=>{r(f(o))},[o]),l=d.useCallback(()=>{e&&(e.onClose&&e.onClose(),o())},[o,e]);return t.jsxs(rt.Provider,{value:s,children:[n,e&&t.jsx(ji,{file:e.file,onClose:l})]})});ot.displayName="FileViewerProvider";const A=d.memo(i=>{const{label:n,error:e,description:r,required:o,children:s,inputId:l,image:f,size:c}=i,[h,p]=d.useState(void 0),m=hi();d.useEffect(()=>{f instanceof Promise?f.then(p).catch(console.error):p(f)},[f]);const g=d.useCallback(()=>{h&&m(()=>({file:h}))},[m,h]),V=o?`${n} *`:n;return t.jsxs("div",{className:"flex flex-col gap-1",children:[h&&t.jsx(Me,{className:"h-[100px] w-full min-w-[300px] cursor-pointer rounded-md object-cover",file:h,onClick:g}),(!!n||!!r)&&t.jsxs("div",{className:"flex flex-col",children:[t.jsx("label",{className:"w-max max-w-full",htmlFor:l,children:t.jsx(a.Text,{size:c,className:"text-wrap",children:V})}),!!r&&t.jsx(a.Text,{accentColor:"base",size:c,children:r})]}),s,!!e&&t.jsx(a.Text,{accentColor:"danger",size:c,children:e})]})});A.displayName="InputWithLabel";const at=i=>i.map(n=>t.jsx(d.Fragment,{children:n.render()},n.identifier)),fi=i=>i.map(n=>t.jsx(d.Fragment,{children:n.render()},n.identifier)),D=i=>{const{field:n}=i,{field:{value:e,name:r,onChange:o,onBlur:s,disabled:l},fieldState:{isTouched:f,error:c}}=Y.useController({name:n.identifier});return{value:e,name:r,disabled:l,isTouched:f,error:(c==null?void 0:c.message)??"",onChange:o,onBlur:s}},Ui=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),[h,p]=d.useState(""),[m,g]=d.useState(""),V=d.useCallback(z=>{l(z),s()},[l,s]),F=d.useCallback(z=>{r&&r.findIndex(b=>b===z.target.value.trim())>=0?g("All options must be unique"):z.target.value?g(""):g("Option cannot be empty"),p(z.target.value)},[p,r]),w=d.useCallback(()=>{if(m)return;if(!h.trim()){g("Option cannot be empty");return}const z=h.trim();V([...r,z]),p("")},[h,m,V,r]),S=d.useCallback(z=>{z.key==="Enter"&&(z.preventDefault(),w())},[w]),v=d.useCallback(z=>{const b=Array.from(r);b.splice(z,1),V(b)},[r,V]),I=d.useCallback(z=>{if(!z.destination)return;const b=z.source.index,L=z.destination.index,G=Array.from(r),[ie]=G.splice(b,1);G.splice(L,0,ie),V(G)},[V,r]),q=d.useCallback(()=>{s()},[s]);return t.jsx(Li.DragDropContext,{onDragEnd:I,children:t.jsxs(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:m||f,image:n.image,children:[(!c||r.length===0)&&t.jsxs("div",{className:"flex gap-2",children:[t.jsx(a.Input.Root,{className:"grow",accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{value:h,onChange:F,onKeyDown:S,id:n.identifier,placeholder:n.placeholder,onBlur:q,name:o,disabled:c})}),t.jsx(a.IconButton,{size:e,accentColor:"base",variant:"soft",type:"button","aria-label":"Add option",disabled:!!m||c,onClick:w,children:t.jsx(a.LuIcon,{icon:Z})})]}),r.length!==0&&t.jsx(Li.Droppable,{droppableId:`${n.identifier}-droppable`,children:z=>t.jsxs("div",{className:"flex flex-col gap-1",...z.droppableProps,ref:z.innerRef,children:[r.map((b,L)=>t.jsx(Li.Draggable,{draggableId:`${b}-draggable`,index:L,isDragDisabled:c,children:({draggableProps:G,dragHandleProps:ie,innerRef:ce})=>t.jsxs(a.Badge,{...ie,...G,ref:ce,className:"flex items-center justify-between gap-2",accentColor:"base",size:e,variant:"soft",children:[t.jsx(a.Text,{className:"truncate",highContrast:!0,children:typeof b=="object"&&"label"in b?b.label:b}),t.jsx(a.IconButton,{className:"bg-transparent!",size:e,variant:"ghost",type:"button","aria-label":"Delete option",accentColor:"base",disabled:c,onClick:()=>{v(L)},children:t.jsx(a.LuIcon,{icon:re})})]})},`${n.identifier}-${b}-${L}`)),z.placeholder]})})]})})});Ui.displayName="MultiStringFieldInput";class he extends k{constructor(e){const{minimum_length:r,maximum_length:o,placeholder:s,...l}=e;super(l);C(this,"type","multi-string");C(this,"minLength");C(this,"maxLength");C(this,"placeholder");this.minLength=r??0,this.maxLength=o??1/0,this.placeholder=s??"Press enter to add a new option"}render(){return t.jsx(Ui,{field:this})}serialize(){return{...super.serialize(),minimum_length:this.minLength,maximum_length:this.maxLength,placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),minimum_length:this.minLength,maximum_length:this.maxLength,placeholder:this.placeholder}}duplicate(e){return new he({...this.getOptions(),identifier:e})}setOptions(e){const{minimum_length:r,maximum_length:o,placeholder:s,...l}=e;this.minLength=r??this.minLength,this.maxLength=o??this.maxLength,this.placeholder=s??this.placeholder,super.setOptions(l)}serializeValue(e){return e}deserializeValue(e){return e}getFieldValidators(){const e=super.getFieldValidators();return e.push(r=>{if(r.length<this.minLength)return`Must have at least ${this.minLength} options.`}),e.push(r=>{if(r.length>this.maxLength)return`Must have at most ${this.maxLength} options.`}),e}static deserialize(e){return new he(e)}isSerializedValue(e){return $e(e)}isValue(e){return $e(e)}blankValue(){return[]}areValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}}class Pe extends k{constructor(e){const{options:r,...o}=e;super(o);C(this,"options");this.options=r.map(s=>(typeof s=="string"&&(s={label:s,value:s}),s))}serialize(){return{...super.serialize(),options:this.options}}getOptions(){return{...super.getOptions(),options:this.options}}setOptions(e){const{options:r,...o}=e;this.options=(r==null?void 0:r.map(s=>(typeof s=="string"&&(s={label:s,value:s}),s)))??this.options,super.setOptions(o)}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new he({label:"Options",description:"List possible options for the user to select from.",required:!0,identifier:`${r}options`,minimum_length:2}),showDirectly:!0}]}}const Gi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(!!m),s()},[s,l]),p=d.useCallback(()=>{s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,error:f,image:n.image,required:n.required,children:t.jsx(a.Checkbox.Root,{id:n.identifier,name:o,checked:r??!1,onCheckedChange:h,onBlur:p,size:e,accentColor:"base",variant:"surface",disabled:c,children:t.jsx(a.Checkbox.Indicator,{children:t.jsx(a.LuIcon,{icon:W})})})})});Gi.displayName="BooleanFieldInput";class fe extends k{constructor(e){super(e);C(this,"type","boolean")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}setOptions(e){super.setOptions(e)}duplicate(e){return new fe({...this.getOptions(),identifier:e})}static deserialize(e){return new fe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Gi,{field:this})}isSerializedValue(e){return typeof e=="boolean"}isValue(e){return typeof e=="boolean"}blankValue(){return!1}blankSerializedValue(){return!1}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return e===r}}const ki=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{const V=g.target.valueAsNumber,F=isNaN(V)?null:V;l(F)},[l]),p=d.useCallback(()=>{s()},[s]),m=d.useCallback(g=>{g.key==="Enter"&&g.preventDefault()},[]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.Input.Root,{accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{id:n.identifier,name:o,onChange:h,onBlur:p,value:r??"",type:"number",min:n.minimum,max:n.maximum,step:n.integers?1:"any",placeholder:n.placeholder??"Enter a number",disabled:c,onKeyDown:m})})})});ki.displayName="NumberFieldInput";class H extends k{constructor(e){const{minimum:r=Number.MIN_SAFE_INTEGER,maximum:o=Number.MAX_SAFE_INTEGER,integers:s=!1,placeholder:l,...f}=e;super(f);C(this,"type","number");C(this,"minimum");C(this,"maximum");C(this,"integers");C(this,"placeholder");this.minimum=r,this.maximum=o,this.integers=s,this.placeholder=l}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Minimum",description:"Minimum value",integers:!0,required:!1,identifier:`${r}minimum`}),showDirectly:!1},{field:new H({label:"Maximum",description:"Maximum value",integers:!0,required:!1,identifier:`${r}maximum`}),showDirectly:!1},{field:new fe({label:"Integers",description:"Whole numbers only",required:!1,identifier:`${r}integers`}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.minimum,o=this.maximum;return typeof r=="number"&&e.push(s=>{if(typeof s=="number"&&s<r)return`Must be at least ${this.minimum}.`}),typeof o=="number"&&e.push(s=>{if(typeof s=="number"&&s>o)return`Must be at most ${this.maximum}.`}),this.integers&&e.push(s=>{if(typeof s=="number"&&!Number.isInteger(s))return"Must be a whole number."}),e}serialize(){return{...super.serialize(),minimum:this.minimum,maximum:this.maximum,integers:this.integers,placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),minimum:this.minimum,maximum:this.maximum,integers:this.integers,placeholder:this.placeholder}}duplicate(e){return new H({...this.getOptions(),identifier:e})}setOptions(e){const{minimum:r,maximum:o,integers:s,placeholder:l,...f}=e;this.minimum=r??this.minimum,this.maximum=o??this.maximum,this.integers=s??this.integers,this.placeholder=l??this.placeholder,super.setOptions(f)}static deserialize(e){return new H(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(ki,{field:this})}isSerializedValue(e){return this.isValue(e)}isValue(e){return typeof e=="number"&&!isNaN(e)||e===null}areValuesEqual(e,r){return e===r}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const je=1e4;class Hi extends k{constructor(e){const{minLength:r,maxLength:o,placeholder:s="",...l}=e;super(l);C(this,"minLength");C(this,"maxLength");C(this,"placeholder");this.minLength=r?Math.max(r,0):void 0,this.maxLength=o?Math.max(o,0):je,this.placeholder=s}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Minimum length",description:"Minimum number of characters",required:!1,identifier:`${r}minimum_length`,minimum:0,maximum:100,integers:!0}),showDirectly:!1},{field:new H({label:"Maximum length",description:"Maximum number of characters",required:!1,identifier:`${r}maximum_length`,minimum:1,maximum:je,integers:!0}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators();return this.minLength&&e.push(r=>{if(this.minLength&&(!r||r.length<this.minLength))return!this.required&&!r?void 0:`Minimum ${this.minLength} character(s).`}),this.maxLength&&e.push(r=>{if(typeof r=="string"&&this.maxLength&&r.length>this.maxLength)return`Maximum ${this.maxLength} character(s).`}),e}serialize(){return{...super.serialize(),minimum_length:this.minLength,maximum_length:this.maxLength,placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),minLength:this.minLength,maxLength:this.maxLength,placeholder:this.placeholder}}setOptions(e){const{minLength:r,maxLength:o,placeholder:s,...l}=e;this.minLength=r,this.maxLength=o??this.maxLength,this.placeholder=s,super.setOptions(l)}serializeValue(e){return e}deserializeValue(e){return e}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}blankSerializedValue(){return""}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return e===r}}const Ji=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(m),s()},[s,l]),p=d.useCallback(()=>{s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.CheckboxGroup.Root,{id:n.identifier,name:o,className:"flex flex-col gap-1",accentColor:"base",variant:"surface",size:e,values:r,onValuesChange:h,disabled:c,children:n.options.map((m,g)=>t.jsxs("label",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(a.CheckboxGroup.Item,{value:m.value,onBlur:p,children:t.jsx(a.CheckboxGroup.ItemIndicator,{children:t.jsx(a.LuIcon,{icon:W})})}),t.jsx(a.Text,{size:e,accentColor:"base",className:"truncate",children:m.label})]},`${n.identifier}-${m.value}-${g}`))})})});Ji.displayName="CheckboxListFieldInput";class pe extends Pe{constructor(e){super(e);C(this,"type","checkbox-list")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new pe({...this.getOptions(),identifier:e})}static deserialize(e){return new pe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Ji,{field:this})}isSerializedValue(e){if(!$e(e))return!1;const r=new Set(this.options.map(({value:o})=>o));return e.every(o=>r.has(o))}isValue(e){return this.isSerializedValue(e)}blankValue(){return[]}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}areValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}}const Wi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),[h,p]=d.useState(!1),m=d.useCallback(V=>{l(V??null),s(),p(!1)},[l,s]),g=d.useCallback(V=>{p(V),V||s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.Popover.Root,{open:h,onOpenChange:g,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:t.jsxs(a.Button,{id:n.identifier,name:o,type:"button",className:"!justify-between",accentColor:"base",variant:"surface",size:e,disabled:c,children:[t.jsx(a.Text,{className:"truncate",highContrast:!!r,children:r?r.toLocaleString(void 0,{year:"numeric",month:"2-digit",day:"2-digit"}):"yyyy-mm-dd"}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Popover.Content,{align:"start",size:e,children:t.jsx(a.DayPicker,{size:e,required:!1,mode:"single",variant:"solid",selected:r??void 0,onSelect:m})})]})})});Wi.displayName="DateFieldInput";class xe extends k{constructor(e){super(e);C(this,"type","date")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new xe({...this.getOptions(),identifier:e})}static deserialize(e){return new xe(e)}setOptions(e){super.setOptions(e)}serializeValue(e){return e?e.toISOString():null}deserializeValue(e){return e?new Date(e):null}render(){return t.jsx(Wi,{field:this})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:this.isValue(this.deserializeValue(e))}isValue(e){return!(!(e instanceof Date)&&e!==null||e instanceof Date&&isNaN(e.getTime()))}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return!e&&!r?!0:!e||!r?!1:e.getTime()===r.getTime()}}var O=(i=>(i.Text="text",i.Selection="selection",i.Numeric="numeric",i.Temporal="temporal",i.Capture="capture",i.Assessment="assessment",i.Verification="verification",i))(O||{});const Xi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(m),s()},[s,l]),p=d.useCallback(m=>{m||s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.Menu.Root,{onOpenChange:p,align:"start",children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsxs(a.Button,{id:n.identifier,name:o,className:"!justify-between",variant:"surface",type:"button",size:e,accentColor:"base",disabled:c,children:[t.jsx(a.Text,{className:"truncate",highContrast:r&&r.length>0,children:r&&r.length>0?r.join(", "):n.placeholder??"Select one or more..."}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Menu.Content,{size:e,children:t.jsx(a.Menu.Scroll,{children:t.jsxs(a.Menu.MultiSelectGroup,{values:r,onValuesChange:h,children:[t.jsxs(a.Menu.SelectAllItem,{children:[t.jsx(a.Menu.CheckboxItemIndicator,{children:m=>m?t.jsx(a.LuIcon,{icon:ui}):t.jsx(a.LuIcon,{icon:W})}),"Select all"]}),n.options.map((m,g)=>t.jsxs(a.Menu.MultiSelectItem,{value:m.value,children:[t.jsx(a.Menu.SelectedIndicator,{children:t.jsx(a.LuIcon,{icon:W})}),m.label]},`${n.identifier}-${m.value}-${g}`))]})})})]})})});Xi.displayName="MultiSelectFieldInput";class te extends Pe{constructor(e){const{placeholder:r,...o}=e;super(o);C(this,"type","multi-select");C(this,"placeholder");this.placeholder=r}serialize(){return super.serialize()}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new te({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:r}=e;this.placeholder=r,super.setOptions(e)}static deserialize(e){return new te(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Xi,{field:this})}isSerializedValue(e){if(!$e(e))return!1;const r=new Set(this.options.map(({value:o})=>o));return e.every(o=>r.has(o))}isValue(e){return this.isSerializedValue(e)}blankValue(){return[]}areValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}}const Ki=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g??null),s()},[s,l]),p=d.useCallback(g=>{g||s()},[s]),m=d.useMemo(()=>n.options.find(g=>g.value===r),[n.options,r]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.Menu.Root,{onOpenChange:p,align:"start",children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsxs(a.Button,{id:n.identifier,name:o,className:"!justify-between",accentColor:"base",variant:"surface",type:"button",size:e,disabled:c,children:[t.jsx(a.Text,{className:"truncate",highContrast:!!m,children:m?m.label:n.placeholder??"Select one..."}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Menu.Content,{size:e,children:t.jsx(a.Menu.Scroll,{children:t.jsx(a.Menu.SelectGroup,{required:!1,value:r??void 0,onValueChange:h,children:n.options.map((g,V)=>t.jsxs(a.Menu.SelectItem,{value:g.value,children:[t.jsx(a.Menu.SelectedIndicator,{children:t.jsx(a.LuIcon,{icon:W})}),g.label]},`${n.identifier}-${g.value}-${V}`))})})})]})})});Ki.displayName="SelectFieldInput";class oe extends Pe{constructor(e){const{placeholder:r,...o}=e;super(o);C(this,"type","select");C(this,"placeholder");this.placeholder=r}serialize(){return super.serialize()}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new oe({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:r}=e;this.placeholder=r,super.setOptions(e)}static deserialize(e){return new oe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Ki,{field:this})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:new Set([null,...this.options.map(({value:o})=>o)]).has(e)}isValue(e){return this.isSerializedValue(e)}blankValue(){return null}areValuesEqual(e,r){return e===r}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const Yi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g)},[l]),p=d.useCallback(()=>{s()},[s]),m=d.useMemo(()=>Array.from({length:n.length},()=>N.v4()),[n.length]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.OneTimePasswordField.Root,{id:n.identifier,name:o,value:r,onValueChange:h,validationType:n.validationType,disabled:c,orientation:"horizontal",dir:"ltr",type:"text",autoComplete:"off",autoFocus:!1,autoSubmit:!1,className:"p-0.25 flex h-max w-full gap-1 overflow-x-auto",accentColor:"base",variant:"surface",size:e,onBlur:p,children:[m.map(g=>t.jsx(a.OneTimePasswordField.Input,{id:g},g)),t.jsx(a.OneTimePasswordField.HiddenInput,{})]})})});Yi.displayName="OTPFieldInput";class me extends k{constructor(e){const{length:r,validationType:o,...s}=e;super(s);C(this,"type","otp");C(this,"length");C(this,"validationType");this.length=r,this.validationType=o}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Length",integers:!0,required:!1,minimum:1,maximum:16,identifier:`${r}length`}),showDirectly:!1},{field:new oe({label:"Type",required:!1,identifier:`${r}validationType`,options:[{value:"none",label:"Any"},{value:"numeric",label:"Numeric"},{value:"alpha",label:"Alpha"},{value:"alphanumeric",label:"Alphanumeric"}]}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.length;return e.push(o=>{if(o.length!=r)return`Must be ${r} characters.`}),e}serialize(){return{...super.serialize(),length:this.length,validationType:this.validationType}}getOptions(){return{...super.getOptions(),length:this.length,validationType:this.validationType}}duplicate(e){return new me({...this.getOptions(),identifier:e})}setOptions(e){const{length:r,validationType:o,...s}=e;this.length=r??this.length,this.validationType=o??this.validationType,super.setOptions(s)}static deserialize(e){return new me(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Yi,{field:this})}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}areValuesEqual(e,r){return e===r}blankSerializedValue(){return""}areSerializedValuesEqual(e,r){return e===r}}const ge={pass:{label:"Pass",icon:Vo},fail:{label:"Fail",icon:So},na:{label:"N/A",icon:vo}},Ie=Object.keys(ge);class ae extends File{constructor(e,...r){super(...r);C(this,"uuid");this.uuid=e}static from(e,r){return new ae(e,[r],r.name,{lastModified:r.lastModified,type:r.type})}}class Ce extends Promise{constructor(e,r){super(e);C(this,"_uuid");this._uuid=r}get uuid(){return this._uuid}set uuid(e){this._uuid=e}static from(e,r){return new Ce((o,s)=>{Promise.resolve(e).then(o).catch(s)},r)}then(e,r){const o=super.then(e,r);return o.uuid=this.uuid,o}catch(e){const r=super.catch(e);return r.uuid=this.uuid,r}finally(e){const r=super.finally(e);return r.uuid=this.uuid,r}}function st(i){return Array.isArray(i)?i.every(n=>n instanceof Ce||n instanceof ae):!1}function pi(i,n){const e=new Set(i.map(({uuid:o})=>o)),r=new Set(n.map(({uuid:o})=>o));return e.size===r.size&&e.isSubsetOf(r)}const Zi=d.memo(i=>{const{ref:n,file:e,error:r,rightSlot:o,className:s,size:l,...f}=i;return t.jsxs(a.Card,{className:R.cx(s,"p-0! relative flex h-48 w-full flex-col overflow-hidden"),ref:n,size:"xs",...f,children:[!e&&!r&&t.jsx("div",{className:"absolute inset-0 flex grow items-center justify-center",children:t.jsx(a.Spinner,{size:l})}),!!e&&!r&&t.jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center overflow-hidden p-3",children:t.jsx(Me,{className:"block size-full max-w-full object-cover",file:e})}),!!r&&t.jsx("div",{className:"grow"}),(!!e||!!r)&&t.jsxs(t.Fragment,{children:[t.jsx(a.Separator,{size:"full"}),t.jsxs("div",{className:"flex w-full shrink-0 items-center gap-2 self-end p-3",children:[r?t.jsx(a.LuIcon,{color:"var(--base-11)",icon:Bi}):e&&t.jsx(a.LuIcon,{color:"var(--base-11)",icon:Rn}),t.jsx(a.Text,{className:"truncate",size:l,children:r??(e==null?void 0:e.name)}),o]})]})]})});Zi.displayName="ImageCard";const Qi=d.memo(i=>{const{file:n,...e}=i,r=Pi(n);return t.jsx("video",{src:r??void 0,...e})});Qi.displayName="VideoFile";const Ri=d.memo(i=>{const{ref:n,file:e,className:r,error:o,rightSlot:s,size:l,...f}=i;return t.jsxs(a.Card,{className:R.cx(r,"p-0! relative flex h-48 w-full flex-col overflow-hidden"),ref:n,size:"xs",...f,children:[!e&&!o&&t.jsx("div",{className:"absolute inset-0 flex grow items-center justify-center",children:t.jsx(a.Spinner,{size:l})}),!!e&&!o&&t.jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center overflow-hidden p-3",children:t.jsx(Qi,{className:"block size-full max-w-full object-cover",file:e,controls:!0})}),!!o&&t.jsx("div",{className:"grow"}),(!!e||!!o)&&t.jsxs(t.Fragment,{children:[t.jsx(a.Separator,{size:"full"}),t.jsxs("div",{className:"flex w-full shrink-0 items-center gap-2 self-end p-3",children:[o?t.jsx(a.LuIcon,{color:"var(--danger-11)",icon:Bi}):e&&t.jsx(a.LuIcon,{color:"var(--base-11)",icon:Po}),t.jsx(a.Text,{className:"truncate",size:l,children:o??(e==null?void 0:e.name)}),s]})]})]})});Ri.displayName="VideoCard";const en=d.memo(i=>{const{fileOrPromise:n,onRemove:e,disabled:r,size:o}=i,[s,l]=d.useState(n instanceof Ce?null:n),[f,c]=d.useState(null),h=hi();to.useActiveEffect(v=>{if(c(null),!(n instanceof Ce)){l(n);return}l(null),n.then(I=>{v()&&l(I)}).catch(I=>{v()&&c(I instanceof Error?I.message:"Unknown error")})},[n]);const p=d.useCallback(()=>{if(!s)return;const v=new Blob([s]);Gn.saveAs(v,s.name)},[s]),m=d.useCallback(()=>{e(n)},[e,n]),g=d.useCallback(()=>{if(!s)return;const v=URL.createObjectURL(s);window.open(v,"_blank"),URL.revokeObjectURL(v)},[s]),V=d.useCallback(()=>{s&&h(v=>({file:s,onDelete:r?void 0:()=>{m(),v()}}))},[r,m,h,s]),F=d.useMemo(()=>t.jsx("div",{className:"flex grow justify-end",children:t.jsxs(a.Menu.Root,{modal:!0,children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.IconButton,{onClick:a.stopPropagation,type:"button",variant:"ghost",accentColor:"base",size:o,children:t.jsx(a.LuIcon,{icon:Qn})})}),t.jsxs(a.Menu.Content,{size:o,children:[t.jsxs(a.Menu.Item,{onSelect:p,disabled:!s,children:[t.jsx(a.LuIcon,{icon:Zn})," Download"]}),r?null:t.jsxs(t.Fragment,{children:[t.jsx(a.Menu.Separator,{}),t.jsxs(a.Menu.Item,{onSelect:m,children:[t.jsx(a.LuIcon,{icon:ue})," Delete"]})]})]})]})}),[r,m,p,s,o]),w=!!(s!=null&&s.type.startsWith("image/")),S=!!(s!=null&&s.type.startsWith("video/"));return w?t.jsx(Zi,{className:"cursor-pointer",onClick:V,file:s,error:f??void 0,rightSlot:F,size:o}):S?t.jsx(Ri,{className:"cursor-pointer",onClick:V,file:s,error:f??void 0,rightSlot:F,size:o}):t.jsx($i,{className:"cursor-pointer",file:s,error:f??void 0,onClick:g,rightSlot:F,size:o})});en.displayName="DisplayFile";const nn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useRef(null),p=d.useCallback(z=>{const b=n.cleanValue({...r,status:z});l(b),s()},[n,s,l,r]),m=d.useCallback(z=>{const b=z.target.value,L={...r,notes:b};l(L)},[r,l]),g=d.useCallback(()=>{s()},[s]),V=d.useCallback(z=>{const b=r.files.filter(({uuid:L})=>L!==z.uuid);l({...r,files:b}),s()},[l,s,r]),F=d.useCallback(()=>{var z;(z=h.current)==null||z.click()},[]),w=d.useCallback(z=>{const b=Array.from(z.target.files??[]).map(G=>ae.from(N.v4(),G)),L={...r,files:[...r.files,...b]};l(L),s()},[s,l,r]);d.useEffect(()=>{if(!h.current)return;const z=new AbortController;return h.current.addEventListener("cancel",()=>{s()},{signal:z.signal}),()=>{z.abort()}},[s,r]);const S=r.status&&n.showNotesAndFilesOn.includes(r.status),v=`${n.identifier}-status`,I=`${n.identifier}-notes`,q=`${n.identifier}-files`;return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx(a.RadioGroup.Root,{id:v,className:"flex gap-2",name:o,value:r.status,disabled:c,accentColor:"base",variant:"surface",size:e,onValueChange:p,children:Ie.map(z=>{const{label:b}=ge[z];return t.jsxs("label",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(a.RadioGroup.Item,{value:z,children:t.jsx(a.RadioGroup.Indicator,{children:t.jsx(a.LuIcon,{icon:Xn,className:"fill-current"})})}),t.jsx(a.Text,{size:e,accentColor:"base",className:"truncate",children:b})]},`${n.identifier}-${z}`)})}),S&&t.jsxs(t.Fragment,{children:[t.jsx("div",{children:t.jsx(a.TextArea,{id:I,value:r.notes??"",name:o,onChange:m,onBlur:g,className:"field-sizing-content min-h-12 w-full",placeholder:"Notes",resize:"vertical",accentColor:"base",variant:"surface",size:e,disabled:c})}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs(a.Button,{className:"w-max",size:e,variant:"surface",accentColor:"base",onClick:F,type:"button",disabled:c,children:[t.jsx(a.LuIcon,{icon:Ei}),"Select files"]}),t.jsx("input",{id:q,name:o,type:"file",ref:h,multiple:!0,className:"hidden",onChange:w,value:""}),r.files.length>0&&t.jsx("div",{className:"flex h-max flex-wrap gap-2",children:r.files.map(z=>t.jsx(en,{size:e,fileOrPromise:z,onRemove:V,disabled:c},z.uuid))})]})]})]})})});nn.displayName="PassFailFieldInput";const tn=i=>typeof i=="string"&&Ie.includes(i),lt=i=>!(i===null||typeof i!="object"||!("status"in i)||!tn(i.status)||!("notes"in i)||typeof i.notes!="string"||!("files"in i)||!(Array.isArray(i.files)&&i.files.length===0)),dt=i=>!(i===null||typeof i!="object"||!("status"in i)||!tn(i.status)||!("notes"in i)||typeof i.notes!="string"||!("files"in i)||!st(i.files)),ct=i=>({status:i.status,notes:i.notes,files:[]}),ut=i=>({status:i.status,notes:i.notes,files:[]}),ht=(i,n)=>!(i.status!==n.status||i.notes!==n.notes||!pi(i.files,n.files)),ft=(i,n)=>!(i.status!==n.status||i.notes!==n.notes||i.files.length!==n.files.length);class Ve extends k{constructor(e){const{showNotesAndFilesOn:r,...o}=e;super(o);C(this,"type","pass-fail");C(this,"showNotesAndFilesOn");this.showNotesAndFilesOn=r}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new te({identifier:`${r}showNotesAndFilesOn`,label:"Show notes and files on",description:"Show the notes and files on desired statuses.",options:Ie.map(o=>{const{label:s}=ge[o];return{value:o,label:s}}),required:!1}),showDirectly:!1}]}serialize(){return{...super.serialize(),showNotesAndFilesOn:this.showNotesAndFilesOn}}getOptions(){return{...super.getOptions(),showNotesAndFilesOn:this.showNotesAndFilesOn}}duplicate(e){return new Ve({...this.getOptions(),identifier:e})}setOptions(e){const{showNotesAndFilesOn:r,...o}=e;this.showNotesAndFilesOn=r??this.showNotesAndFilesOn,super.setOptions(o)}getFieldValidators(){const e=super.getFieldValidators(),r=this.showNotesAndFilesOn,o=this.blankValue();return r.length>0&&(e.push(s=>{if(!(!s.status||!r.includes(s.status))&&o.notes===s.notes)return"Notes is required."}),e.push(s=>{if(!(!s.status||!r.includes(s.status))&&pi(o.files,s.files))return"Files is required."})),e}static deserialize(e){return new Ve({...e,showNotesAndFilesOn:e.showNotesAndFilesOn??!1})}serializeValue(e){return ct(e)}deserializeValue(e){return ut(e)}render(){return t.jsx(nn,{field:this})}isSerializedValue(e){return lt(e)}isValue(e){return dt(e)}areValuesEqual(e,r){return ht(e,r)}blankValue(){return{status:null,notes:"",files:[]}}cleanValue(e){return e.status&&this.showNotesAndFilesOn.includes(e.status)?e:{status:e.status,notes:"",files:[]}}cleanSerializedValue(e){return super.cleanSerializedValue(e)}blankSerializedValue(){return{status:null,notes:"",files:[]}}areSerializedValuesEqual(e,r){return ft(e,r)}}const rn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g),s()},[s,l]),p=d.useCallback(()=>{s()},[s]),m=d.useCallback(()=>{l(null),s()},[s,l]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.RadioGroup.Root,{id:n.identifier,name:o,className:"flex flex-col gap-1",accentColor:"base",variant:"surface",size:e,value:r??"",onValueChange:h,disabled:c,children:[n.options.map((g,V)=>t.jsxs("label",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(a.RadioGroup.Item,{value:g.value,onBlur:p,children:t.jsx(a.RadioGroup.Indicator,{children:t.jsx(a.LuIcon,{icon:Xn,className:"fill-current"})})}),t.jsx(a.Text,{size:e,accentColor:"base",className:"truncate",children:g.label})]},`${n.identifier}-${g.value}-${V}`)),!!r&&t.jsxs(a.Button,{onClick:m,className:"-mx-2 w-max",type:"button",variant:"ghost",accentColor:"base",size:e,children:[t.jsx(a.LuIcon,{icon:re}),"Clear"]})]})})});rn.displayName="RadioFieldInput";class ye extends Pe{constructor(e){super(e);C(this,"type","radio")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new ye({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){return new ye(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(rn,{field:this})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:new Set([null,...this.options.map(({value:o})=>o)]).has(e)}isValue(e){return this.isSerializedValue(e)}blankValue(){return null}areValuesEqual(e,r){return e===r}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const jo=R.cva(["group flex cursor-pointer items-center justify-center text-yellow-500 transition-colors disabled:pointer-events-none disabled:opacity-50"],{variants:{size:{xs:["size-5"],sm:["size-6"],md:["size-7"],lg:["size-8"],xl:["size-9"]}}}),on=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g),s()},[s,l]),p=d.useCallback(()=>{l(null),s()},[s,l]),m=Array.from({length:n.maxRating},(g,V)=>V+1);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs("div",{className:"flex flex-row items-center gap-1",children:[t.jsx(a.Rating.Root,{id:n.identifier,name:o,className:"flex items-center gap-0.5",value:r,onValueChange:h,disabled:c,children:m.map(g=>t.jsx(a.Rating.Item,{value:g,className:jo({size:e}),children:t.jsx(a.LuIcon,{icon:tt,className:"size-full group-data-[active=true]:fill-current"})},`${n.identifier}-${g}`))}),!c&&r!==null&&t.jsx(a.IconButton,{onClick:p,type:"button",variant:"ghost",accentColor:"base",size:e,children:t.jsx(a.LuIcon,{icon:re})})]})})});on.displayName="RatingFieldInput";class ve extends k{constructor(e){const{maxRating:r,...o}=e;super(o);C(this,"type","rating");C(this,"maxRating");this.maxRating=r}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Max Rating",description:"Maximum rating value",integers:!0,required:!1,minimum:1,maximum:10,identifier:`${r}maxRating`}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.maxRating;return e.push(o=>{if(typeof o=="number"&&(o<1||o>r))return`Rating must be between 1 and ${r}.`}),e}serialize(){return{...super.serialize(),maxRating:this.maxRating}}getOptions(){return{...super.getOptions(),maxRating:this.maxRating}}duplicate(e){return new ve({...this.getOptions(),identifier:e})}setOptions(e){const{maxRating:r,...o}=e;this.maxRating=r??this.maxRating,super.setOptions(o)}static deserialize(e){return new ve(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(on,{field:this})}isSerializedValue(e){return this.isValue(e)}isValue(e){return typeof e=="number"&&!isNaN(e)||e===null}areValuesEqual(e,r){return e===r}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const an=d.createContext(null),pt=()=>{const i=d.use(an);if(!i)throw new Error("useScannerContext must be used within a component tree wrapped by ScannerProvider.");return i},Uo=()=>{const i=d.use(an);if(!i)throw new Error("useScanner must be used within a component tree wrapped by ScannerProvider.");return i.openScanner},mi=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,...l}=i;return t.jsxs(a.Overlay.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[!!n&&t.jsx(a.Overlay.Trigger,{asChild:!0,children:n}),t.jsxs(a.Overlay.Content,{children:[t.jsx(a.Overlay.Title,{className:"sr-only",children:"Scanner"}),t.jsx(a.Overlay.Description,{className:"sr-only",children:"Scan a barcode or a qr code."}),t.jsx(mt,{...l})]})]})});mi.displayName="Scanner";const mt=d.memo(i=>{const{paused:n,formats:e,timeBetweenDecodingAttempts:r,trySkew:o,onDecodeResult:s,onDecodeError:l,onError:f}=i,{wasmUrl:c}=pt(),{ref:h}=ro.useZxing({wasmUrl:c,paused:n,formats:e,timeBetweenDecodingAttempts:r,trySkew:o,onDecodeResult:s,onDecodeError:l,onError:f});return t.jsxs("div",{className:"bg-(--color-background) flex size-full flex-col justify-center overflow-hidden",children:[t.jsx("div",{className:"flex w-full justify-end p-4",children:t.jsx(a.Overlay.Close,{asChild:!0,children:t.jsx(a.IconButton,{"aria-label":"close",variant:"soft",accentColor:"base",children:t.jsx(a.LuIcon,{icon:re})})})}),t.jsx("div",{className:"max-h-full w-full grow overflow-hidden p-4",children:t.jsx("video",{className:"size-full",ref:h,muted:!0,playsInline:!0})})]})});mt.displayName="ScannerInternal";const gt=d.memo(i=>{const{children:n,wasmUrl:e}=i,[r,o]=d.useState(null),s=d.useCallback(()=>{o(null)},[]),l=d.useCallback(h=>{o(h(s))},[s]),f=d.useCallback(()=>{r&&(r.onClose&&r.onClose(),s())},[s,r]),c=d.useMemo(()=>({wasmUrl:e,openScanner:l}),[e,l]);return t.jsxs(an,{value:c,children:[n,r&&t.jsx(mi,{open:!0,onOpenChange:f,...r})]})});gt.displayName="ScannerProvider";const sn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),[h,p]=d.useState(!1),m=d.useCallback(S=>{const v=S.target.value;l(v)},[l]),g=d.useCallback(()=>{s()},[s]),V=d.useCallback(S=>{l(S.rawValue.trim()),s(),p(!1)},[l,s]),F=d.useCallback(()=>{p(!0)},[]),w=d.useCallback(()=>{p(!1),s()},[s]);return t.jsxs(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:[t.jsx(a.TextArea,{className:"field-sizing-content w-full",accentColor:"base",variant:"surface",size:e,id:n.identifier,name:o,value:r??"",placeholder:"Enter a qr or barcode",onChange:m,onBlur:g,disabled:c}),t.jsxs(a.Button,{onClick:F,className:"w-max",type:"button",variant:"soft",size:e,accentColor:"base",disabled:c,children:[t.jsx(a.LuIcon,{icon:_o}),"Scan"]}),t.jsx(mi,{open:h,onDecodeResult:V,onOpenChange:w})]})});sn.displayName="ScanFieldInput";class qe extends k{constructor(e){super(e);C(this,"type","qr")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new qe({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){return new qe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(sn,{field:this})}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}areValuesEqual(e,r){return e===r}blankSerializedValue(){return""}areSerializedValuesEqual(e,r){return e===r}}const ln=500,dn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{const V=g.target.value;l(V)},[l]),p=d.useCallback(()=>{s()},[s]),m=d.useCallback(g=>{g.key==="Enter"&&g.preventDefault()},[]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.Input.Root,{accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{id:n.identifier,className:"truncate",name:o,value:r??"",type:"text",placeholder:n.placeholder,onChange:h,onBlur:p,disabled:c,onKeyDown:m})})})});dn.displayName="StringFieldInput";class Se extends Hi{constructor(e){const{...r}=e,o=e.maxLength?Math.min(ln,e.maxLength):ln,s=e.minLength?Math.min(e.minLength,o):void 0;super({...r,maxLength:o,minLength:s});C(this,"type","string")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new Se({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){const{maximum_length:r,minimum_length:o,...s}=e;return new Se({...s,maxLength:r,minLength:o,placeholder:"Enter a short description"})}render(){return t.jsx(dn,{field:this})}}const cn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{const g=m.target.value;l(g)},[l]),p=d.useCallback(()=>{s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.TextArea,{id:n.identifier,value:r??"",name:o,onChange:h,onBlur:p,className:"field-sizing-content min-h-12",placeholder:n.placeholder,resize:"vertical",accentColor:"base",variant:"surface",size:e,disabled:c})})});cn.displayName="TextFieldInput";class ze extends Hi{constructor(e){const r=e.maxLength?Math.min(je,e.maxLength):je,o=e.minLength?Math.min(e.minLength,r):void 0;super({...e,maxLength:r,minLength:o});C(this,"type","text")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new ze({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){const{maximum_length:r,minimum_length:o,...s}=e;return new ze({...s,maxLength:r,minLength:o,placeholder:"Enter a description"})}render(){return t.jsx(cn,{field:this})}}const un=Go(),Ct=new Set(un);function Go(i=!0){const n=new Set;for(let e=-12;e<=14;e++){const r=e>=0?"+":"-",o=Math.abs(e).toString().padStart(2,"0");n.add(`${r}${o}:00`)}if(i){const e=[-12.5,-9.5,-3.5,3.5,4.5,5.5,6.5,9.5,10.5,12.5];for(const r of e){const o=r>=0?"+":"-",s=Math.floor(Math.abs(r)).toString().padStart(2,"0");n.add(`${o}${s}:30`)}}return Array.from(n).sort((e,r)=>Vt(e)-Vt(r))}function Vt(i){const n=i[0]==="+"?1:-1,e=Number(i.slice(1,3)),r=Number(i.slice(4,6));return n*(e*60+r)}const ko="+00:00",Ho=/^T([01]\d|2[0-3]):([0-5]\d):00([+-]\d{2}:\d{2})$/,gi=i=>typeof i=="string"&&Ct.has(i),yt=()=>{const i=-new Date().getTimezoneOffset(),n=i>=0?"+":"-",e=Math.abs(i),r=Math.floor(e/60),o=e%60,s=`${n}${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`;return gi(s)?s:ko};function vt(i){const n=/^([+-])(\d{2}):(\d{2})$/.exec(i);if(!n)throw new Error(`Invalid UTC offset: ${i}`);return(n[1]==="+"?1:-1)*(Number(n[2])*60+Number(n[3]))}const Ue=i=>{const n=Ho.exec(i);if(!n)return null;const e=n[3];return gi(e)?{hours:Number(n[1]),minutes:Number(n[2]),utcOffset:e}:null},E=i=>typeof i=="string"&&Ue(i)!==null,hn=(i,n,e=yt())=>{if(!Number.isInteger(i)||i<0||i>23)throw new Error(`Invalid hour: ${i}`);if(!Number.isInteger(n)||n<0||n>59)throw new Error(`Invalid minute: ${n}`);if(!gi(e))throw new Error("Unsupported UTC offset");const r=i.toString().padStart(2,"0"),o=n.toString().padStart(2,"0");return`T${r}:${o}:00${e}`},Ci=i=>`UTC${i}`,se=i=>{const n=Ue(i);if(!n)throw new Error(`Invalid time value: ${i}`);return(n.hours*60+n.minutes-vt(n.utcOffset)+1440)%1440},Vi=(i,n=!0)=>{const e=Ue(i);if(!e)throw new Error(`Invalid time value: ${i}`);const r=(e.hours%12||12).toString().padStart(2,"0"),o=e.minutes.toString().padStart(2,"0"),s=e.hours>=12?"PM":"AM",l=`${r}:${o} ${s}`;return n?`${l} ${Ci(e.utcOffset)}`:l},Ge=i=>typeof i=="object"&&(E(i.from)||E(i.to)),fn=(i,n)=>{const e=se(i),r=n.from?se(n.from):null,o=n.to?se(n.to):null;return r===null&&o===null?!0:r===null?e<=o:o===null?e>=r:r<=o?e>=r&&e<=o:e>=r||e<=o},yi=d.memo(i=>{const{value:n,onChange:e,onBlur:r,disabled:o,size:s="md",id:l,name:f,compact:c=!1}=i,h=n?Ue(n):null,p=h?`${h.hours.toString().padStart(2,"0")}:${h.minutes.toString().padStart(2,"0")}`:"",m=d.useCallback(F=>{const w=F.target.value;if(!w){e(null);return}const[S,v]=w.split(":").map(Number);e(hn(S,v,h==null?void 0:h.utcOffset))},[e,h==null?void 0:h.utcOffset]),g=d.useCallback(F=>{h&&(e(hn(h.hours,h.minutes,F)),r==null||r())},[r,e,h]),V=d.useCallback(F=>{F||r==null||r()},[r]);return t.jsxs("div",{className:"flex min-w-0 gap-2",children:[t.jsx(a.Input.Root,{className:"min-w-0 grow",accentColor:"base",variant:"surface",size:s,children:t.jsx(a.Input.Field,{id:l,name:f,className:R.cx("[&::-webkit-calendar-picker-indicator]:invert-40 dark:[&::-webkit-calendar-picker-indicator]:invert-60",{"[&::-webkit-datetime-edit]:opacity-60":!n}),type:"time",step:60,value:p,onChange:m,onBlur:r,disabled:o})}),t.jsxs(a.Menu.Root,{align:"end",onOpenChange:V,children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsxs(a.Button,{type:"button",className:c?"!justify-between":"min-w-32 !justify-between",accentColor:"base",variant:"surface",size:s,disabled:o||!h,children:[t.jsx(a.Text,{className:"truncate",highContrast:!!h,children:h?Ci(h.utcOffset):"UTC offset"}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Menu.Content,{size:s,children:t.jsx(a.Menu.Scroll,{children:t.jsx(a.Menu.SelectGroup,{required:!0,value:h==null?void 0:h.utcOffset,onValueChange:g,children:un.map(F=>t.jsxs(a.Menu.SelectItem,{value:F,children:[t.jsx(a.Menu.SelectedIndicator,{children:t.jsx(a.LuIcon,{icon:W})}),Ci(F)]},F))})})})]})]})});yi.displayName="TimeFieldControl";const pn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n});return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(yi,{id:n.identifier,name:o,size:e,value:r,onChange:l,onBlur:s,disabled:c})})});pn.displayName="TimeFieldInput";class Oe extends k{constructor(e){super(e);C(this,"type","time")}static deserialize(e){return new Oe(e)}getOptions(){return super.getOptions()}duplicate(e){return new Oe({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(pn,{field:this})}isSerializedValue(e){return e===null||E(e)}isValue(e){return e===null||E(e)}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return e===r}}const mn=d.memo(i=>{var S;const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useRef(null),p=d.useCallback(()=>{var v;(v=h.current)==null||v.click()},[]),m=d.useCallback(()=>{if(!h.current)return;const v=h.current.files;if(!v){s();return}const I=Array.from(v).map(z=>ae.from(N.v4(),z)),q=[...r,...I];l(q),s()},[s,l,r]),g=d.useCallback(v=>{const I=r.filter(({uuid:q})=>q!==v.uuid);l(I),s()},[r,l,s]);d.useEffect(()=>{if(!h.current)return;const v=new AbortController;return h.current.addEventListener("cancel",()=>{s()},{signal:v.signal}),()=>{v.abort()}},[s,r]);const w=n.maxFiles>1?"Select files":"Select a file";return t.jsxs(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:[t.jsxs(a.Button,{className:"w-max",size:e,variant:"surface",accentColor:"base",onClick:p,type:"button",disabled:c,children:[t.jsx(a.LuIcon,{icon:Ei}),w]}),t.jsx("input",{id:n.identifier,name:o,type:"file",ref:h,accept:(S=n.extensions)==null?void 0:S.join(","),multiple:n.maxFiles>1,className:"hidden",onChange:m,value:""}),r.length>0&&t.jsx("div",{className:"mt-1 flex h-max flex-col gap-2",children:r.map(v=>t.jsx(en,{size:e,fileOrPromise:v,onRemove:g,disabled:c},v.uuid))})]})});mn.displayName="UploadFieldInput";class we extends k{constructor(e){const{extensions:r,maximum_files:o,maximum_size:s,...l}=e;super(l);C(this,"type","upload");C(this,"extensions");C(this,"maxFileSize");C(this,"maxFiles");this.maxFileSize=typeof s=="number"?s:void 0,this.maxFiles=Math.max(typeof o=="number"?o:1,1),this.extensions=r}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"How many files can be uploaded?",description:"By default, only one file can be uploaded.",required:!1,minimum:1,maximum:10,identifier:`${r}maximum_files`,integers:!0}),showDirectly:!1},{field:new H({label:"What is the maximum size of each file?",description:`Maximum file size in megabytes (between 1MB–${Te}MB).`,required:!1,identifier:`${r}maximum_size`,minimum:1,maximum:Te,integers:!0}),showDirectly:!1},{field:new te({label:"Accepted file types",description:"Types of allowed files to upload. If left blank, all files will be accepted.",required:!1,identifier:`${r}extensions`,options:[{value:"image/*",label:"Images"},{value:"audio/*",label:"Audio files"},{value:"video/*",label:"Videos"},{value:"text/*",label:"Text files"},{value:"application/*",label:"Application files (includes PDFs and Word documents)"}]}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.maxFileSize??Te,o=r*1e3*1e3,s=this.maxFiles||1;return e.push(l=>{if(l.some(f=>f instanceof ae&&f.size>o))return`Files must be at most ${r}MB.`}),e.push(l=>{if(l.length>s)return`You can only upload ${s} files.`}),e}serialize(){return{...super.serialize(),extensions:this.extensions,maximum_size:this.maxFileSize,maximum_files:this.maxFiles}}getOptions(){return{...super.getOptions(),extensions:this.extensions,maximum_size:this.maxFileSize,maximum_files:this.maxFiles}}duplicate(e){return new we({...this.getOptions(),identifier:e})}setOptions(e){const{extensions:r,maximum_files:o,maximum_size:s,...l}=e;this.maxFileSize=typeof s=="number"?s:this.maxFileSize,this.maxFiles=typeof o=="number"?o:this.maxFiles,this.extensions=r,super.setOptions(l)}static deserialize(e){return new we(e)}serializeValue(e){return[]}deserializeValue(e){return[]}render(){return t.jsx(mn,{field:this})}isSerializedValue(e){return Array.isArray(e)&&e.length===0}isValue(e){return Array.isArray(e)?e.every(r=>r instanceof Ce||r instanceof ae):!1}areValuesEqual(e,r){return pi(e,r)}blankValue(){return[]}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){return e.length===r.length}}const gn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(V=>{const F=V.target.value;F!==""&&!URL.canParse(F)||l(F!==""?new URL(F):null)},[l]),p=d.useCallback(()=>{s()},[s]),m=d.useCallback(V=>{V.key==="Enter"&&V.preventDefault()},[]),g=d.useCallback(()=>{r!==null&&window.open(r,"_blank","noopener,noreferrer")},[r]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs("div",{className:"flex w-full gap-2",children:[t.jsx(a.Input.Root,{className:"grow",accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{id:n.identifier,className:"truncate",name:o,value:r?r.toString():"",type:"url",inputMode:"url",placeholder:n.placeholder,onChange:h,onBlur:p,disabled:c,onKeyDown:m})}),t.jsx(a.IconButton,{size:e,variant:"soft",accentColor:"base",type:"button",disabled:r===null,onClick:g,children:t.jsx(a.LuIcon,{icon:Fo})})]})})});gn.displayName="URLFieldInput";class _e extends k{constructor(e){const{placeholder:r="https://example.com",...o}=e;super(o);C(this,"type","url");C(this,"placeholder");this.placeholder=r}serialize(){return{...super.serialize(),placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new _e({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:r,...o}=e;this.placeholder=r??this.placeholder,super.setOptions(o)}static deserialize(e){return new _e(e)}serializeValue(e){return(e==null?void 0:e.toString())??null}deserializeValue(e){return e===null?null:new URL(e)}isSerializedValue(e){return e===null?!0:typeof e!="string"?!1:URL.canParse(e)}isValue(e){return e===null||e instanceof URL}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return(e==null?void 0:e.toString())===(r==null?void 0:r.toString())}render(){return t.jsx(gn,{field:this})}}const Cn={date:xe,time:Oe,number:H,boolean:fe,select:oe,string:Se,url:_e,text:ze,upload:we,qr:qe,"multi-string":he,"multi-select":te,radio:ye,"checkbox-list":pe,"pass-fail":Ve,otp:me,rating:ve},St=Object.keys(Cn),T={"checkbox-list":{description:"Allows the user to select a multiple options from a list.",group:O.Selection,icon:wo,name:"Checkbox list"},"multi-select":{description:"Allows the user to select a multiple options from a list of options.",group:O.Selection,icon:Io,name:"Multi-select"},"multi-string":{description:"Allows the user to provide multiple unique strings.",group:O.Text,icon:Oo,name:"Multi-string"},"pass-fail":{description:"Track pass, fail, or N/A outcome.",group:O.Assessment,icon:zo,name:"Pass - Fail"},boolean:{description:"Perfect for both optional and required yes/no questions.",group:O.Selection,icon:Ao,name:"Checkbox"},date:{description:"Allows specifying a date.",group:O.Temporal,icon:Co,name:"Date"},time:{description:"Allows specifying a time and UTC offset.",group:O.Temporal,icon:Do,name:"Time"},number:{description:"Allows specifying a number within a given range.",group:O.Numeric,icon:Mo,name:"Number"},otp:{description:"Allows specifying a number within a given range.",group:O.Verification,icon:To,name:"OTP"},qr:{description:"Used for scanning/reading QR and barcodes.",group:O.Capture,icon:Lo,name:"Scan"},radio:{description:"Allows the user to select a single option from a list of options.",group:O.Selection,icon:yo,name:"Option list"},rating:{description:"Allows users to select a rating value.",group:O.Assessment,icon:tt,name:"Rating"},select:{description:"Allows the user to select a single option from a list of options.",group:O.Selection,icon:qo,name:"Dropdown"},string:{description:"Short text fields can hold up to 500 characters on a single line.",group:O.Text,icon:$o,name:"Short Text"},text:{description:"Paragraph fields can hold up to 10000 characters and can have multiple lines.",group:O.Text,icon:po,name:"Paragraph"},upload:{description:"Allows a file to be uploaded.",group:O.Capture,icon:Ei,name:"Upload"},url:{description:"Allows users to enter a URL.",group:O.Text,icon:xo,name:"URL"}},zt={[O.Assessment]:{name:"Assessment"},[O.Capture]:{name:"Capture"},[O.Numeric]:{name:"Numeric"},[O.Selection]:{name:"Selection"},[O.Temporal]:{name:"Temporal"},[O.Text]:{name:"Text"},[O.Verification]:{name:"Verification"}},Te=50,wt=Te*1e3,Ft=wt*1e3,$="Unlabelled",Vn="Unlabelled";class x{constructor(n){C(this,"id");C(this,"label");C(this,"getApplyFn");C(this,"serialize");C(this,"deserialize");const{id:e,getApplyFn:r,label:o,serialize:s,deserialize:l}=n;this.id=e,this.getApplyFn=r,this.label=o,this.serialize=s,this.deserialize=l}static create(n){return new x(n)}}const bt=x.create({id:"nullable-boolean-equals",label:"is",getApplyFn:i=>n=>n===i,serialize:i=>i,deserialize:i=>i}),Nt=x.create({id:"nullable-boolean-not-equals",label:"is not",getApplyFn:i=>n=>n!==i,serialize:i=>i,deserialize:i=>i}),Mt=x.create({id:"date-equals",getApplyFn:i=>n=>n.getTime()===i.getTime(),label:"is",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),xt=x.create({id:"date-not-equals",getApplyFn:i=>n=>n.getTime()!==i.getTime(),label:"is not",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),It=x.create({id:"date-before",getApplyFn:i=>n=>n.getTime()<i.getTime(),label:"before",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),qt=x.create({id:"date-after",label:"after",getApplyFn:i=>n=>n.getTime()>i.getTime(),serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),Ot=x.create({id:"date-range-in",label:"in between",getApplyFn:i=>n=>!(i!=null&&i.from&&i.from.getTime()>n.getTime()||i!=null&&i.to&&i.to.getTime()<n.getTime()),serialize:i=>{var n,e;return{from:((n=i.from)==null?void 0:n.toISOString())??null,to:((e=i.to)==null?void 0:e.toISOString())??null}},deserialize:i=>({from:i.from?new Date(i.from):void 0,to:i.to?new Date(i.to):void 0})}),_t=x.create({id:"date-range-not-in",label:"not in between",getApplyFn:i=>n=>!!(i!=null&&i.from&&i.from.getTime()>n.getTime()||i!=null&&i.to&&i.to.getTime()<n.getTime()),serialize:i=>{var n,e;return{from:((n=i.from)==null?void 0:n.toISOString())??null,to:((e=i.to)==null?void 0:e.toISOString())??null}},deserialize:i=>({from:i.from?new Date(i.from):void 0,to:i.to?new Date(i.to):void 0})}),Tt=x.create({id:"has-files",label:"is",getApplyFn:i=>n=>n.length>0,serialize:i=>i,deserialize:i=>i}),Lt=x.create({id:"does-not-have-files",label:"is not",getApplyFn:i=>n=>n.length===0,serialize:i=>i,deserialize:i=>i}),yn=x.create({id:"number-equals",getApplyFn:i=>n=>n===i,label:"is",serialize:i=>i,deserialize:i=>i}),vn=x.create({id:"number-not-equals",getApplyFn:i=>n=>n!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Sn=x.create({id:"number-less-than",getApplyFn:i=>n=>n<i,label:"is less than",serialize:i=>i,deserialize:i=>i}),zn=x.create({id:"number-less-than-or-equals",getApplyFn:i=>n=>n<=i,label:"is less than or equal to",serialize:i=>i,deserialize:i=>i}),wn=x.create({id:"number-greater-than",getApplyFn:i=>n=>n>i,label:"is greater than",serialize:i=>i,deserialize:i=>i}),Fn=x.create({id:"number-greater-than-or-equals",getApplyFn:i=>n=>n>=i,label:"is greater than or equal to",serialize:i=>i,deserialize:i=>i}),bn=x.create({id:"number-range-in",getApplyFn:i=>n=>!(i.to&&n>i.to||i.from&&n<i.from),label:"is between",serialize:i=>i,deserialize:i=>i}),Nn=x.create({id:"number-range-not-in",getApplyFn:i=>n=>!!(i.to&&n>i.to||i.from&&n<i.from),label:"is not between",serialize:i=>i,deserialize:i=>i}),Bt=x.create({id:"pass-fail-equals",getApplyFn:i=>n=>n===i,label:"is",serialize:i=>i,deserialize:i=>i}),At=x.create({id:"pass-fail-not-equals",getApplyFn:i=>n=>n!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Et=x.create({id:"pass-fail-array-includes",getApplyFn:i=>{const n=new Set(i);return e=>n.has(e)},label:"is any of",serialize:i=>i,deserialize:i=>i}),$t=x.create({id:"pass-fail-array-excludes",getApplyFn:i=>{const n=new Set(i);return e=>!n.has(e)},label:"is none of",serialize:i=>i,deserialize:i=>i}),le=x.create({id:"nullable-string-equals",getApplyFn:i=>n=>n===i,label:"is",serialize:i=>i,deserialize:i=>i}),de=x.create({id:"nullable-string-not-equals",getApplyFn:i=>n=>n!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Le=x.create({id:"string-includes",getApplyFn:i=>n=>n.includes(i),label:"includes",serialize:i=>i,deserialize:i=>i}),Be=x.create({id:"string-excludes",getApplyFn:i=>n=>!n.includes(i),label:"does not include",serialize:i=>i,deserialize:i=>i}),Mn=x.create({id:"string-array-includes",getApplyFn:i=>{const n=new Set(i);return e=>n.has(e)},label:"is any of",serialize:i=>i,deserialize:i=>i}),xn=x.create({id:"string-array-excludes",getApplyFn:i=>{const n=new Set(i);return e=>!n.has(e)},label:"is none of",serialize:i=>i,deserialize:i=>i}),vi=x.create({id:"string-array-every",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.isSubsetOf(r)}},label:"has all of",serialize:i=>i,deserialize:i=>i}),Si=x.create({id:"string-array-some",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return!n.isDisjointFrom(r)}},label:"has any of",serialize:i=>i,deserialize:i=>i}),zi=x.create({id:"string-array-none",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.isDisjointFrom(r)}},label:"has none of",serialize:i=>i,deserialize:i=>i}),wi=x.create({id:"string-array-equals",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.size===r.size&&r.isSubsetOf(n)}},label:"is",serialize:i=>i,deserialize:i=>i}),Fi=x.create({id:"string-array-not-equals",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.size!==r.size||!r.isSubsetOf(n)}},label:"is not",serialize:i=>i,deserialize:i=>i}),Dt=x.create({id:"time-equals",label:"is",getApplyFn:i=>n=>n===i,serialize:i=>i,deserialize:i=>i}),Pt=x.create({id:"time-not-equals",label:"is not",getApplyFn:i=>n=>n!==i,serialize:i=>i,deserialize:i=>i}),jt=x.create({id:"time-before",label:"before",getApplyFn:i=>n=>se(n)<se(i),serialize:i=>i,deserialize:i=>i}),Ut=x.create({id:"time-after",label:"after",getApplyFn:i=>n=>se(n)>se(i),serialize:i=>i,deserialize:i=>i}),Gt=x.create({id:"time-range-in",label:"in between",getApplyFn:i=>n=>fn(n,i),serialize:i=>i,deserialize:i=>i}),kt=x.create({id:"time-range-not-in",label:"not in between",getApplyFn:i=>n=>!fn(n,i),serialize:i=>i,deserialize:i=>i}),y=i=>i;class P extends De{constructor(e){const{id:r,field:o,conditionValue:s,conditionModifier:l}=e;super();C(this,"id");C(this,"conditionValue");C(this,"conditionModifier");C(this,"field");C(this,"getConditionValue",()=>this.conditionValue);C(this,"setConditionValue",e=>{const r=this.modifiers[this.conditionModifier];e!==void 0&&!r.isConditionValueValid(e)||(this.conditionValue=e,this.notify(this))});C(this,"getConditionModifier",()=>this.conditionModifier);C(this,"setConditionModifier",e=>{const r=this.modifiers[e],o=this.getConditionValue();o&&!r.isConditionValueValid(o)&&(this.conditionValue=void 0),this.conditionModifier=e,this.notify(this)});C(this,"getConditionModifiers",()=>Object.entries(this.modifiers));C(this,"accessorFn",e=>e[this.field.identifier]);C(this,"getApplyFn",()=>{const e=this.modifiers[this.conditionModifier],r=this.getConditionValue(),o=r!==void 0&&e.isConditionValueValid(r),s=o?e.modifier.getApplyFn(r):null;return l=>{if(!o)return!0;const f=this.transformValue(l);return e.isValueValid(f)?s(f):!1}});this.id=r,this.field=o,this.conditionValue=s,this.conditionModifier=l}serialize(){return{id:this.id,type:this.field.type,fieldId:this.field.identifier,conditionValue:this.conditionValue!==void 0?this.modifiers[this.conditionModifier].modifier.serialize(this.conditionValue):void 0,conditionModifier:this.conditionModifier}}transformValue(e){return e}}const Ht=d.memo,Fe=Ht(function(i){const{ref:n,children:e,...r}=i,o=d.useCallback(s=>typeof e=="function"?t.jsxs(t.Fragment,{children:[e(s),t.jsx(a.Menu.SelectedIndicator,{className:"ml-[auto]",children:t.jsx(a.LuIcon,{icon:W})})]}):t.jsxs(t.Fragment,{children:[e,t.jsx(a.Menu.SelectedIndicator,{className:"ml-[auto]",children:t.jsx(a.LuIcon,{icon:W})})]}),[e]);return t.jsx(a.Menu.SelectItem,{ref:n,...r,children:o})}),Jt=Ht(function(i){const{ref:n,children:e,...r}=i,o=d.useCallback(s=>typeof e=="function"?t.jsxs(t.Fragment,{children:[e(s),t.jsx(a.Menu.SelectedIndicator,{className:"ml-auto",children:t.jsx(a.LuIcon,{icon:W})})]}):t.jsxs(t.Fragment,{children:[e,t.jsx(a.Menu.SelectedIndicator,{className:"ml-auto",children:t.jsx(a.LuIcon,{icon:W})})]}),[e]);return t.jsx(a.Menu.MultiSelectItem,{ref:n,...r,children:o})}),In=d.memo(i=>{const{ref:n,children:e,...r}=i,o=d.useCallback(s=>typeof e=="function"?t.jsxs(t.Fragment,{children:[e(s),t.jsx(a.Menu.CheckboxItemIndicator,{className:"ml-[auto]",children:l=>l?t.jsx(a.LuIcon,{icon:ui}):t.jsx(a.LuIcon,{icon:W})})]}):t.jsxs(t.Fragment,{children:[e,t.jsx(a.Menu.CheckboxItemIndicator,{className:"ml-[auto]",children:l=>l?t.jsx(a.LuIcon,{icon:ui}):t.jsx(a.LuIcon,{icon:W})})]}),[e]);return t.jsx(a.Menu.SelectAllItem,{ref:n,...r,children:o})});In.displayName="SelectAllItemTemplate";const U=i=>{const{children:n,condition:e,size:r="sm",variant:o,accentColor:s,radius:l}=i,f=d.useCallback(c=>{e.setConditionModifier(c)},[e]);return t.jsxs(a.Menu.Root,{align:"start",children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{size:r,variant:o,radius:l,accentColor:s,children:t.jsx(a.Menu.SelectGroup,{required:!0,value:e.getConditionModifier(),onValueChange:f,children:e.getConditionModifiers().map(([c,h])=>t.jsx(Fe,{value:c,children:h.modifier.label},c))})})]})},bi=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,align:f,accentColor:c="base",...h}=i;return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,align:f,children:t.jsx(a.DayPicker,{size:l,accentColor:c,...h})})]})});bi.displayName="DayPickerPopover";const Wt=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,accentColor:f="base",values:c,onValuesChange:h,placeholder:p="Enter text",...m}=i,[g,V]=d.useState(""),F=d.useCallback(I=>{V(I.target.value)},[]),w=d.useCallback(I=>{I.key==="Enter"&&(I.preventDefault(),I.stopPropagation(),h([...c,g]),V(""))},[g,h,c]),S=d.useCallback(()=>{h([...c,g]),V("")},[g,h,c]),v=d.useCallback(I=>{const q=[...c];q.splice(I,1),h(q)},[h,c]);return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,accentColor:f,...m,children:t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs("div",{className:"flex gap-2",children:[t.jsx(a.Input.Root,{className:"grow",accentColor:"base",variant:"outline",size:"sm",children:t.jsx(a.Input.Field,{value:g,onChange:F,onKeyDown:w,placeholder:p,...m})}),t.jsx(a.IconButton,{size:"sm",accentColor:"base",variant:"soft",type:"button",onClick:S,children:t.jsx(a.LuIcon,{icon:Z})})]}),c.length>0&&t.jsx("div",{className:"flex flex-col gap-1",children:c.map((I,q)=>t.jsxs(a.Badge,{className:"flex items-center justify-between gap-2",accentColor:"base",size:"sm",variant:"soft",children:[t.jsx("span",{className:"truncate",children:I}),t.jsx(a.IconButton,{size:"xs",variant:"ghost",type:"button",accentColor:"base",onClick:()=>{v(q)},children:t.jsx(a.LuIcon,{icon:re})})]},`${I}-${q}`))})]})})]})});Wt.displayName="NumberInputPopover";const be=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,accentColor:f="base",value:c,onValueChange:h,placeholder:p="Enter a number",...m}=i,[g,V]=d.useState(null);d.useEffect(()=>{c!==void 0&&V(c)},[c]);const F=d.useCallback(S=>{const v=S.target.valueAsNumber;V(isNaN(v)?null:v)},[]),w=d.useCallback(S=>{const v=S.target.valueAsNumber;h==null||h(isNaN(v)?null:v)},[h]);return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,...m,children:t.jsx(a.Input.Root,{size:l,accentColor:f,children:t.jsx(a.Input.Field,{placeholder:p,type:"number",value:g??"",onChange:F,onBlur:w})})})]})});be.displayName="NumberInputPopover";const j=i=>{const{condition:n,onClick:e,...r}=i,o=d.useCallback(()=>{e(n)},[n,e]);return t.jsx(a.IconButton,{onClick:o,...r,children:t.jsx(a.LuIcon,{icon:re})})};j.displayName="RemoveConditionButton";const ke=d.memo(i=>{const{ref:n,selectFieldOptions:e,...r}=i,o=d.useMemo(()=>e.map(s=>typeof s=="string"?{value:s,label:s}:s),[e]);return t.jsxs(a.Menu.MultiSelectGroup,{ref:n,...r,children:[t.jsx(In,{children:"Select all"}),o.map(s=>t.jsx(Jt,{value:s.value,children:t.jsx("span",{className:"truncate",children:s.label})},s.value))]})});ke.displayName="SelectFieldOptionMultiSelectGroup";const qn=d.memo(i=>{const{ref:n,selectFieldOptions:e,...r}=i,o=d.useMemo(()=>e.map(s=>typeof s=="string"?{value:s,label:s}:s),[e]);return t.jsx(a.Menu.SelectGroup,{ref:n,...r,children:o.map(s=>t.jsx(Fe,{value:s.value,children:t.jsx("span",{className:"truncate",children:s.label})},s.value))})});qn.displayName="SelectFieldOptionSelectGroup";const Ae=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,accentColor:f="base",value:c,onValueChange:h,placeholder:p="Enter text",...m}=i,[g,V]=d.useState(""),F=d.useCallback(S=>{V(S.target.value)},[]),w=d.useCallback(S=>{const v=S.target.value;h==null||h(v)},[h]);return d.useEffect(()=>{c&&V(c)},[c]),t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,...m,children:t.jsx(a.Input.Root,{size:l,accentColor:f,children:t.jsx(a.Input.Field,{placeholder:p,type:"text",value:g,onChange:F,onBlur:w})})})]})});Ae.displayName="TextInputPopover";const Ni=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l="sm",accentColor:f="base",value:c,onValueChange:h,...p}=i;return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,accentColor:f,...p,children:t.jsx(yi,{compact:!0,size:l,value:c,onChange:h})})]})});Ni.displayName="TimeInputPopover";const Xt=i=>{const{condition:n,onRemove:e}=i,r=n.getConditionValue(),o=n.getConditionModifier(),s=()=>{switch(r){case void 0:return"...";case!0:return"true";case!1:return"false";case null:return"empty"}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[n.field.type].icon}),t.jsx("span",{className:"truncate",children:n.field.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[o].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:s()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsxs(a.Menu.SelectGroup,{required:!0,value:r,onValueChange:n.setConditionValue,children:[t.jsx(Fe,{value:!0,children:"true"}),t.jsx(Fe,{value:!1,children:"false"})]})})]}),t.jsx(j,{condition:n,onClick:e})]})},Kt={equals:y({modifier:bt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Nt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class He extends P{constructor(e){super(e);C(this,"modifiers",Kt)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Kt[s];let c;return o!==void 0&&(c=f.modifier.deserialize(o)),new He({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Xt,{condition:this,...e},this.id)}}const Ee=[],Yt=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{c.length>0?n.setConditionValue(c):n.setConditionValue(void 0)},[n]),f=()=>{if(o===void 0)return"...";if(o===null)return"empty";switch(o.length){case 0:return"...";default:return`${o.length} options`}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"soft",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"soft",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"truncate",children:f()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{values:o??Ee,selectFieldOptions:n.field.options,onValuesChange:l})})]}),t.jsx(j,{condition:n,onClick:e})]})},Zt={equals:y({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:y({modifier:vi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:y({modifier:Si,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:y({modifier:zi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Je extends P{constructor(e){super(e);C(this,"modifiers",Zt)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Zt[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Je({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Yt,{condition:this,...e},this.id)}}class Mi extends De{constructor(e){super();C(this,"conditions");C(this,"conditionObserver",()=>{this.conditions=[...this.conditions],this.notify(this)});C(this,"initConditions",e=>{for(const r of e)r.observe(this.conditionObserver);return e});this.conditions=this.initConditions(e)}getConditions(){return this.conditions}addCondition(e){this.conditions=this.initConditions([...this.conditions,e]),this.notify(this)}addConditions(e){this.conditions=this.initConditions([...this.conditions,...e]),this.notify(this)}removeCondition(e){this.conditions=this.initConditions(this.conditions.filter(r=>r.id!==e.id)),this.notify(this)}removeConditions(e){const r=new Set(e.map(o=>o.id));this.conditions=this.initConditions(this.conditions.filter(o=>!r.has(o.id))),this.notify(this)}applyConditions(e){return this.conditions.length===0?!0:this.conditions.map(o=>[o.getApplyFn(),o.accessorFn]).every(([o,s])=>o(s(e)))}}const Jo=(i,n)=>d.useMemo(()=>{const e=new Mi(i);return e.observe(r=>n(r.getConditions())),e},[i,n]),Qt=i=>{const{condition:n,onRemove:e}=i,r=n.getConditionValue(),o=n.getConditionModifier(),s=()=>{var l,f;switch(o){case"equals":case"notEquals":{const c=n.modifiers.equals,h=r!==void 0&&c.isConditionValueValid(r)?r:void 0;return t.jsx(bi,{required:!1,size:"sm",mode:"single",selected:h??void 0,onSelect:p=>n.setConditionValue(p),children:t.jsx(a.Button,{type:"button",className:"truncate",children:h!==void 0?(h==null?void 0:h.toLocaleDateString())??"empty":"..."})})}case"before":case"after":{const c=n.modifiers.after,h=r!==void 0&&c.isConditionValueValid(r)?r:void 0;return t.jsx(bi,{required:!0,size:"sm",mode:"single",selected:h,onSelect:n.setConditionValue,children:t.jsx(a.Button,{type:"button",className:"truncate",children:h?h.toLocaleDateString():"..."})})}case"in":case"notIn":{const c=n.modifiers.in,h=r!==void 0&&c.isConditionValueValid(r)?r:void 0;return t.jsx(bi,{required:!0,mode:"range",size:"sm",selected:h,onSelect:n.setConditionValue,children:t.jsx(a.Button,{className:"truncate",children:h?`${(l=h.from)==null?void 0:l.toLocaleDateString()} - ${(f=h.to)==null?void 0:f.toLocaleDateString()}`:"..."})})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[n.field.type].icon}),t.jsx("span",{className:"truncate",children:n.field.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[o].modifier.label})}),s(),t.jsx(j,{condition:n,onClick:e})]})},Rt={equals:y({modifier:Mt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),notEquals:y({modifier:xt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),before:y({modifier:It,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),after:y({modifier:qt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),in:y({modifier:Ot,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>"to"in(i??{})&&"from"in(i??{}),isSerializedValueValid:i=>typeof i=="object"&&"to"in i&&"from"in i}),notIn:y({modifier:_t,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>"to"in(i??{})&&"from"in(i??{}),isSerializedValueValid:i=>typeof i=="object"&&"to"in i&&"from"in i})};class We extends P{constructor(e){super(e);C(this,"modifiers",Rt)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Rt[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new We({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Qt,{condition:this,...e},this.id)}}const er=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{c.length>0?n.setConditionValue(c):n.setConditionValue(void 0)},[n]),f=()=>{if(o===void 0)return"...";if(o===null)return"empty";switch(o.length){case 0:return"...";default:return`${o.length} options`}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"truncate",children:f()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{values:o??Ee,selectFieldOptions:r.options,onValuesChange:l})})]}),t.jsx(j,{condition:n,onClick:e})]})},ir={equals:y({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:y({modifier:vi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:y({modifier:Si,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:y({modifier:zi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Xe extends P{constructor(e){super(e);C(this,"modifiers",ir)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=ir[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Xe({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(er,{condition:this,...e},this.id)}}const nr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{n.setConditionValue(c.length>0?c:void 0)},[n]),f=()=>{if(o===void 0)return"...";if(o===null)return"empty";switch(o.length){case 0:return"...";case 1:return o[0].toString();default:return`${o.length} values`}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsx(Wt,{values:o??Ee,onValuesChange:l,children:t.jsx(a.Button,{type:"button",className:"truncate",children:f()})}),t.jsx(j,{condition:n,onClick:e})]})},tr={equals:y({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:y({modifier:vi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:y({modifier:Si,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:y({modifier:zi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Ke extends P{constructor(e){super(e);C(this,"modifiers",tr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=tr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Ke({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(nr,{condition:this,...e},this.id)}}const rr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{n.setConditionValue(c??void 0)},[n]),f=()=>{switch(s){case"equals":case"greaterThanOrEquals":case"lessThanOrEquals":case"greaterThan":case"lessThan":{const c=n.modifiers.greaterThan,h=o!==void 0&&c.isConditionValueValid(o)?o:void 0;return t.jsx(be,{value:h??null,onValueChange:l,size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:h!==void 0?h??"empty":"..."})})}case"inRange":case"notInRange":{const c=n.modifiers.inRange,h=o!==void 0&&c.isConditionValueValid(o)?o:void 0;return t.jsxs(t.Fragment,{children:[t.jsx(be,{value:(h==null?void 0:h.from)??null,onValueChange:p=>{n.setConditionValue({from:p,to:(h==null?void 0:h.to)??null})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(h==null?void 0:h.from)??"..."})}),t.jsx(be,{value:(h==null?void 0:h.to)??null,onValueChange:p=>{n.setConditionValue({from:(h==null?void 0:h.from)??null,to:p})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(h==null?void 0:h.to)??"..."})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),f(),t.jsx(j,{condition:n,onClick:e})]})},or={equals:y({modifier:yn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),notEquals:y({modifier:vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThan:y({modifier:Sn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThanOrEquals:y({modifier:zn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThan:y({modifier:wn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThanOrEquals:y({modifier:Fn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),inRange:y({modifier:bn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"}),notInRange:y({modifier:Nn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"})};class Ye extends P{constructor(e){super(e);C(this,"modifiers",or)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=or[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Ye({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(rr,{condition:this,...e},this.id)}}const ar=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},sr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Ze extends P{constructor(e){super(e);C(this,"modifiers",sr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=sr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Ze({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(ar,{condition:this,...e},this.id)}}const lr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":{const f=n.modifiers.equals,c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:c!==void 0?c?ge[c].label:"empty":"..."})})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(a.Menu.SelectGroup,{required:!1,value:c,onValueChange:n.setConditionValue,children:Ie.map(h=>{const{label:p}=ge[h];return t.jsx(Fe,{value:h,children:t.jsx("span",{className:"truncate",children:p})},h)})})})]})}case"includes":case"excludes":{const f=n.modifiers.includes,c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",children:c?`${c.length} statuses`:"..."})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsxs(a.Menu.MultiSelectGroup,{values:c??Ee,onValuesChange:n.setConditionValue,children:[t.jsx(In,{children:"Select all"}),Ie.map(h=>{const{label:p,icon:m}=ge[h];return t.jsxs(Jt,{value:h,children:[t.jsx(a.LuIcon,{icon:m}),t.jsx("span",{className:"truncate",children:p})]},h)})]})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},dr={equals:y({modifier:Bt,isValueValid:i=>i!==null,isConditionValueValid:i=>typeof i=="string",isSerializedValueValid:i=>typeof i=="string"}),notEquals:y({modifier:At,isValueValid:i=>i!==null,isConditionValueValid:i=>typeof i=="string",isSerializedValueValid:i=>typeof i=="string"}),includes:y({modifier:Et,isValueValid:i=>i!==null,isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:y({modifier:$t,isValueValid:i=>i!==null,isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class Qe extends P{constructor(e){super(e);C(this,"modifiers",dr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=dr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Qe({field:r,conditionModifier:s,conditionValue:c,...l})}transformValue(e){return e.status}render(e){return t.jsx(lr,{condition:this,...e},this.id)}}const cr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useMemo(()=>r.options.map(h=>typeof h=="string"?{value:h,label:h}:h),[r.options]),f=d.useMemo(()=>{const h={};for(const p of l)h[p.value]=p.label;return h},[l]),c=()=>{switch(s){case"equals":case"notEquals":{const h=n.modifiers.equals,p=o!==void 0&&h.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:p!==void 0?p?f[p]:"empty":"..."})})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(qn,{required:!0,selectFieldOptions:r.options,value:p??void 0,onValueChange:n.setConditionValue})})]})}case"includes":case"excludes":{const h=n.modifiers.includes,p=o!==void 0&&h.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",children:p?`${p.length} options`:"..."})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{selectFieldOptions:r.options,values:p??Ee,onValuesChange:n.setConditionValue})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),c(),t.jsx(j,{condition:n,onClick:e})]})},ur={equals:y({modifier:le,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),notEquals:y({modifier:de,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),includes:y({modifier:Mn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:y({modifier:xn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class Re extends P{constructor(e){super(e);C(this,"modifiers",ur)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=ur[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Re({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(cr,{condition:this,...e},this.id)}}const hr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"greaterThanOrEquals":case"lessThanOrEquals":case"greaterThan":case"lessThan":{const f=n.modifiers[s],c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsx(be,{value:c??null,onValueChange:h=>n.setConditionValue(h??void 0),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:c!==void 0?c:"..."})})}case"inRange":case"notInRange":{const f=n.modifiers.inRange,c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsxs(t.Fragment,{children:[t.jsx(be,{value:(c==null?void 0:c.from)??null,onValueChange:h=>{n.setConditionValue({from:h,to:(c==null?void 0:c.to)??null})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(c==null?void 0:c.from)??"..."})}),t.jsx(be,{value:(c==null?void 0:c.to)??null,onValueChange:h=>{n.setConditionValue({from:(c==null?void 0:c.from)??null,to:h})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(c==null?void 0:c.to)??"..."})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},fr={equals:y({modifier:yn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),notEquals:y({modifier:vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThan:y({modifier:Sn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThanOrEquals:y({modifier:zn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThan:y({modifier:wn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThanOrEquals:y({modifier:Fn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),inRange:y({modifier:bn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"}),notInRange:y({modifier:Nn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"})};class ei extends P{constructor(e){super(e);C(this,"modifiers",fr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=fr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ei({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(hr,{condition:this,...e},this.id)}}const pr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},mr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ii extends P{constructor(e){super(e);C(this,"modifiers",mr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=mr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ii({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(pr,{condition:this,...e},this.id)}}const gr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useMemo(()=>r.options.map(p=>typeof p=="string"?{value:p,label:p}:p),[r.options]),f=d.useMemo(()=>{const p={};for(const m of l)p[m.value]=m.label;return p},[l]),c=d.useCallback(p=>{p.length>0?n.setConditionValue(p):n.setConditionValue([])},[n]),h=()=>{switch(s){case"equals":case"notEquals":{const p=n.modifiers.equals,m=o!==void 0&&p.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:m!==void 0?m?f[m]:"empty":"..."})})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(qn,{required:!1,selectFieldOptions:r.options,value:m??void 0,onValueChange:n.setConditionValue})})]})}case"includes":case"excludes":{const p=n.modifiers.includes,m=o!==void 0&&p.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",children:m?`${m.length} options`:"..."})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{selectFieldOptions:r.options,values:m??Ee,onValuesChange:c})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),h(),t.jsx(j,{condition:n,onClick:e})]})},Cr={equals:y({modifier:le,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),notEquals:y({modifier:de,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),includes:y({modifier:Mn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:y({modifier:xn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class ni extends P{constructor(e){super(e);C(this,"modifiers",Cr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Cr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ni({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(gr,{condition:this,...e},this.id)}}const Vr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},yr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ti extends P{constructor(e){super(e);C(this,"modifiers",yr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=yr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ti({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Vr,{condition:this,...e},this.id)}}const vr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},Sr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ri extends P{constructor(e){super(e);C(this,"modifiers",Sr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Sr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ri({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(vr,{condition:this,...e},this.id)}}const zr=i=>{const{condition:n,onRemove:e}=i,r=n.getConditionValue(),o=n.getConditionModifier(),s=()=>{switch(o){case"equals":case"notEquals":case"before":case"after":{const l=typeof r=="string"?r:void 0;return t.jsx(Ni,{value:l,onValueChange:f=>n.setConditionValue(f??void 0),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:l?Vi(l):"..."})})}case"in":case"notIn":{const l=r&&typeof r=="object"?r:void 0,f=c=>{n.setConditionValue(c.from||c.to?c:void 0)};return t.jsxs(t.Fragment,{children:[t.jsx(Ni,{value:l==null?void 0:l.from,onValueChange:c=>f({from:c,to:(l==null?void 0:l.to)??null}),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:l!=null&&l.from?Vi(l.from):"..."})}),t.jsx(Ni,{value:l==null?void 0:l.to,onValueChange:c=>f({from:(l==null?void 0:l.from)??null,to:c}),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:l!=null&&l.to?Vi(l.to):"..."})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[n.field.type].icon}),t.jsx("span",{className:"truncate",children:n.field.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[o].modifier.label})}),s(),t.jsx(j,{condition:n,onClick:e})]})},wr={equals:y({modifier:Dt,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),notEquals:y({modifier:Pt,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),before:y({modifier:jt,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),after:y({modifier:Ut,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),in:y({modifier:Gt,isValueValid:i=>E(i),isConditionValueValid:i=>Ge(i),isSerializedValueValid:i=>Ge(i)}),notIn:y({modifier:kt,isValueValid:i=>E(i),isConditionValueValid:i=>Ge(i),isSerializedValueValid:i=>Ge(i)})};class oi extends P{constructor(e){super(e);C(this,"modifiers",wr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=wr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new oi({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(zr,{condition:this,...e},this.id)}}const Fr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(o){case void 0:return"...";case!0:return"true";case!1:return"false";case null:return"empty"}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:l()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsxs(a.Menu.SelectGroup,{required:!0,value:o,onValueChange:n.setConditionValue,children:[t.jsx(Fe,{value:!0,children:"empty"}),t.jsx(Fe,{value:!1,children:"not empty"})]})})]}),t.jsx(j,{condition:n,onClick:e})]})},br={equals:y({modifier:Tt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Lt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ai extends P{constructor(e){super(e);C(this,"modifiers",br)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=br[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ai({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Fr,{condition:this,...e},this.id)}}const Nr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},Mr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class si extends P{constructor(e){super(e);C(this,"modifiers",Mr)}transformValue(e){return(e==null?void 0:e.toString())??""}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Mr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new si({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Nr,{condition:this,...e},this.id)}}const Wo={date:We,time:oi,number:Ye,boolean:He,select:ni,string:ti,url:si,text:ri,upload:ai,qr:ii,"multi-string":Ke,"multi-select":Xe,radio:Re,"checkbox-list":Je,"pass-fail":Qe,otp:Ze,rating:ei},xr=(i,n)=>{if(i.type!==n.type)throw new Error(`field and condition type mismatch ${i.type} !== ${n.type}`);return Wo[n.type].deserialize(n,i)},On=(i,n)=>{const e=_n(i,n),r={};for(const o of i)r[o.identifier]=o;return e.map(o=>xr(r[o.fieldId],o))},Ir=(i,n)=>Tn(i,n).map(r=>r.serialize()),_n=(i,n)=>{const e=new Set(i.map(r=>r.identifier));return n.filter(r=>e.has(r.fieldId))},Tn=(i,n)=>{const e=new Set(i.map(r=>r.identifier));return n.filter(r=>e.has(r.field.identifier))},xi=i=>Cn[i.type].deserialize(i);function Xo(i){return i.map(qr)}const qr=i=>i.type==="section"?X.deserialize(i):xi(i);function Ko(i){return i.map(xi)}function Yo(i){const n=[];for(const e of i)if(e instanceof X)for(const r of e.getFields())n.push(r);else n.push(e);return n}function Zo(i){const n={};for(const e of i)n[e.identifier]=e;return n}function Or(i,n,e=!0){const r=e?Ii(i,n):n,o={};for(const s of i){if(!(s.identifier in r))continue;const l=r[s.identifier];o[s.identifier]=s.serializeValue(l)}return o}function _r(i,n,e=!0){const r=e?Ln(i,n):n,o={};for(const s of i){if(!(s.identifier in r))continue;const l=r[s.identifier];o[s.identifier]=s.deserializeValue(l)}return o}function Ii(i,n){const e={};for(const r of i){if(!(r.identifier in n))continue;const o=n[r.identifier];r.isValue(o)&&(e[r.identifier]=r.cleanValue(o))}return e}function Ln(i,n){const e={};for(const r of i){if(!(r.identifier in n))continue;const o=n[r.identifier];r.isSerializedValue(o)&&(e[r.identifier]=r.cleanSerializedValue(o))}return e}function Tr(i,n){const e=Ii(i,n),r={},o={};for(const s of i){if(!(s.identifier in e))continue;const l=e[s.identifier];switch(s.type){case"upload":if(!s.isValue(l))break;o[s.identifier]=l,r[s.identifier]=[];break;case"pass-fail":if(!s.isValue(l))break;o[s.identifier]=l.files,r[s.identifier]={...l,files:[]};break;default:r[s.identifier]=n[s.identifier]}}return[r,o]}function Lr(i,n,e){const r={};for(const o of i){if(!(o.identifier in n))continue;const s=n[o.identifier];switch(o.type){case"upload":if(!o.isValue(s))break;r[o.identifier]=e[o.identifier]??[];break;case"pass-fail":if(!o.isValue(s))break;r[o.identifier]={...s,files:e[o.identifier]??[]};break;default:if(!o.isValue(s))break;r[o.identifier]=s}}return r}const Br=(i,n)=>{const e={};for(const r of i){const o=n[r.identifier];e[r.identifier]=o!==void 0?o:r.blankValue()}return e},Ar=(i,n,e)=>{const r={};for(const o of i){const s=n[o.identifier],l=e[o.identifier];o.areValuesEqual(s,l)||(r[o.identifier]=l)}return r},Er=(i,n,e)=>{const r={};for(const o of i){const s=n[o.identifier],l=e[o.identifier];o.areValuesEqual(s,l)&&(r[o.identifier]=l)}return r},Bn=(i,n,e)=>i.every(r=>{const o=n[r.identifier],s=e[r.identifier];return r.areValuesEqual(o,s)}),An=i=>{const n={};for(const e of i)n[e.identifier]=e.blankValue();return n},$r=(i,n)=>Bn(i,n,An(i)),Qo=R.cva(["flex","flex-col"],{variants:{size:{xs:["gap-2"],sm:["gap-4"],md:["gap-6"],lg:["gap-8"],xl:["gap-10"]}}}),qi=R.cva(["flex","flex-col"],{variants:{size:{xs:["gap-2"],sm:["gap-4"],md:["gap-6"],lg:["gap-8"],xl:["gap-10"]}}}),En=d.memo(i=>{const{fieldSection:n}=i,{label:e,description:r}=n,o=Y.useWatch(),{fieldSchema:s,size:l}=d.use(B),f=d.useMemo(()=>s.getFieldSections(),[s]),c=d.useMemo(()=>f.findIndex(({identifier:g})=>g===n.identifier),[f,n.identifier]),h=d.useMemo(()=>f.filter(g=>n.identifier in g.conditions),[f,n.identifier]),p=d.useMemo(()=>h.length===0?!0:h.some(g=>{const V=g.getConditions(n.identifier);return new Mi(V).applyConditions(o)}),[h,n,o]),m=fi(n.fields);return p?t.jsxs(t.Fragment,{children:[c!==0?t.jsx(a.Separator,{size:"full"}):null,t.jsxs("div",{className:"flex flex-col gap-4",children:[(e||r)&&t.jsx(t.Fragment,{children:t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsx(a.Heading,{size:l,children:e}),r&&t.jsx(a.Text,{accentColor:"base",size:l,children:r})]})}),t.jsx("div",{className:qi({size:l}),children:m})]})]}):null});En.displayName="FieldSectionLayout";const li=class li extends Di{constructor(e){const{label:r=null,description:o=null,fields:s,conditions:l={},...f}=e;super(f);C(this,"type","section");C(this,"label");C(this,"description");C(this,"conditions");C(this,"fields",[]);C(this,"fieldObserver",()=>{this.notify(this)});C(this,"initFields",e=>{for(const r of e)r.observe(this.fieldObserver);return e});C(this,"conditionObserver",()=>{this.notify(this)});C(this,"initConditions",e=>{for(const r of Object.values(e).flat())r.observe(this.conditionObserver);return e});this.label=r,this.description=o,this.fields=this.initFields(s),this.conditions=this.initConditions(l)}serialize(){const e={};for(const[r,o]of Object.entries(this.conditions))e[r]=o.map(s=>s.serialize());return{...super.serialize(),label:this.label,description:this.description,conditions:e,fields:this.fields.map(r=>r.serialize())}}getOptions(){return{...super.getOptions(),label:this.label,description:this.description,fields:this.fields,conditions:this.conditions}}duplicate(e){return new li({...this.getOptions(),identifier:e,fields:this.fields.map(r=>r.duplicate(N.v4()))})}setOptions(e){const{label:r,description:o,fields:s,conditions:l,...f}=e;this.label=r??this.label,this.description=o??this.description,this.fields=s||this.fields,this.conditions=l||this.conditions,super.setOptions(f)}getErrors(e){const r={};for(const o of this.fields){const s=o.getError(e[o.identifier]);s&&(r[o.identifier]=s)}return r}getFields(){return this.fields}addField(e,r){const o=[...this.fields];o.splice(r??this.fields.length,0,e),this.fields=this.initFields(o),this.notify(this)}moveField(e,r){const o=[...this.fields],[s]=o.splice(e,1);o.splice(r,0,s),this.fields=o,this.notify(this)}removeField(e){this.fields=this.initFields(this.fields.filter(({identifier:o})=>o!==e.identifier));const r={};for(const[o,s]of Object.entries(this.conditions))r[o]=s.filter(l=>l.field.identifier!==e.identifier);this.conditions=r,this.notify(this)}getConditions(e){return this.conditions[e]}addCondition(e,r){this.conditions=this.initConditions({...this.conditions,[e]:[...this.conditions[e]??[],r]}),this.notify(this)}addConditions(e,r){this.conditions=this.initConditions({...this.conditions,[e]:[...this.conditions[e]??[],...r]}),this.notify(this)}removeCondition(e,r){this.conditions=this.initConditions({...this.conditions,[e]:(this.conditions[e]??[]).filter(o=>o.id!==r.id)}),this.notify(this)}removeConditions(e,r){const o=new Set(r.map(s=>s.id));this.conditions=this.initConditions({...this.conditions,[e]:(this.conditions[e]??[]).filter(s=>!o.has(s.id))}),this.notify(this)}getConditionals(){return new Set(Object.keys(this.conditions))}addConditional(e){this.conditions=this.initConditions({...this.conditions,[e]:[]}),this.notify(this)}removeConditional(e){const r={...this.conditions};delete r[e],this.conditions=this.initConditions(r),this.notify(this)}render(){return t.jsx(En,{fieldSection:this})}};C(li,"deserialize",e=>{const r=e.fields.map(xi),o={};for(const[s,l]of Object.entries(e.conditions))o[s]=On(r,l);return new li({...e,fields:r,conditions:o})});let X=li;const ee=d.createContext({}),Oi=d.memo(i=>{const{children:n,variant:e,size:r,accentColor:o,onSelectFieldType:s,...l}=i,f=d.useMemo(()=>{const c={[O.Assessment]:[],[O.Capture]:[],[O.Numeric]:[],[O.Selection]:[],[O.Temporal]:[],[O.Text]:[],[O.Verification]:[]};for(const h of St){const{group:p}=T[h];c[p].push(h)}return c},[]);return t.jsxs(a.Menu.Root,{...l,children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{variant:e,size:r,accentColor:o,children:t.jsx(a.Menu.Scroll,{children:Object.entries(f).map(([c,h])=>{const{name:p}=zt[c];return h.length===0?null:t.jsxs(a.Menu.Group,{children:[t.jsx(a.Menu.Label,{children:p}),h.map(m=>t.jsx(Dr,{fieldType:m,onSelectFieldType:s},m))]},c)})})})]})});Oi.displayName="CreateFieldDropdownMenu";const Dr=d.memo(i=>{const{fieldType:n,onSelectFieldType:e}=i,r=d.useCallback(()=>{e(n)},[n,e]),{icon:o,name:s}=T[n];return t.jsxs(a.Menu.Item,{onSelect:r,children:[t.jsx(a.LuIcon,{icon:o}),t.jsx(a.Text,{className:"truncate",children:s})]})});Dr.displayName="CreateFieldDropdownMenuItem";const _i=i=>{switch(i){case"text":return new ze({label:"",required:!1,identifier:N.v4()});case"boolean":return new fe({label:"",required:!1,identifier:N.v4()});case"number":return new H({label:"",required:!1,identifier:N.v4()});case"date":return new xe({label:"",required:!1,identifier:N.v4()});case"time":return new Oe({label:"",required:!1,identifier:N.v4()});case"string":return new Se({label:"",required:!1,identifier:N.v4()});case"url":return new _e({label:"",required:!1,identifier:N.v4()});case"select":return new oe({label:"",options:[],required:!1,identifier:N.v4()});case"multi-string":return new he({label:"",required:!1,identifier:N.v4()});case"multi-select":return new te({label:"",options:[],required:!1,identifier:N.v4()});case"upload":return new we({label:"",required:!1,identifier:N.v4(),maximum_files:6,maximum_size:Te});case"qr":return new qe({label:"",required:!1,identifier:N.v4()});case"radio":return new ye({label:"",options:[],required:!1,identifier:N.v4()});case"checkbox-list":return new pe({label:"",options:[],required:!1,identifier:N.v4()});case"pass-fail":return new Ve({label:"",required:!1,identifier:N.v4(),showNotesAndFilesOn:["fail"]});case"otp":return new me({label:"",validationType:"none",required:!1,identifier:N.v4(),length:6});case"rating":return new ve({label:"",required:!1,identifier:N.v4(),maxRating:5})}},$n=i=>{switch(i.type){case"text":return new ri({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"boolean":return new He({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"number":return new Ye({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"date":return new We({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"time":return new oi({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"string":return new ti({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"url":return new si({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"select":return new ni({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"multi-string":return new Ke({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"multi-select":return new Xe({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"upload":return new ai({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"qr":return new ii({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"radio":return new Re({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"checkbox-list":return new Je({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"pass-fail":return new Qe({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"otp":return new Ze({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"rating":return new ei({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i})}},Pr=(i,n)=>{switch(i){case"checkbox-list":return pe.getFieldCreationSchema(n);case"multi-select":return te.getFieldCreationSchema(n);case"number":return H.getFieldCreationSchema(n);case"radio":return ye.getFieldCreationSchema(n);case"select":return oe.getFieldCreationSchema(n);case"string":return Se.getFieldCreationSchema(n);case"text":return ze.getFieldCreationSchema(n);case"upload":return we.getFieldCreationSchema(n);case"pass-fail":return Ve.getFieldCreationSchema(n);case"otp":return me.getFieldCreationSchema(n);case"rating":return ve.getFieldCreationSchema(n);default:return}},jr=d.memo(i=>{const{popoverInputs:n,...e}=i;return t.jsxs(a.Popover.Root,{children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:t.jsxs(a.Button,{variant:"soft",type:"button",size:"sm",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:Bo}),"Settings"]})}),t.jsx(a.Popover.Content,{size:"sm",...e,children:t.jsx("div",{className:R.cx("flex w-full max-w-[350px] flex-col",qi({size:"sm"})),children:n})})]})});jr.displayName="FieldSettingsPopover";const Ur=d.memo(i=>{const{parentPath:n,fieldIndex:e,field:r}=i,o=hi(),{disableRequiredFields:s}=d.use(ee),[l,f]=d.useState(void 0);d.useEffect(()=>{r.image instanceof Promise?r.image.then(f).catch(console.error):f(r.image)},[r]);const c=d.useCallback(()=>{r.setOptions({image:void 0})},[r]),[h,p]=d.useMemo(()=>{const z=[],b=[],L=Pr(r.type,`${n}.${e}`)??[];for(const G of L)G.showDirectly?z.push(G.field):b.push(G.field);return[z,b]},[r,n,e]),m=fi(h),g=fi(p),V=p.length>0,F=d.useCallback(()=>{l&&o(()=>({file:l}))},[o,l]),w=d.useCallback(z=>{r.setOptions({required:!!z})},[r]),S=d.useCallback(z=>{r.setOptions({label:z.target.value})},[r]),v=d.useCallback(z=>{r.setOptions({description:z.target.value})},[r]),{icon:I,name:q}=T[r.type];return t.jsxs("div",{className:"flex w-full grow flex-col gap-4",children:[t.jsxs("div",{className:"flex w-full justify-between gap-2",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs(a.Badge,{accentColor:"base",variant:"soft",size:"sm",children:[t.jsx(a.LuIcon,{icon:I}),q]}),!s&&t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Checkbox.Root,{checked:r.required,onCheckedChange:w,size:"sm",children:t.jsx(a.Checkbox.Indicator,{children:t.jsx(a.LuIcon,{icon:W})})}),t.jsx(a.Text,{size:"sm",accentColor:"base",children:"Required"})]})]}),V&&t.jsx(jr,{popoverInputs:g,align:"end"})]}),l&&t.jsxs("div",{className:"group relative inline-block w-full min-w-[300px]",children:[t.jsx(Me,{className:"h-[100px] w-full min-w-[300px] cursor-pointer rounded-md object-cover",file:l,onClick:F}),t.jsx(a.IconButton,{type:"button",className:"group-hover:not-disabled:flex absolute right-2 top-2 hidden",variant:"solid",accentColor:"base","aria-label":"delete",onClick:c,size:"sm",children:t.jsx(a.LuIcon,{icon:ue})})]}),t.jsxs("div",{className:"flex w-full flex-col gap-2 overflow-hidden",children:[t.jsx(a.Input.Root,{variant:"outline",size:"md",children:t.jsx(a.Input.Field,{placeholder:"Enter your question",value:r.label??"",onChange:S,maxLength:200})}),t.jsx(a.TextArea,{className:"field-sizing-content",placeholder:"Enter a field description (optional)",value:r.description??"",onChange:v,maxLength:1e3,resize:"vertical",size:"md"})]}),h.length>0&&t.jsx("div",{className:R.cx("w-full",qi({size:"sm"})),children:m})]})});Ur.displayName="FieldBuilder";const Dn=d.memo(i=>{const{field:n,fieldSection:e,fieldIndex:r,sectionIndex:o}=i,s=d.useRef(null),l=`fields.${o}.fields`,f=d.useCallback(w=>{e.addField(_i(w),r+1)},[r,e]),c=d.useCallback(()=>{e.addField(n.duplicate(N.v4()))},[n,e]),h=d.useCallback(w=>{const S=w==="up"?o-1:o+1;e.moveField(r,S)},[e,r,o]),p=d.useCallback(w=>{const{files:S}=w.target;if(!S||S.length!==1)return;const v=S.item(0);if(v){if(v.size>Ft){a.toast.error({title:"File upload error",description:`The file ${v.name} exceeded the maximum file size`});return}n.setOptions({image:v})}},[n]),m=d.useCallback(()=>{h("up")},[h]),g=d.useCallback(()=>{h("down")},[h]),V=d.useCallback(()=>{var w;(w=s.current)==null||w.click()},[]),F=d.useCallback(()=>{e.removeField(n)},[n,e]);return t.jsxs(a.Card,{className:"flex w-full items-center justify-between gap-4",size:"sm",children:[t.jsx(Ur,{fieldIndex:r,field:n,parentPath:l}),t.jsxs(a.ButtonGroup,{className:"flex flex-col gap-0.5",variant:"ghost",accentColor:"base",size:"sm",children:[t.jsx(Oi,{onSelectFieldType:f,size:"sm",children:t.jsx(a.IconButton,{type:"button",children:t.jsx(a.LuIcon,{icon:Z})})}),t.jsx(a.IconButton,{type:"button",onClick:m,children:t.jsx(a.LuIcon,{icon:nt})}),t.jsx(a.IconButton,{type:"button",onClick:g,children:t.jsx(a.LuIcon,{icon:it})}),t.jsx(a.IconButton,{type:"button",onClick:c,children:t.jsx(a.LuIcon,{icon:Ai})}),t.jsx(a.IconButton,{type:"button",onClick:V,children:t.jsx(a.LuIcon,{icon:Rn})}),t.jsx(a.IconButton,{type:"button",onClick:F,children:t.jsx(a.LuIcon,{icon:ue})})]}),t.jsx("input",{className:"hidden",ref:s,type:"file",accept:"image/*",onChange:p})]})});Dn.displayName="FieldBuilderWithActions";const Pn=d.memo(i=>{const{children:n,variant:e,size:r,accentColor:o,fields:s,onSelectField:l,...f}=i;return t.jsxs(a.Menu.Root,{...f,children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{variant:e,size:r,accentColor:o,children:t.jsx(a.Menu.Scroll,{children:s.map(c=>t.jsx(Gr,{field:c,onSelectField:l},c.identifier))})})]})});Pn.displayName="FieldDropdownMenu";const Gr=d.memo(i=>{const{field:n,onSelectField:e}=i,r=d.useCallback(()=>{e(n)},[n,e]);return t.jsxs(a.Menu.Item,{onSelect:r,children:[t.jsx(a.LuIcon,{icon:T[n.type].icon}),n.label||$]})});Gr.displayName="FieldDropdownMenuItem";const kr=d.memo(i=>{const{children:n,variant:e,size:r,accentColor:o,fieldSections:s,onSelectFieldSection:l,...f}=i;return t.jsxs(a.Menu.Root,{...f,children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{variant:e,size:r,accentColor:o,children:s.map(c=>t.jsx(Hr,{fieldSection:c,onSelectFieldSection:l},c.identifier))})]})});kr.displayName="FieldSectionDropdownMenu";const Hr=d.memo(i=>{const{fieldSection:n,onSelectFieldSection:e}=i,r=d.useCallback(()=>{e(n)},[n,e]);return t.jsxs(a.Menu.Item,{onSelect:r,children:[t.jsx(a.LuIcon,{icon:et}),n.label||Vn]})});Hr.displayName="FieldSectionDropdownMenuItem";const Jr=d.memo(i=>{const{id:n,sourceX:e,sourceY:r,targetX:o,targetY:s,style:l,markerEnd:f,data:c}=i,{targetSection:h,sourceSection:p,layoutDirection:m}=c,g=d.useMemo(()=>p.getConditions(h.identifier),[p,h.identifier]),V=d.useCallback(()=>{p.removeConditional(h.identifier)},[p,h.identifier]),F=d.useCallback(q=>{p.addCondition(h.identifier,$n(q))},[p,h.identifier]),w=d.useCallback(q=>{p.removeCondition(h.identifier,q)},[p,h.identifier]),[S,v,I]=_.getBezierPath({sourceX:e,sourceY:r,sourcePosition:m==="LR"?_.Position.Right:_.Position.Bottom,targetX:o,targetY:s,targetPosition:m==="LR"?_.Position.Left:_.Position.Top});return t.jsxs(t.Fragment,{children:[t.jsx(_.BaseEdge,{id:n,path:S,style:l,markerEnd:f,labelX:v,labelY:I}),t.jsx(_.EdgeLabelRenderer,{children:t.jsxs(a.Card,{size:"xs",variant:"surface",className:"nodrag nopan bg-(--base-2) pointer-events-auto absolute inline-flex flex-col gap-2",onMouseDown:a.stopPropagation,onClick:a.stopPropagation,"data-floating-content":"",style:{transform:`translate(-50%, -50%) translate(${v}px, ${I}px)`},children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Text,{size:"xs",className:"max-w-[280px] truncate",children:p.label||"Untitled section"}),t.jsxs("div",{className:"ml-auto flex items-center gap-1",children:[t.jsx(Pn,{fields:p.fields,onSelectField:F,children:t.jsx(a.IconButton,{"aria-label":"Add condition",type:"button",variant:"surface",size:"xs",accentColor:"base",children:t.jsx(a.LuIcon,{icon:Z})})}),t.jsxs(a.Tooltip.Root,{children:[t.jsx(a.Tooltip.Trigger,{asChild:!0,children:t.jsx(a.IconButton,{"aria-label":"Remove conditional logic",type:"button",variant:"surface",size:"xs",accentColor:"base",color:"danger",onClick:V,children:t.jsx(a.LuIcon,{icon:ue})})}),t.jsx(a.Tooltip.Content,{size:"sm",children:"Remove conditional logic"})]})]})]}),g.length>0&&t.jsx("div",{className:"flex h-max w-full flex-col flex-wrap gap-1",children:g.map(q=>t.jsx(d.Fragment,{children:q.render({onRemove:w})},q.id))})]})})]})});Jr.displayName="FieldSectionConditionEdgeComponent";const Wr=d.memo(i=>{const{data:n,selected:e}=i,{fieldSection:r,index:o,layoutDirection:s}=n,{fieldSchema:l}=d.use(ee),f=d.useCallback(()=>{l.removeFieldSection(r)},[l,r]),c=d.useCallback(V=>{r.addField(_i(V))},[r]),h=d.useCallback(()=>{const V=new X({identifier:N.v4(),fields:[]});l.addFieldSection(V),r.addConditional(V.identifier)},[l,r]),p=d.useCallback(()=>{l.addFieldSection(r.duplicate(N.v4()))},[l,r]),m=d.useCallback(V=>{r.setOptions({label:V.target.value})},[r]),g=d.useCallback(V=>{r.setOptions({description:V.target.value})},[r]);return t.jsxs(a.Card,{variant:"surface",className:"bg-(--base-2) relative cursor-pointer",size:"sm","data-selected":e?"true":void 0,children:[t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsxs("div",{className:"flex w-full flex-col gap-2 overflow-hidden",children:[t.jsx(a.Input.Root,{variant:"outline",size:"md",accentColor:"base",children:t.jsx(a.Input.Field,{placeholder:"Enter a section label (optional)",value:r.label??"",onChange:m,maxLength:200})}),t.jsx(a.TextArea,{className:"field-sizing-content",placeholder:"Enter a section description (optional)",value:r.description??"",onChange:g,maxLength:1e3,resize:"vertical",size:"md"})]}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(a.Text,{weight:"bold",children:"Fields"}),t.jsx(Oi,{onSelectFieldType:c,size:"sm",children:t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:Z})," Add field"]})})]}),t.jsx("div",{className:"flex flex-col gap-3",children:r.fields.map((V,F)=>t.jsx(Dn,{field:V,fieldSection:r,fieldIndex:F,sectionIndex:o},V.identifier))})]}),t.jsx(_.NodeToolbar,{isVisible:!0,position:_.Position.Right,align:"start",offset:8,onMouseDown:a.stopPropagation,children:t.jsx(a.Card,{variant:"surface",className:"bg-(--base-2) flex flex-col items-center gap-1 p-1",size:"xs",onClick:a.stopPropagation,children:t.jsxs(a.ButtonGroup,{className:"flex flex-col gap-2",variant:"surface",size:"xs",accentColor:"base",children:[t.jsx(a.IconButton,{type:"button",onClick:h,children:t.jsx(a.LuIcon,{icon:No})}),t.jsx(a.IconButton,{type:"button",onClick:p,children:t.jsx(a.LuIcon,{icon:Ai})}),t.jsx(a.IconButton,{type:"button",onClick:f,children:t.jsx(a.LuIcon,{icon:ue})})]})})}),t.jsx(_.Handle,{type:"target",className:"size-4! bg-(--base-3)! border-(--base-7)!",position:s==="LR"?_.Position.Left:_.Position.Top}),t.jsx(_.Handle,{type:"source",className:"size-4! bg-(--base-3)! border-(--base-7)!",position:s==="LR"?_.Position.Right:_.Position.Bottom})]})});Wr.displayName="CustomNode";const Ro={fieldSection:Wr},ea={fieldSectionCondition:Jr},ia=(i,n,e)=>{const r=new kn.graphlib.Graph().setDefaultEdgeLabel(()=>({}));return r.setGraph({rankdir:e,nodesep:200,edgesep:500,ranksep:500}),n.forEach(o=>r.setEdge(o.source,o.target,{width:500,height:200,labelpos:"c"})),i.forEach(o=>{var s,l;return r.setNode(o.id,{...o,width:((s=o.measured)==null?void 0:s.width)??0,height:((l=o.measured)==null?void 0:l.height)??0})}),kn.layout(r),[i.map(o=>{var c,h;const s=r.node(o.id),l=s.x-(((c=o.measured)==null?void 0:c.width)??0)/2,f=s.y-(((h=o.measured)==null?void 0:h.height)??0)/2;return{...o,position:{x:l,y:f}}}),n]},na={hideAttribution:!0},Xr=d.memo(()=>{var Q;const{errors:i}=Y.useFormState(),{handleSubmit:n}=Y.useFormContext(),{onSave:e,onCancel:r}=d.use(ee),{fieldSchema:o}=d.use(ee),s=d.useRef(null),[l,f]=d.useState(),[c,h]=d.useState("TB");d.useLayoutEffect(()=>{s.current&&s.current.classList.remove("light")},[]);const p=d.useMemo(()=>o.fieldSections.map((J,K)=>({id:J.identifier,position:{x:0,y:0},data:{index:K,fieldSection:J,layoutDirection:c},draggable:!0,type:"fieldSection"})),[o.fieldSections,c]),m=d.useMemo(()=>{const J=[],K={};for(const ne of o.fieldSections)K[ne.identifier]=ne;for(const ne of o.fieldSections){const Ti=ne.conditions;for(const[di,la]of Object.entries(Ti))J.push({id:`${ne.identifier}-${di}`,source:ne.identifier,target:di,data:{targetSection:K[di],sourceSection:ne,layoutDirection:c},animated:la.length>0,markerEnd:_.MarkerType.Arrow,style:{strokeWidth:2,stroke:"var(--base-a8)"},type:"fieldSectionCondition"})}return J},[o.fieldSections,c]),[g,V,F]=_.useNodesState(p),[w,S,v]=_.useEdgesState(m);d.useEffect(()=>{V(p)},[p,V]),d.useEffect(()=>{S(m)},[m,S]);const[I,q]=d.useMemo(()=>ia(g,w,c),[w,c,g]),z=d.useCallback(()=>{o.addFieldSection(new X({identifier:N.v4(),fields:[]}))},[o]),b=d.useCallback(J=>{const{source:K,target:ne}=J,Ti=o.fieldSections.find(({identifier:di})=>di===K);Ti.setOptions({conditions:{...Ti.conditions,[ne]:[]}})},[o.fieldSections]),L=d.useCallback(J=>{const K=o.getSectionDependencyGraph();return!Un.willCreateCycle(K,J.source,J.target)},[o]),G=d.useCallback(()=>{l==null||l.zoomOut()},[l]),ie=d.useCallback(()=>{l==null||l.zoomIn()},[l]),ce=d.useCallback(()=>{l==null||l.fitView()},[l]);return t.jsxs("form",{className:"flex size-full flex-col gap-4",onSubmit:n(e),children:[t.jsxs(a.Card,{className:"relative size-full",variant:"outline",children:[t.jsx(_.ReactFlow,{ref:s,onInit:f,nodes:I,onNodesChange:F,edges:q,onEdgesChange:v,nodeTypes:Ro,edgeTypes:ea,onConnect:b,attributionPosition:"bottom-left",fitView:!0,minZoom:0,isValidConnection:L,proOptions:na}),t.jsx(_.Panel,{position:"top-left",children:t.jsx(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:t.jsxs(a.Button,{type:"button",variant:"surface",onClick:z,children:[t.jsx(a.LuIcon,{icon:Z})," Add section"]})})}),t.jsxs(_.Panel,{position:"top-right",className:"flex flex-col items-center gap-2",children:[t.jsxs(a.ToggleGroup.Root,{className:"flex flex-col",type:"single",accentColor:"base",size:"sm",value:c,onValueChange:h,children:[t.jsx(a.ToggleGroup.IconItem,{className:"rounded-b-none",value:"LR",type:"button",children:t.jsx(a.LuIcon,{icon:go})}),t.jsx(a.ToggleGroup.IconItem,{className:"rounded-t-none",value:"TB",type:"button",children:t.jsx(a.LuIcon,{icon:mo})})]}),t.jsx(a.Separator,{size:"sm"}),t.jsxs(a.ButtonGroup,{className:"flex flex-col",size:"sm",accentColor:"base",variant:"soft",children:[t.jsx(a.IconButton,{className:"rounded-b-none",onClick:ie,type:"button",children:t.jsx(a.LuIcon,{icon:Z})}),t.jsx(a.IconButton,{onClick:G,radius:"none",type:"button",children:t.jsx(a.LuIcon,{icon:ui})}),t.jsx(a.IconButton,{className:"rounded-t-none",onClick:ce,type:"button",children:t.jsx(a.LuIcon,{icon:Eo})})]})]}),t.jsx(_.Panel,{position:"bottom-right",children:t.jsxs(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:[r&&t.jsx(a.Button,{type:"button",variant:"soft",accentColor:"base",onClick:r,children:"Cancel"}),t.jsx(a.Button,{type:"submit",variant:"surface",children:"Save"})]})})]}),!!((Q=i.fields)!=null&&Q.message)&&t.jsx(a.Text,{size:"xs",accentColor:"danger",children:i.fields.message})]})});Xr.displayName="FormBuilderFlowBuilder";const ta=(i,n,e={})=>{const{conditions:r=!1}=e,o=i.get(n.identifier);if(!o)throw new Error(`Attempting to reseed serialized section with identifier ${n.identifier} which is not present in the reseeded identifier map`);const s=new Map,l=n.fields.map(c=>{const h=N.v4(),{image:p,...m}=c;return s.set(c.identifier,h),{...m,identifier:h}}),f={};if(r)for(const[c,h]of Object.entries(n.conditions??{})){const p=i.get(c);if(!p)continue;const m=h.map(g=>{const V=s.get(g.fieldId);if(!V)throw new Error(`Serialized condition referencing undefined field with identifier: ${g.fieldId}`);return{...g,fieldId:V}});f[p]=m}return{...n,identifier:o,conditions:f,fields:l}},ra=(i,n={})=>{const e=new Map(i.map(r=>[r.identifier,N.v4()]));return i.map(r=>ta(e,r,n))},jn=(i,n)=>{const e={},r=i.filter(o=>o instanceof X);for(const o of i)if(o instanceof X){const s=r.filter(f=>o.identifier in f.conditions);if(s.length>0&&!s.some(f=>{const c=f.getConditions(o.identifier);return new Mi(c).applyConditions(n)}))continue;const l=o.getErrors(n);Object.assign(e,l)}else{if(!(o instanceof k))throw new Error("Invalid field type");const s=o.identifier,l=o.getError(Hn(n,s));l&&so(e,s,l)}return e},oa=async i=>{const n={},e=[];for(const r of i){const{fields:o}=r,s=[];for(const l of o){if(l.image){if(l.image instanceof Promise)try{n[l.identifier]=await l.image}catch(f){console.error("Failed to get image from promise",f)}else n[l.identifier]=l.image;delete l.image}s.push(l)}e.push({...r,fields:s})}return{fields:e,images:n}};async function aa(i){const n={};for(const[e,r]of Object.entries(i))n[e]=await Promise.all(r);return n}class Ne extends De{constructor(e){super();C(this,"fieldSections");C(this,"fieldObserver",()=>{this.notify(this)});C(this,"initFields",e=>{for(const r of e)r.observe(this.fieldObserver);return e});this.fieldSections=this.initFields(e)}serialize(){return this.fieldSections.map(e=>e.serialize())}static deserialize(e){return new Ne(e.map(X.deserialize))}static reseedFieldSections(e,r){return ra(e,r)}getFields(){return this.fieldSections.flatMap(e=>e.getFields())}getFieldSections(){return this.fieldSections}addFieldSection(e,r){const o=[...this.fieldSections];o.splice(r??this.fieldSections.length,0,e),this.fieldSections=this.initFields(o),this.notify(this)}removeFieldSection(e){const r=this.fieldSections.filter(o=>o.identifier!==e.identifier);for(const o of r)o.removeConditional(o.identifier);this.fieldSections=this.initFields(r),this.notify(this)}moveFieldSection(e,r){const o=[...this.fieldSections],[s]=o.splice(e,1);o.splice(r,0,s),this.fieldSections=this.initFields(o),this.notify(this)}getSectionDependencyGraph(){const e=new oo.DirectedGraph({type:"directed"});for(const r of this.fieldSections)for(const o of Object.keys(r.conditions))e.mergeEdge(r.identifier,o);return e}getDependenciesOfSection(e){const r=this.getSectionDependencyGraph(),o=new Map(this.fieldSections.map(l=>[l.identifier,l])),s=[];return ao.bfsFromNode(r,e,(l,f,c)=>{s.push(o.get(l))},{mode:"in"}),s}cleanValues(e){return Ii(this.getFields(),e)}cleanSerializedValues(e){return Ln(this.getFields(),e)}deserializeValues(e,r){return _r(this.getFields(),e,r)}serializeValues(e,r){return Or(this.getFields(),e,r)}initializeValues(e){return Br(this.getFields(),e)}validateValues(e){return jn(this.getFieldSections(),e)}areValuesValid(e){return Object.keys(this.validateValues(e)).length===0}deserializeConditions(e){return On(this.getFields(),e)}cleanConditions(e){return Tn(this.getFields(),e)}serializeConditions(e){return Ir(this.getFields(),e)}cleanSerializedConditions(e){return _n(this.getFields(),e)}changedFieldValues(e,r){return Ar(this.getFields(),e,r)}unchangedFieldValues(e,r){return Er(this.getFields(),e,r)}areValuesEqual(e,r){return Bn(this.getFields(),e,r)}areValuesBlank(e){return $r(this.getFields(),e)}blankValues(){return An(this.getFields())}extractFilesAndPromisesFromFieldValues(e){return Tr(this.getFields(),e)}insertFilesAndPromisesToFieldValues(e,r){return Lr(this.getFields(),e,r)}}const Kr=d.memo(i=>{const{sourceFieldSection:n,targetFieldSection:e}=i,r=d.useMemo(()=>n.getConditions(e.identifier),[n,e.identifier]),o=d.useCallback(()=>{n.removeConditional(e.identifier)},[n,e.identifier]),s=d.useCallback(f=>{n.addCondition(e.identifier,$n(f))},[n,e.identifier]),l=d.useCallback(f=>{n.removeCondition(e.identifier,f)},[n,e.identifier]);return t.jsxs(a.Card,{className:"flex flex-col gap-2",size:"sm",children:[t.jsxs(a.ButtonGroup,{className:"flex justify-between gap-2",size:"sm",accentColor:"base",variant:"soft",children:[t.jsxs(a.Badge,{accentColor:"base",variant:"soft",size:"sm",children:[t.jsx(a.LuIcon,{icon:et}),n.label??Vn]}),t.jsx(a.IconButton,{type:"button",onClick:o,variant:"ghost",children:t.jsx(a.LuIcon,{icon:ue})})]}),t.jsxs("div",{className:"flex h-max w-full flex-wrap gap-2",children:[r.map(f=>f.render({onRemove:l})),t.jsx(Pn,{fields:n.fields,onSelectField:s,align:"start",children:t.jsx(a.IconButton,{type:"button",size:"sm",variant:"soft",accentColor:"base",children:t.jsx(a.LuIcon,{icon:Z})})})]})]})});Kr.displayName="FieldSectionConditionalItem";const Yr=d.memo(i=>{const{fieldSection:n}=i,{fieldSchema:e}=d.use(ee),r=d.useMemo(()=>e.fieldSections.filter(c=>n.identifier in c.conditions),[e.fieldSections,n.identifier]),o=d.useCallback(c=>{c.addConditional(n.identifier)},[n.identifier]),s=d.useCallback(c=>{n.setOptions({label:c.target.value})},[n]),l=d.useCallback(c=>{n.setOptions({description:c.target.value})},[n]),f=d.useMemo(()=>{const c=e.getSectionDependencyGraph();return e.fieldSections.filter(h=>!Un.willCreateCycle(c,h.identifier,n.identifier))},[n.identifier,e]);return t.jsxs("div",{className:"flex w-full grow flex-col gap-4",children:[t.jsxs("div",{className:"flex w-full flex-col gap-2 overflow-hidden",children:[t.jsx(a.Input.Root,{variant:"outline",size:"md",children:t.jsx(a.Input.Field,{placeholder:"Enter a section label (optional)",value:n.label??"",onChange:s,maxLength:200})}),t.jsx(a.TextArea,{className:"field-sizing-content",placeholder:"Enter a section description (optional)",value:n.description??"",onChange:l,maxLength:1e3,resize:"vertical",size:"md"})]}),t.jsx(a.Separator,{size:"full"}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs("div",{className:"flex justify-between gap-2",children:[t.jsx(a.Text,{accentColor:"base",children:"Conditions"}),t.jsx(kr,{fieldSections:f,onSelectFieldSection:o,children:t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",className:"w-max",children:[t.jsx(a.LuIcon,{icon:Z}),"Add condition"]})})]}),r.map(c=>t.jsx(Kr,{sourceFieldSection:c,targetFieldSection:n},c.identifier))]}),t.jsx(a.Separator,{size:"full"})]})});Yr.displayName="FieldSectionBuilder";const Zr=d.memo(i=>{const{fieldSection:n,sectionIndex:e}=i,{fieldSchema:r}=d.use(ee),o=a.useAlertDialog(),s=d.useCallback(()=>{r.removeFieldSection(n)},[r,n]),l=d.useCallback(w=>{const S=w==="up"?e-1:e+1;r.moveFieldSection(e,S)},[r,e]),f=d.useCallback(()=>{r.addFieldSection(n.duplicate(N.v4()))},[r,n]),c=d.useCallback(w=>{n.addField(_i(w))},[n]),h=d.useCallback(()=>{l("up")},[l]),p=d.useCallback(()=>{l("down")},[l]),m=d.useCallback(async()=>{const w=[n.serialize()],S=Ne.reseedFieldSections(w,{conditions:!1}),v=JSON.stringify(S);await navigator.clipboard.writeText(v),a.toast.success({title:"Section copied"})},[n]),g=d.useCallback(async()=>{const S=r.getDependenciesOfSection(n.identifier).map(q=>q.serialize()),v=Ne.reseedFieldSections(S,{conditions:!0}),I=JSON.stringify(v);await navigator.clipboard.writeText(I),a.toast.success({title:"Section copied"})},[n,r]),V=d.useCallback(async()=>{const w=r.getDependenciesOfSection(n.identifier),S=w.length>1,v=w.length-1;S?o({title:"Copy section dependencies?",description:`This section has ${v} dependent section${v>1?"s":""} that will also be copied to maintain the conditions. Do you want to include these dependencies?`,action:"Include",onAction:g,cancel:"Dont include",onCancel:m}):m()},[n,r,o,g,m]),F=d.useCallback(async()=>{let w="";try{w=await navigator.clipboard.readText()}catch{a.toast.error({title:"Paste failed",description:"Unable to read clipboard contents."});return}const S=w.trim();if(!S){a.toast.error({title:"Paste failed",description:"Clipboard is empty."});return}let v;try{v=JSON.parse(S)}catch{a.toast.error({title:"Invalid JSON",description:"Check the JSON and try again."});return}const I=Array.isArray(v)?v:[v],q=[];for(const z of I){if(!z||typeof z!="object")continue;const b=z;if(b.type!=="section"||!Array.isArray(b.fields))continue;const L={type:"section",identifier:typeof b.identifier=="string"?b.identifier:N.v4(),label:typeof b.label=="string"||b.label===null?b.label:null,description:typeof b.description=="string"||b.description===null?b.description:null,conditions:b.conditions&&typeof b.conditions=="object"?b.conditions:{},fields:b.fields};try{q.push(X.deserialize(L))}catch{}}if(q.length===0){a.toast.error({title:"Paste failed",description:"No valid sections found in the JSON."});return}q.forEach((z,b)=>{r.addFieldSection(z,e+1+b)}),a.toast.success({title:"Section pasted",description:"Serialized JSON imported successfully."})},[r,e]);return t.jsxs(a.Card,{variant:"outline",className:"flex w-full items-center justify-between gap-4",size:"sm",children:[t.jsxs("div",{className:"flex w-full grow flex-col gap-4",children:[t.jsx(Yr,{fieldSection:n}),t.jsxs("div",{className:"flex w-full flex-col gap-2",children:[t.jsxs("div",{className:"flex justify-between gap-2",children:[t.jsx(a.Text,{accentColor:"base",size:"md",children:"Fields"}),t.jsx(Oi,{onSelectFieldType:c,size:"sm",children:t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",children:[t.jsx(a.LuIcon,{icon:Z})," Add field"]})})]}),n.fields.map((w,S)=>t.jsx(Dn,{field:w,fieldSection:n,fieldIndex:S,sectionIndex:e},w.identifier))]})]}),t.jsxs(a.ButtonGroup,{className:"flex flex-col gap-0.5",variant:"ghost",accentColor:"base",size:"sm",children:[t.jsx(a.IconButton,{type:"button",onClick:h,children:t.jsx(a.LuIcon,{icon:nt})}),t.jsx(a.IconButton,{type:"button",onClick:p,children:t.jsx(a.LuIcon,{icon:it})}),t.jsxs(a.Menu.Root,{align:"end",children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.IconButton,{type:"button",children:t.jsx(a.LuIcon,{icon:Qn})})}),t.jsxs(a.Menu.Content,{size:"sm",children:[t.jsxs(a.Menu.Item,{onSelect:f,children:[t.jsx(a.LuIcon,{icon:Ai}),"Duplicate section"]}),t.jsxs(a.Menu.Item,{onSelect:V,children:[t.jsx(a.LuIcon,{icon:Kn}),"Copy JSON"]}),t.jsxs(a.Menu.Item,{onSelect:F,children:[t.jsx(a.LuIcon,{icon:Yn}),"Paste JSON"]}),t.jsxs(a.Menu.Item,{onSelect:s,children:[t.jsx(a.LuIcon,{icon:ue}),"Delete section"]})]})]})]})]})});Zr.displayName="FieldSectionWithActions";const Qr=d.memo(()=>{var c;const{handleSubmit:i}=Y.useFormContext(),{errors:n}=Y.useFormState(),{onSave:e,onCancel:r}=d.use(ee),{fieldSchema:o}=d.use(ee),s=d.useCallback(()=>{o.addFieldSection(new X({identifier:N.v4(),fields:[]}))},[o]),l=d.useCallback(async()=>{try{const h=o.serialize(),p=Ne.reseedFieldSections(h),m=JSON.stringify(p);await navigator.clipboard.writeText(m),a.toast.success({title:"Sections copied",description:"All sections JSON copied to clipboard."})}catch{a.toast.error({title:"Copy failed",description:"Unable to copy the sections JSON."})}},[o]),f=d.useCallback(async()=>{let h="";try{h=await navigator.clipboard.readText()}catch{a.toast.error({title:"Paste failed",description:"Unable to read clipboard contents."});return}const p=h.trim();if(!p){a.toast.error({title:"Paste failed",description:"Clipboard is empty."});return}let m;try{m=JSON.parse(p)}catch{a.toast.error({title:"Invalid JSON",description:"Check the JSON and try again."});return}const g=Array.isArray(m)?m:[m],V=[];for(const w of g){if(!w||typeof w!="object")continue;const S=w;if(S.type!=="section"||!Array.isArray(S.fields))continue;const v={type:"section",identifier:typeof S.identifier=="string"?S.identifier:N.v4(),label:typeof S.label=="string"||S.label===null?S.label:null,description:typeof S.description=="string"||S.description===null?S.description:null,conditions:S.conditions&&typeof S.conditions=="object"?S.conditions:{},fields:S.fields};try{V.push(X.deserialize(v))}catch{}}if(V.length===0){a.toast.error({title:"Paste failed",description:"No valid sections found in the JSON."});return}const F=o.fieldSections.length;V.forEach((w,S)=>{o.addFieldSection(w,F+S)}),a.toast.success({title:"Sections pasted",description:"Serialized JSON imported successfully."})},[o]);return t.jsxs("form",{className:"flex flex-col gap-4",onSubmit:i(e),children:[t.jsxs("div",{className:"flex flex-col gap-4",children:[t.jsxs("div",{className:"flex items-center justify-end gap-2",children:[t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",onClick:l,children:[t.jsx(a.LuIcon,{icon:Kn})," Copy JSON"]}),t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",onClick:f,children:[t.jsx(a.LuIcon,{icon:Yn})," Paste JSON"]})]}),o.fieldSections.map((h,p)=>t.jsx(Zr,{fieldSection:h,sectionIndex:p},h.identifier)),t.jsxs(a.Button,{className:"mb-4",type:"button",variant:"soft",accentColor:"base",size:"sm",onClick:s,children:[t.jsx(a.LuIcon,{icon:Z})," Add section"]})]}),!!((c=n.fields)!=null&&c.message)&&t.jsx(a.Text,{size:"xs",accentColor:"danger",children:n.fields.message}),t.jsxs(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:[r&&t.jsx(a.Button,{type:"button",variant:"soft",accentColor:"base",onClick:r,children:"Cancel"}),t.jsx(a.Button,{type:"submit",variant:"surface",children:"Save"})]})]})});Qr.displayName="FormBuilderListBuilder";function Rr(i){const n=e=>{const r={};for(const[o,s]of Object.entries(e))typeof s=="string"?r[o]={type:"validate",message:s}:r[o]=n(s);return r};return n(i)}const eo=d.memo(d.forwardRef((i,n)=>{const{disabled:e=!1,fieldSchema:r,values:o={},onValuesChange:s,onSubmit:l,submitText:f="Submit",hideSubmit:c=!1,cancelText:h,onCancel:p,hideCancel:m=!1,className:g,submitButtonProps:V,cancelButtonProps:F,cancelIcon:w,submitIcon:S,size:v="md"}=i,I=d.useMemo(()=>r.initializeValues(o),[r,o]),q=d.useCallback(Q=>{l==null||l(Q)},[l]),z=Y.useForm({values:I,mode:"onBlur",criteriaMode:"all",disabled:e,resolver:Q=>{const J=r.validateValues(Q),K=Rr(J);return Object.keys(J).length>0?{values:{},errors:K}:{values:Q,errors:{}}}}),b=d.useCallback(Q=>{s==null||s(Q)},[s]);d.useEffect(()=>{const{unsubscribe:Q}=z.watch((J,{type:K})=>{K==="change"&&b(J)});return()=>{Q()}},[z,b]);const L=at(r.getFieldSections()),G=d.useMemo(()=>({fieldSchema:r,size:v}),[r,v]),ie=!m&&!!p,ce=!c;return t.jsx(Y.FormProvider,{...z,children:t.jsx(B,{value:G,children:t.jsxs("form",{ref:n,className:R.cx(g,"flex flex-col gap-4"),onSubmit:z.handleSubmit(q),children:[t.jsx("div",{className:Qo({size:v}),children:L}),!e&&(ie||ce)?t.jsxs(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:v,children:[ie?t.jsxs(a.Button,{accentColor:"base",type:"button",variant:"soft",onClick:p,...F,children:[t.jsx(a.LuIcon,{icon:w??re}),h]}):null,ce?t.jsxs(a.Button,{type:"submit",accentColor:"primary",variant:"surface",...V,children:[t.jsx(a.LuIcon,{icon:S??W}),f]}):null]}):null]})})})})),io=d.memo(()=>{const{fieldSchema:i}=d.use(ee);return t.jsx(eo,{fieldSchema:i,disabled:!1})});io.displayName="FormBuilderPreview";const no=d.memo(i=>{const{children:n,initialFields:e,onSave:r,onCancel:o,disableRequiredFields:s=!1}=i,l=d.useCallback(F=>{var q;const w={};(!F.fields||F.fields.length===0)&&(w.fields="At least one field is required.");const S=[];for(const[z,b]of F.fields.entries())for(const[L,G]of b.fields.entries()){const ie=((q=Pr(G.type,`fields.${z}.fields.${L}`))==null?void 0:q.map(({field:ce})=>ce))??[];S.push(...ie)}const v={};for(const z of S)v[z.identifier]=Hn(F,z.identifier);const I=jn(S,v);return Object.keys(I).length>0&&(w.fields=I.fields),Object.keys(w).length>0&&a.toast.error({title:"Some form settings are invalid",description:"Please check settings highlighted in red."}),w},[]),f=d.useMemo(()=>({fields:e??[]}),[e]),c=Y.useForm({values:f,mode:"onSubmit",criteriaMode:"all",reValidateMode:"onSubmit",resolver:F=>{const w=l(F),S=Rr(w);return Object.keys(w).length>0?{values:{},errors:S}:{values:F,errors:{}}}}),h=d.useCallback(F=>{c.setValue("fields",F.serialize())},[c]),p=Y.useWatch({control:c.control,compute:F=>F.fields}),m=d.useMemo(()=>{const F=Ne.deserialize(p);return F.observe(h),F},[p,h]),g=d.useMemo(()=>({fieldSchema:m,disableRequiredFields:s,onSave:r,onCancel:o}),[s,r,o,m]),V=d.useMemo(()=>({fieldSchema:m,size:"sm"}),[m]);return t.jsx(ee,{value:g,children:t.jsx(B,{value:V,children:t.jsx(Y.FormProvider,{...c,children:n})})})});no.displayName="FormBuilderRoot";const sa={Root:no,FlowBuilder:Xr,ListBuilder:Qr,Preview:io};u.BaseCondition=P,u.BaseField=k,u.BaseFormElement=Di,u.BaseOptionsField=Pe,u.BaseStringField=Hi,u.BooleanEqualsConditionModifier=bt,u.BooleanField=fe,u.BooleanFieldCondition=He,u.BooleanFieldConditionCell=Xt,u.BooleanFieldInput=Gi,u.BooleanNotEqualsConditionModifier=Nt,u.CheckboxListField=pe,u.CheckboxListFieldCondition=Je,u.CheckboxListFieldConditionCell=Yt,u.CheckboxListFieldInput=Ji,u.ConditionManager=Mi,u.DateAfterConditionModifier=qt,u.DateBeforeConditionModifier=It,u.DateEqualsConditionModifier=Mt,u.DateField=xe,u.DateFieldCondition=We,u.DateFieldConditionCell=Qt,u.DateFieldInput=Wi,u.DateNotEqualsConditionModifier=xt,u.DateRangeInConditionModifier=Ot,u.DateRangeNotInConditionModifier=_t,u.DoesNotHaveFilesConditionModifier=Lt,u.FIELD_TYPES=St,u.FieldSchema=Ne,u.FieldSection=X,u.FieldSectionLayout=En,u.FieldTypeGroup=O,u.FieldTypeToClsMapping=Cn,u.FieldsRenderer=eo,u.FileCard=$i,u.FormBuilder=sa,u.HasFilesConditionModifier=Tt,u.ImageCard=Zi,u.ImageFile=Me,u.ImageViewer=ji,u.ImageViewerProvider=ot,u.InputWithLabel=A,u.LONG_TEXT_FIELD_MAX_LENGTH=je,u.MultiSelectField=te,u.MultiSelectFieldCondition=Xe,u.MultiSelectFieldConditionCell=er,u.MultiSelectFieldInput=Xi,u.MultiStringField=he,u.MultiStringFieldCondition=Ke,u.MultiStringFieldConditionCell=nr,u.MultiStringFieldInput=Ui,u.NumberEqualsConditionModifier=yn,u.NumberField=H,u.NumberFieldCondition=Ye,u.NumberFieldConditionCell=rr,u.NumberFieldInput=ki,u.NumberGreaterThanConditionModifier=wn,u.NumberGreaterThanOrEqualsConditionModifier=Fn,u.NumberLessThanConditionModifier=Sn,u.NumberLessThanOrEqualsConditionModifier=zn,u.NumberNotEqualsConditionModifier=vn,u.NumberRangeInConditionModifier=bn,u.NumberRangeNotInConditionModifier=Nn,u.OTPField=me,u.OTPFieldCondition=Ze,u.OTPFieldConditionCell=ar,u.OTPFieldInput=Yi,u.Observable=De,u.PassFailArrayExcludesConditionModifier=$t,u.PassFailArrayIncludesConditionModifier=Et,u.PassFailEqualsConditionModifier=Bt,u.PassFailField=Ve,u.PassFailFieldCondition=Qe,u.PassFailFieldConditionCell=lr,u.PassFailFieldInput=nn,u.PassFailNotEqualsConditionModifier=At,u.RadioField=ye,u.RadioFieldCondition=Re,u.RadioFieldConditionCell=cr,u.RadioFieldInput=rn,u.RatingField=ve,u.RatingFieldCondition=ei,u.RatingFieldConditionCell=hr,u.RatingFieldInput=on,u.SHORT_TEXT_FIELD_MAX_LENGTH=ln,u.ScanField=qe,u.ScanFieldCondition=ii,u.ScanFieldConditionCell=pr,u.ScanFieldInput=sn,u.Scanner=mi,u.ScannerProvider=gt,u.SelectField=oe,u.SelectFieldCondition=ni,u.SelectFieldConditionCell=gr,u.SelectFieldInput=Ki,u.StringArrayEqualsConditionModifier=wi,u.StringArrayEveryConditionModifier=vi,u.StringArrayExcludesConditionModifier=xn,u.StringArrayIncludesConditionModifier=Mn,u.StringArrayNoneConditionModifier=zi,u.StringArrayNotEqualsConditionModifier=Fi,u.StringArraySomeConditionModifier=Si,u.StringEqualsConditionModifier=le,u.StringExcludesConditionModifier=Be,u.StringField=Se,u.StringFieldCondition=ti,u.StringFieldConditionCell=Vr,u.StringFieldInput=dn,u.StringIncludesConditionModifier=Le,u.StringNotEqualsConditionModifier=de,u.TextField=ze,u.TextFieldCondition=ri,u.TextFieldConditionCell=vr,u.TextFieldInput=cn,u.TimeAfterConditionModifier=Ut,u.TimeBeforeConditionModifier=jt,u.TimeEqualsConditionModifier=Dt,u.TimeField=Oe,u.TimeFieldCondition=oi,u.TimeFieldConditionCell=zr,u.TimeFieldControl=yi,u.TimeFieldInput=pn,u.TimeNotEqualsConditionModifier=Pt,u.TimeRangeInConditionModifier=Gt,u.TimeRangeNotInConditionModifier=kt,u.UNLABELLED_FIELD_LABEL=$,u.UNLABELLED_SECTION_LABEL=Vn,u.URLField=_e,u.URLFieldCondition=si,u.URLFieldConditionCell=Nr,u.URLFieldInput=gn,u.UTC_OFFSETS=un,u.UTC_OFFSETS_SET=Ct,u.UUIDFile=ae,u.UUIDPromise=Ce,u.UploadField=we,u.UploadFieldCondition=ai,u.UploadFieldConditionCell=Fr,u.UploadFieldInput=mn,u.VideoCard=Ri,u.VideoFile=Qi,u.areFieldValuesBlank=$r,u.areFieldValuesEqual=Bn,u.areFileAndPromiseArraysEqual=pi,u.arePassFieldValuesEqual=ht,u.areSerializedPassFailFieldValuesEqual=ft,u.awaitFilesAndPromises=aa,u.blankFieldValues=An,u.changedFieldValues=Ar,u.cleanConditions=Tn,u.cleanFieldValues=Ii,u.cleanSerializedConditions=_n,u.cleanSerializedFieldValues=Ln,u.createCondition=$n,u.createConditionModifierConfig=y,u.createField=_i,u.createTime=hn,u.deserialize=qr,u.deserializeCondition=xr,u.deserializeConditions=On,u.deserializeField=xi,u.deserializeFieldValues=_r,u.deserializeFields=Xo,u.deserializeOnlyFields=Ko,u.deserializePassFailFieldValue=ut,u.extractFilesAndPromisesFromFieldValues=Tr,u.fieldDataMapping=T,u.fieldSpacingCva=qi,u.fieldTypeGroupDataMapping=zt,u.flattenFields=Yo,u.formatTime=Vi,u.formatUTCOffset=Ci,u.getCurrentUTCOffset=yt,u.getFieldsMapping=Zo,u.getUTCMinuteOfDay=se,u.getUTCOffsetMinutes=vt,u.initializeFieldValues=Br,u.insertFilesAndPromisesToFieldValues=Lr,u.isFileAndPromiseArray=st,u.isPassFailFieldStatus=tn,u.isPassFailFieldValue=dt,u.isSerializedPassFailFieldValue=lt,u.isStringArray=$e,u.isTime=E,u.isTimeInRange=fn,u.isTimeRange=Ge,u.isUTCOffset=gi,u.maxFileSizeB=Ft,u.maxFileSizeKB=wt,u.maxFileSizeMB=Te,u.parseTime=Ue,u.passFailFieldStatusMapping=ge,u.passFailFieldStatuses=Ie,u.separateImagesFromFields=oa,u.serializeConditions=Ir,u.serializeFieldValues=Or,u.serializePassFailFieldValue=ct,u.unchangedFieldValues=Er,u.useConditionManager=Jo,u.useFieldInput=D,u.useFieldInputs=fi,u.useFieldSectionInputs=at,u.useImageViewer=hi,u.useObjectUrl=Pi,u.useScanner=Uo,u.useScannerContext=pt,u.validateFieldValues=jn,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})});
|