@overmap-ai/forms 1.1.1 → 1.1.2
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/Scanner/ScannerProvider.d.ts +4 -1
- package/dist/Scanner/context.d.ts +7 -2
- package/dist/Scanner/hooks.d.ts +2 -1
- package/dist/Scanner/typings.d.ts +1 -1
- package/dist/forms.js +601 -583
- package/dist/forms.umd.cjs +42 -42
- package/package.json +3 -2
package/dist/forms.umd.cjs
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
(function(u,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("react/jsx-runtime"),require("@overmap-ai/blocks"),require("class-variance-authority"),require("react"),require("@xyflow/react/dist/style.css"),require("@xyflow/react"),require("graphology-dag"),require("react-hook-form"),require("uuid"),require("@hello-pangea/dnd"),require("file-saver"),require("@overmap-ai/hooks"),require("react-zxing"),require("@dagrejs/dagre"),require("graphology"),require("graphology-traversal"),require("lodash.get"),require("lodash.set")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@overmap-ai/blocks","class-variance-authority","react","@xyflow/react/dist/style.css","@xyflow/react","graphology-dag","react-hook-form","uuid","@hello-pangea/dnd","file-saver","@overmap-ai/hooks","react-zxing","@dagrejs/dagre","graphology","graphology-traversal","lodash.get","lodash.set"],t):(u=typeof globalThis<"u"?globalThis:u||self,t(u.forms={},u.jsxRuntime,u.blocks,u.classVarianceAuthority,u.React,null,u.react,u.graphologyDag,u.reactHookForm,u.uuid,u.dnd,u.fileSaver,u.hooks,u.reactZxing,u.Dagre,u.graphology,u.graphologyTraversal,u.get,u.set))})(this,function(u,t,a,R,d,
|
|
1
|
+
(function(u,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("react/jsx-runtime"),require("@overmap-ai/blocks"),require("class-variance-authority"),require("react"),require("@xyflow/react/dist/style.css"),require("@xyflow/react"),require("graphology-dag"),require("react-hook-form"),require("uuid"),require("@hello-pangea/dnd"),require("file-saver"),require("@overmap-ai/hooks"),require("react-zxing"),require("@dagrejs/dagre"),require("graphology"),require("graphology-traversal"),require("lodash.get"),require("lodash.set")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@overmap-ai/blocks","class-variance-authority","react","@xyflow/react/dist/style.css","@xyflow/react","graphology-dag","react-hook-form","uuid","@hello-pangea/dnd","file-saver","@overmap-ai/hooks","react-zxing","@dagrejs/dagre","graphology","graphology-traversal","lodash.get","lodash.set"],t):(u=typeof globalThis<"u"?globalThis:u||self,t(u.forms={},u.jsxRuntime,u.blocks,u.classVarianceAuthority,u.React,null,u.react,u.graphologyDag,u.reactHookForm,u.uuid,u.dnd,u.fileSaver,u.hooks,u.reactZxing,u.Dagre,u.graphology,u.graphologyTraversal,u.get,u.set))})(this,function(u,t,a,R,d,ua,_,Un,Y,N,Li,Gn,to,ro,kn,oo,ao,Hn,so){"use strict";var da=Object.defineProperty;var ca=(u,t,a)=>t in u?da(u,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):u[t]=a;var C=(u,t,a)=>ca(u,typeof t!="symbol"?t+"":t,a);/**
|
|
2
2
|
* @license lucide-react v0.542.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const
|
|
6
|
+
*/const lo=i=>i.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),co=i=>i.replace(/^([A-Z])|[\s-_]+(\w)/g,(n,e,r)=>r?r.toUpperCase():e.toLowerCase()),Jn=i=>{const n=co(i);return n.charAt(0).toUpperCase()+n.slice(1)},Wn=(...i)=>i.filter((n,e,r)=>!!n&&n.trim()!==""&&r.indexOf(n)===e).join(" ").trim(),uo=i=>{for(const n in i)if(n.startsWith("aria-")||n==="role"||n==="title")return!0};/**
|
|
7
7
|
* @license lucide-react v0.542.0 - ISC
|
|
8
8
|
*
|
|
9
9
|
* This source code is licensed under the ISC license.
|
|
10
10
|
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/var
|
|
11
|
+
*/var ho={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
|
|
12
12
|
* @license lucide-react v0.542.0 - ISC
|
|
13
13
|
*
|
|
14
14
|
* This source code is licensed under the ISC license.
|
|
15
15
|
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const
|
|
16
|
+
*/const fo=d.forwardRef(({color:i="currentColor",size:n=24,strokeWidth:e=2,absoluteStrokeWidth:r,className:o="",children:s,iconNode:l,...f},c)=>d.createElement("svg",{ref:c,...ho,width:n,height:n,stroke:i,strokeWidth:r?Number(e)*24/Number(n):e,className:Wn("lucide",o),...!s&&!uo(f)&&{"aria-hidden":"true"},...f},[...l.map(([h,p])=>d.createElement(h,p)),...Array.isArray(s)?s:[s]]));/**
|
|
17
17
|
* @license lucide-react v0.542.0 - ISC
|
|
18
18
|
*
|
|
19
19
|
* This source code is licensed under the ISC license.
|
|
20
20
|
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/const M=(i,n)=>{const e=d.forwardRef(({className:r,...o},s)=>d.createElement(
|
|
21
|
+
*/const M=(i,n)=>{const e=d.forwardRef(({className:r,...o},s)=>d.createElement(fo,{ref:s,iconNode:n,className:Wn(`lucide-${lo(Jn(i))}`,`lucide-${i}`,r),...o}));return e.displayName=Jn(i),e};/**
|
|
22
22
|
* @license lucide-react v0.542.0 - ISC
|
|
23
23
|
*
|
|
24
24
|
* This source code is licensed under the ISC license.
|
|
25
25
|
* See the LICENSE file in the root directory of this source tree.
|
|
26
|
-
*/const
|
|
26
|
+
*/const po=M("align-justify",[["path",{d:"M3 12h18",key:"1i2n21"}],["path",{d:"M3 18h18",key:"1h113x"}],["path",{d:"M3 6h18",key:"d0wm0j"}]]);/**
|
|
27
27
|
* @license lucide-react v0.542.0 - ISC
|
|
28
28
|
*
|
|
29
29
|
* This source code is licensed under the ISC license.
|
|
30
30
|
* See the LICENSE file in the root directory of this source tree.
|
|
31
|
-
*/const
|
|
31
|
+
*/const mo=M("arrow-down-up",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"m21 8-4-4-4 4",key:"1c9v7m"}],["path",{d:"M17 4v16",key:"7dpous"}]]);/**
|
|
32
32
|
* @license lucide-react v0.542.0 - ISC
|
|
33
33
|
*
|
|
34
34
|
* This source code is licensed under the ISC license.
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
*
|
|
39
39
|
* This source code is licensed under the ISC license.
|
|
40
40
|
* See the LICENSE file in the root directory of this source tree.
|
|
41
|
-
*/const
|
|
41
|
+
*/const Co=M("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);/**
|
|
42
42
|
* @license lucide-react v0.542.0 - ISC
|
|
43
43
|
*
|
|
44
44
|
* This source code is licensed under the ISC license.
|
|
@@ -58,47 +58,47 @@
|
|
|
58
58
|
*
|
|
59
59
|
* This source code is licensed under the ISC license.
|
|
60
60
|
* See the LICENSE file in the root directory of this source tree.
|
|
61
|
-
*/const
|
|
61
|
+
*/const Vo=M("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/**
|
|
62
62
|
* @license lucide-react v0.542.0 - ISC
|
|
63
63
|
*
|
|
64
64
|
* This source code is licensed under the ISC license.
|
|
65
65
|
* See the LICENSE file in the root directory of this source tree.
|
|
66
|
-
*/const
|
|
66
|
+
*/const yo=M("circle-dot",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]);/**
|
|
67
67
|
* @license lucide-react v0.542.0 - ISC
|
|
68
68
|
*
|
|
69
69
|
* This source code is licensed under the ISC license.
|
|
70
70
|
* See the LICENSE file in the root directory of this source tree.
|
|
71
|
-
*/const
|
|
71
|
+
*/const vo=M("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/**
|
|
72
72
|
* @license lucide-react v0.542.0 - ISC
|
|
73
73
|
*
|
|
74
74
|
* This source code is licensed under the ISC license.
|
|
75
75
|
* See the LICENSE file in the root directory of this source tree.
|
|
76
|
-
*/const
|
|
76
|
+
*/const So=M("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/**
|
|
77
77
|
* @license lucide-react v0.542.0 - ISC
|
|
78
78
|
*
|
|
79
79
|
* This source code is licensed under the ISC license.
|
|
80
80
|
* See the LICENSE file in the root directory of this source tree.
|
|
81
|
-
*/const
|
|
81
|
+
*/const Xn=M("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/**
|
|
82
82
|
* @license lucide-react v0.542.0 - ISC
|
|
83
83
|
*
|
|
84
84
|
* This source code is licensed under the ISC license.
|
|
85
85
|
* See the LICENSE file in the root directory of this source tree.
|
|
86
|
-
*/const
|
|
86
|
+
*/const Kn=M("clipboard-copy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]);/**
|
|
87
87
|
* @license lucide-react v0.542.0 - ISC
|
|
88
88
|
*
|
|
89
89
|
* This source code is licensed under the ISC license.
|
|
90
90
|
* See the LICENSE file in the root directory of this source tree.
|
|
91
|
-
*/const
|
|
91
|
+
*/const zo=M("clipboard-list",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]);/**
|
|
92
92
|
* @license lucide-react v0.542.0 - ISC
|
|
93
93
|
*
|
|
94
94
|
* This source code is licensed under the ISC license.
|
|
95
95
|
* See the LICENSE file in the root directory of this source tree.
|
|
96
|
-
*/const
|
|
96
|
+
*/const Yn=M("clipboard-paste",[["path",{d:"M11 14h10",key:"1w8e9d"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v1.344",key:"1e62lh"}],["path",{d:"m17 18 4-4-4-4",key:"z2g111"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113",key:"bjbb7m"}],["rect",{x:"8",y:"2",width:"8",height:"4",rx:"1",key:"ublpy"}]]);/**
|
|
97
97
|
* @license lucide-react v0.542.0 - ISC
|
|
98
98
|
*
|
|
99
99
|
* This source code is licensed under the ISC license.
|
|
100
100
|
* See the LICENSE file in the root directory of this source tree.
|
|
101
|
-
*/const
|
|
101
|
+
*/const wo=M("copy-check",[["path",{d:"m12 15 2 2 4-4",key:"2c609p"}],["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/**
|
|
102
102
|
* @license lucide-react v0.542.0 - ISC
|
|
103
103
|
*
|
|
104
104
|
* This source code is licensed under the ISC license.
|
|
@@ -108,67 +108,67 @@
|
|
|
108
108
|
*
|
|
109
109
|
* This source code is licensed under the ISC license.
|
|
110
110
|
* See the LICENSE file in the root directory of this source tree.
|
|
111
|
-
*/const
|
|
111
|
+
*/const Zn=M("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);/**
|
|
112
112
|
* @license lucide-react v0.542.0 - ISC
|
|
113
113
|
*
|
|
114
114
|
* This source code is licensed under the ISC license.
|
|
115
115
|
* See the LICENSE file in the root directory of this source tree.
|
|
116
|
-
*/const
|
|
116
|
+
*/const Qn=M("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);/**
|
|
117
117
|
* @license lucide-react v0.542.0 - ISC
|
|
118
118
|
*
|
|
119
119
|
* This source code is licensed under the ISC license.
|
|
120
120
|
* See the LICENSE file in the root directory of this source tree.
|
|
121
|
-
*/const
|
|
121
|
+
*/const Fo=M("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);/**
|
|
122
122
|
* @license lucide-react v0.542.0 - ISC
|
|
123
123
|
*
|
|
124
124
|
* This source code is licensed under the ISC license.
|
|
125
125
|
* See the LICENSE file in the root directory of this source tree.
|
|
126
|
-
*/const
|
|
126
|
+
*/const bo=M("file",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}]]);/**
|
|
127
127
|
* @license lucide-react v0.542.0 - ISC
|
|
128
128
|
*
|
|
129
129
|
* This source code is licensed under the ISC license.
|
|
130
130
|
* See the LICENSE file in the root directory of this source tree.
|
|
131
|
-
*/const
|
|
131
|
+
*/const No=M("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/**
|
|
132
132
|
* @license lucide-react v0.542.0 - ISC
|
|
133
133
|
*
|
|
134
134
|
* This source code is licensed under the ISC license.
|
|
135
135
|
* See the LICENSE file in the root directory of this source tree.
|
|
136
|
-
*/const
|
|
136
|
+
*/const Mo=M("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);/**
|
|
137
137
|
* @license lucide-react v0.542.0 - ISC
|
|
138
138
|
*
|
|
139
139
|
* This source code is licensed under the ISC license.
|
|
140
140
|
* See the LICENSE file in the root directory of this source tree.
|
|
141
|
-
*/const
|
|
141
|
+
*/const Rn=M("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);/**
|
|
142
142
|
* @license lucide-react v0.542.0 - ISC
|
|
143
143
|
*
|
|
144
144
|
* This source code is licensed under the ISC license.
|
|
145
145
|
* See the LICENSE file in the root directory of this source tree.
|
|
146
|
-
*/const
|
|
146
|
+
*/const et=M("layout-panel-top",[["rect",{width:"18",height:"7",x:"3",y:"3",rx:"1",key:"f1a2em"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}]]);/**
|
|
147
147
|
* @license lucide-react v0.542.0 - ISC
|
|
148
148
|
*
|
|
149
149
|
* This source code is licensed under the ISC license.
|
|
150
150
|
* See the LICENSE file in the root directory of this source tree.
|
|
151
|
-
*/const
|
|
151
|
+
*/const xo=M("link",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]);/**
|
|
152
152
|
* @license lucide-react v0.542.0 - ISC
|
|
153
153
|
*
|
|
154
154
|
* This source code is licensed under the ISC license.
|
|
155
155
|
* See the LICENSE file in the root directory of this source tree.
|
|
156
|
-
*/const
|
|
156
|
+
*/const Io=M("list-checks",[["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]]);/**
|
|
157
157
|
* @license lucide-react v0.542.0 - ISC
|
|
158
158
|
*
|
|
159
159
|
* This source code is licensed under the ISC license.
|
|
160
160
|
* See the LICENSE file in the root directory of this source tree.
|
|
161
|
-
*/const
|
|
161
|
+
*/const qo=M("list-todo",[["rect",{x:"3",y:"5",width:"6",height:"6",rx:"1",key:"1defrl"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]]);/**
|
|
162
162
|
* @license lucide-react v0.542.0 - ISC
|
|
163
163
|
*
|
|
164
164
|
* This source code is licensed under the ISC license.
|
|
165
165
|
* See the LICENSE file in the root directory of this source tree.
|
|
166
|
-
*/const
|
|
166
|
+
*/const Oo=M("list",[["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 18h.01",key:"1tta3j"}],["path",{d:"M3 6h.01",key:"1rqtza"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 18h13",key:"1lx6n3"}],["path",{d:"M8 6h13",key:"ik3vkj"}]]);/**
|
|
167
167
|
* @license lucide-react v0.542.0 - ISC
|
|
168
168
|
*
|
|
169
169
|
* This source code is licensed under the ISC license.
|
|
170
170
|
* See the LICENSE file in the root directory of this source tree.
|
|
171
|
-
*/const
|
|
171
|
+
*/const _o=M("maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);/**
|
|
172
172
|
* @license lucide-react v0.542.0 - ISC
|
|
173
173
|
*
|
|
174
174
|
* This source code is licensed under the ISC license.
|
|
@@ -178,12 +178,12 @@
|
|
|
178
178
|
*
|
|
179
179
|
* This source code is licensed under the ISC license.
|
|
180
180
|
* See the LICENSE file in the root directory of this source tree.
|
|
181
|
-
*/const
|
|
181
|
+
*/const it=M("move-down",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);/**
|
|
182
182
|
* @license lucide-react v0.542.0 - ISC
|
|
183
183
|
*
|
|
184
184
|
* This source code is licensed under the ISC license.
|
|
185
185
|
* See the LICENSE file in the root directory of this source tree.
|
|
186
|
-
*/const
|
|
186
|
+
*/const nt=M("move-up",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);/**
|
|
187
187
|
* @license lucide-react v0.542.0 - ISC
|
|
188
188
|
*
|
|
189
189
|
* This source code is licensed under the ISC license.
|
|
@@ -193,42 +193,42 @@
|
|
|
193
193
|
*
|
|
194
194
|
* This source code is licensed under the ISC license.
|
|
195
195
|
* See the LICENSE file in the root directory of this source tree.
|
|
196
|
-
*/const
|
|
196
|
+
*/const To=M("rectangle-ellipsis",[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"2",key:"9lu3g6"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M17 12h.01",key:"1m0b6t"}],["path",{d:"M7 12h.01",key:"eqddd0"}]]);/**
|
|
197
197
|
* @license lucide-react v0.542.0 - ISC
|
|
198
198
|
*
|
|
199
199
|
* This source code is licensed under the ISC license.
|
|
200
200
|
* See the LICENSE file in the root directory of this source tree.
|
|
201
|
-
*/const
|
|
201
|
+
*/const Lo=M("scan",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}]]);/**
|
|
202
202
|
* @license lucide-react v0.542.0 - ISC
|
|
203
203
|
*
|
|
204
204
|
* This source code is licensed under the ISC license.
|
|
205
205
|
* See the LICENSE file in the root directory of this source tree.
|
|
206
|
-
*/const
|
|
206
|
+
*/const Bo=M("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/**
|
|
207
207
|
* @license lucide-react v0.542.0 - ISC
|
|
208
208
|
*
|
|
209
209
|
* This source code is licensed under the ISC license.
|
|
210
210
|
* See the LICENSE file in the root directory of this source tree.
|
|
211
|
-
*/const
|
|
211
|
+
*/const Ao=M("square-check",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/**
|
|
212
212
|
* @license lucide-react v0.542.0 - ISC
|
|
213
213
|
*
|
|
214
214
|
* This source code is licensed under the ISC license.
|
|
215
215
|
* See the LICENSE file in the root directory of this source tree.
|
|
216
|
-
*/const
|
|
216
|
+
*/const Eo=M("square-dashed",[["path",{d:"M5 3a2 2 0 0 0-2 2",key:"y57alp"}],["path",{d:"M19 3a2 2 0 0 1 2 2",key:"18rm91"}],["path",{d:"M21 19a2 2 0 0 1-2 2",key:"1j7049"}],["path",{d:"M5 21a2 2 0 0 1-2-2",key:"sbafld"}],["path",{d:"M9 3h1",key:"1yesri"}],["path",{d:"M9 21h1",key:"15o7lz"}],["path",{d:"M14 3h1",key:"1ec4yj"}],["path",{d:"M14 21h1",key:"v9vybs"}],["path",{d:"M3 9v1",key:"1r0deq"}],["path",{d:"M21 9v1",key:"mxsmne"}],["path",{d:"M3 14v1",key:"vnatye"}],["path",{d:"M21 14v1",key:"169vum"}]]);/**
|
|
217
217
|
* @license lucide-react v0.542.0 - ISC
|
|
218
218
|
*
|
|
219
219
|
* This source code is licensed under the ISC license.
|
|
220
220
|
* See the LICENSE file in the root directory of this source tree.
|
|
221
|
-
*/const
|
|
221
|
+
*/const tt=M("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);/**
|
|
222
222
|
* @license lucide-react v0.542.0 - ISC
|
|
223
223
|
*
|
|
224
224
|
* This source code is licensed under the ISC license.
|
|
225
225
|
* See the LICENSE file in the root directory of this source tree.
|
|
226
|
-
*/const
|
|
226
|
+
*/const $o=M("text-cursor-input",[["path",{d:"M12 20h-1a2 2 0 0 1-2-2 2 2 0 0 1-2 2H6",key:"1528k5"}],["path",{d:"M13 8h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7",key:"13ksps"}],["path",{d:"M5 16H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1",key:"1n9rhb"}],["path",{d:"M6 4h1a2 2 0 0 1 2 2 2 2 0 0 1 2-2h1",key:"1mj8rg"}],["path",{d:"M9 6v12",key:"velyjx"}]]);/**
|
|
227
227
|
* @license lucide-react v0.542.0 - ISC
|
|
228
228
|
*
|
|
229
229
|
* This source code is licensed under the ISC license.
|
|
230
230
|
* See the LICENSE file in the root directory of this source tree.
|
|
231
|
-
*/const
|
|
231
|
+
*/const Do=M("timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]]);/**
|
|
232
232
|
* @license lucide-react v0.542.0 - ISC
|
|
233
233
|
*
|
|
234
234
|
* This source code is licensed under the ISC license.
|
|
@@ -243,9 +243,9 @@
|
|
|
243
243
|
*
|
|
244
244
|
* This source code is licensed under the ISC license.
|
|
245
245
|
* See the LICENSE file in the root directory of this source tree.
|
|
246
|
-
*/const
|
|
246
|
+
*/const Po=M("video",[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]]);/**
|
|
247
247
|
* @license lucide-react v0.542.0 - ISC
|
|
248
248
|
*
|
|
249
249
|
* This source code is licensed under the ISC license.
|
|
250
250
|
* See the LICENSE file in the root directory of this source tree.
|
|
251
|
-
*/const re=M("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),$i=d.memo(i=>{const{ref:n,file:e,className:r,error:o,rightSlot:s,size:l,...f}=i,c=()=>o?t.jsxs(t.Fragment,{children:[t.jsx(a.LuIcon,{icon:Bi,color:"var(--base-a11)"}),t.jsx(a.Text,{accentColor:"base",className:"truncate",size:l,children:o})]}):e?t.jsxs(t.Fragment,{children:[t.jsx(a.LuIcon,{icon:Fo,color:"var(--base-a11)"}),t.jsx(a.Text,{className:"truncate",size:l,children:e.name})]}):t.jsx(t.Fragment,{children:t.jsx("div",{className:"flex w-full justify-center",children:t.jsx(a.Spinner,{size:l})})});return t.jsxs(a.Card,{className:R.cx(r,"flex w-full items-center gap-2"),ref:n,size:"xs",...f,children:[c(),s]})});$i.displayName="FileCard";function $e(i){return Array.isArray(i)?i.every(n=>typeof n=="string"):!1}class De{constructor(){C(this,"observers",new Set)}notify(n){for(const e of this.observers)e(n)}observe(n){return this.observers.add(n),()=>{this.observers.delete(n)}}}class Di extends De{constructor(e){const{identifier:r}=e;super();C(this,"identifier");this.identifier=r}getOptions(){return{identifier:this.identifier}}setOptions(e){this.identifier=e.identifier??this.identifier,this.notify(this)}serialize(){return{type:this.type,identifier:this.identifier}}}class k extends Di{constructor(e){const{label:r,description:o=null,required:s,image:l,...f}=e;super(f);C(this,"label");C(this,"description");C(this,"required");C(this,"image");this.label=r,this.description=o,this.required=s,this.image=l}getError(e){if(!(!this.required&&this.isValueBlank(e))){if(this.required&&this.isValueBlank(e))return"This field is required.";for(const r of this.getFieldValidators()){const o=r(e);if(o)return o}}}serialize(){return{...super.serialize(),label:this.label,description:this.description,required:this.required,image:this.image}}getOptions(){return{...super.getOptions(),label:this.label,description:this.description,required:this.required,image:this.image}}setOptions(e){const{label:r,description:o=null,required:s,image:l,...f}=e;this.label=r??this.label,this.description=o??this.description,this.required=s??this.required,this.image=l??this.image,super.setOptions(f)}isValueBlank(e){return this.areValuesEqual(e,this.blankValue())}cleanValue(e){return e}isValueClean(e){return this.areValuesEqual(e,this.cleanValue(e))}cleanSerializedValue(e){return e}isSerializedValueClean(e){return this.areSerializedValuesEqual(e,this.cleanSerializedValue(e))}isSerializedValueBlank(e){return this.areSerializedValuesEqual(e,this.blankSerializedValue())}getFieldValidators(){return[]}}const B=d.createContext({}),Pi=i=>{const[n,e]=d.useState(null);return d.useLayoutEffect(()=>{const r=URL.createObjectURL(i);return e(r),()=>{URL.revokeObjectURL(r)}},[i]),n},Me=d.memo(i=>{const{file:n,...e}=i,r=Pi(n);return t.jsx("img",{src:r??void 0,alt:n.name,...e})});Me.displayName="ImageFile";const tt=d.createContext(()=>{throw new Error("No ImageViewerProvider found")}),hi=()=>d.useContext(tt),ji=d.memo(i=>{const{file:n,onClose:e}=i,r=d.useCallback(()=>{Un.saveAs(n,n.name)},[n]);return t.jsx(a.Overlay.Root,{open:!0,onOpenChange:e,children:t.jsxs(a.Overlay.Content,{onOpenAutoFocus:a.preventDefault,children:[t.jsxs(a.ButtonGroup,{className:"absolute right-0 top-0 flex items-center gap-2 p-2",accentColor:"base",variant:"ghost",children:[t.jsxs(a.Tooltip.Root,{children:[t.jsx(a.Tooltip.Trigger,{asChild:!0,children:t.jsx(a.IconButton,{onClick:r,"aria-label":"download",children:t.jsx(a.LuIcon,{icon:Yn})})}),t.jsx(a.Tooltip.Content,{size:"sm",children:"Download"})]}),t.jsx(a.Separator,{orientation:"vertical",size:"sm"}),t.jsx(a.Overlay.Close,{asChild:!0,children:t.jsx(a.IconButton,{onClick:e,"aria-label":"close",children:t.jsx(a.LuIcon,{icon:re})})})]}),t.jsx("figure",{className:"flex size-full items-center justify-center overflow-hidden p-4",children:t.jsx(Me,{className:"max-h-full max-w-full",file:n})})]})})});ji.displayName="ImageViewer";const rt=d.memo(i=>{const{children:n}=i,[e,r]=d.useState(null),o=d.useCallback(()=>{r(null)},[]),s=d.useCallback(f=>{r(f(o))},[o]),l=d.useCallback(()=>{e&&(e.onClose&&e.onClose(),o())},[o,e]);return t.jsxs(tt.Provider,{value:s,children:[n,e&&t.jsx(ji,{file:e.file,onClose:l})]})});rt.displayName="FileViewerProvider";const A=d.memo(i=>{const{label:n,error:e,description:r,required:o,children:s,inputId:l,image:f,size:c}=i,[h,p]=d.useState(void 0),g=hi();d.useEffect(()=>{f instanceof Promise?f.then(p).catch(console.error):p(f)},[f]);const m=d.useCallback(()=>{h&&g(()=>({file:h}))},[g,h]),V=o?`${n} *`:n;return t.jsxs("div",{className:"flex flex-col gap-1",children:[h&&t.jsx(Me,{className:"h-[100px] w-full min-w-[300px] cursor-pointer rounded-md object-cover",file:h,onClick:m}),(!!n||!!r)&&t.jsxs("div",{className:"flex flex-col",children:[t.jsx("label",{className:"w-max max-w-full",htmlFor:l,children:t.jsx(a.Text,{size:c,className:"text-wrap",children:V})}),!!r&&t.jsx(a.Text,{accentColor:"base",size:c,children:r})]}),s,!!e&&t.jsx(a.Text,{accentColor:"danger",size:c,children:e})]})});A.displayName="InputWithLabel";const ot=i=>i.map(n=>t.jsx(d.Fragment,{children:n.render()},n.identifier)),fi=i=>i.map(n=>t.jsx(d.Fragment,{children:n.render()},n.identifier)),D=i=>{const{field:n}=i,{field:{value:e,name:r,onChange:o,onBlur:s,disabled:l},fieldState:{isTouched:f,error:c}}=Y.useController({name:n.identifier});return{value:e,name:r,disabled:l,isTouched:f,error:(c==null?void 0:c.message)??"",onChange:o,onBlur:s}},Ui=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),[h,p]=d.useState(""),[g,m]=d.useState(""),V=d.useCallback(z=>{l(z),s()},[l,s]),F=d.useCallback(z=>{r&&r.findIndex(b=>b===z.target.value.trim())>=0?m("All options must be unique"):z.target.value?m(""):m("Option cannot be empty"),p(z.target.value)},[p,r]),w=d.useCallback(()=>{if(g)return;if(!h.trim()){m("Option cannot be empty");return}const z=h.trim();V([...r,z]),p("")},[h,g,V,r]),S=d.useCallback(z=>{z.key==="Enter"&&(z.preventDefault(),w())},[w]),v=d.useCallback(z=>{const b=Array.from(r);b.splice(z,1),V(b)},[r,V]),I=d.useCallback(z=>{if(!z.destination)return;const b=z.source.index,L=z.destination.index,G=Array.from(r),[ie]=G.splice(b,1);G.splice(L,0,ie),V(G)},[V,r]),q=d.useCallback(()=>{s()},[s]);return t.jsx(Li.DragDropContext,{onDragEnd:I,children:t.jsxs(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:g||f,image:n.image,children:[(!c||r.length===0)&&t.jsxs("div",{className:"flex gap-2",children:[t.jsx(a.Input.Root,{className:"grow",accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{value:h,onChange:F,onKeyDown:S,id:n.identifier,placeholder:n.placeholder,onBlur:q,name:o,disabled:c})}),t.jsx(a.IconButton,{size:e,accentColor:"base",variant:"soft",type:"button","aria-label":"Add option",disabled:!!g||c,onClick:w,children:t.jsx(a.LuIcon,{icon:Z})})]}),r.length!==0&&t.jsx(Li.Droppable,{droppableId:`${n.identifier}-droppable`,children:z=>t.jsxs("div",{className:"flex flex-col gap-1",...z.droppableProps,ref:z.innerRef,children:[r.map((b,L)=>t.jsx(Li.Draggable,{draggableId:`${b}-draggable`,index:L,isDragDisabled:c,children:({draggableProps:G,dragHandleProps:ie,innerRef:ce})=>t.jsxs(a.Badge,{...ie,...G,ref:ce,className:"flex items-center justify-between gap-2",accentColor:"base",size:e,variant:"soft",children:[t.jsx(a.Text,{className:"truncate",highContrast:!0,children:typeof b=="object"&&"label"in b?b.label:b}),t.jsx(a.IconButton,{className:"bg-transparent!",size:e,variant:"ghost",type:"button","aria-label":"Delete option",accentColor:"base",disabled:c,onClick:()=>{v(L)},children:t.jsx(a.LuIcon,{icon:re})})]})},`${n.identifier}-${b}-${L}`)),z.placeholder]})})]})})});Ui.displayName="MultiStringFieldInput";class he extends k{constructor(e){const{minimum_length:r,maximum_length:o,placeholder:s,...l}=e;super(l);C(this,"type","multi-string");C(this,"minLength");C(this,"maxLength");C(this,"placeholder");this.minLength=r??0,this.maxLength=o??1/0,this.placeholder=s??"Press enter to add a new option"}render(){return t.jsx(Ui,{field:this})}serialize(){return{...super.serialize(),minimum_length:this.minLength,maximum_length:this.maxLength,placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),minimum_length:this.minLength,maximum_length:this.maxLength,placeholder:this.placeholder}}duplicate(e){return new he({...this.getOptions(),identifier:e})}setOptions(e){const{minimum_length:r,maximum_length:o,placeholder:s,...l}=e;this.minLength=r??this.minLength,this.maxLength=o??this.maxLength,this.placeholder=s??this.placeholder,super.setOptions(l)}serializeValue(e){return e}deserializeValue(e){return e}getFieldValidators(){const e=super.getFieldValidators();return e.push(r=>{if(r.length<this.minLength)return`Must have at least ${this.minLength} options.`}),e.push(r=>{if(r.length>this.maxLength)return`Must have at most ${this.maxLength} options.`}),e}static deserialize(e){return new he(e)}isSerializedValue(e){return $e(e)}isValue(e){return $e(e)}blankValue(){return[]}areValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}}class Pe extends k{constructor(e){const{options:r,...o}=e;super(o);C(this,"options");this.options=r.map(s=>(typeof s=="string"&&(s={label:s,value:s}),s))}serialize(){return{...super.serialize(),options:this.options}}getOptions(){return{...super.getOptions(),options:this.options}}setOptions(e){const{options:r,...o}=e;this.options=(r==null?void 0:r.map(s=>(typeof s=="string"&&(s={label:s,value:s}),s)))??this.options,super.setOptions(o)}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new he({label:"Options",description:"List possible options for the user to select from.",required:!0,identifier:`${r}options`,minimum_length:2}),showDirectly:!0}]}}const Gi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(!!g),s()},[s,l]),p=d.useCallback(()=>{s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,error:f,image:n.image,required:n.required,children:t.jsx(a.Checkbox.Root,{id:n.identifier,name:o,checked:r??!1,onCheckedChange:h,onBlur:p,size:e,accentColor:"base",variant:"surface",disabled:c,children:t.jsx(a.Checkbox.Indicator,{children:t.jsx(a.LuIcon,{icon:W})})})})});Gi.displayName="BooleanFieldInput";class fe extends k{constructor(e){super(e);C(this,"type","boolean")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}setOptions(e){super.setOptions(e)}duplicate(e){return new fe({...this.getOptions(),identifier:e})}static deserialize(e){return new fe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Gi,{field:this})}isSerializedValue(e){return typeof e=="boolean"}isValue(e){return typeof e=="boolean"}blankValue(){return!1}blankSerializedValue(){return!1}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return e===r}}const ki=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{const V=m.target.valueAsNumber,F=isNaN(V)?null:V;l(F)},[l]),p=d.useCallback(()=>{s()},[s]),g=d.useCallback(m=>{m.key==="Enter"&&m.preventDefault()},[]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.Input.Root,{accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{id:n.identifier,name:o,onChange:h,onBlur:p,value:r??"",type:"number",min:n.minimum,max:n.maximum,step:n.integers?1:"any",placeholder:n.placeholder??"Enter a number",disabled:c,onKeyDown:g})})})});ki.displayName="NumberFieldInput";class H extends k{constructor(e){const{minimum:r=Number.MIN_SAFE_INTEGER,maximum:o=Number.MAX_SAFE_INTEGER,integers:s=!1,placeholder:l,...f}=e;super(f);C(this,"type","number");C(this,"minimum");C(this,"maximum");C(this,"integers");C(this,"placeholder");this.minimum=r,this.maximum=o,this.integers=s,this.placeholder=l}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Minimum",description:"Minimum value",integers:!0,required:!1,identifier:`${r}minimum`}),showDirectly:!1},{field:new H({label:"Maximum",description:"Maximum value",integers:!0,required:!1,identifier:`${r}maximum`}),showDirectly:!1},{field:new fe({label:"Integers",description:"Whole numbers only",required:!1,identifier:`${r}integers`}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.minimum,o=this.maximum;return typeof r=="number"&&e.push(s=>{if(typeof s=="number"&&s<r)return`Must be at least ${this.minimum}.`}),typeof o=="number"&&e.push(s=>{if(typeof s=="number"&&s>o)return`Must be at most ${this.maximum}.`}),this.integers&&e.push(s=>{if(typeof s=="number"&&!Number.isInteger(s))return"Must be a whole number."}),e}serialize(){return{...super.serialize(),minimum:this.minimum,maximum:this.maximum,integers:this.integers,placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),minimum:this.minimum,maximum:this.maximum,integers:this.integers,placeholder:this.placeholder}}duplicate(e){return new H({...this.getOptions(),identifier:e})}setOptions(e){const{minimum:r,maximum:o,integers:s,placeholder:l,...f}=e;this.minimum=r??this.minimum,this.maximum=o??this.maximum,this.integers=s??this.integers,this.placeholder=l??this.placeholder,super.setOptions(f)}static deserialize(e){return new H(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(ki,{field:this})}isSerializedValue(e){return this.isValue(e)}isValue(e){return typeof e=="number"&&!isNaN(e)||e===null}areValuesEqual(e,r){return e===r}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const je=1e4;class Hi extends k{constructor(e){const{minLength:r,maxLength:o,placeholder:s="",...l}=e;super(l);C(this,"minLength");C(this,"maxLength");C(this,"placeholder");this.minLength=r?Math.max(r,0):void 0,this.maxLength=o?Math.max(o,0):je,this.placeholder=s}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Minimum length",description:"Minimum number of characters",required:!1,identifier:`${r}minimum_length`,minimum:0,maximum:100,integers:!0}),showDirectly:!1},{field:new H({label:"Maximum length",description:"Maximum number of characters",required:!1,identifier:`${r}maximum_length`,minimum:1,maximum:je,integers:!0}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators();return this.minLength&&e.push(r=>{if(this.minLength&&(!r||r.length<this.minLength))return!this.required&&!r?void 0:`Minimum ${this.minLength} character(s).`}),this.maxLength&&e.push(r=>{if(typeof r=="string"&&this.maxLength&&r.length>this.maxLength)return`Maximum ${this.maxLength} character(s).`}),e}serialize(){return{...super.serialize(),minimum_length:this.minLength,maximum_length:this.maxLength,placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),minLength:this.minLength,maxLength:this.maxLength,placeholder:this.placeholder}}setOptions(e){const{minLength:r,maxLength:o,placeholder:s,...l}=e;this.minLength=r,this.maxLength=o??this.maxLength,this.placeholder=s,super.setOptions(l)}serializeValue(e){return e}deserializeValue(e){return e}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}blankSerializedValue(){return""}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return e===r}}const Ji=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g),s()},[s,l]),p=d.useCallback(()=>{s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.CheckboxGroup.Root,{id:n.identifier,name:o,className:"flex flex-col gap-1",accentColor:"base",variant:"surface",size:e,values:r,onValuesChange:h,disabled:c,children:n.options.map((g,m)=>t.jsxs("label",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(a.CheckboxGroup.Item,{value:g.value,onBlur:p,children:t.jsx(a.CheckboxGroup.ItemIndicator,{children:t.jsx(a.LuIcon,{icon:W})})}),t.jsx(a.Text,{size:e,accentColor:"base",className:"truncate",children:g.label})]},`${n.identifier}-${g.value}-${m}`))})})});Ji.displayName="CheckboxListFieldInput";class pe extends Pe{constructor(e){super(e);C(this,"type","checkbox-list")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new pe({...this.getOptions(),identifier:e})}static deserialize(e){return new pe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Ji,{field:this})}isSerializedValue(e){if(!$e(e))return!1;const r=new Set(this.options.map(({value:o})=>o));return e.every(o=>r.has(o))}isValue(e){return this.isSerializedValue(e)}blankValue(){return[]}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}areValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}}const Wi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),[h,p]=d.useState(!1),g=d.useCallback(V=>{l(V??null),s(),p(!1)},[l,s]),m=d.useCallback(V=>{p(V),V||s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.Popover.Root,{open:h,onOpenChange:m,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:t.jsxs(a.Button,{id:n.identifier,name:o,type:"button",className:"!justify-between",accentColor:"base",variant:"surface",size:e,disabled:c,children:[t.jsx(a.Text,{className:"truncate",highContrast:!!r,children:r?r.toLocaleString(void 0,{year:"numeric",month:"2-digit",day:"2-digit"}):"yyyy-mm-dd"}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Popover.Content,{align:"start",size:e,children:t.jsx(a.DayPicker,{size:e,required:!1,mode:"single",variant:"solid",selected:r??void 0,onSelect:g})})]})})});Wi.displayName="DateFieldInput";class xe extends k{constructor(e){super(e);C(this,"type","date")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new xe({...this.getOptions(),identifier:e})}static deserialize(e){return new xe(e)}setOptions(e){super.setOptions(e)}serializeValue(e){return e?e.toISOString():null}deserializeValue(e){return e?new Date(e):null}render(){return t.jsx(Wi,{field:this})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:this.isValue(this.deserializeValue(e))}isValue(e){return!(!(e instanceof Date)&&e!==null||e instanceof Date&&isNaN(e.getTime()))}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return!e&&!r?!0:!e||!r?!1:e.getTime()===r.getTime()}}var O=(i=>(i.Text="text",i.Selection="selection",i.Numeric="numeric",i.Temporal="temporal",i.Capture="capture",i.Assessment="assessment",i.Verification="verification",i))(O||{});const Xi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g),s()},[s,l]),p=d.useCallback(g=>{g||s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.Menu.Root,{onOpenChange:p,align:"start",children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsxs(a.Button,{id:n.identifier,name:o,className:"!justify-between",variant:"surface",type:"button",size:e,accentColor:"base",disabled:c,children:[t.jsx(a.Text,{className:"truncate",highContrast:r&&r.length>0,children:r&&r.length>0?r.join(", "):n.placeholder??"Select one or more..."}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Menu.Content,{size:e,children:t.jsx(a.Menu.Scroll,{children:t.jsxs(a.Menu.MultiSelectGroup,{values:r,onValuesChange:h,children:[t.jsxs(a.Menu.SelectAllItem,{children:[t.jsx(a.Menu.CheckboxItemIndicator,{children:g=>g?t.jsx(a.LuIcon,{icon:ui}):t.jsx(a.LuIcon,{icon:W})}),"Select all"]}),n.options.map((g,m)=>t.jsxs(a.Menu.MultiSelectItem,{value:g.value,children:[t.jsx(a.Menu.SelectedIndicator,{children:t.jsx(a.LuIcon,{icon:W})}),g.label]},`${n.identifier}-${g.value}-${m}`))]})})})]})})});Xi.displayName="MultiSelectFieldInput";class te extends Pe{constructor(e){const{placeholder:r,...o}=e;super(o);C(this,"type","multi-select");C(this,"placeholder");this.placeholder=r}serialize(){return super.serialize()}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new te({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:r}=e;this.placeholder=r,super.setOptions(e)}static deserialize(e){return new te(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Xi,{field:this})}isSerializedValue(e){if(!$e(e))return!1;const r=new Set(this.options.map(({value:o})=>o));return e.every(o=>r.has(o))}isValue(e){return this.isSerializedValue(e)}blankValue(){return[]}areValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}}const Ki=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(m??null),s()},[s,l]),p=d.useCallback(m=>{m||s()},[s]),g=d.useMemo(()=>n.options.find(m=>m.value===r),[n.options,r]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.Menu.Root,{onOpenChange:p,align:"start",children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsxs(a.Button,{id:n.identifier,name:o,className:"!justify-between",accentColor:"base",variant:"surface",type:"button",size:e,disabled:c,children:[t.jsx(a.Text,{className:"truncate",highContrast:!!g,children:g?g.label:n.placeholder??"Select one..."}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Menu.Content,{size:e,children:t.jsx(a.Menu.Scroll,{children:t.jsx(a.Menu.SelectGroup,{required:!1,value:r??void 0,onValueChange:h,children:n.options.map((m,V)=>t.jsxs(a.Menu.SelectItem,{value:m.value,children:[t.jsx(a.Menu.SelectedIndicator,{children:t.jsx(a.LuIcon,{icon:W})}),m.label]},`${n.identifier}-${m.value}-${V}`))})})})]})})});Ki.displayName="SelectFieldInput";class oe extends Pe{constructor(e){const{placeholder:r,...o}=e;super(o);C(this,"type","select");C(this,"placeholder");this.placeholder=r}serialize(){return super.serialize()}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new oe({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:r}=e;this.placeholder=r,super.setOptions(e)}static deserialize(e){return new oe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Ki,{field:this})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:new Set([null,...this.options.map(({value:o})=>o)]).has(e)}isValue(e){return this.isSerializedValue(e)}blankValue(){return null}areValuesEqual(e,r){return e===r}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const Yi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(m)},[l]),p=d.useCallback(()=>{s()},[s]),g=d.useMemo(()=>Array.from({length:n.length},()=>N.v4()),[n.length]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.OneTimePasswordField.Root,{id:n.identifier,name:o,value:r,onValueChange:h,validationType:n.validationType,disabled:c,orientation:"horizontal",dir:"ltr",type:"text",autoComplete:"off",autoFocus:!1,autoSubmit:!1,className:"p-0.25 flex h-max w-full gap-1 overflow-x-auto",accentColor:"base",variant:"surface",size:e,onBlur:p,children:[g.map(m=>t.jsx(a.OneTimePasswordField.Input,{id:m},m)),t.jsx(a.OneTimePasswordField.HiddenInput,{})]})})});Yi.displayName="OTPFieldInput";class ge extends k{constructor(e){const{length:r,validationType:o,...s}=e;super(s);C(this,"type","otp");C(this,"length");C(this,"validationType");this.length=r,this.validationType=o}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Length",integers:!0,required:!1,minimum:1,maximum:16,identifier:`${r}length`}),showDirectly:!1},{field:new oe({label:"Type",required:!1,identifier:`${r}validationType`,options:[{value:"none",label:"Any"},{value:"numeric",label:"Numeric"},{value:"alpha",label:"Alpha"},{value:"alphanumeric",label:"Alphanumeric"}]}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.length;return e.push(o=>{if(o.length!=r)return`Must be ${r} characters.`}),e}serialize(){return{...super.serialize(),length:this.length,validationType:this.validationType}}getOptions(){return{...super.getOptions(),length:this.length,validationType:this.validationType}}duplicate(e){return new ge({...this.getOptions(),identifier:e})}setOptions(e){const{length:r,validationType:o,...s}=e;this.length=r??this.length,this.validationType=o??this.validationType,super.setOptions(s)}static deserialize(e){return new ge(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Yi,{field:this})}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}areValuesEqual(e,r){return e===r}blankSerializedValue(){return""}areSerializedValuesEqual(e,r){return e===r}}const me={pass:{label:"Pass",icon:Co},fail:{label:"Fail",icon:vo},na:{label:"N/A",icon:yo}},Ie=Object.keys(me);class ae extends File{constructor(e,...r){super(...r);C(this,"uuid");this.uuid=e}static from(e,r){return new ae(e,[r],r.name,{lastModified:r.lastModified,type:r.type})}}class Ce extends Promise{constructor(e,r){super(e);C(this,"_uuid");this._uuid=r}get uuid(){return this._uuid}set uuid(e){this._uuid=e}static from(e,r){return new Ce((o,s)=>{Promise.resolve(e).then(o).catch(s)},r)}then(e,r){const o=super.then(e,r);return o.uuid=this.uuid,o}catch(e){const r=super.catch(e);return r.uuid=this.uuid,r}finally(e){const r=super.finally(e);return r.uuid=this.uuid,r}}function at(i){return Array.isArray(i)?i.every(n=>n instanceof Ce||n instanceof ae):!1}function pi(i,n){const e=new Set(i.map(({uuid:o})=>o)),r=new Set(n.map(({uuid:o})=>o));return e.size===r.size&&e.isSubsetOf(r)}const Zi=d.memo(i=>{const{ref:n,file:e,error:r,rightSlot:o,className:s,size:l,...f}=i;return t.jsxs(a.Card,{className:R.cx(s,"p-0! relative flex h-48 w-full flex-col overflow-hidden"),ref:n,size:"xs",...f,children:[!e&&!r&&t.jsx("div",{className:"absolute inset-0 flex grow items-center justify-center",children:t.jsx(a.Spinner,{size:l})}),!!e&&!r&&t.jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center overflow-hidden p-3",children:t.jsx(Me,{className:"block size-full max-w-full object-cover",file:e})}),!!r&&t.jsx("div",{className:"grow"}),(!!e||!!r)&&t.jsxs(t.Fragment,{children:[t.jsx(a.Separator,{size:"full"}),t.jsxs("div",{className:"flex w-full shrink-0 items-center gap-2 self-end p-3",children:[r?t.jsx(a.LuIcon,{color:"var(--base-11)",icon:Bi}):e&&t.jsx(a.LuIcon,{color:"var(--base-11)",icon:Qn}),t.jsx(a.Text,{className:"truncate",size:l,children:r??(e==null?void 0:e.name)}),o]})]})]})});Zi.displayName="ImageCard";const Qi=d.memo(i=>{const{file:n,...e}=i,r=Pi(n);return t.jsx("video",{src:r??void 0,...e})});Qi.displayName="VideoFile";const Ri=d.memo(i=>{const{ref:n,file:e,className:r,error:o,rightSlot:s,size:l,...f}=i;return t.jsxs(a.Card,{className:R.cx(r,"p-0! relative flex h-48 w-full flex-col overflow-hidden"),ref:n,size:"xs",...f,children:[!e&&!o&&t.jsx("div",{className:"absolute inset-0 flex grow items-center justify-center",children:t.jsx(a.Spinner,{size:l})}),!!e&&!o&&t.jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center overflow-hidden p-3",children:t.jsx(Qi,{className:"block size-full max-w-full object-cover",file:e,controls:!0})}),!!o&&t.jsx("div",{className:"grow"}),(!!e||!!o)&&t.jsxs(t.Fragment,{children:[t.jsx(a.Separator,{size:"full"}),t.jsxs("div",{className:"flex w-full shrink-0 items-center gap-2 self-end p-3",children:[o?t.jsx(a.LuIcon,{color:"var(--danger-11)",icon:Bi}):e&&t.jsx(a.LuIcon,{color:"var(--base-11)",icon:Do}),t.jsx(a.Text,{className:"truncate",size:l,children:o??(e==null?void 0:e.name)}),s]})]})]})});Ri.displayName="VideoCard";const en=d.memo(i=>{const{fileOrPromise:n,onRemove:e,disabled:r,size:o}=i,[s,l]=d.useState(n instanceof Ce?null:n),[f,c]=d.useState(null),h=hi();no.useActiveEffect(v=>{if(c(null),!(n instanceof Ce)){l(n);return}l(null),n.then(I=>{v()&&l(I)}).catch(I=>{v()&&c(I instanceof Error?I.message:"Unknown error")})},[n]);const p=d.useCallback(()=>{if(!s)return;const v=new Blob([s]);Un.saveAs(v,s.name)},[s]),g=d.useCallback(()=>{e(n)},[e,n]),m=d.useCallback(()=>{if(!s)return;const v=URL.createObjectURL(s);window.open(v,"_blank"),URL.revokeObjectURL(v)},[s]),V=d.useCallback(()=>{s&&h(v=>({file:s,onDelete:r?void 0:()=>{g(),v()}}))},[r,g,h,s]),F=d.useMemo(()=>t.jsx("div",{className:"flex grow justify-end",children:t.jsxs(a.Menu.Root,{modal:!0,children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.IconButton,{onClick:a.stopPropagation,type:"button",variant:"ghost",accentColor:"base",size:o,children:t.jsx(a.LuIcon,{icon:Zn})})}),t.jsxs(a.Menu.Content,{size:o,children:[t.jsxs(a.Menu.Item,{onSelect:p,disabled:!s,children:[t.jsx(a.LuIcon,{icon:Yn})," Download"]}),r?null:t.jsxs(t.Fragment,{children:[t.jsx(a.Menu.Separator,{}),t.jsxs(a.Menu.Item,{onSelect:g,children:[t.jsx(a.LuIcon,{icon:ue})," Delete"]})]})]})]})}),[r,g,p,s,o]),w=!!(s!=null&&s.type.startsWith("image/")),S=!!(s!=null&&s.type.startsWith("video/"));return w?t.jsx(Zi,{className:"cursor-pointer",onClick:V,file:s,error:f??void 0,rightSlot:F,size:o}):S?t.jsx(Ri,{className:"cursor-pointer",onClick:V,file:s,error:f??void 0,rightSlot:F,size:o}):t.jsx($i,{className:"cursor-pointer",file:s,error:f??void 0,onClick:m,rightSlot:F,size:o})});en.displayName="DisplayFile";const nn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useRef(null),p=d.useCallback(z=>{const b=n.cleanValue({...r,status:z});l(b),s()},[n,s,l,r]),g=d.useCallback(z=>{const b=z.target.value,L={...r,notes:b};l(L)},[r,l]),m=d.useCallback(()=>{s()},[s]),V=d.useCallback(z=>{const b=r.files.filter(({uuid:L})=>L!==z.uuid);l({...r,files:b}),s()},[l,s,r]),F=d.useCallback(()=>{var z;(z=h.current)==null||z.click()},[]),w=d.useCallback(z=>{const b=Array.from(z.target.files??[]).map(G=>ae.from(N.v4(),G)),L={...r,files:[...r.files,...b]};l(L),s()},[s,l,r]);d.useEffect(()=>{if(!h.current)return;const z=new AbortController;return h.current.addEventListener("cancel",()=>{s()},{signal:z.signal}),()=>{z.abort()}},[s,r]);const S=r.status&&n.showNotesAndFilesOn.includes(r.status),v=`${n.identifier}-status`,I=`${n.identifier}-notes`,q=`${n.identifier}-files`;return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx(a.RadioGroup.Root,{id:v,className:"flex gap-2",name:o,value:r.status,disabled:c,accentColor:"base",variant:"surface",size:e,onValueChange:p,children:Ie.map(z=>{const{label:b}=me[z];return t.jsxs("label",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(a.RadioGroup.Item,{value:z,children:t.jsx(a.RadioGroup.Indicator,{children:t.jsx(a.LuIcon,{icon:Wn,className:"fill-current"})})}),t.jsx(a.Text,{size:e,accentColor:"base",className:"truncate",children:b})]},`${n.identifier}-${z}`)})}),S&&t.jsxs(t.Fragment,{children:[t.jsx("div",{children:t.jsx(a.TextArea,{id:I,value:r.notes??"",name:o,onChange:g,onBlur:m,className:"field-sizing-content min-h-12 w-full",placeholder:"Notes",resize:"vertical",accentColor:"base",variant:"surface",size:e,disabled:c})}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs(a.Button,{className:"w-max",size:e,variant:"surface",accentColor:"base",onClick:F,type:"button",disabled:c,children:[t.jsx(a.LuIcon,{icon:Ei}),"Select files"]}),t.jsx("input",{id:q,name:o,type:"file",ref:h,multiple:!0,className:"hidden",onChange:w,value:""}),r.files.length>0&&t.jsx("div",{className:"flex h-max flex-wrap gap-2",children:r.files.map(z=>t.jsx(en,{size:e,fileOrPromise:z,onRemove:V,disabled:c},z.uuid))})]})]})]})})});nn.displayName="PassFailFieldInput";const tn=i=>typeof i=="string"&&Ie.includes(i),st=i=>!(i===null||typeof i!="object"||!("status"in i)||!tn(i.status)||!("notes"in i)||typeof i.notes!="string"||!("files"in i)||!(Array.isArray(i.files)&&i.files.length===0)),lt=i=>!(i===null||typeof i!="object"||!("status"in i)||!tn(i.status)||!("notes"in i)||typeof i.notes!="string"||!("files"in i)||!at(i.files)),dt=i=>({status:i.status,notes:i.notes,files:[]}),ct=i=>({status:i.status,notes:i.notes,files:[]}),ut=(i,n)=>!(i.status!==n.status||i.notes!==n.notes||!pi(i.files,n.files)),ht=(i,n)=>!(i.status!==n.status||i.notes!==n.notes||i.files.length!==n.files.length);class Ve extends k{constructor(e){const{showNotesAndFilesOn:r,...o}=e;super(o);C(this,"type","pass-fail");C(this,"showNotesAndFilesOn");this.showNotesAndFilesOn=r}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new te({identifier:`${r}showNotesAndFilesOn`,label:"Show notes and files on",description:"Show the notes and files on desired statuses.",options:Ie.map(o=>{const{label:s}=me[o];return{value:o,label:s}}),required:!1}),showDirectly:!1}]}serialize(){return{...super.serialize(),showNotesAndFilesOn:this.showNotesAndFilesOn}}getOptions(){return{...super.getOptions(),showNotesAndFilesOn:this.showNotesAndFilesOn}}duplicate(e){return new Ve({...this.getOptions(),identifier:e})}setOptions(e){const{showNotesAndFilesOn:r,...o}=e;this.showNotesAndFilesOn=r??this.showNotesAndFilesOn,super.setOptions(o)}getFieldValidators(){const e=super.getFieldValidators(),r=this.showNotesAndFilesOn,o=this.blankValue();return r.length>0&&(e.push(s=>{if(!(!s.status||!r.includes(s.status))&&o.notes===s.notes)return"Notes is required."}),e.push(s=>{if(!(!s.status||!r.includes(s.status))&&pi(o.files,s.files))return"Files is required."})),e}static deserialize(e){return new Ve({...e,showNotesAndFilesOn:e.showNotesAndFilesOn??!1})}serializeValue(e){return dt(e)}deserializeValue(e){return ct(e)}render(){return t.jsx(nn,{field:this})}isSerializedValue(e){return st(e)}isValue(e){return lt(e)}areValuesEqual(e,r){return ut(e,r)}blankValue(){return{status:null,notes:"",files:[]}}cleanValue(e){return e.status&&this.showNotesAndFilesOn.includes(e.status)?e:{status:e.status,notes:"",files:[]}}cleanSerializedValue(e){return super.cleanSerializedValue(e)}blankSerializedValue(){return{status:null,notes:"",files:[]}}areSerializedValuesEqual(e,r){return ht(e,r)}}const rn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(m),s()},[s,l]),p=d.useCallback(()=>{s()},[s]),g=d.useCallback(()=>{l(null),s()},[s,l]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.RadioGroup.Root,{id:n.identifier,name:o,className:"flex flex-col gap-1",accentColor:"base",variant:"surface",size:e,value:r??"",onValueChange:h,disabled:c,children:[n.options.map((m,V)=>t.jsxs("label",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(a.RadioGroup.Item,{value:m.value,onBlur:p,children:t.jsx(a.RadioGroup.Indicator,{children:t.jsx(a.LuIcon,{icon:Wn,className:"fill-current"})})}),t.jsx(a.Text,{size:e,accentColor:"base",className:"truncate",children:m.label})]},`${n.identifier}-${m.value}-${V}`)),!!r&&t.jsxs(a.Button,{onClick:g,className:"-mx-2 w-max",type:"button",variant:"ghost",accentColor:"base",size:e,children:[t.jsx(a.LuIcon,{icon:re}),"Clear"]})]})})});rn.displayName="RadioFieldInput";class ye extends Pe{constructor(e){super(e);C(this,"type","radio")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new ye({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){return new ye(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(rn,{field:this})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:new Set([null,...this.options.map(({value:o})=>o)]).has(e)}isValue(e){return this.isSerializedValue(e)}blankValue(){return null}areValuesEqual(e,r){return e===r}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const Po=R.cva(["group flex cursor-pointer items-center justify-center text-yellow-500 transition-colors disabled:pointer-events-none disabled:opacity-50"],{variants:{size:{xs:["size-5"],sm:["size-6"],md:["size-7"],lg:["size-8"],xl:["size-9"]}}}),on=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(m),s()},[s,l]),p=d.useCallback(()=>{l(null),s()},[s,l]),g=Array.from({length:n.maxRating},(m,V)=>V+1);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs("div",{className:"flex flex-row items-center gap-1",children:[t.jsx(a.Rating.Root,{id:n.identifier,name:o,className:"flex items-center gap-0.5",value:r,onValueChange:h,disabled:c,children:g.map(m=>t.jsx(a.Rating.Item,{value:m,className:Po({size:e}),children:t.jsx(a.LuIcon,{icon:nt,className:"size-full group-data-[active=true]:fill-current"})},`${n.identifier}-${m}`))}),!c&&r!==null&&t.jsx(a.IconButton,{onClick:p,type:"button",variant:"ghost",accentColor:"base",size:e,children:t.jsx(a.LuIcon,{icon:re})})]})})});on.displayName="RatingFieldInput";class ve extends k{constructor(e){const{maxRating:r,...o}=e;super(o);C(this,"type","rating");C(this,"maxRating");this.maxRating=r}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Max Rating",description:"Maximum rating value",integers:!0,required:!1,minimum:1,maximum:10,identifier:`${r}maxRating`}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.maxRating;return e.push(o=>{if(typeof o=="number"&&(o<1||o>r))return`Rating must be between 1 and ${r}.`}),e}serialize(){return{...super.serialize(),maxRating:this.maxRating}}getOptions(){return{...super.getOptions(),maxRating:this.maxRating}}duplicate(e){return new ve({...this.getOptions(),identifier:e})}setOptions(e){const{maxRating:r,...o}=e;this.maxRating=r??this.maxRating,super.setOptions(o)}static deserialize(e){return new ve(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(on,{field:this})}isSerializedValue(e){return this.isValue(e)}isValue(e){return typeof e=="number"&&!isNaN(e)||e===null}areValuesEqual(e,r){return e===r}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const ft=d.createContext(()=>{throw new Error("No ScannerProvider found")}),jo=()=>d.use(ft),gi=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,...l}=i;return t.jsxs(a.Overlay.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[!!n&&t.jsx(a.Overlay.Trigger,{asChild:!0,children:n}),t.jsxs(a.Overlay.Content,{children:[t.jsx(a.Overlay.Title,{className:"sr-only",children:"Scanner"}),t.jsx(a.Overlay.Description,{className:"sr-only",children:"Scan a barcode or a qr code."}),t.jsx(pt,{...l})]})]})});gi.displayName="Scanner";const pt=d.memo(i=>{const{paused:n,timeBetweenDecodingAttempts:e,onDecodeResult:r,onDecodeError:o,onError:s}=i,{ref:l}=to.useZxing({paused:n,timeBetweenDecodingAttempts:e,onDecodeResult:r,onDecodeError:o,onError:s});return t.jsxs("div",{className:"bg-(--color-background) flex size-full flex-col justify-center overflow-hidden",children:[t.jsx("div",{className:"flex w-full justify-end p-4",children:t.jsx(a.Overlay.Close,{asChild:!0,children:t.jsx(a.IconButton,{"aria-label":"close",variant:"soft",accentColor:"base",children:t.jsx(a.LuIcon,{icon:re})})})}),t.jsx("div",{className:"max-h-full w-full grow overflow-hidden p-4",children:t.jsx("video",{className:"size-full",ref:l})})]})});pt.displayName="ScannerInternal";const gt=d.memo(i=>{const{children:n}=i,[e,r]=d.useState(null),o=d.useCallback(()=>{r(null)},[]),s=d.useCallback(f=>{r(f(o))},[o]),l=d.useCallback(()=>{e&&(e.onClose&&e.onClose(),o())},[o,e]);return t.jsxs(ft.Provider,{value:s,children:[n,e&&t.jsx(gi,{open:!0,onOpenChange:l,...e})]})});gt.displayName="FileViewerProvider";const an=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),[h,p]=d.useState(!1),g=d.useCallback(S=>{const v=S.target.value;l(v)},[l]),m=d.useCallback(()=>{s()},[s]),V=d.useCallback(S=>{l(S.rawValue),s(),p(!1)},[l,s]),F=d.useCallback(()=>{p(!0)},[]),w=d.useCallback(()=>{p(!1),s()},[s]);return t.jsxs(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:[t.jsx(a.TextArea,{className:"field-sizing-content w-full",accentColor:"base",variant:"surface",size:e,id:n.identifier,name:o,value:r??"",placeholder:"Enter a qr or barcode",onChange:g,onBlur:m,disabled:c}),t.jsxs(a.Button,{onClick:F,className:"w-max",type:"button",variant:"soft",size:e,accentColor:"base",disabled:c,children:[t.jsx(a.LuIcon,{icon:Oo}),"Scan"]}),t.jsx(gi,{open:h,onDecodeResult:V,onOpenChange:w})]})});an.displayName="ScanFieldInput";class qe extends k{constructor(e){super(e);C(this,"type","qr")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new qe({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){return new qe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(an,{field:this})}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}areValuesEqual(e,r){return e===r}blankSerializedValue(){return""}areSerializedValuesEqual(e,r){return e===r}}const sn=500,ln=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{const V=m.target.value;l(V)},[l]),p=d.useCallback(()=>{s()},[s]),g=d.useCallback(m=>{m.key==="Enter"&&m.preventDefault()},[]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.Input.Root,{accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{id:n.identifier,className:"truncate",name:o,value:r??"",type:"text",placeholder:n.placeholder,onChange:h,onBlur:p,disabled:c,onKeyDown:g})})})});ln.displayName="StringFieldInput";class Se extends Hi{constructor(e){const{...r}=e,o=e.maxLength?Math.min(sn,e.maxLength):sn,s=e.minLength?Math.min(e.minLength,o):void 0;super({...r,maxLength:o,minLength:s});C(this,"type","string")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new Se({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){const{maximum_length:r,minimum_length:o,...s}=e;return new Se({...s,maxLength:r,minLength:o,placeholder:"Enter a short description"})}render(){return t.jsx(ln,{field:this})}}const dn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{const m=g.target.value;l(m)},[l]),p=d.useCallback(()=>{s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.TextArea,{id:n.identifier,value:r??"",name:o,onChange:h,onBlur:p,className:"field-sizing-content min-h-12",placeholder:n.placeholder,resize:"vertical",accentColor:"base",variant:"surface",size:e,disabled:c})})});dn.displayName="TextFieldInput";class ze extends Hi{constructor(e){const r=e.maxLength?Math.min(je,e.maxLength):je,o=e.minLength?Math.min(e.minLength,r):void 0;super({...e,maxLength:r,minLength:o});C(this,"type","text")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new ze({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){const{maximum_length:r,minimum_length:o,...s}=e;return new ze({...s,maxLength:r,minLength:o,placeholder:"Enter a description"})}render(){return t.jsx(dn,{field:this})}}const cn=Uo(),mt=new Set(cn);function Uo(i=!0){const n=new Set;for(let e=-12;e<=14;e++){const r=e>=0?"+":"-",o=Math.abs(e).toString().padStart(2,"0");n.add(`${r}${o}:00`)}if(i){const e=[-12.5,-9.5,-3.5,3.5,4.5,5.5,6.5,9.5,10.5,12.5];for(const r of e){const o=r>=0?"+":"-",s=Math.floor(Math.abs(r)).toString().padStart(2,"0");n.add(`${o}${s}:30`)}}return Array.from(n).sort((e,r)=>Ct(e)-Ct(r))}function Ct(i){const n=i[0]==="+"?1:-1,e=Number(i.slice(1,3)),r=Number(i.slice(4,6));return n*(e*60+r)}const Go="+00:00",ko=/^T([01]\d|2[0-3]):([0-5]\d):00([+-]\d{2}:\d{2})$/,mi=i=>typeof i=="string"&&mt.has(i),Vt=()=>{const i=-new Date().getTimezoneOffset(),n=i>=0?"+":"-",e=Math.abs(i),r=Math.floor(e/60),o=e%60,s=`${n}${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`;return mi(s)?s:Go};function yt(i){const n=/^([+-])(\d{2}):(\d{2})$/.exec(i);if(!n)throw new Error(`Invalid UTC offset: ${i}`);return(n[1]==="+"?1:-1)*(Number(n[2])*60+Number(n[3]))}const Ue=i=>{const n=ko.exec(i);if(!n)return null;const e=n[3];return mi(e)?{hours:Number(n[1]),minutes:Number(n[2]),utcOffset:e}:null},E=i=>typeof i=="string"&&Ue(i)!==null,un=(i,n,e=Vt())=>{if(!Number.isInteger(i)||i<0||i>23)throw new Error(`Invalid hour: ${i}`);if(!Number.isInteger(n)||n<0||n>59)throw new Error(`Invalid minute: ${n}`);if(!mi(e))throw new Error("Unsupported UTC offset");const r=i.toString().padStart(2,"0"),o=n.toString().padStart(2,"0");return`T${r}:${o}:00${e}`},Ci=i=>`UTC${i}`,se=i=>{const n=Ue(i);if(!n)throw new Error(`Invalid time value: ${i}`);return(n.hours*60+n.minutes-yt(n.utcOffset)+1440)%1440},Vi=(i,n=!0)=>{const e=Ue(i);if(!e)throw new Error(`Invalid time value: ${i}`);const r=(e.hours%12||12).toString().padStart(2,"0"),o=e.minutes.toString().padStart(2,"0"),s=e.hours>=12?"PM":"AM",l=`${r}:${o} ${s}`;return n?`${l} ${Ci(e.utcOffset)}`:l},Ge=i=>typeof i=="object"&&(E(i.from)||E(i.to)),hn=(i,n)=>{const e=se(i),r=n.from?se(n.from):null,o=n.to?se(n.to):null;return r===null&&o===null?!0:r===null?e<=o:o===null?e>=r:r<=o?e>=r&&e<=o:e>=r||e<=o},yi=d.memo(i=>{const{value:n,onChange:e,onBlur:r,disabled:o,size:s="md",id:l,name:f,compact:c=!1}=i,h=n?Ue(n):null,p=h?`${h.hours.toString().padStart(2,"0")}:${h.minutes.toString().padStart(2,"0")}`:"",g=d.useCallback(F=>{const w=F.target.value;if(!w){e(null);return}const[S,v]=w.split(":").map(Number);e(un(S,v,h==null?void 0:h.utcOffset))},[e,h==null?void 0:h.utcOffset]),m=d.useCallback(F=>{h&&(e(un(h.hours,h.minutes,F)),r==null||r())},[r,e,h]),V=d.useCallback(F=>{F||r==null||r()},[r]);return t.jsxs("div",{className:"flex min-w-0 gap-2",children:[t.jsx(a.Input.Root,{className:"min-w-0 grow",accentColor:"base",variant:"surface",size:s,children:t.jsx(a.Input.Field,{id:l,name:f,className:R.cx("[&::-webkit-calendar-picker-indicator]:invert-40 dark:[&::-webkit-calendar-picker-indicator]:invert-60",{"[&::-webkit-datetime-edit]:opacity-60":!n}),type:"time",step:60,value:p,onChange:g,onBlur:r,disabled:o})}),t.jsxs(a.Menu.Root,{align:"end",onOpenChange:V,children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsxs(a.Button,{type:"button",className:c?"!justify-between":"min-w-32 !justify-between",accentColor:"base",variant:"surface",size:s,disabled:o||!h,children:[t.jsx(a.Text,{className:"truncate",highContrast:!!h,children:h?Ci(h.utcOffset):"UTC offset"}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Menu.Content,{size:s,children:t.jsx(a.Menu.Scroll,{children:t.jsx(a.Menu.SelectGroup,{required:!0,value:h==null?void 0:h.utcOffset,onValueChange:m,children:cn.map(F=>t.jsxs(a.Menu.SelectItem,{value:F,children:[t.jsx(a.Menu.SelectedIndicator,{children:t.jsx(a.LuIcon,{icon:W})}),Ci(F)]},F))})})})]})]})});yi.displayName="TimeFieldControl";const fn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n});return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(yi,{id:n.identifier,name:o,size:e,value:r,onChange:l,onBlur:s,disabled:c})})});fn.displayName="TimeFieldInput";class Oe extends k{constructor(e){super(e);C(this,"type","time")}static deserialize(e){return new Oe(e)}getOptions(){return super.getOptions()}duplicate(e){return new Oe({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(fn,{field:this})}isSerializedValue(e){return e===null||E(e)}isValue(e){return e===null||E(e)}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return e===r}}const pn=d.memo(i=>{var S;const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useRef(null),p=d.useCallback(()=>{var v;(v=h.current)==null||v.click()},[]),g=d.useCallback(()=>{if(!h.current)return;const v=h.current.files;if(!v){s();return}const I=Array.from(v).map(z=>ae.from(N.v4(),z)),q=[...r,...I];l(q),s()},[s,l,r]),m=d.useCallback(v=>{const I=r.filter(({uuid:q})=>q!==v.uuid);l(I),s()},[r,l,s]);d.useEffect(()=>{if(!h.current)return;const v=new AbortController;return h.current.addEventListener("cancel",()=>{s()},{signal:v.signal}),()=>{v.abort()}},[s,r]);const w=n.maxFiles>1?"Select files":"Select a file";return t.jsxs(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:[t.jsxs(a.Button,{className:"w-max",size:e,variant:"surface",accentColor:"base",onClick:p,type:"button",disabled:c,children:[t.jsx(a.LuIcon,{icon:Ei}),w]}),t.jsx("input",{id:n.identifier,name:o,type:"file",ref:h,accept:(S=n.extensions)==null?void 0:S.join(","),multiple:n.maxFiles>1,className:"hidden",onChange:g,value:""}),r.length>0&&t.jsx("div",{className:"mt-1 flex h-max flex-col gap-2",children:r.map(v=>t.jsx(en,{size:e,fileOrPromise:v,onRemove:m,disabled:c},v.uuid))})]})});pn.displayName="UploadFieldInput";class we extends k{constructor(e){const{extensions:r,maximum_files:o,maximum_size:s,...l}=e;super(l);C(this,"type","upload");C(this,"extensions");C(this,"maxFileSize");C(this,"maxFiles");this.maxFileSize=typeof s=="number"?s:void 0,this.maxFiles=Math.max(typeof o=="number"?o:1,1),this.extensions=r}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"How many files can be uploaded?",description:"By default, only one file can be uploaded.",required:!1,minimum:1,maximum:10,identifier:`${r}maximum_files`,integers:!0}),showDirectly:!1},{field:new H({label:"What is the maximum size of each file?",description:`Maximum file size in megabytes (between 1MB–${Te}MB).`,required:!1,identifier:`${r}maximum_size`,minimum:1,maximum:Te,integers:!0}),showDirectly:!1},{field:new te({label:"Accepted file types",description:"Types of allowed files to upload. If left blank, all files will be accepted.",required:!1,identifier:`${r}extensions`,options:[{value:"image/*",label:"Images"},{value:"audio/*",label:"Audio files"},{value:"video/*",label:"Videos"},{value:"text/*",label:"Text files"},{value:"application/*",label:"Application files (includes PDFs and Word documents)"}]}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.maxFileSize??Te,o=r*1e3*1e3,s=this.maxFiles||1;return e.push(l=>{if(l.some(f=>f instanceof ae&&f.size>o))return`Files must be at most ${r}MB.`}),e.push(l=>{if(l.length>s)return`You can only upload ${s} files.`}),e}serialize(){return{...super.serialize(),extensions:this.extensions,maximum_size:this.maxFileSize,maximum_files:this.maxFiles}}getOptions(){return{...super.getOptions(),extensions:this.extensions,maximum_size:this.maxFileSize,maximum_files:this.maxFiles}}duplicate(e){return new we({...this.getOptions(),identifier:e})}setOptions(e){const{extensions:r,maximum_files:o,maximum_size:s,...l}=e;this.maxFileSize=typeof s=="number"?s:this.maxFileSize,this.maxFiles=typeof o=="number"?o:this.maxFiles,this.extensions=r,super.setOptions(l)}static deserialize(e){return new we(e)}serializeValue(e){return[]}deserializeValue(e){return[]}render(){return t.jsx(pn,{field:this})}isSerializedValue(e){return Array.isArray(e)&&e.length===0}isValue(e){return Array.isArray(e)?e.every(r=>r instanceof Ce||r instanceof ae):!1}areValuesEqual(e,r){return pi(e,r)}blankValue(){return[]}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){return e.length===r.length}}const gn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(V=>{const F=V.target.value;F!==""&&!URL.canParse(F)||l(F!==""?new URL(F):null)},[l]),p=d.useCallback(()=>{s()},[s]),g=d.useCallback(V=>{V.key==="Enter"&&V.preventDefault()},[]),m=d.useCallback(()=>{r!==null&&window.open(r,"_blank","noopener,noreferrer")},[r]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs("div",{className:"flex w-full gap-2",children:[t.jsx(a.Input.Root,{className:"grow",accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{id:n.identifier,className:"truncate",name:o,value:r?r.toString():"",type:"url",inputMode:"url",placeholder:n.placeholder,onChange:h,onBlur:p,disabled:c,onKeyDown:g})}),t.jsx(a.IconButton,{size:e,variant:"soft",accentColor:"base",type:"button",disabled:r===null,onClick:m,children:t.jsx(a.LuIcon,{icon:wo})})]})})});gn.displayName="URLFieldInput";class _e extends k{constructor(e){const{placeholder:r="https://example.com",...o}=e;super(o);C(this,"type","url");C(this,"placeholder");this.placeholder=r}serialize(){return{...super.serialize(),placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new _e({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:r,...o}=e;this.placeholder=r??this.placeholder,super.setOptions(o)}static deserialize(e){return new _e(e)}serializeValue(e){return(e==null?void 0:e.toString())??null}deserializeValue(e){return e===null?null:new URL(e)}isSerializedValue(e){return e===null?!0:typeof e!="string"?!1:URL.canParse(e)}isValue(e){return e===null||e instanceof URL}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return(e==null?void 0:e.toString())===(r==null?void 0:r.toString())}render(){return t.jsx(gn,{field:this})}}const mn={date:xe,time:Oe,number:H,boolean:fe,select:oe,string:Se,url:_e,text:ze,upload:we,qr:qe,"multi-string":he,"multi-select":te,radio:ye,"checkbox-list":pe,"pass-fail":Ve,otp:ge,rating:ve},vt=Object.keys(mn),T={"checkbox-list":{description:"Allows the user to select a multiple options from a list.",group:O.Selection,icon:zo,name:"Checkbox list"},"multi-select":{description:"Allows the user to select a multiple options from a list of options.",group:O.Selection,icon:xo,name:"Multi-select"},"multi-string":{description:"Allows the user to provide multiple unique strings.",group:O.Text,icon:qo,name:"Multi-string"},"pass-fail":{description:"Track pass, fail, or N/A outcome.",group:O.Assessment,icon:So,name:"Pass - Fail"},boolean:{description:"Perfect for both optional and required yes/no questions.",group:O.Selection,icon:Bo,name:"Checkbox"},date:{description:"Allows specifying a date.",group:O.Temporal,icon:mo,name:"Date"},time:{description:"Allows specifying a time and UTC offset.",group:O.Temporal,icon:$o,name:"Time"},number:{description:"Allows specifying a number within a given range.",group:O.Numeric,icon:No,name:"Number"},otp:{description:"Allows specifying a number within a given range.",group:O.Verification,icon:_o,name:"OTP"},qr:{description:"Used for scanning/reading QR and barcodes.",group:O.Capture,icon:To,name:"Scan"},radio:{description:"Allows the user to select a single option from a list of options.",group:O.Selection,icon:Vo,name:"Option list"},rating:{description:"Allows users to select a rating value.",group:O.Assessment,icon:nt,name:"Rating"},select:{description:"Allows the user to select a single option from a list of options.",group:O.Selection,icon:Io,name:"Dropdown"},string:{description:"Short text fields can hold up to 500 characters on a single line.",group:O.Text,icon:Eo,name:"Short Text"},text:{description:"Paragraph fields can hold up to 10000 characters and can have multiple lines.",group:O.Text,icon:fo,name:"Paragraph"},upload:{description:"Allows a file to be uploaded.",group:O.Capture,icon:Ei,name:"Upload"},url:{description:"Allows users to enter a URL.",group:O.Text,icon:Mo,name:"URL"}},St={[O.Assessment]:{name:"Assessment"},[O.Capture]:{name:"Capture"},[O.Numeric]:{name:"Numeric"},[O.Selection]:{name:"Selection"},[O.Temporal]:{name:"Temporal"},[O.Text]:{name:"Text"},[O.Verification]:{name:"Verification"}},Te=50,zt=Te*1e3,wt=zt*1e3,$="Unlabelled",Cn="Unlabelled";class x{constructor(n){C(this,"id");C(this,"label");C(this,"getApplyFn");C(this,"serialize");C(this,"deserialize");const{id:e,getApplyFn:r,label:o,serialize:s,deserialize:l}=n;this.id=e,this.getApplyFn=r,this.label=o,this.serialize=s,this.deserialize=l}static create(n){return new x(n)}}const Ft=x.create({id:"nullable-boolean-equals",label:"is",getApplyFn:i=>n=>n===i,serialize:i=>i,deserialize:i=>i}),bt=x.create({id:"nullable-boolean-not-equals",label:"is not",getApplyFn:i=>n=>n!==i,serialize:i=>i,deserialize:i=>i}),Nt=x.create({id:"date-equals",getApplyFn:i=>n=>n.getTime()===i.getTime(),label:"is",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),Mt=x.create({id:"date-not-equals",getApplyFn:i=>n=>n.getTime()!==i.getTime(),label:"is not",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),xt=x.create({id:"date-before",getApplyFn:i=>n=>n.getTime()<i.getTime(),label:"before",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),It=x.create({id:"date-after",label:"after",getApplyFn:i=>n=>n.getTime()>i.getTime(),serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),qt=x.create({id:"date-range-in",label:"in between",getApplyFn:i=>n=>!(i!=null&&i.from&&i.from.getTime()>n.getTime()||i!=null&&i.to&&i.to.getTime()<n.getTime()),serialize:i=>{var n,e;return{from:((n=i.from)==null?void 0:n.toISOString())??null,to:((e=i.to)==null?void 0:e.toISOString())??null}},deserialize:i=>({from:i.from?new Date(i.from):void 0,to:i.to?new Date(i.to):void 0})}),Ot=x.create({id:"date-range-not-in",label:"not in between",getApplyFn:i=>n=>!!(i!=null&&i.from&&i.from.getTime()>n.getTime()||i!=null&&i.to&&i.to.getTime()<n.getTime()),serialize:i=>{var n,e;return{from:((n=i.from)==null?void 0:n.toISOString())??null,to:((e=i.to)==null?void 0:e.toISOString())??null}},deserialize:i=>({from:i.from?new Date(i.from):void 0,to:i.to?new Date(i.to):void 0})}),_t=x.create({id:"has-files",label:"is",getApplyFn:i=>n=>n.length>0,serialize:i=>i,deserialize:i=>i}),Tt=x.create({id:"does-not-have-files",label:"is not",getApplyFn:i=>n=>n.length===0,serialize:i=>i,deserialize:i=>i}),Vn=x.create({id:"number-equals",getApplyFn:i=>n=>n===i,label:"is",serialize:i=>i,deserialize:i=>i}),yn=x.create({id:"number-not-equals",getApplyFn:i=>n=>n!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),vn=x.create({id:"number-less-than",getApplyFn:i=>n=>n<i,label:"is less than",serialize:i=>i,deserialize:i=>i}),Sn=x.create({id:"number-less-than-or-equals",getApplyFn:i=>n=>n<=i,label:"is less than or equal to",serialize:i=>i,deserialize:i=>i}),zn=x.create({id:"number-greater-than",getApplyFn:i=>n=>n>i,label:"is greater than",serialize:i=>i,deserialize:i=>i}),wn=x.create({id:"number-greater-than-or-equals",getApplyFn:i=>n=>n>=i,label:"is greater than or equal to",serialize:i=>i,deserialize:i=>i}),Fn=x.create({id:"number-range-in",getApplyFn:i=>n=>!(i.to&&n>i.to||i.from&&n<i.from),label:"is between",serialize:i=>i,deserialize:i=>i}),bn=x.create({id:"number-range-not-in",getApplyFn:i=>n=>!!(i.to&&n>i.to||i.from&&n<i.from),label:"is not between",serialize:i=>i,deserialize:i=>i}),Lt=x.create({id:"pass-fail-equals",getApplyFn:i=>n=>n===i,label:"is",serialize:i=>i,deserialize:i=>i}),Bt=x.create({id:"pass-fail-not-equals",getApplyFn:i=>n=>n!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),At=x.create({id:"pass-fail-array-includes",getApplyFn:i=>{const n=new Set(i);return e=>n.has(e)},label:"is any of",serialize:i=>i,deserialize:i=>i}),Et=x.create({id:"pass-fail-array-excludes",getApplyFn:i=>{const n=new Set(i);return e=>!n.has(e)},label:"is none of",serialize:i=>i,deserialize:i=>i}),le=x.create({id:"nullable-string-equals",getApplyFn:i=>n=>n===i,label:"is",serialize:i=>i,deserialize:i=>i}),de=x.create({id:"nullable-string-not-equals",getApplyFn:i=>n=>n!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Le=x.create({id:"string-includes",getApplyFn:i=>n=>n.includes(i),label:"includes",serialize:i=>i,deserialize:i=>i}),Be=x.create({id:"string-excludes",getApplyFn:i=>n=>!n.includes(i),label:"does not include",serialize:i=>i,deserialize:i=>i}),Nn=x.create({id:"string-array-includes",getApplyFn:i=>{const n=new Set(i);return e=>n.has(e)},label:"is any of",serialize:i=>i,deserialize:i=>i}),Mn=x.create({id:"string-array-excludes",getApplyFn:i=>{const n=new Set(i);return e=>!n.has(e)},label:"is none of",serialize:i=>i,deserialize:i=>i}),vi=x.create({id:"string-array-every",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.isSubsetOf(r)}},label:"has all of",serialize:i=>i,deserialize:i=>i}),Si=x.create({id:"string-array-some",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return!n.isDisjointFrom(r)}},label:"has any of",serialize:i=>i,deserialize:i=>i}),zi=x.create({id:"string-array-none",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.isDisjointFrom(r)}},label:"has none of",serialize:i=>i,deserialize:i=>i}),wi=x.create({id:"string-array-equals",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.size===r.size&&r.isSubsetOf(n)}},label:"is",serialize:i=>i,deserialize:i=>i}),Fi=x.create({id:"string-array-not-equals",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.size!==r.size||!r.isSubsetOf(n)}},label:"is not",serialize:i=>i,deserialize:i=>i}),$t=x.create({id:"time-equals",label:"is",getApplyFn:i=>n=>n===i,serialize:i=>i,deserialize:i=>i}),Dt=x.create({id:"time-not-equals",label:"is not",getApplyFn:i=>n=>n!==i,serialize:i=>i,deserialize:i=>i}),Pt=x.create({id:"time-before",label:"before",getApplyFn:i=>n=>se(n)<se(i),serialize:i=>i,deserialize:i=>i}),jt=x.create({id:"time-after",label:"after",getApplyFn:i=>n=>se(n)>se(i),serialize:i=>i,deserialize:i=>i}),Ut=x.create({id:"time-range-in",label:"in between",getApplyFn:i=>n=>hn(n,i),serialize:i=>i,deserialize:i=>i}),Gt=x.create({id:"time-range-not-in",label:"not in between",getApplyFn:i=>n=>!hn(n,i),serialize:i=>i,deserialize:i=>i}),y=i=>i;class P extends De{constructor(e){const{id:r,field:o,conditionValue:s,conditionModifier:l}=e;super();C(this,"id");C(this,"conditionValue");C(this,"conditionModifier");C(this,"field");C(this,"getConditionValue",()=>this.conditionValue);C(this,"setConditionValue",e=>{const r=this.modifiers[this.conditionModifier];e!==void 0&&!r.isConditionValueValid(e)||(this.conditionValue=e,this.notify(this))});C(this,"getConditionModifier",()=>this.conditionModifier);C(this,"setConditionModifier",e=>{const r=this.modifiers[e],o=this.getConditionValue();o&&!r.isConditionValueValid(o)&&(this.conditionValue=void 0),this.conditionModifier=e,this.notify(this)});C(this,"getConditionModifiers",()=>Object.entries(this.modifiers));C(this,"accessorFn",e=>e[this.field.identifier]);C(this,"getApplyFn",()=>{const e=this.modifiers[this.conditionModifier],r=this.getConditionValue(),o=r!==void 0&&e.isConditionValueValid(r),s=o?e.modifier.getApplyFn(r):null;return l=>{if(!o)return!0;const f=this.transformValue(l);return e.isValueValid(f)?s(f):!1}});this.id=r,this.field=o,this.conditionValue=s,this.conditionModifier=l}serialize(){return{id:this.id,type:this.field.type,fieldId:this.field.identifier,conditionValue:this.conditionValue!==void 0?this.modifiers[this.conditionModifier].modifier.serialize(this.conditionValue):void 0,conditionModifier:this.conditionModifier}}transformValue(e){return e}}const kt=d.memo,Fe=kt(function(i){const{ref:n,children:e,...r}=i,o=d.useCallback(s=>typeof e=="function"?t.jsxs(t.Fragment,{children:[e(s),t.jsx(a.Menu.SelectedIndicator,{className:"ml-[auto]",children:t.jsx(a.LuIcon,{icon:W})})]}):t.jsxs(t.Fragment,{children:[e,t.jsx(a.Menu.SelectedIndicator,{className:"ml-[auto]",children:t.jsx(a.LuIcon,{icon:W})})]}),[e]);return t.jsx(a.Menu.SelectItem,{ref:n,...r,children:o})}),Ht=kt(function(i){const{ref:n,children:e,...r}=i,o=d.useCallback(s=>typeof e=="function"?t.jsxs(t.Fragment,{children:[e(s),t.jsx(a.Menu.SelectedIndicator,{className:"ml-auto",children:t.jsx(a.LuIcon,{icon:W})})]}):t.jsxs(t.Fragment,{children:[e,t.jsx(a.Menu.SelectedIndicator,{className:"ml-auto",children:t.jsx(a.LuIcon,{icon:W})})]}),[e]);return t.jsx(a.Menu.MultiSelectItem,{ref:n,...r,children:o})}),xn=d.memo(i=>{const{ref:n,children:e,...r}=i,o=d.useCallback(s=>typeof e=="function"?t.jsxs(t.Fragment,{children:[e(s),t.jsx(a.Menu.CheckboxItemIndicator,{className:"ml-[auto]",children:l=>l?t.jsx(a.LuIcon,{icon:ui}):t.jsx(a.LuIcon,{icon:W})})]}):t.jsxs(t.Fragment,{children:[e,t.jsx(a.Menu.CheckboxItemIndicator,{className:"ml-[auto]",children:l=>l?t.jsx(a.LuIcon,{icon:ui}):t.jsx(a.LuIcon,{icon:W})})]}),[e]);return t.jsx(a.Menu.SelectAllItem,{ref:n,...r,children:o})});xn.displayName="SelectAllItemTemplate";const U=i=>{const{children:n,condition:e,size:r="sm",variant:o,accentColor:s,radius:l}=i,f=d.useCallback(c=>{e.setConditionModifier(c)},[e]);return t.jsxs(a.Menu.Root,{align:"start",children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{size:r,variant:o,radius:l,accentColor:s,children:t.jsx(a.Menu.SelectGroup,{required:!0,value:e.getConditionModifier(),onValueChange:f,children:e.getConditionModifiers().map(([c,h])=>t.jsx(Fe,{value:c,children:h.modifier.label},c))})})]})},bi=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,align:f,accentColor:c="base",...h}=i;return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,align:f,children:t.jsx(a.DayPicker,{size:l,accentColor:c,...h})})]})});bi.displayName="DayPickerPopover";const Jt=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,accentColor:f="base",values:c,onValuesChange:h,placeholder:p="Enter text",...g}=i,[m,V]=d.useState(""),F=d.useCallback(I=>{V(I.target.value)},[]),w=d.useCallback(I=>{I.key==="Enter"&&(I.preventDefault(),I.stopPropagation(),h([...c,m]),V(""))},[m,h,c]),S=d.useCallback(()=>{h([...c,m]),V("")},[m,h,c]),v=d.useCallback(I=>{const q=[...c];q.splice(I,1),h(q)},[h,c]);return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,accentColor:f,...g,children:t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs("div",{className:"flex gap-2",children:[t.jsx(a.Input.Root,{className:"grow",accentColor:"base",variant:"outline",size:"sm",children:t.jsx(a.Input.Field,{value:m,onChange:F,onKeyDown:w,placeholder:p,...g})}),t.jsx(a.IconButton,{size:"sm",accentColor:"base",variant:"soft",type:"button",onClick:S,children:t.jsx(a.LuIcon,{icon:Z})})]}),c.length>0&&t.jsx("div",{className:"flex flex-col gap-1",children:c.map((I,q)=>t.jsxs(a.Badge,{className:"flex items-center justify-between gap-2",accentColor:"base",size:"sm",variant:"soft",children:[t.jsx("span",{className:"truncate",children:I}),t.jsx(a.IconButton,{size:"xs",variant:"ghost",type:"button",accentColor:"base",onClick:()=>{v(q)},children:t.jsx(a.LuIcon,{icon:re})})]},`${I}-${q}`))})]})})]})});Jt.displayName="NumberInputPopover";const be=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,accentColor:f="base",value:c,onValueChange:h,placeholder:p="Enter a number",...g}=i,[m,V]=d.useState(null);d.useEffect(()=>{c!==void 0&&V(c)},[c]);const F=d.useCallback(S=>{const v=S.target.valueAsNumber;V(isNaN(v)?null:v)},[]),w=d.useCallback(S=>{const v=S.target.valueAsNumber;h==null||h(isNaN(v)?null:v)},[h]);return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,...g,children:t.jsx(a.Input.Root,{size:l,accentColor:f,children:t.jsx(a.Input.Field,{placeholder:p,type:"number",value:m??"",onChange:F,onBlur:w})})})]})});be.displayName="NumberInputPopover";const j=i=>{const{condition:n,onClick:e,...r}=i,o=d.useCallback(()=>{e(n)},[n,e]);return t.jsx(a.IconButton,{onClick:o,...r,children:t.jsx(a.LuIcon,{icon:re})})};j.displayName="RemoveConditionButton";const ke=d.memo(i=>{const{ref:n,selectFieldOptions:e,...r}=i,o=d.useMemo(()=>e.map(s=>typeof s=="string"?{value:s,label:s}:s),[e]);return t.jsxs(a.Menu.MultiSelectGroup,{ref:n,...r,children:[t.jsx(xn,{children:"Select all"}),o.map(s=>t.jsx(Ht,{value:s.value,children:t.jsx("span",{className:"truncate",children:s.label})},s.value))]})});ke.displayName="SelectFieldOptionMultiSelectGroup";const In=d.memo(i=>{const{ref:n,selectFieldOptions:e,...r}=i,o=d.useMemo(()=>e.map(s=>typeof s=="string"?{value:s,label:s}:s),[e]);return t.jsx(a.Menu.SelectGroup,{ref:n,...r,children:o.map(s=>t.jsx(Fe,{value:s.value,children:t.jsx("span",{className:"truncate",children:s.label})},s.value))})});In.displayName="SelectFieldOptionSelectGroup";const Ae=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,accentColor:f="base",value:c,onValueChange:h,placeholder:p="Enter text",...g}=i,[m,V]=d.useState(""),F=d.useCallback(S=>{V(S.target.value)},[]),w=d.useCallback(S=>{const v=S.target.value;h==null||h(v)},[h]);return d.useEffect(()=>{c&&V(c)},[c]),t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,...g,children:t.jsx(a.Input.Root,{size:l,accentColor:f,children:t.jsx(a.Input.Field,{placeholder:p,type:"text",value:m,onChange:F,onBlur:w})})})]})});Ae.displayName="TextInputPopover";const Ni=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l="sm",accentColor:f="base",value:c,onValueChange:h,...p}=i;return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,accentColor:f,...p,children:t.jsx(yi,{compact:!0,size:l,value:c,onChange:h})})]})});Ni.displayName="TimeInputPopover";const Wt=i=>{const{condition:n,onRemove:e}=i,r=n.getConditionValue(),o=n.getConditionModifier(),s=()=>{switch(r){case void 0:return"...";case!0:return"true";case!1:return"false";case null:return"empty"}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[n.field.type].icon}),t.jsx("span",{className:"truncate",children:n.field.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[o].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:s()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsxs(a.Menu.SelectGroup,{required:!0,value:r,onValueChange:n.setConditionValue,children:[t.jsx(Fe,{value:!0,children:"true"}),t.jsx(Fe,{value:!1,children:"false"})]})})]}),t.jsx(j,{condition:n,onClick:e})]})},Xt={equals:y({modifier:Ft,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:bt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class He extends P{constructor(e){super(e);C(this,"modifiers",Xt)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Xt[s];let c;return o!==void 0&&(c=f.modifier.deserialize(o)),new He({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Wt,{condition:this,...e},this.id)}}const Ee=[],Kt=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{c.length>0?n.setConditionValue(c):n.setConditionValue(void 0)},[n]),f=()=>{if(o===void 0)return"...";if(o===null)return"empty";switch(o.length){case 0:return"...";default:return`${o.length} options`}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"soft",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"soft",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"truncate",children:f()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{values:o??Ee,selectFieldOptions:n.field.options,onValuesChange:l})})]}),t.jsx(j,{condition:n,onClick:e})]})},Yt={equals:y({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:y({modifier:vi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:y({modifier:Si,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:y({modifier:zi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Je extends P{constructor(e){super(e);C(this,"modifiers",Yt)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Yt[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Je({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Kt,{condition:this,...e},this.id)}}class Mi extends De{constructor(e){super();C(this,"conditions");C(this,"conditionObserver",()=>{this.conditions=[...this.conditions],this.notify(this)});C(this,"initConditions",e=>{for(const r of e)r.observe(this.conditionObserver);return e});this.conditions=this.initConditions(e)}getConditions(){return this.conditions}addCondition(e){this.conditions=this.initConditions([...this.conditions,e]),this.notify(this)}addConditions(e){this.conditions=this.initConditions([...this.conditions,...e]),this.notify(this)}removeCondition(e){this.conditions=this.initConditions(this.conditions.filter(r=>r.id!==e.id)),this.notify(this)}removeConditions(e){const r=new Set(e.map(o=>o.id));this.conditions=this.initConditions(this.conditions.filter(o=>!r.has(o.id))),this.notify(this)}applyConditions(e){return this.conditions.length===0?!0:this.conditions.map(o=>[o.getApplyFn(),o.accessorFn]).every(([o,s])=>o(s(e)))}}const Ho=(i,n)=>d.useMemo(()=>{const e=new Mi(i);return e.observe(r=>n(r.getConditions())),e},[i,n]),Zt=i=>{const{condition:n,onRemove:e}=i,r=n.getConditionValue(),o=n.getConditionModifier(),s=()=>{var l,f;switch(o){case"equals":case"notEquals":{const c=n.modifiers.equals,h=r!==void 0&&c.isConditionValueValid(r)?r:void 0;return t.jsx(bi,{required:!1,size:"sm",mode:"single",selected:h??void 0,onSelect:p=>n.setConditionValue(p),children:t.jsx(a.Button,{type:"button",className:"truncate",children:h!==void 0?(h==null?void 0:h.toLocaleDateString())??"empty":"..."})})}case"before":case"after":{const c=n.modifiers.after,h=r!==void 0&&c.isConditionValueValid(r)?r:void 0;return t.jsx(bi,{required:!0,size:"sm",mode:"single",selected:h,onSelect:n.setConditionValue,children:t.jsx(a.Button,{type:"button",className:"truncate",children:h?h.toLocaleDateString():"..."})})}case"in":case"notIn":{const c=n.modifiers.in,h=r!==void 0&&c.isConditionValueValid(r)?r:void 0;return t.jsx(bi,{required:!0,mode:"range",size:"sm",selected:h,onSelect:n.setConditionValue,children:t.jsx(a.Button,{className:"truncate",children:h?`${(l=h.from)==null?void 0:l.toLocaleDateString()} - ${(f=h.to)==null?void 0:f.toLocaleDateString()}`:"..."})})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[n.field.type].icon}),t.jsx("span",{className:"truncate",children:n.field.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[o].modifier.label})}),s(),t.jsx(j,{condition:n,onClick:e})]})},Qt={equals:y({modifier:Nt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),notEquals:y({modifier:Mt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),before:y({modifier:xt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),after:y({modifier:It,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),in:y({modifier:qt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>"to"in(i??{})&&"from"in(i??{}),isSerializedValueValid:i=>typeof i=="object"&&"to"in i&&"from"in i}),notIn:y({modifier:Ot,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>"to"in(i??{})&&"from"in(i??{}),isSerializedValueValid:i=>typeof i=="object"&&"to"in i&&"from"in i})};class We extends P{constructor(e){super(e);C(this,"modifiers",Qt)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Qt[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new We({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Zt,{condition:this,...e},this.id)}}const Rt=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{c.length>0?n.setConditionValue(c):n.setConditionValue(void 0)},[n]),f=()=>{if(o===void 0)return"...";if(o===null)return"empty";switch(o.length){case 0:return"...";default:return`${o.length} options`}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"truncate",children:f()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{values:o??Ee,selectFieldOptions:r.options,onValuesChange:l})})]}),t.jsx(j,{condition:n,onClick:e})]})},er={equals:y({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:y({modifier:vi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:y({modifier:Si,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:y({modifier:zi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Xe extends P{constructor(e){super(e);C(this,"modifiers",er)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=er[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Xe({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Rt,{condition:this,...e},this.id)}}const ir=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{n.setConditionValue(c.length>0?c:void 0)},[n]),f=()=>{if(o===void 0)return"...";if(o===null)return"empty";switch(o.length){case 0:return"...";case 1:return o[0].toString();default:return`${o.length} values`}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsx(Jt,{values:o??Ee,onValuesChange:l,children:t.jsx(a.Button,{type:"button",className:"truncate",children:f()})}),t.jsx(j,{condition:n,onClick:e})]})},nr={equals:y({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:y({modifier:vi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:y({modifier:Si,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:y({modifier:zi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Ke extends P{constructor(e){super(e);C(this,"modifiers",nr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=nr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Ke({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(ir,{condition:this,...e},this.id)}}const tr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{n.setConditionValue(c??void 0)},[n]),f=()=>{switch(s){case"equals":case"greaterThanOrEquals":case"lessThanOrEquals":case"greaterThan":case"lessThan":{const c=n.modifiers.greaterThan,h=o!==void 0&&c.isConditionValueValid(o)?o:void 0;return t.jsx(be,{value:h??null,onValueChange:l,size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:h!==void 0?h??"empty":"..."})})}case"inRange":case"notInRange":{const c=n.modifiers.inRange,h=o!==void 0&&c.isConditionValueValid(o)?o:void 0;return t.jsxs(t.Fragment,{children:[t.jsx(be,{value:(h==null?void 0:h.from)??null,onValueChange:p=>{n.setConditionValue({from:p,to:(h==null?void 0:h.to)??null})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(h==null?void 0:h.from)??"..."})}),t.jsx(be,{value:(h==null?void 0:h.to)??null,onValueChange:p=>{n.setConditionValue({from:(h==null?void 0:h.from)??null,to:p})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(h==null?void 0:h.to)??"..."})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),f(),t.jsx(j,{condition:n,onClick:e})]})},rr={equals:y({modifier:Vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),notEquals:y({modifier:yn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThan:y({modifier:vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThanOrEquals:y({modifier:Sn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThan:y({modifier:zn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThanOrEquals:y({modifier:wn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),inRange:y({modifier:Fn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"}),notInRange:y({modifier:bn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"})};class Ye extends P{constructor(e){super(e);C(this,"modifiers",rr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=rr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Ye({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(tr,{condition:this,...e},this.id)}}const or=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},ar={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Ze extends P{constructor(e){super(e);C(this,"modifiers",ar)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=ar[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Ze({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(or,{condition:this,...e},this.id)}}const sr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":{const f=n.modifiers.equals,c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:c!==void 0?c?me[c].label:"empty":"..."})})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(a.Menu.SelectGroup,{required:!1,value:c,onValueChange:n.setConditionValue,children:Ie.map(h=>{const{label:p}=me[h];return t.jsx(Fe,{value:h,children:t.jsx("span",{className:"truncate",children:p})},h)})})})]})}case"includes":case"excludes":{const f=n.modifiers.includes,c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",children:c?`${c.length} statuses`:"..."})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsxs(a.Menu.MultiSelectGroup,{values:c??Ee,onValuesChange:n.setConditionValue,children:[t.jsx(xn,{children:"Select all"}),Ie.map(h=>{const{label:p,icon:g}=me[h];return t.jsxs(Ht,{value:h,children:[t.jsx(a.LuIcon,{icon:g}),t.jsx("span",{className:"truncate",children:p})]},h)})]})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},lr={equals:y({modifier:Lt,isValueValid:i=>i!==null,isConditionValueValid:i=>typeof i=="string",isSerializedValueValid:i=>typeof i=="string"}),notEquals:y({modifier:Bt,isValueValid:i=>i!==null,isConditionValueValid:i=>typeof i=="string",isSerializedValueValid:i=>typeof i=="string"}),includes:y({modifier:At,isValueValid:i=>i!==null,isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:y({modifier:Et,isValueValid:i=>i!==null,isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class Qe extends P{constructor(e){super(e);C(this,"modifiers",lr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=lr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Qe({field:r,conditionModifier:s,conditionValue:c,...l})}transformValue(e){return e.status}render(e){return t.jsx(sr,{condition:this,...e},this.id)}}const dr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useMemo(()=>r.options.map(h=>typeof h=="string"?{value:h,label:h}:h),[r.options]),f=d.useMemo(()=>{const h={};for(const p of l)h[p.value]=p.label;return h},[l]),c=()=>{switch(s){case"equals":case"notEquals":{const h=n.modifiers.equals,p=o!==void 0&&h.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:p!==void 0?p?f[p]:"empty":"..."})})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(In,{required:!0,selectFieldOptions:r.options,value:p??void 0,onValueChange:n.setConditionValue})})]})}case"includes":case"excludes":{const h=n.modifiers.includes,p=o!==void 0&&h.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",children:p?`${p.length} options`:"..."})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{selectFieldOptions:r.options,values:p??Ee,onValuesChange:n.setConditionValue})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),c(),t.jsx(j,{condition:n,onClick:e})]})},cr={equals:y({modifier:le,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),notEquals:y({modifier:de,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),includes:y({modifier:Nn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:y({modifier:Mn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class Re extends P{constructor(e){super(e);C(this,"modifiers",cr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=cr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Re({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(dr,{condition:this,...e},this.id)}}const ur=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"greaterThanOrEquals":case"lessThanOrEquals":case"greaterThan":case"lessThan":{const f=n.modifiers[s],c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsx(be,{value:c??null,onValueChange:h=>n.setConditionValue(h??void 0),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:c!==void 0?c:"..."})})}case"inRange":case"notInRange":{const f=n.modifiers.inRange,c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsxs(t.Fragment,{children:[t.jsx(be,{value:(c==null?void 0:c.from)??null,onValueChange:h=>{n.setConditionValue({from:h,to:(c==null?void 0:c.to)??null})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(c==null?void 0:c.from)??"..."})}),t.jsx(be,{value:(c==null?void 0:c.to)??null,onValueChange:h=>{n.setConditionValue({from:(c==null?void 0:c.from)??null,to:h})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(c==null?void 0:c.to)??"..."})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},hr={equals:y({modifier:Vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),notEquals:y({modifier:yn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThan:y({modifier:vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThanOrEquals:y({modifier:Sn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThan:y({modifier:zn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThanOrEquals:y({modifier:wn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),inRange:y({modifier:Fn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"}),notInRange:y({modifier:bn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"})};class ei extends P{constructor(e){super(e);C(this,"modifiers",hr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=hr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ei({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(ur,{condition:this,...e},this.id)}}const fr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},pr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ii extends P{constructor(e){super(e);C(this,"modifiers",pr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=pr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ii({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(fr,{condition:this,...e},this.id)}}const gr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useMemo(()=>r.options.map(p=>typeof p=="string"?{value:p,label:p}:p),[r.options]),f=d.useMemo(()=>{const p={};for(const g of l)p[g.value]=g.label;return p},[l]),c=d.useCallback(p=>{p.length>0?n.setConditionValue(p):n.setConditionValue([])},[n]),h=()=>{switch(s){case"equals":case"notEquals":{const p=n.modifiers.equals,g=o!==void 0&&p.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:g!==void 0?g?f[g]:"empty":"..."})})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(In,{required:!1,selectFieldOptions:r.options,value:g??void 0,onValueChange:n.setConditionValue})})]})}case"includes":case"excludes":{const p=n.modifiers.includes,g=o!==void 0&&p.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",children:g?`${g.length} options`:"..."})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{selectFieldOptions:r.options,values:g??Ee,onValuesChange:c})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),h(),t.jsx(j,{condition:n,onClick:e})]})},mr={equals:y({modifier:le,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),notEquals:y({modifier:de,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),includes:y({modifier:Nn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:y({modifier:Mn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class ni extends P{constructor(e){super(e);C(this,"modifiers",mr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=mr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ni({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(gr,{condition:this,...e},this.id)}}const Cr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},Vr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ti extends P{constructor(e){super(e);C(this,"modifiers",Vr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Vr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ti({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Cr,{condition:this,...e},this.id)}}const yr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},vr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ri extends P{constructor(e){super(e);C(this,"modifiers",vr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=vr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ri({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(yr,{condition:this,...e},this.id)}}const Sr=i=>{const{condition:n,onRemove:e}=i,r=n.getConditionValue(),o=n.getConditionModifier(),s=()=>{switch(o){case"equals":case"notEquals":case"before":case"after":{const l=typeof r=="string"?r:void 0;return t.jsx(Ni,{value:l,onValueChange:f=>n.setConditionValue(f??void 0),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:l?Vi(l):"..."})})}case"in":case"notIn":{const l=r&&typeof r=="object"?r:void 0,f=c=>{n.setConditionValue(c.from||c.to?c:void 0)};return t.jsxs(t.Fragment,{children:[t.jsx(Ni,{value:l==null?void 0:l.from,onValueChange:c=>f({from:c,to:(l==null?void 0:l.to)??null}),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:l!=null&&l.from?Vi(l.from):"..."})}),t.jsx(Ni,{value:l==null?void 0:l.to,onValueChange:c=>f({from:(l==null?void 0:l.from)??null,to:c}),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:l!=null&&l.to?Vi(l.to):"..."})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[n.field.type].icon}),t.jsx("span",{className:"truncate",children:n.field.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[o].modifier.label})}),s(),t.jsx(j,{condition:n,onClick:e})]})},zr={equals:y({modifier:$t,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),notEquals:y({modifier:Dt,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),before:y({modifier:Pt,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),after:y({modifier:jt,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),in:y({modifier:Ut,isValueValid:i=>E(i),isConditionValueValid:i=>Ge(i),isSerializedValueValid:i=>Ge(i)}),notIn:y({modifier:Gt,isValueValid:i=>E(i),isConditionValueValid:i=>Ge(i),isSerializedValueValid:i=>Ge(i)})};class oi extends P{constructor(e){super(e);C(this,"modifiers",zr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=zr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new oi({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Sr,{condition:this,...e},this.id)}}const wr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(o){case void 0:return"...";case!0:return"true";case!1:return"false";case null:return"empty"}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:l()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsxs(a.Menu.SelectGroup,{required:!0,value:o,onValueChange:n.setConditionValue,children:[t.jsx(Fe,{value:!0,children:"empty"}),t.jsx(Fe,{value:!1,children:"not empty"})]})})]}),t.jsx(j,{condition:n,onClick:e})]})},Fr={equals:y({modifier:_t,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Tt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ai extends P{constructor(e){super(e);C(this,"modifiers",Fr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Fr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ai({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(wr,{condition:this,...e},this.id)}}const br=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},Nr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class si extends P{constructor(e){super(e);C(this,"modifiers",Nr)}transformValue(e){return(e==null?void 0:e.toString())??""}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Nr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new si({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(br,{condition:this,...e},this.id)}}const Jo={date:We,time:oi,number:Ye,boolean:He,select:ni,string:ti,url:si,text:ri,upload:ai,qr:ii,"multi-string":Ke,"multi-select":Xe,radio:Re,"checkbox-list":Je,"pass-fail":Qe,otp:Ze,rating:ei},Mr=(i,n)=>{if(i.type!==n.type)throw new Error(`field and condition type mismatch ${i.type} !== ${n.type}`);return Jo[n.type].deserialize(n,i)},qn=(i,n)=>{const e=On(i,n),r={};for(const o of i)r[o.identifier]=o;return e.map(o=>Mr(r[o.fieldId],o))},xr=(i,n)=>_n(i,n).map(r=>r.serialize()),On=(i,n)=>{const e=new Set(i.map(r=>r.identifier));return n.filter(r=>e.has(r.fieldId))},_n=(i,n)=>{const e=new Set(i.map(r=>r.identifier));return n.filter(r=>e.has(r.field.identifier))},xi=i=>mn[i.type].deserialize(i);function Wo(i){return i.map(Ir)}const Ir=i=>i.type==="section"?X.deserialize(i):xi(i);function Xo(i){return i.map(xi)}function Ko(i){const n=[];for(const e of i)if(e instanceof X)for(const r of e.getFields())n.push(r);else n.push(e);return n}function Yo(i){const n={};for(const e of i)n[e.identifier]=e;return n}function qr(i,n,e=!0){const r=e?Ii(i,n):n,o={};for(const s of i){if(!(s.identifier in r))continue;const l=r[s.identifier];o[s.identifier]=s.serializeValue(l)}return o}function Or(i,n,e=!0){const r=e?Tn(i,n):n,o={};for(const s of i){if(!(s.identifier in r))continue;const l=r[s.identifier];o[s.identifier]=s.deserializeValue(l)}return o}function Ii(i,n){const e={};for(const r of i){if(!(r.identifier in n))continue;const o=n[r.identifier];r.isValue(o)&&(e[r.identifier]=r.cleanValue(o))}return e}function Tn(i,n){const e={};for(const r of i){if(!(r.identifier in n))continue;const o=n[r.identifier];r.isSerializedValue(o)&&(e[r.identifier]=r.cleanSerializedValue(o))}return e}function _r(i,n){const e=Ii(i,n),r={},o={};for(const s of i){if(!(s.identifier in e))continue;const l=e[s.identifier];switch(s.type){case"upload":if(!s.isValue(l))break;o[s.identifier]=l,r[s.identifier]=[];break;case"pass-fail":if(!s.isValue(l))break;o[s.identifier]=l.files,r[s.identifier]={...l,files:[]};break;default:r[s.identifier]=n[s.identifier]}}return[r,o]}function Tr(i,n,e){const r={};for(const o of i){if(!(o.identifier in n))continue;const s=n[o.identifier];switch(o.type){case"upload":if(!o.isValue(s))break;r[o.identifier]=e[o.identifier]??[];break;case"pass-fail":if(!o.isValue(s))break;r[o.identifier]={...s,files:e[o.identifier]??[]};break;default:if(!o.isValue(s))break;r[o.identifier]=s}}return r}const Lr=(i,n)=>{const e={};for(const r of i){const o=n[r.identifier];e[r.identifier]=o!==void 0?o:r.blankValue()}return e},Br=(i,n,e)=>{const r={};for(const o of i){const s=n[o.identifier],l=e[o.identifier];o.areValuesEqual(s,l)||(r[o.identifier]=l)}return r},Ar=(i,n,e)=>{const r={};for(const o of i){const s=n[o.identifier],l=e[o.identifier];o.areValuesEqual(s,l)&&(r[o.identifier]=l)}return r},Ln=(i,n,e)=>i.every(r=>{const o=n[r.identifier],s=e[r.identifier];return r.areValuesEqual(o,s)}),Bn=i=>{const n={};for(const e of i)n[e.identifier]=e.blankValue();return n},Er=(i,n)=>Ln(i,n,Bn(i)),Zo=R.cva(["flex","flex-col"],{variants:{size:{xs:["gap-2"],sm:["gap-4"],md:["gap-6"],lg:["gap-8"],xl:["gap-10"]}}}),qi=R.cva(["flex","flex-col"],{variants:{size:{xs:["gap-2"],sm:["gap-4"],md:["gap-6"],lg:["gap-8"],xl:["gap-10"]}}}),An=d.memo(i=>{const{fieldSection:n}=i,{label:e,description:r}=n,o=Y.useWatch(),{fieldSchema:s,size:l}=d.use(B),f=d.useMemo(()=>s.getFieldSections(),[s]),c=d.useMemo(()=>f.findIndex(({identifier:m})=>m===n.identifier),[f,n.identifier]),h=d.useMemo(()=>f.filter(m=>n.identifier in m.conditions),[f,n.identifier]),p=d.useMemo(()=>h.length===0?!0:h.some(m=>{const V=m.getConditions(n.identifier);return new Mi(V).applyConditions(o)}),[h,n,o]),g=fi(n.fields);return p?t.jsxs(t.Fragment,{children:[c!==0?t.jsx(a.Separator,{size:"full"}):null,t.jsxs("div",{className:"flex flex-col gap-4",children:[(e||r)&&t.jsx(t.Fragment,{children:t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsx(a.Heading,{size:l,children:e}),r&&t.jsx(a.Text,{accentColor:"base",size:l,children:r})]})}),t.jsx("div",{className:qi({size:l}),children:g})]})]}):null});An.displayName="FieldSectionLayout";const li=class li extends Di{constructor(e){const{label:r=null,description:o=null,fields:s,conditions:l={},...f}=e;super(f);C(this,"type","section");C(this,"label");C(this,"description");C(this,"conditions");C(this,"fields",[]);C(this,"fieldObserver",()=>{this.notify(this)});C(this,"initFields",e=>{for(const r of e)r.observe(this.fieldObserver);return e});C(this,"conditionObserver",()=>{this.notify(this)});C(this,"initConditions",e=>{for(const r of Object.values(e).flat())r.observe(this.conditionObserver);return e});this.label=r,this.description=o,this.fields=this.initFields(s),this.conditions=this.initConditions(l)}serialize(){const e={};for(const[r,o]of Object.entries(this.conditions))e[r]=o.map(s=>s.serialize());return{...super.serialize(),label:this.label,description:this.description,conditions:e,fields:this.fields.map(r=>r.serialize())}}getOptions(){return{...super.getOptions(),label:this.label,description:this.description,fields:this.fields,conditions:this.conditions}}duplicate(e){return new li({...this.getOptions(),identifier:e,fields:this.fields.map(r=>r.duplicate(N.v4()))})}setOptions(e){const{label:r,description:o,fields:s,conditions:l,...f}=e;this.label=r??this.label,this.description=o??this.description,this.fields=s||this.fields,this.conditions=l||this.conditions,super.setOptions(f)}getErrors(e){const r={};for(const o of this.fields){const s=o.getError(e[o.identifier]);s&&(r[o.identifier]=s)}return r}getFields(){return this.fields}addField(e,r){const o=[...this.fields];o.splice(r??this.fields.length,0,e),this.fields=this.initFields(o),this.notify(this)}moveField(e,r){const o=[...this.fields],[s]=o.splice(e,1);o.splice(r,0,s),this.fields=o,this.notify(this)}removeField(e){this.fields=this.initFields(this.fields.filter(({identifier:o})=>o!==e.identifier));const r={};for(const[o,s]of Object.entries(this.conditions))r[o]=s.filter(l=>l.field.identifier!==e.identifier);this.conditions=r,this.notify(this)}getConditions(e){return this.conditions[e]}addCondition(e,r){this.conditions=this.initConditions({...this.conditions,[e]:[...this.conditions[e]??[],r]}),this.notify(this)}addConditions(e,r){this.conditions=this.initConditions({...this.conditions,[e]:[...this.conditions[e]??[],...r]}),this.notify(this)}removeCondition(e,r){this.conditions=this.initConditions({...this.conditions,[e]:(this.conditions[e]??[]).filter(o=>o.id!==r.id)}),this.notify(this)}removeConditions(e,r){const o=new Set(r.map(s=>s.id));this.conditions=this.initConditions({...this.conditions,[e]:(this.conditions[e]??[]).filter(s=>!o.has(s.id))}),this.notify(this)}getConditionals(){return new Set(Object.keys(this.conditions))}addConditional(e){this.conditions=this.initConditions({...this.conditions,[e]:[]}),this.notify(this)}removeConditional(e){const r={...this.conditions};delete r[e],this.conditions=this.initConditions(r),this.notify(this)}render(){return t.jsx(An,{fieldSection:this})}};C(li,"deserialize",e=>{const r=e.fields.map(xi),o={};for(const[s,l]of Object.entries(e.conditions))o[s]=qn(r,l);return new li({...e,fields:r,conditions:o})});let X=li;const ee=d.createContext({}),Oi=d.memo(i=>{const{children:n,variant:e,size:r,accentColor:o,onSelectFieldType:s,...l}=i,f=d.useMemo(()=>{const c={[O.Assessment]:[],[O.Capture]:[],[O.Numeric]:[],[O.Selection]:[],[O.Temporal]:[],[O.Text]:[],[O.Verification]:[]};for(const h of vt){const{group:p}=T[h];c[p].push(h)}return c},[]);return t.jsxs(a.Menu.Root,{...l,children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{variant:e,size:r,accentColor:o,children:t.jsx(a.Menu.Scroll,{children:Object.entries(f).map(([c,h])=>{const{name:p}=St[c];return h.length===0?null:t.jsxs(a.Menu.Group,{children:[t.jsx(a.Menu.Label,{children:p}),h.map(g=>t.jsx($r,{fieldType:g,onSelectFieldType:s},g))]},c)})})})]})});Oi.displayName="CreateFieldDropdownMenu";const $r=d.memo(i=>{const{fieldType:n,onSelectFieldType:e}=i,r=d.useCallback(()=>{e(n)},[n,e]),{icon:o,name:s}=T[n];return t.jsxs(a.Menu.Item,{onSelect:r,children:[t.jsx(a.LuIcon,{icon:o}),t.jsx(a.Text,{className:"truncate",children:s})]})});$r.displayName="CreateFieldDropdownMenuItem";const _i=i=>{switch(i){case"text":return new ze({label:"",required:!1,identifier:N.v4()});case"boolean":return new fe({label:"",required:!1,identifier:N.v4()});case"number":return new H({label:"",required:!1,identifier:N.v4()});case"date":return new xe({label:"",required:!1,identifier:N.v4()});case"time":return new Oe({label:"",required:!1,identifier:N.v4()});case"string":return new Se({label:"",required:!1,identifier:N.v4()});case"url":return new _e({label:"",required:!1,identifier:N.v4()});case"select":return new oe({label:"",options:[],required:!1,identifier:N.v4()});case"multi-string":return new he({label:"",required:!1,identifier:N.v4()});case"multi-select":return new te({label:"",options:[],required:!1,identifier:N.v4()});case"upload":return new we({label:"",required:!1,identifier:N.v4(),maximum_files:6,maximum_size:Te});case"qr":return new qe({label:"",required:!1,identifier:N.v4()});case"radio":return new ye({label:"",options:[],required:!1,identifier:N.v4()});case"checkbox-list":return new pe({label:"",options:[],required:!1,identifier:N.v4()});case"pass-fail":return new Ve({label:"",required:!1,identifier:N.v4(),showNotesAndFilesOn:["fail"]});case"otp":return new ge({label:"",validationType:"none",required:!1,identifier:N.v4(),length:6});case"rating":return new ve({label:"",required:!1,identifier:N.v4(),maxRating:5})}},En=i=>{switch(i.type){case"text":return new ri({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"boolean":return new He({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"number":return new Ye({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"date":return new We({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"time":return new oi({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"string":return new ti({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"url":return new si({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"select":return new ni({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"multi-string":return new Ke({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"multi-select":return new Xe({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"upload":return new ai({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"qr":return new ii({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"radio":return new Re({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"checkbox-list":return new Je({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"pass-fail":return new Qe({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"otp":return new Ze({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"rating":return new ei({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i})}},Dr=(i,n)=>{switch(i){case"checkbox-list":return pe.getFieldCreationSchema(n);case"multi-select":return te.getFieldCreationSchema(n);case"number":return H.getFieldCreationSchema(n);case"radio":return ye.getFieldCreationSchema(n);case"select":return oe.getFieldCreationSchema(n);case"string":return Se.getFieldCreationSchema(n);case"text":return ze.getFieldCreationSchema(n);case"upload":return we.getFieldCreationSchema(n);case"pass-fail":return Ve.getFieldCreationSchema(n);case"otp":return ge.getFieldCreationSchema(n);case"rating":return ve.getFieldCreationSchema(n);default:return}},Pr=d.memo(i=>{const{popoverInputs:n,...e}=i;return t.jsxs(a.Popover.Root,{children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:t.jsxs(a.Button,{variant:"soft",type:"button",size:"sm",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:Lo}),"Settings"]})}),t.jsx(a.Popover.Content,{size:"sm",...e,children:t.jsx("div",{className:R.cx("flex w-full max-w-[350px] flex-col",qi({size:"sm"})),children:n})})]})});Pr.displayName="FieldSettingsPopover";const jr=d.memo(i=>{const{parentPath:n,fieldIndex:e,field:r}=i,o=hi(),{disableRequiredFields:s}=d.use(ee),[l,f]=d.useState(void 0);d.useEffect(()=>{r.image instanceof Promise?r.image.then(f).catch(console.error):f(r.image)},[r]);const c=d.useCallback(()=>{r.setOptions({image:void 0})},[r]),[h,p]=d.useMemo(()=>{const z=[],b=[],L=Dr(r.type,`${n}.${e}`)??[];for(const G of L)G.showDirectly?z.push(G.field):b.push(G.field);return[z,b]},[r,n,e]),g=fi(h),m=fi(p),V=p.length>0,F=d.useCallback(()=>{l&&o(()=>({file:l}))},[o,l]),w=d.useCallback(z=>{r.setOptions({required:!!z})},[r]),S=d.useCallback(z=>{r.setOptions({label:z.target.value})},[r]),v=d.useCallback(z=>{r.setOptions({description:z.target.value})},[r]),{icon:I,name:q}=T[r.type];return t.jsxs("div",{className:"flex w-full grow flex-col gap-4",children:[t.jsxs("div",{className:"flex w-full justify-between gap-2",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs(a.Badge,{accentColor:"base",variant:"soft",size:"sm",children:[t.jsx(a.LuIcon,{icon:I}),q]}),!s&&t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Checkbox.Root,{checked:r.required,onCheckedChange:w,size:"sm",children:t.jsx(a.Checkbox.Indicator,{children:t.jsx(a.LuIcon,{icon:W})})}),t.jsx(a.Text,{size:"sm",accentColor:"base",children:"Required"})]})]}),V&&t.jsx(Pr,{popoverInputs:m,align:"end"})]}),l&&t.jsxs("div",{className:"group relative inline-block w-full min-w-[300px]",children:[t.jsx(Me,{className:"h-[100px] w-full min-w-[300px] cursor-pointer rounded-md object-cover",file:l,onClick:F}),t.jsx(a.IconButton,{type:"button",className:"group-hover:not-disabled:flex absolute right-2 top-2 hidden",variant:"solid",accentColor:"base","aria-label":"delete",onClick:c,size:"sm",children:t.jsx(a.LuIcon,{icon:ue})})]}),t.jsxs("div",{className:"flex w-full flex-col gap-2 overflow-hidden",children:[t.jsx(a.Input.Root,{variant:"outline",size:"md",children:t.jsx(a.Input.Field,{placeholder:"Enter your question",value:r.label??"",onChange:S,maxLength:200})}),t.jsx(a.TextArea,{className:"field-sizing-content",placeholder:"Enter a field description (optional)",value:r.description??"",onChange:v,maxLength:1e3,resize:"vertical",size:"md"})]}),h.length>0&&t.jsx("div",{className:R.cx("w-full",qi({size:"sm"})),children:g})]})});jr.displayName="FieldBuilder";const $n=d.memo(i=>{const{field:n,fieldSection:e,fieldIndex:r,sectionIndex:o}=i,s=d.useRef(null),l=`fields.${o}.fields`,f=d.useCallback(w=>{e.addField(_i(w),r+1)},[r,e]),c=d.useCallback(()=>{e.addField(n.duplicate(N.v4()))},[n,e]),h=d.useCallback(w=>{const S=w==="up"?o-1:o+1;e.moveField(r,S)},[e,r,o]),p=d.useCallback(w=>{const{files:S}=w.target;if(!S||S.length!==1)return;const v=S.item(0);if(v){if(v.size>wt){a.toast.error({title:"File upload error",description:`The file ${v.name} exceeded the maximum file size`});return}n.setOptions({image:v})}},[n]),g=d.useCallback(()=>{h("up")},[h]),m=d.useCallback(()=>{h("down")},[h]),V=d.useCallback(()=>{var w;(w=s.current)==null||w.click()},[]),F=d.useCallback(()=>{e.removeField(n)},[n,e]);return t.jsxs(a.Card,{className:"flex w-full items-center justify-between gap-4",size:"sm",children:[t.jsx(jr,{fieldIndex:r,field:n,parentPath:l}),t.jsxs(a.ButtonGroup,{className:"flex flex-col gap-0.5",variant:"ghost",accentColor:"base",size:"sm",children:[t.jsx(Oi,{onSelectFieldType:f,size:"sm",children:t.jsx(a.IconButton,{type:"button",children:t.jsx(a.LuIcon,{icon:Z})})}),t.jsx(a.IconButton,{type:"button",onClick:g,children:t.jsx(a.LuIcon,{icon:it})}),t.jsx(a.IconButton,{type:"button",onClick:m,children:t.jsx(a.LuIcon,{icon:et})}),t.jsx(a.IconButton,{type:"button",onClick:c,children:t.jsx(a.LuIcon,{icon:Ai})}),t.jsx(a.IconButton,{type:"button",onClick:V,children:t.jsx(a.LuIcon,{icon:Qn})}),t.jsx(a.IconButton,{type:"button",onClick:F,children:t.jsx(a.LuIcon,{icon:ue})})]}),t.jsx("input",{className:"hidden",ref:s,type:"file",accept:"image/*",onChange:p})]})});$n.displayName="FieldBuilderWithActions";const Dn=d.memo(i=>{const{children:n,variant:e,size:r,accentColor:o,fields:s,onSelectField:l,...f}=i;return t.jsxs(a.Menu.Root,{...f,children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{variant:e,size:r,accentColor:o,children:t.jsx(a.Menu.Scroll,{children:s.map(c=>t.jsx(Ur,{field:c,onSelectField:l},c.identifier))})})]})});Dn.displayName="FieldDropdownMenu";const Ur=d.memo(i=>{const{field:n,onSelectField:e}=i,r=d.useCallback(()=>{e(n)},[n,e]);return t.jsxs(a.Menu.Item,{onSelect:r,children:[t.jsx(a.LuIcon,{icon:T[n.type].icon}),n.label||$]})});Ur.displayName="FieldDropdownMenuItem";const Gr=d.memo(i=>{const{children:n,variant:e,size:r,accentColor:o,fieldSections:s,onSelectFieldSection:l,...f}=i;return t.jsxs(a.Menu.Root,{...f,children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{variant:e,size:r,accentColor:o,children:s.map(c=>t.jsx(kr,{fieldSection:c,onSelectFieldSection:l},c.identifier))})]})});Gr.displayName="FieldSectionDropdownMenu";const kr=d.memo(i=>{const{fieldSection:n,onSelectFieldSection:e}=i,r=d.useCallback(()=>{e(n)},[n,e]);return t.jsxs(a.Menu.Item,{onSelect:r,children:[t.jsx(a.LuIcon,{icon:Rn}),n.label||Cn]})});kr.displayName="FieldSectionDropdownMenuItem";const Hr=d.memo(i=>{const{id:n,sourceX:e,sourceY:r,targetX:o,targetY:s,style:l,markerEnd:f,data:c}=i,{targetSection:h,sourceSection:p,layoutDirection:g}=c,m=d.useMemo(()=>p.getConditions(h.identifier),[p,h.identifier]),V=d.useCallback(()=>{p.removeConditional(h.identifier)},[p,h.identifier]),F=d.useCallback(q=>{p.addCondition(h.identifier,En(q))},[p,h.identifier]),w=d.useCallback(q=>{p.removeCondition(h.identifier,q)},[p,h.identifier]),[S,v,I]=_.getBezierPath({sourceX:e,sourceY:r,sourcePosition:g==="LR"?_.Position.Right:_.Position.Bottom,targetX:o,targetY:s,targetPosition:g==="LR"?_.Position.Left:_.Position.Top});return t.jsxs(t.Fragment,{children:[t.jsx(_.BaseEdge,{id:n,path:S,style:l,markerEnd:f,labelX:v,labelY:I}),t.jsx(_.EdgeLabelRenderer,{children:t.jsxs(a.Card,{size:"xs",variant:"surface",className:"nodrag nopan bg-(--base-2) pointer-events-auto absolute inline-flex flex-col gap-2",onMouseDown:a.stopPropagation,onClick:a.stopPropagation,"data-floating-content":"",style:{transform:`translate(-50%, -50%) translate(${v}px, ${I}px)`},children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Text,{size:"xs",className:"max-w-[280px] truncate",children:p.label||"Untitled section"}),t.jsxs("div",{className:"ml-auto flex items-center gap-1",children:[t.jsx(Dn,{fields:p.fields,onSelectField:F,children:t.jsx(a.IconButton,{"aria-label":"Add condition",type:"button",variant:"surface",size:"xs",accentColor:"base",children:t.jsx(a.LuIcon,{icon:Z})})}),t.jsxs(a.Tooltip.Root,{children:[t.jsx(a.Tooltip.Trigger,{asChild:!0,children:t.jsx(a.IconButton,{"aria-label":"Remove conditional logic",type:"button",variant:"surface",size:"xs",accentColor:"base",color:"danger",onClick:V,children:t.jsx(a.LuIcon,{icon:ue})})}),t.jsx(a.Tooltip.Content,{size:"sm",children:"Remove conditional logic"})]})]})]}),m.length>0&&t.jsx("div",{className:"flex h-max w-full flex-col flex-wrap gap-1",children:m.map(q=>t.jsx(d.Fragment,{children:q.render({onRemove:w})},q.id))})]})})]})});Hr.displayName="FieldSectionConditionEdgeComponent";const Jr=d.memo(i=>{const{data:n,selected:e}=i,{fieldSection:r,index:o,layoutDirection:s}=n,{fieldSchema:l}=d.use(ee),f=d.useCallback(()=>{l.removeFieldSection(r)},[l,r]),c=d.useCallback(V=>{r.addField(_i(V))},[r]),h=d.useCallback(()=>{const V=new X({identifier:N.v4(),fields:[]});l.addFieldSection(V),r.addConditional(V.identifier)},[l,r]),p=d.useCallback(()=>{l.addFieldSection(r.duplicate(N.v4()))},[l,r]),g=d.useCallback(V=>{r.setOptions({label:V.target.value})},[r]),m=d.useCallback(V=>{r.setOptions({description:V.target.value})},[r]);return t.jsxs(a.Card,{variant:"surface",className:"bg-(--base-2) relative cursor-pointer",size:"sm","data-selected":e?"true":void 0,children:[t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsxs("div",{className:"flex w-full flex-col gap-2 overflow-hidden",children:[t.jsx(a.Input.Root,{variant:"outline",size:"md",accentColor:"base",children:t.jsx(a.Input.Field,{placeholder:"Enter a section label (optional)",value:r.label??"",onChange:g,maxLength:200})}),t.jsx(a.TextArea,{className:"field-sizing-content",placeholder:"Enter a section description (optional)",value:r.description??"",onChange:m,maxLength:1e3,resize:"vertical",size:"md"})]}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(a.Text,{weight:"bold",children:"Fields"}),t.jsx(Oi,{onSelectFieldType:c,size:"sm",children:t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:Z})," Add field"]})})]}),t.jsx("div",{className:"flex flex-col gap-3",children:r.fields.map((V,F)=>t.jsx($n,{field:V,fieldSection:r,fieldIndex:F,sectionIndex:o},V.identifier))})]}),t.jsx(_.NodeToolbar,{isVisible:!0,position:_.Position.Right,align:"start",offset:8,onMouseDown:a.stopPropagation,children:t.jsx(a.Card,{variant:"surface",className:"bg-(--base-2) flex flex-col items-center gap-1 p-1",size:"xs",onClick:a.stopPropagation,children:t.jsxs(a.ButtonGroup,{className:"flex flex-col gap-2",variant:"surface",size:"xs",accentColor:"base",children:[t.jsx(a.IconButton,{type:"button",onClick:h,children:t.jsx(a.LuIcon,{icon:bo})}),t.jsx(a.IconButton,{type:"button",onClick:p,children:t.jsx(a.LuIcon,{icon:Ai})}),t.jsx(a.IconButton,{type:"button",onClick:f,children:t.jsx(a.LuIcon,{icon:ue})})]})})}),t.jsx(_.Handle,{type:"target",className:"size-4! bg-(--base-3)! border-(--base-7)!",position:s==="LR"?_.Position.Left:_.Position.Top}),t.jsx(_.Handle,{type:"source",className:"size-4! bg-(--base-3)! border-(--base-7)!",position:s==="LR"?_.Position.Right:_.Position.Bottom})]})});Jr.displayName="CustomNode";const Qo={fieldSection:Jr},Ro={fieldSectionCondition:Hr},ea=(i,n,e)=>{const r=new Gn.graphlib.Graph().setDefaultEdgeLabel(()=>({}));return r.setGraph({rankdir:e,nodesep:200,edgesep:500,ranksep:500}),n.forEach(o=>r.setEdge(o.source,o.target,{width:500,height:200,labelpos:"c"})),i.forEach(o=>{var s,l;return r.setNode(o.id,{...o,width:((s=o.measured)==null?void 0:s.width)??0,height:((l=o.measured)==null?void 0:l.height)??0})}),Gn.layout(r),[i.map(o=>{var c,h;const s=r.node(o.id),l=s.x-(((c=o.measured)==null?void 0:c.width)??0)/2,f=s.y-(((h=o.measured)==null?void 0:h.height)??0)/2;return{...o,position:{x:l,y:f}}}),n]},ia={hideAttribution:!0},Wr=d.memo(()=>{var Q;const{errors:i}=Y.useFormState(),{handleSubmit:n}=Y.useFormContext(),{onSave:e,onCancel:r}=d.use(ee),{fieldSchema:o}=d.use(ee),s=d.useRef(null),[l,f]=d.useState(),[c,h]=d.useState("TB");d.useLayoutEffect(()=>{s.current&&s.current.classList.remove("light")},[]);const p=d.useMemo(()=>o.fieldSections.map((J,K)=>({id:J.identifier,position:{x:0,y:0},data:{index:K,fieldSection:J,layoutDirection:c},draggable:!0,type:"fieldSection"})),[o.fieldSections,c]),g=d.useMemo(()=>{const J=[],K={};for(const ne of o.fieldSections)K[ne.identifier]=ne;for(const ne of o.fieldSections){const Ti=ne.conditions;for(const[di,sa]of Object.entries(Ti))J.push({id:`${ne.identifier}-${di}`,source:ne.identifier,target:di,data:{targetSection:K[di],sourceSection:ne,layoutDirection:c},animated:sa.length>0,markerEnd:_.MarkerType.Arrow,style:{strokeWidth:2,stroke:"var(--base-a8)"},type:"fieldSectionCondition"})}return J},[o.fieldSections,c]),[m,V,F]=_.useNodesState(p),[w,S,v]=_.useEdgesState(g);d.useEffect(()=>{V(p)},[p,V]),d.useEffect(()=>{S(g)},[g,S]);const[I,q]=d.useMemo(()=>ea(m,w,c),[w,c,m]),z=d.useCallback(()=>{o.addFieldSection(new X({identifier:N.v4(),fields:[]}))},[o]),b=d.useCallback(J=>{const{source:K,target:ne}=J,Ti=o.fieldSections.find(({identifier:di})=>di===K);Ti.setOptions({conditions:{...Ti.conditions,[ne]:[]}})},[o.fieldSections]),L=d.useCallback(J=>{const K=o.getSectionDependencyGraph();return!jn.willCreateCycle(K,J.source,J.target)},[o]),G=d.useCallback(()=>{l==null||l.zoomOut()},[l]),ie=d.useCallback(()=>{l==null||l.zoomIn()},[l]),ce=d.useCallback(()=>{l==null||l.fitView()},[l]);return t.jsxs("form",{className:"flex size-full flex-col gap-4",onSubmit:n(e),children:[t.jsxs(a.Card,{className:"relative size-full",variant:"outline",children:[t.jsx(_.ReactFlow,{ref:s,onInit:f,nodes:I,onNodesChange:F,edges:q,onEdgesChange:v,nodeTypes:Qo,edgeTypes:Ro,onConnect:b,attributionPosition:"bottom-left",fitView:!0,minZoom:0,isValidConnection:L,proOptions:ia}),t.jsx(_.Panel,{position:"top-left",children:t.jsx(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:t.jsxs(a.Button,{type:"button",variant:"surface",onClick:z,children:[t.jsx(a.LuIcon,{icon:Z})," Add section"]})})}),t.jsxs(_.Panel,{position:"top-right",className:"flex flex-col items-center gap-2",children:[t.jsxs(a.ToggleGroup.Root,{className:"flex flex-col",type:"single",accentColor:"base",size:"sm",value:c,onValueChange:h,children:[t.jsx(a.ToggleGroup.IconItem,{className:"rounded-b-none",value:"LR",type:"button",children:t.jsx(a.LuIcon,{icon:go})}),t.jsx(a.ToggleGroup.IconItem,{className:"rounded-t-none",value:"TB",type:"button",children:t.jsx(a.LuIcon,{icon:po})})]}),t.jsx(a.Separator,{size:"sm"}),t.jsxs(a.ButtonGroup,{className:"flex flex-col",size:"sm",accentColor:"base",variant:"soft",children:[t.jsx(a.IconButton,{className:"rounded-b-none",onClick:ie,type:"button",children:t.jsx(a.LuIcon,{icon:Z})}),t.jsx(a.IconButton,{onClick:G,radius:"none",type:"button",children:t.jsx(a.LuIcon,{icon:ui})}),t.jsx(a.IconButton,{className:"rounded-t-none",onClick:ce,type:"button",children:t.jsx(a.LuIcon,{icon:Ao})})]})]}),t.jsx(_.Panel,{position:"bottom-right",children:t.jsxs(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:[r&&t.jsx(a.Button,{type:"button",variant:"soft",accentColor:"base",onClick:r,children:"Cancel"}),t.jsx(a.Button,{type:"submit",variant:"surface",children:"Save"})]})})]}),!!((Q=i.fields)!=null&&Q.message)&&t.jsx(a.Text,{size:"xs",accentColor:"danger",children:i.fields.message})]})});Wr.displayName="FormBuilderFlowBuilder";const na=(i,n,e={})=>{const{conditions:r=!1}=e,o=i.get(n.identifier);if(!o)throw new Error(`Attempting to reseed serialized section with identifier ${n.identifier} which is not present in the reseeded identifier map`);const s=new Map,l=n.fields.map(c=>{const h=N.v4(),{image:p,...g}=c;return s.set(c.identifier,h),{...g,identifier:h}}),f={};if(r)for(const[c,h]of Object.entries(n.conditions??{})){const p=i.get(c);if(!p)continue;const g=h.map(m=>{const V=s.get(m.fieldId);if(!V)throw new Error(`Serialized condition referencing undefined field with identifier: ${m.fieldId}`);return{...m,fieldId:V}});f[p]=g}return{...n,identifier:o,conditions:f,fields:l}},ta=(i,n={})=>{const e=new Map(i.map(r=>[r.identifier,N.v4()]));return i.map(r=>na(e,r,n))},Pn=(i,n)=>{const e={},r=i.filter(o=>o instanceof X);for(const o of i)if(o instanceof X){const s=r.filter(f=>o.identifier in f.conditions);if(s.length>0&&!s.some(f=>{const c=f.getConditions(o.identifier);return new Mi(c).applyConditions(n)}))continue;const l=o.getErrors(n);Object.assign(e,l)}else{if(!(o instanceof k))throw new Error("Invalid field type");const s=o.identifier,l=o.getError(kn(n,s));l&&ao(e,s,l)}return e},ra=async i=>{const n={},e=[];for(const r of i){const{fields:o}=r,s=[];for(const l of o){if(l.image){if(l.image instanceof Promise)try{n[l.identifier]=await l.image}catch(f){console.error("Failed to get image from promise",f)}else n[l.identifier]=l.image;delete l.image}s.push(l)}e.push({...r,fields:s})}return{fields:e,images:n}};async function oa(i){const n={};for(const[e,r]of Object.entries(i))n[e]=await Promise.all(r);return n}class Ne extends De{constructor(e){super();C(this,"fieldSections");C(this,"fieldObserver",()=>{this.notify(this)});C(this,"initFields",e=>{for(const r of e)r.observe(this.fieldObserver);return e});this.fieldSections=this.initFields(e)}serialize(){return this.fieldSections.map(e=>e.serialize())}static deserialize(e){return new Ne(e.map(X.deserialize))}static reseedFieldSections(e,r){return ta(e,r)}getFields(){return this.fieldSections.flatMap(e=>e.getFields())}getFieldSections(){return this.fieldSections}addFieldSection(e,r){const o=[...this.fieldSections];o.splice(r??this.fieldSections.length,0,e),this.fieldSections=this.initFields(o),this.notify(this)}removeFieldSection(e){const r=this.fieldSections.filter(o=>o.identifier!==e.identifier);for(const o of r)o.removeConditional(o.identifier);this.fieldSections=this.initFields(r),this.notify(this)}moveFieldSection(e,r){const o=[...this.fieldSections],[s]=o.splice(e,1);o.splice(r,0,s),this.fieldSections=this.initFields(o),this.notify(this)}getSectionDependencyGraph(){const e=new ro.DirectedGraph({type:"directed"});for(const r of this.fieldSections)for(const o of Object.keys(r.conditions))e.mergeEdge(r.identifier,o);return e}getDependenciesOfSection(e){const r=this.getSectionDependencyGraph(),o=new Map(this.fieldSections.map(l=>[l.identifier,l])),s=[];return oo.bfsFromNode(r,e,(l,f,c)=>{s.push(o.get(l))},{mode:"in"}),s}cleanValues(e){return Ii(this.getFields(),e)}cleanSerializedValues(e){return Tn(this.getFields(),e)}deserializeValues(e,r){return Or(this.getFields(),e,r)}serializeValues(e,r){return qr(this.getFields(),e,r)}initializeValues(e){return Lr(this.getFields(),e)}validateValues(e){return Pn(this.getFieldSections(),e)}areValuesValid(e){return Object.keys(this.validateValues(e)).length===0}deserializeConditions(e){return qn(this.getFields(),e)}cleanConditions(e){return _n(this.getFields(),e)}serializeConditions(e){return xr(this.getFields(),e)}cleanSerializedConditions(e){return On(this.getFields(),e)}changedFieldValues(e,r){return Br(this.getFields(),e,r)}unchangedFieldValues(e,r){return Ar(this.getFields(),e,r)}areValuesEqual(e,r){return Ln(this.getFields(),e,r)}areValuesBlank(e){return Er(this.getFields(),e)}blankValues(){return Bn(this.getFields())}extractFilesAndPromisesFromFieldValues(e){return _r(this.getFields(),e)}insertFilesAndPromisesToFieldValues(e,r){return Tr(this.getFields(),e,r)}}const Xr=d.memo(i=>{const{sourceFieldSection:n,targetFieldSection:e}=i,r=d.useMemo(()=>n.getConditions(e.identifier),[n,e.identifier]),o=d.useCallback(()=>{n.removeConditional(e.identifier)},[n,e.identifier]),s=d.useCallback(f=>{n.addCondition(e.identifier,En(f))},[n,e.identifier]),l=d.useCallback(f=>{n.removeCondition(e.identifier,f)},[n,e.identifier]);return t.jsxs(a.Card,{className:"flex flex-col gap-2",size:"sm",children:[t.jsxs(a.ButtonGroup,{className:"flex justify-between gap-2",size:"sm",accentColor:"base",variant:"soft",children:[t.jsxs(a.Badge,{accentColor:"base",variant:"soft",size:"sm",children:[t.jsx(a.LuIcon,{icon:Rn}),n.label??Cn]}),t.jsx(a.IconButton,{type:"button",onClick:o,variant:"ghost",children:t.jsx(a.LuIcon,{icon:ue})})]}),t.jsxs("div",{className:"flex h-max w-full flex-wrap gap-2",children:[r.map(f=>f.render({onRemove:l})),t.jsx(Dn,{fields:n.fields,onSelectField:s,align:"start",children:t.jsx(a.IconButton,{type:"button",size:"sm",variant:"soft",accentColor:"base",children:t.jsx(a.LuIcon,{icon:Z})})})]})]})});Xr.displayName="FieldSectionConditionalItem";const Kr=d.memo(i=>{const{fieldSection:n}=i,{fieldSchema:e}=d.use(ee),r=d.useMemo(()=>e.fieldSections.filter(c=>n.identifier in c.conditions),[e.fieldSections,n.identifier]),o=d.useCallback(c=>{c.addConditional(n.identifier)},[n.identifier]),s=d.useCallback(c=>{n.setOptions({label:c.target.value})},[n]),l=d.useCallback(c=>{n.setOptions({description:c.target.value})},[n]),f=d.useMemo(()=>{const c=e.getSectionDependencyGraph();return e.fieldSections.filter(h=>!jn.willCreateCycle(c,h.identifier,n.identifier))},[n.identifier,e]);return t.jsxs("div",{className:"flex w-full grow flex-col gap-4",children:[t.jsxs("div",{className:"flex w-full flex-col gap-2 overflow-hidden",children:[t.jsx(a.Input.Root,{variant:"outline",size:"md",children:t.jsx(a.Input.Field,{placeholder:"Enter a section label (optional)",value:n.label??"",onChange:s,maxLength:200})}),t.jsx(a.TextArea,{className:"field-sizing-content",placeholder:"Enter a section description (optional)",value:n.description??"",onChange:l,maxLength:1e3,resize:"vertical",size:"md"})]}),t.jsx(a.Separator,{size:"full"}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs("div",{className:"flex justify-between gap-2",children:[t.jsx(a.Text,{accentColor:"base",children:"Conditions"}),t.jsx(Gr,{fieldSections:f,onSelectFieldSection:o,children:t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",className:"w-max",children:[t.jsx(a.LuIcon,{icon:Z}),"Add condition"]})})]}),r.map(c=>t.jsx(Xr,{sourceFieldSection:c,targetFieldSection:n},c.identifier))]}),t.jsx(a.Separator,{size:"full"})]})});Kr.displayName="FieldSectionBuilder";const Yr=d.memo(i=>{const{fieldSection:n,sectionIndex:e}=i,{fieldSchema:r}=d.use(ee),o=a.useAlertDialog(),s=d.useCallback(()=>{r.removeFieldSection(n)},[r,n]),l=d.useCallback(w=>{const S=w==="up"?e-1:e+1;r.moveFieldSection(e,S)},[r,e]),f=d.useCallback(()=>{r.addFieldSection(n.duplicate(N.v4()))},[r,n]),c=d.useCallback(w=>{n.addField(_i(w))},[n]),h=d.useCallback(()=>{l("up")},[l]),p=d.useCallback(()=>{l("down")},[l]),g=d.useCallback(async()=>{const w=[n.serialize()],S=Ne.reseedFieldSections(w,{conditions:!1}),v=JSON.stringify(S);await navigator.clipboard.writeText(v),a.toast.success({title:"Section copied"})},[n]),m=d.useCallback(async()=>{const S=r.getDependenciesOfSection(n.identifier).map(q=>q.serialize()),v=Ne.reseedFieldSections(S,{conditions:!0}),I=JSON.stringify(v);await navigator.clipboard.writeText(I),a.toast.success({title:"Section copied"})},[n,r]),V=d.useCallback(async()=>{const w=r.getDependenciesOfSection(n.identifier),S=w.length>1,v=w.length-1;S?o({title:"Copy section dependencies?",description:`This section has ${v} dependent section${v>1?"s":""} that will also be copied to maintain the conditions. Do you want to include these dependencies?`,action:"Include",onAction:m,cancel:"Dont include",onCancel:g}):g()},[n,r,o,m,g]),F=d.useCallback(async()=>{let w="";try{w=await navigator.clipboard.readText()}catch{a.toast.error({title:"Paste failed",description:"Unable to read clipboard contents."});return}const S=w.trim();if(!S){a.toast.error({title:"Paste failed",description:"Clipboard is empty."});return}let v;try{v=JSON.parse(S)}catch{a.toast.error({title:"Invalid JSON",description:"Check the JSON and try again."});return}const I=Array.isArray(v)?v:[v],q=[];for(const z of I){if(!z||typeof z!="object")continue;const b=z;if(b.type!=="section"||!Array.isArray(b.fields))continue;const L={type:"section",identifier:typeof b.identifier=="string"?b.identifier:N.v4(),label:typeof b.label=="string"||b.label===null?b.label:null,description:typeof b.description=="string"||b.description===null?b.description:null,conditions:b.conditions&&typeof b.conditions=="object"?b.conditions:{},fields:b.fields};try{q.push(X.deserialize(L))}catch{}}if(q.length===0){a.toast.error({title:"Paste failed",description:"No valid sections found in the JSON."});return}q.forEach((z,b)=>{r.addFieldSection(z,e+1+b)}),a.toast.success({title:"Section pasted",description:"Serialized JSON imported successfully."})},[r,e]);return t.jsxs(a.Card,{variant:"outline",className:"flex w-full items-center justify-between gap-4",size:"sm",children:[t.jsxs("div",{className:"flex w-full grow flex-col gap-4",children:[t.jsx(Kr,{fieldSection:n}),t.jsxs("div",{className:"flex w-full flex-col gap-2",children:[t.jsxs("div",{className:"flex justify-between gap-2",children:[t.jsx(a.Text,{accentColor:"base",size:"md",children:"Fields"}),t.jsx(Oi,{onSelectFieldType:c,size:"sm",children:t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",children:[t.jsx(a.LuIcon,{icon:Z})," Add field"]})})]}),n.fields.map((w,S)=>t.jsx($n,{field:w,fieldSection:n,fieldIndex:S,sectionIndex:e},w.identifier))]})]}),t.jsxs(a.ButtonGroup,{className:"flex flex-col gap-0.5",variant:"ghost",accentColor:"base",size:"sm",children:[t.jsx(a.IconButton,{type:"button",onClick:h,children:t.jsx(a.LuIcon,{icon:it})}),t.jsx(a.IconButton,{type:"button",onClick:p,children:t.jsx(a.LuIcon,{icon:et})}),t.jsxs(a.Menu.Root,{align:"end",children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.IconButton,{type:"button",children:t.jsx(a.LuIcon,{icon:Zn})})}),t.jsxs(a.Menu.Content,{size:"sm",children:[t.jsxs(a.Menu.Item,{onSelect:f,children:[t.jsx(a.LuIcon,{icon:Ai}),"Duplicate section"]}),t.jsxs(a.Menu.Item,{onSelect:V,children:[t.jsx(a.LuIcon,{icon:Xn}),"Copy JSON"]}),t.jsxs(a.Menu.Item,{onSelect:F,children:[t.jsx(a.LuIcon,{icon:Kn}),"Paste JSON"]}),t.jsxs(a.Menu.Item,{onSelect:s,children:[t.jsx(a.LuIcon,{icon:ue}),"Delete section"]})]})]})]})]})});Yr.displayName="FieldSectionWithActions";const Zr=d.memo(()=>{var c;const{handleSubmit:i}=Y.useFormContext(),{errors:n}=Y.useFormState(),{onSave:e,onCancel:r}=d.use(ee),{fieldSchema:o}=d.use(ee),s=d.useCallback(()=>{o.addFieldSection(new X({identifier:N.v4(),fields:[]}))},[o]),l=d.useCallback(async()=>{try{const h=o.serialize(),p=Ne.reseedFieldSections(h),g=JSON.stringify(p);await navigator.clipboard.writeText(g),a.toast.success({title:"Sections copied",description:"All sections JSON copied to clipboard."})}catch{a.toast.error({title:"Copy failed",description:"Unable to copy the sections JSON."})}},[o]),f=d.useCallback(async()=>{let h="";try{h=await navigator.clipboard.readText()}catch{a.toast.error({title:"Paste failed",description:"Unable to read clipboard contents."});return}const p=h.trim();if(!p){a.toast.error({title:"Paste failed",description:"Clipboard is empty."});return}let g;try{g=JSON.parse(p)}catch{a.toast.error({title:"Invalid JSON",description:"Check the JSON and try again."});return}const m=Array.isArray(g)?g:[g],V=[];for(const w of m){if(!w||typeof w!="object")continue;const S=w;if(S.type!=="section"||!Array.isArray(S.fields))continue;const v={type:"section",identifier:typeof S.identifier=="string"?S.identifier:N.v4(),label:typeof S.label=="string"||S.label===null?S.label:null,description:typeof S.description=="string"||S.description===null?S.description:null,conditions:S.conditions&&typeof S.conditions=="object"?S.conditions:{},fields:S.fields};try{V.push(X.deserialize(v))}catch{}}if(V.length===0){a.toast.error({title:"Paste failed",description:"No valid sections found in the JSON."});return}const F=o.fieldSections.length;V.forEach((w,S)=>{o.addFieldSection(w,F+S)}),a.toast.success({title:"Sections pasted",description:"Serialized JSON imported successfully."})},[o]);return t.jsxs("form",{className:"flex flex-col gap-4",onSubmit:i(e),children:[t.jsxs("div",{className:"flex flex-col gap-4",children:[t.jsxs("div",{className:"flex items-center justify-end gap-2",children:[t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",onClick:l,children:[t.jsx(a.LuIcon,{icon:Xn})," Copy JSON"]}),t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",onClick:f,children:[t.jsx(a.LuIcon,{icon:Kn})," Paste JSON"]})]}),o.fieldSections.map((h,p)=>t.jsx(Yr,{fieldSection:h,sectionIndex:p},h.identifier)),t.jsxs(a.Button,{className:"mb-4",type:"button",variant:"soft",accentColor:"base",size:"sm",onClick:s,children:[t.jsx(a.LuIcon,{icon:Z})," Add section"]})]}),!!((c=n.fields)!=null&&c.message)&&t.jsx(a.Text,{size:"xs",accentColor:"danger",children:n.fields.message}),t.jsxs(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:[r&&t.jsx(a.Button,{type:"button",variant:"soft",accentColor:"base",onClick:r,children:"Cancel"}),t.jsx(a.Button,{type:"submit",variant:"surface",children:"Save"})]})]})});Zr.displayName="FormBuilderListBuilder";function Qr(i){const n=e=>{const r={};for(const[o,s]of Object.entries(e))typeof s=="string"?r[o]={type:"validate",message:s}:r[o]=n(s);return r};return n(i)}const Rr=d.memo(d.forwardRef((i,n)=>{const{disabled:e=!1,fieldSchema:r,values:o={},onValuesChange:s,onSubmit:l,submitText:f="Submit",hideSubmit:c=!1,cancelText:h,onCancel:p,hideCancel:g=!1,className:m,submitButtonProps:V,cancelButtonProps:F,cancelIcon:w,submitIcon:S,size:v="md"}=i,I=d.useMemo(()=>r.initializeValues(o),[r,o]),q=d.useCallback(Q=>{l==null||l(Q)},[l]),z=Y.useForm({values:I,mode:"onBlur",criteriaMode:"all",disabled:e,resolver:Q=>{const J=r.validateValues(Q),K=Qr(J);return Object.keys(J).length>0?{values:{},errors:K}:{values:Q,errors:{}}}}),b=d.useCallback(Q=>{s==null||s(Q)},[s]);d.useEffect(()=>{const{unsubscribe:Q}=z.watch((J,{type:K})=>{K==="change"&&b(J)});return()=>{Q()}},[z,b]);const L=ot(r.getFieldSections()),G=d.useMemo(()=>({fieldSchema:r,size:v}),[r,v]),ie=!g&&!!p,ce=!c;return t.jsx(Y.FormProvider,{...z,children:t.jsx(B,{value:G,children:t.jsxs("form",{ref:n,className:R.cx(m,"flex flex-col gap-4"),onSubmit:z.handleSubmit(q),children:[t.jsx("div",{className:Zo({size:v}),children:L}),!e&&(ie||ce)?t.jsxs(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:v,children:[ie?t.jsxs(a.Button,{accentColor:"base",type:"button",variant:"soft",onClick:p,...F,children:[t.jsx(a.LuIcon,{icon:w??re}),h]}):null,ce?t.jsxs(a.Button,{type:"submit",accentColor:"primary",variant:"surface",...V,children:[t.jsx(a.LuIcon,{icon:S??W}),f]}):null]}):null]})})})})),eo=d.memo(()=>{const{fieldSchema:i}=d.use(ee);return t.jsx(Rr,{fieldSchema:i,disabled:!1})});eo.displayName="FormBuilderPreview";const io=d.memo(i=>{const{children:n,initialFields:e,onSave:r,onCancel:o,disableRequiredFields:s=!1}=i,l=d.useCallback(F=>{var q;const w={};(!F.fields||F.fields.length===0)&&(w.fields="At least one field is required.");const S=[];for(const[z,b]of F.fields.entries())for(const[L,G]of b.fields.entries()){const ie=((q=Dr(G.type,`fields.${z}.fields.${L}`))==null?void 0:q.map(({field:ce})=>ce))??[];S.push(...ie)}const v={};for(const z of S)v[z.identifier]=kn(F,z.identifier);const I=Pn(S,v);return Object.keys(I).length>0&&(w.fields=I.fields),Object.keys(w).length>0&&a.toast.error({title:"Some form settings are invalid",description:"Please check settings highlighted in red."}),w},[]),f=d.useMemo(()=>({fields:e??[]}),[e]),c=Y.useForm({values:f,mode:"onSubmit",criteriaMode:"all",reValidateMode:"onSubmit",resolver:F=>{const w=l(F),S=Qr(w);return Object.keys(w).length>0?{values:{},errors:S}:{values:F,errors:{}}}}),h=d.useCallback(F=>{c.setValue("fields",F.serialize())},[c]),p=Y.useWatch({control:c.control,compute:F=>F.fields}),g=d.useMemo(()=>{const F=Ne.deserialize(p);return F.observe(h),F},[p,h]),m=d.useMemo(()=>({fieldSchema:g,disableRequiredFields:s,onSave:r,onCancel:o}),[s,r,o,g]),V=d.useMemo(()=>({fieldSchema:g,size:"sm"}),[g]);return t.jsx(ee,{value:m,children:t.jsx(B,{value:V,children:t.jsx(Y.FormProvider,{...c,children:n})})})});io.displayName="FormBuilderRoot";const aa={Root:io,FlowBuilder:Wr,ListBuilder:Zr,Preview:eo};u.BaseCondition=P,u.BaseField=k,u.BaseFormElement=Di,u.BaseOptionsField=Pe,u.BaseStringField=Hi,u.BooleanEqualsConditionModifier=Ft,u.BooleanField=fe,u.BooleanFieldCondition=He,u.BooleanFieldConditionCell=Wt,u.BooleanFieldInput=Gi,u.BooleanNotEqualsConditionModifier=bt,u.CheckboxListField=pe,u.CheckboxListFieldCondition=Je,u.CheckboxListFieldConditionCell=Kt,u.CheckboxListFieldInput=Ji,u.ConditionManager=Mi,u.DateAfterConditionModifier=It,u.DateBeforeConditionModifier=xt,u.DateEqualsConditionModifier=Nt,u.DateField=xe,u.DateFieldCondition=We,u.DateFieldConditionCell=Zt,u.DateFieldInput=Wi,u.DateNotEqualsConditionModifier=Mt,u.DateRangeInConditionModifier=qt,u.DateRangeNotInConditionModifier=Ot,u.DoesNotHaveFilesConditionModifier=Tt,u.FIELD_TYPES=vt,u.FieldSchema=Ne,u.FieldSection=X,u.FieldSectionLayout=An,u.FieldTypeGroup=O,u.FieldTypeToClsMapping=mn,u.FieldsRenderer=Rr,u.FileCard=$i,u.FormBuilder=aa,u.HasFilesConditionModifier=_t,u.ImageCard=Zi,u.ImageFile=Me,u.ImageViewer=ji,u.ImageViewerProvider=rt,u.InputWithLabel=A,u.LONG_TEXT_FIELD_MAX_LENGTH=je,u.MultiSelectField=te,u.MultiSelectFieldCondition=Xe,u.MultiSelectFieldConditionCell=Rt,u.MultiSelectFieldInput=Xi,u.MultiStringField=he,u.MultiStringFieldCondition=Ke,u.MultiStringFieldConditionCell=ir,u.MultiStringFieldInput=Ui,u.NumberEqualsConditionModifier=Vn,u.NumberField=H,u.NumberFieldCondition=Ye,u.NumberFieldConditionCell=tr,u.NumberFieldInput=ki,u.NumberGreaterThanConditionModifier=zn,u.NumberGreaterThanOrEqualsConditionModifier=wn,u.NumberLessThanConditionModifier=vn,u.NumberLessThanOrEqualsConditionModifier=Sn,u.NumberNotEqualsConditionModifier=yn,u.NumberRangeInConditionModifier=Fn,u.NumberRangeNotInConditionModifier=bn,u.OTPField=ge,u.OTPFieldCondition=Ze,u.OTPFieldConditionCell=or,u.OTPFieldInput=Yi,u.Observable=De,u.PassFailArrayExcludesConditionModifier=Et,u.PassFailArrayIncludesConditionModifier=At,u.PassFailEqualsConditionModifier=Lt,u.PassFailField=Ve,u.PassFailFieldCondition=Qe,u.PassFailFieldConditionCell=sr,u.PassFailFieldInput=nn,u.PassFailNotEqualsConditionModifier=Bt,u.RadioField=ye,u.RadioFieldCondition=Re,u.RadioFieldConditionCell=dr,u.RadioFieldInput=rn,u.RatingField=ve,u.RatingFieldCondition=ei,u.RatingFieldConditionCell=ur,u.RatingFieldInput=on,u.SHORT_TEXT_FIELD_MAX_LENGTH=sn,u.ScanField=qe,u.ScanFieldCondition=ii,u.ScanFieldConditionCell=fr,u.ScanFieldInput=an,u.Scanner=gi,u.ScannerProvider=gt,u.SelectField=oe,u.SelectFieldCondition=ni,u.SelectFieldConditionCell=gr,u.SelectFieldInput=Ki,u.StringArrayEqualsConditionModifier=wi,u.StringArrayEveryConditionModifier=vi,u.StringArrayExcludesConditionModifier=Mn,u.StringArrayIncludesConditionModifier=Nn,u.StringArrayNoneConditionModifier=zi,u.StringArrayNotEqualsConditionModifier=Fi,u.StringArraySomeConditionModifier=Si,u.StringEqualsConditionModifier=le,u.StringExcludesConditionModifier=Be,u.StringField=Se,u.StringFieldCondition=ti,u.StringFieldConditionCell=Cr,u.StringFieldInput=ln,u.StringIncludesConditionModifier=Le,u.StringNotEqualsConditionModifier=de,u.TextField=ze,u.TextFieldCondition=ri,u.TextFieldConditionCell=yr,u.TextFieldInput=dn,u.TimeAfterConditionModifier=jt,u.TimeBeforeConditionModifier=Pt,u.TimeEqualsConditionModifier=$t,u.TimeField=Oe,u.TimeFieldCondition=oi,u.TimeFieldConditionCell=Sr,u.TimeFieldControl=yi,u.TimeFieldInput=fn,u.TimeNotEqualsConditionModifier=Dt,u.TimeRangeInConditionModifier=Ut,u.TimeRangeNotInConditionModifier=Gt,u.UNLABELLED_FIELD_LABEL=$,u.UNLABELLED_SECTION_LABEL=Cn,u.URLField=_e,u.URLFieldCondition=si,u.URLFieldConditionCell=br,u.URLFieldInput=gn,u.UTC_OFFSETS=cn,u.UTC_OFFSETS_SET=mt,u.UUIDFile=ae,u.UUIDPromise=Ce,u.UploadField=we,u.UploadFieldCondition=ai,u.UploadFieldConditionCell=wr,u.UploadFieldInput=pn,u.VideoCard=Ri,u.VideoFile=Qi,u.areFieldValuesBlank=Er,u.areFieldValuesEqual=Ln,u.areFileAndPromiseArraysEqual=pi,u.arePassFieldValuesEqual=ut,u.areSerializedPassFailFieldValuesEqual=ht,u.awaitFilesAndPromises=oa,u.blankFieldValues=Bn,u.changedFieldValues=Br,u.cleanConditions=_n,u.cleanFieldValues=Ii,u.cleanSerializedConditions=On,u.cleanSerializedFieldValues=Tn,u.createCondition=En,u.createConditionModifierConfig=y,u.createField=_i,u.createTime=un,u.deserialize=Ir,u.deserializeCondition=Mr,u.deserializeConditions=qn,u.deserializeField=xi,u.deserializeFieldValues=Or,u.deserializeFields=Wo,u.deserializeOnlyFields=Xo,u.deserializePassFailFieldValue=ct,u.extractFilesAndPromisesFromFieldValues=_r,u.fieldDataMapping=T,u.fieldSpacingCva=qi,u.fieldTypeGroupDataMapping=St,u.flattenFields=Ko,u.formatTime=Vi,u.formatUTCOffset=Ci,u.getCurrentUTCOffset=Vt,u.getFieldsMapping=Yo,u.getUTCMinuteOfDay=se,u.getUTCOffsetMinutes=yt,u.initializeFieldValues=Lr,u.insertFilesAndPromisesToFieldValues=Tr,u.isFileAndPromiseArray=at,u.isPassFailFieldStatus=tn,u.isPassFailFieldValue=lt,u.isSerializedPassFailFieldValue=st,u.isStringArray=$e,u.isTime=E,u.isTimeInRange=hn,u.isTimeRange=Ge,u.isUTCOffset=mi,u.maxFileSizeB=wt,u.maxFileSizeKB=zt,u.maxFileSizeMB=Te,u.parseTime=Ue,u.passFailFieldStatusMapping=me,u.passFailFieldStatuses=Ie,u.separateImagesFromFields=ra,u.serializeConditions=xr,u.serializeFieldValues=qr,u.serializePassFailFieldValue=dt,u.unchangedFieldValues=Ar,u.useConditionManager=Ho,u.useFieldInput=D,u.useFieldInputs=fi,u.useFieldSectionInputs=ot,u.useImageViewer=hi,u.useObjectUrl=Pi,u.useScanner=jo,u.validateFieldValues=Pn,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})});
|
|
251
|
+
*/const re=M("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),$i=d.memo(i=>{const{ref:n,file:e,className:r,error:o,rightSlot:s,size:l,...f}=i,c=()=>o?t.jsxs(t.Fragment,{children:[t.jsx(a.LuIcon,{icon:Bi,color:"var(--base-a11)"}),t.jsx(a.Text,{accentColor:"base",className:"truncate",size:l,children:o})]}):e?t.jsxs(t.Fragment,{children:[t.jsx(a.LuIcon,{icon:bo,color:"var(--base-a11)"}),t.jsx(a.Text,{className:"truncate",size:l,children:e.name})]}):t.jsx(t.Fragment,{children:t.jsx("div",{className:"flex w-full justify-center",children:t.jsx(a.Spinner,{size:l})})});return t.jsxs(a.Card,{className:R.cx(r,"flex w-full items-center gap-2"),ref:n,size:"xs",...f,children:[c(),s]})});$i.displayName="FileCard";function $e(i){return Array.isArray(i)?i.every(n=>typeof n=="string"):!1}class De{constructor(){C(this,"observers",new Set)}notify(n){for(const e of this.observers)e(n)}observe(n){return this.observers.add(n),()=>{this.observers.delete(n)}}}class Di extends De{constructor(e){const{identifier:r}=e;super();C(this,"identifier");this.identifier=r}getOptions(){return{identifier:this.identifier}}setOptions(e){this.identifier=e.identifier??this.identifier,this.notify(this)}serialize(){return{type:this.type,identifier:this.identifier}}}class k extends Di{constructor(e){const{label:r,description:o=null,required:s,image:l,...f}=e;super(f);C(this,"label");C(this,"description");C(this,"required");C(this,"image");this.label=r,this.description=o,this.required=s,this.image=l}getError(e){if(!(!this.required&&this.isValueBlank(e))){if(this.required&&this.isValueBlank(e))return"This field is required.";for(const r of this.getFieldValidators()){const o=r(e);if(o)return o}}}serialize(){return{...super.serialize(),label:this.label,description:this.description,required:this.required,image:this.image}}getOptions(){return{...super.getOptions(),label:this.label,description:this.description,required:this.required,image:this.image}}setOptions(e){const{label:r,description:o=null,required:s,image:l,...f}=e;this.label=r??this.label,this.description=o??this.description,this.required=s??this.required,this.image=l??this.image,super.setOptions(f)}isValueBlank(e){return this.areValuesEqual(e,this.blankValue())}cleanValue(e){return e}isValueClean(e){return this.areValuesEqual(e,this.cleanValue(e))}cleanSerializedValue(e){return e}isSerializedValueClean(e){return this.areSerializedValuesEqual(e,this.cleanSerializedValue(e))}isSerializedValueBlank(e){return this.areSerializedValuesEqual(e,this.blankSerializedValue())}getFieldValidators(){return[]}}const B=d.createContext({}),Pi=i=>{const[n,e]=d.useState(null);return d.useLayoutEffect(()=>{const r=URL.createObjectURL(i);return e(r),()=>{URL.revokeObjectURL(r)}},[i]),n},Me=d.memo(i=>{const{file:n,...e}=i,r=Pi(n);return t.jsx("img",{src:r??void 0,alt:n.name,...e})});Me.displayName="ImageFile";const rt=d.createContext(()=>{throw new Error("No ImageViewerProvider found")}),hi=()=>d.useContext(rt),ji=d.memo(i=>{const{file:n,onClose:e}=i,r=d.useCallback(()=>{Gn.saveAs(n,n.name)},[n]);return t.jsx(a.Overlay.Root,{open:!0,onOpenChange:e,children:t.jsxs(a.Overlay.Content,{onOpenAutoFocus:a.preventDefault,children:[t.jsxs(a.ButtonGroup,{className:"absolute right-0 top-0 flex items-center gap-2 p-2",accentColor:"base",variant:"ghost",children:[t.jsxs(a.Tooltip.Root,{children:[t.jsx(a.Tooltip.Trigger,{asChild:!0,children:t.jsx(a.IconButton,{onClick:r,"aria-label":"download",children:t.jsx(a.LuIcon,{icon:Zn})})}),t.jsx(a.Tooltip.Content,{size:"sm",children:"Download"})]}),t.jsx(a.Separator,{orientation:"vertical",size:"sm"}),t.jsx(a.Overlay.Close,{asChild:!0,children:t.jsx(a.IconButton,{onClick:e,"aria-label":"close",children:t.jsx(a.LuIcon,{icon:re})})})]}),t.jsx("figure",{className:"flex size-full items-center justify-center overflow-hidden p-4",children:t.jsx(Me,{className:"max-h-full max-w-full",file:n})})]})})});ji.displayName="ImageViewer";const ot=d.memo(i=>{const{children:n}=i,[e,r]=d.useState(null),o=d.useCallback(()=>{r(null)},[]),s=d.useCallback(f=>{r(f(o))},[o]),l=d.useCallback(()=>{e&&(e.onClose&&e.onClose(),o())},[o,e]);return t.jsxs(rt.Provider,{value:s,children:[n,e&&t.jsx(ji,{file:e.file,onClose:l})]})});ot.displayName="FileViewerProvider";const A=d.memo(i=>{const{label:n,error:e,description:r,required:o,children:s,inputId:l,image:f,size:c}=i,[h,p]=d.useState(void 0),m=hi();d.useEffect(()=>{f instanceof Promise?f.then(p).catch(console.error):p(f)},[f]);const g=d.useCallback(()=>{h&&m(()=>({file:h}))},[m,h]),V=o?`${n} *`:n;return t.jsxs("div",{className:"flex flex-col gap-1",children:[h&&t.jsx(Me,{className:"h-[100px] w-full min-w-[300px] cursor-pointer rounded-md object-cover",file:h,onClick:g}),(!!n||!!r)&&t.jsxs("div",{className:"flex flex-col",children:[t.jsx("label",{className:"w-max max-w-full",htmlFor:l,children:t.jsx(a.Text,{size:c,className:"text-wrap",children:V})}),!!r&&t.jsx(a.Text,{accentColor:"base",size:c,children:r})]}),s,!!e&&t.jsx(a.Text,{accentColor:"danger",size:c,children:e})]})});A.displayName="InputWithLabel";const at=i=>i.map(n=>t.jsx(d.Fragment,{children:n.render()},n.identifier)),fi=i=>i.map(n=>t.jsx(d.Fragment,{children:n.render()},n.identifier)),D=i=>{const{field:n}=i,{field:{value:e,name:r,onChange:o,onBlur:s,disabled:l},fieldState:{isTouched:f,error:c}}=Y.useController({name:n.identifier});return{value:e,name:r,disabled:l,isTouched:f,error:(c==null?void 0:c.message)??"",onChange:o,onBlur:s}},Ui=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),[h,p]=d.useState(""),[m,g]=d.useState(""),V=d.useCallback(z=>{l(z),s()},[l,s]),F=d.useCallback(z=>{r&&r.findIndex(b=>b===z.target.value.trim())>=0?g("All options must be unique"):z.target.value?g(""):g("Option cannot be empty"),p(z.target.value)},[p,r]),w=d.useCallback(()=>{if(m)return;if(!h.trim()){g("Option cannot be empty");return}const z=h.trim();V([...r,z]),p("")},[h,m,V,r]),S=d.useCallback(z=>{z.key==="Enter"&&(z.preventDefault(),w())},[w]),v=d.useCallback(z=>{const b=Array.from(r);b.splice(z,1),V(b)},[r,V]),I=d.useCallback(z=>{if(!z.destination)return;const b=z.source.index,L=z.destination.index,G=Array.from(r),[ie]=G.splice(b,1);G.splice(L,0,ie),V(G)},[V,r]),q=d.useCallback(()=>{s()},[s]);return t.jsx(Li.DragDropContext,{onDragEnd:I,children:t.jsxs(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:m||f,image:n.image,children:[(!c||r.length===0)&&t.jsxs("div",{className:"flex gap-2",children:[t.jsx(a.Input.Root,{className:"grow",accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{value:h,onChange:F,onKeyDown:S,id:n.identifier,placeholder:n.placeholder,onBlur:q,name:o,disabled:c})}),t.jsx(a.IconButton,{size:e,accentColor:"base",variant:"soft",type:"button","aria-label":"Add option",disabled:!!m||c,onClick:w,children:t.jsx(a.LuIcon,{icon:Z})})]}),r.length!==0&&t.jsx(Li.Droppable,{droppableId:`${n.identifier}-droppable`,children:z=>t.jsxs("div",{className:"flex flex-col gap-1",...z.droppableProps,ref:z.innerRef,children:[r.map((b,L)=>t.jsx(Li.Draggable,{draggableId:`${b}-draggable`,index:L,isDragDisabled:c,children:({draggableProps:G,dragHandleProps:ie,innerRef:ce})=>t.jsxs(a.Badge,{...ie,...G,ref:ce,className:"flex items-center justify-between gap-2",accentColor:"base",size:e,variant:"soft",children:[t.jsx(a.Text,{className:"truncate",highContrast:!0,children:typeof b=="object"&&"label"in b?b.label:b}),t.jsx(a.IconButton,{className:"bg-transparent!",size:e,variant:"ghost",type:"button","aria-label":"Delete option",accentColor:"base",disabled:c,onClick:()=>{v(L)},children:t.jsx(a.LuIcon,{icon:re})})]})},`${n.identifier}-${b}-${L}`)),z.placeholder]})})]})})});Ui.displayName="MultiStringFieldInput";class he extends k{constructor(e){const{minimum_length:r,maximum_length:o,placeholder:s,...l}=e;super(l);C(this,"type","multi-string");C(this,"minLength");C(this,"maxLength");C(this,"placeholder");this.minLength=r??0,this.maxLength=o??1/0,this.placeholder=s??"Press enter to add a new option"}render(){return t.jsx(Ui,{field:this})}serialize(){return{...super.serialize(),minimum_length:this.minLength,maximum_length:this.maxLength,placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),minimum_length:this.minLength,maximum_length:this.maxLength,placeholder:this.placeholder}}duplicate(e){return new he({...this.getOptions(),identifier:e})}setOptions(e){const{minimum_length:r,maximum_length:o,placeholder:s,...l}=e;this.minLength=r??this.minLength,this.maxLength=o??this.maxLength,this.placeholder=s??this.placeholder,super.setOptions(l)}serializeValue(e){return e}deserializeValue(e){return e}getFieldValidators(){const e=super.getFieldValidators();return e.push(r=>{if(r.length<this.minLength)return`Must have at least ${this.minLength} options.`}),e.push(r=>{if(r.length>this.maxLength)return`Must have at most ${this.maxLength} options.`}),e}static deserialize(e){return new he(e)}isSerializedValue(e){return $e(e)}isValue(e){return $e(e)}blankValue(){return[]}areValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}}class Pe extends k{constructor(e){const{options:r,...o}=e;super(o);C(this,"options");this.options=r.map(s=>(typeof s=="string"&&(s={label:s,value:s}),s))}serialize(){return{...super.serialize(),options:this.options}}getOptions(){return{...super.getOptions(),options:this.options}}setOptions(e){const{options:r,...o}=e;this.options=(r==null?void 0:r.map(s=>(typeof s=="string"&&(s={label:s,value:s}),s)))??this.options,super.setOptions(o)}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new he({label:"Options",description:"List possible options for the user to select from.",required:!0,identifier:`${r}options`,minimum_length:2}),showDirectly:!0}]}}const Gi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(!!m),s()},[s,l]),p=d.useCallback(()=>{s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,error:f,image:n.image,required:n.required,children:t.jsx(a.Checkbox.Root,{id:n.identifier,name:o,checked:r??!1,onCheckedChange:h,onBlur:p,size:e,accentColor:"base",variant:"surface",disabled:c,children:t.jsx(a.Checkbox.Indicator,{children:t.jsx(a.LuIcon,{icon:W})})})})});Gi.displayName="BooleanFieldInput";class fe extends k{constructor(e){super(e);C(this,"type","boolean")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}setOptions(e){super.setOptions(e)}duplicate(e){return new fe({...this.getOptions(),identifier:e})}static deserialize(e){return new fe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Gi,{field:this})}isSerializedValue(e){return typeof e=="boolean"}isValue(e){return typeof e=="boolean"}blankValue(){return!1}blankSerializedValue(){return!1}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return e===r}}const ki=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{const V=g.target.valueAsNumber,F=isNaN(V)?null:V;l(F)},[l]),p=d.useCallback(()=>{s()},[s]),m=d.useCallback(g=>{g.key==="Enter"&&g.preventDefault()},[]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.Input.Root,{accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{id:n.identifier,name:o,onChange:h,onBlur:p,value:r??"",type:"number",min:n.minimum,max:n.maximum,step:n.integers?1:"any",placeholder:n.placeholder??"Enter a number",disabled:c,onKeyDown:m})})})});ki.displayName="NumberFieldInput";class H extends k{constructor(e){const{minimum:r=Number.MIN_SAFE_INTEGER,maximum:o=Number.MAX_SAFE_INTEGER,integers:s=!1,placeholder:l,...f}=e;super(f);C(this,"type","number");C(this,"minimum");C(this,"maximum");C(this,"integers");C(this,"placeholder");this.minimum=r,this.maximum=o,this.integers=s,this.placeholder=l}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Minimum",description:"Minimum value",integers:!0,required:!1,identifier:`${r}minimum`}),showDirectly:!1},{field:new H({label:"Maximum",description:"Maximum value",integers:!0,required:!1,identifier:`${r}maximum`}),showDirectly:!1},{field:new fe({label:"Integers",description:"Whole numbers only",required:!1,identifier:`${r}integers`}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.minimum,o=this.maximum;return typeof r=="number"&&e.push(s=>{if(typeof s=="number"&&s<r)return`Must be at least ${this.minimum}.`}),typeof o=="number"&&e.push(s=>{if(typeof s=="number"&&s>o)return`Must be at most ${this.maximum}.`}),this.integers&&e.push(s=>{if(typeof s=="number"&&!Number.isInteger(s))return"Must be a whole number."}),e}serialize(){return{...super.serialize(),minimum:this.minimum,maximum:this.maximum,integers:this.integers,placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),minimum:this.minimum,maximum:this.maximum,integers:this.integers,placeholder:this.placeholder}}duplicate(e){return new H({...this.getOptions(),identifier:e})}setOptions(e){const{minimum:r,maximum:o,integers:s,placeholder:l,...f}=e;this.minimum=r??this.minimum,this.maximum=o??this.maximum,this.integers=s??this.integers,this.placeholder=l??this.placeholder,super.setOptions(f)}static deserialize(e){return new H(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(ki,{field:this})}isSerializedValue(e){return this.isValue(e)}isValue(e){return typeof e=="number"&&!isNaN(e)||e===null}areValuesEqual(e,r){return e===r}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const je=1e4;class Hi extends k{constructor(e){const{minLength:r,maxLength:o,placeholder:s="",...l}=e;super(l);C(this,"minLength");C(this,"maxLength");C(this,"placeholder");this.minLength=r?Math.max(r,0):void 0,this.maxLength=o?Math.max(o,0):je,this.placeholder=s}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Minimum length",description:"Minimum number of characters",required:!1,identifier:`${r}minimum_length`,minimum:0,maximum:100,integers:!0}),showDirectly:!1},{field:new H({label:"Maximum length",description:"Maximum number of characters",required:!1,identifier:`${r}maximum_length`,minimum:1,maximum:je,integers:!0}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators();return this.minLength&&e.push(r=>{if(this.minLength&&(!r||r.length<this.minLength))return!this.required&&!r?void 0:`Minimum ${this.minLength} character(s).`}),this.maxLength&&e.push(r=>{if(typeof r=="string"&&this.maxLength&&r.length>this.maxLength)return`Maximum ${this.maxLength} character(s).`}),e}serialize(){return{...super.serialize(),minimum_length:this.minLength,maximum_length:this.maxLength,placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),minLength:this.minLength,maxLength:this.maxLength,placeholder:this.placeholder}}setOptions(e){const{minLength:r,maxLength:o,placeholder:s,...l}=e;this.minLength=r,this.maxLength=o??this.maxLength,this.placeholder=s,super.setOptions(l)}serializeValue(e){return e}deserializeValue(e){return e}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}blankSerializedValue(){return""}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return e===r}}const Ji=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(m),s()},[s,l]),p=d.useCallback(()=>{s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.CheckboxGroup.Root,{id:n.identifier,name:o,className:"flex flex-col gap-1",accentColor:"base",variant:"surface",size:e,values:r,onValuesChange:h,disabled:c,children:n.options.map((m,g)=>t.jsxs("label",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(a.CheckboxGroup.Item,{value:m.value,onBlur:p,children:t.jsx(a.CheckboxGroup.ItemIndicator,{children:t.jsx(a.LuIcon,{icon:W})})}),t.jsx(a.Text,{size:e,accentColor:"base",className:"truncate",children:m.label})]},`${n.identifier}-${m.value}-${g}`))})})});Ji.displayName="CheckboxListFieldInput";class pe extends Pe{constructor(e){super(e);C(this,"type","checkbox-list")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new pe({...this.getOptions(),identifier:e})}static deserialize(e){return new pe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Ji,{field:this})}isSerializedValue(e){if(!$e(e))return!1;const r=new Set(this.options.map(({value:o})=>o));return e.every(o=>r.has(o))}isValue(e){return this.isSerializedValue(e)}blankValue(){return[]}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}areValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}}const Wi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),[h,p]=d.useState(!1),m=d.useCallback(V=>{l(V??null),s(),p(!1)},[l,s]),g=d.useCallback(V=>{p(V),V||s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.Popover.Root,{open:h,onOpenChange:g,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:t.jsxs(a.Button,{id:n.identifier,name:o,type:"button",className:"!justify-between",accentColor:"base",variant:"surface",size:e,disabled:c,children:[t.jsx(a.Text,{className:"truncate",highContrast:!!r,children:r?r.toLocaleString(void 0,{year:"numeric",month:"2-digit",day:"2-digit"}):"yyyy-mm-dd"}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Popover.Content,{align:"start",size:e,children:t.jsx(a.DayPicker,{size:e,required:!1,mode:"single",variant:"solid",selected:r??void 0,onSelect:m})})]})})});Wi.displayName="DateFieldInput";class xe extends k{constructor(e){super(e);C(this,"type","date")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new xe({...this.getOptions(),identifier:e})}static deserialize(e){return new xe(e)}setOptions(e){super.setOptions(e)}serializeValue(e){return e?e.toISOString():null}deserializeValue(e){return e?new Date(e):null}render(){return t.jsx(Wi,{field:this})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:this.isValue(this.deserializeValue(e))}isValue(e){return!(!(e instanceof Date)&&e!==null||e instanceof Date&&isNaN(e.getTime()))}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return!e&&!r?!0:!e||!r?!1:e.getTime()===r.getTime()}}var O=(i=>(i.Text="text",i.Selection="selection",i.Numeric="numeric",i.Temporal="temporal",i.Capture="capture",i.Assessment="assessment",i.Verification="verification",i))(O||{});const Xi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{l(m),s()},[s,l]),p=d.useCallback(m=>{m||s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.Menu.Root,{onOpenChange:p,align:"start",children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsxs(a.Button,{id:n.identifier,name:o,className:"!justify-between",variant:"surface",type:"button",size:e,accentColor:"base",disabled:c,children:[t.jsx(a.Text,{className:"truncate",highContrast:r&&r.length>0,children:r&&r.length>0?r.join(", "):n.placeholder??"Select one or more..."}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Menu.Content,{size:e,children:t.jsx(a.Menu.Scroll,{children:t.jsxs(a.Menu.MultiSelectGroup,{values:r,onValuesChange:h,children:[t.jsxs(a.Menu.SelectAllItem,{children:[t.jsx(a.Menu.CheckboxItemIndicator,{children:m=>m?t.jsx(a.LuIcon,{icon:ui}):t.jsx(a.LuIcon,{icon:W})}),"Select all"]}),n.options.map((m,g)=>t.jsxs(a.Menu.MultiSelectItem,{value:m.value,children:[t.jsx(a.Menu.SelectedIndicator,{children:t.jsx(a.LuIcon,{icon:W})}),m.label]},`${n.identifier}-${m.value}-${g}`))]})})})]})})});Xi.displayName="MultiSelectFieldInput";class te extends Pe{constructor(e){const{placeholder:r,...o}=e;super(o);C(this,"type","multi-select");C(this,"placeholder");this.placeholder=r}serialize(){return super.serialize()}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new te({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:r}=e;this.placeholder=r,super.setOptions(e)}static deserialize(e){return new te(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Xi,{field:this})}isSerializedValue(e){if(!$e(e))return!1;const r=new Set(this.options.map(({value:o})=>o));return e.every(o=>r.has(o))}isValue(e){return this.isSerializedValue(e)}blankValue(){return[]}areValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){const o=new Set(e),s=new Set(r);return o.size===s.size&&o.isSubsetOf(s)}}const Ki=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g??null),s()},[s,l]),p=d.useCallback(g=>{g||s()},[s]),m=d.useMemo(()=>n.options.find(g=>g.value===r),[n.options,r]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.Menu.Root,{onOpenChange:p,align:"start",children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsxs(a.Button,{id:n.identifier,name:o,className:"!justify-between",accentColor:"base",variant:"surface",type:"button",size:e,disabled:c,children:[t.jsx(a.Text,{className:"truncate",highContrast:!!m,children:m?m.label:n.placeholder??"Select one..."}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Menu.Content,{size:e,children:t.jsx(a.Menu.Scroll,{children:t.jsx(a.Menu.SelectGroup,{required:!1,value:r??void 0,onValueChange:h,children:n.options.map((g,V)=>t.jsxs(a.Menu.SelectItem,{value:g.value,children:[t.jsx(a.Menu.SelectedIndicator,{children:t.jsx(a.LuIcon,{icon:W})}),g.label]},`${n.identifier}-${g.value}-${V}`))})})})]})})});Ki.displayName="SelectFieldInput";class oe extends Pe{constructor(e){const{placeholder:r,...o}=e;super(o);C(this,"type","select");C(this,"placeholder");this.placeholder=r}serialize(){return super.serialize()}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new oe({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:r}=e;this.placeholder=r,super.setOptions(e)}static deserialize(e){return new oe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Ki,{field:this})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:new Set([null,...this.options.map(({value:o})=>o)]).has(e)}isValue(e){return this.isSerializedValue(e)}blankValue(){return null}areValuesEqual(e,r){return e===r}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const Yi=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g)},[l]),p=d.useCallback(()=>{s()},[s]),m=d.useMemo(()=>Array.from({length:n.length},()=>N.v4()),[n.length]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.OneTimePasswordField.Root,{id:n.identifier,name:o,value:r,onValueChange:h,validationType:n.validationType,disabled:c,orientation:"horizontal",dir:"ltr",type:"text",autoComplete:"off",autoFocus:!1,autoSubmit:!1,className:"p-0.25 flex h-max w-full gap-1 overflow-x-auto",accentColor:"base",variant:"surface",size:e,onBlur:p,children:[m.map(g=>t.jsx(a.OneTimePasswordField.Input,{id:g},g)),t.jsx(a.OneTimePasswordField.HiddenInput,{})]})})});Yi.displayName="OTPFieldInput";class me extends k{constructor(e){const{length:r,validationType:o,...s}=e;super(s);C(this,"type","otp");C(this,"length");C(this,"validationType");this.length=r,this.validationType=o}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Length",integers:!0,required:!1,minimum:1,maximum:16,identifier:`${r}length`}),showDirectly:!1},{field:new oe({label:"Type",required:!1,identifier:`${r}validationType`,options:[{value:"none",label:"Any"},{value:"numeric",label:"Numeric"},{value:"alpha",label:"Alpha"},{value:"alphanumeric",label:"Alphanumeric"}]}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.length;return e.push(o=>{if(o.length!=r)return`Must be ${r} characters.`}),e}serialize(){return{...super.serialize(),length:this.length,validationType:this.validationType}}getOptions(){return{...super.getOptions(),length:this.length,validationType:this.validationType}}duplicate(e){return new me({...this.getOptions(),identifier:e})}setOptions(e){const{length:r,validationType:o,...s}=e;this.length=r??this.length,this.validationType=o??this.validationType,super.setOptions(s)}static deserialize(e){return new me(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(Yi,{field:this})}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}areValuesEqual(e,r){return e===r}blankSerializedValue(){return""}areSerializedValuesEqual(e,r){return e===r}}const ge={pass:{label:"Pass",icon:Vo},fail:{label:"Fail",icon:So},na:{label:"N/A",icon:vo}},Ie=Object.keys(ge);class ae extends File{constructor(e,...r){super(...r);C(this,"uuid");this.uuid=e}static from(e,r){return new ae(e,[r],r.name,{lastModified:r.lastModified,type:r.type})}}class Ce extends Promise{constructor(e,r){super(e);C(this,"_uuid");this._uuid=r}get uuid(){return this._uuid}set uuid(e){this._uuid=e}static from(e,r){return new Ce((o,s)=>{Promise.resolve(e).then(o).catch(s)},r)}then(e,r){const o=super.then(e,r);return o.uuid=this.uuid,o}catch(e){const r=super.catch(e);return r.uuid=this.uuid,r}finally(e){const r=super.finally(e);return r.uuid=this.uuid,r}}function st(i){return Array.isArray(i)?i.every(n=>n instanceof Ce||n instanceof ae):!1}function pi(i,n){const e=new Set(i.map(({uuid:o})=>o)),r=new Set(n.map(({uuid:o})=>o));return e.size===r.size&&e.isSubsetOf(r)}const Zi=d.memo(i=>{const{ref:n,file:e,error:r,rightSlot:o,className:s,size:l,...f}=i;return t.jsxs(a.Card,{className:R.cx(s,"p-0! relative flex h-48 w-full flex-col overflow-hidden"),ref:n,size:"xs",...f,children:[!e&&!r&&t.jsx("div",{className:"absolute inset-0 flex grow items-center justify-center",children:t.jsx(a.Spinner,{size:l})}),!!e&&!r&&t.jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center overflow-hidden p-3",children:t.jsx(Me,{className:"block size-full max-w-full object-cover",file:e})}),!!r&&t.jsx("div",{className:"grow"}),(!!e||!!r)&&t.jsxs(t.Fragment,{children:[t.jsx(a.Separator,{size:"full"}),t.jsxs("div",{className:"flex w-full shrink-0 items-center gap-2 self-end p-3",children:[r?t.jsx(a.LuIcon,{color:"var(--base-11)",icon:Bi}):e&&t.jsx(a.LuIcon,{color:"var(--base-11)",icon:Rn}),t.jsx(a.Text,{className:"truncate",size:l,children:r??(e==null?void 0:e.name)}),o]})]})]})});Zi.displayName="ImageCard";const Qi=d.memo(i=>{const{file:n,...e}=i,r=Pi(n);return t.jsx("video",{src:r??void 0,...e})});Qi.displayName="VideoFile";const Ri=d.memo(i=>{const{ref:n,file:e,className:r,error:o,rightSlot:s,size:l,...f}=i;return t.jsxs(a.Card,{className:R.cx(r,"p-0! relative flex h-48 w-full flex-col overflow-hidden"),ref:n,size:"xs",...f,children:[!e&&!o&&t.jsx("div",{className:"absolute inset-0 flex grow items-center justify-center",children:t.jsx(a.Spinner,{size:l})}),!!e&&!o&&t.jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center overflow-hidden p-3",children:t.jsx(Qi,{className:"block size-full max-w-full object-cover",file:e,controls:!0})}),!!o&&t.jsx("div",{className:"grow"}),(!!e||!!o)&&t.jsxs(t.Fragment,{children:[t.jsx(a.Separator,{size:"full"}),t.jsxs("div",{className:"flex w-full shrink-0 items-center gap-2 self-end p-3",children:[o?t.jsx(a.LuIcon,{color:"var(--danger-11)",icon:Bi}):e&&t.jsx(a.LuIcon,{color:"var(--base-11)",icon:Po}),t.jsx(a.Text,{className:"truncate",size:l,children:o??(e==null?void 0:e.name)}),s]})]})]})});Ri.displayName="VideoCard";const en=d.memo(i=>{const{fileOrPromise:n,onRemove:e,disabled:r,size:o}=i,[s,l]=d.useState(n instanceof Ce?null:n),[f,c]=d.useState(null),h=hi();to.useActiveEffect(v=>{if(c(null),!(n instanceof Ce)){l(n);return}l(null),n.then(I=>{v()&&l(I)}).catch(I=>{v()&&c(I instanceof Error?I.message:"Unknown error")})},[n]);const p=d.useCallback(()=>{if(!s)return;const v=new Blob([s]);Gn.saveAs(v,s.name)},[s]),m=d.useCallback(()=>{e(n)},[e,n]),g=d.useCallback(()=>{if(!s)return;const v=URL.createObjectURL(s);window.open(v,"_blank"),URL.revokeObjectURL(v)},[s]),V=d.useCallback(()=>{s&&h(v=>({file:s,onDelete:r?void 0:()=>{m(),v()}}))},[r,m,h,s]),F=d.useMemo(()=>t.jsx("div",{className:"flex grow justify-end",children:t.jsxs(a.Menu.Root,{modal:!0,children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.IconButton,{onClick:a.stopPropagation,type:"button",variant:"ghost",accentColor:"base",size:o,children:t.jsx(a.LuIcon,{icon:Qn})})}),t.jsxs(a.Menu.Content,{size:o,children:[t.jsxs(a.Menu.Item,{onSelect:p,disabled:!s,children:[t.jsx(a.LuIcon,{icon:Zn})," Download"]}),r?null:t.jsxs(t.Fragment,{children:[t.jsx(a.Menu.Separator,{}),t.jsxs(a.Menu.Item,{onSelect:m,children:[t.jsx(a.LuIcon,{icon:ue})," Delete"]})]})]})]})}),[r,m,p,s,o]),w=!!(s!=null&&s.type.startsWith("image/")),S=!!(s!=null&&s.type.startsWith("video/"));return w?t.jsx(Zi,{className:"cursor-pointer",onClick:V,file:s,error:f??void 0,rightSlot:F,size:o}):S?t.jsx(Ri,{className:"cursor-pointer",onClick:V,file:s,error:f??void 0,rightSlot:F,size:o}):t.jsx($i,{className:"cursor-pointer",file:s,error:f??void 0,onClick:g,rightSlot:F,size:o})});en.displayName="DisplayFile";const nn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useRef(null),p=d.useCallback(z=>{const b=n.cleanValue({...r,status:z});l(b),s()},[n,s,l,r]),m=d.useCallback(z=>{const b=z.target.value,L={...r,notes:b};l(L)},[r,l]),g=d.useCallback(()=>{s()},[s]),V=d.useCallback(z=>{const b=r.files.filter(({uuid:L})=>L!==z.uuid);l({...r,files:b}),s()},[l,s,r]),F=d.useCallback(()=>{var z;(z=h.current)==null||z.click()},[]),w=d.useCallback(z=>{const b=Array.from(z.target.files??[]).map(G=>ae.from(N.v4(),G)),L={...r,files:[...r.files,...b]};l(L),s()},[s,l,r]);d.useEffect(()=>{if(!h.current)return;const z=new AbortController;return h.current.addEventListener("cancel",()=>{s()},{signal:z.signal}),()=>{z.abort()}},[s,r]);const S=r.status&&n.showNotesAndFilesOn.includes(r.status),v=`${n.identifier}-status`,I=`${n.identifier}-notes`,q=`${n.identifier}-files`;return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx(a.RadioGroup.Root,{id:v,className:"flex gap-2",name:o,value:r.status,disabled:c,accentColor:"base",variant:"surface",size:e,onValueChange:p,children:Ie.map(z=>{const{label:b}=ge[z];return t.jsxs("label",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(a.RadioGroup.Item,{value:z,children:t.jsx(a.RadioGroup.Indicator,{children:t.jsx(a.LuIcon,{icon:Xn,className:"fill-current"})})}),t.jsx(a.Text,{size:e,accentColor:"base",className:"truncate",children:b})]},`${n.identifier}-${z}`)})}),S&&t.jsxs(t.Fragment,{children:[t.jsx("div",{children:t.jsx(a.TextArea,{id:I,value:r.notes??"",name:o,onChange:m,onBlur:g,className:"field-sizing-content min-h-12 w-full",placeholder:"Notes",resize:"vertical",accentColor:"base",variant:"surface",size:e,disabled:c})}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs(a.Button,{className:"w-max",size:e,variant:"surface",accentColor:"base",onClick:F,type:"button",disabled:c,children:[t.jsx(a.LuIcon,{icon:Ei}),"Select files"]}),t.jsx("input",{id:q,name:o,type:"file",ref:h,multiple:!0,className:"hidden",onChange:w,value:""}),r.files.length>0&&t.jsx("div",{className:"flex h-max flex-wrap gap-2",children:r.files.map(z=>t.jsx(en,{size:e,fileOrPromise:z,onRemove:V,disabled:c},z.uuid))})]})]})]})})});nn.displayName="PassFailFieldInput";const tn=i=>typeof i=="string"&&Ie.includes(i),lt=i=>!(i===null||typeof i!="object"||!("status"in i)||!tn(i.status)||!("notes"in i)||typeof i.notes!="string"||!("files"in i)||!(Array.isArray(i.files)&&i.files.length===0)),dt=i=>!(i===null||typeof i!="object"||!("status"in i)||!tn(i.status)||!("notes"in i)||typeof i.notes!="string"||!("files"in i)||!st(i.files)),ct=i=>({status:i.status,notes:i.notes,files:[]}),ut=i=>({status:i.status,notes:i.notes,files:[]}),ht=(i,n)=>!(i.status!==n.status||i.notes!==n.notes||!pi(i.files,n.files)),ft=(i,n)=>!(i.status!==n.status||i.notes!==n.notes||i.files.length!==n.files.length);class Ve extends k{constructor(e){const{showNotesAndFilesOn:r,...o}=e;super(o);C(this,"type","pass-fail");C(this,"showNotesAndFilesOn");this.showNotesAndFilesOn=r}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new te({identifier:`${r}showNotesAndFilesOn`,label:"Show notes and files on",description:"Show the notes and files on desired statuses.",options:Ie.map(o=>{const{label:s}=ge[o];return{value:o,label:s}}),required:!1}),showDirectly:!1}]}serialize(){return{...super.serialize(),showNotesAndFilesOn:this.showNotesAndFilesOn}}getOptions(){return{...super.getOptions(),showNotesAndFilesOn:this.showNotesAndFilesOn}}duplicate(e){return new Ve({...this.getOptions(),identifier:e})}setOptions(e){const{showNotesAndFilesOn:r,...o}=e;this.showNotesAndFilesOn=r??this.showNotesAndFilesOn,super.setOptions(o)}getFieldValidators(){const e=super.getFieldValidators(),r=this.showNotesAndFilesOn,o=this.blankValue();return r.length>0&&(e.push(s=>{if(!(!s.status||!r.includes(s.status))&&o.notes===s.notes)return"Notes is required."}),e.push(s=>{if(!(!s.status||!r.includes(s.status))&&pi(o.files,s.files))return"Files is required."})),e}static deserialize(e){return new Ve({...e,showNotesAndFilesOn:e.showNotesAndFilesOn??!1})}serializeValue(e){return ct(e)}deserializeValue(e){return ut(e)}render(){return t.jsx(nn,{field:this})}isSerializedValue(e){return lt(e)}isValue(e){return dt(e)}areValuesEqual(e,r){return ht(e,r)}blankValue(){return{status:null,notes:"",files:[]}}cleanValue(e){return e.status&&this.showNotesAndFilesOn.includes(e.status)?e:{status:e.status,notes:"",files:[]}}cleanSerializedValue(e){return super.cleanSerializedValue(e)}blankSerializedValue(){return{status:null,notes:"",files:[]}}areSerializedValuesEqual(e,r){return ft(e,r)}}const rn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g),s()},[s,l]),p=d.useCallback(()=>{s()},[s]),m=d.useCallback(()=>{l(null),s()},[s,l]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs(a.RadioGroup.Root,{id:n.identifier,name:o,className:"flex flex-col gap-1",accentColor:"base",variant:"surface",size:e,value:r??"",onValueChange:h,disabled:c,children:[n.options.map((g,V)=>t.jsxs("label",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(a.RadioGroup.Item,{value:g.value,onBlur:p,children:t.jsx(a.RadioGroup.Indicator,{children:t.jsx(a.LuIcon,{icon:Xn,className:"fill-current"})})}),t.jsx(a.Text,{size:e,accentColor:"base",className:"truncate",children:g.label})]},`${n.identifier}-${g.value}-${V}`)),!!r&&t.jsxs(a.Button,{onClick:m,className:"-mx-2 w-max",type:"button",variant:"ghost",accentColor:"base",size:e,children:[t.jsx(a.LuIcon,{icon:re}),"Clear"]})]})})});rn.displayName="RadioFieldInput";class ye extends Pe{constructor(e){super(e);C(this,"type","radio")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new ye({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){return new ye(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(rn,{field:this})}isSerializedValue(e){return typeof e!="string"&&e!==null?!1:new Set([null,...this.options.map(({value:o})=>o)]).has(e)}isValue(e){return this.isSerializedValue(e)}blankValue(){return null}areValuesEqual(e,r){return e===r}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const jo=R.cva(["group flex cursor-pointer items-center justify-center text-yellow-500 transition-colors disabled:pointer-events-none disabled:opacity-50"],{variants:{size:{xs:["size-5"],sm:["size-6"],md:["size-7"],lg:["size-8"],xl:["size-9"]}}}),on=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{l(g),s()},[s,l]),p=d.useCallback(()=>{l(null),s()},[s,l]),m=Array.from({length:n.maxRating},(g,V)=>V+1);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs("div",{className:"flex flex-row items-center gap-1",children:[t.jsx(a.Rating.Root,{id:n.identifier,name:o,className:"flex items-center gap-0.5",value:r,onValueChange:h,disabled:c,children:m.map(g=>t.jsx(a.Rating.Item,{value:g,className:jo({size:e}),children:t.jsx(a.LuIcon,{icon:tt,className:"size-full group-data-[active=true]:fill-current"})},`${n.identifier}-${g}`))}),!c&&r!==null&&t.jsx(a.IconButton,{onClick:p,type:"button",variant:"ghost",accentColor:"base",size:e,children:t.jsx(a.LuIcon,{icon:re})})]})})});on.displayName="RatingFieldInput";class ve extends k{constructor(e){const{maxRating:r,...o}=e;super(o);C(this,"type","rating");C(this,"maxRating");this.maxRating=r}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"Max Rating",description:"Maximum rating value",integers:!0,required:!1,minimum:1,maximum:10,identifier:`${r}maxRating`}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.maxRating;return e.push(o=>{if(typeof o=="number"&&(o<1||o>r))return`Rating must be between 1 and ${r}.`}),e}serialize(){return{...super.serialize(),maxRating:this.maxRating}}getOptions(){return{...super.getOptions(),maxRating:this.maxRating}}duplicate(e){return new ve({...this.getOptions(),identifier:e})}setOptions(e){const{maxRating:r,...o}=e;this.maxRating=r??this.maxRating,super.setOptions(o)}static deserialize(e){return new ve(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(on,{field:this})}isSerializedValue(e){return this.isValue(e)}isValue(e){return typeof e=="number"&&!isNaN(e)||e===null}areValuesEqual(e,r){return e===r}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}}const an=d.createContext(null),pt=()=>{const i=d.use(an);if(!i)throw new Error("useScannerContext must be used within a component tree wrapped by ScannerProvider.");return i},Uo=()=>{const i=d.use(an);if(!i)throw new Error("useScanner must be used within a component tree wrapped by ScannerProvider.");return i.openScanner},mi=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,...l}=i;return t.jsxs(a.Overlay.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[!!n&&t.jsx(a.Overlay.Trigger,{asChild:!0,children:n}),t.jsxs(a.Overlay.Content,{children:[t.jsx(a.Overlay.Title,{className:"sr-only",children:"Scanner"}),t.jsx(a.Overlay.Description,{className:"sr-only",children:"Scan a barcode or a qr code."}),t.jsx(mt,{...l})]})]})});mi.displayName="Scanner";const mt=d.memo(i=>{const{paused:n,formats:e,timeBetweenDecodingAttempts:r,trySkew:o,onDecodeResult:s,onDecodeError:l,onError:f}=i,{wasmUrl:c}=pt(),{ref:h}=ro.useZxing({wasmUrl:c,paused:n,formats:e,timeBetweenDecodingAttempts:r,trySkew:o,onDecodeResult:s,onDecodeError:l,onError:f});return t.jsxs("div",{className:"bg-(--color-background) flex size-full flex-col justify-center overflow-hidden",children:[t.jsx("div",{className:"flex w-full justify-end p-4",children:t.jsx(a.Overlay.Close,{asChild:!0,children:t.jsx(a.IconButton,{"aria-label":"close",variant:"soft",accentColor:"base",children:t.jsx(a.LuIcon,{icon:re})})})}),t.jsx("div",{className:"max-h-full w-full grow overflow-hidden p-4",children:t.jsx("video",{className:"size-full",ref:h,muted:!0,playsInline:!0})})]})});mt.displayName="ScannerInternal";const gt=d.memo(i=>{const{children:n,wasmUrl:e}=i,[r,o]=d.useState(null),s=d.useCallback(()=>{o(null)},[]),l=d.useCallback(h=>{o(h(s))},[s]),f=d.useCallback(()=>{r&&(r.onClose&&r.onClose(),s())},[s,r]),c=d.useMemo(()=>({wasmUrl:e,openScanner:l}),[e,l]);return t.jsxs(an,{value:c,children:[n,r&&t.jsx(mi,{open:!0,onOpenChange:f,...r})]})});gt.displayName="ScannerProvider";const sn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),[h,p]=d.useState(!1),m=d.useCallback(S=>{const v=S.target.value;l(v)},[l]),g=d.useCallback(()=>{s()},[s]),V=d.useCallback(S=>{l(S.rawValue),s(),p(!1)},[l,s]),F=d.useCallback(()=>{p(!0)},[]),w=d.useCallback(()=>{p(!1),s()},[s]);return t.jsxs(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:[t.jsx(a.TextArea,{className:"field-sizing-content w-full",accentColor:"base",variant:"surface",size:e,id:n.identifier,name:o,value:r??"",placeholder:"Enter a qr or barcode",onChange:m,onBlur:g,disabled:c}),t.jsxs(a.Button,{onClick:F,className:"w-max",type:"button",variant:"soft",size:e,accentColor:"base",disabled:c,children:[t.jsx(a.LuIcon,{icon:_o}),"Scan"]}),t.jsx(mi,{open:h,onDecodeResult:V,onOpenChange:w})]})});sn.displayName="ScanFieldInput";class qe extends k{constructor(e){super(e);C(this,"type","qr")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new qe({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){return new qe(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(sn,{field:this})}isSerializedValue(e){return typeof e=="string"}isValue(e){return typeof e=="string"}blankValue(){return""}areValuesEqual(e,r){return e===r}blankSerializedValue(){return""}areSerializedValuesEqual(e,r){return e===r}}const ln=500,dn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(g=>{const V=g.target.value;l(V)},[l]),p=d.useCallback(()=>{s()},[s]),m=d.useCallback(g=>{g.key==="Enter"&&g.preventDefault()},[]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.Input.Root,{accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{id:n.identifier,className:"truncate",name:o,value:r??"",type:"text",placeholder:n.placeholder,onChange:h,onBlur:p,disabled:c,onKeyDown:m})})})});dn.displayName="StringFieldInput";class Se extends Hi{constructor(e){const{...r}=e,o=e.maxLength?Math.min(ln,e.maxLength):ln,s=e.minLength?Math.min(e.minLength,o):void 0;super({...r,maxLength:o,minLength:s});C(this,"type","string")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new Se({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){const{maximum_length:r,minimum_length:o,...s}=e;return new Se({...s,maxLength:r,minLength:o,placeholder:"Enter a short description"})}render(){return t.jsx(dn,{field:this})}}const cn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(m=>{const g=m.target.value;l(g)},[l]),p=d.useCallback(()=>{s()},[s]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(a.TextArea,{id:n.identifier,value:r??"",name:o,onChange:h,onBlur:p,className:"field-sizing-content min-h-12",placeholder:n.placeholder,resize:"vertical",accentColor:"base",variant:"surface",size:e,disabled:c})})});cn.displayName="TextFieldInput";class ze extends Hi{constructor(e){const r=e.maxLength?Math.min(je,e.maxLength):je,o=e.minLength?Math.min(e.minLength,r):void 0;super({...e,maxLength:r,minLength:o});C(this,"type","text")}serialize(){return super.serialize()}getOptions(){return super.getOptions()}duplicate(e){return new ze({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}static deserialize(e){const{maximum_length:r,minimum_length:o,...s}=e;return new ze({...s,maxLength:r,minLength:o,placeholder:"Enter a description"})}render(){return t.jsx(cn,{field:this})}}const un=Go(),Ct=new Set(un);function Go(i=!0){const n=new Set;for(let e=-12;e<=14;e++){const r=e>=0?"+":"-",o=Math.abs(e).toString().padStart(2,"0");n.add(`${r}${o}:00`)}if(i){const e=[-12.5,-9.5,-3.5,3.5,4.5,5.5,6.5,9.5,10.5,12.5];for(const r of e){const o=r>=0?"+":"-",s=Math.floor(Math.abs(r)).toString().padStart(2,"0");n.add(`${o}${s}:30`)}}return Array.from(n).sort((e,r)=>Vt(e)-Vt(r))}function Vt(i){const n=i[0]==="+"?1:-1,e=Number(i.slice(1,3)),r=Number(i.slice(4,6));return n*(e*60+r)}const ko="+00:00",Ho=/^T([01]\d|2[0-3]):([0-5]\d):00([+-]\d{2}:\d{2})$/,gi=i=>typeof i=="string"&&Ct.has(i),yt=()=>{const i=-new Date().getTimezoneOffset(),n=i>=0?"+":"-",e=Math.abs(i),r=Math.floor(e/60),o=e%60,s=`${n}${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`;return gi(s)?s:ko};function vt(i){const n=/^([+-])(\d{2}):(\d{2})$/.exec(i);if(!n)throw new Error(`Invalid UTC offset: ${i}`);return(n[1]==="+"?1:-1)*(Number(n[2])*60+Number(n[3]))}const Ue=i=>{const n=Ho.exec(i);if(!n)return null;const e=n[3];return gi(e)?{hours:Number(n[1]),minutes:Number(n[2]),utcOffset:e}:null},E=i=>typeof i=="string"&&Ue(i)!==null,hn=(i,n,e=yt())=>{if(!Number.isInteger(i)||i<0||i>23)throw new Error(`Invalid hour: ${i}`);if(!Number.isInteger(n)||n<0||n>59)throw new Error(`Invalid minute: ${n}`);if(!gi(e))throw new Error("Unsupported UTC offset");const r=i.toString().padStart(2,"0"),o=n.toString().padStart(2,"0");return`T${r}:${o}:00${e}`},Ci=i=>`UTC${i}`,se=i=>{const n=Ue(i);if(!n)throw new Error(`Invalid time value: ${i}`);return(n.hours*60+n.minutes-vt(n.utcOffset)+1440)%1440},Vi=(i,n=!0)=>{const e=Ue(i);if(!e)throw new Error(`Invalid time value: ${i}`);const r=(e.hours%12||12).toString().padStart(2,"0"),o=e.minutes.toString().padStart(2,"0"),s=e.hours>=12?"PM":"AM",l=`${r}:${o} ${s}`;return n?`${l} ${Ci(e.utcOffset)}`:l},Ge=i=>typeof i=="object"&&(E(i.from)||E(i.to)),fn=(i,n)=>{const e=se(i),r=n.from?se(n.from):null,o=n.to?se(n.to):null;return r===null&&o===null?!0:r===null?e<=o:o===null?e>=r:r<=o?e>=r&&e<=o:e>=r||e<=o},yi=d.memo(i=>{const{value:n,onChange:e,onBlur:r,disabled:o,size:s="md",id:l,name:f,compact:c=!1}=i,h=n?Ue(n):null,p=h?`${h.hours.toString().padStart(2,"0")}:${h.minutes.toString().padStart(2,"0")}`:"",m=d.useCallback(F=>{const w=F.target.value;if(!w){e(null);return}const[S,v]=w.split(":").map(Number);e(hn(S,v,h==null?void 0:h.utcOffset))},[e,h==null?void 0:h.utcOffset]),g=d.useCallback(F=>{h&&(e(hn(h.hours,h.minutes,F)),r==null||r())},[r,e,h]),V=d.useCallback(F=>{F||r==null||r()},[r]);return t.jsxs("div",{className:"flex min-w-0 gap-2",children:[t.jsx(a.Input.Root,{className:"min-w-0 grow",accentColor:"base",variant:"surface",size:s,children:t.jsx(a.Input.Field,{id:l,name:f,className:R.cx("[&::-webkit-calendar-picker-indicator]:invert-40 dark:[&::-webkit-calendar-picker-indicator]:invert-60",{"[&::-webkit-datetime-edit]:opacity-60":!n}),type:"time",step:60,value:p,onChange:m,onBlur:r,disabled:o})}),t.jsxs(a.Menu.Root,{align:"end",onOpenChange:V,children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsxs(a.Button,{type:"button",className:c?"!justify-between":"min-w-32 !justify-between",accentColor:"base",variant:"surface",size:s,disabled:o||!h,children:[t.jsx(a.Text,{className:"truncate",highContrast:!!h,children:h?Ci(h.utcOffset):"UTC offset"}),t.jsx(a.LuIcon,{icon:ci})]})}),t.jsx(a.Menu.Content,{size:s,children:t.jsx(a.Menu.Scroll,{children:t.jsx(a.Menu.SelectGroup,{required:!0,value:h==null?void 0:h.utcOffset,onValueChange:g,children:un.map(F=>t.jsxs(a.Menu.SelectItem,{value:F,children:[t.jsx(a.Menu.SelectedIndicator,{children:t.jsx(a.LuIcon,{icon:W})}),Ci(F)]},F))})})})]})]})});yi.displayName="TimeFieldControl";const pn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n});return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsx(yi,{id:n.identifier,name:o,size:e,value:r,onChange:l,onBlur:s,disabled:c})})});pn.displayName="TimeFieldInput";class Oe extends k{constructor(e){super(e);C(this,"type","time")}static deserialize(e){return new Oe(e)}getOptions(){return super.getOptions()}duplicate(e){return new Oe({...this.getOptions(),identifier:e})}setOptions(e){super.setOptions(e)}serializeValue(e){return e}deserializeValue(e){return e}render(){return t.jsx(pn,{field:this})}isSerializedValue(e){return e===null||E(e)}isValue(e){return e===null||E(e)}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return e===r}}const mn=d.memo(i=>{var S;const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useRef(null),p=d.useCallback(()=>{var v;(v=h.current)==null||v.click()},[]),m=d.useCallback(()=>{if(!h.current)return;const v=h.current.files;if(!v){s();return}const I=Array.from(v).map(z=>ae.from(N.v4(),z)),q=[...r,...I];l(q),s()},[s,l,r]),g=d.useCallback(v=>{const I=r.filter(({uuid:q})=>q!==v.uuid);l(I),s()},[r,l,s]);d.useEffect(()=>{if(!h.current)return;const v=new AbortController;return h.current.addEventListener("cancel",()=>{s()},{signal:v.signal}),()=>{v.abort()}},[s,r]);const w=n.maxFiles>1?"Select files":"Select a file";return t.jsxs(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:[t.jsxs(a.Button,{className:"w-max",size:e,variant:"surface",accentColor:"base",onClick:p,type:"button",disabled:c,children:[t.jsx(a.LuIcon,{icon:Ei}),w]}),t.jsx("input",{id:n.identifier,name:o,type:"file",ref:h,accept:(S=n.extensions)==null?void 0:S.join(","),multiple:n.maxFiles>1,className:"hidden",onChange:m,value:""}),r.length>0&&t.jsx("div",{className:"mt-1 flex h-max flex-col gap-2",children:r.map(v=>t.jsx(en,{size:e,fileOrPromise:v,onRemove:g,disabled:c},v.uuid))})]})});mn.displayName="UploadFieldInput";class we extends k{constructor(e){const{extensions:r,maximum_files:o,maximum_size:s,...l}=e;super(l);C(this,"type","upload");C(this,"extensions");C(this,"maxFileSize");C(this,"maxFiles");this.maxFileSize=typeof s=="number"?s:void 0,this.maxFiles=Math.max(typeof o=="number"?o:1,1),this.extensions=r}static getFieldCreationSchema(e=""){const r=e&&`${e}.`;return[{field:new H({label:"How many files can be uploaded?",description:"By default, only one file can be uploaded.",required:!1,minimum:1,maximum:10,identifier:`${r}maximum_files`,integers:!0}),showDirectly:!1},{field:new H({label:"What is the maximum size of each file?",description:`Maximum file size in megabytes (between 1MB–${Te}MB).`,required:!1,identifier:`${r}maximum_size`,minimum:1,maximum:Te,integers:!0}),showDirectly:!1},{field:new te({label:"Accepted file types",description:"Types of allowed files to upload. If left blank, all files will be accepted.",required:!1,identifier:`${r}extensions`,options:[{value:"image/*",label:"Images"},{value:"audio/*",label:"Audio files"},{value:"video/*",label:"Videos"},{value:"text/*",label:"Text files"},{value:"application/*",label:"Application files (includes PDFs and Word documents)"}]}),showDirectly:!1}]}getFieldValidators(){const e=super.getFieldValidators(),r=this.maxFileSize??Te,o=r*1e3*1e3,s=this.maxFiles||1;return e.push(l=>{if(l.some(f=>f instanceof ae&&f.size>o))return`Files must be at most ${r}MB.`}),e.push(l=>{if(l.length>s)return`You can only upload ${s} files.`}),e}serialize(){return{...super.serialize(),extensions:this.extensions,maximum_size:this.maxFileSize,maximum_files:this.maxFiles}}getOptions(){return{...super.getOptions(),extensions:this.extensions,maximum_size:this.maxFileSize,maximum_files:this.maxFiles}}duplicate(e){return new we({...this.getOptions(),identifier:e})}setOptions(e){const{extensions:r,maximum_files:o,maximum_size:s,...l}=e;this.maxFileSize=typeof s=="number"?s:this.maxFileSize,this.maxFiles=typeof o=="number"?o:this.maxFiles,this.extensions=r,super.setOptions(l)}static deserialize(e){return new we(e)}serializeValue(e){return[]}deserializeValue(e){return[]}render(){return t.jsx(mn,{field:this})}isSerializedValue(e){return Array.isArray(e)&&e.length===0}isValue(e){return Array.isArray(e)?e.every(r=>r instanceof Ce||r instanceof ae):!1}areValuesEqual(e,r){return pi(e,r)}blankValue(){return[]}blankSerializedValue(){return[]}areSerializedValuesEqual(e,r){return e.length===r.length}}const gn=d.memo(i=>{const{field:n}=i,{size:e}=d.use(B),{value:r,name:o,onBlur:s,onChange:l,error:f,disabled:c}=D({field:n}),h=d.useCallback(V=>{const F=V.target.value;F!==""&&!URL.canParse(F)||l(F!==""?new URL(F):null)},[l]),p=d.useCallback(()=>{s()},[s]),m=d.useCallback(V=>{V.key==="Enter"&&V.preventDefault()},[]),g=d.useCallback(()=>{r!==null&&window.open(r,"_blank","noopener,noreferrer")},[r]);return t.jsx(A,{size:e,inputId:n.identifier,label:n.label,description:n.description,required:n.required,error:f,image:n.image,children:t.jsxs("div",{className:"flex w-full gap-2",children:[t.jsx(a.Input.Root,{className:"grow",accentColor:"base",variant:"surface",size:e,children:t.jsx(a.Input.Field,{id:n.identifier,className:"truncate",name:o,value:r?r.toString():"",type:"url",inputMode:"url",placeholder:n.placeholder,onChange:h,onBlur:p,disabled:c,onKeyDown:m})}),t.jsx(a.IconButton,{size:e,variant:"soft",accentColor:"base",type:"button",disabled:r===null,onClick:g,children:t.jsx(a.LuIcon,{icon:Fo})})]})})});gn.displayName="URLFieldInput";class _e extends k{constructor(e){const{placeholder:r="https://example.com",...o}=e;super(o);C(this,"type","url");C(this,"placeholder");this.placeholder=r}serialize(){return{...super.serialize(),placeholder:this.placeholder}}getOptions(){return{...super.getOptions(),placeholder:this.placeholder}}duplicate(e){return new _e({...this.getOptions(),identifier:e})}setOptions(e){const{placeholder:r,...o}=e;this.placeholder=r??this.placeholder,super.setOptions(o)}static deserialize(e){return new _e(e)}serializeValue(e){return(e==null?void 0:e.toString())??null}deserializeValue(e){return e===null?null:new URL(e)}isSerializedValue(e){return e===null?!0:typeof e!="string"?!1:URL.canParse(e)}isValue(e){return e===null||e instanceof URL}blankValue(){return null}blankSerializedValue(){return null}areSerializedValuesEqual(e,r){return e===r}areValuesEqual(e,r){return(e==null?void 0:e.toString())===(r==null?void 0:r.toString())}render(){return t.jsx(gn,{field:this})}}const Cn={date:xe,time:Oe,number:H,boolean:fe,select:oe,string:Se,url:_e,text:ze,upload:we,qr:qe,"multi-string":he,"multi-select":te,radio:ye,"checkbox-list":pe,"pass-fail":Ve,otp:me,rating:ve},St=Object.keys(Cn),T={"checkbox-list":{description:"Allows the user to select a multiple options from a list.",group:O.Selection,icon:wo,name:"Checkbox list"},"multi-select":{description:"Allows the user to select a multiple options from a list of options.",group:O.Selection,icon:Io,name:"Multi-select"},"multi-string":{description:"Allows the user to provide multiple unique strings.",group:O.Text,icon:Oo,name:"Multi-string"},"pass-fail":{description:"Track pass, fail, or N/A outcome.",group:O.Assessment,icon:zo,name:"Pass - Fail"},boolean:{description:"Perfect for both optional and required yes/no questions.",group:O.Selection,icon:Ao,name:"Checkbox"},date:{description:"Allows specifying a date.",group:O.Temporal,icon:Co,name:"Date"},time:{description:"Allows specifying a time and UTC offset.",group:O.Temporal,icon:Do,name:"Time"},number:{description:"Allows specifying a number within a given range.",group:O.Numeric,icon:Mo,name:"Number"},otp:{description:"Allows specifying a number within a given range.",group:O.Verification,icon:To,name:"OTP"},qr:{description:"Used for scanning/reading QR and barcodes.",group:O.Capture,icon:Lo,name:"Scan"},radio:{description:"Allows the user to select a single option from a list of options.",group:O.Selection,icon:yo,name:"Option list"},rating:{description:"Allows users to select a rating value.",group:O.Assessment,icon:tt,name:"Rating"},select:{description:"Allows the user to select a single option from a list of options.",group:O.Selection,icon:qo,name:"Dropdown"},string:{description:"Short text fields can hold up to 500 characters on a single line.",group:O.Text,icon:$o,name:"Short Text"},text:{description:"Paragraph fields can hold up to 10000 characters and can have multiple lines.",group:O.Text,icon:po,name:"Paragraph"},upload:{description:"Allows a file to be uploaded.",group:O.Capture,icon:Ei,name:"Upload"},url:{description:"Allows users to enter a URL.",group:O.Text,icon:xo,name:"URL"}},zt={[O.Assessment]:{name:"Assessment"},[O.Capture]:{name:"Capture"},[O.Numeric]:{name:"Numeric"},[O.Selection]:{name:"Selection"},[O.Temporal]:{name:"Temporal"},[O.Text]:{name:"Text"},[O.Verification]:{name:"Verification"}},Te=50,wt=Te*1e3,Ft=wt*1e3,$="Unlabelled",Vn="Unlabelled";class x{constructor(n){C(this,"id");C(this,"label");C(this,"getApplyFn");C(this,"serialize");C(this,"deserialize");const{id:e,getApplyFn:r,label:o,serialize:s,deserialize:l}=n;this.id=e,this.getApplyFn=r,this.label=o,this.serialize=s,this.deserialize=l}static create(n){return new x(n)}}const bt=x.create({id:"nullable-boolean-equals",label:"is",getApplyFn:i=>n=>n===i,serialize:i=>i,deserialize:i=>i}),Nt=x.create({id:"nullable-boolean-not-equals",label:"is not",getApplyFn:i=>n=>n!==i,serialize:i=>i,deserialize:i=>i}),Mt=x.create({id:"date-equals",getApplyFn:i=>n=>n.getTime()===i.getTime(),label:"is",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),xt=x.create({id:"date-not-equals",getApplyFn:i=>n=>n.getTime()!==i.getTime(),label:"is not",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),It=x.create({id:"date-before",getApplyFn:i=>n=>n.getTime()<i.getTime(),label:"before",serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),qt=x.create({id:"date-after",label:"after",getApplyFn:i=>n=>n.getTime()>i.getTime(),serialize:i=>i.toISOString(),deserialize:i=>new Date(i)}),Ot=x.create({id:"date-range-in",label:"in between",getApplyFn:i=>n=>!(i!=null&&i.from&&i.from.getTime()>n.getTime()||i!=null&&i.to&&i.to.getTime()<n.getTime()),serialize:i=>{var n,e;return{from:((n=i.from)==null?void 0:n.toISOString())??null,to:((e=i.to)==null?void 0:e.toISOString())??null}},deserialize:i=>({from:i.from?new Date(i.from):void 0,to:i.to?new Date(i.to):void 0})}),_t=x.create({id:"date-range-not-in",label:"not in between",getApplyFn:i=>n=>!!(i!=null&&i.from&&i.from.getTime()>n.getTime()||i!=null&&i.to&&i.to.getTime()<n.getTime()),serialize:i=>{var n,e;return{from:((n=i.from)==null?void 0:n.toISOString())??null,to:((e=i.to)==null?void 0:e.toISOString())??null}},deserialize:i=>({from:i.from?new Date(i.from):void 0,to:i.to?new Date(i.to):void 0})}),Tt=x.create({id:"has-files",label:"is",getApplyFn:i=>n=>n.length>0,serialize:i=>i,deserialize:i=>i}),Lt=x.create({id:"does-not-have-files",label:"is not",getApplyFn:i=>n=>n.length===0,serialize:i=>i,deserialize:i=>i}),yn=x.create({id:"number-equals",getApplyFn:i=>n=>n===i,label:"is",serialize:i=>i,deserialize:i=>i}),vn=x.create({id:"number-not-equals",getApplyFn:i=>n=>n!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Sn=x.create({id:"number-less-than",getApplyFn:i=>n=>n<i,label:"is less than",serialize:i=>i,deserialize:i=>i}),zn=x.create({id:"number-less-than-or-equals",getApplyFn:i=>n=>n<=i,label:"is less than or equal to",serialize:i=>i,deserialize:i=>i}),wn=x.create({id:"number-greater-than",getApplyFn:i=>n=>n>i,label:"is greater than",serialize:i=>i,deserialize:i=>i}),Fn=x.create({id:"number-greater-than-or-equals",getApplyFn:i=>n=>n>=i,label:"is greater than or equal to",serialize:i=>i,deserialize:i=>i}),bn=x.create({id:"number-range-in",getApplyFn:i=>n=>!(i.to&&n>i.to||i.from&&n<i.from),label:"is between",serialize:i=>i,deserialize:i=>i}),Nn=x.create({id:"number-range-not-in",getApplyFn:i=>n=>!!(i.to&&n>i.to||i.from&&n<i.from),label:"is not between",serialize:i=>i,deserialize:i=>i}),Bt=x.create({id:"pass-fail-equals",getApplyFn:i=>n=>n===i,label:"is",serialize:i=>i,deserialize:i=>i}),At=x.create({id:"pass-fail-not-equals",getApplyFn:i=>n=>n!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Et=x.create({id:"pass-fail-array-includes",getApplyFn:i=>{const n=new Set(i);return e=>n.has(e)},label:"is any of",serialize:i=>i,deserialize:i=>i}),$t=x.create({id:"pass-fail-array-excludes",getApplyFn:i=>{const n=new Set(i);return e=>!n.has(e)},label:"is none of",serialize:i=>i,deserialize:i=>i}),le=x.create({id:"nullable-string-equals",getApplyFn:i=>n=>n===i,label:"is",serialize:i=>i,deserialize:i=>i}),de=x.create({id:"nullable-string-not-equals",getApplyFn:i=>n=>n!==i,label:"is not",serialize:i=>i,deserialize:i=>i}),Le=x.create({id:"string-includes",getApplyFn:i=>n=>n.includes(i),label:"includes",serialize:i=>i,deserialize:i=>i}),Be=x.create({id:"string-excludes",getApplyFn:i=>n=>!n.includes(i),label:"does not include",serialize:i=>i,deserialize:i=>i}),Mn=x.create({id:"string-array-includes",getApplyFn:i=>{const n=new Set(i);return e=>n.has(e)},label:"is any of",serialize:i=>i,deserialize:i=>i}),xn=x.create({id:"string-array-excludes",getApplyFn:i=>{const n=new Set(i);return e=>!n.has(e)},label:"is none of",serialize:i=>i,deserialize:i=>i}),vi=x.create({id:"string-array-every",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.isSubsetOf(r)}},label:"has all of",serialize:i=>i,deserialize:i=>i}),Si=x.create({id:"string-array-some",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return!n.isDisjointFrom(r)}},label:"has any of",serialize:i=>i,deserialize:i=>i}),zi=x.create({id:"string-array-none",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.isDisjointFrom(r)}},label:"has none of",serialize:i=>i,deserialize:i=>i}),wi=x.create({id:"string-array-equals",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.size===r.size&&r.isSubsetOf(n)}},label:"is",serialize:i=>i,deserialize:i=>i}),Fi=x.create({id:"string-array-not-equals",getApplyFn:i=>{const n=new Set(i);return e=>{const r=new Set(e);return n.size!==r.size||!r.isSubsetOf(n)}},label:"is not",serialize:i=>i,deserialize:i=>i}),Dt=x.create({id:"time-equals",label:"is",getApplyFn:i=>n=>n===i,serialize:i=>i,deserialize:i=>i}),Pt=x.create({id:"time-not-equals",label:"is not",getApplyFn:i=>n=>n!==i,serialize:i=>i,deserialize:i=>i}),jt=x.create({id:"time-before",label:"before",getApplyFn:i=>n=>se(n)<se(i),serialize:i=>i,deserialize:i=>i}),Ut=x.create({id:"time-after",label:"after",getApplyFn:i=>n=>se(n)>se(i),serialize:i=>i,deserialize:i=>i}),Gt=x.create({id:"time-range-in",label:"in between",getApplyFn:i=>n=>fn(n,i),serialize:i=>i,deserialize:i=>i}),kt=x.create({id:"time-range-not-in",label:"not in between",getApplyFn:i=>n=>!fn(n,i),serialize:i=>i,deserialize:i=>i}),y=i=>i;class P extends De{constructor(e){const{id:r,field:o,conditionValue:s,conditionModifier:l}=e;super();C(this,"id");C(this,"conditionValue");C(this,"conditionModifier");C(this,"field");C(this,"getConditionValue",()=>this.conditionValue);C(this,"setConditionValue",e=>{const r=this.modifiers[this.conditionModifier];e!==void 0&&!r.isConditionValueValid(e)||(this.conditionValue=e,this.notify(this))});C(this,"getConditionModifier",()=>this.conditionModifier);C(this,"setConditionModifier",e=>{const r=this.modifiers[e],o=this.getConditionValue();o&&!r.isConditionValueValid(o)&&(this.conditionValue=void 0),this.conditionModifier=e,this.notify(this)});C(this,"getConditionModifiers",()=>Object.entries(this.modifiers));C(this,"accessorFn",e=>e[this.field.identifier]);C(this,"getApplyFn",()=>{const e=this.modifiers[this.conditionModifier],r=this.getConditionValue(),o=r!==void 0&&e.isConditionValueValid(r),s=o?e.modifier.getApplyFn(r):null;return l=>{if(!o)return!0;const f=this.transformValue(l);return e.isValueValid(f)?s(f):!1}});this.id=r,this.field=o,this.conditionValue=s,this.conditionModifier=l}serialize(){return{id:this.id,type:this.field.type,fieldId:this.field.identifier,conditionValue:this.conditionValue!==void 0?this.modifiers[this.conditionModifier].modifier.serialize(this.conditionValue):void 0,conditionModifier:this.conditionModifier}}transformValue(e){return e}}const Ht=d.memo,Fe=Ht(function(i){const{ref:n,children:e,...r}=i,o=d.useCallback(s=>typeof e=="function"?t.jsxs(t.Fragment,{children:[e(s),t.jsx(a.Menu.SelectedIndicator,{className:"ml-[auto]",children:t.jsx(a.LuIcon,{icon:W})})]}):t.jsxs(t.Fragment,{children:[e,t.jsx(a.Menu.SelectedIndicator,{className:"ml-[auto]",children:t.jsx(a.LuIcon,{icon:W})})]}),[e]);return t.jsx(a.Menu.SelectItem,{ref:n,...r,children:o})}),Jt=Ht(function(i){const{ref:n,children:e,...r}=i,o=d.useCallback(s=>typeof e=="function"?t.jsxs(t.Fragment,{children:[e(s),t.jsx(a.Menu.SelectedIndicator,{className:"ml-auto",children:t.jsx(a.LuIcon,{icon:W})})]}):t.jsxs(t.Fragment,{children:[e,t.jsx(a.Menu.SelectedIndicator,{className:"ml-auto",children:t.jsx(a.LuIcon,{icon:W})})]}),[e]);return t.jsx(a.Menu.MultiSelectItem,{ref:n,...r,children:o})}),In=d.memo(i=>{const{ref:n,children:e,...r}=i,o=d.useCallback(s=>typeof e=="function"?t.jsxs(t.Fragment,{children:[e(s),t.jsx(a.Menu.CheckboxItemIndicator,{className:"ml-[auto]",children:l=>l?t.jsx(a.LuIcon,{icon:ui}):t.jsx(a.LuIcon,{icon:W})})]}):t.jsxs(t.Fragment,{children:[e,t.jsx(a.Menu.CheckboxItemIndicator,{className:"ml-[auto]",children:l=>l?t.jsx(a.LuIcon,{icon:ui}):t.jsx(a.LuIcon,{icon:W})})]}),[e]);return t.jsx(a.Menu.SelectAllItem,{ref:n,...r,children:o})});In.displayName="SelectAllItemTemplate";const U=i=>{const{children:n,condition:e,size:r="sm",variant:o,accentColor:s,radius:l}=i,f=d.useCallback(c=>{e.setConditionModifier(c)},[e]);return t.jsxs(a.Menu.Root,{align:"start",children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{size:r,variant:o,radius:l,accentColor:s,children:t.jsx(a.Menu.SelectGroup,{required:!0,value:e.getConditionModifier(),onValueChange:f,children:e.getConditionModifiers().map(([c,h])=>t.jsx(Fe,{value:c,children:h.modifier.label},c))})})]})},bi=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,align:f,accentColor:c="base",...h}=i;return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,align:f,children:t.jsx(a.DayPicker,{size:l,accentColor:c,...h})})]})});bi.displayName="DayPickerPopover";const Wt=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,accentColor:f="base",values:c,onValuesChange:h,placeholder:p="Enter text",...m}=i,[g,V]=d.useState(""),F=d.useCallback(I=>{V(I.target.value)},[]),w=d.useCallback(I=>{I.key==="Enter"&&(I.preventDefault(),I.stopPropagation(),h([...c,g]),V(""))},[g,h,c]),S=d.useCallback(()=>{h([...c,g]),V("")},[g,h,c]),v=d.useCallback(I=>{const q=[...c];q.splice(I,1),h(q)},[h,c]);return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,accentColor:f,...m,children:t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs("div",{className:"flex gap-2",children:[t.jsx(a.Input.Root,{className:"grow",accentColor:"base",variant:"outline",size:"sm",children:t.jsx(a.Input.Field,{value:g,onChange:F,onKeyDown:w,placeholder:p,...m})}),t.jsx(a.IconButton,{size:"sm",accentColor:"base",variant:"soft",type:"button",onClick:S,children:t.jsx(a.LuIcon,{icon:Z})})]}),c.length>0&&t.jsx("div",{className:"flex flex-col gap-1",children:c.map((I,q)=>t.jsxs(a.Badge,{className:"flex items-center justify-between gap-2",accentColor:"base",size:"sm",variant:"soft",children:[t.jsx("span",{className:"truncate",children:I}),t.jsx(a.IconButton,{size:"xs",variant:"ghost",type:"button",accentColor:"base",onClick:()=>{v(q)},children:t.jsx(a.LuIcon,{icon:re})})]},`${I}-${q}`))})]})})]})});Wt.displayName="NumberInputPopover";const be=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,accentColor:f="base",value:c,onValueChange:h,placeholder:p="Enter a number",...m}=i,[g,V]=d.useState(null);d.useEffect(()=>{c!==void 0&&V(c)},[c]);const F=d.useCallback(S=>{const v=S.target.valueAsNumber;V(isNaN(v)?null:v)},[]),w=d.useCallback(S=>{const v=S.target.valueAsNumber;h==null||h(isNaN(v)?null:v)},[h]);return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,...m,children:t.jsx(a.Input.Root,{size:l,accentColor:f,children:t.jsx(a.Input.Field,{placeholder:p,type:"number",value:g??"",onChange:F,onBlur:w})})})]})});be.displayName="NumberInputPopover";const j=i=>{const{condition:n,onClick:e,...r}=i,o=d.useCallback(()=>{e(n)},[n,e]);return t.jsx(a.IconButton,{onClick:o,...r,children:t.jsx(a.LuIcon,{icon:re})})};j.displayName="RemoveConditionButton";const ke=d.memo(i=>{const{ref:n,selectFieldOptions:e,...r}=i,o=d.useMemo(()=>e.map(s=>typeof s=="string"?{value:s,label:s}:s),[e]);return t.jsxs(a.Menu.MultiSelectGroup,{ref:n,...r,children:[t.jsx(In,{children:"Select all"}),o.map(s=>t.jsx(Jt,{value:s.value,children:t.jsx("span",{className:"truncate",children:s.label})},s.value))]})});ke.displayName="SelectFieldOptionMultiSelectGroup";const qn=d.memo(i=>{const{ref:n,selectFieldOptions:e,...r}=i,o=d.useMemo(()=>e.map(s=>typeof s=="string"?{value:s,label:s}:s),[e]);return t.jsx(a.Menu.SelectGroup,{ref:n,...r,children:o.map(s=>t.jsx(Fe,{value:s.value,children:t.jsx("span",{className:"truncate",children:s.label})},s.value))})});qn.displayName="SelectFieldOptionSelectGroup";const Ae=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l,accentColor:f="base",value:c,onValueChange:h,placeholder:p="Enter text",...m}=i,[g,V]=d.useState(""),F=d.useCallback(S=>{V(S.target.value)},[]),w=d.useCallback(S=>{const v=S.target.value;h==null||h(v)},[h]);return d.useEffect(()=>{c&&V(c)},[c]),t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,...m,children:t.jsx(a.Input.Root,{size:l,accentColor:f,children:t.jsx(a.Input.Field,{placeholder:p,type:"text",value:g,onChange:F,onBlur:w})})})]})});Ae.displayName="TextInputPopover";const Ni=d.memo(i=>{const{children:n,open:e,onOpenChange:r,defaultOpen:o,modal:s,size:l="sm",accentColor:f="base",value:c,onValueChange:h,...p}=i;return t.jsxs(a.Popover.Root,{open:e,onOpenChange:r,defaultOpen:o,modal:s,children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:n}),t.jsx(a.Popover.Content,{size:l,onClick:a.stopPropagation,accentColor:f,...p,children:t.jsx(yi,{compact:!0,size:l,value:c,onChange:h})})]})});Ni.displayName="TimeInputPopover";const Xt=i=>{const{condition:n,onRemove:e}=i,r=n.getConditionValue(),o=n.getConditionModifier(),s=()=>{switch(r){case void 0:return"...";case!0:return"true";case!1:return"false";case null:return"empty"}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[n.field.type].icon}),t.jsx("span",{className:"truncate",children:n.field.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[o].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:s()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsxs(a.Menu.SelectGroup,{required:!0,value:r,onValueChange:n.setConditionValue,children:[t.jsx(Fe,{value:!0,children:"true"}),t.jsx(Fe,{value:!1,children:"false"})]})})]}),t.jsx(j,{condition:n,onClick:e})]})},Kt={equals:y({modifier:bt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Nt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class He extends P{constructor(e){super(e);C(this,"modifiers",Kt)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Kt[s];let c;return o!==void 0&&(c=f.modifier.deserialize(o)),new He({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Xt,{condition:this,...e},this.id)}}const Ee=[],Yt=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{c.length>0?n.setConditionValue(c):n.setConditionValue(void 0)},[n]),f=()=>{if(o===void 0)return"...";if(o===null)return"empty";switch(o.length){case 0:return"...";default:return`${o.length} options`}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"soft",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"soft",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"truncate",children:f()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{values:o??Ee,selectFieldOptions:n.field.options,onValuesChange:l})})]}),t.jsx(j,{condition:n,onClick:e})]})},Zt={equals:y({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:y({modifier:vi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:y({modifier:Si,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:y({modifier:zi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Je extends P{constructor(e){super(e);C(this,"modifiers",Zt)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Zt[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Je({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Yt,{condition:this,...e},this.id)}}class Mi extends De{constructor(e){super();C(this,"conditions");C(this,"conditionObserver",()=>{this.conditions=[...this.conditions],this.notify(this)});C(this,"initConditions",e=>{for(const r of e)r.observe(this.conditionObserver);return e});this.conditions=this.initConditions(e)}getConditions(){return this.conditions}addCondition(e){this.conditions=this.initConditions([...this.conditions,e]),this.notify(this)}addConditions(e){this.conditions=this.initConditions([...this.conditions,...e]),this.notify(this)}removeCondition(e){this.conditions=this.initConditions(this.conditions.filter(r=>r.id!==e.id)),this.notify(this)}removeConditions(e){const r=new Set(e.map(o=>o.id));this.conditions=this.initConditions(this.conditions.filter(o=>!r.has(o.id))),this.notify(this)}applyConditions(e){return this.conditions.length===0?!0:this.conditions.map(o=>[o.getApplyFn(),o.accessorFn]).every(([o,s])=>o(s(e)))}}const Jo=(i,n)=>d.useMemo(()=>{const e=new Mi(i);return e.observe(r=>n(r.getConditions())),e},[i,n]),Qt=i=>{const{condition:n,onRemove:e}=i,r=n.getConditionValue(),o=n.getConditionModifier(),s=()=>{var l,f;switch(o){case"equals":case"notEquals":{const c=n.modifiers.equals,h=r!==void 0&&c.isConditionValueValid(r)?r:void 0;return t.jsx(bi,{required:!1,size:"sm",mode:"single",selected:h??void 0,onSelect:p=>n.setConditionValue(p),children:t.jsx(a.Button,{type:"button",className:"truncate",children:h!==void 0?(h==null?void 0:h.toLocaleDateString())??"empty":"..."})})}case"before":case"after":{const c=n.modifiers.after,h=r!==void 0&&c.isConditionValueValid(r)?r:void 0;return t.jsx(bi,{required:!0,size:"sm",mode:"single",selected:h,onSelect:n.setConditionValue,children:t.jsx(a.Button,{type:"button",className:"truncate",children:h?h.toLocaleDateString():"..."})})}case"in":case"notIn":{const c=n.modifiers.in,h=r!==void 0&&c.isConditionValueValid(r)?r:void 0;return t.jsx(bi,{required:!0,mode:"range",size:"sm",selected:h,onSelect:n.setConditionValue,children:t.jsx(a.Button,{className:"truncate",children:h?`${(l=h.from)==null?void 0:l.toLocaleDateString()} - ${(f=h.to)==null?void 0:f.toLocaleDateString()}`:"..."})})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[n.field.type].icon}),t.jsx("span",{className:"truncate",children:n.field.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[o].modifier.label})}),s(),t.jsx(j,{condition:n,onClick:e})]})},Rt={equals:y({modifier:Mt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),notEquals:y({modifier:xt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),before:y({modifier:It,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),after:y({modifier:qt,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>i instanceof Date,isSerializedValueValid:i=>typeof i=="string"}),in:y({modifier:Ot,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>"to"in(i??{})&&"from"in(i??{}),isSerializedValueValid:i=>typeof i=="object"&&"to"in i&&"from"in i}),notIn:y({modifier:_t,isValueValid:i=>i instanceof Date,isConditionValueValid:i=>"to"in(i??{})&&"from"in(i??{}),isSerializedValueValid:i=>typeof i=="object"&&"to"in i&&"from"in i})};class We extends P{constructor(e){super(e);C(this,"modifiers",Rt)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Rt[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new We({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Qt,{condition:this,...e},this.id)}}const er=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{c.length>0?n.setConditionValue(c):n.setConditionValue(void 0)},[n]),f=()=>{if(o===void 0)return"...";if(o===null)return"empty";switch(o.length){case 0:return"...";default:return`${o.length} options`}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"truncate",children:f()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{values:o??Ee,selectFieldOptions:r.options,onValuesChange:l})})]}),t.jsx(j,{condition:n,onClick:e})]})},ir={equals:y({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:y({modifier:vi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:y({modifier:Si,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:y({modifier:zi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Xe extends P{constructor(e){super(e);C(this,"modifiers",ir)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=ir[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Xe({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(er,{condition:this,...e},this.id)}}const nr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{n.setConditionValue(c.length>0?c:void 0)},[n]),f=()=>{if(o===void 0)return"...";if(o===null)return"empty";switch(o.length){case 0:return"...";case 1:return o[0].toString();default:return`${o.length} values`}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsx(Wt,{values:o??Ee,onValuesChange:l,children:t.jsx(a.Button,{type:"button",className:"truncate",children:f()})}),t.jsx(j,{condition:n,onClick:e})]})},tr={equals:y({modifier:wi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Fi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),every:y({modifier:vi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),some:y({modifier:Si,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),none:y({modifier:zi,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Ke extends P{constructor(e){super(e);C(this,"modifiers",tr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=tr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Ke({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(nr,{condition:this,...e},this.id)}}const rr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useCallback(c=>{n.setConditionValue(c??void 0)},[n]),f=()=>{switch(s){case"equals":case"greaterThanOrEquals":case"lessThanOrEquals":case"greaterThan":case"lessThan":{const c=n.modifiers.greaterThan,h=o!==void 0&&c.isConditionValueValid(o)?o:void 0;return t.jsx(be,{value:h??null,onValueChange:l,size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:h!==void 0?h??"empty":"..."})})}case"inRange":case"notInRange":{const c=n.modifiers.inRange,h=o!==void 0&&c.isConditionValueValid(o)?o:void 0;return t.jsxs(t.Fragment,{children:[t.jsx(be,{value:(h==null?void 0:h.from)??null,onValueChange:p=>{n.setConditionValue({from:p,to:(h==null?void 0:h.to)??null})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(h==null?void 0:h.from)??"..."})}),t.jsx(be,{value:(h==null?void 0:h.to)??null,onValueChange:p=>{n.setConditionValue({from:(h==null?void 0:h.from)??null,to:p})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(h==null?void 0:h.to)??"..."})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),f(),t.jsx(j,{condition:n,onClick:e})]})},or={equals:y({modifier:yn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),notEquals:y({modifier:vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThan:y({modifier:Sn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThanOrEquals:y({modifier:zn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThan:y({modifier:wn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThanOrEquals:y({modifier:Fn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),inRange:y({modifier:bn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"}),notInRange:y({modifier:Nn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"})};class Ye extends P{constructor(e){super(e);C(this,"modifiers",or)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=or[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Ye({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(rr,{condition:this,...e},this.id)}}const ar=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},sr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class Ze extends P{constructor(e){super(e);C(this,"modifiers",sr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=sr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Ze({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(ar,{condition:this,...e},this.id)}}const lr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":{const f=n.modifiers.equals,c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:c!==void 0?c?ge[c].label:"empty":"..."})})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(a.Menu.SelectGroup,{required:!1,value:c,onValueChange:n.setConditionValue,children:Ie.map(h=>{const{label:p}=ge[h];return t.jsx(Fe,{value:h,children:t.jsx("span",{className:"truncate",children:p})},h)})})})]})}case"includes":case"excludes":{const f=n.modifiers.includes,c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",children:c?`${c.length} statuses`:"..."})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsxs(a.Menu.MultiSelectGroup,{values:c??Ee,onValuesChange:n.setConditionValue,children:[t.jsx(In,{children:"Select all"}),Ie.map(h=>{const{label:p,icon:m}=ge[h];return t.jsxs(Jt,{value:h,children:[t.jsx(a.LuIcon,{icon:m}),t.jsx("span",{className:"truncate",children:p})]},h)})]})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},dr={equals:y({modifier:Bt,isValueValid:i=>i!==null,isConditionValueValid:i=>typeof i=="string",isSerializedValueValid:i=>typeof i=="string"}),notEquals:y({modifier:At,isValueValid:i=>i!==null,isConditionValueValid:i=>typeof i=="string",isSerializedValueValid:i=>typeof i=="string"}),includes:y({modifier:Et,isValueValid:i=>i!==null,isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:y({modifier:$t,isValueValid:i=>i!==null,isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class Qe extends P{constructor(e){super(e);C(this,"modifiers",dr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=dr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Qe({field:r,conditionModifier:s,conditionValue:c,...l})}transformValue(e){return e.status}render(e){return t.jsx(lr,{condition:this,...e},this.id)}}const cr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useMemo(()=>r.options.map(h=>typeof h=="string"?{value:h,label:h}:h),[r.options]),f=d.useMemo(()=>{const h={};for(const p of l)h[p.value]=p.label;return h},[l]),c=()=>{switch(s){case"equals":case"notEquals":{const h=n.modifiers.equals,p=o!==void 0&&h.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:p!==void 0?p?f[p]:"empty":"..."})})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(qn,{required:!0,selectFieldOptions:r.options,value:p??void 0,onValueChange:n.setConditionValue})})]})}case"includes":case"excludes":{const h=n.modifiers.includes,p=o!==void 0&&h.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",children:p?`${p.length} options`:"..."})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{selectFieldOptions:r.options,values:p??Ee,onValuesChange:n.setConditionValue})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),c(),t.jsx(j,{condition:n,onClick:e})]})},ur={equals:y({modifier:le,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),notEquals:y({modifier:de,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),includes:y({modifier:Mn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:y({modifier:xn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class Re extends P{constructor(e){super(e);C(this,"modifiers",ur)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=ur[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new Re({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(cr,{condition:this,...e},this.id)}}const hr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"greaterThanOrEquals":case"lessThanOrEquals":case"greaterThan":case"lessThan":{const f=n.modifiers[s],c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsx(be,{value:c??null,onValueChange:h=>n.setConditionValue(h??void 0),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:c!==void 0?c:"..."})})}case"inRange":case"notInRange":{const f=n.modifiers.inRange,c=o!==void 0&&f.isConditionValueValid(o)?o:void 0;return t.jsxs(t.Fragment,{children:[t.jsx(be,{value:(c==null?void 0:c.from)??null,onValueChange:h=>{n.setConditionValue({from:h,to:(c==null?void 0:c.to)??null})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(c==null?void 0:c.from)??"..."})}),t.jsx(be,{value:(c==null?void 0:c.to)??null,onValueChange:h=>{n.setConditionValue({from:(c==null?void 0:c.from)??null,to:h})},size:"sm",children:t.jsx(a.Button,{className:"truncate",children:(c==null?void 0:c.to)??"..."})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},fr={equals:y({modifier:yn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),notEquals:y({modifier:vn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThan:y({modifier:Sn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),lessThanOrEquals:y({modifier:zn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThan:y({modifier:wn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),greaterThanOrEquals:y({modifier:Fn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="number",isSerializedValueValid:i=>typeof i=="number"}),inRange:y({modifier:bn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"}),notInRange:y({modifier:Nn,isValueValid:i=>typeof i=="number",isConditionValueValid:i=>typeof i=="object",isSerializedValueValid:i=>typeof i=="object"})};class ei extends P{constructor(e){super(e);C(this,"modifiers",fr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=fr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ei({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(hr,{condition:this,...e},this.id)}}const pr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},mr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ii extends P{constructor(e){super(e);C(this,"modifiers",mr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=mr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ii({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(pr,{condition:this,...e},this.id)}}const gr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=d.useMemo(()=>r.options.map(p=>typeof p=="string"?{value:p,label:p}:p),[r.options]),f=d.useMemo(()=>{const p={};for(const m of l)p[m.value]=m.label;return p},[l]),c=d.useCallback(p=>{p.length>0?n.setConditionValue(p):n.setConditionValue([])},[n]),h=()=>{switch(s){case"equals":case"notEquals":{const p=n.modifiers.equals,m=o!==void 0&&p.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:m!==void 0?m?f[m]:"empty":"..."})})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(qn,{required:!1,selectFieldOptions:r.options,value:m??void 0,onValueChange:n.setConditionValue})})]})}case"includes":case"excludes":{const p=n.modifiers.includes,m=o!==void 0&&p.isConditionValueValid(o)?o:void 0;return t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",children:m?`${m.length} options`:"..."})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsx(ke,{selectFieldOptions:r.options,values:m??Ee,onValuesChange:c})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),h(),t.jsx(j,{condition:n,onClick:e})]})},Cr={equals:y({modifier:le,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),notEquals:y({modifier:de,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>!Array.isArray(i),isSerializedValueValid:i=>!Array.isArray(i)}),includes:y({modifier:Mn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)}),excludes:y({modifier:xn,isValueValid:i=>typeof i=="string",isConditionValueValid:i=>Array.isArray(i),isSerializedValueValid:i=>Array.isArray(i)})};class ni extends P{constructor(e){super(e);C(this,"modifiers",Cr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Cr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ni({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(gr,{condition:this,...e},this.id)}}const Vr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},yr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ti extends P{constructor(e){super(e);C(this,"modifiers",yr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=yr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ti({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Vr,{condition:this,...e},this.id)}}const vr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},Sr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ri extends P{constructor(e){super(e);C(this,"modifiers",Sr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Sr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ri({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(vr,{condition:this,...e},this.id)}}const zr=i=>{const{condition:n,onRemove:e}=i,r=n.getConditionValue(),o=n.getConditionModifier(),s=()=>{switch(o){case"equals":case"notEquals":case"before":case"after":{const l=typeof r=="string"?r:void 0;return t.jsx(Ni,{value:l,onValueChange:f=>n.setConditionValue(f??void 0),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:l?Vi(l):"..."})})}case"in":case"notIn":{const l=r&&typeof r=="object"?r:void 0,f=c=>{n.setConditionValue(c.from||c.to?c:void 0)};return t.jsxs(t.Fragment,{children:[t.jsx(Ni,{value:l==null?void 0:l.from,onValueChange:c=>f({from:c,to:(l==null?void 0:l.to)??null}),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:l!=null&&l.from?Vi(l.from):"..."})}),t.jsx(Ni,{value:l==null?void 0:l.to,onValueChange:c=>f({from:(l==null?void 0:l.from)??null,to:c}),size:"sm",children:t.jsx(a.Button,{type:"button",className:"truncate",children:l!=null&&l.to?Vi(l.to):"..."})})]})}}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[n.field.type].icon}),t.jsx("span",{className:"truncate",children:n.field.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[o].modifier.label})}),s(),t.jsx(j,{condition:n,onClick:e})]})},wr={equals:y({modifier:Dt,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),notEquals:y({modifier:Pt,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),before:y({modifier:jt,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),after:y({modifier:Ut,isValueValid:i=>E(i),isConditionValueValid:i=>E(i),isSerializedValueValid:i=>E(i)}),in:y({modifier:Gt,isValueValid:i=>E(i),isConditionValueValid:i=>Ge(i),isSerializedValueValid:i=>Ge(i)}),notIn:y({modifier:kt,isValueValid:i=>E(i),isConditionValueValid:i=>Ge(i),isSerializedValueValid:i=>Ge(i)})};class oi extends P{constructor(e){super(e);C(this,"modifiers",wr)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=wr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new oi({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(zr,{condition:this,...e},this.id)}}const Fr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(o){case void 0:return"...";case!0:return"true";case!1:return"false";case null:return"empty"}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),t.jsxs(a.Menu.Root,{children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:l()})}),t.jsx(a.Menu.Content,{size:"sm",children:t.jsxs(a.Menu.SelectGroup,{required:!0,value:o,onValueChange:n.setConditionValue,children:[t.jsx(Fe,{value:!0,children:"empty"}),t.jsx(Fe,{value:!1,children:"not empty"})]})})]}),t.jsx(j,{condition:n,onClick:e})]})},br={equals:y({modifier:Tt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:Lt,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class ai extends P{constructor(e){super(e);C(this,"modifiers",br)}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=br[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new ai({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Fr,{condition:this,...e},this.id)}}const Nr=i=>{const{condition:n,onRemove:e}=i,r=n.field,o=n.getConditionValue(),s=n.getConditionModifier(),l=()=>{switch(s){case"equals":case"notEquals":case"includes":case"excludes":return t.jsx(Ae,{value:o??"",onValueChange:n.setConditionValue,size:"sm",children:t.jsx(a.Button,{type:"button",className:"shrink-1 min-w-0 grow",children:t.jsx("span",{className:"truncate",children:o||"..."})})})}};return t.jsxs(a.ButtonGroup,{className:"flex w-max min-w-0 max-w-full gap-0.5",size:"sm",variant:"fill",accentColor:"base",children:[t.jsxs(a.Badge,{className:"shrink-1 min-w-0",size:"sm",variant:"fill",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:T[r.type].icon}),t.jsx("span",{className:"truncate",children:r.label||$})]}),t.jsx(U,{condition:n,children:t.jsx(a.Button,{type:"button",children:n.modifiers[s].modifier.label})}),l(),t.jsx(j,{condition:n,onClick:e})]})},Mr={equals:y({modifier:le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),notEquals:y({modifier:de,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),includes:y({modifier:Le,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0}),excludes:y({modifier:Be,isValueValid:i=>!0,isConditionValueValid:i=>!0,isSerializedValueValid:i=>!0})};class si extends P{constructor(e){super(e);C(this,"modifiers",Mr)}transformValue(e){return(e==null?void 0:e.toString())??""}static deserialize(e,r){const{conditionValue:o,conditionModifier:s,...l}=e,f=Mr[s],c=o!==void 0&&f.isSerializedValueValid(o)?f.modifier.deserialize(o):void 0;return new si({field:r,conditionModifier:s,conditionValue:c,...l})}render(e){return t.jsx(Nr,{condition:this,...e},this.id)}}const Wo={date:We,time:oi,number:Ye,boolean:He,select:ni,string:ti,url:si,text:ri,upload:ai,qr:ii,"multi-string":Ke,"multi-select":Xe,radio:Re,"checkbox-list":Je,"pass-fail":Qe,otp:Ze,rating:ei},xr=(i,n)=>{if(i.type!==n.type)throw new Error(`field and condition type mismatch ${i.type} !== ${n.type}`);return Wo[n.type].deserialize(n,i)},On=(i,n)=>{const e=_n(i,n),r={};for(const o of i)r[o.identifier]=o;return e.map(o=>xr(r[o.fieldId],o))},Ir=(i,n)=>Tn(i,n).map(r=>r.serialize()),_n=(i,n)=>{const e=new Set(i.map(r=>r.identifier));return n.filter(r=>e.has(r.fieldId))},Tn=(i,n)=>{const e=new Set(i.map(r=>r.identifier));return n.filter(r=>e.has(r.field.identifier))},xi=i=>Cn[i.type].deserialize(i);function Xo(i){return i.map(qr)}const qr=i=>i.type==="section"?X.deserialize(i):xi(i);function Ko(i){return i.map(xi)}function Yo(i){const n=[];for(const e of i)if(e instanceof X)for(const r of e.getFields())n.push(r);else n.push(e);return n}function Zo(i){const n={};for(const e of i)n[e.identifier]=e;return n}function Or(i,n,e=!0){const r=e?Ii(i,n):n,o={};for(const s of i){if(!(s.identifier in r))continue;const l=r[s.identifier];o[s.identifier]=s.serializeValue(l)}return o}function _r(i,n,e=!0){const r=e?Ln(i,n):n,o={};for(const s of i){if(!(s.identifier in r))continue;const l=r[s.identifier];o[s.identifier]=s.deserializeValue(l)}return o}function Ii(i,n){const e={};for(const r of i){if(!(r.identifier in n))continue;const o=n[r.identifier];r.isValue(o)&&(e[r.identifier]=r.cleanValue(o))}return e}function Ln(i,n){const e={};for(const r of i){if(!(r.identifier in n))continue;const o=n[r.identifier];r.isSerializedValue(o)&&(e[r.identifier]=r.cleanSerializedValue(o))}return e}function Tr(i,n){const e=Ii(i,n),r={},o={};for(const s of i){if(!(s.identifier in e))continue;const l=e[s.identifier];switch(s.type){case"upload":if(!s.isValue(l))break;o[s.identifier]=l,r[s.identifier]=[];break;case"pass-fail":if(!s.isValue(l))break;o[s.identifier]=l.files,r[s.identifier]={...l,files:[]};break;default:r[s.identifier]=n[s.identifier]}}return[r,o]}function Lr(i,n,e){const r={};for(const o of i){if(!(o.identifier in n))continue;const s=n[o.identifier];switch(o.type){case"upload":if(!o.isValue(s))break;r[o.identifier]=e[o.identifier]??[];break;case"pass-fail":if(!o.isValue(s))break;r[o.identifier]={...s,files:e[o.identifier]??[]};break;default:if(!o.isValue(s))break;r[o.identifier]=s}}return r}const Br=(i,n)=>{const e={};for(const r of i){const o=n[r.identifier];e[r.identifier]=o!==void 0?o:r.blankValue()}return e},Ar=(i,n,e)=>{const r={};for(const o of i){const s=n[o.identifier],l=e[o.identifier];o.areValuesEqual(s,l)||(r[o.identifier]=l)}return r},Er=(i,n,e)=>{const r={};for(const o of i){const s=n[o.identifier],l=e[o.identifier];o.areValuesEqual(s,l)&&(r[o.identifier]=l)}return r},Bn=(i,n,e)=>i.every(r=>{const o=n[r.identifier],s=e[r.identifier];return r.areValuesEqual(o,s)}),An=i=>{const n={};for(const e of i)n[e.identifier]=e.blankValue();return n},$r=(i,n)=>Bn(i,n,An(i)),Qo=R.cva(["flex","flex-col"],{variants:{size:{xs:["gap-2"],sm:["gap-4"],md:["gap-6"],lg:["gap-8"],xl:["gap-10"]}}}),qi=R.cva(["flex","flex-col"],{variants:{size:{xs:["gap-2"],sm:["gap-4"],md:["gap-6"],lg:["gap-8"],xl:["gap-10"]}}}),En=d.memo(i=>{const{fieldSection:n}=i,{label:e,description:r}=n,o=Y.useWatch(),{fieldSchema:s,size:l}=d.use(B),f=d.useMemo(()=>s.getFieldSections(),[s]),c=d.useMemo(()=>f.findIndex(({identifier:g})=>g===n.identifier),[f,n.identifier]),h=d.useMemo(()=>f.filter(g=>n.identifier in g.conditions),[f,n.identifier]),p=d.useMemo(()=>h.length===0?!0:h.some(g=>{const V=g.getConditions(n.identifier);return new Mi(V).applyConditions(o)}),[h,n,o]),m=fi(n.fields);return p?t.jsxs(t.Fragment,{children:[c!==0?t.jsx(a.Separator,{size:"full"}):null,t.jsxs("div",{className:"flex flex-col gap-4",children:[(e||r)&&t.jsx(t.Fragment,{children:t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsx(a.Heading,{size:l,children:e}),r&&t.jsx(a.Text,{accentColor:"base",size:l,children:r})]})}),t.jsx("div",{className:qi({size:l}),children:m})]})]}):null});En.displayName="FieldSectionLayout";const li=class li extends Di{constructor(e){const{label:r=null,description:o=null,fields:s,conditions:l={},...f}=e;super(f);C(this,"type","section");C(this,"label");C(this,"description");C(this,"conditions");C(this,"fields",[]);C(this,"fieldObserver",()=>{this.notify(this)});C(this,"initFields",e=>{for(const r of e)r.observe(this.fieldObserver);return e});C(this,"conditionObserver",()=>{this.notify(this)});C(this,"initConditions",e=>{for(const r of Object.values(e).flat())r.observe(this.conditionObserver);return e});this.label=r,this.description=o,this.fields=this.initFields(s),this.conditions=this.initConditions(l)}serialize(){const e={};for(const[r,o]of Object.entries(this.conditions))e[r]=o.map(s=>s.serialize());return{...super.serialize(),label:this.label,description:this.description,conditions:e,fields:this.fields.map(r=>r.serialize())}}getOptions(){return{...super.getOptions(),label:this.label,description:this.description,fields:this.fields,conditions:this.conditions}}duplicate(e){return new li({...this.getOptions(),identifier:e,fields:this.fields.map(r=>r.duplicate(N.v4()))})}setOptions(e){const{label:r,description:o,fields:s,conditions:l,...f}=e;this.label=r??this.label,this.description=o??this.description,this.fields=s||this.fields,this.conditions=l||this.conditions,super.setOptions(f)}getErrors(e){const r={};for(const o of this.fields){const s=o.getError(e[o.identifier]);s&&(r[o.identifier]=s)}return r}getFields(){return this.fields}addField(e,r){const o=[...this.fields];o.splice(r??this.fields.length,0,e),this.fields=this.initFields(o),this.notify(this)}moveField(e,r){const o=[...this.fields],[s]=o.splice(e,1);o.splice(r,0,s),this.fields=o,this.notify(this)}removeField(e){this.fields=this.initFields(this.fields.filter(({identifier:o})=>o!==e.identifier));const r={};for(const[o,s]of Object.entries(this.conditions))r[o]=s.filter(l=>l.field.identifier!==e.identifier);this.conditions=r,this.notify(this)}getConditions(e){return this.conditions[e]}addCondition(e,r){this.conditions=this.initConditions({...this.conditions,[e]:[...this.conditions[e]??[],r]}),this.notify(this)}addConditions(e,r){this.conditions=this.initConditions({...this.conditions,[e]:[...this.conditions[e]??[],...r]}),this.notify(this)}removeCondition(e,r){this.conditions=this.initConditions({...this.conditions,[e]:(this.conditions[e]??[]).filter(o=>o.id!==r.id)}),this.notify(this)}removeConditions(e,r){const o=new Set(r.map(s=>s.id));this.conditions=this.initConditions({...this.conditions,[e]:(this.conditions[e]??[]).filter(s=>!o.has(s.id))}),this.notify(this)}getConditionals(){return new Set(Object.keys(this.conditions))}addConditional(e){this.conditions=this.initConditions({...this.conditions,[e]:[]}),this.notify(this)}removeConditional(e){const r={...this.conditions};delete r[e],this.conditions=this.initConditions(r),this.notify(this)}render(){return t.jsx(En,{fieldSection:this})}};C(li,"deserialize",e=>{const r=e.fields.map(xi),o={};for(const[s,l]of Object.entries(e.conditions))o[s]=On(r,l);return new li({...e,fields:r,conditions:o})});let X=li;const ee=d.createContext({}),Oi=d.memo(i=>{const{children:n,variant:e,size:r,accentColor:o,onSelectFieldType:s,...l}=i,f=d.useMemo(()=>{const c={[O.Assessment]:[],[O.Capture]:[],[O.Numeric]:[],[O.Selection]:[],[O.Temporal]:[],[O.Text]:[],[O.Verification]:[]};for(const h of St){const{group:p}=T[h];c[p].push(h)}return c},[]);return t.jsxs(a.Menu.Root,{...l,children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{variant:e,size:r,accentColor:o,children:t.jsx(a.Menu.Scroll,{children:Object.entries(f).map(([c,h])=>{const{name:p}=zt[c];return h.length===0?null:t.jsxs(a.Menu.Group,{children:[t.jsx(a.Menu.Label,{children:p}),h.map(m=>t.jsx(Dr,{fieldType:m,onSelectFieldType:s},m))]},c)})})})]})});Oi.displayName="CreateFieldDropdownMenu";const Dr=d.memo(i=>{const{fieldType:n,onSelectFieldType:e}=i,r=d.useCallback(()=>{e(n)},[n,e]),{icon:o,name:s}=T[n];return t.jsxs(a.Menu.Item,{onSelect:r,children:[t.jsx(a.LuIcon,{icon:o}),t.jsx(a.Text,{className:"truncate",children:s})]})});Dr.displayName="CreateFieldDropdownMenuItem";const _i=i=>{switch(i){case"text":return new ze({label:"",required:!1,identifier:N.v4()});case"boolean":return new fe({label:"",required:!1,identifier:N.v4()});case"number":return new H({label:"",required:!1,identifier:N.v4()});case"date":return new xe({label:"",required:!1,identifier:N.v4()});case"time":return new Oe({label:"",required:!1,identifier:N.v4()});case"string":return new Se({label:"",required:!1,identifier:N.v4()});case"url":return new _e({label:"",required:!1,identifier:N.v4()});case"select":return new oe({label:"",options:[],required:!1,identifier:N.v4()});case"multi-string":return new he({label:"",required:!1,identifier:N.v4()});case"multi-select":return new te({label:"",options:[],required:!1,identifier:N.v4()});case"upload":return new we({label:"",required:!1,identifier:N.v4(),maximum_files:6,maximum_size:Te});case"qr":return new qe({label:"",required:!1,identifier:N.v4()});case"radio":return new ye({label:"",options:[],required:!1,identifier:N.v4()});case"checkbox-list":return new pe({label:"",options:[],required:!1,identifier:N.v4()});case"pass-fail":return new Ve({label:"",required:!1,identifier:N.v4(),showNotesAndFilesOn:["fail"]});case"otp":return new me({label:"",validationType:"none",required:!1,identifier:N.v4(),length:6});case"rating":return new ve({label:"",required:!1,identifier:N.v4(),maxRating:5})}},$n=i=>{switch(i.type){case"text":return new ri({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"boolean":return new He({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"number":return new Ye({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"date":return new We({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"time":return new oi({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"string":return new ti({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"url":return new si({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"select":return new ni({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"multi-string":return new Ke({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"multi-select":return new Xe({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"upload":return new ai({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"qr":return new ii({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"radio":return new Re({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"checkbox-list":return new Je({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"pass-fail":return new Qe({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"otp":return new Ze({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i});case"rating":return new ei({id:N.v4(),conditionValue:void 0,conditionModifier:"equals",field:i})}},Pr=(i,n)=>{switch(i){case"checkbox-list":return pe.getFieldCreationSchema(n);case"multi-select":return te.getFieldCreationSchema(n);case"number":return H.getFieldCreationSchema(n);case"radio":return ye.getFieldCreationSchema(n);case"select":return oe.getFieldCreationSchema(n);case"string":return Se.getFieldCreationSchema(n);case"text":return ze.getFieldCreationSchema(n);case"upload":return we.getFieldCreationSchema(n);case"pass-fail":return Ve.getFieldCreationSchema(n);case"otp":return me.getFieldCreationSchema(n);case"rating":return ve.getFieldCreationSchema(n);default:return}},jr=d.memo(i=>{const{popoverInputs:n,...e}=i;return t.jsxs(a.Popover.Root,{children:[t.jsx(a.Popover.Trigger,{asChild:!0,children:t.jsxs(a.Button,{variant:"soft",type:"button",size:"sm",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:Bo}),"Settings"]})}),t.jsx(a.Popover.Content,{size:"sm",...e,children:t.jsx("div",{className:R.cx("flex w-full max-w-[350px] flex-col",qi({size:"sm"})),children:n})})]})});jr.displayName="FieldSettingsPopover";const Ur=d.memo(i=>{const{parentPath:n,fieldIndex:e,field:r}=i,o=hi(),{disableRequiredFields:s}=d.use(ee),[l,f]=d.useState(void 0);d.useEffect(()=>{r.image instanceof Promise?r.image.then(f).catch(console.error):f(r.image)},[r]);const c=d.useCallback(()=>{r.setOptions({image:void 0})},[r]),[h,p]=d.useMemo(()=>{const z=[],b=[],L=Pr(r.type,`${n}.${e}`)??[];for(const G of L)G.showDirectly?z.push(G.field):b.push(G.field);return[z,b]},[r,n,e]),m=fi(h),g=fi(p),V=p.length>0,F=d.useCallback(()=>{l&&o(()=>({file:l}))},[o,l]),w=d.useCallback(z=>{r.setOptions({required:!!z})},[r]),S=d.useCallback(z=>{r.setOptions({label:z.target.value})},[r]),v=d.useCallback(z=>{r.setOptions({description:z.target.value})},[r]),{icon:I,name:q}=T[r.type];return t.jsxs("div",{className:"flex w-full grow flex-col gap-4",children:[t.jsxs("div",{className:"flex w-full justify-between gap-2",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs(a.Badge,{accentColor:"base",variant:"soft",size:"sm",children:[t.jsx(a.LuIcon,{icon:I}),q]}),!s&&t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Checkbox.Root,{checked:r.required,onCheckedChange:w,size:"sm",children:t.jsx(a.Checkbox.Indicator,{children:t.jsx(a.LuIcon,{icon:W})})}),t.jsx(a.Text,{size:"sm",accentColor:"base",children:"Required"})]})]}),V&&t.jsx(jr,{popoverInputs:g,align:"end"})]}),l&&t.jsxs("div",{className:"group relative inline-block w-full min-w-[300px]",children:[t.jsx(Me,{className:"h-[100px] w-full min-w-[300px] cursor-pointer rounded-md object-cover",file:l,onClick:F}),t.jsx(a.IconButton,{type:"button",className:"group-hover:not-disabled:flex absolute right-2 top-2 hidden",variant:"solid",accentColor:"base","aria-label":"delete",onClick:c,size:"sm",children:t.jsx(a.LuIcon,{icon:ue})})]}),t.jsxs("div",{className:"flex w-full flex-col gap-2 overflow-hidden",children:[t.jsx(a.Input.Root,{variant:"outline",size:"md",children:t.jsx(a.Input.Field,{placeholder:"Enter your question",value:r.label??"",onChange:S,maxLength:200})}),t.jsx(a.TextArea,{className:"field-sizing-content",placeholder:"Enter a field description (optional)",value:r.description??"",onChange:v,maxLength:1e3,resize:"vertical",size:"md"})]}),h.length>0&&t.jsx("div",{className:R.cx("w-full",qi({size:"sm"})),children:m})]})});Ur.displayName="FieldBuilder";const Dn=d.memo(i=>{const{field:n,fieldSection:e,fieldIndex:r,sectionIndex:o}=i,s=d.useRef(null),l=`fields.${o}.fields`,f=d.useCallback(w=>{e.addField(_i(w),r+1)},[r,e]),c=d.useCallback(()=>{e.addField(n.duplicate(N.v4()))},[n,e]),h=d.useCallback(w=>{const S=w==="up"?o-1:o+1;e.moveField(r,S)},[e,r,o]),p=d.useCallback(w=>{const{files:S}=w.target;if(!S||S.length!==1)return;const v=S.item(0);if(v){if(v.size>Ft){a.toast.error({title:"File upload error",description:`The file ${v.name} exceeded the maximum file size`});return}n.setOptions({image:v})}},[n]),m=d.useCallback(()=>{h("up")},[h]),g=d.useCallback(()=>{h("down")},[h]),V=d.useCallback(()=>{var w;(w=s.current)==null||w.click()},[]),F=d.useCallback(()=>{e.removeField(n)},[n,e]);return t.jsxs(a.Card,{className:"flex w-full items-center justify-between gap-4",size:"sm",children:[t.jsx(Ur,{fieldIndex:r,field:n,parentPath:l}),t.jsxs(a.ButtonGroup,{className:"flex flex-col gap-0.5",variant:"ghost",accentColor:"base",size:"sm",children:[t.jsx(Oi,{onSelectFieldType:f,size:"sm",children:t.jsx(a.IconButton,{type:"button",children:t.jsx(a.LuIcon,{icon:Z})})}),t.jsx(a.IconButton,{type:"button",onClick:m,children:t.jsx(a.LuIcon,{icon:nt})}),t.jsx(a.IconButton,{type:"button",onClick:g,children:t.jsx(a.LuIcon,{icon:it})}),t.jsx(a.IconButton,{type:"button",onClick:c,children:t.jsx(a.LuIcon,{icon:Ai})}),t.jsx(a.IconButton,{type:"button",onClick:V,children:t.jsx(a.LuIcon,{icon:Rn})}),t.jsx(a.IconButton,{type:"button",onClick:F,children:t.jsx(a.LuIcon,{icon:ue})})]}),t.jsx("input",{className:"hidden",ref:s,type:"file",accept:"image/*",onChange:p})]})});Dn.displayName="FieldBuilderWithActions";const Pn=d.memo(i=>{const{children:n,variant:e,size:r,accentColor:o,fields:s,onSelectField:l,...f}=i;return t.jsxs(a.Menu.Root,{...f,children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{variant:e,size:r,accentColor:o,children:t.jsx(a.Menu.Scroll,{children:s.map(c=>t.jsx(Gr,{field:c,onSelectField:l},c.identifier))})})]})});Pn.displayName="FieldDropdownMenu";const Gr=d.memo(i=>{const{field:n,onSelectField:e}=i,r=d.useCallback(()=>{e(n)},[n,e]);return t.jsxs(a.Menu.Item,{onSelect:r,children:[t.jsx(a.LuIcon,{icon:T[n.type].icon}),n.label||$]})});Gr.displayName="FieldDropdownMenuItem";const kr=d.memo(i=>{const{children:n,variant:e,size:r,accentColor:o,fieldSections:s,onSelectFieldSection:l,...f}=i;return t.jsxs(a.Menu.Root,{...f,children:[t.jsx(a.Menu.ClickTrigger,{children:n}),t.jsx(a.Menu.Content,{variant:e,size:r,accentColor:o,children:s.map(c=>t.jsx(Hr,{fieldSection:c,onSelectFieldSection:l},c.identifier))})]})});kr.displayName="FieldSectionDropdownMenu";const Hr=d.memo(i=>{const{fieldSection:n,onSelectFieldSection:e}=i,r=d.useCallback(()=>{e(n)},[n,e]);return t.jsxs(a.Menu.Item,{onSelect:r,children:[t.jsx(a.LuIcon,{icon:et}),n.label||Vn]})});Hr.displayName="FieldSectionDropdownMenuItem";const Jr=d.memo(i=>{const{id:n,sourceX:e,sourceY:r,targetX:o,targetY:s,style:l,markerEnd:f,data:c}=i,{targetSection:h,sourceSection:p,layoutDirection:m}=c,g=d.useMemo(()=>p.getConditions(h.identifier),[p,h.identifier]),V=d.useCallback(()=>{p.removeConditional(h.identifier)},[p,h.identifier]),F=d.useCallback(q=>{p.addCondition(h.identifier,$n(q))},[p,h.identifier]),w=d.useCallback(q=>{p.removeCondition(h.identifier,q)},[p,h.identifier]),[S,v,I]=_.getBezierPath({sourceX:e,sourceY:r,sourcePosition:m==="LR"?_.Position.Right:_.Position.Bottom,targetX:o,targetY:s,targetPosition:m==="LR"?_.Position.Left:_.Position.Top});return t.jsxs(t.Fragment,{children:[t.jsx(_.BaseEdge,{id:n,path:S,style:l,markerEnd:f,labelX:v,labelY:I}),t.jsx(_.EdgeLabelRenderer,{children:t.jsxs(a.Card,{size:"xs",variant:"surface",className:"nodrag nopan bg-(--base-2) pointer-events-auto absolute inline-flex flex-col gap-2",onMouseDown:a.stopPropagation,onClick:a.stopPropagation,"data-floating-content":"",style:{transform:`translate(-50%, -50%) translate(${v}px, ${I}px)`},children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Text,{size:"xs",className:"max-w-[280px] truncate",children:p.label||"Untitled section"}),t.jsxs("div",{className:"ml-auto flex items-center gap-1",children:[t.jsx(Pn,{fields:p.fields,onSelectField:F,children:t.jsx(a.IconButton,{"aria-label":"Add condition",type:"button",variant:"surface",size:"xs",accentColor:"base",children:t.jsx(a.LuIcon,{icon:Z})})}),t.jsxs(a.Tooltip.Root,{children:[t.jsx(a.Tooltip.Trigger,{asChild:!0,children:t.jsx(a.IconButton,{"aria-label":"Remove conditional logic",type:"button",variant:"surface",size:"xs",accentColor:"base",color:"danger",onClick:V,children:t.jsx(a.LuIcon,{icon:ue})})}),t.jsx(a.Tooltip.Content,{size:"sm",children:"Remove conditional logic"})]})]})]}),g.length>0&&t.jsx("div",{className:"flex h-max w-full flex-col flex-wrap gap-1",children:g.map(q=>t.jsx(d.Fragment,{children:q.render({onRemove:w})},q.id))})]})})]})});Jr.displayName="FieldSectionConditionEdgeComponent";const Wr=d.memo(i=>{const{data:n,selected:e}=i,{fieldSection:r,index:o,layoutDirection:s}=n,{fieldSchema:l}=d.use(ee),f=d.useCallback(()=>{l.removeFieldSection(r)},[l,r]),c=d.useCallback(V=>{r.addField(_i(V))},[r]),h=d.useCallback(()=>{const V=new X({identifier:N.v4(),fields:[]});l.addFieldSection(V),r.addConditional(V.identifier)},[l,r]),p=d.useCallback(()=>{l.addFieldSection(r.duplicate(N.v4()))},[l,r]),m=d.useCallback(V=>{r.setOptions({label:V.target.value})},[r]),g=d.useCallback(V=>{r.setOptions({description:V.target.value})},[r]);return t.jsxs(a.Card,{variant:"surface",className:"bg-(--base-2) relative cursor-pointer",size:"sm","data-selected":e?"true":void 0,children:[t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsxs("div",{className:"flex w-full flex-col gap-2 overflow-hidden",children:[t.jsx(a.Input.Root,{variant:"outline",size:"md",accentColor:"base",children:t.jsx(a.Input.Field,{placeholder:"Enter a section label (optional)",value:r.label??"",onChange:m,maxLength:200})}),t.jsx(a.TextArea,{className:"field-sizing-content",placeholder:"Enter a section description (optional)",value:r.description??"",onChange:g,maxLength:1e3,resize:"vertical",size:"md"})]}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(a.Text,{weight:"bold",children:"Fields"}),t.jsx(Oi,{onSelectFieldType:c,size:"sm",children:t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",accentColor:"base",children:[t.jsx(a.LuIcon,{icon:Z})," Add field"]})})]}),t.jsx("div",{className:"flex flex-col gap-3",children:r.fields.map((V,F)=>t.jsx(Dn,{field:V,fieldSection:r,fieldIndex:F,sectionIndex:o},V.identifier))})]}),t.jsx(_.NodeToolbar,{isVisible:!0,position:_.Position.Right,align:"start",offset:8,onMouseDown:a.stopPropagation,children:t.jsx(a.Card,{variant:"surface",className:"bg-(--base-2) flex flex-col items-center gap-1 p-1",size:"xs",onClick:a.stopPropagation,children:t.jsxs(a.ButtonGroup,{className:"flex flex-col gap-2",variant:"surface",size:"xs",accentColor:"base",children:[t.jsx(a.IconButton,{type:"button",onClick:h,children:t.jsx(a.LuIcon,{icon:No})}),t.jsx(a.IconButton,{type:"button",onClick:p,children:t.jsx(a.LuIcon,{icon:Ai})}),t.jsx(a.IconButton,{type:"button",onClick:f,children:t.jsx(a.LuIcon,{icon:ue})})]})})}),t.jsx(_.Handle,{type:"target",className:"size-4! bg-(--base-3)! border-(--base-7)!",position:s==="LR"?_.Position.Left:_.Position.Top}),t.jsx(_.Handle,{type:"source",className:"size-4! bg-(--base-3)! border-(--base-7)!",position:s==="LR"?_.Position.Right:_.Position.Bottom})]})});Wr.displayName="CustomNode";const Ro={fieldSection:Wr},ea={fieldSectionCondition:Jr},ia=(i,n,e)=>{const r=new kn.graphlib.Graph().setDefaultEdgeLabel(()=>({}));return r.setGraph({rankdir:e,nodesep:200,edgesep:500,ranksep:500}),n.forEach(o=>r.setEdge(o.source,o.target,{width:500,height:200,labelpos:"c"})),i.forEach(o=>{var s,l;return r.setNode(o.id,{...o,width:((s=o.measured)==null?void 0:s.width)??0,height:((l=o.measured)==null?void 0:l.height)??0})}),kn.layout(r),[i.map(o=>{var c,h;const s=r.node(o.id),l=s.x-(((c=o.measured)==null?void 0:c.width)??0)/2,f=s.y-(((h=o.measured)==null?void 0:h.height)??0)/2;return{...o,position:{x:l,y:f}}}),n]},na={hideAttribution:!0},Xr=d.memo(()=>{var Q;const{errors:i}=Y.useFormState(),{handleSubmit:n}=Y.useFormContext(),{onSave:e,onCancel:r}=d.use(ee),{fieldSchema:o}=d.use(ee),s=d.useRef(null),[l,f]=d.useState(),[c,h]=d.useState("TB");d.useLayoutEffect(()=>{s.current&&s.current.classList.remove("light")},[]);const p=d.useMemo(()=>o.fieldSections.map((J,K)=>({id:J.identifier,position:{x:0,y:0},data:{index:K,fieldSection:J,layoutDirection:c},draggable:!0,type:"fieldSection"})),[o.fieldSections,c]),m=d.useMemo(()=>{const J=[],K={};for(const ne of o.fieldSections)K[ne.identifier]=ne;for(const ne of o.fieldSections){const Ti=ne.conditions;for(const[di,la]of Object.entries(Ti))J.push({id:`${ne.identifier}-${di}`,source:ne.identifier,target:di,data:{targetSection:K[di],sourceSection:ne,layoutDirection:c},animated:la.length>0,markerEnd:_.MarkerType.Arrow,style:{strokeWidth:2,stroke:"var(--base-a8)"},type:"fieldSectionCondition"})}return J},[o.fieldSections,c]),[g,V,F]=_.useNodesState(p),[w,S,v]=_.useEdgesState(m);d.useEffect(()=>{V(p)},[p,V]),d.useEffect(()=>{S(m)},[m,S]);const[I,q]=d.useMemo(()=>ia(g,w,c),[w,c,g]),z=d.useCallback(()=>{o.addFieldSection(new X({identifier:N.v4(),fields:[]}))},[o]),b=d.useCallback(J=>{const{source:K,target:ne}=J,Ti=o.fieldSections.find(({identifier:di})=>di===K);Ti.setOptions({conditions:{...Ti.conditions,[ne]:[]}})},[o.fieldSections]),L=d.useCallback(J=>{const K=o.getSectionDependencyGraph();return!Un.willCreateCycle(K,J.source,J.target)},[o]),G=d.useCallback(()=>{l==null||l.zoomOut()},[l]),ie=d.useCallback(()=>{l==null||l.zoomIn()},[l]),ce=d.useCallback(()=>{l==null||l.fitView()},[l]);return t.jsxs("form",{className:"flex size-full flex-col gap-4",onSubmit:n(e),children:[t.jsxs(a.Card,{className:"relative size-full",variant:"outline",children:[t.jsx(_.ReactFlow,{ref:s,onInit:f,nodes:I,onNodesChange:F,edges:q,onEdgesChange:v,nodeTypes:Ro,edgeTypes:ea,onConnect:b,attributionPosition:"bottom-left",fitView:!0,minZoom:0,isValidConnection:L,proOptions:na}),t.jsx(_.Panel,{position:"top-left",children:t.jsx(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:t.jsxs(a.Button,{type:"button",variant:"surface",onClick:z,children:[t.jsx(a.LuIcon,{icon:Z})," Add section"]})})}),t.jsxs(_.Panel,{position:"top-right",className:"flex flex-col items-center gap-2",children:[t.jsxs(a.ToggleGroup.Root,{className:"flex flex-col",type:"single",accentColor:"base",size:"sm",value:c,onValueChange:h,children:[t.jsx(a.ToggleGroup.IconItem,{className:"rounded-b-none",value:"LR",type:"button",children:t.jsx(a.LuIcon,{icon:go})}),t.jsx(a.ToggleGroup.IconItem,{className:"rounded-t-none",value:"TB",type:"button",children:t.jsx(a.LuIcon,{icon:mo})})]}),t.jsx(a.Separator,{size:"sm"}),t.jsxs(a.ButtonGroup,{className:"flex flex-col",size:"sm",accentColor:"base",variant:"soft",children:[t.jsx(a.IconButton,{className:"rounded-b-none",onClick:ie,type:"button",children:t.jsx(a.LuIcon,{icon:Z})}),t.jsx(a.IconButton,{onClick:G,radius:"none",type:"button",children:t.jsx(a.LuIcon,{icon:ui})}),t.jsx(a.IconButton,{className:"rounded-t-none",onClick:ce,type:"button",children:t.jsx(a.LuIcon,{icon:Eo})})]})]}),t.jsx(_.Panel,{position:"bottom-right",children:t.jsxs(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:[r&&t.jsx(a.Button,{type:"button",variant:"soft",accentColor:"base",onClick:r,children:"Cancel"}),t.jsx(a.Button,{type:"submit",variant:"surface",children:"Save"})]})})]}),!!((Q=i.fields)!=null&&Q.message)&&t.jsx(a.Text,{size:"xs",accentColor:"danger",children:i.fields.message})]})});Xr.displayName="FormBuilderFlowBuilder";const ta=(i,n,e={})=>{const{conditions:r=!1}=e,o=i.get(n.identifier);if(!o)throw new Error(`Attempting to reseed serialized section with identifier ${n.identifier} which is not present in the reseeded identifier map`);const s=new Map,l=n.fields.map(c=>{const h=N.v4(),{image:p,...m}=c;return s.set(c.identifier,h),{...m,identifier:h}}),f={};if(r)for(const[c,h]of Object.entries(n.conditions??{})){const p=i.get(c);if(!p)continue;const m=h.map(g=>{const V=s.get(g.fieldId);if(!V)throw new Error(`Serialized condition referencing undefined field with identifier: ${g.fieldId}`);return{...g,fieldId:V}});f[p]=m}return{...n,identifier:o,conditions:f,fields:l}},ra=(i,n={})=>{const e=new Map(i.map(r=>[r.identifier,N.v4()]));return i.map(r=>ta(e,r,n))},jn=(i,n)=>{const e={},r=i.filter(o=>o instanceof X);for(const o of i)if(o instanceof X){const s=r.filter(f=>o.identifier in f.conditions);if(s.length>0&&!s.some(f=>{const c=f.getConditions(o.identifier);return new Mi(c).applyConditions(n)}))continue;const l=o.getErrors(n);Object.assign(e,l)}else{if(!(o instanceof k))throw new Error("Invalid field type");const s=o.identifier,l=o.getError(Hn(n,s));l&&so(e,s,l)}return e},oa=async i=>{const n={},e=[];for(const r of i){const{fields:o}=r,s=[];for(const l of o){if(l.image){if(l.image instanceof Promise)try{n[l.identifier]=await l.image}catch(f){console.error("Failed to get image from promise",f)}else n[l.identifier]=l.image;delete l.image}s.push(l)}e.push({...r,fields:s})}return{fields:e,images:n}};async function aa(i){const n={};for(const[e,r]of Object.entries(i))n[e]=await Promise.all(r);return n}class Ne extends De{constructor(e){super();C(this,"fieldSections");C(this,"fieldObserver",()=>{this.notify(this)});C(this,"initFields",e=>{for(const r of e)r.observe(this.fieldObserver);return e});this.fieldSections=this.initFields(e)}serialize(){return this.fieldSections.map(e=>e.serialize())}static deserialize(e){return new Ne(e.map(X.deserialize))}static reseedFieldSections(e,r){return ra(e,r)}getFields(){return this.fieldSections.flatMap(e=>e.getFields())}getFieldSections(){return this.fieldSections}addFieldSection(e,r){const o=[...this.fieldSections];o.splice(r??this.fieldSections.length,0,e),this.fieldSections=this.initFields(o),this.notify(this)}removeFieldSection(e){const r=this.fieldSections.filter(o=>o.identifier!==e.identifier);for(const o of r)o.removeConditional(o.identifier);this.fieldSections=this.initFields(r),this.notify(this)}moveFieldSection(e,r){const o=[...this.fieldSections],[s]=o.splice(e,1);o.splice(r,0,s),this.fieldSections=this.initFields(o),this.notify(this)}getSectionDependencyGraph(){const e=new oo.DirectedGraph({type:"directed"});for(const r of this.fieldSections)for(const o of Object.keys(r.conditions))e.mergeEdge(r.identifier,o);return e}getDependenciesOfSection(e){const r=this.getSectionDependencyGraph(),o=new Map(this.fieldSections.map(l=>[l.identifier,l])),s=[];return ao.bfsFromNode(r,e,(l,f,c)=>{s.push(o.get(l))},{mode:"in"}),s}cleanValues(e){return Ii(this.getFields(),e)}cleanSerializedValues(e){return Ln(this.getFields(),e)}deserializeValues(e,r){return _r(this.getFields(),e,r)}serializeValues(e,r){return Or(this.getFields(),e,r)}initializeValues(e){return Br(this.getFields(),e)}validateValues(e){return jn(this.getFieldSections(),e)}areValuesValid(e){return Object.keys(this.validateValues(e)).length===0}deserializeConditions(e){return On(this.getFields(),e)}cleanConditions(e){return Tn(this.getFields(),e)}serializeConditions(e){return Ir(this.getFields(),e)}cleanSerializedConditions(e){return _n(this.getFields(),e)}changedFieldValues(e,r){return Ar(this.getFields(),e,r)}unchangedFieldValues(e,r){return Er(this.getFields(),e,r)}areValuesEqual(e,r){return Bn(this.getFields(),e,r)}areValuesBlank(e){return $r(this.getFields(),e)}blankValues(){return An(this.getFields())}extractFilesAndPromisesFromFieldValues(e){return Tr(this.getFields(),e)}insertFilesAndPromisesToFieldValues(e,r){return Lr(this.getFields(),e,r)}}const Kr=d.memo(i=>{const{sourceFieldSection:n,targetFieldSection:e}=i,r=d.useMemo(()=>n.getConditions(e.identifier),[n,e.identifier]),o=d.useCallback(()=>{n.removeConditional(e.identifier)},[n,e.identifier]),s=d.useCallback(f=>{n.addCondition(e.identifier,$n(f))},[n,e.identifier]),l=d.useCallback(f=>{n.removeCondition(e.identifier,f)},[n,e.identifier]);return t.jsxs(a.Card,{className:"flex flex-col gap-2",size:"sm",children:[t.jsxs(a.ButtonGroup,{className:"flex justify-between gap-2",size:"sm",accentColor:"base",variant:"soft",children:[t.jsxs(a.Badge,{accentColor:"base",variant:"soft",size:"sm",children:[t.jsx(a.LuIcon,{icon:et}),n.label??Vn]}),t.jsx(a.IconButton,{type:"button",onClick:o,variant:"ghost",children:t.jsx(a.LuIcon,{icon:ue})})]}),t.jsxs("div",{className:"flex h-max w-full flex-wrap gap-2",children:[r.map(f=>f.render({onRemove:l})),t.jsx(Pn,{fields:n.fields,onSelectField:s,align:"start",children:t.jsx(a.IconButton,{type:"button",size:"sm",variant:"soft",accentColor:"base",children:t.jsx(a.LuIcon,{icon:Z})})})]})]})});Kr.displayName="FieldSectionConditionalItem";const Yr=d.memo(i=>{const{fieldSection:n}=i,{fieldSchema:e}=d.use(ee),r=d.useMemo(()=>e.fieldSections.filter(c=>n.identifier in c.conditions),[e.fieldSections,n.identifier]),o=d.useCallback(c=>{c.addConditional(n.identifier)},[n.identifier]),s=d.useCallback(c=>{n.setOptions({label:c.target.value})},[n]),l=d.useCallback(c=>{n.setOptions({description:c.target.value})},[n]),f=d.useMemo(()=>{const c=e.getSectionDependencyGraph();return e.fieldSections.filter(h=>!Un.willCreateCycle(c,h.identifier,n.identifier))},[n.identifier,e]);return t.jsxs("div",{className:"flex w-full grow flex-col gap-4",children:[t.jsxs("div",{className:"flex w-full flex-col gap-2 overflow-hidden",children:[t.jsx(a.Input.Root,{variant:"outline",size:"md",children:t.jsx(a.Input.Field,{placeholder:"Enter a section label (optional)",value:n.label??"",onChange:s,maxLength:200})}),t.jsx(a.TextArea,{className:"field-sizing-content",placeholder:"Enter a section description (optional)",value:n.description??"",onChange:l,maxLength:1e3,resize:"vertical",size:"md"})]}),t.jsx(a.Separator,{size:"full"}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs("div",{className:"flex justify-between gap-2",children:[t.jsx(a.Text,{accentColor:"base",children:"Conditions"}),t.jsx(kr,{fieldSections:f,onSelectFieldSection:o,children:t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",className:"w-max",children:[t.jsx(a.LuIcon,{icon:Z}),"Add condition"]})})]}),r.map(c=>t.jsx(Kr,{sourceFieldSection:c,targetFieldSection:n},c.identifier))]}),t.jsx(a.Separator,{size:"full"})]})});Yr.displayName="FieldSectionBuilder";const Zr=d.memo(i=>{const{fieldSection:n,sectionIndex:e}=i,{fieldSchema:r}=d.use(ee),o=a.useAlertDialog(),s=d.useCallback(()=>{r.removeFieldSection(n)},[r,n]),l=d.useCallback(w=>{const S=w==="up"?e-1:e+1;r.moveFieldSection(e,S)},[r,e]),f=d.useCallback(()=>{r.addFieldSection(n.duplicate(N.v4()))},[r,n]),c=d.useCallback(w=>{n.addField(_i(w))},[n]),h=d.useCallback(()=>{l("up")},[l]),p=d.useCallback(()=>{l("down")},[l]),m=d.useCallback(async()=>{const w=[n.serialize()],S=Ne.reseedFieldSections(w,{conditions:!1}),v=JSON.stringify(S);await navigator.clipboard.writeText(v),a.toast.success({title:"Section copied"})},[n]),g=d.useCallback(async()=>{const S=r.getDependenciesOfSection(n.identifier).map(q=>q.serialize()),v=Ne.reseedFieldSections(S,{conditions:!0}),I=JSON.stringify(v);await navigator.clipboard.writeText(I),a.toast.success({title:"Section copied"})},[n,r]),V=d.useCallback(async()=>{const w=r.getDependenciesOfSection(n.identifier),S=w.length>1,v=w.length-1;S?o({title:"Copy section dependencies?",description:`This section has ${v} dependent section${v>1?"s":""} that will also be copied to maintain the conditions. Do you want to include these dependencies?`,action:"Include",onAction:g,cancel:"Dont include",onCancel:m}):m()},[n,r,o,g,m]),F=d.useCallback(async()=>{let w="";try{w=await navigator.clipboard.readText()}catch{a.toast.error({title:"Paste failed",description:"Unable to read clipboard contents."});return}const S=w.trim();if(!S){a.toast.error({title:"Paste failed",description:"Clipboard is empty."});return}let v;try{v=JSON.parse(S)}catch{a.toast.error({title:"Invalid JSON",description:"Check the JSON and try again."});return}const I=Array.isArray(v)?v:[v],q=[];for(const z of I){if(!z||typeof z!="object")continue;const b=z;if(b.type!=="section"||!Array.isArray(b.fields))continue;const L={type:"section",identifier:typeof b.identifier=="string"?b.identifier:N.v4(),label:typeof b.label=="string"||b.label===null?b.label:null,description:typeof b.description=="string"||b.description===null?b.description:null,conditions:b.conditions&&typeof b.conditions=="object"?b.conditions:{},fields:b.fields};try{q.push(X.deserialize(L))}catch{}}if(q.length===0){a.toast.error({title:"Paste failed",description:"No valid sections found in the JSON."});return}q.forEach((z,b)=>{r.addFieldSection(z,e+1+b)}),a.toast.success({title:"Section pasted",description:"Serialized JSON imported successfully."})},[r,e]);return t.jsxs(a.Card,{variant:"outline",className:"flex w-full items-center justify-between gap-4",size:"sm",children:[t.jsxs("div",{className:"flex w-full grow flex-col gap-4",children:[t.jsx(Yr,{fieldSection:n}),t.jsxs("div",{className:"flex w-full flex-col gap-2",children:[t.jsxs("div",{className:"flex justify-between gap-2",children:[t.jsx(a.Text,{accentColor:"base",size:"md",children:"Fields"}),t.jsx(Oi,{onSelectFieldType:c,size:"sm",children:t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",children:[t.jsx(a.LuIcon,{icon:Z})," Add field"]})})]}),n.fields.map((w,S)=>t.jsx(Dn,{field:w,fieldSection:n,fieldIndex:S,sectionIndex:e},w.identifier))]})]}),t.jsxs(a.ButtonGroup,{className:"flex flex-col gap-0.5",variant:"ghost",accentColor:"base",size:"sm",children:[t.jsx(a.IconButton,{type:"button",onClick:h,children:t.jsx(a.LuIcon,{icon:nt})}),t.jsx(a.IconButton,{type:"button",onClick:p,children:t.jsx(a.LuIcon,{icon:it})}),t.jsxs(a.Menu.Root,{align:"end",children:[t.jsx(a.Menu.ClickTrigger,{children:t.jsx(a.IconButton,{type:"button",children:t.jsx(a.LuIcon,{icon:Qn})})}),t.jsxs(a.Menu.Content,{size:"sm",children:[t.jsxs(a.Menu.Item,{onSelect:f,children:[t.jsx(a.LuIcon,{icon:Ai}),"Duplicate section"]}),t.jsxs(a.Menu.Item,{onSelect:V,children:[t.jsx(a.LuIcon,{icon:Kn}),"Copy JSON"]}),t.jsxs(a.Menu.Item,{onSelect:F,children:[t.jsx(a.LuIcon,{icon:Yn}),"Paste JSON"]}),t.jsxs(a.Menu.Item,{onSelect:s,children:[t.jsx(a.LuIcon,{icon:ue}),"Delete section"]})]})]})]})]})});Zr.displayName="FieldSectionWithActions";const Qr=d.memo(()=>{var c;const{handleSubmit:i}=Y.useFormContext(),{errors:n}=Y.useFormState(),{onSave:e,onCancel:r}=d.use(ee),{fieldSchema:o}=d.use(ee),s=d.useCallback(()=>{o.addFieldSection(new X({identifier:N.v4(),fields:[]}))},[o]),l=d.useCallback(async()=>{try{const h=o.serialize(),p=Ne.reseedFieldSections(h),m=JSON.stringify(p);await navigator.clipboard.writeText(m),a.toast.success({title:"Sections copied",description:"All sections JSON copied to clipboard."})}catch{a.toast.error({title:"Copy failed",description:"Unable to copy the sections JSON."})}},[o]),f=d.useCallback(async()=>{let h="";try{h=await navigator.clipboard.readText()}catch{a.toast.error({title:"Paste failed",description:"Unable to read clipboard contents."});return}const p=h.trim();if(!p){a.toast.error({title:"Paste failed",description:"Clipboard is empty."});return}let m;try{m=JSON.parse(p)}catch{a.toast.error({title:"Invalid JSON",description:"Check the JSON and try again."});return}const g=Array.isArray(m)?m:[m],V=[];for(const w of g){if(!w||typeof w!="object")continue;const S=w;if(S.type!=="section"||!Array.isArray(S.fields))continue;const v={type:"section",identifier:typeof S.identifier=="string"?S.identifier:N.v4(),label:typeof S.label=="string"||S.label===null?S.label:null,description:typeof S.description=="string"||S.description===null?S.description:null,conditions:S.conditions&&typeof S.conditions=="object"?S.conditions:{},fields:S.fields};try{V.push(X.deserialize(v))}catch{}}if(V.length===0){a.toast.error({title:"Paste failed",description:"No valid sections found in the JSON."});return}const F=o.fieldSections.length;V.forEach((w,S)=>{o.addFieldSection(w,F+S)}),a.toast.success({title:"Sections pasted",description:"Serialized JSON imported successfully."})},[o]);return t.jsxs("form",{className:"flex flex-col gap-4",onSubmit:i(e),children:[t.jsxs("div",{className:"flex flex-col gap-4",children:[t.jsxs("div",{className:"flex items-center justify-end gap-2",children:[t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",onClick:l,children:[t.jsx(a.LuIcon,{icon:Kn})," Copy JSON"]}),t.jsxs(a.Button,{type:"button",variant:"soft",size:"sm",onClick:f,children:[t.jsx(a.LuIcon,{icon:Yn})," Paste JSON"]})]}),o.fieldSections.map((h,p)=>t.jsx(Zr,{fieldSection:h,sectionIndex:p},h.identifier)),t.jsxs(a.Button,{className:"mb-4",type:"button",variant:"soft",accentColor:"base",size:"sm",onClick:s,children:[t.jsx(a.LuIcon,{icon:Z})," Add section"]})]}),!!((c=n.fields)!=null&&c.message)&&t.jsx(a.Text,{size:"xs",accentColor:"danger",children:n.fields.message}),t.jsxs(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:"sm",children:[r&&t.jsx(a.Button,{type:"button",variant:"soft",accentColor:"base",onClick:r,children:"Cancel"}),t.jsx(a.Button,{type:"submit",variant:"surface",children:"Save"})]})]})});Qr.displayName="FormBuilderListBuilder";function Rr(i){const n=e=>{const r={};for(const[o,s]of Object.entries(e))typeof s=="string"?r[o]={type:"validate",message:s}:r[o]=n(s);return r};return n(i)}const eo=d.memo(d.forwardRef((i,n)=>{const{disabled:e=!1,fieldSchema:r,values:o={},onValuesChange:s,onSubmit:l,submitText:f="Submit",hideSubmit:c=!1,cancelText:h,onCancel:p,hideCancel:m=!1,className:g,submitButtonProps:V,cancelButtonProps:F,cancelIcon:w,submitIcon:S,size:v="md"}=i,I=d.useMemo(()=>r.initializeValues(o),[r,o]),q=d.useCallback(Q=>{l==null||l(Q)},[l]),z=Y.useForm({values:I,mode:"onBlur",criteriaMode:"all",disabled:e,resolver:Q=>{const J=r.validateValues(Q),K=Rr(J);return Object.keys(J).length>0?{values:{},errors:K}:{values:Q,errors:{}}}}),b=d.useCallback(Q=>{s==null||s(Q)},[s]);d.useEffect(()=>{const{unsubscribe:Q}=z.watch((J,{type:K})=>{K==="change"&&b(J)});return()=>{Q()}},[z,b]);const L=at(r.getFieldSections()),G=d.useMemo(()=>({fieldSchema:r,size:v}),[r,v]),ie=!m&&!!p,ce=!c;return t.jsx(Y.FormProvider,{...z,children:t.jsx(B,{value:G,children:t.jsxs("form",{ref:n,className:R.cx(g,"flex flex-col gap-4"),onSubmit:z.handleSubmit(q),children:[t.jsx("div",{className:Qo({size:v}),children:L}),!e&&(ie||ce)?t.jsxs(a.ButtonGroup,{className:"flex items-center justify-end gap-2",size:v,children:[ie?t.jsxs(a.Button,{accentColor:"base",type:"button",variant:"soft",onClick:p,...F,children:[t.jsx(a.LuIcon,{icon:w??re}),h]}):null,ce?t.jsxs(a.Button,{type:"submit",accentColor:"primary",variant:"surface",...V,children:[t.jsx(a.LuIcon,{icon:S??W}),f]}):null]}):null]})})})})),io=d.memo(()=>{const{fieldSchema:i}=d.use(ee);return t.jsx(eo,{fieldSchema:i,disabled:!1})});io.displayName="FormBuilderPreview";const no=d.memo(i=>{const{children:n,initialFields:e,onSave:r,onCancel:o,disableRequiredFields:s=!1}=i,l=d.useCallback(F=>{var q;const w={};(!F.fields||F.fields.length===0)&&(w.fields="At least one field is required.");const S=[];for(const[z,b]of F.fields.entries())for(const[L,G]of b.fields.entries()){const ie=((q=Pr(G.type,`fields.${z}.fields.${L}`))==null?void 0:q.map(({field:ce})=>ce))??[];S.push(...ie)}const v={};for(const z of S)v[z.identifier]=Hn(F,z.identifier);const I=jn(S,v);return Object.keys(I).length>0&&(w.fields=I.fields),Object.keys(w).length>0&&a.toast.error({title:"Some form settings are invalid",description:"Please check settings highlighted in red."}),w},[]),f=d.useMemo(()=>({fields:e??[]}),[e]),c=Y.useForm({values:f,mode:"onSubmit",criteriaMode:"all",reValidateMode:"onSubmit",resolver:F=>{const w=l(F),S=Rr(w);return Object.keys(w).length>0?{values:{},errors:S}:{values:F,errors:{}}}}),h=d.useCallback(F=>{c.setValue("fields",F.serialize())},[c]),p=Y.useWatch({control:c.control,compute:F=>F.fields}),m=d.useMemo(()=>{const F=Ne.deserialize(p);return F.observe(h),F},[p,h]),g=d.useMemo(()=>({fieldSchema:m,disableRequiredFields:s,onSave:r,onCancel:o}),[s,r,o,m]),V=d.useMemo(()=>({fieldSchema:m,size:"sm"}),[m]);return t.jsx(ee,{value:g,children:t.jsx(B,{value:V,children:t.jsx(Y.FormProvider,{...c,children:n})})})});no.displayName="FormBuilderRoot";const sa={Root:no,FlowBuilder:Xr,ListBuilder:Qr,Preview:io};u.BaseCondition=P,u.BaseField=k,u.BaseFormElement=Di,u.BaseOptionsField=Pe,u.BaseStringField=Hi,u.BooleanEqualsConditionModifier=bt,u.BooleanField=fe,u.BooleanFieldCondition=He,u.BooleanFieldConditionCell=Xt,u.BooleanFieldInput=Gi,u.BooleanNotEqualsConditionModifier=Nt,u.CheckboxListField=pe,u.CheckboxListFieldCondition=Je,u.CheckboxListFieldConditionCell=Yt,u.CheckboxListFieldInput=Ji,u.ConditionManager=Mi,u.DateAfterConditionModifier=qt,u.DateBeforeConditionModifier=It,u.DateEqualsConditionModifier=Mt,u.DateField=xe,u.DateFieldCondition=We,u.DateFieldConditionCell=Qt,u.DateFieldInput=Wi,u.DateNotEqualsConditionModifier=xt,u.DateRangeInConditionModifier=Ot,u.DateRangeNotInConditionModifier=_t,u.DoesNotHaveFilesConditionModifier=Lt,u.FIELD_TYPES=St,u.FieldSchema=Ne,u.FieldSection=X,u.FieldSectionLayout=En,u.FieldTypeGroup=O,u.FieldTypeToClsMapping=Cn,u.FieldsRenderer=eo,u.FileCard=$i,u.FormBuilder=sa,u.HasFilesConditionModifier=Tt,u.ImageCard=Zi,u.ImageFile=Me,u.ImageViewer=ji,u.ImageViewerProvider=ot,u.InputWithLabel=A,u.LONG_TEXT_FIELD_MAX_LENGTH=je,u.MultiSelectField=te,u.MultiSelectFieldCondition=Xe,u.MultiSelectFieldConditionCell=er,u.MultiSelectFieldInput=Xi,u.MultiStringField=he,u.MultiStringFieldCondition=Ke,u.MultiStringFieldConditionCell=nr,u.MultiStringFieldInput=Ui,u.NumberEqualsConditionModifier=yn,u.NumberField=H,u.NumberFieldCondition=Ye,u.NumberFieldConditionCell=rr,u.NumberFieldInput=ki,u.NumberGreaterThanConditionModifier=wn,u.NumberGreaterThanOrEqualsConditionModifier=Fn,u.NumberLessThanConditionModifier=Sn,u.NumberLessThanOrEqualsConditionModifier=zn,u.NumberNotEqualsConditionModifier=vn,u.NumberRangeInConditionModifier=bn,u.NumberRangeNotInConditionModifier=Nn,u.OTPField=me,u.OTPFieldCondition=Ze,u.OTPFieldConditionCell=ar,u.OTPFieldInput=Yi,u.Observable=De,u.PassFailArrayExcludesConditionModifier=$t,u.PassFailArrayIncludesConditionModifier=Et,u.PassFailEqualsConditionModifier=Bt,u.PassFailField=Ve,u.PassFailFieldCondition=Qe,u.PassFailFieldConditionCell=lr,u.PassFailFieldInput=nn,u.PassFailNotEqualsConditionModifier=At,u.RadioField=ye,u.RadioFieldCondition=Re,u.RadioFieldConditionCell=cr,u.RadioFieldInput=rn,u.RatingField=ve,u.RatingFieldCondition=ei,u.RatingFieldConditionCell=hr,u.RatingFieldInput=on,u.SHORT_TEXT_FIELD_MAX_LENGTH=ln,u.ScanField=qe,u.ScanFieldCondition=ii,u.ScanFieldConditionCell=pr,u.ScanFieldInput=sn,u.Scanner=mi,u.ScannerProvider=gt,u.SelectField=oe,u.SelectFieldCondition=ni,u.SelectFieldConditionCell=gr,u.SelectFieldInput=Ki,u.StringArrayEqualsConditionModifier=wi,u.StringArrayEveryConditionModifier=vi,u.StringArrayExcludesConditionModifier=xn,u.StringArrayIncludesConditionModifier=Mn,u.StringArrayNoneConditionModifier=zi,u.StringArrayNotEqualsConditionModifier=Fi,u.StringArraySomeConditionModifier=Si,u.StringEqualsConditionModifier=le,u.StringExcludesConditionModifier=Be,u.StringField=Se,u.StringFieldCondition=ti,u.StringFieldConditionCell=Vr,u.StringFieldInput=dn,u.StringIncludesConditionModifier=Le,u.StringNotEqualsConditionModifier=de,u.TextField=ze,u.TextFieldCondition=ri,u.TextFieldConditionCell=vr,u.TextFieldInput=cn,u.TimeAfterConditionModifier=Ut,u.TimeBeforeConditionModifier=jt,u.TimeEqualsConditionModifier=Dt,u.TimeField=Oe,u.TimeFieldCondition=oi,u.TimeFieldConditionCell=zr,u.TimeFieldControl=yi,u.TimeFieldInput=pn,u.TimeNotEqualsConditionModifier=Pt,u.TimeRangeInConditionModifier=Gt,u.TimeRangeNotInConditionModifier=kt,u.UNLABELLED_FIELD_LABEL=$,u.UNLABELLED_SECTION_LABEL=Vn,u.URLField=_e,u.URLFieldCondition=si,u.URLFieldConditionCell=Nr,u.URLFieldInput=gn,u.UTC_OFFSETS=un,u.UTC_OFFSETS_SET=Ct,u.UUIDFile=ae,u.UUIDPromise=Ce,u.UploadField=we,u.UploadFieldCondition=ai,u.UploadFieldConditionCell=Fr,u.UploadFieldInput=mn,u.VideoCard=Ri,u.VideoFile=Qi,u.areFieldValuesBlank=$r,u.areFieldValuesEqual=Bn,u.areFileAndPromiseArraysEqual=pi,u.arePassFieldValuesEqual=ht,u.areSerializedPassFailFieldValuesEqual=ft,u.awaitFilesAndPromises=aa,u.blankFieldValues=An,u.changedFieldValues=Ar,u.cleanConditions=Tn,u.cleanFieldValues=Ii,u.cleanSerializedConditions=_n,u.cleanSerializedFieldValues=Ln,u.createCondition=$n,u.createConditionModifierConfig=y,u.createField=_i,u.createTime=hn,u.deserialize=qr,u.deserializeCondition=xr,u.deserializeConditions=On,u.deserializeField=xi,u.deserializeFieldValues=_r,u.deserializeFields=Xo,u.deserializeOnlyFields=Ko,u.deserializePassFailFieldValue=ut,u.extractFilesAndPromisesFromFieldValues=Tr,u.fieldDataMapping=T,u.fieldSpacingCva=qi,u.fieldTypeGroupDataMapping=zt,u.flattenFields=Yo,u.formatTime=Vi,u.formatUTCOffset=Ci,u.getCurrentUTCOffset=yt,u.getFieldsMapping=Zo,u.getUTCMinuteOfDay=se,u.getUTCOffsetMinutes=vt,u.initializeFieldValues=Br,u.insertFilesAndPromisesToFieldValues=Lr,u.isFileAndPromiseArray=st,u.isPassFailFieldStatus=tn,u.isPassFailFieldValue=dt,u.isSerializedPassFailFieldValue=lt,u.isStringArray=$e,u.isTime=E,u.isTimeInRange=fn,u.isTimeRange=Ge,u.isUTCOffset=gi,u.maxFileSizeB=Ft,u.maxFileSizeKB=wt,u.maxFileSizeMB=Te,u.parseTime=Ue,u.passFailFieldStatusMapping=ge,u.passFailFieldStatuses=Ie,u.separateImagesFromFields=oa,u.serializeConditions=Ir,u.serializeFieldValues=Or,u.serializePassFailFieldValue=ct,u.unchangedFieldValues=Er,u.useConditionManager=Jo,u.useFieldInput=D,u.useFieldInputs=fi,u.useFieldSectionInputs=at,u.useImageViewer=hi,u.useObjectUrl=Pi,u.useScanner=Uo,u.useScannerContext=pt,u.validateFieldValues=jn,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})});
|