@prolibu-suite/cobalt-form-builder 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CobaltFormBuilder.vue.d.ts +200 -0
- package/dist/CobaltFormBuilder.vue.d.ts.map +1 -0
- package/dist/cobalt-form-builder.cjs +2 -0
- package/dist/cobalt-form-builder.cjs.map +1 -0
- package/dist/cobalt-form-builder.css +1 -0
- package/dist/cobalt-form-builder.js +3446 -0
- package/dist/cobalt-form-builder.js.map +1 -0
- package/dist/components/DesignerTab.vue.d.ts +4 -0
- package/dist/components/DesignerTab.vue.d.ts.map +1 -0
- package/dist/components/EditableText.vue.d.ts +19 -0
- package/dist/components/EditableText.vue.d.ts.map +1 -0
- package/dist/components/FieldCanvas.vue.d.ts +4 -0
- package/dist/components/FieldCanvas.vue.d.ts.map +1 -0
- package/dist/components/FieldCard.vue.d.ts +9 -0
- package/dist/components/FieldCard.vue.d.ts.map +1 -0
- package/dist/components/FieldCardExpanded.vue.d.ts +8 -0
- package/dist/components/FieldCardExpanded.vue.d.ts.map +1 -0
- package/dist/components/FieldToolbox.vue.d.ts +4 -0
- package/dist/components/FieldToolbox.vue.d.ts.map +1 -0
- package/dist/components/JsonTab.vue.d.ts +4 -0
- package/dist/components/JsonTab.vue.d.ts.map +1 -0
- package/dist/components/PageCard.vue.d.ts +7 -0
- package/dist/components/PageCard.vue.d.ts.map +1 -0
- package/dist/components/PreviewTab.vue.d.ts +4 -0
- package/dist/components/PreviewTab.vue.d.ts.map +1 -0
- package/dist/components/PropertiesPanel.vue.d.ts +4 -0
- package/dist/components/PropertiesPanel.vue.d.ts.map +1 -0
- package/dist/fieldCatalog.d.ts +17 -0
- package/dist/fieldCatalog.d.ts.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/stores/schema.d.ts +193 -0
- package/dist/stores/schema.d.ts.map +1 -0
- package/examples/01-contact-form.json +36 -0
- package/examples/02-nps-survey.json +59 -0
- package/examples/03-quiz-vue3.json +59 -0
- package/examples/04-event-registration.json +100 -0
- package/examples/05-themed-dark-form.json +56 -0
- package/examples/06-culture-survey.json +99 -0
- package/examples/07-crm-quotation.json +70 -0
- package/examples/08-landing-page-embed.json +142 -0
- package/package.json +54 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { createSchemaStore, type SchemaEvent } from './stores/schema';
|
|
2
|
+
/**
|
|
3
|
+
* Reusable Vue 3 component for the Cobalt Form Builder.
|
|
4
|
+
*
|
|
5
|
+
* Each instance creates its own scoped store via `createSchemaStore()`
|
|
6
|
+
* and provides it via `SCHEMA_STORE_KEY`. Multiple builders on the same
|
|
7
|
+
* page therefore stay isolated.
|
|
8
|
+
*
|
|
9
|
+
* Slots let host apps replace the chrome around the editor:
|
|
10
|
+
* - `brand` — left side of the topbar (default: "CF" mark + title)
|
|
11
|
+
* - `actions` — right side of the topbar (default: undo/redo buttons)
|
|
12
|
+
* - `before` — content above the topbar (custom banner / breadcrumb)
|
|
13
|
+
* - `after` — content below the editor (custom footer / save bar)
|
|
14
|
+
*
|
|
15
|
+
* Granular `SchemaEvent`s are re-emitted as Vue events the host can
|
|
16
|
+
* listen for analytics, autosave, etc.
|
|
17
|
+
*/
|
|
18
|
+
type TabId = 'designer' | 'preview' | 'json';
|
|
19
|
+
type __VLS_Props = {
|
|
20
|
+
/** The schema being edited (paged shape preferred — `{title,pages,theme}`). */
|
|
21
|
+
modelValue?: Record<string, any>;
|
|
22
|
+
/** Which top-level tabs to expose. Defaults to all three. */
|
|
23
|
+
tabs?: TabId[];
|
|
24
|
+
/** Hide the builder's brand mark (when the host has its own chrome). */
|
|
25
|
+
hideBrand?: boolean;
|
|
26
|
+
/** Brand label text (defaults to "Cobalt Form Builder"). */
|
|
27
|
+
brandLabel?: string;
|
|
28
|
+
/** Skip auto-registering Cobalt custom elements (host already did it). */
|
|
29
|
+
skipCobaltRegister?: boolean;
|
|
30
|
+
};
|
|
31
|
+
type __VLS_Slots = {
|
|
32
|
+
brand?: () => any;
|
|
33
|
+
actions?: (props: {
|
|
34
|
+
store: ReturnType<typeof createSchemaStore>;
|
|
35
|
+
}) => any;
|
|
36
|
+
before?: () => any;
|
|
37
|
+
after?: (props: {
|
|
38
|
+
store: ReturnType<typeof createSchemaStore>;
|
|
39
|
+
}) => any;
|
|
40
|
+
};
|
|
41
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
42
|
+
"field-added": (payload: {
|
|
43
|
+
type: "field-added";
|
|
44
|
+
pageIdx: number;
|
|
45
|
+
fieldName: string;
|
|
46
|
+
kind: string;
|
|
47
|
+
}) => any;
|
|
48
|
+
"field-removed": (payload: {
|
|
49
|
+
type: "field-removed";
|
|
50
|
+
pageIdx: number;
|
|
51
|
+
fieldName: string;
|
|
52
|
+
}) => any;
|
|
53
|
+
"field-renamed": (payload: {
|
|
54
|
+
type: "field-renamed";
|
|
55
|
+
pageIdx: number;
|
|
56
|
+
oldName: string;
|
|
57
|
+
newName: string;
|
|
58
|
+
}) => any;
|
|
59
|
+
"field-updated": (payload: {
|
|
60
|
+
type: "field-updated";
|
|
61
|
+
pageIdx: number;
|
|
62
|
+
fieldName: string;
|
|
63
|
+
patch: Record<string, any>;
|
|
64
|
+
}) => any;
|
|
65
|
+
"field-duplicated": (payload: {
|
|
66
|
+
type: "field-duplicated";
|
|
67
|
+
pageIdx: number;
|
|
68
|
+
sourceName: string;
|
|
69
|
+
newName: string;
|
|
70
|
+
}) => any;
|
|
71
|
+
"field-reordered": (payload: {
|
|
72
|
+
type: "field-reordered";
|
|
73
|
+
pageIdx: number;
|
|
74
|
+
order: string[];
|
|
75
|
+
}) => any;
|
|
76
|
+
"page-added": (payload: {
|
|
77
|
+
type: "page-added";
|
|
78
|
+
pageIdx: number;
|
|
79
|
+
}) => any;
|
|
80
|
+
"page-removed": (payload: {
|
|
81
|
+
type: "page-removed";
|
|
82
|
+
pageIdx: number;
|
|
83
|
+
}) => any;
|
|
84
|
+
"page-duplicated": (payload: {
|
|
85
|
+
type: "page-duplicated";
|
|
86
|
+
sourceIdx: number;
|
|
87
|
+
newIdx: number;
|
|
88
|
+
}) => any;
|
|
89
|
+
"page-updated": (payload: {
|
|
90
|
+
type: "page-updated";
|
|
91
|
+
pageIdx: number;
|
|
92
|
+
patch: Record<string, any>;
|
|
93
|
+
}) => any;
|
|
94
|
+
"theme-changed": (payload: {
|
|
95
|
+
type: "theme-changed";
|
|
96
|
+
theme: import("@prolibu-suite/cobalt-form-core").ThemeSpec;
|
|
97
|
+
}) => any;
|
|
98
|
+
"selection-changed": (payload: {
|
|
99
|
+
type: "selection-changed";
|
|
100
|
+
selection: import("./stores/schema").Selection;
|
|
101
|
+
}) => any;
|
|
102
|
+
"schema-replaced": (payload: {
|
|
103
|
+
type: "schema-replaced";
|
|
104
|
+
}) => any;
|
|
105
|
+
undo: (payload: {
|
|
106
|
+
type: "undo";
|
|
107
|
+
}) => any;
|
|
108
|
+
redo: (payload: {
|
|
109
|
+
type: "redo";
|
|
110
|
+
}) => any;
|
|
111
|
+
"update:modelValue": (value: Record<string, any>) => any;
|
|
112
|
+
event: (payload: SchemaEvent) => any;
|
|
113
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
114
|
+
"onField-added"?: ((payload: {
|
|
115
|
+
type: "field-added";
|
|
116
|
+
pageIdx: number;
|
|
117
|
+
fieldName: string;
|
|
118
|
+
kind: string;
|
|
119
|
+
}) => any) | undefined;
|
|
120
|
+
"onField-removed"?: ((payload: {
|
|
121
|
+
type: "field-removed";
|
|
122
|
+
pageIdx: number;
|
|
123
|
+
fieldName: string;
|
|
124
|
+
}) => any) | undefined;
|
|
125
|
+
"onField-renamed"?: ((payload: {
|
|
126
|
+
type: "field-renamed";
|
|
127
|
+
pageIdx: number;
|
|
128
|
+
oldName: string;
|
|
129
|
+
newName: string;
|
|
130
|
+
}) => any) | undefined;
|
|
131
|
+
"onField-updated"?: ((payload: {
|
|
132
|
+
type: "field-updated";
|
|
133
|
+
pageIdx: number;
|
|
134
|
+
fieldName: string;
|
|
135
|
+
patch: Record<string, any>;
|
|
136
|
+
}) => any) | undefined;
|
|
137
|
+
"onField-duplicated"?: ((payload: {
|
|
138
|
+
type: "field-duplicated";
|
|
139
|
+
pageIdx: number;
|
|
140
|
+
sourceName: string;
|
|
141
|
+
newName: string;
|
|
142
|
+
}) => any) | undefined;
|
|
143
|
+
"onField-reordered"?: ((payload: {
|
|
144
|
+
type: "field-reordered";
|
|
145
|
+
pageIdx: number;
|
|
146
|
+
order: string[];
|
|
147
|
+
}) => any) | undefined;
|
|
148
|
+
"onPage-added"?: ((payload: {
|
|
149
|
+
type: "page-added";
|
|
150
|
+
pageIdx: number;
|
|
151
|
+
}) => any) | undefined;
|
|
152
|
+
"onPage-removed"?: ((payload: {
|
|
153
|
+
type: "page-removed";
|
|
154
|
+
pageIdx: number;
|
|
155
|
+
}) => any) | undefined;
|
|
156
|
+
"onPage-duplicated"?: ((payload: {
|
|
157
|
+
type: "page-duplicated";
|
|
158
|
+
sourceIdx: number;
|
|
159
|
+
newIdx: number;
|
|
160
|
+
}) => any) | undefined;
|
|
161
|
+
"onPage-updated"?: ((payload: {
|
|
162
|
+
type: "page-updated";
|
|
163
|
+
pageIdx: number;
|
|
164
|
+
patch: Record<string, any>;
|
|
165
|
+
}) => any) | undefined;
|
|
166
|
+
"onTheme-changed"?: ((payload: {
|
|
167
|
+
type: "theme-changed";
|
|
168
|
+
theme: import("@prolibu-suite/cobalt-form-core").ThemeSpec;
|
|
169
|
+
}) => any) | undefined;
|
|
170
|
+
"onSelection-changed"?: ((payload: {
|
|
171
|
+
type: "selection-changed";
|
|
172
|
+
selection: import("./stores/schema").Selection;
|
|
173
|
+
}) => any) | undefined;
|
|
174
|
+
"onSchema-replaced"?: ((payload: {
|
|
175
|
+
type: "schema-replaced";
|
|
176
|
+
}) => any) | undefined;
|
|
177
|
+
onUndo?: ((payload: {
|
|
178
|
+
type: "undo";
|
|
179
|
+
}) => any) | undefined;
|
|
180
|
+
onRedo?: ((payload: {
|
|
181
|
+
type: "redo";
|
|
182
|
+
}) => any) | undefined;
|
|
183
|
+
"onUpdate:modelValue"?: ((value: Record<string, any>) => any) | undefined;
|
|
184
|
+
onEvent?: ((payload: SchemaEvent) => any) | undefined;
|
|
185
|
+
}>, {
|
|
186
|
+
modelValue: Record<string, any>;
|
|
187
|
+
tabs: TabId[];
|
|
188
|
+
hideBrand: boolean;
|
|
189
|
+
brandLabel: string;
|
|
190
|
+
skipCobaltRegister: boolean;
|
|
191
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
192
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
193
|
+
declare const _default: typeof __VLS_export;
|
|
194
|
+
export default _default;
|
|
195
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
196
|
+
new (): {
|
|
197
|
+
$slots: S;
|
|
198
|
+
};
|
|
199
|
+
};
|
|
200
|
+
//# sourceMappingURL=CobaltFormBuilder.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CobaltFormBuilder.vue.d.ts","sourceRoot":"","sources":["../src/CobaltFormBuilder.vue"],"names":[],"mappings":"AAuVA,OAAO,EAEL,iBAAiB,EACjB,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAKzB;;;;;;;;;;;;;;;GAeG;AAEH,KAAK,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE7C,KAAK,WAAW,GAAG;IACf,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,6DAA6D;IAC7D,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACf,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAqCJ,KAAK,WAAW,GAAG;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA;KAAE,KAAK,GAAG,CAAC;IAC1E,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA;KAAE,KAAK,GAAG,CAAC;CACzE,CAAC;AAuSF,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA1VC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;UAEzB,KAAK,EAAE;eAEF,OAAO;gBAEN,MAAM;wBAEE,OAAO;6EAsV9B,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),E=require("@prolibu-suite/cobalt-vue"),kn=require("@prolibu-suite/cobalt-core/loader"),Sn=require("@prolibu-suite/cobalt-form/loader"),ge=require("@prolibu-suite/cobalt-form-core"),xn=50;function vt(){return{title:"Untitled Form",description:"",mode:"form",pages:[{name:"page1",title:"Page 1",description:"",fields:{name:{type:"String",required:!0,label:"Nombre",full:!0},email:{type:"String",required:!0,format:"email",label:"Email"}}}],theme:{}}}const xt={text:()=>({type:"String"}),textarea:()=>({type:"String",uiCom:"TextArea"}),number:()=>({type:"Number"}),date:()=>({type:"Date"}),boolean:()=>({type:"Boolean"}),select:()=>({type:"String",enum:["Option A","Option B"]}),ref:()=>({type:"ObjectId",ref:"Company",displayName:"name"}),rating:()=>({type:"Number",uiCom:"Rating",max:5}),slider:()=>({type:"Number",uiCom:"Slider",min:0,max:100}),color:()=>({type:"String",uiCom:"ColorPicker"}),section:()=>({uiCom:"Section"}),file:()=>({type:"String",uiCom:"File"})};function $t(t){return t.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/_/g," ").toLowerCase().replace(/^./,o=>o.toUpperCase())}function ze(t){return JSON.parse(JSON.stringify(t))}function wn(t={}){const o=t.onEvent??(()=>{}),n=e.ref(vt()),l=e.ref({kind:"page",pageIdx:0,fieldName:null}),a=e.ref([]),i=e.ref([]),s=e.computed(()=>a.value.length>0),u=e.computed(()=>i.value.length>0),r=e.computed(()=>n.value.pages[l.value.pageIdx]??null),h=e.computed(()=>{const m=r.value,g=l.value.fieldName;return!m||!g?null:m.fields[g]??null});function d(m){l.value=m,o({type:"selection-changed",selection:m})}function c(m,g){d({kind:g?"field":"page",pageIdx:m,fieldName:g})}function k(m){d({kind:"page",pageIdx:m,fieldName:null})}function C(){d({...l.value,kind:"form"})}function b(){a.value.push(ze(n.value)),a.value.length>xn&&a.value.shift(),i.value=[]}function N(){const m=a.value.pop();m&&(i.value.push(ze(n.value)),n.value=m,P(),o({type:"undo"}))}function A(){const m=i.value.pop();m&&(a.value.push(ze(n.value)),n.value=m,P(),o({type:"redo"}))}function P(){const m=Math.min(l.value.pageIdx,n.value.pages.length-1),g=n.value.pages[m],_=l.value.fieldName&&g?.fields[l.value.fieldName]?l.value.fieldName:null,I=l.value.kind==="form"?"form":_?"field":"page";l.value={kind:I,pageIdx:Math.max(m,0),fieldName:_}}function J(m){m!==n.value.title&&(b(),n.value.title=m)}function F(m){m!==n.value.description&&(b(),n.value.description=m)}function z(m){m!==n.value.mode&&(b(),n.value.mode=m)}function w(){b();const m=n.value.pages.length+1;n.value.pages.push({name:`page${m}`,title:`Page ${m}`,description:"",fields:{}});const g=n.value.pages.length-1;k(g),o({type:"page-added",pageIdx:g})}function te(m){n.value.pages.length<=1||(b(),n.value.pages.splice(m,1),P(),o({type:"page-removed",pageIdx:m}))}function Y(m){const g=n.value.pages[m];if(!g)return;b();const _=ze(g);_.name=U(`${g.name}_copy`),_.title=`${g.title||g.name} (copy)`,n.value.pages.splice(m+1,0,_);const I=m+1;k(I),o({type:"page-duplicated",sourceIdx:m,newIdx:I})}function ne(m,g){const _=n.value.pages[m];_&&(b(),Object.assign(_,g),o({type:"page-updated",pageIdx:m,patch:g}))}function U(m){const g=new Set(n.value.pages.map(I=>I.name));if(!g.has(m))return m;let _=1;for(;g.has(`${m}_${_}`);)_++;return`${m}_${_}`}function S(m,g){const _=n.value.pages[m];if(!_)return g;let I=g,Q=1;for(;I in _.fields;)I=`${g}_${Q++}`;return I}function $(m,g=l.value.pageIdx){const _=n.value.pages[g];if(!_)return;const Q=(xt[m]??(()=>({type:"String"})))(),H=S(g,m);if(H.startsWith("_"))throw new Error(`Reserved name "${H}"`);b(),_.fields={..._.fields,[H]:{...Q,label:$t(H)}},c(g,H),o({type:"field-added",pageIdx:g,fieldName:H,kind:m})}function R(m,g,_){const I=n.value.pages[m];if(!I)return;const H=(xt[_]??(()=>({type:"String"})))(),le=S(m,_);if(le.startsWith("_"))throw new Error(`Reserved name "${le}"`);b();const _e=Object.entries(I.fields),Pt=_e.findIndex(([En])=>En===g),Ft=[le,{...H,label:$t(le)}];Pt===-1?_e.push(Ft):_e.splice(Pt+1,0,Ft),I.fields=Object.fromEntries(_e),c(m,le),o({type:"field-added",pageIdx:m,fieldName:le,kind:_})}function G(m,g){const _=n.value.pages[m];if(!_||!(g in _.fields))return;b();const I={..._.fields};delete I[g],_.fields=I,l.value.pageIdx===m&&l.value.fieldName===g&&(l.value={kind:"page",pageIdx:m,fieldName:null}),o({type:"field-removed",pageIdx:m,fieldName:g})}function L(m,g){const _=n.value.pages[m];if(!_||!(g in _.fields))return;b();const I=ze(_.fields[g]),Q=S(m,`${g}_copy`),H={};for(const[le,_e]of Object.entries(_.fields))H[le]=_e,le===g&&(H[Q]=I);_.fields=H,c(m,Q),o({type:"field-duplicated",pageIdx:m,sourceName:g,newName:Q})}function V(m,g,_){const I=n.value.pages[m];!I||!(g in I.fields)||(b(),I.fields={...I.fields,[g]:{...I.fields[g],..._}},o({type:"field-updated",pageIdx:m,fieldName:g,patch:_}))}function p(m,g,_){const I=n.value.pages[m];!I||!(g in I.fields)||(b(),I.fields={...I.fields,[g]:{..._}},o({type:"field-updated",pageIdx:m,fieldName:g,patch:_}))}function v(m,g,_){if(g===_)return;const I=n.value.pages[m];if(!I||!(g in I.fields))return;if(_ in I.fields)throw new Error(`Field "${_}" already exists`);if(_.startsWith("_"))throw new Error(`Reserved name "${_}"`);b();const Q={};for(const[H,le]of Object.entries(I.fields))Q[H===g?_:H]=le;I.fields=Q,l.value.pageIdx===m&&l.value.fieldName===g&&(l.value={kind:"field",pageIdx:m,fieldName:_}),o({type:"field-renamed",pageIdx:m,oldName:g,newName:_})}function se(m,g,_){const I=n.value.pages[m];if(!I)return;const Q=Object.keys(I.fields);if(g===_||g<0||g>=Q.length||_<0||_>=Q.length)return;b();const[H]=Q.splice(g,1);Q.splice(_,0,H);const le={};for(const _e of Q)le[_e]=I.fields[_e];I.fields=le,o({type:"field-reordered",pageIdx:m,order:Q})}function fe(m,g){const _=n.value.pages[m];if(!_)return;const I=Object.keys(_.fields);if(g.length!==I.length)return;for(const H of g)if(!I.includes(H))return;if(I.every((H,le)=>H===g[le]))return;b();const Q={};for(const H of g)Q[H]=_.fields[H];_.fields=Q,o({type:"field-reordered",pageIdx:m,order:g})}const ke=e.computed(()=>ge.resolveTheme(n.value.theme));function mt(m){b(),n.value.theme={...n.value.theme,...m},o({type:"theme-changed",theme:n.value.theme})}function Ze(m,g){b();const _=n.value.theme[m]??{};n.value.theme={...n.value.theme,[m]:{..._,...g}},o({type:"theme-changed",theme:n.value.theme})}function x(){b(),n.value.theme={},o({type:"theme-changed",theme:n.value.theme})}function f(m){if(b(),ge.isPagedSchema(m)){const g=ge.toPagedSchema(m);n.value={title:m.title||n.value.title,description:m.description||"",mode:g.mode||"form",pages:g.pages.map(_=>({name:_.name,title:_.title,description:_.description,visibleIf:_.visibleIf,hideTitle:_.hideTitle,hideDescription:_.hideDescription,fields:_.fields})),theme:g.theme||{}}}else n.value={...vt(),pages:[{name:"page1",title:"Page 1",description:"",fields:m}]};l.value={kind:"page",pageIdx:0,fieldName:null},o({type:"schema-replaced"})}const B=e.computed(()=>{const m=Object.keys(n.value.theme).length>0;return n.value.pages.length===1&&!m?n.value.pages[0].fields:{title:n.value.title,...n.value.description?{description:n.value.description}:{},mode:n.value.mode,pages:n.value.pages.map(g=>({name:g.name,title:g.title,description:g.description,visibleIf:g.visibleIf,...g.hideTitle?{hideTitle:!0}:{},...g.hideDescription?{hideDescription:!0}:{},fields:g.fields})),...m?{theme:n.value.theme}:{}}});if(t.initialSchema&&Object.keys(t.initialSchema).length>0)if(ge.isPagedSchema(t.initialSchema)){const m=ge.toPagedSchema(t.initialSchema);n.value={title:t.initialSchema.title||"Untitled Form",description:t.initialSchema.description||"",mode:m.mode||"form",pages:m.pages.map(g=>({name:g.name,title:g.title,description:g.description,visibleIf:g.visibleIf,hideTitle:g.hideTitle,hideDescription:g.hideDescription,fields:g.fields})),theme:m.theme||{}}}else n.value={...vt(),pages:[{name:"page1",title:"Page 1",description:"",fields:t.initialSchema}]};return e.reactive({data:n,selection:l,currentPage:r,selectedField:h,canUndo:s,canRedo:u,exported:B,resolvedTheme:ke,selectField:c,selectPage:k,selectForm:C,undo:N,redo:A,setTitle:J,setDescription:F,setMode:z,setTheme:mt,setThemeSection:Ze,resetTheme:x,addPage:w,removePage:te,duplicatePage:Y,updatePage:ne,addField:$,insertFieldAfter:R,removeField:G,duplicateField:L,updateField:V,replaceFieldDef:p,renameField:v,moveField:se,reorderFieldsByNames:fe,replaceAll:f})}const tn=Symbol("CobaltFormBuilder.schemaStore");function Ve(){const t=e.inject(tn);if(!t)throw new Error("[cobalt-form-builder] useSchemaStore() must be called inside a <CobaltFormBuilder>. Make sure the component lives in the builder subtree, or call createSchemaStore() and provide it yourself.");return t}const X=[{id:"text",label:"Single-line input",group:"inputs",aliases:["text","string"],icon:"text-aa"},{id:"textarea",label:"Multi-line text",group:"inputs",aliases:["textarea","comment"],icon:"text-align-left"},{id:"number",label:"Number",group:"inputs",aliases:["integer","numeric"],icon:"hash"},{id:"date",label:"Date",group:"inputs",aliases:["calendar"],icon:"calendar"},{id:"boolean",label:"Yes / No",group:"choices",aliases:["switch","toggle"],icon:"toggle-left"},{id:"select",label:"Dropdown",group:"choices",aliases:["dropdown","enum"],icon:"caret-circle-down"},{id:"ref",label:"Reference",group:"choices",aliases:["lookup","model"],icon:"link"},{id:"rating",label:"Rating scale",group:"advanced",aliases:["stars","score"],icon:"star"},{id:"slider",label:"Slider",group:"advanced",aliases:["range"],icon:"sliders-horizontal"},{id:"color",label:"Color picker",group:"advanced",aliases:["hex","palette"],icon:"palette"},{id:"file",label:"File upload",group:"advanced",aliases:["attachment"],icon:"paperclip"},{id:"section",label:"Section divider",group:"layout",aliases:["header","group"],icon:"minus"}],Vn={inputs:"Inputs",choices:"Choices",advanced:"Advanced",layout:"Layout"},Tn={class:"toolbox"},Dn={class:"toolbox__search"},In={class:"toolbox__scroll"},Bn={key:0,class:"toolbox__empty"},On={class:"toolbox__group-label"},An={class:"toolbox__list"},Pn=["onDragstart"],Fn=e.defineComponent({__name:"FieldToolbox",setup(t){const o=Ve(),n=e.ref(""),l=e.computed(()=>{const u=n.value.trim().toLowerCase(),r=u?X.filter(d=>d.label.toLowerCase().includes(u)||d.id.toLowerCase().includes(u)?!0:(d.aliases||[]).some(c=>c.toLowerCase().includes(u))):X,h={};for(const d of r)h[d.group]||(h[d.group]={id:d.group,label:Vn[d.group],items:[]}),h[d.group].items.push(d);return Object.values(h)});function a(u,r){u.dataTransfer&&(u.dataTransfer.setData("application/cobalt-field-kind",r),u.dataTransfer.effectAllowed="copy")}function i(u){o.addField(u)}function s(u){const r=u.detail;return r!=null&&typeof r=="object"&&"value"in r?r.value:r}return(u,r)=>(e.openBlock(),e.createElementBlock("div",Tn,[e.createElementVNode("button",{class:e.normalizeClass(["toolbox__form-btn",{"is-active":e.unref(o).selection.kind==="form"}]),onClick:r[0]||(r[0]=h=>e.unref(o).selectForm())},[...r[2]||(r[2]=[e.createStaticVNode('<span class="toolbox__form-btn-icon" data-v-8ac1929e><co-icon name="paint-brush" size="16" data-v-8ac1929e></co-icon></span><span class="toolbox__form-btn-body" data-v-8ac1929e><span class="toolbox__form-btn-label" data-v-8ac1929e>Theme</span><span class="toolbox__form-btn-sub" data-v-8ac1929e>Global form settings</span></span><co-icon name="caret-right" size="14" data-v-8ac1929e></co-icon>',3)])],2),e.createElementVNode("div",Dn,[e.createVNode(e.unref(E.CoInput),{placeholder:"Type to search…","icon-left":"magnifying-glass",value:n.value,onCoInput:r[1]||(r[1]=h=>n.value=s(h)??"")},null,8,["value"])]),e.createElementVNode("div",In,[l.value.length===0?(e.openBlock(),e.createElementBlock("div",Bn,' No matches for "'+e.toDisplayString(n.value)+'" ',1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,h=>(e.openBlock(),e.createElementBlock("div",{key:h.id,class:"toolbox__group"},[e.createElementVNode("div",On,e.toDisplayString(h.label),1),e.createElementVNode("ul",An,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.items,d=>(e.openBlock(),e.createElementBlock("li",{key:d.id,draggable:"true",class:"toolbox__row",onDragstart:c=>a(c,d.id)},[e.createVNode(e.unref(E.CoListItem),{label:d.label,icon:d.icon,dense:"",onCoSelect:c=>i(d.id)},null,8,["label","icon","onCoSelect"])],40,Pn))),128))])]))),128))])]))}}),he=(t,o)=>{const n=t.__vccOpts||t;for(const[l,a]of o)n[l]=a;return n},$n=he(Fn,[["__scopeId","data-v-8ac1929e"]]),Mn=["data-placeholder"],Rn=e.defineComponent({__name:"EditableText",props:{modelValue:{},placeholder:{},multiline:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:o}){const n=t,l=o,a=e.ref(null),i=e.ref(!1);e.watch(()=>n.modelValue,c=>{i.value||a.value&&a.value.innerText!==c&&(a.value.innerText=c)},{immediate:!1});function s(){}function u(){if(!a.value)return;const c=a.value.innerText.replace(/\n+$/,"");c!==n.modelValue&&l("update:modelValue",c)}function r(){i.value=!1,u()}function h(){i.value=!0}function d(c){!n.multiline&&c.key==="Enter"?(c.preventDefault(),c.target.blur()):c.key==="Escape"&&(a.value&&(a.value.innerText=n.modelValue),c.target.blur())}return(c,k)=>(e.openBlock(),e.createElementBlock("span",{ref_key:"el",ref:a,class:e.normalizeClass(["editable",{"is-empty":!t.modelValue}]),"data-placeholder":t.placeholder,contenteditable:"plaintext-only",spellcheck:"false",onInput:s,onBlur:r,onFocus:h,onKeydown:d},e.toDisplayString(t.modelValue),43,Mn))}}),Me=he(Rn,[["__scopeId","data-v-85570517"]]);var zn=Object.defineProperty,it=Object.getOwnPropertySymbols,nn=Object.prototype.hasOwnProperty,on=Object.prototype.propertyIsEnumerable,Mt=(t,o,n)=>o in t?zn(t,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[o]=n,Pe=(t,o)=>{for(var n in o||(o={}))nn.call(o,n)&&Mt(t,n,o[n]);if(it)for(var n of it(o))on.call(o,n)&&Mt(t,n,o[n]);return t},ln=(t,o)=>{var n={};for(var l in t)nn.call(t,l)&&o.indexOf(l)<0&&(n[l]=t[l]);if(t!=null&&it)for(var l of it(t))o.indexOf(l)<0&&on.call(t,l)&&(n[l]=t[l]);return n};const an="[vue-draggable-plus]: ";function Ln(t){console.warn(an+t)}function jn(t){console.error(an+t)}function Rt(t,o,n){return n>=0&&n<t.length&&t.splice(n,0,t.splice(o,1)[0]),t}function Yn(t){return t.replace(/-(\w)/g,(o,n)=>n?n.toUpperCase():"")}function Un(t){return Object.keys(t).reduce((o,n)=>(typeof t[n]<"u"&&(o[Yn(n)]=t[n]),o),{})}function zt(t,o){return Array.isArray(t)&&t.splice(o,1),t}function Lt(t,o,n){return Array.isArray(t)&&t.splice(o,0,n),t}function Xn(t){return typeof t>"u"}function Hn(t){return typeof t=="string"}function jt(t,o,n){const l=t.children[n];t.insertBefore(o,l)}function gt(t){t.parentNode&&t.parentNode.removeChild(t)}function qn(t,o=document){var n;let l=null;return typeof o?.querySelector=="function"?l=(n=o?.querySelector)==null?void 0:n.call(o,t):l=document.querySelector(t),l||Ln(`Element not found: ${t}`),l}function Jn(t,o,n=null){return function(...l){return t.apply(n,l),o.apply(n,l)}}function Wn(t,o){const n=Pe({},t);return Object.keys(o).forEach(l=>{n[l]?n[l]=Jn(t[l],o[l]):n[l]=o[l]}),n}function Gn(t){return t instanceof HTMLElement}function Yt(t,o){Object.keys(t).forEach(n=>{o(n,t[n])})}function Zn(t){return t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97)}const Qn=Object.assign;function Ut(t,o){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);o&&(l=l.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),n.push.apply(n,l)}return n}function ye(t){for(var o=1;o<arguments.length;o++){var n=arguments[o]!=null?arguments[o]:{};o%2?Ut(Object(n),!0).forEach(function(l){Kn(t,l,n[l])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ut(Object(n)).forEach(function(l){Object.defineProperty(t,l,Object.getOwnPropertyDescriptor(n,l))})}return t}function nt(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?nt=function(o){return typeof o}:nt=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},nt(t)}function Kn(t,o,n){return o in t?Object.defineProperty(t,o,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[o]=n,t}function Ne(){return Ne=Object.assign||function(t){for(var o=1;o<arguments.length;o++){var n=arguments[o];for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(t[l]=n[l])}return t},Ne.apply(this,arguments)}function eo(t,o){if(t==null)return{};var n={},l=Object.keys(t),a,i;for(i=0;i<l.length;i++)a=l[i],!(o.indexOf(a)>=0)&&(n[a]=t[a]);return n}function to(t,o){if(t==null)return{};var n=eo(t,o),l,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)l=i[a],!(o.indexOf(l)>=0)&&Object.prototype.propertyIsEnumerable.call(t,l)&&(n[l]=t[l])}return n}var no="1.15.2";function Ce(t){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(t)}var Ee=Ce(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),We=Ce(/Edge/i),Xt=Ce(/firefox/i),Ue=Ce(/safari/i)&&!Ce(/chrome/i)&&!Ce(/android/i),rn=Ce(/iP(ad|od|hone)/i),sn=Ce(/chrome/i)&&Ce(/android/i),un={capture:!1,passive:!1};function j(t,o,n){t.addEventListener(o,n,!Ee&&un)}function M(t,o,n){t.removeEventListener(o,n,!Ee&&un)}function st(t,o){if(o){if(o[0]===">"&&(o=o.substring(1)),t)try{if(t.matches)return t.matches(o);if(t.msMatchesSelector)return t.msMatchesSelector(o);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(o)}catch{return!1}return!1}}function oo(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function ve(t,o,n,l){if(t){n=n||document;do{if(o!=null&&(o[0]===">"?t.parentNode===n&&st(t,o):st(t,o))||l&&t===n)return t;if(t===n)break}while(t=oo(t))}return null}var Ht=/\s+/g;function ue(t,o,n){if(t&&o)if(t.classList)t.classList[n?"add":"remove"](o);else{var l=(" "+t.className+" ").replace(Ht," ").replace(" "+o+" "," ");t.className=(l+(n?" "+o:"")).replace(Ht," ")}}function T(t,o,n){var l=t&&t.style;if(l){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),o===void 0?n:n[o];!(o in l)&&o.indexOf("webkit")===-1&&(o="-webkit-"+o),l[o]=n+(typeof n=="string"?"":"px")}}function $e(t,o){var n="";if(typeof t=="string")n=t;else do{var l=T(t,"transform");l&&l!=="none"&&(n=l+" "+n)}while(!o&&(t=t.parentNode));var a=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return a&&new a(n)}function dn(t,o,n){if(t){var l=t.getElementsByTagName(o),a=0,i=l.length;if(n)for(;a<i;a++)n(l[a],a);return l}return[]}function be(){var t=document.scrollingElement;return t||document.documentElement}function ee(t,o,n,l,a){if(!(!t.getBoundingClientRect&&t!==window)){var i,s,u,r,h,d,c;if(t!==window&&t.parentNode&&t!==be()?(i=t.getBoundingClientRect(),s=i.top,u=i.left,r=i.bottom,h=i.right,d=i.height,c=i.width):(s=0,u=0,r=window.innerHeight,h=window.innerWidth,d=window.innerHeight,c=window.innerWidth),(o||n)&&t!==window&&(a=a||t.parentNode,!Ee))do if(a&&a.getBoundingClientRect&&(T(a,"transform")!=="none"||n&&T(a,"position")!=="static")){var k=a.getBoundingClientRect();s-=k.top+parseInt(T(a,"border-top-width")),u-=k.left+parseInt(T(a,"border-left-width")),r=s+i.height,h=u+i.width;break}while(a=a.parentNode);if(l&&t!==window){var C=$e(a||t),b=C&&C.a,N=C&&C.d;C&&(s/=N,u/=b,c/=b,d/=N,r=s+d,h=u+c)}return{top:s,left:u,bottom:r,right:h,width:c,height:d}}}function qt(t,o,n){for(var l=we(t,!0),a=ee(t)[o];l;){var i=ee(l)[n],s=void 0;if(s=a>=i,!s)return l;if(l===be())break;l=we(l,!1)}return!1}function Re(t,o,n,l){for(var a=0,i=0,s=t.children;i<s.length;){if(s[i].style.display!=="none"&&s[i]!==D.ghost&&(l||s[i]!==D.dragged)&&ve(s[i],n.draggable,t,!1)){if(a===o)return s[i];a++}i++}return null}function Bt(t,o){for(var n=t.lastElementChild;n&&(n===D.ghost||T(n,"display")==="none"||o&&!st(n,o));)n=n.previousElementSibling;return n||null}function pe(t,o){var n=0;if(!t||!t.parentNode)return-1;for(;t=t.previousElementSibling;)t.nodeName.toUpperCase()!=="TEMPLATE"&&t!==D.clone&&(!o||st(t,o))&&n++;return n}function Jt(t){var o=0,n=0,l=be();if(t)do{var a=$e(t),i=a.a,s=a.d;o+=t.scrollLeft*i,n+=t.scrollTop*s}while(t!==l&&(t=t.parentNode));return[o,n]}function lo(t,o){for(var n in t)if(t.hasOwnProperty(n)){for(var l in o)if(o.hasOwnProperty(l)&&o[l]===t[n][l])return Number(n)}return-1}function we(t,o){if(!t||!t.getBoundingClientRect)return be();var n=t,l=!1;do if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var a=T(n);if(n.clientWidth<n.scrollWidth&&(a.overflowX=="auto"||a.overflowX=="scroll")||n.clientHeight<n.scrollHeight&&(a.overflowY=="auto"||a.overflowY=="scroll")){if(!n.getBoundingClientRect||n===document.body)return be();if(l||o)return n;l=!0}}while(n=n.parentNode);return be()}function ao(t,o){if(t&&o)for(var n in o)o.hasOwnProperty(n)&&(t[n]=o[n]);return t}function ht(t,o){return Math.round(t.top)===Math.round(o.top)&&Math.round(t.left)===Math.round(o.left)&&Math.round(t.height)===Math.round(o.height)&&Math.round(t.width)===Math.round(o.width)}var Xe;function cn(t,o){return function(){if(!Xe){var n=arguments,l=this;n.length===1?t.call(l,n[0]):t.apply(l,n),Xe=setTimeout(function(){Xe=void 0},o)}}}function ro(){clearTimeout(Xe),Xe=void 0}function pn(t,o,n){t.scrollLeft+=o,t.scrollTop+=n}function fn(t){var o=window.Polymer,n=window.jQuery||window.Zepto;return o&&o.dom?o.dom(t).cloneNode(!0):n?n(t).clone(!0)[0]:t.cloneNode(!0)}function mn(t,o,n){var l={};return Array.from(t.children).forEach(function(a){var i,s,u,r;if(!(!ve(a,o.draggable,t,!1)||a.animated||a===n)){var h=ee(a);l.left=Math.min((i=l.left)!==null&&i!==void 0?i:1/0,h.left),l.top=Math.min((s=l.top)!==null&&s!==void 0?s:1/0,h.top),l.right=Math.max((u=l.right)!==null&&u!==void 0?u:-1/0,h.right),l.bottom=Math.max((r=l.bottom)!==null&&r!==void 0?r:-1/0,h.bottom)}}),l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}var ce="Sortable"+new Date().getTime();function io(){var t=[],o;return{captureAnimationState:function(){if(t=[],!!this.options.animation){var n=[].slice.call(this.el.children);n.forEach(function(l){if(!(T(l,"display")==="none"||l===D.ghost)){t.push({target:l,rect:ee(l)});var a=ye({},t[t.length-1].rect);if(l.thisAnimationDuration){var i=$e(l,!0);i&&(a.top-=i.f,a.left-=i.e)}l.fromRect=a}})}},addAnimationState:function(n){t.push(n)},removeAnimationState:function(n){t.splice(lo(t,{target:n}),1)},animateAll:function(n){var l=this;if(!this.options.animation){clearTimeout(o),typeof n=="function"&&n();return}var a=!1,i=0;t.forEach(function(s){var u=0,r=s.target,h=r.fromRect,d=ee(r),c=r.prevFromRect,k=r.prevToRect,C=s.rect,b=$e(r,!0);b&&(d.top-=b.f,d.left-=b.e),r.toRect=d,r.thisAnimationDuration&&ht(c,d)&&!ht(h,d)&&(C.top-d.top)/(C.left-d.left)===(h.top-d.top)/(h.left-d.left)&&(u=uo(C,c,k,l.options)),ht(d,h)||(r.prevFromRect=h,r.prevToRect=d,u||(u=l.options.animation),l.animate(r,C,d,u)),u&&(a=!0,i=Math.max(i,u),clearTimeout(r.animationResetTimer),r.animationResetTimer=setTimeout(function(){r.animationTime=0,r.prevFromRect=null,r.fromRect=null,r.prevToRect=null,r.thisAnimationDuration=null},u),r.thisAnimationDuration=u)}),clearTimeout(o),a?o=setTimeout(function(){typeof n=="function"&&n()},i):typeof n=="function"&&n(),t=[]},animate:function(n,l,a,i){if(i){T(n,"transition",""),T(n,"transform","");var s=$e(this.el),u=s&&s.a,r=s&&s.d,h=(l.left-a.left)/(u||1),d=(l.top-a.top)/(r||1);n.animatingX=!!h,n.animatingY=!!d,T(n,"transform","translate3d("+h+"px,"+d+"px,0)"),this.forRepaintDummy=so(n),T(n,"transition","transform "+i+"ms"+(this.options.easing?" "+this.options.easing:"")),T(n,"transform","translate3d(0,0,0)"),typeof n.animated=="number"&&clearTimeout(n.animated),n.animated=setTimeout(function(){T(n,"transition",""),T(n,"transform",""),n.animated=!1,n.animatingX=!1,n.animatingY=!1},i)}}}}function so(t){return t.offsetWidth}function uo(t,o,n,l){return Math.sqrt(Math.pow(o.top-t.top,2)+Math.pow(o.left-t.left,2))/Math.sqrt(Math.pow(o.top-n.top,2)+Math.pow(o.left-n.left,2))*l.animation}var Be=[],bt={initializeByDefault:!0},Ge={mount:function(t){for(var o in bt)bt.hasOwnProperty(o)&&!(o in t)&&(t[o]=bt[o]);Be.forEach(function(n){if(n.pluginName===t.pluginName)throw"Sortable: Cannot mount plugin ".concat(t.pluginName," more than once")}),Be.push(t)},pluginEvent:function(t,o,n){var l=this;this.eventCanceled=!1,n.cancel=function(){l.eventCanceled=!0};var a=t+"Global";Be.forEach(function(i){o[i.pluginName]&&(o[i.pluginName][a]&&o[i.pluginName][a](ye({sortable:o},n)),o.options[i.pluginName]&&o[i.pluginName][t]&&o[i.pluginName][t](ye({sortable:o},n)))})},initializePlugins:function(t,o,n,l){Be.forEach(function(s){var u=s.pluginName;if(!(!t.options[u]&&!s.initializeByDefault)){var r=new s(t,o,t.options);r.sortable=t,r.options=t.options,t[u]=r,Ne(n,r.defaults)}});for(var a in t.options)if(t.options.hasOwnProperty(a)){var i=this.modifyOption(t,a,t.options[a]);typeof i<"u"&&(t.options[a]=i)}},getEventProperties:function(t,o){var n={};return Be.forEach(function(l){typeof l.eventProperties=="function"&&Ne(n,l.eventProperties.call(o[l.pluginName],t))}),n},modifyOption:function(t,o,n){var l;return Be.forEach(function(a){t[a.pluginName]&&a.optionListeners&&typeof a.optionListeners[o]=="function"&&(l=a.optionListeners[o].call(t[a.pluginName],n))}),l}};function co(t){var o=t.sortable,n=t.rootEl,l=t.name,a=t.targetEl,i=t.cloneEl,s=t.toEl,u=t.fromEl,r=t.oldIndex,h=t.newIndex,d=t.oldDraggableIndex,c=t.newDraggableIndex,k=t.originalEvent,C=t.putSortable,b=t.extraEventProperties;if(o=o||n&&n[ce],!!o){var N,A=o.options,P="on"+l.charAt(0).toUpperCase()+l.substr(1);window.CustomEvent&&!Ee&&!We?N=new CustomEvent(l,{bubbles:!0,cancelable:!0}):(N=document.createEvent("Event"),N.initEvent(l,!0,!0)),N.to=s||n,N.from=u||n,N.item=a||n,N.clone=i,N.oldIndex=r,N.newIndex=h,N.oldDraggableIndex=d,N.newDraggableIndex=c,N.originalEvent=k,N.pullMode=C?C.lastPutMode:void 0;var J=ye(ye({},b),Ge.getEventProperties(l,o));for(var F in J)N[F]=J[F];n&&n.dispatchEvent(N),A[P]&&A[P].call(o,N)}}var po=["evt"],ie=function(t,o){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},l=n.evt,a=to(n,po);Ge.pluginEvent.bind(D)(t,o,ye({dragEl:y,parentEl:Z,ghostEl:O,rootEl:q,nextEl:Ie,lastDownEl:ot,cloneEl:W,cloneHidden:xe,dragStarted:Le,putSortable:oe,activeSortable:D.active,originalEvent:l,oldIndex:Fe,oldDraggableIndex:He,newIndex:de,newDraggableIndex:Se,hideGhostForTarget:bn,unhideGhostForTarget:yn,cloneNowHidden:function(){xe=!0},cloneNowShown:function(){xe=!1},dispatchSortableEvent:function(i){re({sortable:o,name:i,originalEvent:l})}},a))};function re(t){co(ye({putSortable:oe,cloneEl:W,targetEl:y,rootEl:q,oldIndex:Fe,oldDraggableIndex:He,newIndex:de,newDraggableIndex:Se},t))}var y,Z,O,q,Ie,ot,W,xe,Fe,de,He,Se,Qe,oe,Ae=!1,ut=!1,dt=[],Te,me,yt,_t,Wt,Gt,Le,Oe,qe,Je=!1,Ke=!1,lt,ae,Ct=[],wt=!1,ct=[],ft=typeof document<"u",et=rn,Zt=We||Ee?"cssFloat":"float",fo=ft&&!sn&&!rn&&"draggable"in document.createElement("div"),vn=(function(){if(ft){if(Ee)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto",t.style.pointerEvents==="auto"}})(),gn=function(t,o){var n=T(t),l=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),a=Re(t,0,o),i=Re(t,1,o),s=a&&T(a),u=i&&T(i),r=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+ee(a).width,h=u&&parseInt(u.marginLeft)+parseInt(u.marginRight)+ee(i).width;if(n.display==="flex")return n.flexDirection==="column"||n.flexDirection==="column-reverse"?"vertical":"horizontal";if(n.display==="grid")return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(a&&s.float&&s.float!=="none"){var d=s.float==="left"?"left":"right";return i&&(u.clear==="both"||u.clear===d)?"vertical":"horizontal"}return a&&(s.display==="block"||s.display==="flex"||s.display==="table"||s.display==="grid"||r>=l&&n[Zt]==="none"||i&&n[Zt]==="none"&&r+h>l)?"vertical":"horizontal"},mo=function(t,o,n){var l=n?t.left:t.top,a=n?t.right:t.bottom,i=n?t.width:t.height,s=n?o.left:o.top,u=n?o.right:o.bottom,r=n?o.width:o.height;return l===s||a===u||l+i/2===s+r/2},vo=function(t,o){var n;return dt.some(function(l){var a=l[ce].options.emptyInsertThreshold;if(!(!a||Bt(l))){var i=ee(l),s=t>=i.left-a&&t<=i.right+a,u=o>=i.top-a&&o<=i.bottom+a;if(s&&u)return n=l}}),n},hn=function(t){function o(a,i){return function(s,u,r,h){var d=s.options.group.name&&u.options.group.name&&s.options.group.name===u.options.group.name;if(a==null&&(i||d))return!0;if(a==null||a===!1)return!1;if(i&&a==="clone")return a;if(typeof a=="function")return o(a(s,u,r,h),i)(s,u,r,h);var c=(i?s:u).options.group.name;return a===!0||typeof a=="string"&&a===c||a.join&&a.indexOf(c)>-1}}var n={},l=t.group;(!l||nt(l)!="object")&&(l={name:l}),n.name=l.name,n.checkPull=o(l.pull,!0),n.checkPut=o(l.put),n.revertClone=l.revertClone,t.group=n},bn=function(){!vn&&O&&T(O,"display","none")},yn=function(){!vn&&O&&T(O,"display","")};ft&&!sn&&document.addEventListener("click",function(t){if(ut)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),ut=!1,!1},!0);var De=function(t){if(y){t=t.touches?t.touches[0]:t;var o=vo(t.clientX,t.clientY);if(o){var n={};for(var l in t)t.hasOwnProperty(l)&&(n[l]=t[l]);n.target=n.rootEl=o,n.preventDefault=void 0,n.stopPropagation=void 0,o[ce]._onDragOver(n)}}},go=function(t){y&&y.parentNode[ce]._isOutsideThisEl(t.target)};function D(t,o){if(!(t&&t.nodeType&&t.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=o=Ne({},o),t[ce]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return gn(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(i,s){i.setData("Text",s.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:D.supportPointer!==!1&&"PointerEvent"in window&&!Ue,emptyInsertThreshold:5};Ge.initializePlugins(this,t,n);for(var l in n)!(l in o)&&(o[l]=n[l]);hn(o);for(var a in this)a.charAt(0)==="_"&&typeof this[a]=="function"&&(this[a]=this[a].bind(this));this.nativeDraggable=o.forceFallback?!1:fo,this.nativeDraggable&&(this.options.touchStartThreshold=1),o.supportPointer?j(t,"pointerdown",this._onTapStart):(j(t,"mousedown",this._onTapStart),j(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(j(t,"dragover",this),j(t,"dragenter",this)),dt.push(this.el),o.store&&o.store.get&&this.sort(o.store.get(this)||[]),Ne(this,io())}D.prototype={constructor:D,_isOutsideThisEl:function(t){!this.el.contains(t)&&t!==this.el&&(Oe=null)},_getDirection:function(t,o){return typeof this.options.direction=="function"?this.options.direction.call(this,t,o,y):this.options.direction},_onTapStart:function(t){if(t.cancelable){var o=this,n=this.el,l=this.options,a=l.preventOnFilter,i=t.type,s=t.touches&&t.touches[0]||t.pointerType&&t.pointerType==="touch"&&t,u=(s||t).target,r=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||u,h=l.filter;if(ko(n),!y&&!(/mousedown|pointerdown/.test(i)&&t.button!==0||l.disabled)&&!r.isContentEditable&&!(!this.nativeDraggable&&Ue&&u&&u.tagName.toUpperCase()==="SELECT")&&(u=ve(u,l.draggable,n,!1),!(u&&u.animated)&&ot!==u)){if(Fe=pe(u),He=pe(u,l.draggable),typeof h=="function"){if(h.call(this,t,u,this)){re({sortable:o,rootEl:r,name:"filter",targetEl:u,toEl:n,fromEl:n}),ie("filter",o,{evt:t}),a&&t.cancelable&&t.preventDefault();return}}else if(h&&(h=h.split(",").some(function(d){if(d=ve(r,d.trim(),n,!1),d)return re({sortable:o,rootEl:d,name:"filter",targetEl:u,fromEl:n,toEl:n}),ie("filter",o,{evt:t}),!0}),h)){a&&t.cancelable&&t.preventDefault();return}l.handle&&!ve(r,l.handle,n,!1)||this._prepareDragStart(t,s,u)}}},_prepareDragStart:function(t,o,n){var l=this,a=l.el,i=l.options,s=a.ownerDocument,u;if(n&&!y&&n.parentNode===a){var r=ee(n);if(q=a,y=n,Z=y.parentNode,Ie=y.nextSibling,ot=n,Qe=i.group,D.dragged=y,Te={target:y,clientX:(o||t).clientX,clientY:(o||t).clientY},Wt=Te.clientX-r.left,Gt=Te.clientY-r.top,this._lastX=(o||t).clientX,this._lastY=(o||t).clientY,y.style["will-change"]="all",u=function(){if(ie("delayEnded",l,{evt:t}),D.eventCanceled){l._onDrop();return}l._disableDelayedDragEvents(),!Xt&&l.nativeDraggable&&(y.draggable=!0),l._triggerDragStart(t,o),re({sortable:l,name:"choose",originalEvent:t}),ue(y,i.chosenClass,!0)},i.ignore.split(",").forEach(function(h){dn(y,h.trim(),Nt)}),j(s,"dragover",De),j(s,"mousemove",De),j(s,"touchmove",De),j(s,"mouseup",l._onDrop),j(s,"touchend",l._onDrop),j(s,"touchcancel",l._onDrop),Xt&&this.nativeDraggable&&(this.options.touchStartThreshold=4,y.draggable=!0),ie("delayStart",this,{evt:t}),i.delay&&(!i.delayOnTouchOnly||o)&&(!this.nativeDraggable||!(We||Ee))){if(D.eventCanceled){this._onDrop();return}j(s,"mouseup",l._disableDelayedDrag),j(s,"touchend",l._disableDelayedDrag),j(s,"touchcancel",l._disableDelayedDrag),j(s,"mousemove",l._delayedDragTouchMoveHandler),j(s,"touchmove",l._delayedDragTouchMoveHandler),i.supportPointer&&j(s,"pointermove",l._delayedDragTouchMoveHandler),l._dragStartTimer=setTimeout(u,i.delay)}else u()}},_delayedDragTouchMoveHandler:function(t){var o=t.touches?t.touches[0]:t;Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){y&&Nt(y),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;M(t,"mouseup",this._disableDelayedDrag),M(t,"touchend",this._disableDelayedDrag),M(t,"touchcancel",this._disableDelayedDrag),M(t,"mousemove",this._delayedDragTouchMoveHandler),M(t,"touchmove",this._delayedDragTouchMoveHandler),M(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,o){o=o||t.pointerType=="touch"&&t,!this.nativeDraggable||o?this.options.supportPointer?j(document,"pointermove",this._onTouchMove):o?j(document,"touchmove",this._onTouchMove):j(document,"mousemove",this._onTouchMove):(j(y,"dragend",this),j(q,"dragstart",this._onDragStart));try{document.selection?at(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(t,o){if(Ae=!1,q&&y){ie("dragStarted",this,{evt:o}),this.nativeDraggable&&j(document,"dragover",go);var n=this.options;!t&&ue(y,n.dragClass,!1),ue(y,n.ghostClass,!0),D.active=this,t&&this._appendGhost(),re({sortable:this,name:"start",originalEvent:o})}else this._nulling()},_emulateDragOver:function(){if(me){this._lastX=me.clientX,this._lastY=me.clientY,bn();for(var t=document.elementFromPoint(me.clientX,me.clientY),o=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(me.clientX,me.clientY),t!==o);)o=t;if(y.parentNode[ce]._isOutsideThisEl(t),o)do{if(o[ce]){var n=void 0;if(n=o[ce]._onDragOver({clientX:me.clientX,clientY:me.clientY,target:t,rootEl:o}),n&&!this.options.dragoverBubble)break}t=o}while(o=o.parentNode);yn()}},_onTouchMove:function(t){if(Te){var o=this.options,n=o.fallbackTolerance,l=o.fallbackOffset,a=t.touches?t.touches[0]:t,i=O&&$e(O,!0),s=O&&i&&i.a,u=O&&i&&i.d,r=et&&ae&&Jt(ae),h=(a.clientX-Te.clientX+l.x)/(s||1)+(r?r[0]-Ct[0]:0)/(s||1),d=(a.clientY-Te.clientY+l.y)/(u||1)+(r?r[1]-Ct[1]:0)/(u||1);if(!D.active&&!Ae){if(n&&Math.max(Math.abs(a.clientX-this._lastX),Math.abs(a.clientY-this._lastY))<n)return;this._onDragStart(t,!0)}if(O){i?(i.e+=h-(yt||0),i.f+=d-(_t||0)):i={a:1,b:0,c:0,d:1,e:h,f:d};var c="matrix(".concat(i.a,",").concat(i.b,",").concat(i.c,",").concat(i.d,",").concat(i.e,",").concat(i.f,")");T(O,"webkitTransform",c),T(O,"mozTransform",c),T(O,"msTransform",c),T(O,"transform",c),yt=h,_t=d,me=a}t.cancelable&&t.preventDefault()}},_appendGhost:function(){if(!O){var t=this.options.fallbackOnBody?document.body:q,o=ee(y,!0,et,!0,t),n=this.options;if(et){for(ae=t;T(ae,"position")==="static"&&T(ae,"transform")==="none"&&ae!==document;)ae=ae.parentNode;ae!==document.body&&ae!==document.documentElement?(ae===document&&(ae=be()),o.top+=ae.scrollTop,o.left+=ae.scrollLeft):ae=be(),Ct=Jt(ae)}O=y.cloneNode(!0),ue(O,n.ghostClass,!1),ue(O,n.fallbackClass,!0),ue(O,n.dragClass,!0),T(O,"transition",""),T(O,"transform",""),T(O,"box-sizing","border-box"),T(O,"margin",0),T(O,"top",o.top),T(O,"left",o.left),T(O,"width",o.width),T(O,"height",o.height),T(O,"opacity","0.8"),T(O,"position",et?"absolute":"fixed"),T(O,"zIndex","100000"),T(O,"pointerEvents","none"),D.ghost=O,t.appendChild(O),T(O,"transform-origin",Wt/parseInt(O.style.width)*100+"% "+Gt/parseInt(O.style.height)*100+"%")}},_onDragStart:function(t,o){var n=this,l=t.dataTransfer,a=n.options;if(ie("dragStart",this,{evt:t}),D.eventCanceled){this._onDrop();return}ie("setupClone",this),D.eventCanceled||(W=fn(y),W.removeAttribute("id"),W.draggable=!1,W.style["will-change"]="",this._hideClone(),ue(W,this.options.chosenClass,!1),D.clone=W),n.cloneId=at(function(){ie("clone",n),!D.eventCanceled&&(n.options.removeCloneOnHide||q.insertBefore(W,y),n._hideClone(),re({sortable:n,name:"clone"}))}),!o&&ue(y,a.dragClass,!0),o?(ut=!0,n._loopId=setInterval(n._emulateDragOver,50)):(M(document,"mouseup",n._onDrop),M(document,"touchend",n._onDrop),M(document,"touchcancel",n._onDrop),l&&(l.effectAllowed="move",a.setData&&a.setData.call(n,l,y)),j(document,"drop",n),T(y,"transform","translateZ(0)")),Ae=!0,n._dragStartId=at(n._dragStarted.bind(n,o,t)),j(document,"selectstart",n),Le=!0,Ue&&T(document.body,"user-select","none")},_onDragOver:function(t){var o=this.el,n=t.target,l,a,i,s=this.options,u=s.group,r=D.active,h=Qe===u,d=s.sort,c=oe||r,k,C=this,b=!1;if(wt)return;function N(v,se){ie(v,C,ye({evt:t,isOwner:h,axis:k?"vertical":"horizontal",revert:i,dragRect:l,targetRect:a,canSort:d,fromSortable:c,target:n,completed:P,onMove:function(fe,ke){return tt(q,o,y,l,fe,ee(fe),t,ke)},changed:J},se))}function A(){N("dragOverAnimationCapture"),C.captureAnimationState(),C!==c&&c.captureAnimationState()}function P(v){return N("dragOverCompleted",{insertion:v}),v&&(h?r._hideClone():r._showClone(C),C!==c&&(ue(y,oe?oe.options.ghostClass:r.options.ghostClass,!1),ue(y,s.ghostClass,!0)),oe!==C&&C!==D.active?oe=C:C===D.active&&oe&&(oe=null),c===C&&(C._ignoreWhileAnimating=n),C.animateAll(function(){N("dragOverAnimationComplete"),C._ignoreWhileAnimating=null}),C!==c&&(c.animateAll(),c._ignoreWhileAnimating=null)),(n===y&&!y.animated||n===o&&!n.animated)&&(Oe=null),!s.dragoverBubble&&!t.rootEl&&n!==document&&(y.parentNode[ce]._isOutsideThisEl(t.target),!v&&De(t)),!s.dragoverBubble&&t.stopPropagation&&t.stopPropagation(),b=!0}function J(){de=pe(y),Se=pe(y,s.draggable),re({sortable:C,name:"change",toEl:o,newIndex:de,newDraggableIndex:Se,originalEvent:t})}if(t.preventDefault!==void 0&&t.cancelable&&t.preventDefault(),n=ve(n,s.draggable,o,!0),N("dragOver"),D.eventCanceled)return b;if(y.contains(t.target)||n.animated&&n.animatingX&&n.animatingY||C._ignoreWhileAnimating===n)return P(!1);if(ut=!1,r&&!s.disabled&&(h?d||(i=Z!==q):oe===this||(this.lastPutMode=Qe.checkPull(this,r,y,t))&&u.checkPut(this,r,y,t))){if(k=this._getDirection(t,n)==="vertical",l=ee(y),N("dragOverValid"),D.eventCanceled)return b;if(i)return Z=q,A(),this._hideClone(),N("revert"),D.eventCanceled||(Ie?q.insertBefore(y,Ie):q.appendChild(y)),P(!0);var F=Bt(o,s.draggable);if(!F||_o(t,k,this)&&!F.animated){if(F===y)return P(!1);if(F&&o===t.target&&(n=F),n&&(a=ee(n)),tt(q,o,y,l,n,a,t,!!n)!==!1)return A(),F&&F.nextSibling?o.insertBefore(y,F.nextSibling):o.appendChild(y),Z=o,J(),P(!0)}else if(F&&yo(t,k,this)){var z=Re(o,0,s,!0);if(z===y)return P(!1);if(n=z,a=ee(n),tt(q,o,y,l,n,a,t,!1)!==!1)return A(),o.insertBefore(y,z),Z=o,J(),P(!0)}else if(n.parentNode===o){a=ee(n);var w=0,te,Y=y.parentNode!==o,ne=!mo(y.animated&&y.toRect||l,n.animated&&n.toRect||a,k),U=k?"top":"left",S=qt(n,"top","top")||qt(y,"top","top"),$=S?S.scrollTop:void 0;Oe!==n&&(te=a[U],Je=!1,Ke=!ne&&s.invertSwap||Y),w=Co(t,n,a,k,ne?1:s.swapThreshold,s.invertedSwapThreshold==null?s.swapThreshold:s.invertedSwapThreshold,Ke,Oe===n);var R;if(w!==0){var G=pe(y);do G-=w,R=Z.children[G];while(R&&(T(R,"display")==="none"||R===O))}if(w===0||R===n)return P(!1);Oe=n,qe=w;var L=n.nextElementSibling,V=!1;V=w===1;var p=tt(q,o,y,l,n,a,t,V);if(p!==!1)return(p===1||p===-1)&&(V=p===1),wt=!0,setTimeout(bo,30),A(),V&&!L?o.appendChild(y):n.parentNode.insertBefore(y,V?L:n),S&&pn(S,0,$-S.scrollTop),Z=y.parentNode,te!==void 0&&!Ke&&(lt=Math.abs(te-ee(n)[U])),J(),P(!0)}if(o.contains(y))return P(!1)}return!1},_ignoreWhileAnimating:null,_offMoveEvents:function(){M(document,"mousemove",this._onTouchMove),M(document,"touchmove",this._onTouchMove),M(document,"pointermove",this._onTouchMove),M(document,"dragover",De),M(document,"mousemove",De),M(document,"touchmove",De)},_offUpEvents:function(){var t=this.el.ownerDocument;M(t,"mouseup",this._onDrop),M(t,"touchend",this._onDrop),M(t,"pointerup",this._onDrop),M(t,"touchcancel",this._onDrop),M(document,"selectstart",this)},_onDrop:function(t){var o=this.el,n=this.options;if(de=pe(y),Se=pe(y,n.draggable),ie("drop",this,{evt:t}),Z=y&&y.parentNode,de=pe(y),Se=pe(y,n.draggable),D.eventCanceled){this._nulling();return}Ae=!1,Ke=!1,Je=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Vt(this.cloneId),Vt(this._dragStartId),this.nativeDraggable&&(M(document,"drop",this),M(o,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),Ue&&T(document.body,"user-select",""),T(y,"transform",""),t&&(Le&&(t.cancelable&&t.preventDefault(),!n.dropBubble&&t.stopPropagation()),O&&O.parentNode&&O.parentNode.removeChild(O),(q===Z||oe&&oe.lastPutMode!=="clone")&&W&&W.parentNode&&W.parentNode.removeChild(W),y&&(this.nativeDraggable&&M(y,"dragend",this),Nt(y),y.style["will-change"]="",Le&&!Ae&&ue(y,oe?oe.options.ghostClass:this.options.ghostClass,!1),ue(y,this.options.chosenClass,!1),re({sortable:this,name:"unchoose",toEl:Z,newIndex:null,newDraggableIndex:null,originalEvent:t}),q!==Z?(de>=0&&(re({rootEl:Z,name:"add",toEl:Z,fromEl:q,originalEvent:t}),re({sortable:this,name:"remove",toEl:Z,originalEvent:t}),re({rootEl:Z,name:"sort",toEl:Z,fromEl:q,originalEvent:t}),re({sortable:this,name:"sort",toEl:Z,originalEvent:t})),oe&&oe.save()):de!==Fe&&de>=0&&(re({sortable:this,name:"update",toEl:Z,originalEvent:t}),re({sortable:this,name:"sort",toEl:Z,originalEvent:t})),D.active&&((de==null||de===-1)&&(de=Fe,Se=He),re({sortable:this,name:"end",toEl:Z,originalEvent:t}),this.save()))),this._nulling()},_nulling:function(){ie("nulling",this),q=y=Z=O=Ie=W=ot=xe=Te=me=Le=de=Se=Fe=He=Oe=qe=oe=Qe=D.dragged=D.ghost=D.clone=D.active=null,ct.forEach(function(t){t.checked=!0}),ct.length=yt=_t=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":y&&(this._onDragOver(t),ho(t));break;case"selectstart":t.preventDefault();break}},toArray:function(){for(var t=[],o,n=this.el.children,l=0,a=n.length,i=this.options;l<a;l++)o=n[l],ve(o,i.draggable,this.el,!1)&&t.push(o.getAttribute(i.dataIdAttr)||Eo(o));return t},sort:function(t,o){var n={},l=this.el;this.toArray().forEach(function(a,i){var s=l.children[i];ve(s,this.options.draggable,l,!1)&&(n[a]=s)},this),o&&this.captureAnimationState(),t.forEach(function(a){n[a]&&(l.removeChild(n[a]),l.appendChild(n[a]))}),o&&this.animateAll()},save:function(){var t=this.options.store;t&&t.set&&t.set(this)},closest:function(t,o){return ve(t,o||this.options.draggable,this.el,!1)},option:function(t,o){var n=this.options;if(o===void 0)return n[t];var l=Ge.modifyOption(this,t,o);typeof l<"u"?n[t]=l:n[t]=o,t==="group"&&hn(n)},destroy:function(){ie("destroy",this);var t=this.el;t[ce]=null,M(t,"mousedown",this._onTapStart),M(t,"touchstart",this._onTapStart),M(t,"pointerdown",this._onTapStart),this.nativeDraggable&&(M(t,"dragover",this),M(t,"dragenter",this)),Array.prototype.forEach.call(t.querySelectorAll("[draggable]"),function(o){o.removeAttribute("draggable")}),this._onDrop(),this._disableDelayedDragEvents(),dt.splice(dt.indexOf(this.el),1),this.el=t=null},_hideClone:function(){if(!xe){if(ie("hideClone",this),D.eventCanceled)return;T(W,"display","none"),this.options.removeCloneOnHide&&W.parentNode&&W.parentNode.removeChild(W),xe=!0}},_showClone:function(t){if(t.lastPutMode!=="clone"){this._hideClone();return}if(xe){if(ie("showClone",this),D.eventCanceled)return;y.parentNode==q&&!this.options.group.revertClone?q.insertBefore(W,y):Ie?q.insertBefore(W,Ie):q.appendChild(W),this.options.group.revertClone&&this.animate(y,W),T(W,"display",""),xe=!1}}};function ho(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.cancelable&&t.preventDefault()}function tt(t,o,n,l,a,i,s,u){var r,h=t[ce],d=h.options.onMove,c;return window.CustomEvent&&!Ee&&!We?r=new CustomEvent("move",{bubbles:!0,cancelable:!0}):(r=document.createEvent("Event"),r.initEvent("move",!0,!0)),r.to=o,r.from=t,r.dragged=n,r.draggedRect=l,r.related=a||o,r.relatedRect=i||ee(o),r.willInsertAfter=u,r.originalEvent=s,t.dispatchEvent(r),d&&(c=d.call(h,r,s)),c}function Nt(t){t.draggable=!1}function bo(){wt=!1}function yo(t,o,n){var l=ee(Re(n.el,0,n.options,!0)),a=mn(n.el,n.options,O),i=10;return o?t.clientX<a.left-i||t.clientY<l.top&&t.clientX<l.right:t.clientY<a.top-i||t.clientY<l.bottom&&t.clientX<l.left}function _o(t,o,n){var l=ee(Bt(n.el,n.options.draggable)),a=mn(n.el,n.options,O),i=10;return o?t.clientX>a.right+i||t.clientY>l.bottom&&t.clientX>l.left:t.clientY>a.bottom+i||t.clientX>l.right&&t.clientY>l.top}function Co(t,o,n,l,a,i,s,u){var r=l?t.clientY:t.clientX,h=l?n.height:n.width,d=l?n.top:n.left,c=l?n.bottom:n.right,k=!1;if(!s){if(u&<<h*a){if(!Je&&(qe===1?r>d+h*i/2:r<c-h*i/2)&&(Je=!0),Je)k=!0;else if(qe===1?r<d+lt:r>c-lt)return-qe}else if(r>d+h*(1-a)/2&&r<c-h*(1-a)/2)return No(o)}return k=k||s,k&&(r<d+h*i/2||r>c-h*i/2)?r>d+h/2?1:-1:0}function No(t){return pe(y)<pe(t)?1:-1}function Eo(t){for(var o=t.tagName+t.className+t.src+t.href+t.textContent,n=o.length,l=0;n--;)l+=o.charCodeAt(n);return l.toString(36)}function ko(t){ct.length=0;for(var o=t.getElementsByTagName("input"),n=o.length;n--;){var l=o[n];l.checked&&ct.push(l)}}function at(t){return setTimeout(t,0)}function Vt(t){return clearTimeout(t)}ft&&j(document,"touchmove",function(t){(D.active||Ae)&&t.cancelable&&t.preventDefault()});D.utils={on:j,off:M,css:T,find:dn,is:function(t,o){return!!ve(t,o,t,!1)},extend:ao,throttle:cn,closest:ve,toggleClass:ue,clone:fn,index:pe,nextTick:at,cancelNextTick:Vt,detectDirection:gn,getChild:Re};D.get=function(t){return t[ce]};D.mount=function(){for(var t=arguments.length,o=new Array(t),n=0;n<t;n++)o[n]=arguments[n];o[0].constructor===Array&&(o=o[0]),o.forEach(function(l){if(!l.prototype||!l.prototype.constructor)throw"Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(l));l.utils&&(D.utils=ye(ye({},D.utils),l.utils)),Ge.mount(l)})};D.create=function(t,o){return new D(t,o)};D.version=no;var K=[],je,Tt,Dt=!1,Et,kt,pt,Ye;function So(){function t(){this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0};for(var o in this)o.charAt(0)==="_"&&typeof this[o]=="function"&&(this[o]=this[o].bind(this))}return t.prototype={dragStarted:function(o){var n=o.originalEvent;this.sortable.nativeDraggable?j(document,"dragover",this._handleAutoScroll):this.options.supportPointer?j(document,"pointermove",this._handleFallbackAutoScroll):n.touches?j(document,"touchmove",this._handleFallbackAutoScroll):j(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(o){var n=o.originalEvent;!this.options.dragOverBubble&&!n.rootEl&&this._handleAutoScroll(n)},drop:function(){this.sortable.nativeDraggable?M(document,"dragover",this._handleAutoScroll):(M(document,"pointermove",this._handleFallbackAutoScroll),M(document,"touchmove",this._handleFallbackAutoScroll),M(document,"mousemove",this._handleFallbackAutoScroll)),Qt(),rt(),ro()},nulling:function(){pt=Tt=je=Dt=Ye=Et=kt=null,K.length=0},_handleFallbackAutoScroll:function(o){this._handleAutoScroll(o,!0)},_handleAutoScroll:function(o,n){var l=this,a=(o.touches?o.touches[0]:o).clientX,i=(o.touches?o.touches[0]:o).clientY,s=document.elementFromPoint(a,i);if(pt=o,n||this.options.forceAutoScrollFallback||We||Ee||Ue){St(o,this.options,s,n);var u=we(s,!0);Dt&&(!Ye||a!==Et||i!==kt)&&(Ye&&Qt(),Ye=setInterval(function(){var r=we(document.elementFromPoint(a,i),!0);r!==u&&(u=r,rt()),St(o,l.options,r,n)},10),Et=a,kt=i)}else{if(!this.options.bubbleScroll||we(s,!0)===be()){rt();return}St(o,this.options,we(s,!1),!1)}}},Ne(t,{pluginName:"scroll",initializeByDefault:!0})}function rt(){K.forEach(function(t){clearInterval(t.pid)}),K=[]}function Qt(){clearInterval(Ye)}var St=cn(function(t,o,n,l){if(o.scroll){var a=(t.touches?t.touches[0]:t).clientX,i=(t.touches?t.touches[0]:t).clientY,s=o.scrollSensitivity,u=o.scrollSpeed,r=be(),h=!1,d;Tt!==n&&(Tt=n,rt(),je=o.scroll,d=o.scrollFn,je===!0&&(je=we(n,!0)));var c=0,k=je;do{var C=k,b=ee(C),N=b.top,A=b.bottom,P=b.left,J=b.right,F=b.width,z=b.height,w=void 0,te=void 0,Y=C.scrollWidth,ne=C.scrollHeight,U=T(C),S=C.scrollLeft,$=C.scrollTop;C===r?(w=F<Y&&(U.overflowX==="auto"||U.overflowX==="scroll"||U.overflowX==="visible"),te=z<ne&&(U.overflowY==="auto"||U.overflowY==="scroll"||U.overflowY==="visible")):(w=F<Y&&(U.overflowX==="auto"||U.overflowX==="scroll"),te=z<ne&&(U.overflowY==="auto"||U.overflowY==="scroll"));var R=w&&(Math.abs(J-a)<=s&&S+F<Y)-(Math.abs(P-a)<=s&&!!S),G=te&&(Math.abs(A-i)<=s&&$+z<ne)-(Math.abs(N-i)<=s&&!!$);if(!K[c])for(var L=0;L<=c;L++)K[L]||(K[L]={});(K[c].vx!=R||K[c].vy!=G||K[c].el!==C)&&(K[c].el=C,K[c].vx=R,K[c].vy=G,clearInterval(K[c].pid),(R!=0||G!=0)&&(h=!0,K[c].pid=setInterval((function(){l&&this.layer===0&&D.active._onTouchMove(pt);var V=K[this.layer].vy?K[this.layer].vy*u:0,p=K[this.layer].vx?K[this.layer].vx*u:0;typeof d=="function"&&d.call(D.dragged.parentNode[ce],p,V,t,pt,K[this.layer].el)!=="continue"||pn(K[this.layer].el,p,V)}).bind({layer:c}),24))),c++}while(o.bubbleScroll&&k!==r&&(k=we(k,!1)));Dt=h}},30),_n=function(t){var o=t.originalEvent,n=t.putSortable,l=t.dragEl,a=t.activeSortable,i=t.dispatchSortableEvent,s=t.hideGhostForTarget,u=t.unhideGhostForTarget;if(o){var r=n||a;s();var h=o.changedTouches&&o.changedTouches.length?o.changedTouches[0]:o,d=document.elementFromPoint(h.clientX,h.clientY);u(),r&&!r.el.contains(d)&&(i("spill"),this.onSpill({dragEl:l,putSortable:n}))}};function Ot(){}Ot.prototype={startIndex:null,dragStart:function(t){var o=t.oldDraggableIndex;this.startIndex=o},onSpill:function(t){var o=t.dragEl,n=t.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();var l=Re(this.sortable.el,this.startIndex,this.options);l?this.sortable.el.insertBefore(o,l):this.sortable.el.appendChild(o),this.sortable.animateAll(),n&&n.animateAll()},drop:_n};Ne(Ot,{pluginName:"revertOnSpill"});function At(){}At.prototype={onSpill:function(t){var o=t.dragEl,n=t.putSortable,l=n||this.sortable;l.captureAnimationState(),o.parentNode&&o.parentNode.removeChild(o),l.animateAll()},drop:_n};Ne(At,{pluginName:"removeOnSpill"});D.mount(new So);D.mount(At,Ot);function xo(t){return t==null?t:JSON.parse(JSON.stringify(t))}function wo(t){e.getCurrentInstance()&&e.onUnmounted(t)}function Vo(t){e.getCurrentInstance()?e.onMounted(t):e.nextTick(t)}let Cn=null,Nn=null;function Kt(t=null,o=null){Cn=t,Nn=o}function To(){return{data:Cn,clonedData:Nn}}const en=Symbol("cloneElement");function Do(...t){var o,n;const l=(o=e.getCurrentInstance())==null?void 0:o.proxy;let a=null;const i=t[0];let[,s,u]=t;Array.isArray(e.unref(s))||(u=s,s=null);let r=null;const{immediate:h=!0,clone:d=xo,forceFallback:c,fallbackOnBody:k,customUpdate:C}=(n=e.unref(u))!=null?n:{};function b(S){var $;const{from:R,oldIndex:G,item:L}=S,V=Array.from(R.childNodes);a=c&&!k?V.slice(0,-1):V;const p=e.unref(($=e.unref(s))==null?void 0:$[G]),v=d(p);Kt(p,v),L[en]=v}function N(S){const $=S.item[en];if(!Xn($)){if(gt(S.item),e.isRef(s)){const R=[...e.unref(s)];s.value=Lt(R,S.newDraggableIndex,$);return}Lt(e.unref(s),S.newDraggableIndex,$)}}function A(S){const{from:$,item:R,oldIndex:G,oldDraggableIndex:L,pullMode:V,clone:p}=S;if(jt($,R,G),V==="clone"){gt(p);return}if(e.isRef(s)){const v=[...e.unref(s)];s.value=zt(v,L);return}zt(e.unref(s),L)}function P(S){if(C){C(S);return}const{from:$,item:R,oldIndex:G,oldDraggableIndex:L,newDraggableIndex:V}=S;if(gt(R),jt($,R,G),e.isRef(s)){const p=[...e.unref(s)];s.value=Rt(p,L,V);return}Rt(e.unref(s),L,V)}function J(S){const{newIndex:$,oldIndex:R,from:G,to:L}=S;let V=null;const p=$===R&&G===L;try{if(p){let v=null;a?.some((se,fe)=>{if(v&&a?.length!==L.childNodes.length)return G.insertBefore(v,se.nextSibling),!0;const ke=L.childNodes[fe];v=L?.replaceChild(se,ke)})}}catch(v){V=v}finally{a=null}e.nextTick(()=>{if(Kt(),V)throw V})}const F={onUpdate:P,onStart:b,onAdd:N,onRemove:A,onEnd:J};function z(S){const $=e.unref(i);return S||(S=Hn($)?qn($,l?.$el):$),S&&!Gn(S)&&(S=S.$el),S||jn("Root element not found"),S}function w(){var S;const $=(S=e.unref(u))!=null?S:{},{immediate:R,clone:G}=$,L=ln($,["immediate","clone"]);return Yt(L,(V,p)=>{Zn(V)&&(L[V]=(v,...se)=>{const fe=To();return Qn(v,fe),p(v,...se)})}),Wn(s===null?{}:F,L)}const te=S=>{S=z(S),r&&Y.destroy(),r=new D(S,w())};e.watch(()=>u,()=>{r&&Yt(w(),(S,$)=>{r?.option(S,$)})},{deep:!0});const Y={option:(S,$)=>r?.option(S,$),destroy:()=>{r?.destroy(),r=null},save:()=>r?.save(),toArray:()=>r?.toArray(),closest:(...S)=>r?.closest(...S)},ne=()=>Y?.option("disabled",!0),U=()=>Y?.option("disabled",!1);return Vo(()=>{h&&te()}),wo(Y.destroy),Pe({start:te,pause:ne,resume:U},Y)}const It=["update","start","add","remove","choose","unchoose","end","sort","filter","clone","move","change"],Io=["clone","animation","ghostClass","group","sort","disabled","store","handle","draggable","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","chosenClass","dragClass","ignore","filter","preventOnFilter","easing","setData","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","emptyInsertThreshold","scroll","forceAutoScrollFallback","scrollSensitivity","scrollSpeed","bubbleScroll","modelValue","tag","target","customUpdate",...It.map(t=>`on${t.replace(/^\S/,o=>o.toUpperCase())}`)],Bo=e.defineComponent({name:"VueDraggable",model:{prop:"modelValue",event:"update:modelValue"},props:Io,emits:["update:modelValue",...It],setup(t,{slots:o,emit:n,expose:l,attrs:a}){const i=It.reduce((d,c)=>{const k=`on${c.replace(/^\S/,C=>C.toUpperCase())}`;return d[k]=(...C)=>n(c,...C),d},{}),s=e.computed(()=>{const d=e.toRefs(t),{modelValue:c}=d,k=ln(d,["modelValue"]),C=Object.entries(k).reduce((b,[N,A])=>{const P=e.unref(A);return P!==void 0&&(b[N]=P),b},{});return Pe(Pe({},i),Un(Pe(Pe({},a),C)))}),u=e.computed({get:()=>t.modelValue,set:d=>n("update:modelValue",d)}),r=e.ref(),h=e.reactive(Do(t.target||r,u,s));return l(h),()=>{var d;return e.h(t.tag||"div",{ref:r},(d=o?.default)==null?void 0:d.call(o,h))}}}),Oo={class:"expanded"},Ao={class:"expanded__head"},Po={class:"expanded__icon"},Fo=["name"],$o={class:"expanded__title"},Mo={class:"expanded__meta"},Ro={class:"expanded__head-actions"},zo={class:"expanded__body"},Lo={class:"expanded__preview"},jo={key:1,class:"expanded__options"},Yo=["onDragstart","onDragover","onDrop"],Uo={class:"expanded__options-foot"},Xo=["name"],Ho={key:2,class:"expanded__preview"},qo={class:"expanded__row"},Jo={class:"expanded__preview"},Wo={class:"expanded__row expanded__row--3"},Go={class:"expanded__preview"},Zo={class:"expanded__row expanded__row--2"},Qo={class:"expanded__preview"},Ko={class:"expanded__preview"},el={class:"expanded__section-preview"},tl={key:0},nl={class:"expanded__foot"},ol=["onClick"],ll=["name"],al=e.defineComponent({__name:"FieldCardExpanded",props:{pageIdx:{},fieldName:{}},setup(t){const o=t,n=Ve(),l=e.computed(()=>n.data.pages[o.pageIdx]?.fields[o.fieldName]??{}),a=e.computed(()=>{const x=l.value;return x.uiCom==="TextArea"?X.find(f=>f.id==="textarea"):x.uiCom==="Rating"?X.find(f=>f.id==="rating"):x.uiCom==="Slider"?X.find(f=>f.id==="slider"):x.uiCom==="ColorPicker"?X.find(f=>f.id==="color"):x.uiCom==="Section"?X.find(f=>f.id==="section"):x.uiCom==="File"?X.find(f=>f.id==="file"):x.ref?X.find(f=>f.id==="ref"):Array.isArray(x.enum)?X.find(f=>f.id==="select"):x.type==="Number"?X.find(f=>f.id==="number"):x.type==="Date"?X.find(f=>f.id==="date"):x.type==="Boolean"?X.find(f=>f.id==="boolean"):X.find(f=>f.id==="text")}),i=e.computed(()=>a.value?.id??"text"),s=X.map(x=>({label:x.label,value:x.id}));function u(x){const f=x.detail;return f!=null&&typeof f=="object"&&"value"in f?f.value:f!=null&&typeof f=="object"&&"checked"in f?f.checked:f}function r(x,f){n.updateField(o.pageIdx,o.fieldName,{[x]:f})}function h(x){if(!(!x||x===o.fieldName))try{n.renameField(o.pageIdx,o.fieldName,x)}catch(f){console.warn("[builder] rename failed:",f.message)}}function d(){n.selectPage(o.pageIdx)}function c(){n.duplicateField(o.pageIdx,o.fieldName)}function k(){n.removeField(o.pageIdx,o.fieldName)}const C=["label","required","helperText","placeholder","full","hidden","disabled","readOnly","visibleIf","enableIf","requiredIf"];function b(x){if(!x||x===i.value)return;const f=xt[x],B=f?f():{type:"String"},m={};for(const g of C)l.value[g]!==void 0&&(m[g]=l.value[g]);n.replaceFieldDef(o.pageIdx,o.fieldName,{...B,...m})}const N=e.computed(()=>Array.isArray(l.value.enum)?l.value.enum:[]);function A(x,f){const B=[...N.value];B[x]=f,r("enum",B)}function P(x){const f=N.value.filter((B,m)=>m!==x);r("enum",f.length?f:void 0)}function J(){const x=[...N.value,`Option ${N.value.length+1}`];r("enum",x)}const F=e.ref(null),z=e.ref(null);function w(x,f){x.dataTransfer&&(F.value=f,x.dataTransfer.setData("application/cobalt-option-move",String(f)),x.dataTransfer.effectAllowed="move")}function te(x,f){F.value!==null&&(x.preventDefault(),x.dataTransfer&&(x.dataTransfer.dropEffect="move"),z.value=f)}function Y(){z.value=null}function ne(x,f){x.preventDefault();const B=F.value;if(F.value=null,z.value=null,B===null||B===f)return;const m=[...N.value],[g]=m.splice(B,1),_=B<f?f-1:f;m.splice(_,0,g),r("enum",m)}function U(){F.value=null,z.value=null}const S=e.computed(()=>N.value.some(x=>String(x).trim().toLowerCase()==="other"));function $(){S.value?r("enum",N.value.filter(x=>String(x).trim().toLowerCase()!=="other")):r("enum",[...N.value,"Other"])}const R=e.ref(!1),G=X.filter(x=>["text","textarea","number","date","select","boolean","rating"].includes(x.id));function L(x){R.value=!1,n.insertFieldAfter(o.pageIdx,o.fieldName,x)}function V(){R.value=!1,n.insertFieldAfter(o.pageIdx,o.fieldName,"section")}const p=e.computed(()=>{switch(i.value){case"number":return"number";case"date":return"date";case"color":return"color";case"file":return"file";default:return"text"}});function v(x){if(x===""||x==null)return;const f=Number(x);return Number.isFinite(f)?f:void 0}const se=e.computed(()=>Number(l.value.min??0)),fe=e.computed(()=>Number(l.value.max??100)),ke=e.computed(()=>Number(l.value.step??1)),mt=e.computed(()=>se.value),Ze=e.computed(()=>Number(l.value.max??5));return(x,f)=>(e.openBlock(),e.createElementBlock("div",{class:"expanded-wrap",onClick:f[14]||(f[14]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",Oo,[e.createElementVNode("header",Ao,[e.createElementVNode("span",Po,[a.value?(e.openBlock(),e.createElementBlock("co-icon",{key:0,name:a.value.icon,size:"20"},null,8,Fo)):e.createCommentVNode("",!0)]),e.createElementVNode("div",$o,[e.createVNode(Me,{class:"expanded__label","model-value":l.value.label||"",placeholder:"Untitled field","onUpdate:modelValue":f[0]||(f[0]=B=>r("label",B))},null,8,["model-value"]),e.createElementVNode("div",Mo,[e.createVNode(Me,{class:"expanded__id","model-value":t.fieldName,placeholder:"field_id","onUpdate:modelValue":h},null,8,["model-value"]),f[15]||(f[15]=e.createElementVNode("span",{class:"expanded__sep"},"·",-1)),e.createElementVNode("span",null,e.toDisplayString(a.value?.label||"Field"),1)])]),e.createElementVNode("div",Ro,[e.createVNode(e.unref(E.CoSelect),{class:"expanded__type",options:JSON.stringify(e.unref(s)),value:i.value,onCoChange:f[1]||(f[1]=B=>b(u(B)))},null,8,["options","value"]),e.createVNode(e.unref(E.CoIconButton),{icon:"x",variant:"outlined",size:"sm",label:"Collapse",onClick:d})])]),e.createElementVNode("div",zo,[["text","textarea","number","date","color","file"].includes(i.value)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(E.CoInput),{label:"Placeholder",value:l.value.placeholder||"",onCoInput:f[2]||(f[2]=B=>r("placeholder",u(B)))},null,8,["value"]),e.createElementVNode("div",Lo,[f[16]||(f[16]=e.createElementVNode("div",{class:"expanded__preview-label"},"Preview",-1)),e.createVNode(e.unref(E.CoInput),{label:l.value.label,placeholder:l.value.placeholder,"helper-text":l.value.helperText,type:p.value,multiline:i.value==="textarea"||void 0,required:!!l.value.required,disabled:""},null,8,["label","placeholder","helper-text","type","multiline","required"])])],64)):i.value==="select"?(e.openBlock(),e.createElementBlock("div",jo,[f[20]||(f[20]=e.createElementVNode("div",{class:"expanded__options-label"},"Options",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,(B,m)=>(e.openBlock(),e.createElementBlock("div",{key:m,class:e.normalizeClass(["expanded__option",{"is-drop-target":z.value===m&&F.value!==m,"is-dragging":F.value===m}]),draggable:"true",onDragstart:g=>w(g,m),onDragover:g=>te(g,m),onDragleave:Y,onDrop:g=>ne(g,m),onDragend:U},[f[17]||(f[17]=e.createElementVNode("span",{class:"expanded__option-grip","aria-hidden":"true"},"⋮⋮",-1)),f[18]||(f[18]=e.createElementVNode("span",{class:"expanded__option-bullet","aria-hidden":"true"},null,-1)),e.createVNode(e.unref(E.CoInput),{class:"expanded__option-input",value:B,placeholder:`Option ${m+1}`,onCoInput:g=>A(m,u(g))},null,8,["value","placeholder","onCoInput"]),e.createVNode(e.unref(E.CoIconButton),{icon:"x",variant:"outlined",size:"xs",label:"Remove option",onClick:g=>P(m)},null,8,["onClick"])],42,Yo))),128)),e.createElementVNode("div",Uo,[e.createVNode(e.unref(E.CoButton),{label:"Add option",variant:"stroke",size:"s","icon-left":"plus",onClick:J}),e.createElementVNode("button",{class:e.normalizeClass(["expanded__other-toggle",{"is-active":S.value}]),onClick:$},[e.createElementVNode("co-icon",{name:S.value?"check-square":"square",size:"14"},null,8,Xo),f[19]||(f[19]=e.createElementVNode("span",null,'Add "Other (describe)"',-1))],2)])])):i.value==="boolean"?(e.openBlock(),e.createElementBlock("div",Ho,[f[21]||(f[21]=e.createElementVNode("div",{class:"expanded__preview-label"},"Preview",-1)),e.createVNode(e.unref(E.CoSwitch),{label:l.value.label||t.fieldName,"helper-text":l.value.helperText,disabled:""},null,8,["label","helper-text"])])):i.value==="rating"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("div",qo,[e.createVNode(e.unref(E.CoInput),{label:"Max stars",type:"number",value:String(Ze.value),onCoInput:f[3]||(f[3]=B=>r("max",v(u(B))??5))},null,8,["value"])]),e.createElementVNode("div",Jo,[f[22]||(f[22]=e.createElementVNode("div",{class:"expanded__preview-label"},"Preview",-1)),e.createVNode(e.unref(E.CoRating),{label:l.value.label||t.fieldName,max:Ze.value,value:0,"read-only":""},null,8,["label","max"])])],64)):i.value==="slider"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createElementVNode("div",Wo,[e.createVNode(e.unref(E.CoInput),{label:"Min",type:"number",value:String(se.value),onCoInput:f[4]||(f[4]=B=>r("min",v(u(B))??0))},null,8,["value"]),e.createVNode(e.unref(E.CoInput),{label:"Max",type:"number",value:String(fe.value),onCoInput:f[5]||(f[5]=B=>r("max",v(u(B))??100))},null,8,["value"]),e.createVNode(e.unref(E.CoInput),{label:"Step",type:"number",value:String(ke.value),onCoInput:f[6]||(f[6]=B=>r("step",v(u(B))??1))},null,8,["value"])]),e.createElementVNode("div",Go,[f[23]||(f[23]=e.createElementVNode("div",{class:"expanded__preview-label"},"Preview",-1)),e.createVNode(e.unref(E.CoSlider),{label:l.value.label||t.fieldName,min:se.value,max:fe.value,step:ke.value,value:mt.value,"show-value":"",disabled:""},null,8,["label","min","max","step","value"])])],64)):i.value==="ref"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:5},[e.createElementVNode("div",Zo,[e.createVNode(e.unref(E.CoInput),{label:"Model",placeholder:"Company, User, Deal…",value:l.value.ref||"",onCoInput:f[7]||(f[7]=B=>r("ref",u(B)))},null,8,["value"]),e.createVNode(e.unref(E.CoInput),{label:"Display field",placeholder:"name",value:l.value.displayName||"",onCoInput:f[8]||(f[8]=B=>r("displayName",u(B)))},null,8,["value"])]),e.createElementVNode("div",Qo,[f[24]||(f[24]=e.createElementVNode("div",{class:"expanded__preview-label"},"Preview",-1)),e.createVNode(e.unref(E.CoInput),{label:l.value.label||t.fieldName,placeholder:`Search ${l.value.ref||"model"}…`,"icon-left":"magnifying-glass",disabled:""},null,8,["label","placeholder"])])],64)):i.value==="section"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:6},[e.createVNode(e.unref(E.CoInput),{label:"Description",multiline:"",placeholder:"Optional explanatory text shown under the section title.",value:l.value.helperText||"",onCoInput:f[9]||(f[9]=B=>r("helperText",u(B)))},null,8,["value"]),e.createElementVNode("div",Ko,[f[25]||(f[25]=e.createElementVNode("div",{class:"expanded__preview-label"},"Preview",-1)),e.createElementVNode("div",el,[e.createElementVNode("h4",null,e.toDisplayString(l.value.label||"Section title"),1),l.value.helperText?(e.openBlock(),e.createElementBlock("p",tl,e.toDisplayString(l.value.helperText),1)):e.createCommentVNode("",!0)])])],64)):e.createCommentVNode("",!0),i.value!=="section"?(e.openBlock(),e.createBlock(e.unref(E.CoInput),{key:7,label:"Helper text",value:l.value.helperText||"",placeholder:"Optional helper / hint shown below the field",onCoInput:f[10]||(f[10]=B=>r("helperText",u(B)))},null,8,["value"])):e.createCommentVNode("",!0)]),e.createElementVNode("footer",nl,[e.createVNode(e.unref(E.CoSwitch),{checked:!!l.value.required,label:"Required",onCoChange:f[11]||(f[11]=B=>r("required",u(B)))},null,8,["checked"]),f[28]||(f[28]=e.createElementVNode("div",{class:"expanded__foot-spacer"},null,-1)),e.createElementVNode("button",{class:"expanded__foot-btn",onClick:c},[...f[26]||(f[26]=[e.createElementVNode("co-icon",{name:"copy",size:"14"},null,-1),e.createElementVNode("span",null,"Duplicate",-1)])]),e.createElementVNode("button",{class:"expanded__foot-btn expanded__foot-btn--danger",onClick:k},[...f[27]||(f[27]=[e.createElementVNode("co-icon",{name:"trash",size:"14"},null,-1),e.createElementVNode("span",null,"Delete",-1)])])])]),e.createElementVNode("aside",{class:e.normalizeClass(["mini-toolbar",{"is-open":R.value}])},[e.createElementVNode("button",{class:"mini-toolbar__btn",title:"Add field below",onClick:f[12]||(f[12]=e.withModifiers(B=>R.value=!R.value,["stop"]))},[...f[29]||(f[29]=[e.createElementVNode("co-icon",{name:"plus",size:"16"},null,-1)])]),e.createElementVNode("button",{class:"mini-toolbar__btn",title:"Add section below",onClick:V},[...f[30]||(f[30]=[e.createElementVNode("co-icon",{name:"minus",size:"16"},null,-1)])]),e.createElementVNode("button",{class:"mini-toolbar__btn",title:"Duplicate",onClick:c},[...f[31]||(f[31]=[e.createElementVNode("co-icon",{name:"copy",size:"16"},null,-1)])]),R.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mini-popover",onClick:f[13]||(f[13]=e.withModifiers(()=>{},["stop"]))},[f[32]||(f[32]=e.createElementVNode("div",{class:"mini-popover__label"},"Insert field below",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(G),B=>(e.openBlock(),e.createElementBlock("button",{key:B.id,class:"mini-popover__item",onClick:m=>L(B.id)},[e.createElementVNode("co-icon",{name:B.icon,size:"16"},null,8,ll),e.createElementVNode("span",null,e.toDisplayString(B.label),1)],8,ol))),128))])):e.createCommentVNode("",!0)],2)]))}}),rl=he(al,[["__scopeId","data-v-d1c82738"]]),il={class:"field__icon"},sl=["name"],ul={class:"field__body"},dl={class:"field__name"},cl={key:0,class:"field__chip field__chip--warn"},pl={key:1,class:"field__chip"},fl={key:2,class:"field__chip"},ml={class:"field__meta"},vl={class:"field__meta-id"},gl=e.defineComponent({__name:"FieldCard",props:{pageIdx:{},fieldIdx:{},fieldName:{}},setup(t){const o=t,n=Ve(),l=e.computed(()=>n.data.pages[o.pageIdx]),a=e.computed(()=>l.value?.fields[o.fieldName]??{}),i=e.computed(()=>n.selection.pageIdx===o.pageIdx&&n.selection.fieldName===o.fieldName),s=e.computed(()=>{const d=a.value;return d.uiCom==="TextArea"?X.find(c=>c.id==="textarea"):d.uiCom==="Rating"?X.find(c=>c.id==="rating"):d.uiCom==="Slider"?X.find(c=>c.id==="slider"):d.uiCom==="ColorPicker"?X.find(c=>c.id==="color"):d.uiCom==="Section"?X.find(c=>c.id==="section"):d.uiCom==="File"?X.find(c=>c.id==="file"):d.ref?X.find(c=>c.id==="ref"):Array.isArray(d.enum)?X.find(c=>c.id==="select"):d.type==="Number"?X.find(c=>c.id==="number"):d.type==="Date"?X.find(c=>c.id==="date"):d.type==="Boolean"?X.find(c=>c.id==="boolean"):X.find(c=>c.id==="text")});function u(){n.selectField(o.pageIdx,o.fieldName)}function r(d){d.stopPropagation(),n.duplicateField(o.pageIdx,o.fieldName)}function h(d){d.stopPropagation(),n.removeField(o.pageIdx,o.fieldName)}return(d,c)=>i.value?(e.openBlock(),e.createBlock(rl,{key:0,"page-idx":t.pageIdx,"field-name":t.fieldName},null,8,["page-idx","field-name"])):(e.openBlock(),e.createElementBlock("div",{key:1,class:"field",onClick:e.withModifiers(u,["stop"])},[c[4]||(c[4]=e.createElementVNode("span",{class:"field__grip","aria-hidden":"true"},"⋮⋮",-1)),e.createElementVNode("span",il,[s.value?(e.openBlock(),e.createElementBlock("co-icon",{key:0,name:s.value.icon,size:"18"},null,8,sl)):e.createCommentVNode("",!0)]),e.createElementVNode("div",ul,[e.createElementVNode("div",dl,[e.createTextVNode(e.toDisplayString(a.value.label||t.fieldName)+" ",1),a.value.required?(e.openBlock(),e.createElementBlock("span",cl,"required")):e.createCommentVNode("",!0),a.value.visibleIf?(e.openBlock(),e.createElementBlock("span",pl,"visibleIf")):e.createCommentVNode("",!0),a.value.full?(e.openBlock(),e.createElementBlock("span",fl,"full")):e.createCommentVNode("",!0)]),e.createElementVNode("div",ml,[e.createElementVNode("span",vl,e.toDisplayString(t.fieldName),1),c[1]||(c[1]=e.createElementVNode("span",{class:"field__meta-sep"},"·",-1)),e.createElementVNode("span",null,e.toDisplayString(s.value?.label||a.value.type||"String"),1)])]),e.createElementVNode("div",{class:"field__actions",onClick:c[0]||(c[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("button",{class:"field__action",title:"Duplicate",onClick:r},[...c[2]||(c[2]=[e.createElementVNode("co-icon",{name:"copy",size:"14"},null,-1)])]),e.createElementVNode("button",{class:"field__action field__action--danger",title:"Delete",onClick:h},[...c[3]||(c[3]=[e.createElementVNode("co-icon",{name:"trash",size:"14"},null,-1)])])])]))}}),hl=he(gl,[["__scopeId","data-v-aad445c0"]]),bl={class:"page__head"},yl={class:"page__head-text"},_l={class:"page__head-pill"},Cl=["disabled"],Nl={key:0,class:"page__empty"},El=e.defineComponent({__name:"PageCard",props:{pageIdx:{}},setup(t){const o=t,n=Ve(),l=e.computed(()=>n.data.pages[o.pageIdx]),a=e.computed(()=>n.selection.pageIdx===o.pageIdx&&n.selection.fieldName===null),i=e.computed({get:()=>l.value?Object.keys(l.value.fields):[],set:b=>n.reorderFieldsByNames(o.pageIdx,b)}),s=e.ref(!1);function u(){n.selectPage(o.pageIdx)}function r(b){b.stopPropagation(),n.duplicatePage(o.pageIdx)}function h(b){b.stopPropagation(),!(n.data.pages.length<=1)&&n.removePage(o.pageIdx)}function d(b){n.updatePage(o.pageIdx,b)}function c(b){b.dataTransfer&&Array.from(b.dataTransfer.types).includes("application/cobalt-field-kind")&&(b.preventDefault(),b.dataTransfer.dropEffect="copy",s.value=!0)}function k(b){b.currentTarget===b.target&&(s.value=!1)}function C(b){s.value=!1;const N=b.dataTransfer?.getData("application/cobalt-field-kind");N&&(b.preventDefault(),n.addField(N,o.pageIdx))}return(b,N)=>l.value?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass(["page",{"is-selected":a.value,"is-toolbox-drag":s.value}]),onClick:u},[e.createElementVNode("header",bl,[e.createElementVNode("div",yl,[e.createElementVNode("div",_l,"PAGE "+e.toDisplayString(t.pageIdx+1),1),e.createVNode(Me,{class:"page__title","model-value":l.value.title||"",placeholder:"Untitled page","onUpdate:modelValue":N[0]||(N[0]=A=>d({title:A}))},null,8,["model-value"]),e.createVNode(Me,{class:"page__desc","model-value":l.value.description||"",placeholder:"Add a description for this page (optional)","onUpdate:modelValue":N[1]||(N[1]=A=>d({description:A}))},null,8,["model-value"])]),e.createElementVNode("div",{class:"page__head-actions",onClick:N[2]||(N[2]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("button",{class:"page__action",title:"Duplicate page",onClick:r},[...N[4]||(N[4]=[e.createElementVNode("co-icon",{name:"copy",size:"14"},null,-1),e.createElementVNode("span",null,"Duplicate",-1)])]),e.createElementVNode("button",{class:"page__action page__action--danger",disabled:e.unref(n).data.pages.length<=1,title:"Delete page",onClick:h},[...N[5]||(N[5]=[e.createElementVNode("co-icon",{name:"trash",size:"14"},null,-1),e.createElementVNode("span",null,"Delete",-1)])],8,Cl)])]),e.createElementVNode("div",{class:"page__body",onDragover:c,onDragleave:k,onDrop:C},[e.createVNode(e.unref(Bo),{modelValue:i.value,"onUpdate:modelValue":N[3]||(N[3]=A=>i.value=A),class:"page__sortable",animation:140,"ghost-class":"page__ghost","chosen-class":"page__chosen","drag-class":"page__drag",handle:".field__grip"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(A,P)=>(e.openBlock(),e.createBlock(hl,{key:A,"page-idx":t.pageIdx,"field-idx":P,"field-name":A},null,8,["page-idx","field-idx","field-name"]))),128))]),_:1},8,["modelValue"]),i.value.length===0?(e.openBlock(),e.createElementBlock("div",Nl,[...N[6]||(N[6]=[e.createElementVNode("co-icon",{name:"plus",size:"20"},null,-1),e.createElementVNode("span",null,"Drag a field here or click one in the toolbox",-1)])])):e.createCommentVNode("",!0)],32)],2)):e.createCommentVNode("",!0)}}),kl=he(El,[["__scopeId","data-v-c2fa3971"]]),Sl={class:"canvas__pages"},xl=e.defineComponent({__name:"FieldCanvas",setup(t){const o=Ve(),n=e.computed(()=>ge.themeToStyles(o.resolvedTheme)),l=e.computed(()=>({...n.value.customProperties})),a=e.computed(()=>({...n.value.inlineStyles})),i=e.computed(()=>({"data-theme":n.value.modifiers.colorScheme,"data-appearance":n.value.modifiers.appearance,"data-density":n.value.modifiers.density,"data-radius":n.value.modifiers.radius,...n.value.modifiers.hideHeader?{"data-hide-header":""}:{}}));return(s,u)=>(e.openBlock(),e.createElementBlock("div",{class:"canvas",style:e.normalizeStyle(a.value)},[e.createElementVNode("div",e.mergeProps({class:"canvas__inner",style:l.value},i.value),[n.value.modifiers.hideHeader?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("header",{key:0,class:e.normalizeClass(["canvas__head",{"is-selected":e.unref(o).selection.kind==="form"}]),onClick:u[2]||(u[2]=e.withModifiers(r=>e.unref(o).selectForm(),["stop"]))},[e.createVNode(Me,{class:"canvas__title","model-value":e.unref(o).data.title,placeholder:"Untitled form","onUpdate:modelValue":u[0]||(u[0]=r=>e.unref(o).setTitle(r))},null,8,["model-value"]),e.createVNode(Me,{class:"canvas__desc","model-value":e.unref(o).data.description,placeholder:"Add a description (optional)","onUpdate:modelValue":u[1]||(u[1]=r=>e.unref(o).setDescription(r))},null,8,["model-value"])],2)),e.createElementVNode("div",Sl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o).data.pages,(r,h)=>(e.openBlock(),e.createBlock(kl,{key:e.unref(o).data.pages[h].name+"-"+h,"page-idx":h},null,8,["page-idx"]))),128))]),e.createElementVNode("button",{class:"canvas__add-page",onClick:u[3]||(u[3]=r=>e.unref(o).addPage())},[...u[4]||(u[4]=[e.createElementVNode("co-icon",{name:"plus",size:"14"},null,-1),e.createElementVNode("span",null,"Add page",-1)])])],16)],4))}}),wl=he(xl,[["__scopeId","data-v-c8380252"]]),Vl={class:"props"},Tl={class:"props__head"},Dl={class:"props__title"},Il={class:"props__subtitle"},Bl={class:"props__body"},Ol={class:"row"},Al={class:"seg"},Pl={class:"row"},Fl={class:"row__label"},$l={class:"row"},Ml={class:"accent"},Rl=["title","onClick"],zl={key:4,class:"row"},Ll=["value"],jl={class:"props__foot"},Yl={class:"props__body"},Ul={class:"props__body"},Xl=e.defineComponent({__name:"PropertiesPanel",setup(t){const o=[{id:"general",label:"General",icon:"gear"},{id:"header",label:"Header",icon:"image"},{id:"background",label:"Background",icon:"paint-bucket"},{id:"appearance",label:"Appearance",icon:"paint-brush"},{id:"advanced",label:"Advanced",icon:"code"}],n=[{id:"general",label:"General",icon:"gear"},{id:"logic",label:"Logic",icon:"git-branch"}],l=[{id:"layout",label:"Layout",icon:"layout"},{id:"logic",label:"Logic",icon:"git-branch"},{id:"validation",label:"Validation",icon:"shield-check"}],a=[{label:"Panels (default)",value:"panels"},{label:"Without panels",value:"flat"}],i=[{label:"Comfortable",value:"comfortable"},{label:"Compact",value:"compact"}],s=[{label:"Rounded",value:"rounded"},{label:"Sharp",value:"sharp"}],u=[{label:"Auto",value:"auto"},{label:"Contain",value:"contain"},{label:"Cover",value:"cover"}],r=[{label:"Scroll",value:"scroll"},{label:"Fixed",value:"fixed"}],h=[{label:"(none)",value:""},{label:"email",value:"email"},{label:"url",value:"url"},{label:"uuid",value:"uuid"}],d=[{id:"azul",label:"Azul",hex:ge.ACCENT_PRESET_HEX.azul},{id:"verde",label:"Verde",hex:ge.ACCENT_PRESET_HEX.verde},{id:"amarillo",label:"Amarillo",hex:ge.ACCENT_PRESET_HEX.amarillo},{id:"rosado",label:"Rosado",hex:ge.ACCENT_PRESET_HEX.rosado}],c=Ve(),k=e.computed(()=>c.selection.kind),C=e.computed(()=>c.currentPage),b=e.computed(()=>c.selectedField||{}),N=e.computed(()=>c.selection.fieldName??""),A=e.ref("general"),P=e.ref("general"),J=e.ref("layout");e.watch(k,V=>{V==="form"?A.value="general":V==="page"?P.value="general":V==="field"&&(J.value="layout")});const F=e.computed(()=>c.data.theme),z=e.computed(()=>c.resolvedTheme);function w(V){const p=V.detail;return p!=null&&typeof p=="object"&&"value"in p?p.value:p!=null&&typeof p=="object"&&"checked"in p?p.checked:p}function te(V){if(V===""||V==null)return;const p=Number(V);return Number.isFinite(p)?p:void 0}function Y(V,p){c.updateField(c.selection.pageIdx,N.value,{[V]:p})}function ne(V,p){c.updatePage(c.selection.pageIdx,{[V]:p})}function U(V,p){c.setTheme({[V]:p})}function S(V,p,v){c.setThemeSection(V,{[p]:v})}function $(V){U("accent",V)}function R(V){const p=V.trim();/^#[0-9a-fA-F]{3,8}$/.test(p)&&c.setTheme({accent:"custom",accentHex:p})}const G=e.computed(()=>k.value==="form"?"Form":k.value==="page"?"Page":"Field"),L=e.computed(()=>k.value==="form"?c.data.title||"Untitled form":k.value==="page"?C.value?.name??"":N.value);return(V,p)=>(e.openBlock(),e.createElementBlock("div",Vl,[e.createElementVNode("header",Tl,[e.createElementVNode("div",Dl,e.toDisplayString(G.value),1),e.createElementVNode("div",Il,e.toDisplayString(L.value),1)]),k.value==="form"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(E.CoTabGroup),{class:"props__tabs",value:A.value,onCoTabChange:p[0]||(p[0]=v=>A.value=w(v)||A.value)},{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,v=>e.createVNode(e.unref(E.CoTab),{key:v.id,label:v.label,value:v.id,"icon-left":v.icon,size:"small"},null,8,["label","value","icon-left"])),64))]),_:1},8,["value"]),e.createElementVNode("div",Bl,[A.value==="general"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",Ol,[p[39]||(p[39]=e.createElementVNode("div",{class:"row__label"},"Color scheme",-1)),e.createElementVNode("div",Al,[e.createElementVNode("button",{class:e.normalizeClass(["seg__btn",{"is-active":z.value.colorScheme==="light"}]),onClick:p[1]||(p[1]=v=>U("colorScheme","light"))},[...p[37]||(p[37]=[e.createElementVNode("co-icon",{name:"sun",size:"14"},null,-1),e.createElementVNode("span",null,"Light",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["seg__btn",{"is-active":z.value.colorScheme==="dark"}]),onClick:p[2]||(p[2]=v=>U("colorScheme","dark"))},[...p[38]||(p[38]=[e.createElementVNode("co-icon",{name:"moon",size:"14"},null,-1),e.createElementVNode("span",null,"Dark",-1)])],2)])]),e.createVNode(e.unref(E.CoSelect),{label:"Question appearance",options:JSON.stringify(a),value:z.value.questionAppearance,onCoChange:p[3]||(p[3]=v=>U("questionAppearance",w(v)))},null,8,["options","value"]),e.createVNode(e.unref(E.CoSelect),{label:"Density",options:JSON.stringify(i),value:z.value.density,onCoChange:p[4]||(p[4]=v=>U("density",w(v)))},null,8,["options","value"]),e.createVNode(e.unref(E.CoSelect),{label:"Border radius",options:JSON.stringify(s),value:z.value.borderRadius,onCoChange:p[5]||(p[5]=v=>U("borderRadius",w(v)))},null,8,["options","value"])],64)):e.createCommentVNode("",!0),A.value==="header"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(E.CoSwitch),{label:"Show header",checked:z.value.header.show,onCoChange:p[6]||(p[6]=v=>S("header","show",w(v)))},null,8,["checked"]),e.createVNode(e.unref(E.CoInput),{label:"Background color",placeholder:"#fff or rgb(...)",value:F.value.header?.backgroundColor||"",onCoInput:p[7]||(p[7]=v=>S("header","backgroundColor",w(v)||null))},null,8,["value"]),e.createVNode(e.unref(E.CoInput),{label:"Height",placeholder:"120px","helper-text":"Any CSS length. Leave empty for auto.",value:F.value.header?.height||"",onCoInput:p[8]||(p[8]=v=>S("header","height",w(v)||null))},null,8,["value"])],64)):e.createCommentVNode("",!0),A.value==="background"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createVNode(e.unref(E.CoInput),{label:"Background color",placeholder:"#F3F3F3",value:F.value.background?.color||"",onCoInput:p[9]||(p[9]=v=>S("background","color",w(v)||null))},null,8,["value"]),e.createVNode(e.unref(E.CoInput),{label:"Background image URL",placeholder:"https://…",value:F.value.background?.imageUrl||"",onCoInput:p[10]||(p[10]=v=>S("background","imageUrl",w(v)||null))},null,8,["value"]),e.createVNode(e.unref(E.CoSelect),{label:"Image size",options:JSON.stringify(u),value:z.value.background.imageSize,onCoChange:p[11]||(p[11]=v=>S("background","imageSize",w(v)))},null,8,["options","value"]),e.createVNode(e.unref(E.CoSelect),{label:"Image attachment",options:JSON.stringify(r),value:z.value.background.imageAttachment,onCoChange:p[12]||(p[12]=v=>S("background","imageAttachment",w(v)))},null,8,["options","value"]),e.createElementVNode("div",Pl,[e.createElementVNode("div",Fl,"Opacity ("+e.toDisplayString(z.value.background.opacity)+"%)",1),e.createVNode(e.unref(E.CoSlider),{min:0,max:100,step:5,value:z.value.background.opacity,"show-value":"",onCoChange:p[13]||(p[13]=v=>S("background","opacity",w(v)))},null,8,["value"])])],64)):e.createCommentVNode("",!0),A.value==="appearance"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("div",$l,[p[41]||(p[41]=e.createElementVNode("div",{class:"row__label"},"Accent",-1)),e.createElementVNode("div",Ml,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(d,v=>e.createElementVNode("button",{key:v.id,class:e.normalizeClass(["accent__chip",{"is-active":z.value.accent===v.id}]),style:e.normalizeStyle({"--accent":v.hex}),title:v.label,onClick:se=>$(v.id)},[p[40]||(p[40]=e.createElementVNode("span",{class:"accent__chip-dot"},null,-1)),e.createElementVNode("span",null,e.toDisplayString(v.label),1)],14,Rl)),64))])]),e.createVNode(e.unref(E.CoInput),{label:"Custom accent (hex)",placeholder:"#2563EB","helper-text":"Sets accent to Custom and overrides the primary.",value:z.value.accent==="custom"?z.value.accentHex:"",onCoChange:p[14]||(p[14]=v=>R(w(v)??""))},null,8,["value"]),e.createVNode(e.unref(E.CoInput),{label:"Font family",placeholder:"Inter, system-ui, sans-serif","helper-text":"CSS font stack. Empty = Geist (Cobalt default).",value:F.value.fontFamily||"",onCoInput:p[15]||(p[15]=v=>U("fontFamily",w(v)||void 0))},null,8,["value"])],64)):e.createCommentVNode("",!0),A.value==="advanced"?(e.openBlock(),e.createElementBlock("div",zl,[p[42]||(p[42]=e.createElementVNode("div",{class:"row__label"},"Custom CSS",-1)),e.createElementVNode("textarea",{class:"codebox",spellcheck:"false",rows:"14",placeholder:'.co-form-wizard [data-co-field="email"] co-input { ... }',value:F.value.customCss||"",onInput:p[16]||(p[16]=v=>U("customCss",v.target.value||void 0))},null,40,Ll),p[43]||(p[43]=e.createElementVNode("p",{class:"props__hint"},[e.createTextVNode(" Injected scoped to the form. Target fields via "),e.createElementVNode("code",null,'[data-co-field="name"]'),e.createTextVNode(" or "),e.createElementVNode("code",null,'[data-co-field-kind="select"]'),e.createTextVNode(". "),e.createElementVNode("code",null,"@import"),e.createTextVNode(", inline scripts and "),e.createElementVNode("code",null,"</style>"),e.createTextVNode(" are stripped. ")],-1))])):e.createCommentVNode("",!0)]),e.createElementVNode("footer",jl,[e.createVNode(e.unref(E.CoButton),{label:"Reset theme",variant:"stroke",size:"s","icon-left":"arrow-counter-clockwise",onClick:e.unref(c).resetTheme},null,8,["onClick"])])],64)):k.value==="page"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(E.CoTabGroup),{class:"props__tabs",value:P.value,onCoTabChange:p[17]||(p[17]=v=>P.value=w(v)||P.value)},{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,v=>e.createVNode(e.unref(E.CoTab),{key:v.id,label:v.label,value:v.id,"icon-left":v.icon,size:"small"},null,8,["label","value","icon-left"])),64))]),_:1},8,["value"]),e.createElementVNode("div",Yl,[P.value==="general"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(E.CoInput),{label:"Name (id)",value:C.value.name,"helper-text":"Used as the page key in the schema.",onCoInput:p[18]||(p[18]=v=>ne("name",w(v)))},null,8,["value"]),e.createVNode(e.unref(E.CoInput),{label:"Title",value:C.value.title||"","helper-text":"Also editable inline on the canvas.",onCoInput:p[19]||(p[19]=v=>ne("title",w(v)))},null,8,["value"]),e.createVNode(e.unref(E.CoSwitch),{label:"Show title in form",checked:!C.value.hideTitle,onCoChange:p[20]||(p[20]=v=>ne("hideTitle",w(v)?void 0:!0))},null,8,["checked"]),e.createVNode(e.unref(E.CoInput),{label:"Description",multiline:"",value:C.value.description||"",onCoInput:p[21]||(p[21]=v=>ne("description",w(v)))},null,8,["value"]),e.createVNode(e.unref(E.CoSwitch),{label:"Show description in form",checked:!C.value.hideDescription,onCoChange:p[22]||(p[22]=v=>ne("hideDescription",w(v)?void 0:!0))},null,8,["checked"])],64)):e.createCommentVNode("",!0),P.value==="logic"?(e.openBlock(),e.createBlock(e.unref(E.CoInput),{key:1,label:"visibleIf",placeholder:"{customerType} == 'premium'","helper-text":"Page hidden unless expression is truthy.",value:C.value.visibleIf||"",onCoInput:p[23]||(p[23]=v=>ne("visibleIf",w(v)||void 0))},null,8,["value"])):e.createCommentVNode("",!0)])],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createVNode(e.unref(E.CoTabGroup),{class:"props__tabs",value:J.value,onCoTabChange:p[24]||(p[24]=v=>J.value=w(v)||J.value)},{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,v=>e.createVNode(e.unref(E.CoTab),{key:v.id,label:v.label,value:v.id,"icon-left":v.icon,size:"small"},null,8,["label","value","icon-left"])),64))]),_:1},8,["value"]),e.createElementVNode("div",Ul,[J.value==="layout"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(E.CoCheckbox),{label:"Full width (span all columns)",checked:!!b.value.full,onCoChange:p[25]||(p[25]=v=>Y("full",w(v)))},null,8,["checked"]),e.createVNode(e.unref(E.CoCheckbox),{label:"Hidden",checked:!!b.value.hidden,onCoChange:p[26]||(p[26]=v=>Y("hidden",w(v)))},null,8,["checked"]),e.createVNode(e.unref(E.CoCheckbox),{label:"Disabled",checked:!!b.value.disabled||!!b.value.readOnly,onCoChange:p[27]||(p[27]=v=>Y("disabled",w(v)||void 0))},null,8,["checked"]),b.value.type==="String"?(e.openBlock(),e.createBlock(e.unref(E.CoSelect),{key:0,label:"Format",options:JSON.stringify(h),value:b.value.format||"",onCoChange:p[28]||(p[28]=v=>Y("format",w(v)||void 0))},null,8,["options","value"])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),J.value==="logic"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(E.CoInput),{label:"visibleIf",placeholder:"{type} == 'premium'",value:b.value.visibleIf||"",onCoInput:p[29]||(p[29]=v=>Y("visibleIf",w(v)||void 0))},null,8,["value"]),e.createVNode(e.unref(E.CoInput),{label:"enableIf",placeholder:"{accepted} == true",value:b.value.enableIf||"",onCoInput:p[30]||(p[30]=v=>Y("enableIf",w(v)||void 0))},null,8,["value"]),e.createVNode(e.unref(E.CoInput),{label:"requiredIf",placeholder:"{country} == 'US'",value:b.value.requiredIf||"",onCoInput:p[31]||(p[31]=v=>Y("requiredIf",w(v)||void 0))},null,8,["value"]),p[44]||(p[44]=e.createElementVNode("p",{class:"props__hint"},[e.createTextVNode(" Operators: "),e.createElementVNode("code",null,"== != > < >= <= contains && ||")],-1))],64)):e.createCommentVNode("",!0),J.value==="validation"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createVNode(e.unref(E.CoCheckbox),{label:"Required",checked:!!b.value.required,onCoChange:p[32]||(p[32]=v=>Y("required",w(v)))},null,8,["checked"]),b.value.type==="String"?(e.openBlock(),e.createBlock(e.unref(E.CoInput),{key:0,label:"Min length",type:"number",value:b.value.minLength??"",onCoInput:p[33]||(p[33]=v=>Y("minLength",te(w(v))))},null,8,["value"])):e.createCommentVNode("",!0),b.value.type==="String"?(e.openBlock(),e.createBlock(e.unref(E.CoInput),{key:1,label:"Max length",type:"number",value:b.value.maxLength??"",onCoInput:p[34]||(p[34]=v=>Y("maxLength",te(w(v))))},null,8,["value"])):e.createCommentVNode("",!0),b.value.type==="Number"?(e.openBlock(),e.createBlock(e.unref(E.CoInput),{key:2,label:"Min",type:"number",value:b.value.min??"",onCoInput:p[35]||(p[35]=v=>Y("min",te(w(v))))},null,8,["value"])):e.createCommentVNode("",!0),b.value.type==="Number"?(e.openBlock(),e.createBlock(e.unref(E.CoInput),{key:3,label:"Max",type:"number",value:b.value.max??"",onCoInput:p[36]||(p[36]=v=>Y("max",te(w(v))))},null,8,["value"])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)])],64))]))}}),Hl=he(Xl,[["__scopeId","data-v-eefaf8de"]]),ql={class:"designer"},Jl={class:"designer__panel designer__panel--left"},Wl={class:"designer__canvas"},Gl={class:"designer__panel designer__panel--right"},Zl=e.defineComponent({__name:"DesignerTab",setup(t){return(o,n)=>(e.openBlock(),e.createElementBlock("div",ql,[e.createElementVNode("aside",Jl,[e.createVNode($n)]),e.createElementVNode("section",Wl,[e.createVNode(wl)]),e.createElementVNode("aside",Gl,[e.createVNode(Hl)])]))}}),Ql=he(Zl,[["__scopeId","data-v-d8b2c553"]]),Kl={class:"json-tab"},ea={class:"json-tab__bar"},ta={key:0,class:"json-tab__err"},na=e.defineComponent({__name:"JsonTab",setup(t){const o=Ve(),n=e.ref(""),l=e.ref(null),a=e.computed(()=>JSON.stringify(o.exported,null,2));e.watch(a,u=>n.value=u,{immediate:!0});function i(){try{const u=JSON.parse(n.value);if(!u||typeof u!="object")throw new Error("Schema must be a JSON object");o.replaceAll(u),l.value=null}catch(u){l.value=u.message}}function s(){n.value=a.value,l.value=null}return(u,r)=>(e.openBlock(),e.createElementBlock("div",Kl,[e.createElementVNode("div",ea,[e.createVNode(e.unref(E.CoButton),{label:"Apply",variant:"primary",size:"s",onClick:i}),e.createVNode(e.unref(E.CoButton),{label:"Discard",variant:"stroke",size:"s",onClick:s}),l.value?(e.openBlock(),e.createElementBlock("span",ta,e.toDisplayString(l.value),1)):e.createCommentVNode("",!0),r[1]||(r[1]=e.createElementVNode("span",{class:"json-tab__hint"}," Plain editor — Monaco integration is a follow-up. ",-1))]),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":r[0]||(r[0]=h=>n.value=h),class:"json-tab__area",spellcheck:"false"},null,512),[[e.vModelText,n.value]])]))}}),oa=he(na,[["__scopeId","data-v-6f8a102d"]]),la={class:"preview"},aa={class:"preview__pane preview__pane--form"},ra=["schema","theme"],ia=["schema","theme"],sa={class:"preview__pane preview__pane--side"},ua={key:0,class:"preview__json"},da={key:1,class:"preview__empty"},ca=e.defineComponent({__name:"PreviewTab",setup(t){const o=Ve(),n=e.computed(()=>o.exported),l=e.computed(()=>ge.isPagedSchema(n.value)),a=e.computed(()=>JSON.stringify(n.value)),i=e.computed(()=>{const r=Object.keys(o.data.theme).length>0?JSON.stringify(o.data.theme):void 0;return console.log("[PreviewTab] themeJson →",r,"rawTheme:",o.data.theme,"isPaged:",l.value),r}),s=e.ref(null);function u(r){const h=r.detail;s.value=h?.values??null}return(r,h)=>(e.openBlock(),e.createElementBlock("div",la,[e.createElementVNode("div",aa,[l.value?(e.openBlock(),e.createElementBlock("co-form-wizard",{key:a.value+(i.value??""),schema:a.value,theme:i.value,layout:"grid",columns:"1","on:coSubmit":u},null,40,ra)):(e.openBlock(),e.createElementBlock("co-form",{key:a.value+(i.value??""),schema:a.value,theme:i.value,layout:"grid",columns:"2","on:coSubmit":u},null,40,ia))]),e.createElementVNode("aside",sa,[h[0]||(h[0]=e.createElementVNode("div",{class:"preview__pane-head"},[e.createElementVNode("h3",{class:"preview__title"},"Last submit"),e.createElementVNode("p",{class:"preview__desc"},"Fill the form and press Submit to see the payload.")],-1)),s.value?(e.openBlock(),e.createElementBlock("pre",ua,e.toDisplayString(JSON.stringify(s.value,null,2)),1)):(e.openBlock(),e.createElementBlock("div",da,"No submissions yet."))])]))}}),pa=he(ca,[["__scopeId","data-v-275d3bfc"]]),fa={class:"shell"},ma={class:"shell__topbar"},va={key:0,class:"shell__brand"},ga={class:"shell__brand-title"},ha={class:"shell__tabs"},ba=["onClick"],ya={class:"shell__actions"},_a={class:"shell__content"},Ca=e.defineComponent({__name:"CobaltFormBuilder",props:{modelValue:{default:()=>({})},tabs:{default:()=>["designer","preview","json"]},hideBrand:{type:Boolean,default:!1},brandLabel:{default:"Cobalt Form Builder"},skipCobaltRegister:{type:Boolean,default:!1}},emits:["update:modelValue","event","field-added","field-removed","field-renamed","field-updated","field-duplicated","field-reordered","page-added","page-removed","page-duplicated","page-updated","theme-changed","selection-changed","schema-replaced","undo","redo"],setup(t,{emit:o}){const n=t,l=o,a={designer:{label:"Designer"},preview:{label:"Preview"},json:{label:"JSON Editor"}},i=e.computed(()=>n.tabs.map(d=>({id:d,label:a[d].label}))),s=e.ref(n.tabs[0]??"designer");let u=!1;const r=wn({initialSchema:n.modelValue,onEvent:d=>{l("event",d),l(d.type,d)}});e.provide(tn,r),e.watch(()=>r.exported,d=>{u||l("update:modelValue",d)},{deep:!0}),e.watch(()=>n.modelValue,d=>{if(!d)return;const c=JSON.stringify(d),k=JSON.stringify(r.exported);c!==k&&(u=!0,r.replaceAll(d),u=!1)},{deep:!0}),e.onMounted(()=>{n.skipCobaltRegister||(kn.defineCustomElements(),Sn.defineCustomElements()),window.addEventListener("keydown",h)}),e.onBeforeUnmount(()=>{window.removeEventListener("keydown",h)});function h(d){if(d.key==="Escape"){const k=d.target;if(k?.isContentEditable||k?.tagName==="INPUT"||k?.tagName==="TEXTAREA"||k?.tagName==="SELECT"){k.blur();return}r.selection.fieldName!==null&&r.selectPage(r.selection.pageIdx);return}(d.metaKey||d.ctrlKey)&&(d.key==="z"&&!d.shiftKey?(d.preventDefault(),r.undo()):(d.key==="z"&&d.shiftKey||d.key==="y")&&(d.preventDefault(),r.redo()))}return(d,c)=>(e.openBlock(),e.createElementBlock("div",fa,[e.renderSlot(d.$slots,"before",{},void 0,!0),e.createElementVNode("header",ma,[e.renderSlot(d.$slots,"brand",{},()=>[t.hideBrand?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",va,[c[2]||(c[2]=e.createElementVNode("div",{class:"shell__brand-mark"},"CF",-1)),e.createElementVNode("h1",ga,e.toDisplayString(t.brandLabel),1)]))],!0),e.createElementVNode("nav",ha,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,k=>(e.openBlock(),e.createElementBlock("button",{key:k.id,class:e.normalizeClass(["shell__tab",{"is-active":s.value===k.id}]),onClick:C=>s.value=k.id},e.toDisplayString(k.label),11,ba))),128))]),e.createElementVNode("div",ya,[e.renderSlot(d.$slots,"actions",{store:e.unref(r)},()=>[e.createVNode(e.unref(E.CoIconButton),{icon:"arrow-counter-clockwise",variant:"outlined",size:"sm",label:"Undo (⌘Z)",disabled:!e.unref(r).canUndo,onClick:c[0]||(c[0]=k=>e.unref(r).undo())},null,8,["disabled"]),e.createVNode(e.unref(E.CoIconButton),{icon:"arrow-clockwise",variant:"outlined",size:"sm",label:"Redo (⌘⇧Z)",disabled:!e.unref(r).canRedo,onClick:c[1]||(c[1]=k=>e.unref(r).redo())},null,8,["disabled"])],!0)])]),e.createElementVNode("main",_a,[e.withDirectives(e.createVNode(Ql,null,null,512),[[e.vShow,s.value==="designer"]]),s.value==="preview"?(e.openBlock(),e.createBlock(pa,{key:0})):e.createCommentVNode("",!0),s.value==="json"?(e.openBlock(),e.createBlock(oa,{key:1})):e.createCommentVNode("",!0)]),e.renderSlot(d.$slots,"after",{store:e.unref(r)},void 0,!0)]))}}),Na=he(Ca,[["__scopeId","data-v-d5541509"]]);exports.CobaltFormBuilder=Na;
|
|
2
|
+
//# sourceMappingURL=cobalt-form-builder.cjs.map
|