@overmap-ai/forms 1.0.35-gcs.4 → 1.0.35-gcs.6
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 +9 -1
- package/dist/forms.umd.cjs +1 -1
- package/package.json +1 -1
package/dist/forms.js
CHANGED
|
@@ -2891,7 +2891,15 @@ const On = M((i) => {
|
|
|
2891
2891
|
trySkew: s,
|
|
2892
2892
|
onDecodeResult: l,
|
|
2893
2893
|
onDecodeError: r,
|
|
2894
|
-
onError: d
|
|
2894
|
+
onError: d,
|
|
2895
|
+
constraints: {
|
|
2896
|
+
video: {
|
|
2897
|
+
width: { ideal: 1920, min: 1280 },
|
|
2898
|
+
height: { ideal: 1080, min: 720 },
|
|
2899
|
+
aspectRatio: { ideal: 16 / 9 },
|
|
2900
|
+
facingMode: "environment"
|
|
2901
|
+
}
|
|
2902
|
+
}
|
|
2895
2903
|
});
|
|
2896
2904
|
return /* @__PURE__ */ c("div", { className: "bg-(--color-background) flex size-full flex-col justify-center overflow-hidden", children: [
|
|
2897
2905
|
/* @__PURE__ */ o("div", { className: "flex w-full justify-end p-4", children: /* @__PURE__ */ o(ge.Close, { asChild: !0, children: /* @__PURE__ */ o(L, { "aria-label": "close", variant: "soft", accentColor: "base", children: /* @__PURE__ */ o(v, { icon: be }) }) }) }),
|
package/dist/forms.umd.cjs
CHANGED
|
@@ -238,4 +238,4 @@
|
|
|
238
238
|
*
|
|
239
239
|
* This source code is licensed under the ISC license.
|
|
240
240
|
* See the LICENSE file in the root directory of this source tree.
|
|
241
|
-
*/const te=O("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),Gi=d.memo(i=>{const{ref:o,file:e,className:t,error:a,rightSlot:r,size:l,...u}=i;return n.jsxs(s.Card,{className:ne.cx(t,"flex w-full items-center gap-2"),ref:o,size:"xs",...u,children:[a?n.jsx(s.LuIcon,{icon:ta,color:"var(--base-a11)"}):n.jsx(s.LuIcon,{icon:oa,color:"var(--base-a11)"}),a?n.jsx(s.Text,{accentColor:"danger",className:"truncate",size:l,children:a}):e?n.jsx(s.Text,{className:"truncate",size:l,children:e.name}):n.jsx("div",{className:"flex w-full justify-center",children:n.jsx(s.Spinner,{})}),r]})});Gi.displayName="FileCard";function He(i){return Array.isArray(i)?i.every(o=>typeof o=="string"):!1}class Je{constructor(){p(this,"observers",new Set)}notify(o){for(const e of this.observers)e(o)}observe(o){return this.observers.add(o),()=>{this.observers.delete(o)}}}class Ui extends Je{constructor(e){const{identifier:t}=e;super();p(this,"identifier");this.identifier=t}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 X extends Ui{constructor(e){const{label:t,description:a=null,required:r,image:l,...u}=e;super(u);p(this,"label");p(this,"description");p(this,"required");p(this,"image");p(this,"onlyValidateAfterTouched",!0);this.label=t,this.description=a,this.required=r,this.image=l}getError(e){if(this.required&&this.isValueBlank(e))return"This field is required.";for(const t of this.getFieldValidators()){const a=t(e);if(a)return a}}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:t,description:a=null,required:r,image:l,...u}=e;this.label=t??this.label,this.description=a??this.description,this.required=r??this.required,this.image=l??this.image,super.setOptions(u)}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[]}}p(X,"fieldTypeName"),p(X,"fieldTypeDescription");const it=d.createContext(()=>{throw new Error("No ImageViewerProvider found")}),Ci=()=>d.useContext(it),ki=i=>{const[o,e]=d.useState(null);return d.useEffect(()=>{const t=URL.createObjectURL(i);return e(t),()=>{URL.revokeObjectURL(t)}},[i]),o},yi=d.memo(i=>{const{file:o,...e}=i,t=ki(o);return t?n.jsx("img",{src:t,alt:o.name,...e}):null});yi.displayName="ImageFile";const Hi=d.memo(i=>{const{file:o,onClose:e}=i,t=d.useCallback(()=>{jn.saveAs(o,o.name)},[o]);return n.jsx(s.Overlay.Root,{open:!0,onOpenChange:e,children:n.jsxs(s.Overlay.Content,{onOpenAutoFocus:a=>a.preventDefault(),children:[n.jsxs(s.ButtonGroup,{className:"flex gap-2 items-center top-0 absolute right-0 p-2",accentColor:"base",variant:"ghost",children:[n.jsxs(s.Tooltip.Root,{children:[n.jsx(s.Tooltip.Trigger,{asChild:!0,children:n.jsx(s.IconButton,{onClick:t,"aria-label":"download",children:n.jsx(s.LuIcon,{icon:Xn})})}),n.jsx(s.Tooltip.Content,{size:"sm",children:"Download"})]}),n.jsx(s.Separator,{orientation:"vertical",size:"sm"}),n.jsx(s.Overlay.Close,{asChild:!0,children:n.jsx(s.IconButton,{onClick:e,"aria-label":"close",children:n.jsx(s.LuIcon,{icon:te})})})]}),n.jsx("figure",{className:"size-full overflow-hidden p-4 flex justify-center items-center",children:n.jsx(yi,{className:"max-w-full max-h-full",file:o})})]})})});Hi.displayName="ImageViewer";const nt=d.memo(i=>{const{children:o}=i,[e,t]=d.useState(null),a=d.useCallback(()=>{t(null)},[]),r=d.useCallback(u=>{t(u(a))},[a]),l=d.useCallback(()=>{e&&(e.onClose&&e.onClose(),a())},[a,e]);return n.jsxs(it.Provider,{value:r,children:[o,e&&n.jsx(Hi,{file:e.file,onClose:l})]})});nt.displayName="FileViewerProvider";const U=d.memo(i=>{const{className:o,label:e,error:t,description:a,children:r,inputId:l,labelId:u,image:c,size:f}=i,[g,m]=d.useState(void 0),V=Ci();d.useEffect(()=>{c instanceof Promise?c.then(m).catch(console.error):m(c)},[c]);const C=g?URL.createObjectURL(g):void 0,y=d.useCallback(()=>{g&&V(()=>({file:g}))},[V,g]);return n.jsxs("div",{className:"flex flex-col gap-1",children:[g&&n.jsx("img",{className:"h-[100px] w-full min-w-[300px] cursor-pointer rounded-md object-cover",src:C,alt:g.name,onClick:y}),(!!e||!!a)&&n.jsxs("div",{className:"flex flex-col",children:[n.jsx("label",{className:ne.cx(o,"w-max max-w-full"),htmlFor:l,children:n.jsx(s.Text,{size:f,id:u,className:"text-wrap",children:e})}),!!a&&n.jsx(s.Text,{accentColor:"base",size:f,children:a})]}),r,!!t&&n.jsx(s.Text,{accentColor:"danger",size:f,children:t})]})}),Va=ne.cva(["flex","flex-col"],{variants:{size:{xs:["gap-2"],sm:["gap-4"],md:["gap-6"],lg:["gap-8"],xl:["gap-10"]}}}),We=(i,o)=>{const{size:e}=o;return n.jsx("div",{className:Va({size:e}),children:i.map((t,a)=>n.jsx(d.Fragment,{children:t.render({index:a,...o})},t.identifier))})},k=i=>{const{field:o,size:e,showInputOnly:t,onValuesChange:a,...r}=i,[l,u,c]=ie.useField(o.identifier),{touched:f}=u,g=u.error??"",m=o.identifier,V=`${m}-label`,C=o.required?`${o.label} *`:o.label,y=o.description??"",v=d.useMemo(()=>({...l,onChange:z=>{c.setValue(z,!1),a==null||a(o.identifier,z),(f||!o.onlyValidateAfterTouched)&&c.setError(o.getError(z))},onBlur:z=>{c.setTouched(!0,!1),c.setError(o.getError(z))}}),[o,l,c,a,f]);return[{error:g,size:e,inputId:m,labelId:V,label:C,description:y,showInputOnly:t,fieldProps:v,helpers:c,field:o,touched:f},{...r,"aria-labelledby":V}]},Ji=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f},{disabled:g}]=k(i),m=a?"":u,{value:V,name:C,onChange:y,onBlur:v}=f,S=`${o}-droppable`,[b,z]=d.useState(""),[w,N]=d.useState(""),M=d.useCallback(_=>{y(_),v(_)},[y,v]),q=d.useCallback(_=>{V&&V.findIndex(P=>P===_.target.value.trim())>=0?N("All options must be unique"):_.target.value?N(""):N("Option cannot be empty"),z(_.target.value)},[z,V]),L=d.useCallback(()=>{if(w)return;if(!b.trim()){N("Option cannot be empty");return}const _=b.trim();M([...V,_]),z("")},[b,w,M,V]),x=d.useCallback(_=>{_.key==="Enter"&&(_.preventDefault(),L())},[L]),B=d.useCallback(_=>{const P=Array.from(V);P.splice(_,1),M(P)},[V,M]),W=d.useCallback(_=>{if(!_.destination)return;const P=_.source.index,G=_.destination.index,T=Array.from(V),[D]=T.splice(P,1);T.splice(G,0,D),M(T)},[M,V]),Q=d.useCallback(()=>{v(V)},[v,V]);return n.jsx(Ei.DragDropContext,{onDragEnd:W,children:n.jsxs(U,{size:t,inputId:o,labelId:e,label:m,description:c,error:w||l,image:a?void 0:r.image,children:[(!g||V.length===0)&&n.jsxs("div",{className:"flex gap-2",children:[n.jsx(s.Input.Root,{className:"grow",accentColor:"base",variant:"surface",size:t,children:n.jsx(s.Input.Field,{value:b,onChange:q,onKeyDown:x,id:o,placeholder:r.placeholder,onBlur:Q,name:C,disabled:g})}),n.jsx(s.IconButton,{size:t,accentColor:"base",variant:"soft",type:"button","aria-label":"Add option",disabled:!!w||g,onClick:L,children:n.jsx(s.LuIcon,{icon:ee})})]}),V.length!==0&&n.jsx(Ei.Droppable,{droppableId:S,children:_=>n.jsxs("div",{className:"flex flex-col gap-1",..._.droppableProps,ref:_.innerRef,children:[V.map((P,G)=>n.jsx(Ei.Draggable,{draggableId:`${P}-draggable`,index:G,isDragDisabled:g,children:({draggableProps:T,dragHandleProps:D,innerRef:Bi})=>n.jsxs(s.Badge,{...D,...T,ref:Bi,className:"flex items-center justify-between gap-2",accentColor:"base",size:t,variant:"soft",children:[n.jsx(s.Text,{className:"truncate",highContrast:!0,children:typeof P=="object"&&"label"in P?P.label:P}),n.jsx(s.IconButton,{className:"bg-transparent!",size:t,variant:"ghost",type:"button","aria-label":"Delete option",accentColor:"base",disabled:g,onClick:()=>{B(G)},children:n.jsx(s.LuIcon,{icon:te})})]})},`${o}-${P}-${G}`)),_.placeholder]})})]})})});Ji.displayName="MultiStringFieldInput";const qe=class qe extends X{constructor(e){const{minimum_length:t,maximum_length:a,placeholder:r,...l}=e;super(l);p(this,"type","multi-string");p(this,"minLength");p(this,"maxLength");p(this,"placeholder");p(this,"onlyValidateAfterTouched",!1);this.minLength=t??0,this.maxLength=a??1/0,this.placeholder=r??"Press enter to add a new option"}render(e){return n.jsx(Ji,{field:this,...e})}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 qe({...this.getOptions(),identifier:e})}setOptions(e){const{minimum_length:t,maximum_length:a,placeholder:r,...l}=e;this.minLength=t??this.minLength,this.maxLength=a??this.maxLength,this.placeholder=r??this.placeholder,super.setOptions(l)}serializeValue(e){return e}deserializeValue(e){return e}getFieldValidators(){const e=super.getFieldValidators();return e.push(t=>{if(Array.isArray(t)&&t.length<this.minLength)return`Must have at least ${this.minLength} options.`}),e.push(t=>{if(Array.isArray(t)&&t.length>this.maxLength)return`Must have at most ${this.maxLength} options.`}),e}static deserialize(e){return new qe(e)}isSerializedValue(e){return He(e)}isValue(e){return He(e)}blankValue(){return[]}areValuesEqual(e,t){const a=new Set(e),r=new Set(t);return a.size===r.size&&a.isSubsetOf(r)}blankSerializedValue(){return[]}areSerializedValuesEqual(e,t){const a=new Set(e),r=new Set(t);return a.size===r.size&&a.isSubsetOf(r)}};p(qe,"fieldTypeName","Multi-string"),p(qe,"fieldTypeDescription","Allows the user to provide multiple unique strings.");let Ce=qe;class Xe extends X{constructor(e){const{options:t,...a}=e;super(a);p(this,"options");p(this,"onlyValidateAfterTouched",!1);this.options=t.map(r=>(typeof r=="string"&&(r={label:r,value:r}),r))}serialize(){return{...super.serialize(),options:this.options}}getOptions(){return{...super.getOptions(),options:this.options}}setOptions(e){const{options:t,...a}=e;this.options=(t==null?void 0:t.map(r=>(typeof r=="string"&&(r={label:r,value:r}),r)))??this.options,super.setOptions(a)}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new Ce({label:"Options",description:"List possible options for the user to select from.",required:!0,identifier:`${t}options`,minimum_length:2}),showDirectly:!0}]}}const Wi=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f},{disabled:g}]=k(i),{name:m,onBlur:V,onChange:C,value:y}=f,v=a?"":u,S=d.useCallback(z=>{C(!!z),V(!!z)},[V,C]),b=d.useCallback(()=>{V(y)},[V,y]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:v,description:c,error:l,image:a?void 0:r.image,children:n.jsx(s.Checkbox.Root,{id:o,name:m,checked:y??!1,onCheckedChange:S,onBlur:b,size:t,accentColor:"base",variant:"surface",disabled:g,children:n.jsx(s.Checkbox.Indicator,{children:n.jsx(s.LuIcon,{icon:Y})})})})});Wi.displayName="BooleanFieldInput";const Le=class Le extends X{constructor(e){super(e);p(this,"type","boolean");p(this,"onlyValidateAfterTouched",!1)}serialize(){return super.serialize()}getOptions(){return super.getOptions()}setOptions(e){super.setOptions(e)}duplicate(e){return new Le({...this.getOptions(),identifier:e})}static deserialize(e){return new Le(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(Wi,{...e,field:this})}isSerializedValue(e){return typeof e=="boolean"}isValue(e){return typeof e=="boolean"}blankValue(){return!1}blankSerializedValue(){return!1}areSerializedValuesEqual(e,t){return e===t}areValuesEqual(e,t){return e===t}};p(Le,"fieldTypeName","Checkbox"),p(Le,"fieldTypeDescription","Perfect for both optional and required yes/no questions.");let ye=Le;const Xi=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f,touched:g,helpers:m},{disabled:V}]=k(i),{name:C,onBlur:y,onChange:v,value:S}=f,b=a?"":u,[z,w]=d.useState(null);d.useEffect(()=>{w(S)},[S]);const N=d.useCallback(L=>{const x=L.target.valueAsNumber,B=isNaN(x)?null:x;w(B),(g||!r.onlyValidateAfterTouched)&&m.setError(r.getError(B))},[r,m,g]),M=d.useCallback(L=>{L.key==="Enter"&&L.preventDefault()},[]),q=d.useCallback(()=>{v(z),y(z)},[z,y,v]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:b,description:c,error:l,image:a?void 0:r.image,children:n.jsx(s.Input.Root,{accentColor:"base",variant:"surface",size:t,children:n.jsx(s.Input.Field,{id:o,name:C,onChange:N,onBlur:q,value:z??"",type:"number",min:r.minimum,max:r.maximum,step:r.integers?1:"any",placeholder:r.placeholder??"Enter a number",disabled:V,onKeyDown:M})})})});Xi.displayName="NumberFieldInput";const re=class re extends X{constructor(e){const{minimum:t=Number.MIN_SAFE_INTEGER,maximum:a=Number.MAX_SAFE_INTEGER,integers:r=!1,placeholder:l,...u}=e;super(u);p(this,"type","number");p(this,"minimum");p(this,"maximum");p(this,"integers");p(this,"placeholder");this.minimum=t,this.maximum=a,this.integers=r,this.placeholder=l}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new re({label:"Minimum",description:"Minimum value",integers:!0,required:!1,identifier:`${t}minimum`}),showDirectly:!1},{field:new re({label:"Maximum",description:"Maximum value",integers:!0,required:!1,identifier:`${t}maximum`}),showDirectly:!1},{field:new ye({label:"Integers",description:"Whole numbers only",required:!1,identifier:`${t}integers`}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),t=this.minimum,a=this.maximum;return typeof t=="number"&&e.push(r=>{if(typeof r=="number"&&r<t)return`Must be at least ${this.minimum}.`}),typeof a=="number"&&e.push(r=>{if(typeof r=="number"&&r>a)return`Must be at most ${this.maximum}.`}),this.integers&&e.push(r=>{if(typeof r=="number"&&!Number.isInteger(r))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 re({...this.getOptions(),identifier:e})}setOptions(e){const{minimum:t,maximum:a,integers:r,placeholder:l,...u}=e;this.minimum=t??this.minimum,this.maximum=a??this.maximum,this.integers=r??this.integers,this.placeholder=l??this.placeholder,super.setOptions(u)}static deserialize(e){return new re(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(Xi,{field:this,...e})}isSerializedValue(e){return this.isValue(e)}isValue(e){return typeof e=="number"&&!isNaN(e)||e===null}areValuesEqual(e,t){return e===t}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,t){return e===t}};p(re,"fieldTypeName","Number"),p(re,"fieldTypeDescription","Allows specifying a number within a given range.");let R=re;const Ve=1e4;class Ki extends X{constructor(e){const{minLength:t,maxLength:a,placeholder:r="",...l}=e;super(l);p(this,"minLength");p(this,"maxLength");p(this,"placeholder");this.minLength=t?Math.max(t,0):void 0,this.maxLength=a?Math.max(a,0):Ve,this.placeholder=r}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new R({label:"Minimum length",description:"Minimum number of characters",required:!1,identifier:`${t}minimum_length`,minimum:0,maximum:100,integers:!0}),showDirectly:!1},{field:new R({label:"Maximum length",description:"Maximum number of characters",required:!1,identifier:`${t}maximum_length`,minimum:1,maximum:Ve,integers:!0}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators();return this.minLength&&e.push(t=>{if(this.minLength&&(!t||t.length<this.minLength))return!this.required&&!t?null:`Minimum ${this.minLength} character(s).`}),this.maxLength&&e.push(t=>{if(typeof t=="string"&&this.maxLength&&t.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:t,maxLength:a,placeholder:r,...l}=e;this.minLength=t,this.maxLength=a??this.maxLength,this.placeholder=r,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,t){return e===t}areValuesEqual(e,t){return e===t}}const Yi=d.memo(i=>{const[{inputId:o,labelId:e,size:t,field:a,showInputOnly:r,error:l,label:u,description:c,fieldProps:f},{disabled:g}]=k(i),{value:m,name:V,onChange:C,onBlur:y}=f,v=r?"":u,S=d.useCallback(b=>{C(b),y(b)},[y,C]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:v,description:c,error:l,image:r?void 0:a.image,children:n.jsx(s.CheckboxGroup.Root,{id:o,name:V,className:"flex flex-col gap-1",accentColor:"base",variant:"surface",size:t,values:m,onValuesChange:S,disabled:g,children:a.options.map((b,z)=>n.jsxs("label",{className:"flex gap-2 items-center min-w-0",children:[n.jsx(s.CheckboxGroup.Item,{value:b.value,children:n.jsx(s.CheckboxGroup.ItemIndicator,{children:n.jsx(s.LuIcon,{icon:Y})})}),n.jsx(s.Text,{size:t,accentColor:"base",className:"truncate",children:b.label})]},`${o}-${b.value}-${z}`))})})});Yi.displayName="CheckboxListFieldInput";const Ae=class Ae extends Xe{constructor(e){super(e);p(this,"type","checkbox-list");p(this,"onlyValidateAfterTouched",!1)}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new Ae({...this.getOptions(),identifier:e})}static deserialize(e){return new Ae(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(Yi,{field:this,...e})}isSerializedValue(e){if(!He(e))return!1;const t=new Set(this.options.map(({value:a})=>a));return e.every(a=>t.has(a))}isValue(e){return this.isSerializedValue(e)}blankValue(){return[]}blankSerializedValue(){return[]}areSerializedValuesEqual(e,t){const a=new Set(e),r=new Set(t);return a.size===r.size&&a.isSubsetOf(r)}areValuesEqual(e,t){const a=new Set(e),r=new Set(t);return a.size===r.size&&a.isSubsetOf(r)}};p(Ae,"fieldTypeName","Checkbox list"),p(Ae,"fieldTypeDescription","Allows the user to select a multiple options from a list.");let ve=Ae;const Zi=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f},{disabled:g}]=k(i),{value:m,name:V,onChange:C,onBlur:y}=f,[v,S]=d.useState(!1),b=a?"":u,z=d.useCallback(N=>{C(N??null),S(!1)},[C]),w=d.useCallback(N=>{S(N),N||y(m)},[y,m]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:b,description:c,error:l,image:a?void 0:r.image,children:n.jsxs(s.Popover.Root,{open:v,onOpenChange:w,children:[n.jsx(s.Popover.Trigger,{asChild:!0,children:n.jsxs(s.Button,{id:o,name:V,type:"button",className:"!justify-between",accentColor:"base",variant:"surface",size:t,disabled:g,children:[n.jsx(s.Text,{className:"truncate",highContrast:!!m,children:m?m.toLocaleString(void 0,{year:"numeric",month:"2-digit",day:"2-digit"}):"yyyy-mm-dd"}),n.jsx(s.LuIcon,{icon:Di})]})}),n.jsx(s.Popover.Content,{align:"start",size:t,children:n.jsx(s.DayPicker,{size:t,required:!1,mode:"single",variant:"solid",selected:m??void 0,onSelect:z})})]})})});Zi.displayName="DateFieldInput";const Te=class Te extends X{constructor(e){super(e);p(this,"type","date");p(this,"onlyValidateAfterTouched",!1)}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new Te({...this.getOptions(),identifier:e})}static deserialize(e){return new Te(e)}setOptions(e){super.setOptions(e)}serializeValue(e){return e?e.toISOString():null}deserializeValue(e){return e?new Date(e):null}render(e){return n.jsx(Zi,{field:this,...e})}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,t){return e===t}areValuesEqual(e,t){return!e&&!t?!0:!e||!t?!1:e.getTime()===t.getTime()}};p(Te,"fieldTypeName","Date"),p(Te,"fieldTypeDescription","Allows specifying a date.");let Ke=Te;const Qi=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f},{disabled:g}]=k(i),{value:m,name:V,onChange:C,onBlur:y}=f,v=a?"":u,S=d.useCallback(z=>{C(z),y(z)},[y,C]),b=d.useCallback(z=>{z||y(m)},[m,y]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:v,description:c,error:l,image:a?void 0:r.image,children:n.jsxs(s.Menu.Root,{onOpenChange:b,align:"start",children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsxs(s.Button,{id:o,name:V,className:"!justify-between",variant:"surface",type:"button",size:t,accentColor:"base",disabled:g,children:[n.jsx(s.Text,{className:"truncate",highContrast:m&&m.length>0,children:m&&m.length>0?m.join(", "):r.placeholder??"Select one or more..."}),n.jsx(s.LuIcon,{icon:Di})]})}),n.jsx(s.Menu.Content,{size:t,children:n.jsx(s.Menu.Scroll,{children:n.jsxs(s.Menu.MultiSelectGroup,{values:m,onValuesChange:S,children:[n.jsxs(s.Menu.SelectAllItem,{children:[n.jsx(s.Menu.CheckboxItemIndicator,{children:z=>z?n.jsx(s.LuIcon,{icon:mi}):n.jsx(s.LuIcon,{icon:Y})}),"Select all"]}),r.options.map((z,w)=>n.jsxs(s.Menu.MultiSelectItem,{value:z.value,children:[n.jsx(s.Menu.SelectedIndicator,{children:n.jsx(s.LuIcon,{icon:Y})}),z.label]},`${o}-${z.value}-${w}`))]})})})]})})});Qi.displayName="MultiSelectFieldInput";const _e=class _e extends Xe{constructor(e){const{placeholder:t,...a}=e;super(a);p(this,"type","multi-select");p(this,"placeholder");this.placeholder=t}serialize(){return super.serialize()}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new _e({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:t}=e;this.placeholder=t,super.setOptions(e)}static deserialize(e){return new _e(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(Qi,{field:this,...e})}isSerializedValue(e){if(!He(e))return!1;const t=new Set(this.options.map(({value:a})=>a));return e.every(a=>t.has(a))}isValue(e){return this.isSerializedValue(e)}blankValue(){return[]}areValuesEqual(e,t){const a=new Set(e),r=new Set(t);return a.size===r.size&&a.isSubsetOf(r)}blankSerializedValue(){return[]}areSerializedValuesEqual(e,t){const a=new Set(e),r=new Set(t);return a.size===r.size&&a.isSubsetOf(r)}};p(_e,"fieldTypeName","Multi-select"),p(_e,"fieldTypeDescription","Allows the user to select a multiple options from a list of options.");let oe=_e;const Ri=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,label:l,description:u,error:c,fieldProps:f},{disabled:g}]=k(i),{name:m,onChange:V,onBlur:C,value:y}=f,v=a?"":l,S=d.useCallback(z=>{V(z??null),C(z??null)},[C,V]),b=d.useMemo(()=>r.options.find(z=>z.value===y),[r.options,y]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:v,description:u,error:c,image:a?void 0:r.image,children:n.jsxs(s.Menu.Root,{align:"start",children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsxs(s.Button,{id:o,name:m,className:"!justify-between",accentColor:"base",variant:"surface",type:"button",size:t,disabled:g,children:[n.jsx(s.Text,{className:"truncate",highContrast:!!b,children:b?b.label:r.placeholder??"Select one..."}),n.jsx(s.LuIcon,{icon:Di})]})}),n.jsx(s.Menu.Content,{size:t,children:n.jsx(s.Menu.Scroll,{children:n.jsx(s.Menu.SelectGroup,{required:!1,value:y??void 0,onValueChange:S,children:r.options.map((z,w)=>n.jsxs(s.Menu.SelectItem,{value:z.value,children:[n.jsx(s.Menu.SelectedIndicator,{children:n.jsx(s.LuIcon,{icon:Y})}),z.label]},`${o}-${z.value}-${w}`))})})})]})})});Ri.displayName="SelectFieldInput";const Be=class Be extends Xe{constructor(e){const{placeholder:t,...a}=e;super(a);p(this,"type","select");p(this,"placeholder");this.placeholder=t}serialize(){return super.serialize()}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new Be({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:t}=e;this.placeholder=t,super.setOptions(e)}static deserialize(e){return new Be(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(Ri,{field:this,...e})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:new Set([null,...this.options.map(({value:a})=>a)]).has(e)}isValue(e){return this.isSerializedValue(e)}blankValue(){return null}areValuesEqual(e,t){return e===t}blankSerializedValue(){return null}areSerializedValuesEqual(e,t){return e===t}};p(Be,"fieldTypeName","Dropdown"),p(Be,"fieldTypeDescription","Allows the user to select a single option from a list of options.");let de=Be;const en=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f,touched:g,helpers:m},{formId:V,disabled:C}]=k(i),{name:y,onBlur:v,onChange:S,value:b}=f,z=a?"":u,[w,N]=d.useState(""),M=d.useMemo(()=>Array.from({length:r.length},()=>I.v4()),[r.length]);d.useEffect(()=>{N(b)},[b]);const q=d.useCallback(x=>{N(x),(g||!r.onlyValidateAfterTouched)&&m.setError(r.getError(x))},[r,m,g]),L=d.useCallback(()=>{S(w),v(w)},[w,v,S]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:z,description:c,error:l,image:a?void 0:r.image,children:n.jsxs(s.OneTimePasswordField.Root,{id:o,name:y,value:w,onValueChange:q,validationType:r.validationType,form:V,disabled:C,orientation:"horizontal",dir:"ltr",type:"text",autoComplete:"off",autoFocus:!1,autoSubmit:!1,className:"flex gap-1 h-max w-full overflow-x-auto p-0.25",accentColor:"base",variant:"surface",size:t,onBlur:L,children:[M.map(x=>n.jsx(s.OneTimePasswordField.Input,{id:x},x)),n.jsx(s.OneTimePasswordField.HiddenInput,{})]})})});en.displayName="OTPFieldInput";const Ee=class Ee extends X{constructor(e){const{length:t,validationType:a,...r}=e;super(r);p(this,"type","otp");p(this,"length");p(this,"validationType");this.length=t,this.validationType=a}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new R({label:"Length",integers:!0,required:!1,minimum:1,maximum:16,identifier:`${t}length`}),showDirectly:!1},{field:new de({label:"Type",required:!1,identifier:`${t}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(),t=this.length;return e.push(a=>{if(!this.isValueBlank(a)&&a.length!=t)return`Must be ${t} 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 Ee({...this.getOptions(),identifier:e})}setOptions(e){const{length:t,validationType:a,...r}=e;this.length=t??this.length,this.validationType=a??this.validationType,super.setOptions(r)}static deserialize(e){return new Ee(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(en,{field:this,...e})}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}areValuesEqual(e,t){return e===t}blankSerializedValue(){return""}areSerializedValuesEqual(e,t){return e===t}};p(Ee,"fieldTypeName","OTP"),p(Ee,"fieldTypeDescription","Allows specifying a number within a given range.");let ze=Ee;const ce={pass:{label:"Pass",icon:Zo},fail:{label:"Fail",icon:ea},na:{label:"N/A",icon:Ro}},Se=Object.keys(ce);class ae extends File{constructor(e,...t){super(...t);p(this,"uuid");this.uuid=e}static from(e,t){return new ae(e,[t],t.name,{lastModified:t.lastModified,type:t.type})}}class we extends Promise{constructor(e,t){super(e);p(this,"_uuid");this._uuid=t}get uuid(){return this._uuid}set uuid(e){this._uuid=e}static from(e,t){return new we((a,r)=>{Promise.resolve(e).then(a).catch(r)},t)}then(e,t){const a=super.then(e,t);return a.uuid=this.uuid,a}catch(e){const t=super.catch(e);return t.uuid=this.uuid,t}finally(e){const t=super.finally(e);return t.uuid=this.uuid,t}}function tt(i){return Array.isArray(i)?i.every(o=>o instanceof we||o instanceof ae):!1}function Vi(i,o){const e=new Set(i.map(({uuid:a})=>a)),t=new Set(o.map(({uuid:a})=>a));return e.size===t.size&&e.isSubsetOf(t)}const nn=d.memo(i=>{const{ref:o,file:e,error:t,rightSlot:a,className:r,size:l,...u}=i;return n.jsxs(s.Card,{className:ne.cx(r,"relative flex h-48 w-full flex-col items-center p-0!"),ref:o,size:"xs",...u,children:[!e&&!t&&n.jsx("div",{className:"absolute inset-0 grow flex items-center justify-center",children:n.jsx(s.Spinner,{})}),!!e&&!t&&n.jsx("div",{className:"flex grow w-full items-center justify-center overflow-hidden bg-clip-padding p-3",children:n.jsx(yi,{className:"max-w-full size-full object-cover",file:e})}),n.jsx(s.Separator,{size:"full"}),(!!e||!!t)&&n.jsxs("div",{className:ne.cx("flex w-full items-center gap-2 self-end p-3",{"bg-transparent":!e}),children:[t?n.jsx(s.LuIcon,{color:"var(--base-11)",icon:Yn}):e&&n.jsx(s.LuIcon,{color:"var(--base-11)",icon:Zn}),n.jsx(s.Text,{className:"truncate",size:l,children:t??(e==null?void 0:e.name)}),a]})]})});nn.displayName="ImageCard";const tn=d.memo(i=>{const{file:o,...e}=i,t=ki(o);return t?n.jsx("video",{src:t,...e}):null});tn.displayName="VideoFile";const on=d.memo(i=>{const{ref:o,file:e,className:t,error:a,rightSlot:r,size:l,...u}=i;return n.jsxs(s.Card,{className:ne.cx(t,"relative flex h-48 w-full flex-col items-center p-0!"),ref:o,size:"xs",...u,children:[!e&&!a&&n.jsx("div",{className:"absolute inset-0 grow flex items-center justify-center",children:n.jsx(s.Spinner,{})}),!!e&&!a&&n.jsx("div",{className:"flex grow w-full items-center justify-center overflow-hidden bg-clip-padding p-3",children:n.jsx(tn,{className:"max-w-full size-full object-cover",file:e,controls:!0})}),n.jsx(s.Separator,{size:"full"}),(!!e||!!a)&&n.jsxs("div",{className:ne.cx("flex w-full items-center gap-2 self-end p-3",{"bg-transparent":!e}),children:[a?n.jsx(s.LuIcon,{color:"var(--base-11)",icon:Yn}):e&&n.jsx(s.LuIcon,{color:"var(--base-11)",icon:ya}),n.jsx(s.Text,{className:"truncate",size:l,children:a??(e==null?void 0:e.name)}),r]})]})});on.displayName="VideoCard";const an=d.memo(i=>{const{file:o,onRemove:e,disabled:t,size:a}=i,[r,l]=d.useState(null),[u,c]=d.useState(null),f=Ci();d.useEffect(()=>{o instanceof we?o.then(S=>{l(S)}).catch(S=>{c(S instanceof Error?S.message:"Unknown error")}):l(o)},[o]);const g=d.useCallback(()=>{if(!r)return;const S=new Blob([r]);jn.saveAs(S,r.name)},[r]),m=d.useCallback(()=>{if(!r)return;const S=URL.createObjectURL(r);window.open(S,"_blank"),URL.revokeObjectURL(S)},[r]),V=d.useCallback(()=>{r&&f(S=>({file:r,onDelete:t?void 0:()=>{e(),S()}}))},[t,e,f,r]),C=d.useMemo(()=>n.jsx("div",{className:"flex grow justify-end",children:n.jsxs(s.Menu.Root,{modal:!0,children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.IconButton,{onClick:s.stopPropagation,type:"button",variant:"ghost",accentColor:"base",size:a,children:n.jsx(s.LuIcon,{icon:Kn})})}),n.jsxs(s.Menu.Content,{size:a,children:[n.jsxs(s.Menu.Item,{onSelect:g,disabled:!r,children:[n.jsx(s.LuIcon,{icon:Xn})," Download"]}),t?null:n.jsxs(n.Fragment,{children:[n.jsx(s.Menu.Separator,{}),n.jsxs(s.Menu.Item,{onSelect:e,children:[n.jsx(s.LuIcon,{icon:le})," Delete"]})]})]})]})}),[t,e,g,r,a]),y=!!(r!=null&&r.type.startsWith("image/")),v=!!(r!=null&&r.type.startsWith("video/"));return y?n.jsx(nn,{className:"cursor-pointer",onClick:V,file:r,error:u??void 0,rightSlot:C,size:a}):v?n.jsx(on,{className:"cursor-pointer",onClick:V,file:r,error:u??void 0,rightSlot:C,size:a}):n.jsx(Gi,{className:"cursor-pointer",file:r,error:u??void 0,onClick:m,rightSlot:C,size:a})});an.displayName="DisplayFile";const sn=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f,touched:g,helpers:m},{disabled:V}]=k(i),{value:C,onChange:y,onBlur:v,name:S}=f,[b,z]=d.useState(""),w=d.useRef(null),N=a?"":u,M=C.status&&r.showNotesAndFilesOn.includes(C.status),q=d.useCallback(T=>{const D=r.cleanValue({...C,status:T});y(D),v(D)},[r,v,y,C]);d.useEffect(()=>{z(C.notes)},[C]);const L=d.useCallback(T=>{const D=T.target.value;z(D),(g||!r.onlyValidateAfterTouched)&&m.setError(r.getError({...C,notes:b}))},[r,m,b,g,C]),x=d.useCallback(()=>{const T={...C,notes:b};y(T),v(T)},[b,v,y,C]),B=d.useCallback(T=>{const D=[...C.files];D.splice(T,1),y({...C,files:D})},[y,C]),W=d.useCallback(()=>{var T;(T=w.current)==null||T.click()},[]),Q=d.useCallback(T=>{const D=Array.from(T.target.files??[]).map(_a=>ae.from(I.v4(),_a)),Bi={...C,files:[...C.files,...D]};y(Bi),v(Bi)},[v,y,C]);d.useEffect(()=>{if(!w.current)return;const T=new AbortController;return w.current.addEventListener("cancel",()=>{v(C)},{signal:T.signal}),()=>{T.abort()}},[v,C]);const _=`${o}-status`,P=`${o}-notes`,G=`${o}-files`;return n.jsx(U,{size:t,inputId:o,labelId:e,label:N,description:c,error:l,image:a?void 0:r.image,children:n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsx(s.RadioGroup.Root,{id:_,className:"flex gap-2",name:S,value:C.status,disabled:V,accentColor:"base",variant:"surface",size:t,onValueChange:q,children:Se.map(T=>{const{label:D}=ce[T];return n.jsxs("label",{className:"flex gap-2 items-center min-w-0",children:[n.jsx(s.RadioGroup.Item,{value:T,children:n.jsx(s.RadioGroup.Indicator,{children:n.jsx(s.LuIcon,{icon:Hn,className:"fill-current"})})}),n.jsx(s.Text,{size:t,accentColor:"base",className:"truncate",children:D})]},`${o}-${T}`)})}),M&&n.jsxs(n.Fragment,{children:[n.jsx("div",{children:n.jsx(s.TextArea,{id:P,value:b,name:S,onChange:L,onBlur:x,className:"field-sizing-content w-full min-h-12",placeholder:"Notes",resize:"vertical",accentColor:"base",variant:"surface",size:t,disabled:V})}),n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsxs(s.Button,{className:"w-max",size:t,variant:"soft",accentColor:"base",onClick:W,type:"button",disabled:V,children:[n.jsx(s.LuIcon,{icon:ji}),"Select files"]}),n.jsx("input",{id:G,name:S,type:"file",ref:w,multiple:!0,className:"hidden",onChange:Q,value:""}),C.files.length>0&&n.jsx("div",{className:"flex h-max flex-wrap gap-2",children:C.files.map((T,D)=>n.jsx(an,{size:t,file:T,onRemove:()=>{B(D)},disabled:V},D))})]})]})]})})});sn.displayName="PassFailFieldInput";const rn=i=>typeof i=="string"&&Se.includes(i),ot=i=>!(i===null||typeof i!="object"||!("status"in i)||!rn(i.status)||!("notes"in i)||typeof i.notes!="string"||!("files"in i)||!(Array.isArray(i.files)&&i.files.length===0)),at=i=>!(i===null||typeof i!="object"||!("status"in i)||!rn(i.status)||!("notes"in i)||typeof i.notes!="string"||!("files"in i)||!tt(i.files)),st=i=>({status:i.status,notes:i.notes,files:[]}),rt=i=>({status:i.status,notes:i.notes,files:[]}),lt=(i,o)=>!(i.status!==o.status||i.notes!==o.notes||!Vi(i.files,o.files)),dt=(i,o)=>!(i.status!==o.status||i.notes!==o.notes||i.files.length!==o.files.length),$e=class $e extends X{constructor(e){const{showNotesAndFilesOn:t,...a}=e;super(a);p(this,"type","pass-fail");p(this,"onlyValidateAfterTouched",!1);p(this,"showNotesAndFilesOn");this.showNotesAndFilesOn=t}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new oe({identifier:`${t}showNotesAndFilesOn`,label:"Show notes and files on",description:"Show the notes and files on desired statuses.",options:Se.map(a=>{const{label:r}=ce[a];return{value:a,label:r}}),required:!1}),showDirectly:!1}]}serialize(){return{...super.serialize(),showNotesAndFilesOn:this.showNotesAndFilesOn}}getOptions(){return{...super.getOptions(),showNotesAndFilesOn:this.showNotesAndFilesOn}}duplicate(e){return new $e({...this.getOptions(),identifier:e})}setOptions(e){const{showNotesAndFilesOn:t,...a}=e;this.showNotesAndFilesOn=t??this.showNotesAndFilesOn,super.setOptions(a)}getFieldValidators(){const e=super.getFieldValidators(),t=this.showNotesAndFilesOn,a=this.blankValue();return t.length>0&&(e.push(r=>{if(!(!r.status||!t.includes(r.status))&&a.notes===r.notes)return"Notes is required."}),e.push(r=>{if(!(!r.status||!t.includes(r.status))&&Vi(a.files,r.files))return"Files is required."})),e}static deserialize(e){return new $e({...e,showNotesAndFilesOn:e.showNotesAndFilesOn??!1})}serializeValue(e){return st(e)}deserializeValue(e){return rt(e)}render(e){return n.jsx(sn,{field:this,...e})}isSerializedValue(e){return ot(e)}isValue(e){return at(e)}areValuesEqual(e,t){return lt(e,t)}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,t){return dt(e,t)}};p($e,"fieldTypeName","Pass - Fail"),p($e,"fieldTypeDescription","Track pass, fail, or N/A outcome.");let be=$e;const ln=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f},{disabled:g}]=k(i),{name:m,onChange:V,onBlur:C,value:y}=f,v=a?"":u,S=d.useCallback(z=>{V(z),C(z)},[C,V]),b=d.useCallback(()=>{V(null),C(null)},[C,V]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:v,description:c,error:l,image:a?void 0:r.image,children:n.jsxs(s.RadioGroup.Root,{id:o,name:m,className:"flex flex-col gap-1",accentColor:"base",variant:"surface",size:t,value:y??"",onValueChange:S,disabled:g,children:[r.options.map((z,w)=>n.jsxs("label",{className:"flex gap-2 items-center min-w-0",children:[n.jsx(s.RadioGroup.Item,{value:z.value,children:n.jsx(s.RadioGroup.Indicator,{children:n.jsx(s.LuIcon,{icon:Hn,className:"fill-current"})})}),n.jsx(s.Text,{size:t,accentColor:"base",className:"truncate",children:z.label})]},`${o}-${z.value}-${w}`)),!!y&&n.jsxs(s.Button,{onClick:b,className:"w-max -mx-2",type:"button",variant:"ghost",accentColor:"base",size:t,children:[n.jsx(s.LuIcon,{icon:te}),"Clear"]})]})})});ln.displayName="RadioFieldInput";const De=class De extends Xe{constructor(e){super(e);p(this,"type","radio");p(this,"onlyValidateAfterTouched",!1)}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new De({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){return new De(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(ln,{field:this,...e})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:new Set([null,...this.options.map(({value:a})=>a)]).has(e)}isValue(e){return this.isSerializedValue(e)}blankValue(){return null}areValuesEqual(e,t){return e===t}blankSerializedValue(){return null}areSerializedValuesEqual(e,t){return e===t}};p(De,"fieldTypeName","Option list"),p(De,"fieldTypeDescription","Allows the user to select a single option from a list of options.");let Fe=De;const dn=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,label:l,description:u,error:c,fieldProps:f},{disabled:g}]=k(i),{name:m,onChange:V,onBlur:C,value:y}=f,v=a?"":l,S=d.useCallback(w=>{V(w),C(w)},[C,V]),b=d.useCallback(()=>{V(null),C(null)},[C,V]),z=Array.from({length:r.maxRating},(w,N)=>N+1);return n.jsx(U,{size:t,inputId:o,labelId:e,label:v,description:u,error:c,image:a?void 0:r.image,children:n.jsxs("div",{className:"flex flex-row gap-1 items-center",children:[n.jsx(s.Rating.Root,{id:o,name:m,className:"flex items-center gap-0.5",value:y,onValueChange:S,disabled:g,children:z.map(w=>n.jsx(s.Rating.Item,{value:w,className:"group size-5 flex cursor-pointer disabled:opacity-50 disabled:pointer-events-none items-center justify-center text-yellow-500 transition-colors",children:n.jsx(s.LuIcon,{icon:et,className:"group-data-[active=true]:fill-current size-full"})},`${o}-${w}`))}),!g&&y!==null&&n.jsx(s.IconButton,{onClick:b,type:"button",variant:"ghost",accentColor:"base",size:t,children:n.jsx(s.LuIcon,{icon:te})})]})})});dn.displayName="RatingFieldInput";const Pe=class Pe extends X{constructor(e){const{maxRating:t,...a}=e;super(a);p(this,"type","rating");p(this,"maxRating");this.maxRating=t}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new R({label:"Max Rating",description:"Maximum rating value",integers:!0,required:!1,minimum:1,maximum:10,identifier:`${t}maxRating`}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),t=this.maxRating;return e.push(a=>{if(typeof a=="number"&&(a<1||a>t))return`Rating must be between 1 and ${t}.`}),e}serialize(){return{...super.serialize(),maxRating:this.maxRating}}getOptions(){return{...super.getOptions(),maxRating:this.maxRating}}duplicate(e){return new Pe({...this.getOptions(),identifier:e})}setOptions(e){const{maxRating:t,...a}=e;this.maxRating=t??this.maxRating,super.setOptions(a)}static deserialize(e){return new Pe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(dn,{field:this,...e})}isSerializedValue(e){return this.isValue(e)}isValue(e){return typeof e=="number"&&!isNaN(e)||e===null}areValuesEqual(e,t){return e===t}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,t){return e===t}};p(Pe,"fieldTypeName","Rating"),p(Pe,"fieldTypeDescription","Allows users to select a rating value.");let Ne=Pe;const cn=d.createContext(null),ct=()=>{const i=d.use(cn);if(!i)throw new Error("useScannerContext must be used within a component tree wrapped by ScannerProvider.");return i},va=()=>{const i=d.use(cn);if(!i)throw new Error("useScanner must be used within a component tree wrapped by ScannerProvider.");return i.openScanner},vi=d.memo(i=>{const{children:o,open:e,onOpenChange:t,defaultOpen:a,modal:r,...l}=i;return n.jsxs(s.Overlay.Root,{open:e,onOpenChange:t,defaultOpen:a,modal:r,children:[!!o&&n.jsx(s.Overlay.Trigger,{asChild:!0,children:o}),n.jsxs(s.Overlay.Content,{children:[n.jsx(s.Overlay.Title,{className:"sr-only",children:"Scanner"}),n.jsx(s.Overlay.Description,{className:"sr-only",children:"Scan a barcode or a qr code."}),n.jsx(ut,{...l})]})]})});vi.displayName="Scanner";const ut=d.memo(i=>{const{paused:o,formats:e,timeBetweenDecodingAttempts:t,trySkew:a,onDecodeResult:r,onDecodeError:l,onError:u}=i,{wasmUrl:c}=ct(),{ref:f}=$o.useZxing({wasmUrl:c,paused:o,formats:e,timeBetweenDecodingAttempts:t,trySkew:a,onDecodeResult:r,onDecodeError:l,onError:u});return n.jsxs("div",{className:"bg-(--color-background) flex size-full flex-col justify-center overflow-hidden",children:[n.jsx("div",{className:"flex w-full justify-end p-4",children:n.jsx(s.Overlay.Close,{asChild:!0,children:n.jsx(s.IconButton,{"aria-label":"close",variant:"soft",accentColor:"base",children:n.jsx(s.LuIcon,{icon:te})})})}),n.jsx("div",{className:"max-h-full w-full grow overflow-hidden p-4",children:n.jsx("video",{className:"size-full",ref:f,muted:!0,playsInline:!0})})]})});ut.displayName="ScannerInternal";const ht=d.memo(i=>{const{children:o,wasmUrl:e}=i,[t,a]=d.useState(null),r=d.useCallback(()=>{a(null)},[]),l=d.useCallback(f=>{a(f(r))},[r]),u=d.useCallback(()=>{t&&(t.onClose&&t.onClose(),r())},[r,t]),c=d.useMemo(()=>({wasmUrl:e,openScanner:l}),[e,l]);return n.jsxs(cn,{value:c,children:[o,t&&n.jsx(vi,{open:!0,onOpenChange:u,...t})]})});ht.displayName="ScannerProvider";const un=d.memo(i=>{const[{inputId:o,labelId:e,label:t,description:a,error:r,size:l,showInputOnly:u,field:c,fieldProps:f,helpers:g,touched:m},{disabled:V}]=k(i),{name:C,onBlur:y,onChange:v,value:S}=f,[b,z]=d.useState(!1),w=u?"":t,[N,M]=d.useState("");d.useEffect(()=>{M(S)},[S]);const q=d.useCallback(Q=>{const _=Q.target.value;M(_),(m||!c.onlyValidateAfterTouched)&&g.setError(c.getError(_))},[c,g,m]),L=d.useCallback(()=>{v(N),y(N)},[N,y,v]),x=d.useCallback(Q=>{v(Q.rawValue.trim()),z(!1)},[v]),B=d.useCallback(()=>{z(!0)},[]),W=d.useCallback(()=>{z(!1),y(S)},[y,S]);return n.jsxs(U,{size:l,inputId:o,labelId:e,label:w,description:a,error:r,image:u?void 0:c.image,children:[n.jsx(s.TextArea,{className:"w-full field-sizing-content",accentColor:"base",variant:"surface",size:l,id:o,name:C,value:N,placeholder:"Enter a qr or barcode",onChange:q,onBlur:L,disabled:V}),n.jsxs(s.Button,{onClick:B,className:"w-max",type:"button",variant:"soft",size:l,accentColor:"base",disabled:V,children:[n.jsx(s.LuIcon,{icon:ua}),"Scan"]}),n.jsx(vi,{open:b,onDecodeResult:x,onOpenChange:W})]})});un.displayName="ScanFieldInput";const je=class je extends X{constructor(e){super(e);p(this,"type","qr");p(this,"onlyValidateAfterTouched",!1)}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new je({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){return new je(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(un,{...e,field:this})}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}areValuesEqual(e,t){return e===t}blankSerializedValue(){return""}areSerializedValuesEqual(e,t){return e===t}};p(je,"fieldTypeName","Scan"),p(je,"fieldTypeDescription","Used for scanning/reading QR and barcodes.");let Ye=je;const zi=500,hn=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f,touched:g,helpers:m},{disabled:V}]=k(i),{name:C,onBlur:y,onChange:v,value:S}=f,b=a?"":u,[z,w]=d.useState("");d.useEffect(()=>{w(S)},[S]);const N=d.useCallback(L=>{const x=L.target.value;w(x),(g||!r.onlyValidateAfterTouched)&&m.setError(r.getError(x))},[r,m,g]),M=d.useCallback(L=>{L.key==="Enter"&&L.preventDefault()},[]),q=d.useCallback(()=>{v(z),y(z)},[z,y,v]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:b,description:c,error:l,image:a?void 0:r.image,children:n.jsx(s.Input.Root,{accentColor:"base",variant:"surface",size:t,children:n.jsx(s.Input.Field,{id:o,className:"truncate",name:C,value:z,type:"text",placeholder:r.placeholder,onChange:N,onBlur:q,disabled:V,onKeyDown:M})})})});hn.displayName="StringFieldInput";const Ge=class Ge extends Ki{constructor(e){const{...t}=e,a=e.maxLength?Math.min(zi,e.maxLength):zi,r=e.minLength?Math.min(e.minLength,a):void 0;super({...t,maxLength:a,minLength:r});p(this,"type","string")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new Ge({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){const{maximum_length:t,minimum_length:a,...r}=e;return new Ge({...r,maxLength:t,minLength:a,placeholder:"Enter a short description"})}render(e){return n.jsx(hn,{field:this,...e})}};p(Ge,"fieldTypeName","Short Text"),p(Ge,"fieldTypeDescription",`Short text fields can hold up to ${zi} characters on a single line.`);let Me=Ge;const fn=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f,touched:g,helpers:m},{disabled:V}]=k(i),{name:C,onBlur:y,onChange:v,value:S}=f,b=a?"":u,[z,w]=d.useState("");d.useEffect(()=>{w(S)},[S]);const N=d.useCallback(q=>{const L=q.target.value;w(L),(g||!r.onlyValidateAfterTouched)&&m.setError(r.getError(L))},[r,m,g]),M=d.useCallback(()=>{v(z),y(z)},[z,y,v]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:b,description:c,error:l,image:a?void 0:r.image,children:n.jsx(s.TextArea,{id:o,value:z,name:C,onChange:N,onBlur:M,className:"field-sizing-content min-h-12",placeholder:r.placeholder,resize:"vertical",accentColor:"base",variant:"surface",size:t,disabled:V})})});fn.displayName="TextFieldInput";const Ue=class Ue extends Ki{constructor(e){const t=e.maxLength?Math.min(Ve,e.maxLength):Ve,a=e.minLength?Math.min(e.minLength,t):void 0;super({...e,maxLength:t,minLength:a});p(this,"type","text")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new Ue({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){const{maximum_length:t,minimum_length:a,...r}=e;return new Ue({...r,maxLength:t,minLength:a,placeholder:"Enter a description"})}render(e){return n.jsx(fn,{field:this,...e})}};p(Ue,"fieldTypeName","Paragraph"),p(Ue,"fieldTypeDescription",`Paragraph fields can hold up to ${Ve} characters and can have multiple lines.`);let xe=Ue;const pn=d.memo(i=>{var L;const[{inputId:o,labelId:e,label:t,description:a,size:r,error:l,showInputOnly:u,field:c,fieldProps:f},{disabled:g}]=k(i),{value:m,name:V,onChange:C,onBlur:y}=f,v=d.useRef(null),S=d.useCallback(()=>{var x;(x=v.current)==null||x.click()},[]),b=d.useCallback(()=>{if(!v.current)return;const x=v.current.files;if(!x){y([]);return}const B=Array.from(x).map(Q=>ae.from(I.v4(),Q)),W=[...m,...B];C(W),y(W)},[y,C,m]),z=d.useCallback(x=>{const B=[...m];B.splice(x,1),C(B)},[m,C]);d.useEffect(()=>{if(!v.current)return;const x=new AbortController;return v.current.addEventListener("cancel",()=>{y([...m])},{signal:x.signal}),()=>{x.abort()}},[y,m]);const w=u?"":t,q=c.maxFiles>1?"Select files":"Select a file";return n.jsxs(U,{size:r,inputId:o,labelId:e,label:w,description:a,error:l,image:u?void 0:c.image,children:[n.jsxs(s.Button,{className:"w-max",size:r,variant:"soft",accentColor:"base",onClick:S,type:"button",disabled:g,children:[n.jsx(s.LuIcon,{icon:ji}),q]}),n.jsx("input",{id:o,name:V,type:"file",ref:v,accept:(L=c.extensions)==null?void 0:L.join(","),multiple:c.maxFiles>1,className:"hidden",onChange:b,value:""}),m.length>0&&n.jsx("div",{className:"flex h-max flex-col gap-2",children:m.map((x,B)=>n.jsx(an,{size:r,file:x,onRemove:()=>{z(B)},disabled:g},B))})]})});pn.displayName="UploadFieldInput";const ke=class ke extends X{constructor(e){const{extensions:t,maximum_files:a,maximum_size:r,...l}=e;super(l);p(this,"type","upload");p(this,"extensions");p(this,"maxFileSize");p(this,"maxFiles");p(this,"onlyValidateAfterTouched",!1);this.maxFileSize=typeof r=="number"?r:void 0,this.maxFiles=Math.max(typeof a=="number"?a:1,1),this.extensions=t}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new R({label:"How many files can be uploaded?",description:"By default, only one file can be uploaded.",required:!1,minimum:1,maximum:10,identifier:`${t}maximum_files`,integers:!0}),showDirectly:!1},{field:new R({label:"What is the maximum size of each file?",description:`Maximum file size in megabytes (between 1MB–${Oe}MB).`,required:!1,identifier:`${t}maximum_size`,minimum:1,maximum:Oe,integers:!0}),showDirectly:!1},{field:new oe({label:"Accepted file types",description:"Types of allowed files to upload. If left blank, all files will be accepted.",required:!1,identifier:`${t}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(),t=this.maxFileSize??Oe,a=t*1e3*1e3,r=this.maxFiles||1;return e.push(l=>{if(l&&l.some(u=>u instanceof ae&&u.size>a))return`Files must be at most ${t}MB.`}),e.push(l=>{if(l&&l.length>r)return`You can only upload ${r} 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 ke({...this.getOptions(),identifier:e})}setOptions(e){const{extensions:t,maximum_files:a,maximum_size:r,...l}=e;this.maxFileSize=typeof r=="number"?r:this.maxFileSize,this.maxFiles=typeof a=="number"?a:this.maxFiles,this.extensions=t,super.setOptions(l)}static deserialize(e){return new ke(e)}serializeValue(e){return[]}deserializeValue(e){return[]}render(e){return n.jsx(pn,{field:this,...e})}isSerializedValue(e){return Array.isArray(e)&&e.length===0}isValue(e){return Array.isArray(e)?e.every(t=>t instanceof we||t instanceof ae):!1}areValuesEqual(e,t){return Vi(e,t)}blankValue(){return[]}blankSerializedValue(){return[]}areSerializedValuesEqual(e,t){return e.length===t.length}};p(ke,"fieldTypeName","Upload"),p(ke,"fieldTypeDescription","Allows a file to be uploaded.");let Ie=ke;const Si={date:Ke,number:R,boolean:ye,select:de,string:Me,text:xe,upload:Ie,qr:Ye,"multi-string":Ce,"multi-select":oe,radio:Fe,"checkbox-list":ve,"pass-fail":be,otp:ze,rating:Ne},$={boolean:ga,date:Yo,"multi-string":ca,number:sa,qr:fa,"multi-select":la,select:da,string:Ca,text:Wo,upload:ji,section:ra,radio:Qo,"checkbox-list":na,"pass-fail":ia,otp:ha,rating:et},Oe=50,ft=Oe*1e3,pt=ft*1e3,j="Unlabelled",gn="Unlabelled";class A{constructor(o){p(this,"id");p(this,"label");p(this,"getApplyFn");p(this,"serialize");p(this,"deserialize");const{id:e,getApplyFn:t,label:a,serialize:r,deserialize:l}=o;this.id=e,this.getApplyFn=t,this.label=a,this.serialize=r,this.deserialize=l}static create(o){return new A(o)}}const gt=A.create({id:"nullable-boolean-equals",label:"is",getApplyFn:i=>o=>o===i,serialize:i=>i,deserialize:i=>i}),mt=A.create({id:"nullable-boolean-not-equals",label:"is not",getApplyFn:i=>o=>o!==i,serialize:i=>i,deserialize:i=>i}),Ct=A.create({id:"date-equals",getApplyFn:i=>o=>o.getTime()===i.getTime(),label:"is",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),yt=A.create({id:"date-not-equals",getApplyFn:i=>o=>o.getTime()!==i.getTime(),label:"is not",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),Vt=A.create({id:"date-before",getApplyFn:i=>o=>o.getTime()<i.getTime(),label:"before",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),vt=A.create({id:"date-after",label:"after",getApplyFn:i=>o=>o.getTime()>i.getTime(),serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),zt=A.create({id:"date-range-in",label:"in between",getApplyFn:i=>o=>!(i!=null&&i.from&&i.from.getTime()>o.getTime()||i!=null&&i.to&&i.to.getTime()<o.getTime()),serialize:i=>{var o,e;return{from:((o=i.from)==null?void 0:o.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})}),St=A.create({id:"date-range-not-in",label:"not in between",getApplyFn:i=>o=>!!(i!=null&&i.from&&i.from.getTime()>o.getTime()||i!=null&&i.to&&i.to.getTime()<o.getTime()),serialize:i=>{var o,e;return{from:((o=i.from)==null?void 0:o.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})}),wt=A.create({id:"has-files",label:"is",getApplyFn:i=>o=>o.length>0,serialize:i=>i,deserialize:i=>i}),bt=A.create({id:"does-not-have-files",label:"is not",getApplyFn:i=>o=>o.length===0,serialize:i=>i,deserialize:i=>i}),mn=A.create({id:"number-equals",getApplyFn:i=>o=>o===i,label:"is",serialize:i=>i,deserialize:i=>i}),Cn=A.create({id:"number-not-equals",getApplyFn:i=>o=>o!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),yn=A.create({id:"number-less-than",getApplyFn:i=>o=>o<i,label:"is less than",serialize:i=>i,deserialize:i=>i}),Vn=A.create({id:"number-less-than-or-equals",getApplyFn:i=>o=>o<=i,label:"is less than or equal to",serialize:i=>i,deserialize:i=>i}),vn=A.create({id:"number-greater-than",getApplyFn:i=>o=>o>i,label:"is greater than",serialize:i=>i,deserialize:i=>i}),zn=A.create({id:"number-greater-than-or-equals",getApplyFn:i=>o=>o>=i,label:"is greater than or equal to",serialize:i=>i,deserialize:i=>i}),Sn=A.create({id:"number-range-in",getApplyFn:i=>o=>!(i.to&&o>i.to||i.from&&o<i.from),label:"is between",serialize:i=>i,deserialize:i=>i}),wn=A.create({id:"number-range-not-in",getApplyFn:i=>o=>!!(i.to&&o>i.to||i.from&&o<i.from),label:"is not between",serialize:i=>i,deserialize:i=>i}),Ft=A.create({id:"pass-fail-equals",getApplyFn:i=>o=>o===i,label:"is",serialize:i=>i,deserialize:i=>i}),Nt=A.create({id:"pass-fail-not-equals",getApplyFn:i=>o=>o!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Mt=A.create({id:"pass-fail-array-includes",getApplyFn:i=>{const o=new Set(i);return e=>o.has(e)},label:"is any of",serialize:i=>i,deserialize:i=>i}),xt=A.create({id:"pass-fail-array-excludes",getApplyFn:i=>{const o=new Set(i);return e=>!o.has(e)},label:"is none of",serialize:i=>i,deserialize:i=>i}),ue=A.create({id:"nullable-string-equals",getApplyFn:i=>o=>o===i,label:"is",serialize:i=>i,deserialize:i=>i}),he=A.create({id:"nullable-string-not-equals",getApplyFn:i=>o=>o!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Ze=A.create({id:"string-includes",getApplyFn:i=>o=>o.includes(i),label:"includes",serialize:i=>i,deserialize:i=>i}),Qe=A.create({id:"string-excludes",getApplyFn:i=>o=>!o.includes(i),label:"does not include",serialize:i=>i,deserialize:i=>i}),bn=A.create({id:"string-array-includes",getApplyFn:i=>{const o=new Set(i);return e=>o.has(e)},label:"is any of",serialize:i=>i,deserialize:i=>i}),Fn=A.create({id:"string-array-excludes",getApplyFn:i=>{const o=new Set(i);return e=>!o.has(e)},label:"is none of",serialize:i=>i,deserialize:i=>i}),wi=A.create({id:"string-array-every",getApplyFn:i=>{const o=new Set(i);return e=>{const t=new Set(e);return o.isSubsetOf(t)}},label:"has all of",serialize:i=>i,deserialize:i=>i}),bi=A.create({id:"string-array-some",getApplyFn:i=>{const o=new Set(i);return e=>{const t=new Set(e);return!o.isDisjointFrom(t)}},label:"has any of",serialize:i=>i,deserialize:i=>i}),Fi=A.create({id:"string-array-none",getApplyFn:i=>{const o=new Set(i);return e=>{const t=new Set(e);return o.isDisjointFrom(t)}},label:"has none of",serialize:i=>i,deserialize:i=>i}),Ni=A.create({id:"string-array-equals",getApplyFn:i=>{const o=new Set(i);return e=>{const t=new Set(e);return o.size===t.size&&t.isSubsetOf(o)}},label:"is",serialize:i=>i,deserialize:i=>i}),Mi=A.create({id:"string-array-not-equals",getApplyFn:i=>{const o=new Set(i);return e=>{const t=new Set(e);return o.size!==t.size||!t.isSubsetOf(o)}},label:"is not",serialize:i=>i,deserialize:i=>i}),F=i=>i;class H extends Je{constructor(e){const{id:t,field:a,conditionValue:r,conditionModifier:l}=e;super();p(this,"id");p(this,"conditionValue");p(this,"conditionModifier");p(this,"field");p(this,"getConditionValue",()=>this.conditionValue);p(this,"setConditionValue",e=>{const t=this.modifiers[this.conditionModifier];e!==void 0&&!t.isConditionValueValid(e)||(this.conditionValue=e,this.notify(this))});p(this,"getConditionModifier",()=>this.conditionModifier);p(this,"setConditionModifier",e=>{const t=this.modifiers[e],a=this.getConditionValue();a&&!t.isConditionValueValid(a)&&(this.conditionValue=void 0),this.conditionModifier=e,this.notify(this)});p(this,"getConditionModifiers",()=>Object.entries(this.modifiers));p(this,"accessorFn",e=>e[this.field.identifier]);p(this,"getApplyFn",()=>{const e=this.modifiers[this.conditionModifier],t=this.getConditionValue(),a=t!==void 0&&e.isConditionValueValid(t),r=a?e.modifier.getApplyFn(t):null;return l=>{if(!a)return!0;const u=this.transformValue(l);return e.isValueValid(u)?r(u):!1}});this.id=t,this.field=a,this.conditionValue=r,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 It=d.memo,fe=It(function(i){const{ref:o,children:e,...t}=i,a=d.useCallback(r=>typeof e=="function"?n.jsxs(n.Fragment,{children:[e(r),n.jsx(s.Menu.SelectedIndicator,{className:"ml-[auto]",children:n.jsx(s.LuIcon,{icon:Y})})]}):n.jsxs(n.Fragment,{children:[e,n.jsx(s.Menu.SelectedIndicator,{className:"ml-[auto]",children:n.jsx(s.LuIcon,{icon:Y})})]}),[e]);return n.jsx(s.Menu.SelectItem,{ref:o,...t,children:a})}),Ot=It(function(i){const{ref:o,children:e,...t}=i,a=d.useCallback(r=>typeof e=="function"?n.jsxs(n.Fragment,{children:[e(r),n.jsx(s.Menu.SelectedIndicator,{className:"ml-auto",children:n.jsx(s.LuIcon,{icon:Y})})]}):n.jsxs(n.Fragment,{children:[e,n.jsx(s.Menu.SelectedIndicator,{className:"ml-auto",children:n.jsx(s.LuIcon,{icon:Y})})]}),[e]);return n.jsx(s.Menu.MultiSelectItem,{ref:o,...t,children:a})}),Nn=d.memo(i=>{const{ref:o,children:e,...t}=i,a=d.useCallback(r=>typeof e=="function"?n.jsxs(n.Fragment,{children:[e(r),n.jsx(s.Menu.CheckboxItemIndicator,{className:"ml-[auto]",children:l=>l?n.jsx(s.LuIcon,{icon:mi}):n.jsx(s.LuIcon,{icon:Y})})]}):n.jsxs(n.Fragment,{children:[e,n.jsx(s.Menu.CheckboxItemIndicator,{className:"ml-[auto]",children:l=>l?n.jsx(s.LuIcon,{icon:mi}):n.jsx(s.LuIcon,{icon:Y})})]}),[e]);return n.jsx(s.Menu.SelectAllItem,{ref:o,...t,children:a})});Nn.displayName="SelectAllItemTemplate";const K=i=>{const{children:o,condition:e,size:t="sm",variant:a,accentColor:r,radius:l}=i,u=d.useCallback(c=>{e.setConditionModifier(c)},[e]);return n.jsxs(s.Menu.Root,{align:"start",children:[n.jsx(s.Menu.ClickTrigger,{children:o}),n.jsx(s.Menu.Content,{size:t,variant:a,radius:l,accentColor:r,children:n.jsx(s.Menu.SelectGroup,{required:!0,value:e.getConditionModifier(),onValueChange:u,children:e.getConditionModifiers().map(([c,f])=>n.jsx(fe,{value:c,children:f.modifier.label},c))})})]})},xi=d.memo(i=>{const{children:o,open:e,onOpenChange:t,defaultOpen:a,modal:r,size:l,align:u,accentColor:c="base",...f}=i;return n.jsxs(s.Popover.Root,{open:e,onOpenChange:t,defaultOpen:a,modal:r,children:[n.jsx(s.Popover.Trigger,{asChild:!0,children:o}),n.jsx(s.Popover.Content,{size:l,align:u,children:n.jsx(s.DayPicker,{size:l,accentColor:c,...f})})]})});xi.displayName="DayPickerPopover";const qt=d.memo(i=>{const{children:o,open:e,onOpenChange:t,defaultOpen:a,modal:r,size:l,accentColor:u="base",values:c,onValuesChange:f,placeholder:g="Enter text",...m}=i,[V,C]=d.useState(""),y=d.useCallback(z=>{C(z.target.value)},[]),v=d.useCallback(z=>{z.key==="Enter"&&(z.preventDefault(),z.stopPropagation(),f([...c,V]),C(""))},[V,f,c]),S=d.useCallback(()=>{f([...c,V]),C("")},[V,f,c]),b=d.useCallback(z=>{const w=[...c];w.splice(z,1),f(w)},[f,c]);return n.jsxs(s.Popover.Root,{open:e,onOpenChange:t,defaultOpen:a,modal:r,children:[n.jsx(s.Popover.Trigger,{asChild:!0,children:o}),n.jsx(s.Popover.Content,{size:l,onClick:s.stopPropagation,accentColor:u,...m,children:n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsxs("div",{className:"flex gap-2",children:[n.jsx(s.Input.Root,{className:"grow",accentColor:"base",variant:"outline",size:"sm",children:n.jsx(s.Input.Field,{value:V,onChange:y,onKeyDown:v,placeholder:g,...m})}),n.jsx(s.IconButton,{size:"sm",accentColor:"base",variant:"soft",type:"button",onClick:S,children:n.jsx(s.LuIcon,{icon:ee})})]}),c.length>0&&n.jsx("div",{className:"flex flex-col gap-1",children:c.map((z,w)=>n.jsxs(s.Badge,{className:"flex items-center justify-between gap-2",accentColor:"base",size:"sm",variant:"soft",children:[n.jsx("span",{className:"truncate",children:z}),n.jsx(s.IconButton,{size:"xs",variant:"ghost",type:"button",accentColor:"base",onClick:()=>{b(w)},children:n.jsx(s.LuIcon,{icon:te})})]},`${z}-${w}`))})]})})]})});qt.displayName="NumberInputPopover";const pe=d.memo(i=>{const{children:o,open:e,onOpenChange:t,defaultOpen:a,modal:r,size:l,accentColor:u="base",value:c,onValueChange:f,placeholder:g="Enter a number",...m}=i,[V,C]=d.useState(null);d.useEffect(()=>{c!==void 0&&C(c)},[c]);const y=d.useCallback(S=>{const b=S.target.valueAsNumber;C(isNaN(b)?null:b)},[]),v=d.useCallback(S=>{const b=S.target.valueAsNumber;f==null||f(isNaN(b)?null:b)},[f]);return n.jsxs(s.Popover.Root,{open:e,onOpenChange:t,defaultOpen:a,modal:r,children:[n.jsx(s.Popover.Trigger,{asChild:!0,children:o}),n.jsx(s.Popover.Content,{size:l,onClick:s.stopPropagation,...m,children:n.jsx(s.Input.Root,{size:l,accentColor:u,children:n.jsx(s.Input.Field,{placeholder:g,type:"number",value:V??"",onChange:y,onBlur:v})})})]})});pe.displayName="NumberInputPopover";const J=i=>{const{condition:o,onClick:e,...t}=i,a=d.useCallback(()=>{e(o)},[o,e]);return n.jsx(s.IconButton,{onClick:a,...t,children:n.jsx(s.LuIcon,{icon:te})})};J.displayName="RemoveConditionButton";const Re=d.memo(i=>{const{ref:o,selectFieldOptions:e,...t}=i,a=d.useMemo(()=>e.map(r=>typeof r=="string"?{value:r,label:r}:r),[e]);return n.jsxs(s.Menu.MultiSelectGroup,{ref:o,...t,children:[n.jsx(Nn,{children:"Select all"}),a.map(r=>n.jsx(Ot,{value:r.value,children:n.jsx("span",{className:"truncate",children:r.label})},r.value))]})});Re.displayName="SelectFieldOptionMultiSelectGroup";const Mn=d.memo(i=>{const{ref:o,selectFieldOptions:e,...t}=i,a=d.useMemo(()=>e.map(r=>typeof r=="string"?{value:r,label:r}:r),[e]);return n.jsx(s.Menu.SelectGroup,{ref:o,...t,children:a.map(r=>n.jsx(fe,{value:r.value,children:n.jsx("span",{className:"truncate",children:r.label})},r.value))})});Mn.displayName="SelectFieldOptionSelectGroup";const ei=d.memo(i=>{const{children:o,open:e,onOpenChange:t,defaultOpen:a,modal:r,size:l,accentColor:u="base",value:c,onValueChange:f,placeholder:g="Enter text",...m}=i,[V,C]=d.useState(""),y=d.useCallback(S=>{C(S.target.value)},[]),v=d.useCallback(S=>{const b=S.target.value;f==null||f(b)},[f]);return d.useEffect(()=>{c&&C(c)},[c]),n.jsxs(s.Popover.Root,{open:e,onOpenChange:t,defaultOpen:a,modal:r,children:[n.jsx(s.Popover.Trigger,{asChild:!0,children:o}),n.jsx(s.Popover.Content,{size:l,onClick:s.stopPropagation,...m,children:n.jsx(s.Input.Root,{size:l,accentColor:u,children:n.jsx(s.Input.Field,{placeholder:g,type:"text",value:V,onChange:y,onBlur:v})})})]})});ei.displayName="TextInputPopover";const Lt=i=>{const{condition:o,onRemove:e}=i,t=o.getConditionValue(),a=o.getConditionModifier(),r=()=>{switch(t){case void 0:return"...";case!0:return"true";case!1:return"false";case null:return"empty"}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[o.field.type]}),n.jsx("span",{className:"truncate",children:o.field.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[a].modifier.label})}),n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:r()})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsxs(s.Menu.SelectGroup,{required:!0,value:t,onValueChange:o.setConditionValue,children:[n.jsx(fe,{value:!0,children:"true"}),n.jsx(fe,{value:!1,children:"false"})]})})]}),n.jsx(J,{condition:o,onClick:e})]})},At={equals:F({modifier:gt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:mt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ii extends H{constructor(e){super(e);p(this,"modifiers",At)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=At[r];let c;return a!==void 0&&(c=u.modifier.deserialize(a)),new ii({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Lt,{condition:this,...e},this.id)}}const Tt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=d.useCallback(c=>{c.length>0?o.setConditionValue(c):o.setConditionValue(void 0)},[o]),u=()=>{if(a===void 0)return"...";if(a===null)return"empty";switch(a.length){case 0:return"...";default:return`${a.length} options`}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"soft",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"soft",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"truncate",children:u()})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(Re,{values:a??[],selectFieldOptions:o.field.options,onValuesChange:l})})]}),n.jsx(J,{condition:o,onClick:e})]})},_t={equals:F({modifier:Ni,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:Mi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:F({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:F({modifier:bi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:F({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ni extends H{constructor(e){super(e);p(this,"modifiers",_t)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=_t[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new ni({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Tt,{condition:this,...e},this.id)}}class Ii extends Je{constructor(e){super();p(this,"conditions");p(this,"conditionObserver",()=>{this.conditions=[...this.conditions],this.notify(this)});p(this,"initConditions",e=>{for(const t of e)t.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(t=>t.id!==e.id)),this.notify(this)}removeConditions(e){const t=new Set(e.map(a=>a.id));this.conditions=this.initConditions(this.conditions.filter(a=>!t.has(a.id))),this.notify(this)}applyConditions(e){return this.conditions.length===0?!0:this.conditions.map(a=>[a.getApplyFn(),a.accessorFn]).every(([a,r])=>a(r(e)))}}const za=(i,o)=>d.useMemo(()=>{const e=new Ii(i);return e.observe(t=>o(t.getConditions())),e},[i,o]),Bt=i=>{const{condition:o,onRemove:e}=i,t=o.getConditionValue(),a=o.getConditionModifier(),r=()=>{var l,u;switch(a){case"equals":case"notEquals":{const c=o.modifiers.equals,f=t!==void 0&&c.isConditionValueValid(t)?t:void 0;return n.jsx(xi,{required:!1,size:"sm",mode:"single",selected:f??void 0,onSelect:g=>o.setConditionValue(g),children:n.jsx(s.Button,{type:"button",className:"truncate",children:f!==void 0?(f==null?void 0:f.toLocaleDateString())??"empty":"..."})})}case"before":case"after":{const c=o.modifiers.after,f=t!==void 0&&c.isConditionValueValid(t)?t:void 0;return n.jsx(xi,{required:!0,size:"sm",mode:"single",selected:f,onSelect:o.setConditionValue,children:n.jsx(s.Button,{type:"button",className:"truncate",children:f?f.toLocaleDateString():"..."})})}case"in":case"notIn":{const c=o.modifiers.in,f=t!==void 0&&c.isConditionValueValid(t)?t:void 0;return n.jsx(xi,{required:!0,mode:"range",size:"sm",selected:f,onSelect:o.setConditionValue,children:n.jsx(s.Button,{className:"truncate",children:f?`${(l=f.from)==null?void 0:l.toLocaleDateString()} - ${(u=f.to)==null?void 0:u.toLocaleDateString()}`:"..."})})}}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[o.field.type]}),n.jsx("span",{className:"truncate",children:o.field.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[a].modifier.label})}),r(),n.jsx(J,{condition:o,onClick:e})]})},Et={equals:F({modifier:Ct,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),notEquals:F({modifier:yt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),before:F({modifier:Vt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),after:F({modifier:vt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),in:F({modifier:zt,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:F({modifier:St,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 ti extends H{constructor(e){super(e);p(this,"modifiers",Et)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Et[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new ti({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Bt,{condition:this,...e},this.id)}}const $t=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=d.useCallback(c=>{c.length>0?o.setConditionValue(c):o.setConditionValue(void 0)},[o]),u=()=>{if(a===void 0)return"...";if(a===null)return"empty";switch(a.length){case 0:return"...";default:return`${a.length} options`}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"truncate",children:u()})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(Re,{values:a??[],selectFieldOptions:t.options,onValuesChange:l})})]}),n.jsx(J,{condition:o,onClick:e})]})},Dt={equals:F({modifier:Ni,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:Mi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:F({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:F({modifier:bi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:F({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class oi extends H{constructor(e){super(e);p(this,"modifiers",Dt)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Dt[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new oi({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx($t,{condition:this,...e},this.id)}}const xn=[],Pt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=d.useCallback(c=>{o.setConditionValue(c.length>0?c:void 0)},[o]),u=()=>{if(a===void 0)return"...";if(a===null)return"empty";switch(a.length){case 0:return"...";case 1:return a[0].toString();default:return`${a.length} values`}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),n.jsx(qt,{values:a??xn,onValuesChange:l,children:n.jsx(s.Button,{type:"button",className:"truncate",children:u()})}),n.jsx(J,{condition:o,onClick:e})]})},jt={equals:F({modifier:Ni,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:Mi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:F({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:F({modifier:bi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:F({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ai extends H{constructor(e){super(e);p(this,"modifiers",jt)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=jt[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new ai({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Pt,{condition:this,...e},this.id)}}const Gt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"greaterThanOrEquals":case"lessThanOrEquals":case"greaterThan":case"lessThan":{const u=o.modifiers.greaterThan,c=a!==void 0&&u.isConditionValueValid(a)?a:void 0;return n.jsx(pe,{value:c??null,onValueChange:f=>o.setConditionValue(f??void 0),size:"sm",children:n.jsx(s.Button,{type:"button",className:"truncate",children:c!==void 0?c??"empty":"..."})})}case"inRange":case"notInRange":{const u=o.modifiers.inRange,c=a!==void 0&&u.isConditionValueValid(a)?a:void 0;return n.jsxs(n.Fragment,{children:[n.jsx(pe,{value:(c==null?void 0:c.from)??null,onValueChange:f=>{o.setConditionValue({from:f,to:(c==null?void 0:c.to)??null})},size:"sm",children:n.jsx(s.Button,{className:"truncate",children:(c==null?void 0:c.from)??"..."})}),n.jsx(pe,{value:(c==null?void 0:c.to)??null,onValueChange:f=>{o.setConditionValue({from:(c==null?void 0:c.from)??null,to:f})},size:"sm",children:n.jsx(s.Button,{className:"truncate",children:(c==null?void 0:c.to)??"..."})})]})}}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},Ut={equals:F({modifier:mn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),notEquals:F({modifier:Cn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThan:F({modifier:yn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThanOrEquals:F({modifier:Vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThan:F({modifier:vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThanOrEquals:F({modifier:zn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),inRange:F({modifier:Sn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"}),notInRange:F({modifier:wn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"})};class si extends H{constructor(e){super(e);p(this,"modifiers",Ut)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Ut[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new si({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Gt,{condition:this,...e},this.id)}}const kt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"notEquals":case"includes":case"excludes":return n.jsx(ei,{value:a??"",onValueChange:o.setConditionValue,size:"sm",children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:a||"..."})})})}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},Ht={equals:F({modifier:ue,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:he,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:F({modifier:Ze,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:F({modifier:Qe,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ri extends H{constructor(e){super(e);p(this,"modifiers",Ht)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Ht[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new ri({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(kt,{condition:this,...e},this.id)}}const Jt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"notEquals":{const u=o.modifiers.equals,c=a!==void 0&&u.isConditionValueValid(a)?a:void 0;return n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:c!==void 0?c?ce[c].label:"empty":"..."})})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(s.Menu.SelectGroup,{required:!1,value:c,onValueChange:o.setConditionValue,children:Se.map(f=>{const{label:g}=ce[f];return n.jsx(fe,{value:f,children:n.jsx("span",{className:"truncate",children:g})},f)})})})]})}case"includes":case"excludes":{const u=o.modifiers.includes,c=a!==void 0&&u.isConditionValueValid(a)?a:void 0;return n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",children:c?`${c.length} statuses`:"..."})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsxs(s.Menu.MultiSelectGroup,{values:c??xn,onValuesChange:o.setConditionValue,children:[n.jsx(Nn,{children:"Select all"}),Se.map(f=>{const{label:g,icon:m}=ce[f];return n.jsxs(Ot,{value:f,children:[n.jsx(s.LuIcon,{icon:m}),n.jsx("span",{className:"truncate",children:g})]},f)})]})})]})}}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},Wt={equals:F({modifier:Ft,isValueValid:i=>i!==null,isConditionValueValid:i=>typeof i=="string",isSerializedValueValid:i=>typeof i=="string"}),notEquals:F({modifier:Nt,isValueValid:i=>i!==null,isConditionValueValid:i=>typeof i=="string",isSerializedValueValid:i=>typeof i=="string"}),includes:F({modifier:Mt,isValueValid:i=>i!==null,isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:F({modifier:xt,isValueValid:i=>i!==null,isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class li extends H{constructor(e){super(e);p(this,"modifiers",Wt)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Wt[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new li({field:t,conditionModifier:r,conditionValue:c,...l})}transformValue(e){return e.status}render(e){return n.jsx(Jt,{condition:this,...e},this.id)}}const Xt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=d.useMemo(()=>t.options.map(f=>typeof f=="string"?{value:f,label:f}:f),[t.options]),u=d.useMemo(()=>{const f={};for(const g of l)f[g.value]=g.label;return f},[l]),c=()=>{switch(r){case"equals":case"notEquals":{const f=o.modifiers.equals,g=a!==void 0&&f.isConditionValueValid(a)?a:void 0;return n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:g!==void 0?g?u[g]:"empty":"..."})})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(Mn,{required:!0,selectFieldOptions:t.options,value:g??void 0,onValueChange:o.setConditionValue})})]})}case"includes":case"excludes":{const f=o.modifiers.includes,g=a!==void 0&&f.isConditionValueValid(a)?a:void 0;return n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",children:g?`${g.length} options`:"..."})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(Re,{selectFieldOptions:t.options,values:g??xn,onValuesChange:o.setConditionValue})})]})}}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),c(),n.jsx(J,{condition:o,onClick:e})]})},Kt={equals:F({modifier:ue,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),notEquals:F({modifier:he,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),includes:F({modifier:bn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:F({modifier:Fn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class di extends H{constructor(e){super(e);p(this,"modifiers",Kt)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Kt[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new di({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Xt,{condition:this,...e},this.id)}}const Yt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"notEquals":case"greaterThanOrEquals":case"lessThanOrEquals":case"greaterThan":case"lessThan":{const u=o.modifiers[r],c=a!==void 0&&u.isConditionValueValid(a)?a:void 0;return n.jsx(pe,{value:c??null,onValueChange:f=>o.setConditionValue(f??void 0),size:"sm",children:n.jsx(s.Button,{type:"button",className:"truncate",children:c!==void 0?c:"..."})})}case"inRange":case"notInRange":{const u=o.modifiers.inRange,c=a!==void 0&&u.isConditionValueValid(a)?a:void 0;return n.jsxs(n.Fragment,{children:[n.jsx(pe,{value:(c==null?void 0:c.from)??null,onValueChange:f=>{o.setConditionValue({from:f,to:(c==null?void 0:c.to)??null})},size:"sm",children:n.jsx(s.Button,{className:"truncate",children:(c==null?void 0:c.from)??"..."})}),n.jsx(pe,{value:(c==null?void 0:c.to)??null,onValueChange:f=>{o.setConditionValue({from:(c==null?void 0:c.from)??null,to:f})},size:"sm",children:n.jsx(s.Button,{className:"truncate",children:(c==null?void 0:c.to)??"..."})})]})}}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},Zt={equals:F({modifier:mn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),notEquals:F({modifier:Cn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThan:F({modifier:yn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThanOrEquals:F({modifier:Vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThan:F({modifier:vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThanOrEquals:F({modifier:zn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),inRange:F({modifier:Sn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"}),notInRange:F({modifier:wn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"})};class ci extends H{constructor(e){super(e);p(this,"modifiers",Zt)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Zt[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new ci({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Yt,{condition:this,...e},this.id)}}const Qt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"notEquals":case"includes":case"excludes":return n.jsx(ei,{value:a??"",onValueChange:o.setConditionValue,size:"sm",children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:a||"..."})})})}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},Rt={equals:F({modifier:ue,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:he,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:F({modifier:Ze,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:F({modifier:Qe,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ui extends H{constructor(e){super(e);p(this,"modifiers",Rt)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Rt[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new ui({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Qt,{condition:this,...e},this.id)}}const eo=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=d.useMemo(()=>t.options.map(g=>typeof g=="string"?{value:g,label:g}:g),[t.options]),u=d.useMemo(()=>{const g={};for(const m of l)g[m.value]=m.label;return g},[l]),c=d.useCallback(g=>{g.length>0?o.setConditionValue(g):o.setConditionValue([])},[o]),f=()=>{switch(r){case"equals":case"notEquals":{const g=o.modifiers.equals,m=a!==void 0&&g.isConditionValueValid(a)?a:void 0;return n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:m!==void 0?m?u[m]:"empty":"..."})})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(Mn,{required:!1,selectFieldOptions:t.options,value:m??void 0,onValueChange:o.setConditionValue})})]})}case"includes":case"excludes":{const g=o.modifiers.includes,m=a!==void 0&&g.isConditionValueValid(a)?a:void 0;return n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",children:m?`${m.length} options`:"..."})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(Re,{selectFieldOptions:t.options,values:m??[],onValuesChange:c})})]})}}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),f(),n.jsx(J,{condition:o,onClick:e})]})},io={equals:F({modifier:ue,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),notEquals:F({modifier:he,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),includes:F({modifier:bn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:F({modifier:Fn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class hi extends H{constructor(e){super(e);p(this,"modifiers",io)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=io[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new hi({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(eo,{condition:this,...e},this.id)}}const no=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"notEquals":case"includes":case"excludes":return n.jsx(ei,{value:a??"",onValueChange:o.setConditionValue,size:"sm",children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:a||"..."})})})}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},to={equals:F({modifier:ue,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:he,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:F({modifier:Ze,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:F({modifier:Qe,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class fi extends H{constructor(e){super(e);p(this,"modifiers",to)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=to[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new fi({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(no,{condition:this,...e},this.id)}}const oo=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"notEquals":case"includes":case"excludes":return n.jsx(ei,{value:a??"",onValueChange:o.setConditionValue,size:"sm",children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:a||"..."})})})}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},ao={equals:F({modifier:ue,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:he,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:F({modifier:Ze,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:F({modifier:Qe,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class pi extends H{constructor(e){super(e);p(this,"modifiers",ao)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=ao[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new pi({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(oo,{condition:this,...e},this.id)}}const so=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(a){case void 0:return"...";case!0:return"true";case!1:return"false";case null:return"empty"}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:l()})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsxs(s.Menu.SelectGroup,{required:!0,value:a,onValueChange:o.setConditionValue,children:[n.jsx(fe,{value:!0,children:"empty"}),n.jsx(fe,{value:!1,children:"not empty"})]})})]}),n.jsx(J,{condition:o,onClick:e})]})},ro={equals:F({modifier:wt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:bt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class gi extends H{constructor(e){super(e);p(this,"modifiers",ro)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=ro[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new gi({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(so,{condition:this,...e},this.id)}}const Sa={date:ti,number:si,boolean:ii,select:hi,string:fi,text:pi,upload:gi,qr:ui,"multi-string":ai,"multi-select":oi,radio:di,"checkbox-list":ni,"pass-fail":li,otp:ri,rating:ci},lo=(i,o)=>{if(i.type!==o.type)throw new Error(`field and condition type mismatch ${i.type} !== ${o.type}`);return Sa[o.type].deserialize(o,i)},In=(i,o)=>{const e=On(i,o),t={};for(const a of i)t[a.identifier]=a;return e.map(a=>lo(t[a.fieldId],a))},co=(i,o)=>qn(i,o).map(t=>t.serialize()),On=(i,o)=>{const e=new Set(i.map(t=>t.identifier));return o.filter(t=>e.has(t.fieldId))},qn=(i,o)=>{const e=new Set(i.map(t=>t.identifier));return o.filter(t=>e.has(t.field.identifier))},Oi=i=>Si[i.type].deserialize(i);function wa(i){return i.map(uo)}const uo=i=>i.type==="section"?Z.deserialize(i):Oi(i);function ba(i){return i.map(Oi)}function ho(i){const o=[];for(const e of i)if(e instanceof Z)for(const t of e.getFields())o.push(t);else o.push(e);return o}function fo(i){const o={};for(const e of i)o[e.identifier]=e;return o}function po(i,o,e=!0){const t=e?qi(i,o):o,a={};for(const r of i){if(!(r.identifier in t))continue;const l=t[r.identifier];a[r.identifier]=r.serializeValue(l)}return a}function go(i,o,e=!0){const t=e?Ln(i,o):o,a={};for(const r of i){if(!(r.identifier in t))continue;const l=t[r.identifier];a[r.identifier]=r.deserializeValue(l)}return a}function qi(i,o){const e={};for(const t of i){if(!(t.identifier in o))continue;const a=o[t.identifier];t.isValue(a)&&(e[t.identifier]=t.cleanValue(a))}return e}function Ln(i,o){const e={};for(const t of i){if(!(t.identifier in o))continue;const a=o[t.identifier];t.isSerializedValue(a)&&(e[t.identifier]=t.cleanSerializedValue(a))}return e}function mo(i,o){const e=qi(i,o),t={},a={};for(const r of i){if(!(r.identifier in e))continue;const l=e[r.identifier];switch(r.type){case"upload":if(!r.isValue(l))break;a[r.identifier]=l,t[r.identifier]=[];break;case"pass-fail":if(!r.isValue(l))break;a[r.identifier]=l.files,t[r.identifier]={...l,files:[]};break;default:t[r.identifier]=o[r.identifier]}}return[t,a]}function Co(i,o,e){const t={};for(const a of i){if(!(a.identifier in o))continue;const r=o[a.identifier];switch(a.type){case"upload":if(!a.isValue(r))break;t[a.identifier]=e[a.identifier]??[];break;case"pass-fail":if(!a.isValue(r))break;t[a.identifier]={...r,files:e[a.identifier]??[]};break;default:if(!a.isValue(r))break;t[a.identifier]=r}}return t}const yo=(i,o)=>{const e={};for(const t of i){const a=o[t.identifier];e[t.identifier]=a!==void 0?a:t.blankValue()}return e},Vo=(i,o,e)=>{const t={};for(const a of i){const r=o[a.identifier],l=e[a.identifier];a.areValuesEqual(r,l)||(t[a.identifier]=l)}return t},vo=(i,o,e)=>{const t={};for(const a of i){const r=o[a.identifier],l=e[a.identifier];a.areValuesEqual(r,l)&&(t[a.identifier]=l)}return t},An=(i,o,e)=>i.every(t=>{const a=o[t.identifier],r=e[t.identifier];return t.areValuesEqual(a,r)}),Tn=i=>{const o={};for(const e of i)o[e.identifier]=e.blankValue();return o},zo=(i,o)=>An(i,o,Tn(i)),Fa=(i,o,e={})=>{const{conditions:t=!1}=e,a=i.get(o.identifier);if(!a)throw new Error(`Attempting to reseed serialized section with identifier ${o.identifier} which is not present in the reseeded identifier map`);const r=new Map,l=o.fields.map(c=>{const f=I.v4(),{image:g,...m}=c;return r.set(c.identifier,f),{...m,identifier:f}}),u={};if(t)for(const[c,f]of Object.entries(o.conditions??{})){const g=i.get(c);if(!g)continue;const m=f.map(V=>{const C=r.get(V.fieldId);if(!C)throw new Error(`Serialized condition referencing undefined field with identifier: ${V.fieldId}`);return{...V,fieldId:C}});u[g]=m}return{...o,identifier:a,conditions:u,fields:l}},Na=(i,o={})=>{const e=new Map(i.map(t=>[t.identifier,I.v4()]));return i.map(t=>Fa(e,t,o))},_n=(i,o)=>{const e={},t=i.filter(a=>a instanceof Z);for(const a of i)if(a instanceof Z){const r=t.filter(u=>a.identifier in u.conditions);if(r.length>0&&!r.some(u=>{const c=u.getConditions(a.identifier);return new Ii(c).applyConditions(o)}))continue;const l=a.getErrors(o);Object.assign(e,l)}else{if(!(a instanceof X))throw new Error("Invalid field type");const r=a.identifier,l=a.getError($i(o,r));l&&jo(e,r,l)}if(Object.keys(e).length>0)return e},Ma=async i=>{const o={},e=[];for(const t of i){const{fields:a}=t,r=[];for(const l of a){if(l.image){if(l.image instanceof Promise)try{o[l.identifier]=await l.image}catch(u){console.error("Failed to get image from promise",u)}else o[l.identifier]=l.image;delete l.image}r.push(l)}e.push({...t,fields:r})}return{fields:e,images:o}};async function xa(i){const o={};for(const[e,t]of Object.entries(i))o[e]=await Promise.all(t);return o}class se extends Je{constructor(e){super();p(this,"fieldSections");p(this,"fieldObserver",()=>{this.notify(this)});p(this,"initFields",e=>{for(const t of e)t.observe(this.fieldObserver);return e});this.fieldSections=this.initFields(e)}serialize(){return this.fieldSections.map(e=>e.serialize())}static deserialize(e){return new se(e.map(Z.deserialize))}static reseedFieldSections(e,t){return Na(e,t)}getFields(){return this.fieldSections.flatMap(e=>e.getFields())}getFieldSections(){return this.fieldSections}addFieldSection(e,t){const a=[...this.fieldSections];a.splice(t??this.fieldSections.length,0,e),this.fieldSections=this.initFields(a),this.notify(this)}removeFieldSection(e){const t=this.fieldSections.filter(a=>a.identifier!==e.identifier);for(const a of t)a.removeConditional(a.identifier);this.fieldSections=this.initFields(t),this.notify(this)}moveFieldSection(e,t){const a=[...this.fieldSections],[r]=a.splice(e,1);a.splice(t,0,r),this.fieldSections=this.initFields(a),this.notify(this)}getSectionDependencyGraph(){const e=new Do.DirectedGraph({type:"directed"});for(const t of this.fieldSections)for(const a of Object.keys(t.conditions))e.mergeEdge(t.identifier,a);return e}getDependenciesOfSection(e){const t=this.getSectionDependencyGraph(),a=new Map(this.fieldSections.map(l=>[l.identifier,l])),r=[];return Po.bfsFromNode(t,e,(l,u,c)=>{r.push(a.get(l))},{mode:"in"}),r}cleanValues(e){return qi(this.getFields(),e)}cleanSerializedValues(e){return Ln(this.getFields(),e)}deserializeValues(e,t){return go(this.getFields(),e,t)}serializeValues(e,t){return po(this.getFields(),e,t)}initializeValues(e){return yo(this.getFields(),e)}validateValues(e){return _n(this.getFieldSections(),e)}deserializeConditions(e){return In(this.getFields(),e)}cleanConditions(e){return qn(this.getFields(),e)}serializeConditions(e){return co(this.getFields(),e)}cleanSerializedConditions(e){return On(this.getFields(),e)}changedFieldValues(e,t){return Vo(this.getFields(),e,t)}unchangedFieldValues(e,t){return vo(this.getFields(),e,t)}areValuesEqual(e,t){return An(this.getFields(),e,t)}areValuesBlank(e){return zo(this.getFields(),e)}blankValues(){return Tn(this.getFields())}extractFilesAndPromisesFromFieldValues(e){return mo(this.getFields(),e)}insertFilesAndPromisesToFieldValues(e,t){return Co(this.getFields(),e,t)}}const So=d.createContext({}),Bn=d.memo(i=>{const{fieldSection:o,size:e,index:t,...a}=i,{label:r,description:l}=o,{values:u}=ie.useFormikContext(),{fieldSchema:c}=d.use(So),f=d.useMemo(()=>c.getFieldSections(),[c]),g=d.useMemo(()=>f.filter(C=>o.identifier in C.conditions),[f,o.identifier]),m=d.useMemo(()=>g.length===0?!0:g.some(C=>{const y=C.getConditions(o.identifier);return new Ii(y).applyConditions(u)}),[g,o,u]),V=We(o.fields,{size:e,...a});return m?n.jsxs(n.Fragment,{children:[t!==0?n.jsx(s.Separator,{size:"full"}):null,n.jsxs("div",{className:"flex flex-col gap-4",children:[(r||l)&&n.jsx(n.Fragment,{children:n.jsxs("div",{className:"flex flex-col gap-1",children:[n.jsx(s.Heading,{size:e,children:r}),l&&n.jsx(s.Text,{accentColor:"base",size:e,children:l})]})}),V]})]}):null});Bn.displayName="FieldSectionLayout";const me=class me extends Ui{constructor(e){const{label:t=null,description:a=null,fields:r,conditions:l={},...u}=e;super(u);p(this,"type","section");p(this,"label");p(this,"description");p(this,"conditions");p(this,"fields",[]);p(this,"fieldObserver",()=>{this.notify(this)});p(this,"initFields",e=>{for(const t of e)t.observe(this.fieldObserver);return e});p(this,"conditionObserver",()=>{this.notify(this)});p(this,"initConditions",e=>{for(const t of Object.values(e).flat())t.observe(this.conditionObserver);return e});this.label=t,this.description=a,this.fields=this.initFields(r),this.conditions=this.initConditions(l)}serialize(){const e={};for(const[t,a]of Object.entries(this.conditions))e[t]=a.map(r=>r.serialize());return{...super.serialize(),label:this.label,description:this.description,conditions:e,fields:this.fields.map(t=>t.serialize())}}getOptions(){return{...super.getOptions(),label:this.label,description:this.description,fields:this.fields,conditions:this.conditions}}duplicate(e){return new me({...this.getOptions(),identifier:e,fields:this.fields.map(t=>t.duplicate(I.v4()))})}setOptions(e){const{label:t,description:a,fields:r,conditions:l,...u}=e;this.label=t??this.label,this.description=a??this.description,this.fields=r||this.fields,this.conditions=l||this.conditions,super.setOptions(u)}getErrors(e){const t={};for(const a of this.fields){const r=a.getError(e[a.identifier]);r&&(t[a.identifier]=r)}return t}getFields(){return this.fields}addField(e,t){const a=[...this.fields];a.splice(t??this.fields.length,0,e),this.fields=this.initFields(a),this.notify(this)}moveField(e,t){const a=[...this.fields],[r]=a.splice(e,1);a.splice(t,0,r),this.fields=a,this.notify(this)}removeField(e){this.fields=this.initFields(this.fields.filter(({identifier:a})=>a!==e.identifier));const t={};for(const[a,r]of Object.entries(this.conditions))t[a]=r.filter(l=>l.field.identifier!==e.identifier);this.conditions=t,this.notify(this)}getConditions(e){return this.conditions[e]}addCondition(e,t){this.conditions=this.initConditions({...this.conditions,[e]:[...this.conditions[e]??[],t]}),this.notify(this)}addConditions(e,t){this.conditions=this.initConditions({...this.conditions,[e]:[...this.conditions[e]??[],...t]}),this.notify(this)}removeCondition(e,t){this.conditions=this.initConditions({...this.conditions,[e]:(this.conditions[e]??[]).filter(a=>a.id!==t.id)}),this.notify(this)}removeConditions(e,t){const a=new Set(t.map(r=>r.id));this.conditions=this.initConditions({...this.conditions,[e]:(this.conditions[e]??[]).filter(r=>!a.has(r.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 t={...this.conditions};delete t[e],this.conditions=this.initConditions(t),this.notify(this)}render(e){return n.jsx(Bn,{fieldSection:this,...e})}};p(me,"fieldTypeName","Section"),p(me,"fieldTypeDescription","Sections can be useful for grouping fields together. They can also be conditionally shown or hidden."),p(me,"deserialize",e=>{const t=e.fields.map(Oi),a={};for(const[r,l]of Object.entries(e.conditions))a[r]=In(t,l);return new me({...e,fields:t,conditions:a})});let Z=me;const ge=d.createContext(new se([])),Li="form-builder",Ai=d.createContext({}),Ia=(i=()=>null)=>d.useMemo(()=>Object.entries(Si).map(([e,t])=>({children:t.fieldTypeName,icon:n.jsx(s.LuIcon,{icon:$[e]}),value:e,onSelect:()=>{i(e)}})),[i]),Ti=d.memo(i=>{const{children:o,variant:e,size:t,accentColor:a,onSelectFieldType:r,...l}=i,u=Ia(r);return n.jsxs(s.Menu.Root,{...l,children:[n.jsx(s.Menu.ClickTrigger,{children:o}),n.jsx(s.Menu.Content,{variant:e,size:t,accentColor:a,children:n.jsx(s.Menu.Scroll,{children:u.flat().map(c=>n.jsxs(s.Menu.Item,{onSelect:c.onSelect,children:[c.icon,c.children]},c.value))})})]})});Ti.displayName="CreateFieldDropdownMenu";const _i=i=>{switch(i){case"text":return new xe({label:"",required:!1,identifier:I.v4()});case"boolean":return new ye({label:"",required:!1,identifier:I.v4()});case"number":return new R({label:"",required:!1,identifier:I.v4()});case"date":return new Ke({label:"",required:!1,identifier:I.v4()});case"string":return new Me({label:"",required:!1,identifier:I.v4()});case"select":return new de({label:"",options:[],required:!1,identifier:I.v4()});case"multi-string":return new Ce({label:"",required:!1,identifier:I.v4()});case"multi-select":return new oe({label:"",options:[],required:!1,identifier:I.v4()});case"upload":return new Ie({label:"",required:!1,identifier:I.v4(),maximum_files:6,maximum_size:Oe});case"qr":return new Ye({label:"",required:!1,identifier:I.v4()});case"radio":return new Fe({label:"",options:[],required:!1,identifier:I.v4()});case"checkbox-list":return new ve({label:"",options:[],required:!1,identifier:I.v4()});case"pass-fail":return new be({label:"",required:!1,identifier:I.v4(),showNotesAndFilesOn:["fail"]});case"otp":return new ze({label:"",validationType:"none",required:!1,identifier:I.v4(),length:6});case"rating":return new Ne({label:"",required:!1,identifier:I.v4(),maxRating:5})}},En=i=>{switch(i.type){case"text":return new pi({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"boolean":return new ii({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"number":return new si({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"date":return new ti({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"string":return new fi({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"select":return new hi({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"multi-string":return new ai({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"multi-select":return new oi({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"upload":return new gi({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"qr":return new ui({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"radio":return new di({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"checkbox-list":return new ni({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"pass-fail":return new li({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"otp":return new ri({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"rating":return new ci({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i})}},wo=(i,o)=>{switch(i){case"checkbox-list":return ve.getFieldCreationSchema(o);case"multi-select":return oe.getFieldCreationSchema(o);case"number":return R.getFieldCreationSchema(o);case"radio":return Fe.getFieldCreationSchema(o);case"select":return de.getFieldCreationSchema(o);case"string":return Me.getFieldCreationSchema(o);case"text":return xe.getFieldCreationSchema(o);case"upload":return Ie.getFieldCreationSchema(o);case"pass-fail":return be.getFieldCreationSchema(o);case"otp":return ze.getFieldCreationSchema(o);case"rating":return Ne.getFieldCreationSchema(o);default:return}},bo={danger:"danger",warning:"warning",info:"base",success:"success"},Fo=d.memo(i=>{const{popoverInputs:o,hasError:e,...t}=i;return n.jsxs(s.Popover.Root,{children:[n.jsx(s.Popover.Trigger,{asChild:!0,children:n.jsxs(s.Button,{variant:"soft",type:"button",size:"sm","aria-label":"settings",accentColor:"base",...e&&{color:bo.danger},children:[n.jsx(s.LuIcon,{icon:pa}),"Settings"]},"settings")}),n.jsx(s.Popover.Content,{size:"sm",...t,children:n.jsx("div",{className:"flex w-full max-w-[350px] flex-col",children:o})})]})});Fo.displayName="FieldSettingsPopover";const No=d.memo(i=>{const{parentPath:o,fieldIndex:e,field:t}=i,{errors:a}=ie.useFormikContext(),r=Ci(),{disableRequiredFields:l}=d.use(Ai),[u,c]=d.useState(void 0);d.useEffect(()=>{t.image instanceof Promise?t.image.then(c).catch(console.error):c(t.image)},[t]);const f=u?URL.createObjectURL(u):void 0,g=d.useCallback(()=>{t.setOptions({image:void 0})},[t]),[m,V]=d.useMemo(()=>{const w=[],N=[],M=wo(t.type,`${o}.${e}`)??[];for(const q of M)q.showDirectly?w.push(q.field):N.push(q.field);return[w,N]},[t,o,e]),C=We(m,{formId:Li,disabled:!1,size:"sm"}),y=We(V,{formId:Li,disabled:!1,size:"sm"}),v=V.length>0,S=V.some(w=>{const N=$i(a,w.identifier);return N&&(typeof N!="object"||Object.values(N).length>0)}),b=d.useCallback(()=>{u&&r(()=>({file:u}))},[r,u]),{fieldTypeName:z}=Si[t.type];return n.jsxs("div",{className:"flex grow w-full flex-col gap-4",children:[n.jsxs("div",{className:"flex gap-2 w-full justify-between",children:[n.jsxs("div",{className:"flex gap-2 items-center",children:[n.jsxs(s.Badge,{accentColor:"base",variant:"soft",size:"sm",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),z]}),!l&&n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(s.Checkbox.Root,{checked:t.required,onCheckedChange:w=>t.setOptions({required:!!w}),size:"sm",children:n.jsx(s.Checkbox.Indicator,{children:n.jsx(s.LuIcon,{icon:Y})})}),n.jsx(s.Text,{size:"sm",accentColor:"base",children:"Required"})]})]}),v&&n.jsx(Fo,{popoverInputs:y,hasError:S,align:"end"})]}),u&&n.jsxs("div",{className:"group relative inline-block w-full min-w-[300px]",children:[n.jsx("img",{className:"h-[100px] w-full min-w-[300px] cursor-pointer rounded-md object-cover",src:f,alt:u.name,onClick:b}),n.jsx(s.IconButton,{type:"button",className:"absolute top-2 right-2 hidden group-hover:not-disabled:flex",variant:"solid",accentColor:"base","aria-label":"delete",onClick:g,size:"sm",children:n.jsx(s.LuIcon,{icon:le})})]}),n.jsxs("div",{className:"flex flex-col gap-2 w-full overflow-hidden",children:[n.jsx(s.Input.Root,{variant:"outline",size:"md",children:n.jsx(s.Input.Field,{placeholder:"Enter your question",value:t.label??"",onChange:w=>t.setOptions({label:w.target.value}),maxLength:200})}),n.jsx(s.TextArea,{className:"field-sizing-content",placeholder:"Enter a field description (optional)",value:t.description??"",onChange:w=>t.setOptions({description:w.target.value}),maxLength:1e3,resize:"vertical",size:"md"})]}),m.length>0&&n.jsx("div",{className:"w-full",children:C})]})});No.displayName="FieldBuilder";const $n=d.memo(i=>{const{field:o,fieldSection:e,fieldIndex:t,sectionIndex:a}=i,r=d.useRef(null),l=`fields.${a}.fields`,u=d.useCallback(v=>{e.addField(_i(v),t+1)},[t,e]),c=d.useCallback(()=>{e.addField(o.duplicate(I.v4()))},[o,e]),f=d.useCallback(v=>{const S=v==="up"?a-1:a+1;e.moveField(t,S)},[e,t,a]),g=d.useCallback(v=>{const{files:S}=v.target;if(!S||S.length!==1)return;const b=S.item(0);if(b){if(b.size>pt){s.toast.error({title:"File upload error",description:`The file ${b.name} exceeded the maximum file size`});return}o.setOptions({image:b})}},[o]),m=d.useCallback(()=>{f("up")},[f]),V=d.useCallback(()=>{f("down")},[f]),C=d.useCallback(()=>{var v;(v=r.current)==null||v.click()},[]),y=d.useCallback(()=>{e.removeField(o)},[o,e]);return n.jsxs(s.Card,{className:"flex items-center justify-between gap-4 w-full",size:"sm",children:[n.jsx(No,{fieldIndex:t,field:o,parentPath:l}),n.jsxs(s.ButtonGroup,{className:"flex-col gap-0.5 flex",variant:"ghost",accentColor:"base",size:"sm",children:[n.jsx(Ti,{onSelectFieldType:u,size:"sm",children:n.jsx(s.IconButton,{type:"button",children:n.jsx(s.LuIcon,{icon:ee})})}),n.jsx(s.IconButton,{type:"button",onClick:m,children:n.jsx(s.LuIcon,{icon:Rn})}),n.jsx(s.IconButton,{type:"button",onClick:V,children:n.jsx(s.LuIcon,{icon:Qn})}),n.jsx(s.IconButton,{type:"button",onClick:c,children:n.jsx(s.LuIcon,{icon:Pi})}),n.jsx(s.IconButton,{type:"button",onClick:C,children:n.jsx(s.LuIcon,{icon:Zn})}),n.jsx(s.IconButton,{type:"button",onClick:y,children:n.jsx(s.LuIcon,{icon:le})})]}),n.jsx("input",{className:"hidden",ref:r,type:"file",accept:"image/*",onChange:g})]})});$n.displayName="FieldBuilderWithActions";const Dn=d.memo(i=>{const{children:o,variant:e,size:t,accentColor:a,fields:r,onSelectField:l,...u}=i;return n.jsxs(s.Menu.Root,{...u,children:[n.jsx(s.Menu.ClickTrigger,{children:o}),n.jsx(s.Menu.Content,{variant:e,size:t,accentColor:a,children:n.jsx(s.Menu.Scroll,{children:r.map(c=>n.jsxs(s.Menu.Item,{onSelect:()=>l(c),children:[n.jsx(s.LuIcon,{icon:$[c.type]}),c.label||j]},c.identifier))})})]})});Dn.displayName="IssueDataFilterMenu";const Mo=d.memo(i=>{const{children:o,variant:e,size:t,accentColor:a,fieldSections:r,onSelectFieldCondition:l,...u}=i;return n.jsxs(s.Menu.Root,{...u,children:[n.jsx(s.Menu.ClickTrigger,{children:o}),n.jsx(s.Menu.Content,{variant:e,size:t,accentColor:a,children:r.map(c=>n.jsxs(s.Menu.Item,{onSelect:()=>l(c),children:[n.jsx(s.LuIcon,{icon:$[c.type]}),c.label||gn]},c.identifier))})]})});Mo.displayName="IssueDataFilterMenu";const xo=d.memo(i=>{const{id:o,sourceX:e,sourceY:t,targetX:a,targetY:r,style:l,markerEnd:u,data:c}=i,{targetSection:f,sourceSection:g,layoutDirection:m}=c,V=d.useMemo(()=>g.getConditions(f.identifier),[g,f.identifier]),C=d.useCallback(()=>{g.removeConditional(f.identifier)},[g,f.identifier]),y=d.useCallback(w=>{g.addCondition(f.identifier,En(w))},[g,f.identifier]),v=d.useCallback(w=>{g.removeCondition(f.identifier,w)},[g,f.identifier]),[S,b,z]=E.getBezierPath({sourceX:e,sourceY:t,sourcePosition:m==="LR"?E.Position.Right:E.Position.Bottom,targetX:a,targetY:r,targetPosition:m==="LR"?E.Position.Left:E.Position.Top});return n.jsxs(n.Fragment,{children:[n.jsx(E.BaseEdge,{id:o,path:S,style:l,markerEnd:u,labelX:b,labelY:z}),n.jsx(E.EdgeLabelRenderer,{children:n.jsxs(s.Card,{size:"xs",variant:"surface",className:"absolute nodrag nopan pointer-events-auto inline-flex flex-col gap-2 bg-(--base-2)",onMouseDown:w=>w.stopPropagation(),onClick:w=>w.stopPropagation(),"data-floating-content":"",style:{transform:`translate(-50%, -50%) translate(${b}px, ${z}px)`},children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(s.Text,{size:"xs",className:"truncate max-w-[280px]",children:g.label||"Untitled section"}),n.jsxs("div",{className:"ml-auto flex items-center gap-1",children:[n.jsx(Dn,{fields:g.fields,onSelectField:y,children:n.jsx(s.IconButton,{"aria-label":"Add condition",type:"button",variant:"surface",size:"xs",accentColor:"base",children:n.jsx(s.LuIcon,{icon:ee})})}),n.jsxs(s.Tooltip.Root,{children:[n.jsx(s.Tooltip.Trigger,{asChild:!0,children:n.jsx(s.IconButton,{"aria-label":"Remove conditional logic",type:"button",variant:"surface",size:"xs",accentColor:"base",color:"danger",onClick:C,children:n.jsx(s.LuIcon,{icon:le})})}),n.jsx(s.Tooltip.Content,{size:"sm",children:"Remove conditional logic"})]})]})]}),V.length>0&&n.jsx("div",{className:"flex flex-col h-max w-full flex-wrap gap-1",children:V.map(w=>n.jsx(d.Fragment,{children:w.render({onRemove:v})},w.id))})]})})]})});xo.displayName="FieldSectionConditionEdgeComponent";const Io=d.memo(i=>{const{data:o,selected:e}=i,{fieldSection:t,index:a,layoutDirection:r}=o,l=d.use(ge),u=d.useCallback(()=>{l.removeFieldSection(t)},[l,t]),c=d.useCallback(m=>{t.addField(_i(m))},[t]),f=d.useCallback(()=>{const m=new Z({identifier:I.v4(),fields:[]});l.addFieldSection(m),t.addConditional(m.identifier)},[l,t]),g=d.useCallback(()=>{l.addFieldSection(t.duplicate(I.v4()))},[l,t]);return n.jsxs(s.Card,{variant:"surface",className:"cursor-pointer relative bg-(--base-2)",size:"sm","data-selected":e?"true":void 0,children:[n.jsxs("div",{className:"flex flex-col gap-3",children:[n.jsxs("div",{className:"flex flex-col gap-2 w-full overflow-hidden",children:[n.jsx(s.Input.Root,{variant:"outline",size:"md",accentColor:"base",children:n.jsx(s.Input.Field,{placeholder:"Enter a section label (optional)",value:t.label??"",onChange:m=>t.setOptions({label:m.target.value}),maxLength:200})}),n.jsx(s.TextArea,{className:"field-sizing-content",placeholder:"Enter a section description (optional)",value:t.description??"",onChange:m=>t.setOptions({description:m.target.value}),maxLength:1e3,resize:"vertical",size:"md"})]}),n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(s.Text,{weight:"bold",children:"Fields"}),n.jsx(Ti,{onSelectFieldType:c,size:"sm",children:n.jsxs(s.Button,{type:"button",variant:"soft",size:"sm",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:ee})," Add field"]})})]}),n.jsx("div",{className:"flex flex-col gap-3",children:t.fields.map((m,V)=>n.jsx($n,{field:m,fieldSection:t,fieldIndex:V,sectionIndex:a},m.identifier))})]}),n.jsx(E.NodeToolbar,{isVisible:!0,position:E.Position.Right,align:"start",offset:8,onMouseDown:m=>m.stopPropagation(),children:n.jsx(s.Card,{variant:"surface",className:"flex flex-col items-center gap-1 p-1 bg-(--base-2)",size:"xs",onClick:m=>m.stopPropagation(),children:n.jsxs(s.ButtonGroup,{className:"flex flex-col gap-2",variant:"surface",size:"xs",accentColor:"base",children:[n.jsx(s.IconButton,{type:"button",onClick:f,children:n.jsx(s.LuIcon,{icon:aa})}),n.jsx(s.IconButton,{type:"button",onClick:g,children:n.jsx(s.LuIcon,{icon:Pi})}),n.jsx(s.IconButton,{type:"button",onClick:u,children:n.jsx(s.LuIcon,{icon:le})})]})})}),n.jsx(E.Handle,{type:"target",className:"size-4! bg-(--base-3)! border-(--base-7)!",position:r==="LR"?E.Position.Left:E.Position.Top}),n.jsx(E.Handle,{type:"source",className:"size-4! bg-(--base-3)! border-(--base-7)!",position:r==="LR"?E.Position.Right:E.Position.Bottom})]})});Io.displayName="CustomNode";const Oa={fieldSection:Io},qa={fieldSectionCondition:xo},La=(i,o,e)=>{const t=new Gn.graphlib.Graph().setDefaultEdgeLabel(()=>({}));return t.setGraph({rankdir:e,nodesep:200,edgesep:500,ranksep:500}),o.forEach(a=>t.setEdge(a.source,a.target,{width:500,height:200,labelpos:"c"})),i.forEach(a=>{var r,l;return t.setNode(a.id,{...a,width:((r=a.measured)==null?void 0:r.width)??0,height:((l=a.measured)==null?void 0:l.height)??0})}),Gn.layout(t),[i.map(a=>{var c,f;const r=t.node(a.id),l=r.x-(((c=a.measured)==null?void 0:c.width)??0)/2,u=r.y-(((f=a.measured)==null?void 0:f.height)??0)/2;return{...a,position:{x:l,y:u}}}),o]},Aa={hideAttribution:!0},Oo=d.memo(()=>{const{handleSubmit:i,errors:o}=ie.useFormikContext(),{onCancel:e}=d.use(Ai),t=d.use(ge),a=d.useRef(null),[r,l]=d.useState(),[u,c]=d.useState("TB");d.useLayoutEffect(()=>{a.current&&a.current.classList.remove("light")},[]);const f=d.useMemo(()=>t.fieldSections.map((q,L)=>({id:q.identifier,position:{x:0,y:0},data:{index:L,fieldSection:q,layoutDirection:u},draggable:!0,type:"fieldSection"})),[t.fieldSections,u]),g=d.useMemo(()=>{const q=[],L={};for(const x of t.fieldSections)L[x.identifier]=x;for(const x of t.fieldSections){const B=x.conditions;for(const[W,Q]of Object.entries(B))q.push({id:`${x.identifier}-${W}`,source:x.identifier,target:W,data:{targetSection:L[W],sourceSection:x,layoutDirection:u},animated:Q.length>0,markerEnd:E.MarkerType.Arrow,style:{strokeWidth:2,stroke:"var(--base-a8)"},type:"fieldSectionCondition"})}return q},[t.fieldSections,u]),[m,V,C]=E.useNodesState(f),[y,v,S]=E.useEdgesState(g);d.useEffect(()=>{V(f)},[f,V]),d.useEffect(()=>{v(g)},[g,v]);const[b,z]=d.useMemo(()=>La(m,y,u),[y,u,m]),w=d.useCallback(()=>{t.addFieldSection(new Z({identifier:I.v4(),fields:[]}))},[t]),N=d.useCallback(q=>{const{source:L,target:x}=q,B=t.fieldSections.find(({identifier:W})=>W===L);B.setOptions({conditions:{...B.conditions,[x]:[]}})},[t.fieldSections]),M=d.useCallback(q=>{const L=t.getSectionDependencyGraph();return!Pn.willCreateCycle(L,q.source,q.target)},[t]);return n.jsxs("form",{className:"size-full flex flex-col gap-4",id:Li,onSubmit:i,children:[n.jsxs(s.Card,{className:"size-full relative",variant:"outline",children:[n.jsx(E.ReactFlow,{ref:a,onInit:l,nodes:b,onNodesChange:C,edges:z,onEdgesChange:S,nodeTypes:Oa,edgeTypes:qa,onConnect:N,attributionPosition:"bottom-left",fitView:!0,minZoom:0,isValidConnection:M,proOptions:Aa}),n.jsx(E.Panel,{position:"top-left",children:n.jsx(s.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:n.jsxs(s.Button,{type:"button",variant:"surface",onClick:w,children:[n.jsx(s.LuIcon,{icon:ee})," Add section"]})})}),n.jsxs(E.Panel,{position:"top-right",className:"flex flex-col items-center gap-2",children:[n.jsxs(s.ToggleGroup.Root,{className:"flex flex-col",type:"single",accentColor:"base",size:"sm",value:u,onValueChange:c,children:[n.jsx(s.ToggleGroup.IconItem,{className:"rounded-b-none",value:"LR",type:"button",children:n.jsx(s.LuIcon,{icon:Ko})}),n.jsx(s.ToggleGroup.IconItem,{className:"rounded-t-none",value:"TB",type:"button",children:n.jsx(s.LuIcon,{icon:Xo})})]}),n.jsx(s.Separator,{size:"sm"}),n.jsxs(s.ButtonGroup,{className:"flex flex-col",size:"sm",accentColor:"base",variant:"soft",children:[n.jsx(s.IconButton,{className:"rounded-b-none",onClick:()=>r==null?void 0:r.zoomIn(),type:"button",children:n.jsx(s.LuIcon,{icon:ee})}),n.jsx(s.IconButton,{onClick:()=>r==null?void 0:r.zoomOut(),radius:"none",type:"button",children:n.jsx(s.LuIcon,{icon:mi})}),n.jsx(s.IconButton,{className:"rounded-t-none",onClick:()=>r==null?void 0:r.fitView(),type:"button",children:n.jsx(s.LuIcon,{icon:ma})})]})]}),n.jsx(E.Panel,{position:"bottom-right",children:n.jsxs(s.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:[e&&n.jsx(s.Button,{type:"button",variant:"soft",accentColor:"base",onClick:e,children:"Cancel"}),n.jsx(s.Button,{type:"submit",variant:"surface",children:"Save"})]})})]}),!!o.fields&&n.jsx(s.Text,{size:"xs",accentColor:"danger",children:typeof o.fields=="string"&&o.fields})]})});Oo.displayName="FormBuilderFlowBuilder";const qo=d.memo(i=>{const{sourceFieldSection:o,targetFieldSection:e}=i,t=d.useMemo(()=>o.getConditions(e.identifier),[o,e.identifier]),a=d.useCallback(()=>{o.removeConditional(e.identifier)},[o,e.identifier]),r=d.useCallback(u=>{o.addCondition(e.identifier,En(u))},[o,e.identifier]),l=d.useCallback(u=>{o.removeCondition(e.identifier,u)},[o,e.identifier]);return n.jsxs(s.Card,{className:"flex flex-col gap-2",size:"sm",children:[n.jsxs(s.ButtonGroup,{className:"justify-between gap-2 flex",size:"sm",accentColor:"base",variant:"soft",children:[n.jsxs(s.Badge,{accentColor:"base",variant:"soft",size:"sm",children:[n.jsx(s.LuIcon,{icon:$.section}),o.label??gn]}),n.jsx(s.IconButton,{type:"button",onClick:a,variant:"ghost",children:n.jsx(s.LuIcon,{icon:le})})]}),n.jsxs("div",{className:"flex h-max w-full flex-wrap gap-2",children:[t.map(u=>u.render({onRemove:l})),n.jsx(Dn,{fields:o.fields,onSelectField:r,align:"start",children:n.jsx(s.IconButton,{type:"button",size:"sm",variant:"soft",accentColor:"base",children:n.jsx(s.LuIcon,{icon:ee})})})]})]})});qo.displayName="FieldSectionConditionalItem";const Lo=d.memo(i=>{const{fieldSection:o}=i,e=d.use(ge),t=d.useMemo(()=>e.fieldSections.filter(l=>o.identifier in l.conditions),[e.fieldSections,o.identifier]),a=d.useCallback(l=>{l.addConditional(o.identifier)},[o.identifier]),r=d.useMemo(()=>{const l=e.getSectionDependencyGraph();return e.fieldSections.filter(u=>!Pn.willCreateCycle(l,u.identifier,o.identifier))},[o.identifier,e]);return n.jsxs("div",{className:"flex grow w-full flex-col gap-4",children:[n.jsxs("div",{className:"flex flex-col gap-2 w-full overflow-hidden",children:[n.jsx(s.Input.Root,{variant:"outline",size:"md",children:n.jsx(s.Input.Field,{placeholder:"Enter a section label (optional)",value:o.label??"",onChange:l=>o.setOptions({label:l.target.value}),maxLength:200})}),n.jsx(s.TextArea,{className:"field-sizing-content",placeholder:"Enter a section description (optional)",value:o.description??"",onChange:l=>o.setOptions({description:l.target.value}),maxLength:1e3,resize:"vertical",size:"md"})]}),n.jsx(s.Separator,{size:"full"}),n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsxs("div",{className:"flex gap-2 justify-between",children:[n.jsx(s.Text,{accentColor:"base",children:"Conditions"}),n.jsx(Mo,{fieldSections:r,onSelectFieldCondition:a,children:n.jsxs(s.Button,{type:"button",variant:"soft",size:"sm",className:"w-max",children:[n.jsx(s.LuIcon,{icon:ee}),"Add condition"]})})]}),t.map(l=>n.jsx(qo,{sourceFieldSection:l,targetFieldSection:o},l.identifier))]}),n.jsx(s.Separator,{size:"full"})]})});Lo.displayName="FieldSectionBuilder";const Ao=d.memo(i=>{const{fieldSection:o,sectionIndex:e}=i,t=d.use(ge),a=s.useAlertDialog(),r=d.useCallback(()=>{t.removeFieldSection(o)},[t,o]),l=d.useCallback(v=>{const S=v==="up"?e-1:e+1;t.moveFieldSection(e,S)},[t,e]),u=d.useCallback(()=>{t.addFieldSection(o.duplicate(I.v4()))},[t,o]),c=d.useCallback(v=>{o.addField(_i(v))},[o]),f=d.useCallback(()=>{l("up")},[l]),g=d.useCallback(()=>{l("down")},[l]),m=d.useCallback(async()=>{const v=[o.serialize()],S=se.reseedFieldSections(v,{conditions:!1}),b=JSON.stringify(S);await navigator.clipboard.writeText(b),s.toast.success({title:"Section copied"})},[o]),V=d.useCallback(async()=>{const S=t.getDependenciesOfSection(o.identifier).map(w=>w.serialize()),b=se.reseedFieldSections(S,{conditions:!0}),z=JSON.stringify(b);await navigator.clipboard.writeText(z),s.toast.success({title:"Section copied"})},[o,t]),C=d.useCallback(async()=>{const v=t.getDependenciesOfSection(o.identifier),S=v.length>1,b=v.length-1;S?a({title:"Copy section dependencies?",description:`This section has ${b} dependent section${b>1?"s":""} that will also be copied to maintain the conditions. Do you want to include these dependencies?`,action:"Include",onAction:V,cancel:"Dont include",onCancel:m}):m()},[o,t,a,V,m]),y=d.useCallback(async()=>{let v="";try{v=await navigator.clipboard.readText()}catch{s.toast.error({title:"Paste failed",description:"Unable to read clipboard contents."});return}const S=v.trim();if(!S){s.toast.error({title:"Paste failed",description:"Clipboard is empty."});return}let b;try{b=JSON.parse(S)}catch{s.toast.error({title:"Invalid JSON",description:"Check the JSON and try again."});return}const z=Array.isArray(b)?b:[b],w=[];for(const N of z){if(!N||typeof N!="object")continue;const M=N;if(M.type!=="section"||!Array.isArray(M.fields))continue;const q={type:"section",identifier:typeof M.identifier=="string"?M.identifier:I.v4(),label:typeof M.label=="string"||M.label===null?M.label:null,description:typeof M.description=="string"||M.description===null?M.description:null,conditions:M.conditions&&typeof M.conditions=="object"?M.conditions:{},fields:M.fields};try{w.push(Z.deserialize(q))}catch{}}if(w.length===0){s.toast.error({title:"Paste failed",description:"No valid sections found in the JSON."});return}w.forEach((N,M)=>{t.addFieldSection(N,e+1+M)}),s.toast.success({title:"Section pasted",description:"Serialized JSON imported successfully."})},[t,e]);return n.jsxs(s.Card,{variant:"outline",className:"flex items-center justify-between gap-4 w-full",size:"sm",children:[n.jsxs("div",{className:"flex grow flex-col gap-4 w-full",children:[n.jsx(Lo,{fieldSection:o}),n.jsxs("div",{className:"flex flex-col gap-2 w-full",children:[n.jsxs("div",{className:"flex gap-2 justify-between",children:[n.jsx(s.Text,{accentColor:"base",size:"md",children:"Fields"}),n.jsx(Ti,{onSelectFieldType:c,size:"sm",children:n.jsxs(s.Button,{type:"button",variant:"soft",size:"sm",children:[n.jsx(s.LuIcon,{icon:ee})," Add field"]})})]}),o.fields.map((v,S)=>n.jsx($n,{field:v,fieldSection:o,fieldIndex:S,sectionIndex:e},v.identifier))]})]}),n.jsxs(s.ButtonGroup,{className:"flex-col gap-0.5 flex",variant:"ghost",accentColor:"base",size:"sm",children:[n.jsx(s.IconButton,{type:"button",onClick:f,children:n.jsx(s.LuIcon,{icon:Rn})}),n.jsx(s.IconButton,{type:"button",onClick:g,children:n.jsx(s.LuIcon,{icon:Qn})}),n.jsxs(s.Menu.Root,{align:"end",children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.IconButton,{type:"button",children:n.jsx(s.LuIcon,{icon:Kn})})}),n.jsxs(s.Menu.Content,{size:"sm",children:[n.jsxs(s.Menu.Item,{onSelect:u,children:[n.jsx(s.LuIcon,{icon:Pi}),"Duplicate section"]}),n.jsxs(s.Menu.Item,{onSelect:C,children:[n.jsx(s.LuIcon,{icon:Jn}),"Copy JSON"]}),n.jsxs(s.Menu.Item,{onSelect:y,children:[n.jsx(s.LuIcon,{icon:Wn}),"Paste JSON"]}),n.jsxs(s.Menu.Item,{onSelect:r,children:[n.jsx(s.LuIcon,{icon:le}),"Delete section"]})]})]})]})]})});Ao.displayName="FieldSectionWithActions";const To=d.memo(()=>{const{handleSubmit:i,errors:o}=ie.useFormikContext(),{onCancel:e}=d.use(Ai),t=d.use(ge),a=d.useCallback(()=>{t.addFieldSection(new Z({identifier:I.v4(),fields:[]}))},[t]),r=d.useCallback(async()=>{try{const u=t.serialize(),c=se.reseedFieldSections(u),f=JSON.stringify(c);await navigator.clipboard.writeText(f),s.toast.success({title:"Sections copied",description:"All sections JSON copied to clipboard."})}catch{s.toast.error({title:"Copy failed",description:"Unable to copy the sections JSON."})}},[t]),l=d.useCallback(async()=>{let u="";try{u=await navigator.clipboard.readText()}catch{s.toast.error({title:"Paste failed",description:"Unable to read clipboard contents."});return}const c=u.trim();if(!c){s.toast.error({title:"Paste failed",description:"Clipboard is empty."});return}let f;try{f=JSON.parse(c)}catch{s.toast.error({title:"Invalid JSON",description:"Check the JSON and try again."});return}const g=Array.isArray(f)?f:[f],m=[];for(const C of g){if(!C||typeof C!="object")continue;const y=C;if(y.type!=="section"||!Array.isArray(y.fields))continue;const v={type:"section",identifier:typeof y.identifier=="string"?y.identifier:I.v4(),label:typeof y.label=="string"||y.label===null?y.label:null,description:typeof y.description=="string"||y.description===null?y.description:null,conditions:y.conditions&&typeof y.conditions=="object"?y.conditions:{},fields:y.fields};try{m.push(Z.deserialize(v))}catch{}}if(m.length===0){s.toast.error({title:"Paste failed",description:"No valid sections found in the JSON."});return}const V=t.fieldSections.length;m.forEach((C,y)=>{t.addFieldSection(C,V+y)}),s.toast.success({title:"Sections pasted",description:"Serialized JSON imported successfully."})},[t]);return n.jsxs("form",{className:"flex flex-col gap-4",id:Li,onSubmit:i,children:[n.jsxs("div",{className:"flex flex-col gap-4",children:[n.jsxs("div",{className:"flex items-center justify-end gap-2",children:[n.jsxs(s.Button,{type:"button",variant:"soft",size:"sm",onClick:r,children:[n.jsx(s.LuIcon,{icon:Jn})," Copy JSON"]}),n.jsxs(s.Button,{type:"button",variant:"soft",size:"sm",onClick:l,children:[n.jsx(s.LuIcon,{icon:Wn})," Paste JSON"]})]}),t.fieldSections.map((u,c)=>n.jsx(Ao,{fieldSection:u,sectionIndex:c},u.identifier)),n.jsxs(s.Button,{className:"mb-4",type:"button",variant:"soft",accentColor:"base",size:"sm",onClick:a,children:[n.jsx(s.LuIcon,{icon:ee})," Add section"]})]}),!!o.fields&&n.jsx(s.Text,{size:"xs",accentColor:"danger",children:typeof o.fields=="string"&&o.fields}),n.jsxs(s.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:[e&&n.jsx(s.Button,{type:"button",variant:"soft",accentColor:"base",onClick:e,children:"Cancel"}),n.jsx(s.Button,{type:"submit",variant:"surface",children:"Save"})]})]})});To.displayName="FormBuilderListBuilder";const _o=d.memo(d.forwardRef((i,o)=>{const{readonly:e=!1,fieldSchema:t,values:a={},onValuesChange:r,onSubmit:l,submitText:u="Submit",hideSubmit:c=!1,cancelText:f,onCancel:g,hideCancel:m=!1,onDirty:V,onDirtyChange:C,className:y,buttonProps:v,enableReinitialize:S=!1,excludeUnchangedFields:b=!1,size:z="md"}=i,w=d.useId(),N=d.useMemo(()=>t.initializeValues(a),[t,a]),M=d.useCallback(G=>{l==null||l(b?t.changedFieldValues(N,G):G)},[b,N,l,t]),q=ie.useFormik({initialValues:N,onSubmit:M,validate:G=>t.validateValues(G),validateOnBlur:!1,validateOnChange:!1,enableReinitialize:!1});d.useLayoutEffect(()=>{S&&q.resetForm({values:N})},[S,N]);const{dirty:L}=q,x=d.useCallback((G,T)=>{fo(ho(t.getFieldSections()))[G].areValuesEqual(N[G],T)||r==null||r({...q.values,[G]:T},{[G]:T})},[q.values,N,r,t]),B=d.useMemo(()=>({formId:w,disabled:e,onValuesChange:x,size:z}),[w,x,e,z]),W=We(t.getFieldSections(),B);d.useEffect(()=>{L&&V&&V(),C&&C(L)},[L,V,C]);const Q=d.useMemo(()=>({fieldSchema:t,size:z}),[t,z]),_=!m&&!!g,P=!c;return n.jsx(ie.FormikProvider,{value:q,children:n.jsx(So,{value:Q,children:n.jsxs("form",{id:w,ref:o,className:ne.cx(y,"flex flex-col gap-4"),onSubmit:q.handleSubmit,children:[W,!e&&(_||P)?n.jsxs(s.ButtonGroup,{className:"flex items-center justify-end gap-2",size:z,children:[_?n.jsxs(s.Button,{accentColor:"base",...v,type:"button",variant:"soft",onClick:g,children:[n.jsx(s.LuIcon,{icon:te}),f]}):null,P?n.jsxs(s.Button,{...v,type:"submit",accentColor:"primary",variant:"surface",children:[n.jsx(s.LuIcon,{icon:Y}),u]}):null]}):null]})})})})),Bo=d.memo(()=>{const i=d.use(ge);return n.jsx(_o,{fieldSchema:i,readonly:!1})});Bo.displayName="FormBuilderPreview";const Eo=d.memo(i=>{const{children:o,initialFields:e,onSave:t,onCancel:a,enableReinitialize:r=!1,disableRequiredFields:l=!1}=i,u=d.useCallback(C=>{var z;const y={};(!C.fields||C.fields.length===0)&&(y.fields="At least one field is required.");const v=[];for(const[w,N]of C.fields.entries())for(const[M,q]of N.fields.entries()){const L=((z=wo(q.type,`fields.${w}.fields.${M}`))==null?void 0:z.map(({field:x})=>x))??[];v.push(...L)}const S={};for(const w of v)S[w.identifier]=$i(C,w.identifier);const b=_n(v,S);if(b&&(y.fields=b.fields),Object.keys(y).length>0)return s.toast.error({title:"Some form settings are invalid",description:"Please check settings highlighted in red."}),y},[]),c=d.useMemo(()=>({fields:e??[]}),[e]),f=ie.useFormik({initialValues:c,validate:u,onSubmit:t,validateOnChange:!1,validateOnBlur:!1,enableReinitialize:r}),g=d.useCallback(C=>{f.setFieldValue("fields",C.serialize())},[f]),m=d.useMemo(()=>{const C=se.deserialize(f.values.fields);return C.observe(g),C},[f.values.fields,g]),V=d.useMemo(()=>({disableRequiredFields:l,onCancel:a}),[l,a]);return n.jsx(Ai,{value:V,children:n.jsx(ge,{value:m,children:n.jsx(ie.FormikProvider,{value:f,children:o})})})});Eo.displayName="FormBuilderRoot";const Ta={Root:Eo,FlowBuilder:Oo,ListBuilder:To,Preview:Bo};h.BaseCondition=H,h.BaseField=X,h.BaseFormElement=Ui,h.BaseOptionsField=Xe,h.BaseStringField=Ki,h.BooleanEqualsConditionModifier=gt,h.BooleanField=ye,h.BooleanFieldCondition=ii,h.BooleanFieldConditionCell=Lt,h.BooleanFieldInput=Wi,h.BooleanNotEqualsConditionModifier=mt,h.CheckboxListField=ve,h.CheckboxListFieldCondition=ni,h.CheckboxListFieldConditionCell=Tt,h.CheckboxListFieldInput=Yi,h.ConditionManager=Ii,h.DateAfterConditionModifier=vt,h.DateBeforeConditionModifier=Vt,h.DateEqualsConditionModifier=Ct,h.DateField=Ke,h.DateFieldCondition=ti,h.DateFieldConditionCell=Bt,h.DateFieldInput=Zi,h.DateNotEqualsConditionModifier=yt,h.DateRangeInConditionModifier=zt,h.DateRangeNotInConditionModifier=St,h.DoesNotHaveFilesConditionModifier=bt,h.FieldSchema=se,h.FieldSection=Z,h.FieldSectionLayout=Bn,h.FieldTypeToClsMapping=Si,h.FieldsRenderer=_o,h.FileCard=Gi,h.FormBuilder=Ta,h.HasFilesConditionModifier=wt,h.ImageCard=nn,h.ImageFile=yi,h.ImageViewer=Hi,h.ImageViewerProvider=nt,h.InputWithLabel=U,h.LONG_TEXT_FIELD_MAX_LENGTH=Ve,h.MultiSelectField=oe,h.MultiSelectFieldCondition=oi,h.MultiSelectFieldConditionCell=$t,h.MultiSelectFieldInput=Qi,h.MultiStringField=Ce,h.MultiStringFieldCondition=ai,h.MultiStringFieldConditionCell=Pt,h.MultiStringFieldInput=Ji,h.NumberEqualsConditionModifier=mn,h.NumberField=R,h.NumberFieldCondition=si,h.NumberFieldConditionCell=Gt,h.NumberFieldInput=Xi,h.NumberGreaterThanConditionModifier=vn,h.NumberGreaterThanOrEqualsConditionModifier=zn,h.NumberLessThanConditionModifier=yn,h.NumberLessThanOrEqualsConditionModifier=Vn,h.NumberNotEqualsConditionModifier=Cn,h.NumberRangeInConditionModifier=Sn,h.NumberRangeNotInConditionModifier=wn,h.OTPField=ze,h.OTPFieldCondition=ri,h.OTPFieldConditionCell=kt,h.OTPFieldInput=en,h.Observable=Je,h.PassFailArrayExcludesConditionModifier=xt,h.PassFailArrayIncludesConditionModifier=Mt,h.PassFailEqualsConditionModifier=Ft,h.PassFailField=be,h.PassFailFieldCondition=li,h.PassFailFieldConditionCell=Jt,h.PassFailFieldInput=sn,h.PassFailNotEqualsConditionModifier=Nt,h.RadioField=Fe,h.RadioFieldCondition=di,h.RadioFieldConditionCell=Xt,h.RadioFieldInput=ln,h.RatingField=Ne,h.RatingFieldCondition=ci,h.RatingFieldConditionCell=Yt,h.RatingFieldInput=dn,h.SEVERITY_COLOR_MAPPING=bo,h.SHORT_TEXT_FIELD_MAX_LENGTH=zi,h.ScanField=Ye,h.ScanFieldCondition=ui,h.ScanFieldConditionCell=Qt,h.ScanFieldInput=un,h.Scanner=vi,h.ScannerProvider=ht,h.SelectField=de,h.SelectFieldCondition=hi,h.SelectFieldConditionCell=eo,h.SelectFieldInput=Ri,h.StringArrayEqualsConditionModifier=Ni,h.StringArrayEveryConditionModifier=wi,h.StringArrayExcludesConditionModifier=Fn,h.StringArrayIncludesConditionModifier=bn,h.StringArrayNoneConditionModifier=Fi,h.StringArrayNotEqualsConditionModifier=Mi,h.StringArraySomeConditionModifier=bi,h.StringEqualsConditionModifier=ue,h.StringExcludesConditionModifier=Qe,h.StringField=Me,h.StringFieldCondition=fi,h.StringFieldConditionCell=no,h.StringFieldInput=hn,h.StringIncludesConditionModifier=Ze,h.StringNotEqualsConditionModifier=he,h.TextField=xe,h.TextFieldCondition=pi,h.TextFieldConditionCell=oo,h.TextFieldInput=fn,h.UNLABELLED_FIELD_LABEL=j,h.UNLABELLED_SECTION_LABEL=gn,h.UUIDFile=ae,h.UUIDPromise=we,h.UploadField=Ie,h.UploadFieldCondition=gi,h.UploadFieldConditionCell=so,h.UploadFieldInput=pn,h.VideoCard=on,h.VideoFile=tn,h.areFieldValuesBlank=zo,h.areFieldValuesEqual=An,h.areFileAndPromiseArraysEqual=Vi,h.arePassFieldValuesEqual=lt,h.areSerializedPassFailFieldValuesEqual=dt,h.awaitFilesAndPromises=xa,h.blankFieldValues=Tn,h.changedFieldValues=Vo,h.cleanConditions=qn,h.cleanFieldValues=qi,h.cleanSerializedConditions=On,h.cleanSerializedFieldValues=Ln,h.createCondition=En,h.createConditionModifierConfig=F,h.createField=_i,h.deserialize=uo,h.deserializeCondition=lo,h.deserializeConditions=In,h.deserializeField=Oi,h.deserializeFieldValues=go,h.deserializeFields=wa,h.deserializeOnlyFields=ba,h.deserializePassFailFieldValue=rt,h.extractFilesAndPromisesFromFieldValues=mo,h.fieldIcons=$,h.flattenFields=ho,h.getFieldsMapping=fo,h.initializeFieldValues=yo,h.insertFilesAndPromisesToFieldValues=Co,h.isFileAndPromiseArray=tt,h.isPassFailFieldStatus=rn,h.isPassFailFieldValue=at,h.isSerializedPassFailFieldValue=ot,h.isStringArray=He,h.maxFileSizeB=pt,h.maxFileSizeKB=ft,h.maxFileSizeMB=Oe,h.passFailFieldStatusMapping=ce,h.passFailFieldStatuses=Se,h.separateImagesFromFields=Ma,h.serializeConditions=co,h.serializeFieldValues=po,h.serializePassFailFieldValue=st,h.unchangedFieldValues=vo,h.useConditionManager=za,h.useFieldInputs=We,h.useFormikInput=k,h.useImageViewer=Ci,h.useObjectUrl=ki,h.useScanner=va,h.useScannerContext=ct,h.validateFields=_n,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
|
|
241
|
+
*/const te=O("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),Gi=d.memo(i=>{const{ref:o,file:e,className:t,error:a,rightSlot:r,size:l,...u}=i;return n.jsxs(s.Card,{className:ne.cx(t,"flex w-full items-center gap-2"),ref:o,size:"xs",...u,children:[a?n.jsx(s.LuIcon,{icon:ta,color:"var(--base-a11)"}):n.jsx(s.LuIcon,{icon:oa,color:"var(--base-a11)"}),a?n.jsx(s.Text,{accentColor:"danger",className:"truncate",size:l,children:a}):e?n.jsx(s.Text,{className:"truncate",size:l,children:e.name}):n.jsx("div",{className:"flex w-full justify-center",children:n.jsx(s.Spinner,{})}),r]})});Gi.displayName="FileCard";function He(i){return Array.isArray(i)?i.every(o=>typeof o=="string"):!1}class Je{constructor(){p(this,"observers",new Set)}notify(o){for(const e of this.observers)e(o)}observe(o){return this.observers.add(o),()=>{this.observers.delete(o)}}}class Ui extends Je{constructor(e){const{identifier:t}=e;super();p(this,"identifier");this.identifier=t}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 X extends Ui{constructor(e){const{label:t,description:a=null,required:r,image:l,...u}=e;super(u);p(this,"label");p(this,"description");p(this,"required");p(this,"image");p(this,"onlyValidateAfterTouched",!0);this.label=t,this.description=a,this.required=r,this.image=l}getError(e){if(this.required&&this.isValueBlank(e))return"This field is required.";for(const t of this.getFieldValidators()){const a=t(e);if(a)return a}}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:t,description:a=null,required:r,image:l,...u}=e;this.label=t??this.label,this.description=a??this.description,this.required=r??this.required,this.image=l??this.image,super.setOptions(u)}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[]}}p(X,"fieldTypeName"),p(X,"fieldTypeDescription");const it=d.createContext(()=>{throw new Error("No ImageViewerProvider found")}),Ci=()=>d.useContext(it),ki=i=>{const[o,e]=d.useState(null);return d.useEffect(()=>{const t=URL.createObjectURL(i);return e(t),()=>{URL.revokeObjectURL(t)}},[i]),o},yi=d.memo(i=>{const{file:o,...e}=i,t=ki(o);return t?n.jsx("img",{src:t,alt:o.name,...e}):null});yi.displayName="ImageFile";const Hi=d.memo(i=>{const{file:o,onClose:e}=i,t=d.useCallback(()=>{jn.saveAs(o,o.name)},[o]);return n.jsx(s.Overlay.Root,{open:!0,onOpenChange:e,children:n.jsxs(s.Overlay.Content,{onOpenAutoFocus:a=>a.preventDefault(),children:[n.jsxs(s.ButtonGroup,{className:"flex gap-2 items-center top-0 absolute right-0 p-2",accentColor:"base",variant:"ghost",children:[n.jsxs(s.Tooltip.Root,{children:[n.jsx(s.Tooltip.Trigger,{asChild:!0,children:n.jsx(s.IconButton,{onClick:t,"aria-label":"download",children:n.jsx(s.LuIcon,{icon:Xn})})}),n.jsx(s.Tooltip.Content,{size:"sm",children:"Download"})]}),n.jsx(s.Separator,{orientation:"vertical",size:"sm"}),n.jsx(s.Overlay.Close,{asChild:!0,children:n.jsx(s.IconButton,{onClick:e,"aria-label":"close",children:n.jsx(s.LuIcon,{icon:te})})})]}),n.jsx("figure",{className:"size-full overflow-hidden p-4 flex justify-center items-center",children:n.jsx(yi,{className:"max-w-full max-h-full",file:o})})]})})});Hi.displayName="ImageViewer";const nt=d.memo(i=>{const{children:o}=i,[e,t]=d.useState(null),a=d.useCallback(()=>{t(null)},[]),r=d.useCallback(u=>{t(u(a))},[a]),l=d.useCallback(()=>{e&&(e.onClose&&e.onClose(),a())},[a,e]);return n.jsxs(it.Provider,{value:r,children:[o,e&&n.jsx(Hi,{file:e.file,onClose:l})]})});nt.displayName="FileViewerProvider";const U=d.memo(i=>{const{className:o,label:e,error:t,description:a,children:r,inputId:l,labelId:u,image:c,size:f}=i,[g,m]=d.useState(void 0),V=Ci();d.useEffect(()=>{c instanceof Promise?c.then(m).catch(console.error):m(c)},[c]);const C=g?URL.createObjectURL(g):void 0,y=d.useCallback(()=>{g&&V(()=>({file:g}))},[V,g]);return n.jsxs("div",{className:"flex flex-col gap-1",children:[g&&n.jsx("img",{className:"h-[100px] w-full min-w-[300px] cursor-pointer rounded-md object-cover",src:C,alt:g.name,onClick:y}),(!!e||!!a)&&n.jsxs("div",{className:"flex flex-col",children:[n.jsx("label",{className:ne.cx(o,"w-max max-w-full"),htmlFor:l,children:n.jsx(s.Text,{size:f,id:u,className:"text-wrap",children:e})}),!!a&&n.jsx(s.Text,{accentColor:"base",size:f,children:a})]}),r,!!t&&n.jsx(s.Text,{accentColor:"danger",size:f,children:t})]})}),Va=ne.cva(["flex","flex-col"],{variants:{size:{xs:["gap-2"],sm:["gap-4"],md:["gap-6"],lg:["gap-8"],xl:["gap-10"]}}}),We=(i,o)=>{const{size:e}=o;return n.jsx("div",{className:Va({size:e}),children:i.map((t,a)=>n.jsx(d.Fragment,{children:t.render({index:a,...o})},t.identifier))})},k=i=>{const{field:o,size:e,showInputOnly:t,onValuesChange:a,...r}=i,[l,u,c]=ie.useField(o.identifier),{touched:f}=u,g=u.error??"",m=o.identifier,V=`${m}-label`,C=o.required?`${o.label} *`:o.label,y=o.description??"",v=d.useMemo(()=>({...l,onChange:z=>{c.setValue(z,!1),a==null||a(o.identifier,z),(f||!o.onlyValidateAfterTouched)&&c.setError(o.getError(z))},onBlur:z=>{c.setTouched(!0,!1),c.setError(o.getError(z))}}),[o,l,c,a,f]);return[{error:g,size:e,inputId:m,labelId:V,label:C,description:y,showInputOnly:t,fieldProps:v,helpers:c,field:o,touched:f},{...r,"aria-labelledby":V}]},Ji=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f},{disabled:g}]=k(i),m=a?"":u,{value:V,name:C,onChange:y,onBlur:v}=f,S=`${o}-droppable`,[b,z]=d.useState(""),[w,N]=d.useState(""),M=d.useCallback(_=>{y(_),v(_)},[y,v]),q=d.useCallback(_=>{V&&V.findIndex(P=>P===_.target.value.trim())>=0?N("All options must be unique"):_.target.value?N(""):N("Option cannot be empty"),z(_.target.value)},[z,V]),L=d.useCallback(()=>{if(w)return;if(!b.trim()){N("Option cannot be empty");return}const _=b.trim();M([...V,_]),z("")},[b,w,M,V]),x=d.useCallback(_=>{_.key==="Enter"&&(_.preventDefault(),L())},[L]),B=d.useCallback(_=>{const P=Array.from(V);P.splice(_,1),M(P)},[V,M]),W=d.useCallback(_=>{if(!_.destination)return;const P=_.source.index,G=_.destination.index,T=Array.from(V),[D]=T.splice(P,1);T.splice(G,0,D),M(T)},[M,V]),Q=d.useCallback(()=>{v(V)},[v,V]);return n.jsx(Ei.DragDropContext,{onDragEnd:W,children:n.jsxs(U,{size:t,inputId:o,labelId:e,label:m,description:c,error:w||l,image:a?void 0:r.image,children:[(!g||V.length===0)&&n.jsxs("div",{className:"flex gap-2",children:[n.jsx(s.Input.Root,{className:"grow",accentColor:"base",variant:"surface",size:t,children:n.jsx(s.Input.Field,{value:b,onChange:q,onKeyDown:x,id:o,placeholder:r.placeholder,onBlur:Q,name:C,disabled:g})}),n.jsx(s.IconButton,{size:t,accentColor:"base",variant:"soft",type:"button","aria-label":"Add option",disabled:!!w||g,onClick:L,children:n.jsx(s.LuIcon,{icon:ee})})]}),V.length!==0&&n.jsx(Ei.Droppable,{droppableId:S,children:_=>n.jsxs("div",{className:"flex flex-col gap-1",..._.droppableProps,ref:_.innerRef,children:[V.map((P,G)=>n.jsx(Ei.Draggable,{draggableId:`${P}-draggable`,index:G,isDragDisabled:g,children:({draggableProps:T,dragHandleProps:D,innerRef:Bi})=>n.jsxs(s.Badge,{...D,...T,ref:Bi,className:"flex items-center justify-between gap-2",accentColor:"base",size:t,variant:"soft",children:[n.jsx(s.Text,{className:"truncate",highContrast:!0,children:typeof P=="object"&&"label"in P?P.label:P}),n.jsx(s.IconButton,{className:"bg-transparent!",size:t,variant:"ghost",type:"button","aria-label":"Delete option",accentColor:"base",disabled:g,onClick:()=>{B(G)},children:n.jsx(s.LuIcon,{icon:te})})]})},`${o}-${P}-${G}`)),_.placeholder]})})]})})});Ji.displayName="MultiStringFieldInput";const qe=class qe extends X{constructor(e){const{minimum_length:t,maximum_length:a,placeholder:r,...l}=e;super(l);p(this,"type","multi-string");p(this,"minLength");p(this,"maxLength");p(this,"placeholder");p(this,"onlyValidateAfterTouched",!1);this.minLength=t??0,this.maxLength=a??1/0,this.placeholder=r??"Press enter to add a new option"}render(e){return n.jsx(Ji,{field:this,...e})}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 qe({...this.getOptions(),identifier:e})}setOptions(e){const{minimum_length:t,maximum_length:a,placeholder:r,...l}=e;this.minLength=t??this.minLength,this.maxLength=a??this.maxLength,this.placeholder=r??this.placeholder,super.setOptions(l)}serializeValue(e){return e}deserializeValue(e){return e}getFieldValidators(){const e=super.getFieldValidators();return e.push(t=>{if(Array.isArray(t)&&t.length<this.minLength)return`Must have at least ${this.minLength} options.`}),e.push(t=>{if(Array.isArray(t)&&t.length>this.maxLength)return`Must have at most ${this.maxLength} options.`}),e}static deserialize(e){return new qe(e)}isSerializedValue(e){return He(e)}isValue(e){return He(e)}blankValue(){return[]}areValuesEqual(e,t){const a=new Set(e),r=new Set(t);return a.size===r.size&&a.isSubsetOf(r)}blankSerializedValue(){return[]}areSerializedValuesEqual(e,t){const a=new Set(e),r=new Set(t);return a.size===r.size&&a.isSubsetOf(r)}};p(qe,"fieldTypeName","Multi-string"),p(qe,"fieldTypeDescription","Allows the user to provide multiple unique strings.");let Ce=qe;class Xe extends X{constructor(e){const{options:t,...a}=e;super(a);p(this,"options");p(this,"onlyValidateAfterTouched",!1);this.options=t.map(r=>(typeof r=="string"&&(r={label:r,value:r}),r))}serialize(){return{...super.serialize(),options:this.options}}getOptions(){return{...super.getOptions(),options:this.options}}setOptions(e){const{options:t,...a}=e;this.options=(t==null?void 0:t.map(r=>(typeof r=="string"&&(r={label:r,value:r}),r)))??this.options,super.setOptions(a)}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new Ce({label:"Options",description:"List possible options for the user to select from.",required:!0,identifier:`${t}options`,minimum_length:2}),showDirectly:!0}]}}const Wi=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f},{disabled:g}]=k(i),{name:m,onBlur:V,onChange:C,value:y}=f,v=a?"":u,S=d.useCallback(z=>{C(!!z),V(!!z)},[V,C]),b=d.useCallback(()=>{V(y)},[V,y]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:v,description:c,error:l,image:a?void 0:r.image,children:n.jsx(s.Checkbox.Root,{id:o,name:m,checked:y??!1,onCheckedChange:S,onBlur:b,size:t,accentColor:"base",variant:"surface",disabled:g,children:n.jsx(s.Checkbox.Indicator,{children:n.jsx(s.LuIcon,{icon:Y})})})})});Wi.displayName="BooleanFieldInput";const Le=class Le extends X{constructor(e){super(e);p(this,"type","boolean");p(this,"onlyValidateAfterTouched",!1)}serialize(){return super.serialize()}getOptions(){return super.getOptions()}setOptions(e){super.setOptions(e)}duplicate(e){return new Le({...this.getOptions(),identifier:e})}static deserialize(e){return new Le(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(Wi,{...e,field:this})}isSerializedValue(e){return typeof e=="boolean"}isValue(e){return typeof e=="boolean"}blankValue(){return!1}blankSerializedValue(){return!1}areSerializedValuesEqual(e,t){return e===t}areValuesEqual(e,t){return e===t}};p(Le,"fieldTypeName","Checkbox"),p(Le,"fieldTypeDescription","Perfect for both optional and required yes/no questions.");let ye=Le;const Xi=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f,touched:g,helpers:m},{disabled:V}]=k(i),{name:C,onBlur:y,onChange:v,value:S}=f,b=a?"":u,[z,w]=d.useState(null);d.useEffect(()=>{w(S)},[S]);const N=d.useCallback(L=>{const x=L.target.valueAsNumber,B=isNaN(x)?null:x;w(B),(g||!r.onlyValidateAfterTouched)&&m.setError(r.getError(B))},[r,m,g]),M=d.useCallback(L=>{L.key==="Enter"&&L.preventDefault()},[]),q=d.useCallback(()=>{v(z),y(z)},[z,y,v]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:b,description:c,error:l,image:a?void 0:r.image,children:n.jsx(s.Input.Root,{accentColor:"base",variant:"surface",size:t,children:n.jsx(s.Input.Field,{id:o,name:C,onChange:N,onBlur:q,value:z??"",type:"number",min:r.minimum,max:r.maximum,step:r.integers?1:"any",placeholder:r.placeholder??"Enter a number",disabled:V,onKeyDown:M})})})});Xi.displayName="NumberFieldInput";const re=class re extends X{constructor(e){const{minimum:t=Number.MIN_SAFE_INTEGER,maximum:a=Number.MAX_SAFE_INTEGER,integers:r=!1,placeholder:l,...u}=e;super(u);p(this,"type","number");p(this,"minimum");p(this,"maximum");p(this,"integers");p(this,"placeholder");this.minimum=t,this.maximum=a,this.integers=r,this.placeholder=l}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new re({label:"Minimum",description:"Minimum value",integers:!0,required:!1,identifier:`${t}minimum`}),showDirectly:!1},{field:new re({label:"Maximum",description:"Maximum value",integers:!0,required:!1,identifier:`${t}maximum`}),showDirectly:!1},{field:new ye({label:"Integers",description:"Whole numbers only",required:!1,identifier:`${t}integers`}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),t=this.minimum,a=this.maximum;return typeof t=="number"&&e.push(r=>{if(typeof r=="number"&&r<t)return`Must be at least ${this.minimum}.`}),typeof a=="number"&&e.push(r=>{if(typeof r=="number"&&r>a)return`Must be at most ${this.maximum}.`}),this.integers&&e.push(r=>{if(typeof r=="number"&&!Number.isInteger(r))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 re({...this.getOptions(),identifier:e})}setOptions(e){const{minimum:t,maximum:a,integers:r,placeholder:l,...u}=e;this.minimum=t??this.minimum,this.maximum=a??this.maximum,this.integers=r??this.integers,this.placeholder=l??this.placeholder,super.setOptions(u)}static deserialize(e){return new re(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(Xi,{field:this,...e})}isSerializedValue(e){return this.isValue(e)}isValue(e){return typeof e=="number"&&!isNaN(e)||e===null}areValuesEqual(e,t){return e===t}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,t){return e===t}};p(re,"fieldTypeName","Number"),p(re,"fieldTypeDescription","Allows specifying a number within a given range.");let R=re;const Ve=1e4;class Ki extends X{constructor(e){const{minLength:t,maxLength:a,placeholder:r="",...l}=e;super(l);p(this,"minLength");p(this,"maxLength");p(this,"placeholder");this.minLength=t?Math.max(t,0):void 0,this.maxLength=a?Math.max(a,0):Ve,this.placeholder=r}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new R({label:"Minimum length",description:"Minimum number of characters",required:!1,identifier:`${t}minimum_length`,minimum:0,maximum:100,integers:!0}),showDirectly:!1},{field:new R({label:"Maximum length",description:"Maximum number of characters",required:!1,identifier:`${t}maximum_length`,minimum:1,maximum:Ve,integers:!0}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators();return this.minLength&&e.push(t=>{if(this.minLength&&(!t||t.length<this.minLength))return!this.required&&!t?null:`Minimum ${this.minLength} character(s).`}),this.maxLength&&e.push(t=>{if(typeof t=="string"&&this.maxLength&&t.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:t,maxLength:a,placeholder:r,...l}=e;this.minLength=t,this.maxLength=a??this.maxLength,this.placeholder=r,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,t){return e===t}areValuesEqual(e,t){return e===t}}const Yi=d.memo(i=>{const[{inputId:o,labelId:e,size:t,field:a,showInputOnly:r,error:l,label:u,description:c,fieldProps:f},{disabled:g}]=k(i),{value:m,name:V,onChange:C,onBlur:y}=f,v=r?"":u,S=d.useCallback(b=>{C(b),y(b)},[y,C]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:v,description:c,error:l,image:r?void 0:a.image,children:n.jsx(s.CheckboxGroup.Root,{id:o,name:V,className:"flex flex-col gap-1",accentColor:"base",variant:"surface",size:t,values:m,onValuesChange:S,disabled:g,children:a.options.map((b,z)=>n.jsxs("label",{className:"flex gap-2 items-center min-w-0",children:[n.jsx(s.CheckboxGroup.Item,{value:b.value,children:n.jsx(s.CheckboxGroup.ItemIndicator,{children:n.jsx(s.LuIcon,{icon:Y})})}),n.jsx(s.Text,{size:t,accentColor:"base",className:"truncate",children:b.label})]},`${o}-${b.value}-${z}`))})})});Yi.displayName="CheckboxListFieldInput";const Ae=class Ae extends Xe{constructor(e){super(e);p(this,"type","checkbox-list");p(this,"onlyValidateAfterTouched",!1)}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new Ae({...this.getOptions(),identifier:e})}static deserialize(e){return new Ae(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(Yi,{field:this,...e})}isSerializedValue(e){if(!He(e))return!1;const t=new Set(this.options.map(({value:a})=>a));return e.every(a=>t.has(a))}isValue(e){return this.isSerializedValue(e)}blankValue(){return[]}blankSerializedValue(){return[]}areSerializedValuesEqual(e,t){const a=new Set(e),r=new Set(t);return a.size===r.size&&a.isSubsetOf(r)}areValuesEqual(e,t){const a=new Set(e),r=new Set(t);return a.size===r.size&&a.isSubsetOf(r)}};p(Ae,"fieldTypeName","Checkbox list"),p(Ae,"fieldTypeDescription","Allows the user to select a multiple options from a list.");let ve=Ae;const Zi=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f},{disabled:g}]=k(i),{value:m,name:V,onChange:C,onBlur:y}=f,[v,S]=d.useState(!1),b=a?"":u,z=d.useCallback(N=>{C(N??null),S(!1)},[C]),w=d.useCallback(N=>{S(N),N||y(m)},[y,m]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:b,description:c,error:l,image:a?void 0:r.image,children:n.jsxs(s.Popover.Root,{open:v,onOpenChange:w,children:[n.jsx(s.Popover.Trigger,{asChild:!0,children:n.jsxs(s.Button,{id:o,name:V,type:"button",className:"!justify-between",accentColor:"base",variant:"surface",size:t,disabled:g,children:[n.jsx(s.Text,{className:"truncate",highContrast:!!m,children:m?m.toLocaleString(void 0,{year:"numeric",month:"2-digit",day:"2-digit"}):"yyyy-mm-dd"}),n.jsx(s.LuIcon,{icon:Di})]})}),n.jsx(s.Popover.Content,{align:"start",size:t,children:n.jsx(s.DayPicker,{size:t,required:!1,mode:"single",variant:"solid",selected:m??void 0,onSelect:z})})]})})});Zi.displayName="DateFieldInput";const Te=class Te extends X{constructor(e){super(e);p(this,"type","date");p(this,"onlyValidateAfterTouched",!1)}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new Te({...this.getOptions(),identifier:e})}static deserialize(e){return new Te(e)}setOptions(e){super.setOptions(e)}serializeValue(e){return e?e.toISOString():null}deserializeValue(e){return e?new Date(e):null}render(e){return n.jsx(Zi,{field:this,...e})}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,t){return e===t}areValuesEqual(e,t){return!e&&!t?!0:!e||!t?!1:e.getTime()===t.getTime()}};p(Te,"fieldTypeName","Date"),p(Te,"fieldTypeDescription","Allows specifying a date.");let Ke=Te;const Qi=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f},{disabled:g}]=k(i),{value:m,name:V,onChange:C,onBlur:y}=f,v=a?"":u,S=d.useCallback(z=>{C(z),y(z)},[y,C]),b=d.useCallback(z=>{z||y(m)},[m,y]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:v,description:c,error:l,image:a?void 0:r.image,children:n.jsxs(s.Menu.Root,{onOpenChange:b,align:"start",children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsxs(s.Button,{id:o,name:V,className:"!justify-between",variant:"surface",type:"button",size:t,accentColor:"base",disabled:g,children:[n.jsx(s.Text,{className:"truncate",highContrast:m&&m.length>0,children:m&&m.length>0?m.join(", "):r.placeholder??"Select one or more..."}),n.jsx(s.LuIcon,{icon:Di})]})}),n.jsx(s.Menu.Content,{size:t,children:n.jsx(s.Menu.Scroll,{children:n.jsxs(s.Menu.MultiSelectGroup,{values:m,onValuesChange:S,children:[n.jsxs(s.Menu.SelectAllItem,{children:[n.jsx(s.Menu.CheckboxItemIndicator,{children:z=>z?n.jsx(s.LuIcon,{icon:mi}):n.jsx(s.LuIcon,{icon:Y})}),"Select all"]}),r.options.map((z,w)=>n.jsxs(s.Menu.MultiSelectItem,{value:z.value,children:[n.jsx(s.Menu.SelectedIndicator,{children:n.jsx(s.LuIcon,{icon:Y})}),z.label]},`${o}-${z.value}-${w}`))]})})})]})})});Qi.displayName="MultiSelectFieldInput";const _e=class _e extends Xe{constructor(e){const{placeholder:t,...a}=e;super(a);p(this,"type","multi-select");p(this,"placeholder");this.placeholder=t}serialize(){return super.serialize()}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new _e({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:t}=e;this.placeholder=t,super.setOptions(e)}static deserialize(e){return new _e(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(Qi,{field:this,...e})}isSerializedValue(e){if(!He(e))return!1;const t=new Set(this.options.map(({value:a})=>a));return e.every(a=>t.has(a))}isValue(e){return this.isSerializedValue(e)}blankValue(){return[]}areValuesEqual(e,t){const a=new Set(e),r=new Set(t);return a.size===r.size&&a.isSubsetOf(r)}blankSerializedValue(){return[]}areSerializedValuesEqual(e,t){const a=new Set(e),r=new Set(t);return a.size===r.size&&a.isSubsetOf(r)}};p(_e,"fieldTypeName","Multi-select"),p(_e,"fieldTypeDescription","Allows the user to select a multiple options from a list of options.");let oe=_e;const Ri=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,label:l,description:u,error:c,fieldProps:f},{disabled:g}]=k(i),{name:m,onChange:V,onBlur:C,value:y}=f,v=a?"":l,S=d.useCallback(z=>{V(z??null),C(z??null)},[C,V]),b=d.useMemo(()=>r.options.find(z=>z.value===y),[r.options,y]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:v,description:u,error:c,image:a?void 0:r.image,children:n.jsxs(s.Menu.Root,{align:"start",children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsxs(s.Button,{id:o,name:m,className:"!justify-between",accentColor:"base",variant:"surface",type:"button",size:t,disabled:g,children:[n.jsx(s.Text,{className:"truncate",highContrast:!!b,children:b?b.label:r.placeholder??"Select one..."}),n.jsx(s.LuIcon,{icon:Di})]})}),n.jsx(s.Menu.Content,{size:t,children:n.jsx(s.Menu.Scroll,{children:n.jsx(s.Menu.SelectGroup,{required:!1,value:y??void 0,onValueChange:S,children:r.options.map((z,w)=>n.jsxs(s.Menu.SelectItem,{value:z.value,children:[n.jsx(s.Menu.SelectedIndicator,{children:n.jsx(s.LuIcon,{icon:Y})}),z.label]},`${o}-${z.value}-${w}`))})})})]})})});Ri.displayName="SelectFieldInput";const Be=class Be extends Xe{constructor(e){const{placeholder:t,...a}=e;super(a);p(this,"type","select");p(this,"placeholder");this.placeholder=t}serialize(){return super.serialize()}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new Be({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:t}=e;this.placeholder=t,super.setOptions(e)}static deserialize(e){return new Be(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(Ri,{field:this,...e})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:new Set([null,...this.options.map(({value:a})=>a)]).has(e)}isValue(e){return this.isSerializedValue(e)}blankValue(){return null}areValuesEqual(e,t){return e===t}blankSerializedValue(){return null}areSerializedValuesEqual(e,t){return e===t}};p(Be,"fieldTypeName","Dropdown"),p(Be,"fieldTypeDescription","Allows the user to select a single option from a list of options.");let de=Be;const en=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f,touched:g,helpers:m},{formId:V,disabled:C}]=k(i),{name:y,onBlur:v,onChange:S,value:b}=f,z=a?"":u,[w,N]=d.useState(""),M=d.useMemo(()=>Array.from({length:r.length},()=>I.v4()),[r.length]);d.useEffect(()=>{N(b)},[b]);const q=d.useCallback(x=>{N(x),(g||!r.onlyValidateAfterTouched)&&m.setError(r.getError(x))},[r,m,g]),L=d.useCallback(()=>{S(w),v(w)},[w,v,S]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:z,description:c,error:l,image:a?void 0:r.image,children:n.jsxs(s.OneTimePasswordField.Root,{id:o,name:y,value:w,onValueChange:q,validationType:r.validationType,form:V,disabled:C,orientation:"horizontal",dir:"ltr",type:"text",autoComplete:"off",autoFocus:!1,autoSubmit:!1,className:"flex gap-1 h-max w-full overflow-x-auto p-0.25",accentColor:"base",variant:"surface",size:t,onBlur:L,children:[M.map(x=>n.jsx(s.OneTimePasswordField.Input,{id:x},x)),n.jsx(s.OneTimePasswordField.HiddenInput,{})]})})});en.displayName="OTPFieldInput";const Ee=class Ee extends X{constructor(e){const{length:t,validationType:a,...r}=e;super(r);p(this,"type","otp");p(this,"length");p(this,"validationType");this.length=t,this.validationType=a}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new R({label:"Length",integers:!0,required:!1,minimum:1,maximum:16,identifier:`${t}length`}),showDirectly:!1},{field:new de({label:"Type",required:!1,identifier:`${t}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(),t=this.length;return e.push(a=>{if(!this.isValueBlank(a)&&a.length!=t)return`Must be ${t} 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 Ee({...this.getOptions(),identifier:e})}setOptions(e){const{length:t,validationType:a,...r}=e;this.length=t??this.length,this.validationType=a??this.validationType,super.setOptions(r)}static deserialize(e){return new Ee(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(en,{field:this,...e})}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}areValuesEqual(e,t){return e===t}blankSerializedValue(){return""}areSerializedValuesEqual(e,t){return e===t}};p(Ee,"fieldTypeName","OTP"),p(Ee,"fieldTypeDescription","Allows specifying a number within a given range.");let ze=Ee;const ce={pass:{label:"Pass",icon:Zo},fail:{label:"Fail",icon:ea},na:{label:"N/A",icon:Ro}},Se=Object.keys(ce);class ae extends File{constructor(e,...t){super(...t);p(this,"uuid");this.uuid=e}static from(e,t){return new ae(e,[t],t.name,{lastModified:t.lastModified,type:t.type})}}class we extends Promise{constructor(e,t){super(e);p(this,"_uuid");this._uuid=t}get uuid(){return this._uuid}set uuid(e){this._uuid=e}static from(e,t){return new we((a,r)=>{Promise.resolve(e).then(a).catch(r)},t)}then(e,t){const a=super.then(e,t);return a.uuid=this.uuid,a}catch(e){const t=super.catch(e);return t.uuid=this.uuid,t}finally(e){const t=super.finally(e);return t.uuid=this.uuid,t}}function tt(i){return Array.isArray(i)?i.every(o=>o instanceof we||o instanceof ae):!1}function Vi(i,o){const e=new Set(i.map(({uuid:a})=>a)),t=new Set(o.map(({uuid:a})=>a));return e.size===t.size&&e.isSubsetOf(t)}const nn=d.memo(i=>{const{ref:o,file:e,error:t,rightSlot:a,className:r,size:l,...u}=i;return n.jsxs(s.Card,{className:ne.cx(r,"relative flex h-48 w-full flex-col items-center p-0!"),ref:o,size:"xs",...u,children:[!e&&!t&&n.jsx("div",{className:"absolute inset-0 grow flex items-center justify-center",children:n.jsx(s.Spinner,{})}),!!e&&!t&&n.jsx("div",{className:"flex grow w-full items-center justify-center overflow-hidden bg-clip-padding p-3",children:n.jsx(yi,{className:"max-w-full size-full object-cover",file:e})}),n.jsx(s.Separator,{size:"full"}),(!!e||!!t)&&n.jsxs("div",{className:ne.cx("flex w-full items-center gap-2 self-end p-3",{"bg-transparent":!e}),children:[t?n.jsx(s.LuIcon,{color:"var(--base-11)",icon:Yn}):e&&n.jsx(s.LuIcon,{color:"var(--base-11)",icon:Zn}),n.jsx(s.Text,{className:"truncate",size:l,children:t??(e==null?void 0:e.name)}),a]})]})});nn.displayName="ImageCard";const tn=d.memo(i=>{const{file:o,...e}=i,t=ki(o);return t?n.jsx("video",{src:t,...e}):null});tn.displayName="VideoFile";const on=d.memo(i=>{const{ref:o,file:e,className:t,error:a,rightSlot:r,size:l,...u}=i;return n.jsxs(s.Card,{className:ne.cx(t,"relative flex h-48 w-full flex-col items-center p-0!"),ref:o,size:"xs",...u,children:[!e&&!a&&n.jsx("div",{className:"absolute inset-0 grow flex items-center justify-center",children:n.jsx(s.Spinner,{})}),!!e&&!a&&n.jsx("div",{className:"flex grow w-full items-center justify-center overflow-hidden bg-clip-padding p-3",children:n.jsx(tn,{className:"max-w-full size-full object-cover",file:e,controls:!0})}),n.jsx(s.Separator,{size:"full"}),(!!e||!!a)&&n.jsxs("div",{className:ne.cx("flex w-full items-center gap-2 self-end p-3",{"bg-transparent":!e}),children:[a?n.jsx(s.LuIcon,{color:"var(--base-11)",icon:Yn}):e&&n.jsx(s.LuIcon,{color:"var(--base-11)",icon:ya}),n.jsx(s.Text,{className:"truncate",size:l,children:a??(e==null?void 0:e.name)}),r]})]})});on.displayName="VideoCard";const an=d.memo(i=>{const{file:o,onRemove:e,disabled:t,size:a}=i,[r,l]=d.useState(null),[u,c]=d.useState(null),f=Ci();d.useEffect(()=>{o instanceof we?o.then(S=>{l(S)}).catch(S=>{c(S instanceof Error?S.message:"Unknown error")}):l(o)},[o]);const g=d.useCallback(()=>{if(!r)return;const S=new Blob([r]);jn.saveAs(S,r.name)},[r]),m=d.useCallback(()=>{if(!r)return;const S=URL.createObjectURL(r);window.open(S,"_blank"),URL.revokeObjectURL(S)},[r]),V=d.useCallback(()=>{r&&f(S=>({file:r,onDelete:t?void 0:()=>{e(),S()}}))},[t,e,f,r]),C=d.useMemo(()=>n.jsx("div",{className:"flex grow justify-end",children:n.jsxs(s.Menu.Root,{modal:!0,children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.IconButton,{onClick:s.stopPropagation,type:"button",variant:"ghost",accentColor:"base",size:a,children:n.jsx(s.LuIcon,{icon:Kn})})}),n.jsxs(s.Menu.Content,{size:a,children:[n.jsxs(s.Menu.Item,{onSelect:g,disabled:!r,children:[n.jsx(s.LuIcon,{icon:Xn})," Download"]}),t?null:n.jsxs(n.Fragment,{children:[n.jsx(s.Menu.Separator,{}),n.jsxs(s.Menu.Item,{onSelect:e,children:[n.jsx(s.LuIcon,{icon:le})," Delete"]})]})]})]})}),[t,e,g,r,a]),y=!!(r!=null&&r.type.startsWith("image/")),v=!!(r!=null&&r.type.startsWith("video/"));return y?n.jsx(nn,{className:"cursor-pointer",onClick:V,file:r,error:u??void 0,rightSlot:C,size:a}):v?n.jsx(on,{className:"cursor-pointer",onClick:V,file:r,error:u??void 0,rightSlot:C,size:a}):n.jsx(Gi,{className:"cursor-pointer",file:r,error:u??void 0,onClick:m,rightSlot:C,size:a})});an.displayName="DisplayFile";const sn=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f,touched:g,helpers:m},{disabled:V}]=k(i),{value:C,onChange:y,onBlur:v,name:S}=f,[b,z]=d.useState(""),w=d.useRef(null),N=a?"":u,M=C.status&&r.showNotesAndFilesOn.includes(C.status),q=d.useCallback(T=>{const D=r.cleanValue({...C,status:T});y(D),v(D)},[r,v,y,C]);d.useEffect(()=>{z(C.notes)},[C]);const L=d.useCallback(T=>{const D=T.target.value;z(D),(g||!r.onlyValidateAfterTouched)&&m.setError(r.getError({...C,notes:b}))},[r,m,b,g,C]),x=d.useCallback(()=>{const T={...C,notes:b};y(T),v(T)},[b,v,y,C]),B=d.useCallback(T=>{const D=[...C.files];D.splice(T,1),y({...C,files:D})},[y,C]),W=d.useCallback(()=>{var T;(T=w.current)==null||T.click()},[]),Q=d.useCallback(T=>{const D=Array.from(T.target.files??[]).map(_a=>ae.from(I.v4(),_a)),Bi={...C,files:[...C.files,...D]};y(Bi),v(Bi)},[v,y,C]);d.useEffect(()=>{if(!w.current)return;const T=new AbortController;return w.current.addEventListener("cancel",()=>{v(C)},{signal:T.signal}),()=>{T.abort()}},[v,C]);const _=`${o}-status`,P=`${o}-notes`,G=`${o}-files`;return n.jsx(U,{size:t,inputId:o,labelId:e,label:N,description:c,error:l,image:a?void 0:r.image,children:n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsx(s.RadioGroup.Root,{id:_,className:"flex gap-2",name:S,value:C.status,disabled:V,accentColor:"base",variant:"surface",size:t,onValueChange:q,children:Se.map(T=>{const{label:D}=ce[T];return n.jsxs("label",{className:"flex gap-2 items-center min-w-0",children:[n.jsx(s.RadioGroup.Item,{value:T,children:n.jsx(s.RadioGroup.Indicator,{children:n.jsx(s.LuIcon,{icon:Hn,className:"fill-current"})})}),n.jsx(s.Text,{size:t,accentColor:"base",className:"truncate",children:D})]},`${o}-${T}`)})}),M&&n.jsxs(n.Fragment,{children:[n.jsx("div",{children:n.jsx(s.TextArea,{id:P,value:b,name:S,onChange:L,onBlur:x,className:"field-sizing-content w-full min-h-12",placeholder:"Notes",resize:"vertical",accentColor:"base",variant:"surface",size:t,disabled:V})}),n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsxs(s.Button,{className:"w-max",size:t,variant:"soft",accentColor:"base",onClick:W,type:"button",disabled:V,children:[n.jsx(s.LuIcon,{icon:ji}),"Select files"]}),n.jsx("input",{id:G,name:S,type:"file",ref:w,multiple:!0,className:"hidden",onChange:Q,value:""}),C.files.length>0&&n.jsx("div",{className:"flex h-max flex-wrap gap-2",children:C.files.map((T,D)=>n.jsx(an,{size:t,file:T,onRemove:()=>{B(D)},disabled:V},D))})]})]})]})})});sn.displayName="PassFailFieldInput";const rn=i=>typeof i=="string"&&Se.includes(i),ot=i=>!(i===null||typeof i!="object"||!("status"in i)||!rn(i.status)||!("notes"in i)||typeof i.notes!="string"||!("files"in i)||!(Array.isArray(i.files)&&i.files.length===0)),at=i=>!(i===null||typeof i!="object"||!("status"in i)||!rn(i.status)||!("notes"in i)||typeof i.notes!="string"||!("files"in i)||!tt(i.files)),st=i=>({status:i.status,notes:i.notes,files:[]}),rt=i=>({status:i.status,notes:i.notes,files:[]}),lt=(i,o)=>!(i.status!==o.status||i.notes!==o.notes||!Vi(i.files,o.files)),dt=(i,o)=>!(i.status!==o.status||i.notes!==o.notes||i.files.length!==o.files.length),$e=class $e extends X{constructor(e){const{showNotesAndFilesOn:t,...a}=e;super(a);p(this,"type","pass-fail");p(this,"onlyValidateAfterTouched",!1);p(this,"showNotesAndFilesOn");this.showNotesAndFilesOn=t}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new oe({identifier:`${t}showNotesAndFilesOn`,label:"Show notes and files on",description:"Show the notes and files on desired statuses.",options:Se.map(a=>{const{label:r}=ce[a];return{value:a,label:r}}),required:!1}),showDirectly:!1}]}serialize(){return{...super.serialize(),showNotesAndFilesOn:this.showNotesAndFilesOn}}getOptions(){return{...super.getOptions(),showNotesAndFilesOn:this.showNotesAndFilesOn}}duplicate(e){return new $e({...this.getOptions(),identifier:e})}setOptions(e){const{showNotesAndFilesOn:t,...a}=e;this.showNotesAndFilesOn=t??this.showNotesAndFilesOn,super.setOptions(a)}getFieldValidators(){const e=super.getFieldValidators(),t=this.showNotesAndFilesOn,a=this.blankValue();return t.length>0&&(e.push(r=>{if(!(!r.status||!t.includes(r.status))&&a.notes===r.notes)return"Notes is required."}),e.push(r=>{if(!(!r.status||!t.includes(r.status))&&Vi(a.files,r.files))return"Files is required."})),e}static deserialize(e){return new $e({...e,showNotesAndFilesOn:e.showNotesAndFilesOn??!1})}serializeValue(e){return st(e)}deserializeValue(e){return rt(e)}render(e){return n.jsx(sn,{field:this,...e})}isSerializedValue(e){return ot(e)}isValue(e){return at(e)}areValuesEqual(e,t){return lt(e,t)}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,t){return dt(e,t)}};p($e,"fieldTypeName","Pass - Fail"),p($e,"fieldTypeDescription","Track pass, fail, or N/A outcome.");let be=$e;const ln=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f},{disabled:g}]=k(i),{name:m,onChange:V,onBlur:C,value:y}=f,v=a?"":u,S=d.useCallback(z=>{V(z),C(z)},[C,V]),b=d.useCallback(()=>{V(null),C(null)},[C,V]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:v,description:c,error:l,image:a?void 0:r.image,children:n.jsxs(s.RadioGroup.Root,{id:o,name:m,className:"flex flex-col gap-1",accentColor:"base",variant:"surface",size:t,value:y??"",onValueChange:S,disabled:g,children:[r.options.map((z,w)=>n.jsxs("label",{className:"flex gap-2 items-center min-w-0",children:[n.jsx(s.RadioGroup.Item,{value:z.value,children:n.jsx(s.RadioGroup.Indicator,{children:n.jsx(s.LuIcon,{icon:Hn,className:"fill-current"})})}),n.jsx(s.Text,{size:t,accentColor:"base",className:"truncate",children:z.label})]},`${o}-${z.value}-${w}`)),!!y&&n.jsxs(s.Button,{onClick:b,className:"w-max -mx-2",type:"button",variant:"ghost",accentColor:"base",size:t,children:[n.jsx(s.LuIcon,{icon:te}),"Clear"]})]})})});ln.displayName="RadioFieldInput";const De=class De extends Xe{constructor(e){super(e);p(this,"type","radio");p(this,"onlyValidateAfterTouched",!1)}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new De({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){return new De(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(ln,{field:this,...e})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:new Set([null,...this.options.map(({value:a})=>a)]).has(e)}isValue(e){return this.isSerializedValue(e)}blankValue(){return null}areValuesEqual(e,t){return e===t}blankSerializedValue(){return null}areSerializedValuesEqual(e,t){return e===t}};p(De,"fieldTypeName","Option list"),p(De,"fieldTypeDescription","Allows the user to select a single option from a list of options.");let Fe=De;const dn=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,label:l,description:u,error:c,fieldProps:f},{disabled:g}]=k(i),{name:m,onChange:V,onBlur:C,value:y}=f,v=a?"":l,S=d.useCallback(w=>{V(w),C(w)},[C,V]),b=d.useCallback(()=>{V(null),C(null)},[C,V]),z=Array.from({length:r.maxRating},(w,N)=>N+1);return n.jsx(U,{size:t,inputId:o,labelId:e,label:v,description:u,error:c,image:a?void 0:r.image,children:n.jsxs("div",{className:"flex flex-row gap-1 items-center",children:[n.jsx(s.Rating.Root,{id:o,name:m,className:"flex items-center gap-0.5",value:y,onValueChange:S,disabled:g,children:z.map(w=>n.jsx(s.Rating.Item,{value:w,className:"group size-5 flex cursor-pointer disabled:opacity-50 disabled:pointer-events-none items-center justify-center text-yellow-500 transition-colors",children:n.jsx(s.LuIcon,{icon:et,className:"group-data-[active=true]:fill-current size-full"})},`${o}-${w}`))}),!g&&y!==null&&n.jsx(s.IconButton,{onClick:b,type:"button",variant:"ghost",accentColor:"base",size:t,children:n.jsx(s.LuIcon,{icon:te})})]})})});dn.displayName="RatingFieldInput";const Pe=class Pe extends X{constructor(e){const{maxRating:t,...a}=e;super(a);p(this,"type","rating");p(this,"maxRating");this.maxRating=t}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new R({label:"Max Rating",description:"Maximum rating value",integers:!0,required:!1,minimum:1,maximum:10,identifier:`${t}maxRating`}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),t=this.maxRating;return e.push(a=>{if(typeof a=="number"&&(a<1||a>t))return`Rating must be between 1 and ${t}.`}),e}serialize(){return{...super.serialize(),maxRating:this.maxRating}}getOptions(){return{...super.getOptions(),maxRating:this.maxRating}}duplicate(e){return new Pe({...this.getOptions(),identifier:e})}setOptions(e){const{maxRating:t,...a}=e;this.maxRating=t??this.maxRating,super.setOptions(a)}static deserialize(e){return new Pe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(dn,{field:this,...e})}isSerializedValue(e){return this.isValue(e)}isValue(e){return typeof e=="number"&&!isNaN(e)||e===null}areValuesEqual(e,t){return e===t}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,t){return e===t}};p(Pe,"fieldTypeName","Rating"),p(Pe,"fieldTypeDescription","Allows users to select a rating value.");let Ne=Pe;const cn=d.createContext(null),ct=()=>{const i=d.use(cn);if(!i)throw new Error("useScannerContext must be used within a component tree wrapped by ScannerProvider.");return i},va=()=>{const i=d.use(cn);if(!i)throw new Error("useScanner must be used within a component tree wrapped by ScannerProvider.");return i.openScanner},vi=d.memo(i=>{const{children:o,open:e,onOpenChange:t,defaultOpen:a,modal:r,...l}=i;return n.jsxs(s.Overlay.Root,{open:e,onOpenChange:t,defaultOpen:a,modal:r,children:[!!o&&n.jsx(s.Overlay.Trigger,{asChild:!0,children:o}),n.jsxs(s.Overlay.Content,{children:[n.jsx(s.Overlay.Title,{className:"sr-only",children:"Scanner"}),n.jsx(s.Overlay.Description,{className:"sr-only",children:"Scan a barcode or a qr code."}),n.jsx(ut,{...l})]})]})});vi.displayName="Scanner";const ut=d.memo(i=>{const{paused:o,formats:e,timeBetweenDecodingAttempts:t,trySkew:a,onDecodeResult:r,onDecodeError:l,onError:u}=i,{wasmUrl:c}=ct(),{ref:f}=$o.useZxing({wasmUrl:c,paused:o,formats:e,timeBetweenDecodingAttempts:t,trySkew:a,onDecodeResult:r,onDecodeError:l,onError:u,constraints:{video:{width:{ideal:1920,min:1280},height:{ideal:1080,min:720},aspectRatio:{ideal:16/9},facingMode:"environment"}}});return n.jsxs("div",{className:"bg-(--color-background) flex size-full flex-col justify-center overflow-hidden",children:[n.jsx("div",{className:"flex w-full justify-end p-4",children:n.jsx(s.Overlay.Close,{asChild:!0,children:n.jsx(s.IconButton,{"aria-label":"close",variant:"soft",accentColor:"base",children:n.jsx(s.LuIcon,{icon:te})})})}),n.jsx("div",{className:"max-h-full w-full grow overflow-hidden p-4",children:n.jsx("video",{className:"size-full",ref:f,muted:!0,playsInline:!0})})]})});ut.displayName="ScannerInternal";const ht=d.memo(i=>{const{children:o,wasmUrl:e}=i,[t,a]=d.useState(null),r=d.useCallback(()=>{a(null)},[]),l=d.useCallback(f=>{a(f(r))},[r]),u=d.useCallback(()=>{t&&(t.onClose&&t.onClose(),r())},[r,t]),c=d.useMemo(()=>({wasmUrl:e,openScanner:l}),[e,l]);return n.jsxs(cn,{value:c,children:[o,t&&n.jsx(vi,{open:!0,onOpenChange:u,...t})]})});ht.displayName="ScannerProvider";const un=d.memo(i=>{const[{inputId:o,labelId:e,label:t,description:a,error:r,size:l,showInputOnly:u,field:c,fieldProps:f,helpers:g,touched:m},{disabled:V}]=k(i),{name:C,onBlur:y,onChange:v,value:S}=f,[b,z]=d.useState(!1),w=u?"":t,[N,M]=d.useState("");d.useEffect(()=>{M(S)},[S]);const q=d.useCallback(Q=>{const _=Q.target.value;M(_),(m||!c.onlyValidateAfterTouched)&&g.setError(c.getError(_))},[c,g,m]),L=d.useCallback(()=>{v(N),y(N)},[N,y,v]),x=d.useCallback(Q=>{v(Q.rawValue.trim()),z(!1)},[v]),B=d.useCallback(()=>{z(!0)},[]),W=d.useCallback(()=>{z(!1),y(S)},[y,S]);return n.jsxs(U,{size:l,inputId:o,labelId:e,label:w,description:a,error:r,image:u?void 0:c.image,children:[n.jsx(s.TextArea,{className:"w-full field-sizing-content",accentColor:"base",variant:"surface",size:l,id:o,name:C,value:N,placeholder:"Enter a qr or barcode",onChange:q,onBlur:L,disabled:V}),n.jsxs(s.Button,{onClick:B,className:"w-max",type:"button",variant:"soft",size:l,accentColor:"base",disabled:V,children:[n.jsx(s.LuIcon,{icon:ua}),"Scan"]}),n.jsx(vi,{open:b,onDecodeResult:x,onOpenChange:W})]})});un.displayName="ScanFieldInput";const je=class je extends X{constructor(e){super(e);p(this,"type","qr");p(this,"onlyValidateAfterTouched",!1)}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new je({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){return new je(e)}serializeValue(e){return e}deserializeValue(e){return e}render(e){return n.jsx(un,{...e,field:this})}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}areValuesEqual(e,t){return e===t}blankSerializedValue(){return""}areSerializedValuesEqual(e,t){return e===t}};p(je,"fieldTypeName","Scan"),p(je,"fieldTypeDescription","Used for scanning/reading QR and barcodes.");let Ye=je;const zi=500,hn=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f,touched:g,helpers:m},{disabled:V}]=k(i),{name:C,onBlur:y,onChange:v,value:S}=f,b=a?"":u,[z,w]=d.useState("");d.useEffect(()=>{w(S)},[S]);const N=d.useCallback(L=>{const x=L.target.value;w(x),(g||!r.onlyValidateAfterTouched)&&m.setError(r.getError(x))},[r,m,g]),M=d.useCallback(L=>{L.key==="Enter"&&L.preventDefault()},[]),q=d.useCallback(()=>{v(z),y(z)},[z,y,v]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:b,description:c,error:l,image:a?void 0:r.image,children:n.jsx(s.Input.Root,{accentColor:"base",variant:"surface",size:t,children:n.jsx(s.Input.Field,{id:o,className:"truncate",name:C,value:z,type:"text",placeholder:r.placeholder,onChange:N,onBlur:q,disabled:V,onKeyDown:M})})})});hn.displayName="StringFieldInput";const Ge=class Ge extends Ki{constructor(e){const{...t}=e,a=e.maxLength?Math.min(zi,e.maxLength):zi,r=e.minLength?Math.min(e.minLength,a):void 0;super({...t,maxLength:a,minLength:r});p(this,"type","string")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new Ge({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){const{maximum_length:t,minimum_length:a,...r}=e;return new Ge({...r,maxLength:t,minLength:a,placeholder:"Enter a short description"})}render(e){return n.jsx(hn,{field:this,...e})}};p(Ge,"fieldTypeName","Short Text"),p(Ge,"fieldTypeDescription",`Short text fields can hold up to ${zi} characters on a single line.`);let Me=Ge;const fn=d.memo(i=>{const[{inputId:o,labelId:e,size:t,showInputOnly:a,field:r,error:l,label:u,description:c,fieldProps:f,touched:g,helpers:m},{disabled:V}]=k(i),{name:C,onBlur:y,onChange:v,value:S}=f,b=a?"":u,[z,w]=d.useState("");d.useEffect(()=>{w(S)},[S]);const N=d.useCallback(q=>{const L=q.target.value;w(L),(g||!r.onlyValidateAfterTouched)&&m.setError(r.getError(L))},[r,m,g]),M=d.useCallback(()=>{v(z),y(z)},[z,y,v]);return n.jsx(U,{size:t,inputId:o,labelId:e,label:b,description:c,error:l,image:a?void 0:r.image,children:n.jsx(s.TextArea,{id:o,value:z,name:C,onChange:N,onBlur:M,className:"field-sizing-content min-h-12",placeholder:r.placeholder,resize:"vertical",accentColor:"base",variant:"surface",size:t,disabled:V})})});fn.displayName="TextFieldInput";const Ue=class Ue extends Ki{constructor(e){const t=e.maxLength?Math.min(Ve,e.maxLength):Ve,a=e.minLength?Math.min(e.minLength,t):void 0;super({...e,maxLength:t,minLength:a});p(this,"type","text")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new Ue({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){const{maximum_length:t,minimum_length:a,...r}=e;return new Ue({...r,maxLength:t,minLength:a,placeholder:"Enter a description"})}render(e){return n.jsx(fn,{field:this,...e})}};p(Ue,"fieldTypeName","Paragraph"),p(Ue,"fieldTypeDescription",`Paragraph fields can hold up to ${Ve} characters and can have multiple lines.`);let xe=Ue;const pn=d.memo(i=>{var L;const[{inputId:o,labelId:e,label:t,description:a,size:r,error:l,showInputOnly:u,field:c,fieldProps:f},{disabled:g}]=k(i),{value:m,name:V,onChange:C,onBlur:y}=f,v=d.useRef(null),S=d.useCallback(()=>{var x;(x=v.current)==null||x.click()},[]),b=d.useCallback(()=>{if(!v.current)return;const x=v.current.files;if(!x){y([]);return}const B=Array.from(x).map(Q=>ae.from(I.v4(),Q)),W=[...m,...B];C(W),y(W)},[y,C,m]),z=d.useCallback(x=>{const B=[...m];B.splice(x,1),C(B)},[m,C]);d.useEffect(()=>{if(!v.current)return;const x=new AbortController;return v.current.addEventListener("cancel",()=>{y([...m])},{signal:x.signal}),()=>{x.abort()}},[y,m]);const w=u?"":t,q=c.maxFiles>1?"Select files":"Select a file";return n.jsxs(U,{size:r,inputId:o,labelId:e,label:w,description:a,error:l,image:u?void 0:c.image,children:[n.jsxs(s.Button,{className:"w-max",size:r,variant:"soft",accentColor:"base",onClick:S,type:"button",disabled:g,children:[n.jsx(s.LuIcon,{icon:ji}),q]}),n.jsx("input",{id:o,name:V,type:"file",ref:v,accept:(L=c.extensions)==null?void 0:L.join(","),multiple:c.maxFiles>1,className:"hidden",onChange:b,value:""}),m.length>0&&n.jsx("div",{className:"flex h-max flex-col gap-2",children:m.map((x,B)=>n.jsx(an,{size:r,file:x,onRemove:()=>{z(B)},disabled:g},B))})]})});pn.displayName="UploadFieldInput";const ke=class ke extends X{constructor(e){const{extensions:t,maximum_files:a,maximum_size:r,...l}=e;super(l);p(this,"type","upload");p(this,"extensions");p(this,"maxFileSize");p(this,"maxFiles");p(this,"onlyValidateAfterTouched",!1);this.maxFileSize=typeof r=="number"?r:void 0,this.maxFiles=Math.max(typeof a=="number"?a:1,1),this.extensions=t}static getFieldCreationSchema(e=""){const t=e&&`${e}.`;return[{field:new R({label:"How many files can be uploaded?",description:"By default, only one file can be uploaded.",required:!1,minimum:1,maximum:10,identifier:`${t}maximum_files`,integers:!0}),showDirectly:!1},{field:new R({label:"What is the maximum size of each file?",description:`Maximum file size in megabytes (between 1MB–${Oe}MB).`,required:!1,identifier:`${t}maximum_size`,minimum:1,maximum:Oe,integers:!0}),showDirectly:!1},{field:new oe({label:"Accepted file types",description:"Types of allowed files to upload. If left blank, all files will be accepted.",required:!1,identifier:`${t}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(),t=this.maxFileSize??Oe,a=t*1e3*1e3,r=this.maxFiles||1;return e.push(l=>{if(l&&l.some(u=>u instanceof ae&&u.size>a))return`Files must be at most ${t}MB.`}),e.push(l=>{if(l&&l.length>r)return`You can only upload ${r} 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 ke({...this.getOptions(),identifier:e})}setOptions(e){const{extensions:t,maximum_files:a,maximum_size:r,...l}=e;this.maxFileSize=typeof r=="number"?r:this.maxFileSize,this.maxFiles=typeof a=="number"?a:this.maxFiles,this.extensions=t,super.setOptions(l)}static deserialize(e){return new ke(e)}serializeValue(e){return[]}deserializeValue(e){return[]}render(e){return n.jsx(pn,{field:this,...e})}isSerializedValue(e){return Array.isArray(e)&&e.length===0}isValue(e){return Array.isArray(e)?e.every(t=>t instanceof we||t instanceof ae):!1}areValuesEqual(e,t){return Vi(e,t)}blankValue(){return[]}blankSerializedValue(){return[]}areSerializedValuesEqual(e,t){return e.length===t.length}};p(ke,"fieldTypeName","Upload"),p(ke,"fieldTypeDescription","Allows a file to be uploaded.");let Ie=ke;const Si={date:Ke,number:R,boolean:ye,select:de,string:Me,text:xe,upload:Ie,qr:Ye,"multi-string":Ce,"multi-select":oe,radio:Fe,"checkbox-list":ve,"pass-fail":be,otp:ze,rating:Ne},$={boolean:ga,date:Yo,"multi-string":ca,number:sa,qr:fa,"multi-select":la,select:da,string:Ca,text:Wo,upload:ji,section:ra,radio:Qo,"checkbox-list":na,"pass-fail":ia,otp:ha,rating:et},Oe=50,ft=Oe*1e3,pt=ft*1e3,j="Unlabelled",gn="Unlabelled";class A{constructor(o){p(this,"id");p(this,"label");p(this,"getApplyFn");p(this,"serialize");p(this,"deserialize");const{id:e,getApplyFn:t,label:a,serialize:r,deserialize:l}=o;this.id=e,this.getApplyFn=t,this.label=a,this.serialize=r,this.deserialize=l}static create(o){return new A(o)}}const gt=A.create({id:"nullable-boolean-equals",label:"is",getApplyFn:i=>o=>o===i,serialize:i=>i,deserialize:i=>i}),mt=A.create({id:"nullable-boolean-not-equals",label:"is not",getApplyFn:i=>o=>o!==i,serialize:i=>i,deserialize:i=>i}),Ct=A.create({id:"date-equals",getApplyFn:i=>o=>o.getTime()===i.getTime(),label:"is",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),yt=A.create({id:"date-not-equals",getApplyFn:i=>o=>o.getTime()!==i.getTime(),label:"is not",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),Vt=A.create({id:"date-before",getApplyFn:i=>o=>o.getTime()<i.getTime(),label:"before",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),vt=A.create({id:"date-after",label:"after",getApplyFn:i=>o=>o.getTime()>i.getTime(),serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),zt=A.create({id:"date-range-in",label:"in between",getApplyFn:i=>o=>!(i!=null&&i.from&&i.from.getTime()>o.getTime()||i!=null&&i.to&&i.to.getTime()<o.getTime()),serialize:i=>{var o,e;return{from:((o=i.from)==null?void 0:o.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})}),St=A.create({id:"date-range-not-in",label:"not in between",getApplyFn:i=>o=>!!(i!=null&&i.from&&i.from.getTime()>o.getTime()||i!=null&&i.to&&i.to.getTime()<o.getTime()),serialize:i=>{var o,e;return{from:((o=i.from)==null?void 0:o.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})}),wt=A.create({id:"has-files",label:"is",getApplyFn:i=>o=>o.length>0,serialize:i=>i,deserialize:i=>i}),bt=A.create({id:"does-not-have-files",label:"is not",getApplyFn:i=>o=>o.length===0,serialize:i=>i,deserialize:i=>i}),mn=A.create({id:"number-equals",getApplyFn:i=>o=>o===i,label:"is",serialize:i=>i,deserialize:i=>i}),Cn=A.create({id:"number-not-equals",getApplyFn:i=>o=>o!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),yn=A.create({id:"number-less-than",getApplyFn:i=>o=>o<i,label:"is less than",serialize:i=>i,deserialize:i=>i}),Vn=A.create({id:"number-less-than-or-equals",getApplyFn:i=>o=>o<=i,label:"is less than or equal to",serialize:i=>i,deserialize:i=>i}),vn=A.create({id:"number-greater-than",getApplyFn:i=>o=>o>i,label:"is greater than",serialize:i=>i,deserialize:i=>i}),zn=A.create({id:"number-greater-than-or-equals",getApplyFn:i=>o=>o>=i,label:"is greater than or equal to",serialize:i=>i,deserialize:i=>i}),Sn=A.create({id:"number-range-in",getApplyFn:i=>o=>!(i.to&&o>i.to||i.from&&o<i.from),label:"is between",serialize:i=>i,deserialize:i=>i}),wn=A.create({id:"number-range-not-in",getApplyFn:i=>o=>!!(i.to&&o>i.to||i.from&&o<i.from),label:"is not between",serialize:i=>i,deserialize:i=>i}),Ft=A.create({id:"pass-fail-equals",getApplyFn:i=>o=>o===i,label:"is",serialize:i=>i,deserialize:i=>i}),Nt=A.create({id:"pass-fail-not-equals",getApplyFn:i=>o=>o!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Mt=A.create({id:"pass-fail-array-includes",getApplyFn:i=>{const o=new Set(i);return e=>o.has(e)},label:"is any of",serialize:i=>i,deserialize:i=>i}),xt=A.create({id:"pass-fail-array-excludes",getApplyFn:i=>{const o=new Set(i);return e=>!o.has(e)},label:"is none of",serialize:i=>i,deserialize:i=>i}),ue=A.create({id:"nullable-string-equals",getApplyFn:i=>o=>o===i,label:"is",serialize:i=>i,deserialize:i=>i}),he=A.create({id:"nullable-string-not-equals",getApplyFn:i=>o=>o!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Ze=A.create({id:"string-includes",getApplyFn:i=>o=>o.includes(i),label:"includes",serialize:i=>i,deserialize:i=>i}),Qe=A.create({id:"string-excludes",getApplyFn:i=>o=>!o.includes(i),label:"does not include",serialize:i=>i,deserialize:i=>i}),bn=A.create({id:"string-array-includes",getApplyFn:i=>{const o=new Set(i);return e=>o.has(e)},label:"is any of",serialize:i=>i,deserialize:i=>i}),Fn=A.create({id:"string-array-excludes",getApplyFn:i=>{const o=new Set(i);return e=>!o.has(e)},label:"is none of",serialize:i=>i,deserialize:i=>i}),wi=A.create({id:"string-array-every",getApplyFn:i=>{const o=new Set(i);return e=>{const t=new Set(e);return o.isSubsetOf(t)}},label:"has all of",serialize:i=>i,deserialize:i=>i}),bi=A.create({id:"string-array-some",getApplyFn:i=>{const o=new Set(i);return e=>{const t=new Set(e);return!o.isDisjointFrom(t)}},label:"has any of",serialize:i=>i,deserialize:i=>i}),Fi=A.create({id:"string-array-none",getApplyFn:i=>{const o=new Set(i);return e=>{const t=new Set(e);return o.isDisjointFrom(t)}},label:"has none of",serialize:i=>i,deserialize:i=>i}),Ni=A.create({id:"string-array-equals",getApplyFn:i=>{const o=new Set(i);return e=>{const t=new Set(e);return o.size===t.size&&t.isSubsetOf(o)}},label:"is",serialize:i=>i,deserialize:i=>i}),Mi=A.create({id:"string-array-not-equals",getApplyFn:i=>{const o=new Set(i);return e=>{const t=new Set(e);return o.size!==t.size||!t.isSubsetOf(o)}},label:"is not",serialize:i=>i,deserialize:i=>i}),F=i=>i;class H extends Je{constructor(e){const{id:t,field:a,conditionValue:r,conditionModifier:l}=e;super();p(this,"id");p(this,"conditionValue");p(this,"conditionModifier");p(this,"field");p(this,"getConditionValue",()=>this.conditionValue);p(this,"setConditionValue",e=>{const t=this.modifiers[this.conditionModifier];e!==void 0&&!t.isConditionValueValid(e)||(this.conditionValue=e,this.notify(this))});p(this,"getConditionModifier",()=>this.conditionModifier);p(this,"setConditionModifier",e=>{const t=this.modifiers[e],a=this.getConditionValue();a&&!t.isConditionValueValid(a)&&(this.conditionValue=void 0),this.conditionModifier=e,this.notify(this)});p(this,"getConditionModifiers",()=>Object.entries(this.modifiers));p(this,"accessorFn",e=>e[this.field.identifier]);p(this,"getApplyFn",()=>{const e=this.modifiers[this.conditionModifier],t=this.getConditionValue(),a=t!==void 0&&e.isConditionValueValid(t),r=a?e.modifier.getApplyFn(t):null;return l=>{if(!a)return!0;const u=this.transformValue(l);return e.isValueValid(u)?r(u):!1}});this.id=t,this.field=a,this.conditionValue=r,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 It=d.memo,fe=It(function(i){const{ref:o,children:e,...t}=i,a=d.useCallback(r=>typeof e=="function"?n.jsxs(n.Fragment,{children:[e(r),n.jsx(s.Menu.SelectedIndicator,{className:"ml-[auto]",children:n.jsx(s.LuIcon,{icon:Y})})]}):n.jsxs(n.Fragment,{children:[e,n.jsx(s.Menu.SelectedIndicator,{className:"ml-[auto]",children:n.jsx(s.LuIcon,{icon:Y})})]}),[e]);return n.jsx(s.Menu.SelectItem,{ref:o,...t,children:a})}),Ot=It(function(i){const{ref:o,children:e,...t}=i,a=d.useCallback(r=>typeof e=="function"?n.jsxs(n.Fragment,{children:[e(r),n.jsx(s.Menu.SelectedIndicator,{className:"ml-auto",children:n.jsx(s.LuIcon,{icon:Y})})]}):n.jsxs(n.Fragment,{children:[e,n.jsx(s.Menu.SelectedIndicator,{className:"ml-auto",children:n.jsx(s.LuIcon,{icon:Y})})]}),[e]);return n.jsx(s.Menu.MultiSelectItem,{ref:o,...t,children:a})}),Nn=d.memo(i=>{const{ref:o,children:e,...t}=i,a=d.useCallback(r=>typeof e=="function"?n.jsxs(n.Fragment,{children:[e(r),n.jsx(s.Menu.CheckboxItemIndicator,{className:"ml-[auto]",children:l=>l?n.jsx(s.LuIcon,{icon:mi}):n.jsx(s.LuIcon,{icon:Y})})]}):n.jsxs(n.Fragment,{children:[e,n.jsx(s.Menu.CheckboxItemIndicator,{className:"ml-[auto]",children:l=>l?n.jsx(s.LuIcon,{icon:mi}):n.jsx(s.LuIcon,{icon:Y})})]}),[e]);return n.jsx(s.Menu.SelectAllItem,{ref:o,...t,children:a})});Nn.displayName="SelectAllItemTemplate";const K=i=>{const{children:o,condition:e,size:t="sm",variant:a,accentColor:r,radius:l}=i,u=d.useCallback(c=>{e.setConditionModifier(c)},[e]);return n.jsxs(s.Menu.Root,{align:"start",children:[n.jsx(s.Menu.ClickTrigger,{children:o}),n.jsx(s.Menu.Content,{size:t,variant:a,radius:l,accentColor:r,children:n.jsx(s.Menu.SelectGroup,{required:!0,value:e.getConditionModifier(),onValueChange:u,children:e.getConditionModifiers().map(([c,f])=>n.jsx(fe,{value:c,children:f.modifier.label},c))})})]})},xi=d.memo(i=>{const{children:o,open:e,onOpenChange:t,defaultOpen:a,modal:r,size:l,align:u,accentColor:c="base",...f}=i;return n.jsxs(s.Popover.Root,{open:e,onOpenChange:t,defaultOpen:a,modal:r,children:[n.jsx(s.Popover.Trigger,{asChild:!0,children:o}),n.jsx(s.Popover.Content,{size:l,align:u,children:n.jsx(s.DayPicker,{size:l,accentColor:c,...f})})]})});xi.displayName="DayPickerPopover";const qt=d.memo(i=>{const{children:o,open:e,onOpenChange:t,defaultOpen:a,modal:r,size:l,accentColor:u="base",values:c,onValuesChange:f,placeholder:g="Enter text",...m}=i,[V,C]=d.useState(""),y=d.useCallback(z=>{C(z.target.value)},[]),v=d.useCallback(z=>{z.key==="Enter"&&(z.preventDefault(),z.stopPropagation(),f([...c,V]),C(""))},[V,f,c]),S=d.useCallback(()=>{f([...c,V]),C("")},[V,f,c]),b=d.useCallback(z=>{const w=[...c];w.splice(z,1),f(w)},[f,c]);return n.jsxs(s.Popover.Root,{open:e,onOpenChange:t,defaultOpen:a,modal:r,children:[n.jsx(s.Popover.Trigger,{asChild:!0,children:o}),n.jsx(s.Popover.Content,{size:l,onClick:s.stopPropagation,accentColor:u,...m,children:n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsxs("div",{className:"flex gap-2",children:[n.jsx(s.Input.Root,{className:"grow",accentColor:"base",variant:"outline",size:"sm",children:n.jsx(s.Input.Field,{value:V,onChange:y,onKeyDown:v,placeholder:g,...m})}),n.jsx(s.IconButton,{size:"sm",accentColor:"base",variant:"soft",type:"button",onClick:S,children:n.jsx(s.LuIcon,{icon:ee})})]}),c.length>0&&n.jsx("div",{className:"flex flex-col gap-1",children:c.map((z,w)=>n.jsxs(s.Badge,{className:"flex items-center justify-between gap-2",accentColor:"base",size:"sm",variant:"soft",children:[n.jsx("span",{className:"truncate",children:z}),n.jsx(s.IconButton,{size:"xs",variant:"ghost",type:"button",accentColor:"base",onClick:()=>{b(w)},children:n.jsx(s.LuIcon,{icon:te})})]},`${z}-${w}`))})]})})]})});qt.displayName="NumberInputPopover";const pe=d.memo(i=>{const{children:o,open:e,onOpenChange:t,defaultOpen:a,modal:r,size:l,accentColor:u="base",value:c,onValueChange:f,placeholder:g="Enter a number",...m}=i,[V,C]=d.useState(null);d.useEffect(()=>{c!==void 0&&C(c)},[c]);const y=d.useCallback(S=>{const b=S.target.valueAsNumber;C(isNaN(b)?null:b)},[]),v=d.useCallback(S=>{const b=S.target.valueAsNumber;f==null||f(isNaN(b)?null:b)},[f]);return n.jsxs(s.Popover.Root,{open:e,onOpenChange:t,defaultOpen:a,modal:r,children:[n.jsx(s.Popover.Trigger,{asChild:!0,children:o}),n.jsx(s.Popover.Content,{size:l,onClick:s.stopPropagation,...m,children:n.jsx(s.Input.Root,{size:l,accentColor:u,children:n.jsx(s.Input.Field,{placeholder:g,type:"number",value:V??"",onChange:y,onBlur:v})})})]})});pe.displayName="NumberInputPopover";const J=i=>{const{condition:o,onClick:e,...t}=i,a=d.useCallback(()=>{e(o)},[o,e]);return n.jsx(s.IconButton,{onClick:a,...t,children:n.jsx(s.LuIcon,{icon:te})})};J.displayName="RemoveConditionButton";const Re=d.memo(i=>{const{ref:o,selectFieldOptions:e,...t}=i,a=d.useMemo(()=>e.map(r=>typeof r=="string"?{value:r,label:r}:r),[e]);return n.jsxs(s.Menu.MultiSelectGroup,{ref:o,...t,children:[n.jsx(Nn,{children:"Select all"}),a.map(r=>n.jsx(Ot,{value:r.value,children:n.jsx("span",{className:"truncate",children:r.label})},r.value))]})});Re.displayName="SelectFieldOptionMultiSelectGroup";const Mn=d.memo(i=>{const{ref:o,selectFieldOptions:e,...t}=i,a=d.useMemo(()=>e.map(r=>typeof r=="string"?{value:r,label:r}:r),[e]);return n.jsx(s.Menu.SelectGroup,{ref:o,...t,children:a.map(r=>n.jsx(fe,{value:r.value,children:n.jsx("span",{className:"truncate",children:r.label})},r.value))})});Mn.displayName="SelectFieldOptionSelectGroup";const ei=d.memo(i=>{const{children:o,open:e,onOpenChange:t,defaultOpen:a,modal:r,size:l,accentColor:u="base",value:c,onValueChange:f,placeholder:g="Enter text",...m}=i,[V,C]=d.useState(""),y=d.useCallback(S=>{C(S.target.value)},[]),v=d.useCallback(S=>{const b=S.target.value;f==null||f(b)},[f]);return d.useEffect(()=>{c&&C(c)},[c]),n.jsxs(s.Popover.Root,{open:e,onOpenChange:t,defaultOpen:a,modal:r,children:[n.jsx(s.Popover.Trigger,{asChild:!0,children:o}),n.jsx(s.Popover.Content,{size:l,onClick:s.stopPropagation,...m,children:n.jsx(s.Input.Root,{size:l,accentColor:u,children:n.jsx(s.Input.Field,{placeholder:g,type:"text",value:V,onChange:y,onBlur:v})})})]})});ei.displayName="TextInputPopover";const Lt=i=>{const{condition:o,onRemove:e}=i,t=o.getConditionValue(),a=o.getConditionModifier(),r=()=>{switch(t){case void 0:return"...";case!0:return"true";case!1:return"false";case null:return"empty"}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[o.field.type]}),n.jsx("span",{className:"truncate",children:o.field.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[a].modifier.label})}),n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:r()})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsxs(s.Menu.SelectGroup,{required:!0,value:t,onValueChange:o.setConditionValue,children:[n.jsx(fe,{value:!0,children:"true"}),n.jsx(fe,{value:!1,children:"false"})]})})]}),n.jsx(J,{condition:o,onClick:e})]})},At={equals:F({modifier:gt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:mt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ii extends H{constructor(e){super(e);p(this,"modifiers",At)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=At[r];let c;return a!==void 0&&(c=u.modifier.deserialize(a)),new ii({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Lt,{condition:this,...e},this.id)}}const Tt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=d.useCallback(c=>{c.length>0?o.setConditionValue(c):o.setConditionValue(void 0)},[o]),u=()=>{if(a===void 0)return"...";if(a===null)return"empty";switch(a.length){case 0:return"...";default:return`${a.length} options`}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"soft",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"soft",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"truncate",children:u()})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(Re,{values:a??[],selectFieldOptions:o.field.options,onValuesChange:l})})]}),n.jsx(J,{condition:o,onClick:e})]})},_t={equals:F({modifier:Ni,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:Mi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:F({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:F({modifier:bi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:F({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ni extends H{constructor(e){super(e);p(this,"modifiers",_t)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=_t[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new ni({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Tt,{condition:this,...e},this.id)}}class Ii extends Je{constructor(e){super();p(this,"conditions");p(this,"conditionObserver",()=>{this.conditions=[...this.conditions],this.notify(this)});p(this,"initConditions",e=>{for(const t of e)t.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(t=>t.id!==e.id)),this.notify(this)}removeConditions(e){const t=new Set(e.map(a=>a.id));this.conditions=this.initConditions(this.conditions.filter(a=>!t.has(a.id))),this.notify(this)}applyConditions(e){return this.conditions.length===0?!0:this.conditions.map(a=>[a.getApplyFn(),a.accessorFn]).every(([a,r])=>a(r(e)))}}const za=(i,o)=>d.useMemo(()=>{const e=new Ii(i);return e.observe(t=>o(t.getConditions())),e},[i,o]),Bt=i=>{const{condition:o,onRemove:e}=i,t=o.getConditionValue(),a=o.getConditionModifier(),r=()=>{var l,u;switch(a){case"equals":case"notEquals":{const c=o.modifiers.equals,f=t!==void 0&&c.isConditionValueValid(t)?t:void 0;return n.jsx(xi,{required:!1,size:"sm",mode:"single",selected:f??void 0,onSelect:g=>o.setConditionValue(g),children:n.jsx(s.Button,{type:"button",className:"truncate",children:f!==void 0?(f==null?void 0:f.toLocaleDateString())??"empty":"..."})})}case"before":case"after":{const c=o.modifiers.after,f=t!==void 0&&c.isConditionValueValid(t)?t:void 0;return n.jsx(xi,{required:!0,size:"sm",mode:"single",selected:f,onSelect:o.setConditionValue,children:n.jsx(s.Button,{type:"button",className:"truncate",children:f?f.toLocaleDateString():"..."})})}case"in":case"notIn":{const c=o.modifiers.in,f=t!==void 0&&c.isConditionValueValid(t)?t:void 0;return n.jsx(xi,{required:!0,mode:"range",size:"sm",selected:f,onSelect:o.setConditionValue,children:n.jsx(s.Button,{className:"truncate",children:f?`${(l=f.from)==null?void 0:l.toLocaleDateString()} - ${(u=f.to)==null?void 0:u.toLocaleDateString()}`:"..."})})}}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[o.field.type]}),n.jsx("span",{className:"truncate",children:o.field.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[a].modifier.label})}),r(),n.jsx(J,{condition:o,onClick:e})]})},Et={equals:F({modifier:Ct,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),notEquals:F({modifier:yt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),before:F({modifier:Vt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),after:F({modifier:vt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),in:F({modifier:zt,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:F({modifier:St,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 ti extends H{constructor(e){super(e);p(this,"modifiers",Et)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Et[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new ti({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Bt,{condition:this,...e},this.id)}}const $t=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=d.useCallback(c=>{c.length>0?o.setConditionValue(c):o.setConditionValue(void 0)},[o]),u=()=>{if(a===void 0)return"...";if(a===null)return"empty";switch(a.length){case 0:return"...";default:return`${a.length} options`}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"truncate",children:u()})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(Re,{values:a??[],selectFieldOptions:t.options,onValuesChange:l})})]}),n.jsx(J,{condition:o,onClick:e})]})},Dt={equals:F({modifier:Ni,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:Mi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:F({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:F({modifier:bi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:F({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class oi extends H{constructor(e){super(e);p(this,"modifiers",Dt)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Dt[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new oi({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx($t,{condition:this,...e},this.id)}}const xn=[],Pt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=d.useCallback(c=>{o.setConditionValue(c.length>0?c:void 0)},[o]),u=()=>{if(a===void 0)return"...";if(a===null)return"empty";switch(a.length){case 0:return"...";case 1:return a[0].toString();default:return`${a.length} values`}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),n.jsx(qt,{values:a??xn,onValuesChange:l,children:n.jsx(s.Button,{type:"button",className:"truncate",children:u()})}),n.jsx(J,{condition:o,onClick:e})]})},jt={equals:F({modifier:Ni,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:Mi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:F({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:F({modifier:bi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:F({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ai extends H{constructor(e){super(e);p(this,"modifiers",jt)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=jt[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new ai({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Pt,{condition:this,...e},this.id)}}const Gt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"greaterThanOrEquals":case"lessThanOrEquals":case"greaterThan":case"lessThan":{const u=o.modifiers.greaterThan,c=a!==void 0&&u.isConditionValueValid(a)?a:void 0;return n.jsx(pe,{value:c??null,onValueChange:f=>o.setConditionValue(f??void 0),size:"sm",children:n.jsx(s.Button,{type:"button",className:"truncate",children:c!==void 0?c??"empty":"..."})})}case"inRange":case"notInRange":{const u=o.modifiers.inRange,c=a!==void 0&&u.isConditionValueValid(a)?a:void 0;return n.jsxs(n.Fragment,{children:[n.jsx(pe,{value:(c==null?void 0:c.from)??null,onValueChange:f=>{o.setConditionValue({from:f,to:(c==null?void 0:c.to)??null})},size:"sm",children:n.jsx(s.Button,{className:"truncate",children:(c==null?void 0:c.from)??"..."})}),n.jsx(pe,{value:(c==null?void 0:c.to)??null,onValueChange:f=>{o.setConditionValue({from:(c==null?void 0:c.from)??null,to:f})},size:"sm",children:n.jsx(s.Button,{className:"truncate",children:(c==null?void 0:c.to)??"..."})})]})}}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},Ut={equals:F({modifier:mn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),notEquals:F({modifier:Cn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThan:F({modifier:yn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThanOrEquals:F({modifier:Vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThan:F({modifier:vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThanOrEquals:F({modifier:zn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),inRange:F({modifier:Sn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"}),notInRange:F({modifier:wn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"})};class si extends H{constructor(e){super(e);p(this,"modifiers",Ut)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Ut[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new si({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Gt,{condition:this,...e},this.id)}}const kt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"notEquals":case"includes":case"excludes":return n.jsx(ei,{value:a??"",onValueChange:o.setConditionValue,size:"sm",children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:a||"..."})})})}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},Ht={equals:F({modifier:ue,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:he,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:F({modifier:Ze,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:F({modifier:Qe,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ri extends H{constructor(e){super(e);p(this,"modifiers",Ht)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Ht[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new ri({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(kt,{condition:this,...e},this.id)}}const Jt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"notEquals":{const u=o.modifiers.equals,c=a!==void 0&&u.isConditionValueValid(a)?a:void 0;return n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:c!==void 0?c?ce[c].label:"empty":"..."})})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(s.Menu.SelectGroup,{required:!1,value:c,onValueChange:o.setConditionValue,children:Se.map(f=>{const{label:g}=ce[f];return n.jsx(fe,{value:f,children:n.jsx("span",{className:"truncate",children:g})},f)})})})]})}case"includes":case"excludes":{const u=o.modifiers.includes,c=a!==void 0&&u.isConditionValueValid(a)?a:void 0;return n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",children:c?`${c.length} statuses`:"..."})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsxs(s.Menu.MultiSelectGroup,{values:c??xn,onValuesChange:o.setConditionValue,children:[n.jsx(Nn,{children:"Select all"}),Se.map(f=>{const{label:g,icon:m}=ce[f];return n.jsxs(Ot,{value:f,children:[n.jsx(s.LuIcon,{icon:m}),n.jsx("span",{className:"truncate",children:g})]},f)})]})})]})}}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},Wt={equals:F({modifier:Ft,isValueValid:i=>i!==null,isConditionValueValid:i=>typeof i=="string",isSerializedValueValid:i=>typeof i=="string"}),notEquals:F({modifier:Nt,isValueValid:i=>i!==null,isConditionValueValid:i=>typeof i=="string",isSerializedValueValid:i=>typeof i=="string"}),includes:F({modifier:Mt,isValueValid:i=>i!==null,isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:F({modifier:xt,isValueValid:i=>i!==null,isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class li extends H{constructor(e){super(e);p(this,"modifiers",Wt)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Wt[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new li({field:t,conditionModifier:r,conditionValue:c,...l})}transformValue(e){return e.status}render(e){return n.jsx(Jt,{condition:this,...e},this.id)}}const Xt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=d.useMemo(()=>t.options.map(f=>typeof f=="string"?{value:f,label:f}:f),[t.options]),u=d.useMemo(()=>{const f={};for(const g of l)f[g.value]=g.label;return f},[l]),c=()=>{switch(r){case"equals":case"notEquals":{const f=o.modifiers.equals,g=a!==void 0&&f.isConditionValueValid(a)?a:void 0;return n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:g!==void 0?g?u[g]:"empty":"..."})})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(Mn,{required:!0,selectFieldOptions:t.options,value:g??void 0,onValueChange:o.setConditionValue})})]})}case"includes":case"excludes":{const f=o.modifiers.includes,g=a!==void 0&&f.isConditionValueValid(a)?a:void 0;return n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",children:g?`${g.length} options`:"..."})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(Re,{selectFieldOptions:t.options,values:g??xn,onValuesChange:o.setConditionValue})})]})}}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),c(),n.jsx(J,{condition:o,onClick:e})]})},Kt={equals:F({modifier:ue,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),notEquals:F({modifier:he,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),includes:F({modifier:bn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:F({modifier:Fn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class di extends H{constructor(e){super(e);p(this,"modifiers",Kt)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Kt[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new di({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Xt,{condition:this,...e},this.id)}}const Yt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"notEquals":case"greaterThanOrEquals":case"lessThanOrEquals":case"greaterThan":case"lessThan":{const u=o.modifiers[r],c=a!==void 0&&u.isConditionValueValid(a)?a:void 0;return n.jsx(pe,{value:c??null,onValueChange:f=>o.setConditionValue(f??void 0),size:"sm",children:n.jsx(s.Button,{type:"button",className:"truncate",children:c!==void 0?c:"..."})})}case"inRange":case"notInRange":{const u=o.modifiers.inRange,c=a!==void 0&&u.isConditionValueValid(a)?a:void 0;return n.jsxs(n.Fragment,{children:[n.jsx(pe,{value:(c==null?void 0:c.from)??null,onValueChange:f=>{o.setConditionValue({from:f,to:(c==null?void 0:c.to)??null})},size:"sm",children:n.jsx(s.Button,{className:"truncate",children:(c==null?void 0:c.from)??"..."})}),n.jsx(pe,{value:(c==null?void 0:c.to)??null,onValueChange:f=>{o.setConditionValue({from:(c==null?void 0:c.from)??null,to:f})},size:"sm",children:n.jsx(s.Button,{className:"truncate",children:(c==null?void 0:c.to)??"..."})})]})}}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},Zt={equals:F({modifier:mn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),notEquals:F({modifier:Cn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThan:F({modifier:yn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThanOrEquals:F({modifier:Vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThan:F({modifier:vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThanOrEquals:F({modifier:zn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),inRange:F({modifier:Sn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"}),notInRange:F({modifier:wn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"})};class ci extends H{constructor(e){super(e);p(this,"modifiers",Zt)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Zt[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new ci({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Yt,{condition:this,...e},this.id)}}const Qt=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"notEquals":case"includes":case"excludes":return n.jsx(ei,{value:a??"",onValueChange:o.setConditionValue,size:"sm",children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:a||"..."})})})}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},Rt={equals:F({modifier:ue,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:he,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:F({modifier:Ze,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:F({modifier:Qe,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ui extends H{constructor(e){super(e);p(this,"modifiers",Rt)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=Rt[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new ui({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(Qt,{condition:this,...e},this.id)}}const eo=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=d.useMemo(()=>t.options.map(g=>typeof g=="string"?{value:g,label:g}:g),[t.options]),u=d.useMemo(()=>{const g={};for(const m of l)g[m.value]=m.label;return g},[l]),c=d.useCallback(g=>{g.length>0?o.setConditionValue(g):o.setConditionValue([])},[o]),f=()=>{switch(r){case"equals":case"notEquals":{const g=o.modifiers.equals,m=a!==void 0&&g.isConditionValueValid(a)?a:void 0;return n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:m!==void 0?m?u[m]:"empty":"..."})})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(Mn,{required:!1,selectFieldOptions:t.options,value:m??void 0,onValueChange:o.setConditionValue})})]})}case"includes":case"excludes":{const g=o.modifiers.includes,m=a!==void 0&&g.isConditionValueValid(a)?a:void 0;return n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",children:m?`${m.length} options`:"..."})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsx(Re,{selectFieldOptions:t.options,values:m??[],onValuesChange:c})})]})}}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),f(),n.jsx(J,{condition:o,onClick:e})]})},io={equals:F({modifier:ue,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),notEquals:F({modifier:he,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),includes:F({modifier:bn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:F({modifier:Fn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class hi extends H{constructor(e){super(e);p(this,"modifiers",io)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=io[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new hi({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(eo,{condition:this,...e},this.id)}}const no=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"notEquals":case"includes":case"excludes":return n.jsx(ei,{value:a??"",onValueChange:o.setConditionValue,size:"sm",children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:a||"..."})})})}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},to={equals:F({modifier:ue,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:he,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:F({modifier:Ze,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:F({modifier:Qe,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class fi extends H{constructor(e){super(e);p(this,"modifiers",to)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=to[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new fi({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(no,{condition:this,...e},this.id)}}const oo=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(r){case"equals":case"notEquals":case"includes":case"excludes":return n.jsx(ei,{value:a??"",onValueChange:o.setConditionValue,size:"sm",children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:n.jsx("span",{className:"truncate",children:a||"..."})})})}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),l(),n.jsx(J,{condition:o,onClick:e})]})},ao={equals:F({modifier:ue,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:he,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:F({modifier:Ze,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:F({modifier:Qe,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class pi extends H{constructor(e){super(e);p(this,"modifiers",ao)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=ao[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new pi({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(oo,{condition:this,...e},this.id)}}const so=i=>{const{condition:o,onRemove:e}=i,t=o.field,a=o.getConditionValue(),r=o.getConditionModifier(),l=()=>{switch(a){case void 0:return"...";case!0:return"true";case!1:return"false";case null:return"empty"}};return n.jsxs(s.ButtonGroup,{className:"flex w-max max-w-full min-w-0 gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[n.jsxs(s.Badge,{className:"min-w-0 shrink-1",size:"sm",variant:"fill",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),n.jsx("span",{className:"truncate",children:t.label||j})]}),n.jsx(K,{condition:o,children:n.jsx(s.Button,{type:"button",children:o.modifiers[r].modifier.label})}),n.jsxs(s.Menu.Root,{children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.Button,{type:"button",className:"min-w-0 shrink-1 grow",children:l()})}),n.jsx(s.Menu.Content,{size:"sm",children:n.jsxs(s.Menu.SelectGroup,{required:!0,value:a,onValueChange:o.setConditionValue,children:[n.jsx(fe,{value:!0,children:"empty"}),n.jsx(fe,{value:!1,children:"not empty"})]})})]}),n.jsx(J,{condition:o,onClick:e})]})},ro={equals:F({modifier:wt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:F({modifier:bt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class gi extends H{constructor(e){super(e);p(this,"modifiers",ro)}static deserialize(e,t){const{conditionValue:a,conditionModifier:r,...l}=e,u=ro[r],c=a!==void 0&&u.isSerializedValueValid(a)?u.modifier.deserialize(a):void 0;return new gi({field:t,conditionModifier:r,conditionValue:c,...l})}render(e){return n.jsx(so,{condition:this,...e},this.id)}}const Sa={date:ti,number:si,boolean:ii,select:hi,string:fi,text:pi,upload:gi,qr:ui,"multi-string":ai,"multi-select":oi,radio:di,"checkbox-list":ni,"pass-fail":li,otp:ri,rating:ci},lo=(i,o)=>{if(i.type!==o.type)throw new Error(`field and condition type mismatch ${i.type} !== ${o.type}`);return Sa[o.type].deserialize(o,i)},In=(i,o)=>{const e=On(i,o),t={};for(const a of i)t[a.identifier]=a;return e.map(a=>lo(t[a.fieldId],a))},co=(i,o)=>qn(i,o).map(t=>t.serialize()),On=(i,o)=>{const e=new Set(i.map(t=>t.identifier));return o.filter(t=>e.has(t.fieldId))},qn=(i,o)=>{const e=new Set(i.map(t=>t.identifier));return o.filter(t=>e.has(t.field.identifier))},Oi=i=>Si[i.type].deserialize(i);function wa(i){return i.map(uo)}const uo=i=>i.type==="section"?Z.deserialize(i):Oi(i);function ba(i){return i.map(Oi)}function ho(i){const o=[];for(const e of i)if(e instanceof Z)for(const t of e.getFields())o.push(t);else o.push(e);return o}function fo(i){const o={};for(const e of i)o[e.identifier]=e;return o}function po(i,o,e=!0){const t=e?qi(i,o):o,a={};for(const r of i){if(!(r.identifier in t))continue;const l=t[r.identifier];a[r.identifier]=r.serializeValue(l)}return a}function go(i,o,e=!0){const t=e?Ln(i,o):o,a={};for(const r of i){if(!(r.identifier in t))continue;const l=t[r.identifier];a[r.identifier]=r.deserializeValue(l)}return a}function qi(i,o){const e={};for(const t of i){if(!(t.identifier in o))continue;const a=o[t.identifier];t.isValue(a)&&(e[t.identifier]=t.cleanValue(a))}return e}function Ln(i,o){const e={};for(const t of i){if(!(t.identifier in o))continue;const a=o[t.identifier];t.isSerializedValue(a)&&(e[t.identifier]=t.cleanSerializedValue(a))}return e}function mo(i,o){const e=qi(i,o),t={},a={};for(const r of i){if(!(r.identifier in e))continue;const l=e[r.identifier];switch(r.type){case"upload":if(!r.isValue(l))break;a[r.identifier]=l,t[r.identifier]=[];break;case"pass-fail":if(!r.isValue(l))break;a[r.identifier]=l.files,t[r.identifier]={...l,files:[]};break;default:t[r.identifier]=o[r.identifier]}}return[t,a]}function Co(i,o,e){const t={};for(const a of i){if(!(a.identifier in o))continue;const r=o[a.identifier];switch(a.type){case"upload":if(!a.isValue(r))break;t[a.identifier]=e[a.identifier]??[];break;case"pass-fail":if(!a.isValue(r))break;t[a.identifier]={...r,files:e[a.identifier]??[]};break;default:if(!a.isValue(r))break;t[a.identifier]=r}}return t}const yo=(i,o)=>{const e={};for(const t of i){const a=o[t.identifier];e[t.identifier]=a!==void 0?a:t.blankValue()}return e},Vo=(i,o,e)=>{const t={};for(const a of i){const r=o[a.identifier],l=e[a.identifier];a.areValuesEqual(r,l)||(t[a.identifier]=l)}return t},vo=(i,o,e)=>{const t={};for(const a of i){const r=o[a.identifier],l=e[a.identifier];a.areValuesEqual(r,l)&&(t[a.identifier]=l)}return t},An=(i,o,e)=>i.every(t=>{const a=o[t.identifier],r=e[t.identifier];return t.areValuesEqual(a,r)}),Tn=i=>{const o={};for(const e of i)o[e.identifier]=e.blankValue();return o},zo=(i,o)=>An(i,o,Tn(i)),Fa=(i,o,e={})=>{const{conditions:t=!1}=e,a=i.get(o.identifier);if(!a)throw new Error(`Attempting to reseed serialized section with identifier ${o.identifier} which is not present in the reseeded identifier map`);const r=new Map,l=o.fields.map(c=>{const f=I.v4(),{image:g,...m}=c;return r.set(c.identifier,f),{...m,identifier:f}}),u={};if(t)for(const[c,f]of Object.entries(o.conditions??{})){const g=i.get(c);if(!g)continue;const m=f.map(V=>{const C=r.get(V.fieldId);if(!C)throw new Error(`Serialized condition referencing undefined field with identifier: ${V.fieldId}`);return{...V,fieldId:C}});u[g]=m}return{...o,identifier:a,conditions:u,fields:l}},Na=(i,o={})=>{const e=new Map(i.map(t=>[t.identifier,I.v4()]));return i.map(t=>Fa(e,t,o))},_n=(i,o)=>{const e={},t=i.filter(a=>a instanceof Z);for(const a of i)if(a instanceof Z){const r=t.filter(u=>a.identifier in u.conditions);if(r.length>0&&!r.some(u=>{const c=u.getConditions(a.identifier);return new Ii(c).applyConditions(o)}))continue;const l=a.getErrors(o);Object.assign(e,l)}else{if(!(a instanceof X))throw new Error("Invalid field type");const r=a.identifier,l=a.getError($i(o,r));l&&jo(e,r,l)}if(Object.keys(e).length>0)return e},Ma=async i=>{const o={},e=[];for(const t of i){const{fields:a}=t,r=[];for(const l of a){if(l.image){if(l.image instanceof Promise)try{o[l.identifier]=await l.image}catch(u){console.error("Failed to get image from promise",u)}else o[l.identifier]=l.image;delete l.image}r.push(l)}e.push({...t,fields:r})}return{fields:e,images:o}};async function xa(i){const o={};for(const[e,t]of Object.entries(i))o[e]=await Promise.all(t);return o}class se extends Je{constructor(e){super();p(this,"fieldSections");p(this,"fieldObserver",()=>{this.notify(this)});p(this,"initFields",e=>{for(const t of e)t.observe(this.fieldObserver);return e});this.fieldSections=this.initFields(e)}serialize(){return this.fieldSections.map(e=>e.serialize())}static deserialize(e){return new se(e.map(Z.deserialize))}static reseedFieldSections(e,t){return Na(e,t)}getFields(){return this.fieldSections.flatMap(e=>e.getFields())}getFieldSections(){return this.fieldSections}addFieldSection(e,t){const a=[...this.fieldSections];a.splice(t??this.fieldSections.length,0,e),this.fieldSections=this.initFields(a),this.notify(this)}removeFieldSection(e){const t=this.fieldSections.filter(a=>a.identifier!==e.identifier);for(const a of t)a.removeConditional(a.identifier);this.fieldSections=this.initFields(t),this.notify(this)}moveFieldSection(e,t){const a=[...this.fieldSections],[r]=a.splice(e,1);a.splice(t,0,r),this.fieldSections=this.initFields(a),this.notify(this)}getSectionDependencyGraph(){const e=new Do.DirectedGraph({type:"directed"});for(const t of this.fieldSections)for(const a of Object.keys(t.conditions))e.mergeEdge(t.identifier,a);return e}getDependenciesOfSection(e){const t=this.getSectionDependencyGraph(),a=new Map(this.fieldSections.map(l=>[l.identifier,l])),r=[];return Po.bfsFromNode(t,e,(l,u,c)=>{r.push(a.get(l))},{mode:"in"}),r}cleanValues(e){return qi(this.getFields(),e)}cleanSerializedValues(e){return Ln(this.getFields(),e)}deserializeValues(e,t){return go(this.getFields(),e,t)}serializeValues(e,t){return po(this.getFields(),e,t)}initializeValues(e){return yo(this.getFields(),e)}validateValues(e){return _n(this.getFieldSections(),e)}deserializeConditions(e){return In(this.getFields(),e)}cleanConditions(e){return qn(this.getFields(),e)}serializeConditions(e){return co(this.getFields(),e)}cleanSerializedConditions(e){return On(this.getFields(),e)}changedFieldValues(e,t){return Vo(this.getFields(),e,t)}unchangedFieldValues(e,t){return vo(this.getFields(),e,t)}areValuesEqual(e,t){return An(this.getFields(),e,t)}areValuesBlank(e){return zo(this.getFields(),e)}blankValues(){return Tn(this.getFields())}extractFilesAndPromisesFromFieldValues(e){return mo(this.getFields(),e)}insertFilesAndPromisesToFieldValues(e,t){return Co(this.getFields(),e,t)}}const So=d.createContext({}),Bn=d.memo(i=>{const{fieldSection:o,size:e,index:t,...a}=i,{label:r,description:l}=o,{values:u}=ie.useFormikContext(),{fieldSchema:c}=d.use(So),f=d.useMemo(()=>c.getFieldSections(),[c]),g=d.useMemo(()=>f.filter(C=>o.identifier in C.conditions),[f,o.identifier]),m=d.useMemo(()=>g.length===0?!0:g.some(C=>{const y=C.getConditions(o.identifier);return new Ii(y).applyConditions(u)}),[g,o,u]),V=We(o.fields,{size:e,...a});return m?n.jsxs(n.Fragment,{children:[t!==0?n.jsx(s.Separator,{size:"full"}):null,n.jsxs("div",{className:"flex flex-col gap-4",children:[(r||l)&&n.jsx(n.Fragment,{children:n.jsxs("div",{className:"flex flex-col gap-1",children:[n.jsx(s.Heading,{size:e,children:r}),l&&n.jsx(s.Text,{accentColor:"base",size:e,children:l})]})}),V]})]}):null});Bn.displayName="FieldSectionLayout";const me=class me extends Ui{constructor(e){const{label:t=null,description:a=null,fields:r,conditions:l={},...u}=e;super(u);p(this,"type","section");p(this,"label");p(this,"description");p(this,"conditions");p(this,"fields",[]);p(this,"fieldObserver",()=>{this.notify(this)});p(this,"initFields",e=>{for(const t of e)t.observe(this.fieldObserver);return e});p(this,"conditionObserver",()=>{this.notify(this)});p(this,"initConditions",e=>{for(const t of Object.values(e).flat())t.observe(this.conditionObserver);return e});this.label=t,this.description=a,this.fields=this.initFields(r),this.conditions=this.initConditions(l)}serialize(){const e={};for(const[t,a]of Object.entries(this.conditions))e[t]=a.map(r=>r.serialize());return{...super.serialize(),label:this.label,description:this.description,conditions:e,fields:this.fields.map(t=>t.serialize())}}getOptions(){return{...super.getOptions(),label:this.label,description:this.description,fields:this.fields,conditions:this.conditions}}duplicate(e){return new me({...this.getOptions(),identifier:e,fields:this.fields.map(t=>t.duplicate(I.v4()))})}setOptions(e){const{label:t,description:a,fields:r,conditions:l,...u}=e;this.label=t??this.label,this.description=a??this.description,this.fields=r||this.fields,this.conditions=l||this.conditions,super.setOptions(u)}getErrors(e){const t={};for(const a of this.fields){const r=a.getError(e[a.identifier]);r&&(t[a.identifier]=r)}return t}getFields(){return this.fields}addField(e,t){const a=[...this.fields];a.splice(t??this.fields.length,0,e),this.fields=this.initFields(a),this.notify(this)}moveField(e,t){const a=[...this.fields],[r]=a.splice(e,1);a.splice(t,0,r),this.fields=a,this.notify(this)}removeField(e){this.fields=this.initFields(this.fields.filter(({identifier:a})=>a!==e.identifier));const t={};for(const[a,r]of Object.entries(this.conditions))t[a]=r.filter(l=>l.field.identifier!==e.identifier);this.conditions=t,this.notify(this)}getConditions(e){return this.conditions[e]}addCondition(e,t){this.conditions=this.initConditions({...this.conditions,[e]:[...this.conditions[e]??[],t]}),this.notify(this)}addConditions(e,t){this.conditions=this.initConditions({...this.conditions,[e]:[...this.conditions[e]??[],...t]}),this.notify(this)}removeCondition(e,t){this.conditions=this.initConditions({...this.conditions,[e]:(this.conditions[e]??[]).filter(a=>a.id!==t.id)}),this.notify(this)}removeConditions(e,t){const a=new Set(t.map(r=>r.id));this.conditions=this.initConditions({...this.conditions,[e]:(this.conditions[e]??[]).filter(r=>!a.has(r.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 t={...this.conditions};delete t[e],this.conditions=this.initConditions(t),this.notify(this)}render(e){return n.jsx(Bn,{fieldSection:this,...e})}};p(me,"fieldTypeName","Section"),p(me,"fieldTypeDescription","Sections can be useful for grouping fields together. They can also be conditionally shown or hidden."),p(me,"deserialize",e=>{const t=e.fields.map(Oi),a={};for(const[r,l]of Object.entries(e.conditions))a[r]=In(t,l);return new me({...e,fields:t,conditions:a})});let Z=me;const ge=d.createContext(new se([])),Li="form-builder",Ai=d.createContext({}),Ia=(i=()=>null)=>d.useMemo(()=>Object.entries(Si).map(([e,t])=>({children:t.fieldTypeName,icon:n.jsx(s.LuIcon,{icon:$[e]}),value:e,onSelect:()=>{i(e)}})),[i]),Ti=d.memo(i=>{const{children:o,variant:e,size:t,accentColor:a,onSelectFieldType:r,...l}=i,u=Ia(r);return n.jsxs(s.Menu.Root,{...l,children:[n.jsx(s.Menu.ClickTrigger,{children:o}),n.jsx(s.Menu.Content,{variant:e,size:t,accentColor:a,children:n.jsx(s.Menu.Scroll,{children:u.flat().map(c=>n.jsxs(s.Menu.Item,{onSelect:c.onSelect,children:[c.icon,c.children]},c.value))})})]})});Ti.displayName="CreateFieldDropdownMenu";const _i=i=>{switch(i){case"text":return new xe({label:"",required:!1,identifier:I.v4()});case"boolean":return new ye({label:"",required:!1,identifier:I.v4()});case"number":return new R({label:"",required:!1,identifier:I.v4()});case"date":return new Ke({label:"",required:!1,identifier:I.v4()});case"string":return new Me({label:"",required:!1,identifier:I.v4()});case"select":return new de({label:"",options:[],required:!1,identifier:I.v4()});case"multi-string":return new Ce({label:"",required:!1,identifier:I.v4()});case"multi-select":return new oe({label:"",options:[],required:!1,identifier:I.v4()});case"upload":return new Ie({label:"",required:!1,identifier:I.v4(),maximum_files:6,maximum_size:Oe});case"qr":return new Ye({label:"",required:!1,identifier:I.v4()});case"radio":return new Fe({label:"",options:[],required:!1,identifier:I.v4()});case"checkbox-list":return new ve({label:"",options:[],required:!1,identifier:I.v4()});case"pass-fail":return new be({label:"",required:!1,identifier:I.v4(),showNotesAndFilesOn:["fail"]});case"otp":return new ze({label:"",validationType:"none",required:!1,identifier:I.v4(),length:6});case"rating":return new Ne({label:"",required:!1,identifier:I.v4(),maxRating:5})}},En=i=>{switch(i.type){case"text":return new pi({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"boolean":return new ii({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"number":return new si({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"date":return new ti({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"string":return new fi({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"select":return new hi({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"multi-string":return new ai({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"multi-select":return new oi({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"upload":return new gi({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"qr":return new ui({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"radio":return new di({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"checkbox-list":return new ni({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"pass-fail":return new li({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"otp":return new ri({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"rating":return new ci({id:I.v4(),conditionValue:void 0,conditionModifier:"equals",field:i})}},wo=(i,o)=>{switch(i){case"checkbox-list":return ve.getFieldCreationSchema(o);case"multi-select":return oe.getFieldCreationSchema(o);case"number":return R.getFieldCreationSchema(o);case"radio":return Fe.getFieldCreationSchema(o);case"select":return de.getFieldCreationSchema(o);case"string":return Me.getFieldCreationSchema(o);case"text":return xe.getFieldCreationSchema(o);case"upload":return Ie.getFieldCreationSchema(o);case"pass-fail":return be.getFieldCreationSchema(o);case"otp":return ze.getFieldCreationSchema(o);case"rating":return Ne.getFieldCreationSchema(o);default:return}},bo={danger:"danger",warning:"warning",info:"base",success:"success"},Fo=d.memo(i=>{const{popoverInputs:o,hasError:e,...t}=i;return n.jsxs(s.Popover.Root,{children:[n.jsx(s.Popover.Trigger,{asChild:!0,children:n.jsxs(s.Button,{variant:"soft",type:"button",size:"sm","aria-label":"settings",accentColor:"base",...e&&{color:bo.danger},children:[n.jsx(s.LuIcon,{icon:pa}),"Settings"]},"settings")}),n.jsx(s.Popover.Content,{size:"sm",...t,children:n.jsx("div",{className:"flex w-full max-w-[350px] flex-col",children:o})})]})});Fo.displayName="FieldSettingsPopover";const No=d.memo(i=>{const{parentPath:o,fieldIndex:e,field:t}=i,{errors:a}=ie.useFormikContext(),r=Ci(),{disableRequiredFields:l}=d.use(Ai),[u,c]=d.useState(void 0);d.useEffect(()=>{t.image instanceof Promise?t.image.then(c).catch(console.error):c(t.image)},[t]);const f=u?URL.createObjectURL(u):void 0,g=d.useCallback(()=>{t.setOptions({image:void 0})},[t]),[m,V]=d.useMemo(()=>{const w=[],N=[],M=wo(t.type,`${o}.${e}`)??[];for(const q of M)q.showDirectly?w.push(q.field):N.push(q.field);return[w,N]},[t,o,e]),C=We(m,{formId:Li,disabled:!1,size:"sm"}),y=We(V,{formId:Li,disabled:!1,size:"sm"}),v=V.length>0,S=V.some(w=>{const N=$i(a,w.identifier);return N&&(typeof N!="object"||Object.values(N).length>0)}),b=d.useCallback(()=>{u&&r(()=>({file:u}))},[r,u]),{fieldTypeName:z}=Si[t.type];return n.jsxs("div",{className:"flex grow w-full flex-col gap-4",children:[n.jsxs("div",{className:"flex gap-2 w-full justify-between",children:[n.jsxs("div",{className:"flex gap-2 items-center",children:[n.jsxs(s.Badge,{accentColor:"base",variant:"soft",size:"sm",children:[n.jsx(s.LuIcon,{icon:$[t.type]}),z]}),!l&&n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(s.Checkbox.Root,{checked:t.required,onCheckedChange:w=>t.setOptions({required:!!w}),size:"sm",children:n.jsx(s.Checkbox.Indicator,{children:n.jsx(s.LuIcon,{icon:Y})})}),n.jsx(s.Text,{size:"sm",accentColor:"base",children:"Required"})]})]}),v&&n.jsx(Fo,{popoverInputs:y,hasError:S,align:"end"})]}),u&&n.jsxs("div",{className:"group relative inline-block w-full min-w-[300px]",children:[n.jsx("img",{className:"h-[100px] w-full min-w-[300px] cursor-pointer rounded-md object-cover",src:f,alt:u.name,onClick:b}),n.jsx(s.IconButton,{type:"button",className:"absolute top-2 right-2 hidden group-hover:not-disabled:flex",variant:"solid",accentColor:"base","aria-label":"delete",onClick:g,size:"sm",children:n.jsx(s.LuIcon,{icon:le})})]}),n.jsxs("div",{className:"flex flex-col gap-2 w-full overflow-hidden",children:[n.jsx(s.Input.Root,{variant:"outline",size:"md",children:n.jsx(s.Input.Field,{placeholder:"Enter your question",value:t.label??"",onChange:w=>t.setOptions({label:w.target.value}),maxLength:200})}),n.jsx(s.TextArea,{className:"field-sizing-content",placeholder:"Enter a field description (optional)",value:t.description??"",onChange:w=>t.setOptions({description:w.target.value}),maxLength:1e3,resize:"vertical",size:"md"})]}),m.length>0&&n.jsx("div",{className:"w-full",children:C})]})});No.displayName="FieldBuilder";const $n=d.memo(i=>{const{field:o,fieldSection:e,fieldIndex:t,sectionIndex:a}=i,r=d.useRef(null),l=`fields.${a}.fields`,u=d.useCallback(v=>{e.addField(_i(v),t+1)},[t,e]),c=d.useCallback(()=>{e.addField(o.duplicate(I.v4()))},[o,e]),f=d.useCallback(v=>{const S=v==="up"?a-1:a+1;e.moveField(t,S)},[e,t,a]),g=d.useCallback(v=>{const{files:S}=v.target;if(!S||S.length!==1)return;const b=S.item(0);if(b){if(b.size>pt){s.toast.error({title:"File upload error",description:`The file ${b.name} exceeded the maximum file size`});return}o.setOptions({image:b})}},[o]),m=d.useCallback(()=>{f("up")},[f]),V=d.useCallback(()=>{f("down")},[f]),C=d.useCallback(()=>{var v;(v=r.current)==null||v.click()},[]),y=d.useCallback(()=>{e.removeField(o)},[o,e]);return n.jsxs(s.Card,{className:"flex items-center justify-between gap-4 w-full",size:"sm",children:[n.jsx(No,{fieldIndex:t,field:o,parentPath:l}),n.jsxs(s.ButtonGroup,{className:"flex-col gap-0.5 flex",variant:"ghost",accentColor:"base",size:"sm",children:[n.jsx(Ti,{onSelectFieldType:u,size:"sm",children:n.jsx(s.IconButton,{type:"button",children:n.jsx(s.LuIcon,{icon:ee})})}),n.jsx(s.IconButton,{type:"button",onClick:m,children:n.jsx(s.LuIcon,{icon:Rn})}),n.jsx(s.IconButton,{type:"button",onClick:V,children:n.jsx(s.LuIcon,{icon:Qn})}),n.jsx(s.IconButton,{type:"button",onClick:c,children:n.jsx(s.LuIcon,{icon:Pi})}),n.jsx(s.IconButton,{type:"button",onClick:C,children:n.jsx(s.LuIcon,{icon:Zn})}),n.jsx(s.IconButton,{type:"button",onClick:y,children:n.jsx(s.LuIcon,{icon:le})})]}),n.jsx("input",{className:"hidden",ref:r,type:"file",accept:"image/*",onChange:g})]})});$n.displayName="FieldBuilderWithActions";const Dn=d.memo(i=>{const{children:o,variant:e,size:t,accentColor:a,fields:r,onSelectField:l,...u}=i;return n.jsxs(s.Menu.Root,{...u,children:[n.jsx(s.Menu.ClickTrigger,{children:o}),n.jsx(s.Menu.Content,{variant:e,size:t,accentColor:a,children:n.jsx(s.Menu.Scroll,{children:r.map(c=>n.jsxs(s.Menu.Item,{onSelect:()=>l(c),children:[n.jsx(s.LuIcon,{icon:$[c.type]}),c.label||j]},c.identifier))})})]})});Dn.displayName="IssueDataFilterMenu";const Mo=d.memo(i=>{const{children:o,variant:e,size:t,accentColor:a,fieldSections:r,onSelectFieldCondition:l,...u}=i;return n.jsxs(s.Menu.Root,{...u,children:[n.jsx(s.Menu.ClickTrigger,{children:o}),n.jsx(s.Menu.Content,{variant:e,size:t,accentColor:a,children:r.map(c=>n.jsxs(s.Menu.Item,{onSelect:()=>l(c),children:[n.jsx(s.LuIcon,{icon:$[c.type]}),c.label||gn]},c.identifier))})]})});Mo.displayName="IssueDataFilterMenu";const xo=d.memo(i=>{const{id:o,sourceX:e,sourceY:t,targetX:a,targetY:r,style:l,markerEnd:u,data:c}=i,{targetSection:f,sourceSection:g,layoutDirection:m}=c,V=d.useMemo(()=>g.getConditions(f.identifier),[g,f.identifier]),C=d.useCallback(()=>{g.removeConditional(f.identifier)},[g,f.identifier]),y=d.useCallback(w=>{g.addCondition(f.identifier,En(w))},[g,f.identifier]),v=d.useCallback(w=>{g.removeCondition(f.identifier,w)},[g,f.identifier]),[S,b,z]=E.getBezierPath({sourceX:e,sourceY:t,sourcePosition:m==="LR"?E.Position.Right:E.Position.Bottom,targetX:a,targetY:r,targetPosition:m==="LR"?E.Position.Left:E.Position.Top});return n.jsxs(n.Fragment,{children:[n.jsx(E.BaseEdge,{id:o,path:S,style:l,markerEnd:u,labelX:b,labelY:z}),n.jsx(E.EdgeLabelRenderer,{children:n.jsxs(s.Card,{size:"xs",variant:"surface",className:"absolute nodrag nopan pointer-events-auto inline-flex flex-col gap-2 bg-(--base-2)",onMouseDown:w=>w.stopPropagation(),onClick:w=>w.stopPropagation(),"data-floating-content":"",style:{transform:`translate(-50%, -50%) translate(${b}px, ${z}px)`},children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(s.Text,{size:"xs",className:"truncate max-w-[280px]",children:g.label||"Untitled section"}),n.jsxs("div",{className:"ml-auto flex items-center gap-1",children:[n.jsx(Dn,{fields:g.fields,onSelectField:y,children:n.jsx(s.IconButton,{"aria-label":"Add condition",type:"button",variant:"surface",size:"xs",accentColor:"base",children:n.jsx(s.LuIcon,{icon:ee})})}),n.jsxs(s.Tooltip.Root,{children:[n.jsx(s.Tooltip.Trigger,{asChild:!0,children:n.jsx(s.IconButton,{"aria-label":"Remove conditional logic",type:"button",variant:"surface",size:"xs",accentColor:"base",color:"danger",onClick:C,children:n.jsx(s.LuIcon,{icon:le})})}),n.jsx(s.Tooltip.Content,{size:"sm",children:"Remove conditional logic"})]})]})]}),V.length>0&&n.jsx("div",{className:"flex flex-col h-max w-full flex-wrap gap-1",children:V.map(w=>n.jsx(d.Fragment,{children:w.render({onRemove:v})},w.id))})]})})]})});xo.displayName="FieldSectionConditionEdgeComponent";const Io=d.memo(i=>{const{data:o,selected:e}=i,{fieldSection:t,index:a,layoutDirection:r}=o,l=d.use(ge),u=d.useCallback(()=>{l.removeFieldSection(t)},[l,t]),c=d.useCallback(m=>{t.addField(_i(m))},[t]),f=d.useCallback(()=>{const m=new Z({identifier:I.v4(),fields:[]});l.addFieldSection(m),t.addConditional(m.identifier)},[l,t]),g=d.useCallback(()=>{l.addFieldSection(t.duplicate(I.v4()))},[l,t]);return n.jsxs(s.Card,{variant:"surface",className:"cursor-pointer relative bg-(--base-2)",size:"sm","data-selected":e?"true":void 0,children:[n.jsxs("div",{className:"flex flex-col gap-3",children:[n.jsxs("div",{className:"flex flex-col gap-2 w-full overflow-hidden",children:[n.jsx(s.Input.Root,{variant:"outline",size:"md",accentColor:"base",children:n.jsx(s.Input.Field,{placeholder:"Enter a section label (optional)",value:t.label??"",onChange:m=>t.setOptions({label:m.target.value}),maxLength:200})}),n.jsx(s.TextArea,{className:"field-sizing-content",placeholder:"Enter a section description (optional)",value:t.description??"",onChange:m=>t.setOptions({description:m.target.value}),maxLength:1e3,resize:"vertical",size:"md"})]}),n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(s.Text,{weight:"bold",children:"Fields"}),n.jsx(Ti,{onSelectFieldType:c,size:"sm",children:n.jsxs(s.Button,{type:"button",variant:"soft",size:"sm",accentColor:"base",children:[n.jsx(s.LuIcon,{icon:ee})," Add field"]})})]}),n.jsx("div",{className:"flex flex-col gap-3",children:t.fields.map((m,V)=>n.jsx($n,{field:m,fieldSection:t,fieldIndex:V,sectionIndex:a},m.identifier))})]}),n.jsx(E.NodeToolbar,{isVisible:!0,position:E.Position.Right,align:"start",offset:8,onMouseDown:m=>m.stopPropagation(),children:n.jsx(s.Card,{variant:"surface",className:"flex flex-col items-center gap-1 p-1 bg-(--base-2)",size:"xs",onClick:m=>m.stopPropagation(),children:n.jsxs(s.ButtonGroup,{className:"flex flex-col gap-2",variant:"surface",size:"xs",accentColor:"base",children:[n.jsx(s.IconButton,{type:"button",onClick:f,children:n.jsx(s.LuIcon,{icon:aa})}),n.jsx(s.IconButton,{type:"button",onClick:g,children:n.jsx(s.LuIcon,{icon:Pi})}),n.jsx(s.IconButton,{type:"button",onClick:u,children:n.jsx(s.LuIcon,{icon:le})})]})})}),n.jsx(E.Handle,{type:"target",className:"size-4! bg-(--base-3)! border-(--base-7)!",position:r==="LR"?E.Position.Left:E.Position.Top}),n.jsx(E.Handle,{type:"source",className:"size-4! bg-(--base-3)! border-(--base-7)!",position:r==="LR"?E.Position.Right:E.Position.Bottom})]})});Io.displayName="CustomNode";const Oa={fieldSection:Io},qa={fieldSectionCondition:xo},La=(i,o,e)=>{const t=new Gn.graphlib.Graph().setDefaultEdgeLabel(()=>({}));return t.setGraph({rankdir:e,nodesep:200,edgesep:500,ranksep:500}),o.forEach(a=>t.setEdge(a.source,a.target,{width:500,height:200,labelpos:"c"})),i.forEach(a=>{var r,l;return t.setNode(a.id,{...a,width:((r=a.measured)==null?void 0:r.width)??0,height:((l=a.measured)==null?void 0:l.height)??0})}),Gn.layout(t),[i.map(a=>{var c,f;const r=t.node(a.id),l=r.x-(((c=a.measured)==null?void 0:c.width)??0)/2,u=r.y-(((f=a.measured)==null?void 0:f.height)??0)/2;return{...a,position:{x:l,y:u}}}),o]},Aa={hideAttribution:!0},Oo=d.memo(()=>{const{handleSubmit:i,errors:o}=ie.useFormikContext(),{onCancel:e}=d.use(Ai),t=d.use(ge),a=d.useRef(null),[r,l]=d.useState(),[u,c]=d.useState("TB");d.useLayoutEffect(()=>{a.current&&a.current.classList.remove("light")},[]);const f=d.useMemo(()=>t.fieldSections.map((q,L)=>({id:q.identifier,position:{x:0,y:0},data:{index:L,fieldSection:q,layoutDirection:u},draggable:!0,type:"fieldSection"})),[t.fieldSections,u]),g=d.useMemo(()=>{const q=[],L={};for(const x of t.fieldSections)L[x.identifier]=x;for(const x of t.fieldSections){const B=x.conditions;for(const[W,Q]of Object.entries(B))q.push({id:`${x.identifier}-${W}`,source:x.identifier,target:W,data:{targetSection:L[W],sourceSection:x,layoutDirection:u},animated:Q.length>0,markerEnd:E.MarkerType.Arrow,style:{strokeWidth:2,stroke:"var(--base-a8)"},type:"fieldSectionCondition"})}return q},[t.fieldSections,u]),[m,V,C]=E.useNodesState(f),[y,v,S]=E.useEdgesState(g);d.useEffect(()=>{V(f)},[f,V]),d.useEffect(()=>{v(g)},[g,v]);const[b,z]=d.useMemo(()=>La(m,y,u),[y,u,m]),w=d.useCallback(()=>{t.addFieldSection(new Z({identifier:I.v4(),fields:[]}))},[t]),N=d.useCallback(q=>{const{source:L,target:x}=q,B=t.fieldSections.find(({identifier:W})=>W===L);B.setOptions({conditions:{...B.conditions,[x]:[]}})},[t.fieldSections]),M=d.useCallback(q=>{const L=t.getSectionDependencyGraph();return!Pn.willCreateCycle(L,q.source,q.target)},[t]);return n.jsxs("form",{className:"size-full flex flex-col gap-4",id:Li,onSubmit:i,children:[n.jsxs(s.Card,{className:"size-full relative",variant:"outline",children:[n.jsx(E.ReactFlow,{ref:a,onInit:l,nodes:b,onNodesChange:C,edges:z,onEdgesChange:S,nodeTypes:Oa,edgeTypes:qa,onConnect:N,attributionPosition:"bottom-left",fitView:!0,minZoom:0,isValidConnection:M,proOptions:Aa}),n.jsx(E.Panel,{position:"top-left",children:n.jsx(s.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:n.jsxs(s.Button,{type:"button",variant:"surface",onClick:w,children:[n.jsx(s.LuIcon,{icon:ee})," Add section"]})})}),n.jsxs(E.Panel,{position:"top-right",className:"flex flex-col items-center gap-2",children:[n.jsxs(s.ToggleGroup.Root,{className:"flex flex-col",type:"single",accentColor:"base",size:"sm",value:u,onValueChange:c,children:[n.jsx(s.ToggleGroup.IconItem,{className:"rounded-b-none",value:"LR",type:"button",children:n.jsx(s.LuIcon,{icon:Ko})}),n.jsx(s.ToggleGroup.IconItem,{className:"rounded-t-none",value:"TB",type:"button",children:n.jsx(s.LuIcon,{icon:Xo})})]}),n.jsx(s.Separator,{size:"sm"}),n.jsxs(s.ButtonGroup,{className:"flex flex-col",size:"sm",accentColor:"base",variant:"soft",children:[n.jsx(s.IconButton,{className:"rounded-b-none",onClick:()=>r==null?void 0:r.zoomIn(),type:"button",children:n.jsx(s.LuIcon,{icon:ee})}),n.jsx(s.IconButton,{onClick:()=>r==null?void 0:r.zoomOut(),radius:"none",type:"button",children:n.jsx(s.LuIcon,{icon:mi})}),n.jsx(s.IconButton,{className:"rounded-t-none",onClick:()=>r==null?void 0:r.fitView(),type:"button",children:n.jsx(s.LuIcon,{icon:ma})})]})]}),n.jsx(E.Panel,{position:"bottom-right",children:n.jsxs(s.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:[e&&n.jsx(s.Button,{type:"button",variant:"soft",accentColor:"base",onClick:e,children:"Cancel"}),n.jsx(s.Button,{type:"submit",variant:"surface",children:"Save"})]})})]}),!!o.fields&&n.jsx(s.Text,{size:"xs",accentColor:"danger",children:typeof o.fields=="string"&&o.fields})]})});Oo.displayName="FormBuilderFlowBuilder";const qo=d.memo(i=>{const{sourceFieldSection:o,targetFieldSection:e}=i,t=d.useMemo(()=>o.getConditions(e.identifier),[o,e.identifier]),a=d.useCallback(()=>{o.removeConditional(e.identifier)},[o,e.identifier]),r=d.useCallback(u=>{o.addCondition(e.identifier,En(u))},[o,e.identifier]),l=d.useCallback(u=>{o.removeCondition(e.identifier,u)},[o,e.identifier]);return n.jsxs(s.Card,{className:"flex flex-col gap-2",size:"sm",children:[n.jsxs(s.ButtonGroup,{className:"justify-between gap-2 flex",size:"sm",accentColor:"base",variant:"soft",children:[n.jsxs(s.Badge,{accentColor:"base",variant:"soft",size:"sm",children:[n.jsx(s.LuIcon,{icon:$.section}),o.label??gn]}),n.jsx(s.IconButton,{type:"button",onClick:a,variant:"ghost",children:n.jsx(s.LuIcon,{icon:le})})]}),n.jsxs("div",{className:"flex h-max w-full flex-wrap gap-2",children:[t.map(u=>u.render({onRemove:l})),n.jsx(Dn,{fields:o.fields,onSelectField:r,align:"start",children:n.jsx(s.IconButton,{type:"button",size:"sm",variant:"soft",accentColor:"base",children:n.jsx(s.LuIcon,{icon:ee})})})]})]})});qo.displayName="FieldSectionConditionalItem";const Lo=d.memo(i=>{const{fieldSection:o}=i,e=d.use(ge),t=d.useMemo(()=>e.fieldSections.filter(l=>o.identifier in l.conditions),[e.fieldSections,o.identifier]),a=d.useCallback(l=>{l.addConditional(o.identifier)},[o.identifier]),r=d.useMemo(()=>{const l=e.getSectionDependencyGraph();return e.fieldSections.filter(u=>!Pn.willCreateCycle(l,u.identifier,o.identifier))},[o.identifier,e]);return n.jsxs("div",{className:"flex grow w-full flex-col gap-4",children:[n.jsxs("div",{className:"flex flex-col gap-2 w-full overflow-hidden",children:[n.jsx(s.Input.Root,{variant:"outline",size:"md",children:n.jsx(s.Input.Field,{placeholder:"Enter a section label (optional)",value:o.label??"",onChange:l=>o.setOptions({label:l.target.value}),maxLength:200})}),n.jsx(s.TextArea,{className:"field-sizing-content",placeholder:"Enter a section description (optional)",value:o.description??"",onChange:l=>o.setOptions({description:l.target.value}),maxLength:1e3,resize:"vertical",size:"md"})]}),n.jsx(s.Separator,{size:"full"}),n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsxs("div",{className:"flex gap-2 justify-between",children:[n.jsx(s.Text,{accentColor:"base",children:"Conditions"}),n.jsx(Mo,{fieldSections:r,onSelectFieldCondition:a,children:n.jsxs(s.Button,{type:"button",variant:"soft",size:"sm",className:"w-max",children:[n.jsx(s.LuIcon,{icon:ee}),"Add condition"]})})]}),t.map(l=>n.jsx(qo,{sourceFieldSection:l,targetFieldSection:o},l.identifier))]}),n.jsx(s.Separator,{size:"full"})]})});Lo.displayName="FieldSectionBuilder";const Ao=d.memo(i=>{const{fieldSection:o,sectionIndex:e}=i,t=d.use(ge),a=s.useAlertDialog(),r=d.useCallback(()=>{t.removeFieldSection(o)},[t,o]),l=d.useCallback(v=>{const S=v==="up"?e-1:e+1;t.moveFieldSection(e,S)},[t,e]),u=d.useCallback(()=>{t.addFieldSection(o.duplicate(I.v4()))},[t,o]),c=d.useCallback(v=>{o.addField(_i(v))},[o]),f=d.useCallback(()=>{l("up")},[l]),g=d.useCallback(()=>{l("down")},[l]),m=d.useCallback(async()=>{const v=[o.serialize()],S=se.reseedFieldSections(v,{conditions:!1}),b=JSON.stringify(S);await navigator.clipboard.writeText(b),s.toast.success({title:"Section copied"})},[o]),V=d.useCallback(async()=>{const S=t.getDependenciesOfSection(o.identifier).map(w=>w.serialize()),b=se.reseedFieldSections(S,{conditions:!0}),z=JSON.stringify(b);await navigator.clipboard.writeText(z),s.toast.success({title:"Section copied"})},[o,t]),C=d.useCallback(async()=>{const v=t.getDependenciesOfSection(o.identifier),S=v.length>1,b=v.length-1;S?a({title:"Copy section dependencies?",description:`This section has ${b} dependent section${b>1?"s":""} that will also be copied to maintain the conditions. Do you want to include these dependencies?`,action:"Include",onAction:V,cancel:"Dont include",onCancel:m}):m()},[o,t,a,V,m]),y=d.useCallback(async()=>{let v="";try{v=await navigator.clipboard.readText()}catch{s.toast.error({title:"Paste failed",description:"Unable to read clipboard contents."});return}const S=v.trim();if(!S){s.toast.error({title:"Paste failed",description:"Clipboard is empty."});return}let b;try{b=JSON.parse(S)}catch{s.toast.error({title:"Invalid JSON",description:"Check the JSON and try again."});return}const z=Array.isArray(b)?b:[b],w=[];for(const N of z){if(!N||typeof N!="object")continue;const M=N;if(M.type!=="section"||!Array.isArray(M.fields))continue;const q={type:"section",identifier:typeof M.identifier=="string"?M.identifier:I.v4(),label:typeof M.label=="string"||M.label===null?M.label:null,description:typeof M.description=="string"||M.description===null?M.description:null,conditions:M.conditions&&typeof M.conditions=="object"?M.conditions:{},fields:M.fields};try{w.push(Z.deserialize(q))}catch{}}if(w.length===0){s.toast.error({title:"Paste failed",description:"No valid sections found in the JSON."});return}w.forEach((N,M)=>{t.addFieldSection(N,e+1+M)}),s.toast.success({title:"Section pasted",description:"Serialized JSON imported successfully."})},[t,e]);return n.jsxs(s.Card,{variant:"outline",className:"flex items-center justify-between gap-4 w-full",size:"sm",children:[n.jsxs("div",{className:"flex grow flex-col gap-4 w-full",children:[n.jsx(Lo,{fieldSection:o}),n.jsxs("div",{className:"flex flex-col gap-2 w-full",children:[n.jsxs("div",{className:"flex gap-2 justify-between",children:[n.jsx(s.Text,{accentColor:"base",size:"md",children:"Fields"}),n.jsx(Ti,{onSelectFieldType:c,size:"sm",children:n.jsxs(s.Button,{type:"button",variant:"soft",size:"sm",children:[n.jsx(s.LuIcon,{icon:ee})," Add field"]})})]}),o.fields.map((v,S)=>n.jsx($n,{field:v,fieldSection:o,fieldIndex:S,sectionIndex:e},v.identifier))]})]}),n.jsxs(s.ButtonGroup,{className:"flex-col gap-0.5 flex",variant:"ghost",accentColor:"base",size:"sm",children:[n.jsx(s.IconButton,{type:"button",onClick:f,children:n.jsx(s.LuIcon,{icon:Rn})}),n.jsx(s.IconButton,{type:"button",onClick:g,children:n.jsx(s.LuIcon,{icon:Qn})}),n.jsxs(s.Menu.Root,{align:"end",children:[n.jsx(s.Menu.ClickTrigger,{children:n.jsx(s.IconButton,{type:"button",children:n.jsx(s.LuIcon,{icon:Kn})})}),n.jsxs(s.Menu.Content,{size:"sm",children:[n.jsxs(s.Menu.Item,{onSelect:u,children:[n.jsx(s.LuIcon,{icon:Pi}),"Duplicate section"]}),n.jsxs(s.Menu.Item,{onSelect:C,children:[n.jsx(s.LuIcon,{icon:Jn}),"Copy JSON"]}),n.jsxs(s.Menu.Item,{onSelect:y,children:[n.jsx(s.LuIcon,{icon:Wn}),"Paste JSON"]}),n.jsxs(s.Menu.Item,{onSelect:r,children:[n.jsx(s.LuIcon,{icon:le}),"Delete section"]})]})]})]})]})});Ao.displayName="FieldSectionWithActions";const To=d.memo(()=>{const{handleSubmit:i,errors:o}=ie.useFormikContext(),{onCancel:e}=d.use(Ai),t=d.use(ge),a=d.useCallback(()=>{t.addFieldSection(new Z({identifier:I.v4(),fields:[]}))},[t]),r=d.useCallback(async()=>{try{const u=t.serialize(),c=se.reseedFieldSections(u),f=JSON.stringify(c);await navigator.clipboard.writeText(f),s.toast.success({title:"Sections copied",description:"All sections JSON copied to clipboard."})}catch{s.toast.error({title:"Copy failed",description:"Unable to copy the sections JSON."})}},[t]),l=d.useCallback(async()=>{let u="";try{u=await navigator.clipboard.readText()}catch{s.toast.error({title:"Paste failed",description:"Unable to read clipboard contents."});return}const c=u.trim();if(!c){s.toast.error({title:"Paste failed",description:"Clipboard is empty."});return}let f;try{f=JSON.parse(c)}catch{s.toast.error({title:"Invalid JSON",description:"Check the JSON and try again."});return}const g=Array.isArray(f)?f:[f],m=[];for(const C of g){if(!C||typeof C!="object")continue;const y=C;if(y.type!=="section"||!Array.isArray(y.fields))continue;const v={type:"section",identifier:typeof y.identifier=="string"?y.identifier:I.v4(),label:typeof y.label=="string"||y.label===null?y.label:null,description:typeof y.description=="string"||y.description===null?y.description:null,conditions:y.conditions&&typeof y.conditions=="object"?y.conditions:{},fields:y.fields};try{m.push(Z.deserialize(v))}catch{}}if(m.length===0){s.toast.error({title:"Paste failed",description:"No valid sections found in the JSON."});return}const V=t.fieldSections.length;m.forEach((C,y)=>{t.addFieldSection(C,V+y)}),s.toast.success({title:"Sections pasted",description:"Serialized JSON imported successfully."})},[t]);return n.jsxs("form",{className:"flex flex-col gap-4",id:Li,onSubmit:i,children:[n.jsxs("div",{className:"flex flex-col gap-4",children:[n.jsxs("div",{className:"flex items-center justify-end gap-2",children:[n.jsxs(s.Button,{type:"button",variant:"soft",size:"sm",onClick:r,children:[n.jsx(s.LuIcon,{icon:Jn})," Copy JSON"]}),n.jsxs(s.Button,{type:"button",variant:"soft",size:"sm",onClick:l,children:[n.jsx(s.LuIcon,{icon:Wn})," Paste JSON"]})]}),t.fieldSections.map((u,c)=>n.jsx(Ao,{fieldSection:u,sectionIndex:c},u.identifier)),n.jsxs(s.Button,{className:"mb-4",type:"button",variant:"soft",accentColor:"base",size:"sm",onClick:a,children:[n.jsx(s.LuIcon,{icon:ee})," Add section"]})]}),!!o.fields&&n.jsx(s.Text,{size:"xs",accentColor:"danger",children:typeof o.fields=="string"&&o.fields}),n.jsxs(s.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:[e&&n.jsx(s.Button,{type:"button",variant:"soft",accentColor:"base",onClick:e,children:"Cancel"}),n.jsx(s.Button,{type:"submit",variant:"surface",children:"Save"})]})]})});To.displayName="FormBuilderListBuilder";const _o=d.memo(d.forwardRef((i,o)=>{const{readonly:e=!1,fieldSchema:t,values:a={},onValuesChange:r,onSubmit:l,submitText:u="Submit",hideSubmit:c=!1,cancelText:f,onCancel:g,hideCancel:m=!1,onDirty:V,onDirtyChange:C,className:y,buttonProps:v,enableReinitialize:S=!1,excludeUnchangedFields:b=!1,size:z="md"}=i,w=d.useId(),N=d.useMemo(()=>t.initializeValues(a),[t,a]),M=d.useCallback(G=>{l==null||l(b?t.changedFieldValues(N,G):G)},[b,N,l,t]),q=ie.useFormik({initialValues:N,onSubmit:M,validate:G=>t.validateValues(G),validateOnBlur:!1,validateOnChange:!1,enableReinitialize:!1});d.useLayoutEffect(()=>{S&&q.resetForm({values:N})},[S,N]);const{dirty:L}=q,x=d.useCallback((G,T)=>{fo(ho(t.getFieldSections()))[G].areValuesEqual(N[G],T)||r==null||r({...q.values,[G]:T},{[G]:T})},[q.values,N,r,t]),B=d.useMemo(()=>({formId:w,disabled:e,onValuesChange:x,size:z}),[w,x,e,z]),W=We(t.getFieldSections(),B);d.useEffect(()=>{L&&V&&V(),C&&C(L)},[L,V,C]);const Q=d.useMemo(()=>({fieldSchema:t,size:z}),[t,z]),_=!m&&!!g,P=!c;return n.jsx(ie.FormikProvider,{value:q,children:n.jsx(So,{value:Q,children:n.jsxs("form",{id:w,ref:o,className:ne.cx(y,"flex flex-col gap-4"),onSubmit:q.handleSubmit,children:[W,!e&&(_||P)?n.jsxs(s.ButtonGroup,{className:"flex items-center justify-end gap-2",size:z,children:[_?n.jsxs(s.Button,{accentColor:"base",...v,type:"button",variant:"soft",onClick:g,children:[n.jsx(s.LuIcon,{icon:te}),f]}):null,P?n.jsxs(s.Button,{...v,type:"submit",accentColor:"primary",variant:"surface",children:[n.jsx(s.LuIcon,{icon:Y}),u]}):null]}):null]})})})})),Bo=d.memo(()=>{const i=d.use(ge);return n.jsx(_o,{fieldSchema:i,readonly:!1})});Bo.displayName="FormBuilderPreview";const Eo=d.memo(i=>{const{children:o,initialFields:e,onSave:t,onCancel:a,enableReinitialize:r=!1,disableRequiredFields:l=!1}=i,u=d.useCallback(C=>{var z;const y={};(!C.fields||C.fields.length===0)&&(y.fields="At least one field is required.");const v=[];for(const[w,N]of C.fields.entries())for(const[M,q]of N.fields.entries()){const L=((z=wo(q.type,`fields.${w}.fields.${M}`))==null?void 0:z.map(({field:x})=>x))??[];v.push(...L)}const S={};for(const w of v)S[w.identifier]=$i(C,w.identifier);const b=_n(v,S);if(b&&(y.fields=b.fields),Object.keys(y).length>0)return s.toast.error({title:"Some form settings are invalid",description:"Please check settings highlighted in red."}),y},[]),c=d.useMemo(()=>({fields:e??[]}),[e]),f=ie.useFormik({initialValues:c,validate:u,onSubmit:t,validateOnChange:!1,validateOnBlur:!1,enableReinitialize:r}),g=d.useCallback(C=>{f.setFieldValue("fields",C.serialize())},[f]),m=d.useMemo(()=>{const C=se.deserialize(f.values.fields);return C.observe(g),C},[f.values.fields,g]),V=d.useMemo(()=>({disableRequiredFields:l,onCancel:a}),[l,a]);return n.jsx(Ai,{value:V,children:n.jsx(ge,{value:m,children:n.jsx(ie.FormikProvider,{value:f,children:o})})})});Eo.displayName="FormBuilderRoot";const Ta={Root:Eo,FlowBuilder:Oo,ListBuilder:To,Preview:Bo};h.BaseCondition=H,h.BaseField=X,h.BaseFormElement=Ui,h.BaseOptionsField=Xe,h.BaseStringField=Ki,h.BooleanEqualsConditionModifier=gt,h.BooleanField=ye,h.BooleanFieldCondition=ii,h.BooleanFieldConditionCell=Lt,h.BooleanFieldInput=Wi,h.BooleanNotEqualsConditionModifier=mt,h.CheckboxListField=ve,h.CheckboxListFieldCondition=ni,h.CheckboxListFieldConditionCell=Tt,h.CheckboxListFieldInput=Yi,h.ConditionManager=Ii,h.DateAfterConditionModifier=vt,h.DateBeforeConditionModifier=Vt,h.DateEqualsConditionModifier=Ct,h.DateField=Ke,h.DateFieldCondition=ti,h.DateFieldConditionCell=Bt,h.DateFieldInput=Zi,h.DateNotEqualsConditionModifier=yt,h.DateRangeInConditionModifier=zt,h.DateRangeNotInConditionModifier=St,h.DoesNotHaveFilesConditionModifier=bt,h.FieldSchema=se,h.FieldSection=Z,h.FieldSectionLayout=Bn,h.FieldTypeToClsMapping=Si,h.FieldsRenderer=_o,h.FileCard=Gi,h.FormBuilder=Ta,h.HasFilesConditionModifier=wt,h.ImageCard=nn,h.ImageFile=yi,h.ImageViewer=Hi,h.ImageViewerProvider=nt,h.InputWithLabel=U,h.LONG_TEXT_FIELD_MAX_LENGTH=Ve,h.MultiSelectField=oe,h.MultiSelectFieldCondition=oi,h.MultiSelectFieldConditionCell=$t,h.MultiSelectFieldInput=Qi,h.MultiStringField=Ce,h.MultiStringFieldCondition=ai,h.MultiStringFieldConditionCell=Pt,h.MultiStringFieldInput=Ji,h.NumberEqualsConditionModifier=mn,h.NumberField=R,h.NumberFieldCondition=si,h.NumberFieldConditionCell=Gt,h.NumberFieldInput=Xi,h.NumberGreaterThanConditionModifier=vn,h.NumberGreaterThanOrEqualsConditionModifier=zn,h.NumberLessThanConditionModifier=yn,h.NumberLessThanOrEqualsConditionModifier=Vn,h.NumberNotEqualsConditionModifier=Cn,h.NumberRangeInConditionModifier=Sn,h.NumberRangeNotInConditionModifier=wn,h.OTPField=ze,h.OTPFieldCondition=ri,h.OTPFieldConditionCell=kt,h.OTPFieldInput=en,h.Observable=Je,h.PassFailArrayExcludesConditionModifier=xt,h.PassFailArrayIncludesConditionModifier=Mt,h.PassFailEqualsConditionModifier=Ft,h.PassFailField=be,h.PassFailFieldCondition=li,h.PassFailFieldConditionCell=Jt,h.PassFailFieldInput=sn,h.PassFailNotEqualsConditionModifier=Nt,h.RadioField=Fe,h.RadioFieldCondition=di,h.RadioFieldConditionCell=Xt,h.RadioFieldInput=ln,h.RatingField=Ne,h.RatingFieldCondition=ci,h.RatingFieldConditionCell=Yt,h.RatingFieldInput=dn,h.SEVERITY_COLOR_MAPPING=bo,h.SHORT_TEXT_FIELD_MAX_LENGTH=zi,h.ScanField=Ye,h.ScanFieldCondition=ui,h.ScanFieldConditionCell=Qt,h.ScanFieldInput=un,h.Scanner=vi,h.ScannerProvider=ht,h.SelectField=de,h.SelectFieldCondition=hi,h.SelectFieldConditionCell=eo,h.SelectFieldInput=Ri,h.StringArrayEqualsConditionModifier=Ni,h.StringArrayEveryConditionModifier=wi,h.StringArrayExcludesConditionModifier=Fn,h.StringArrayIncludesConditionModifier=bn,h.StringArrayNoneConditionModifier=Fi,h.StringArrayNotEqualsConditionModifier=Mi,h.StringArraySomeConditionModifier=bi,h.StringEqualsConditionModifier=ue,h.StringExcludesConditionModifier=Qe,h.StringField=Me,h.StringFieldCondition=fi,h.StringFieldConditionCell=no,h.StringFieldInput=hn,h.StringIncludesConditionModifier=Ze,h.StringNotEqualsConditionModifier=he,h.TextField=xe,h.TextFieldCondition=pi,h.TextFieldConditionCell=oo,h.TextFieldInput=fn,h.UNLABELLED_FIELD_LABEL=j,h.UNLABELLED_SECTION_LABEL=gn,h.UUIDFile=ae,h.UUIDPromise=we,h.UploadField=Ie,h.UploadFieldCondition=gi,h.UploadFieldConditionCell=so,h.UploadFieldInput=pn,h.VideoCard=on,h.VideoFile=tn,h.areFieldValuesBlank=zo,h.areFieldValuesEqual=An,h.areFileAndPromiseArraysEqual=Vi,h.arePassFieldValuesEqual=lt,h.areSerializedPassFailFieldValuesEqual=dt,h.awaitFilesAndPromises=xa,h.blankFieldValues=Tn,h.changedFieldValues=Vo,h.cleanConditions=qn,h.cleanFieldValues=qi,h.cleanSerializedConditions=On,h.cleanSerializedFieldValues=Ln,h.createCondition=En,h.createConditionModifierConfig=F,h.createField=_i,h.deserialize=uo,h.deserializeCondition=lo,h.deserializeConditions=In,h.deserializeField=Oi,h.deserializeFieldValues=go,h.deserializeFields=wa,h.deserializeOnlyFields=ba,h.deserializePassFailFieldValue=rt,h.extractFilesAndPromisesFromFieldValues=mo,h.fieldIcons=$,h.flattenFields=ho,h.getFieldsMapping=fo,h.initializeFieldValues=yo,h.insertFilesAndPromisesToFieldValues=Co,h.isFileAndPromiseArray=tt,h.isPassFailFieldStatus=rn,h.isPassFailFieldValue=at,h.isSerializedPassFailFieldValue=ot,h.isStringArray=He,h.maxFileSizeB=pt,h.maxFileSizeKB=ft,h.maxFileSizeMB=Oe,h.passFailFieldStatusMapping=ce,h.passFailFieldStatuses=Se,h.separateImagesFromFields=Ma,h.serializeConditions=co,h.serializeFieldValues=po,h.serializePassFailFieldValue=st,h.unchangedFieldValues=vo,h.useConditionManager=za,h.useFieldInputs=We,h.useFormikInput=k,h.useImageViewer=Ci,h.useObjectUrl=ki,h.useScanner=va,h.useScannerContext=ct,h.validateFields=_n,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
|