@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 @@
|
|
|
1
|
+
{"version":3,"file":"cobalt-form-builder.js","sources":["../src/stores/schema.ts","../src/fieldCatalog.ts","../src/components/FieldToolbox.vue","../src/components/EditableText.vue","../../../node_modules/.pnpm/vue-draggable-plus@0.6.1_@types+sortablejs@1.15.9/node_modules/vue-draggable-plus/dist/vue-draggable-plus.js","../src/components/FieldCardExpanded.vue","../src/components/FieldCard.vue","../src/components/PageCard.vue","../src/components/FieldCanvas.vue","../src/components/PropertiesPanel.vue","../src/components/DesignerTab.vue","../src/components/JsonTab.vue","../src/components/PreviewTab.vue","../src/CobaltFormBuilder.vue"],"sourcesContent":["import { computed, inject, reactive, ref, type InjectionKey } from 'vue';\nimport {\n isPagedSchema,\n resolveTheme,\n toPagedSchema,\n type ThemeSpec,\n} from '@prolibu-suite/cobalt-form-core';\n\n/**\n * Internal model for the builder. We always work with the paged shape so\n * the UI can render pages as containers à la SurveyJS, even when the user\n * only has one page.\n */\ninterface BuilderPage {\n name: string;\n title?: string;\n description?: string;\n visibleIf?: string;\n hideTitle?: boolean;\n hideDescription?: boolean;\n fields: Record<string, any>;\n}\n\ninterface BuilderSchema {\n title: string;\n description: string;\n mode: 'form' | 'quiz' | 'survey';\n pages: BuilderPage[];\n theme: ThemeSpec;\n}\n\n/**\n * Selection has three scopes, each editing a different layer of the schema:\n * - `form` → global form-level settings (theme, title, mode).\n * - `page` → page-level (id, visibleIf, etc.). pageIdx points at it.\n * - `field` → field inside the current page. fieldName is the key.\n */\nexport interface Selection {\n kind: 'form' | 'page' | 'field';\n pageIdx: number;\n fieldName: string | null;\n}\n\n/**\n * Granular events the store emits on mutations. `CobaltFormBuilder` bridges\n * them to Vue emits so host apps can react to specific actions (e.g. track\n * analytics when a field is added).\n */\nexport type SchemaEvent =\n | { type: 'field-added'; pageIdx: number; fieldName: string; kind: string }\n | { type: 'field-removed'; pageIdx: number; fieldName: string }\n | { type: 'field-renamed'; pageIdx: number; oldName: string; newName: string }\n | { type: 'field-updated'; pageIdx: number; fieldName: string; patch: Record<string, any> }\n | { type: 'field-duplicated'; pageIdx: number; sourceName: string; newName: string }\n | { type: 'field-reordered'; pageIdx: number; order: string[] }\n | { type: 'page-added'; pageIdx: number }\n | { type: 'page-removed'; pageIdx: number }\n | { type: 'page-duplicated'; sourceIdx: number; newIdx: number }\n | { type: 'page-updated'; pageIdx: number; patch: Record<string, any> }\n | { type: 'theme-changed'; theme: ThemeSpec }\n | { type: 'selection-changed'; selection: Selection }\n | { type: 'schema-replaced' }\n | { type: 'undo' }\n | { type: 'redo' };\n\nconst HISTORY_LIMIT = 50;\n\nfunction blankSchema(): BuilderSchema {\n return {\n title: 'Untitled Form',\n description: '',\n mode: 'form',\n pages: [\n {\n name: 'page1',\n title: 'Page 1',\n description: '',\n fields: {\n name: { type: 'String', required: true, label: 'Nombre', full: true },\n email: { type: 'String', required: true, format: 'email', label: 'Email' },\n },\n },\n ],\n theme: {},\n };\n}\n\nexport const FIELD_DEFAULTS: Record<string, () => Record<string, any>> = {\n text: () => ({ type: 'String' }),\n textarea: () => ({ type: 'String', uiCom: 'TextArea' }),\n number: () => ({ type: 'Number' }),\n date: () => ({ type: 'Date' }),\n boolean: () => ({ type: 'Boolean' }),\n select: () => ({ type: 'String', enum: ['Option A', 'Option B'] }),\n ref: () => ({ type: 'ObjectId', ref: 'Company', displayName: 'name' }),\n rating: () => ({ type: 'Number', uiCom: 'Rating', max: 5 }),\n slider: () => ({ type: 'Number', uiCom: 'Slider', min: 0, max: 100 }),\n color: () => ({ type: 'String', uiCom: 'ColorPicker' }),\n section: () => ({ uiCom: 'Section' }),\n file: () => ({ type: 'String', uiCom: 'File' }),\n};\n\nfunction titleize(s: string): string {\n return s\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/_/g, ' ')\n .toLowerCase()\n .replace(/^./, (c) => c.toUpperCase());\n}\n\nfunction deepClone<T>(v: T): T {\n return JSON.parse(JSON.stringify(v));\n}\n\nexport interface SchemaStoreOptions {\n /** Schema to hydrate the builder with on creation. */\n initialSchema?: Record<string, any>;\n /** Bag of typed events the host can listen to (in addition to v-model). */\n onEvent?: (event: SchemaEvent) => void;\n}\n\n/**\n * Create an independent schema-store instance. Each `<CobaltFormBuilder>`\n * mounts its own store and provides it via `SCHEMA_STORE_KEY` so child\n * components inject it without sharing state across instances.\n *\n * Returned shape matches the public composable API the components used\n * before (data, selection, methods) — no Pinia involved.\n */\nexport function createSchemaStore(options: SchemaStoreOptions = {}) {\n const emit = options.onEvent ?? (() => {});\n\n const data = ref<BuilderSchema>(blankSchema());\n const selection = ref<Selection>({ kind: 'page', pageIdx: 0, fieldName: null });\n\n // Undo/redo: snapshots of the full schema before each mutation.\n const past = ref<BuilderSchema[]>([]);\n const future = ref<BuilderSchema[]>([]);\n\n const canUndo = computed(() => past.value.length > 0);\n const canRedo = computed(() => future.value.length > 0);\n\n // ── Selection helpers ────────────────────────────────────────────────────\n\n const currentPage = computed<BuilderPage | null>(\n () => data.value.pages[selection.value.pageIdx] ?? null,\n );\n\n const selectedField = computed(() => {\n const page = currentPage.value;\n const name = selection.value.fieldName;\n if (!page || !name) return null;\n return page.fields[name] ?? null;\n });\n\n function setSelection(next: Selection): void {\n selection.value = next;\n emit({ type: 'selection-changed', selection: next });\n }\n\n function selectField(pageIdx: number, fieldName: string | null): void {\n setSelection({\n kind: fieldName ? 'field' : 'page',\n pageIdx,\n fieldName,\n });\n }\n\n function selectPage(pageIdx: number): void {\n setSelection({ kind: 'page', pageIdx, fieldName: null });\n }\n\n /** Select the form itself (global scope — theme, mode, top-level config). */\n function selectForm(): void {\n setSelection({ ...selection.value, kind: 'form' });\n }\n\n // ── Undo/redo plumbing ───────────────────────────────────────────────────\n\n function snapshot(): void {\n past.value.push(deepClone(data.value));\n if (past.value.length > HISTORY_LIMIT) past.value.shift();\n future.value = [];\n }\n\n function undo(): void {\n const prev = past.value.pop();\n if (!prev) return;\n future.value.push(deepClone(data.value));\n data.value = prev;\n clampSelection();\n emit({ type: 'undo' });\n }\n\n function redo(): void {\n const next = future.value.pop();\n if (!next) return;\n past.value.push(deepClone(data.value));\n data.value = next;\n clampSelection();\n emit({ type: 'redo' });\n }\n\n function clampSelection(): void {\n const pi = Math.min(selection.value.pageIdx, data.value.pages.length - 1);\n const page = data.value.pages[pi];\n const fn =\n selection.value.fieldName && page?.fields[selection.value.fieldName]\n ? selection.value.fieldName\n : null;\n const kind =\n selection.value.kind === 'form'\n ? 'form'\n : fn\n ? 'field'\n : 'page';\n selection.value = { kind, pageIdx: Math.max(pi, 0), fieldName: fn };\n }\n\n // ── Survey-level mutations ──────────────────────────────────────────────\n\n function setTitle(title: string): void {\n if (title === data.value.title) return;\n snapshot();\n data.value.title = title;\n }\n\n function setDescription(description: string): void {\n if (description === data.value.description) return;\n snapshot();\n data.value.description = description;\n }\n\n function setMode(mode: BuilderSchema['mode']): void {\n if (mode === data.value.mode) return;\n snapshot();\n data.value.mode = mode;\n }\n\n // ── Page mutations ──────────────────────────────────────────────────────\n\n function addPage(): void {\n snapshot();\n const num = data.value.pages.length + 1;\n data.value.pages.push({\n name: `page${num}`,\n title: `Page ${num}`,\n description: '',\n fields: {},\n });\n const newIdx = data.value.pages.length - 1;\n selectPage(newIdx);\n emit({ type: 'page-added', pageIdx: newIdx });\n }\n\n function removePage(idx: number): void {\n if (data.value.pages.length <= 1) return;\n snapshot();\n data.value.pages.splice(idx, 1);\n clampSelection();\n emit({ type: 'page-removed', pageIdx: idx });\n }\n\n function duplicatePage(idx: number): void {\n const src = data.value.pages[idx];\n if (!src) return;\n snapshot();\n const copy = deepClone(src);\n copy.name = uniquePageName(`${src.name}_copy`);\n copy.title = `${src.title || src.name} (copy)`;\n data.value.pages.splice(idx + 1, 0, copy);\n const newIdx = idx + 1;\n selectPage(newIdx);\n emit({ type: 'page-duplicated', sourceIdx: idx, newIdx });\n }\n\n function updatePage(idx: number, patch: Partial<BuilderPage>): void {\n const page = data.value.pages[idx];\n if (!page) return;\n snapshot();\n Object.assign(page, patch);\n emit({ type: 'page-updated', pageIdx: idx, patch: patch as Record<string, any> });\n }\n\n function uniquePageName(base: string): string {\n const existing = new Set(data.value.pages.map((p) => p.name));\n if (!existing.has(base)) return base;\n let i = 1;\n while (existing.has(`${base}_${i}`)) i++;\n return `${base}_${i}`;\n }\n\n // ── Field mutations ─────────────────────────────────────────────────────\n\n function uniqueFieldName(pageIdx: number, base: string): string {\n const page = data.value.pages[pageIdx];\n if (!page) return base;\n let n = base;\n let i = 1;\n while (n in page.fields) n = `${base}_${i++}`;\n return n;\n }\n\n function addField(kind: string, pageIdx = selection.value.pageIdx): void {\n const page = data.value.pages[pageIdx];\n if (!page) return;\n const factory = FIELD_DEFAULTS[kind] ?? (() => ({ type: 'String' }));\n const def = factory();\n const name = uniqueFieldName(pageIdx, kind);\n if (name.startsWith('_')) throw new Error(`Reserved name \"${name}\"`);\n snapshot();\n page.fields = { ...page.fields, [name]: { ...def, label: titleize(name) } };\n selectField(pageIdx, name);\n emit({ type: 'field-added', pageIdx, fieldName: name, kind });\n }\n\n function insertFieldAfter(pageIdx: number, refName: string, kind: string): void {\n const page = data.value.pages[pageIdx];\n if (!page) return;\n const factory = FIELD_DEFAULTS[kind] ?? (() => ({ type: 'String' }));\n const def = factory();\n const name = uniqueFieldName(pageIdx, kind);\n if (name.startsWith('_')) throw new Error(`Reserved name \"${name}\"`);\n snapshot();\n\n const entries = Object.entries(page.fields);\n const refIdx = entries.findIndex(([n]) => n === refName);\n const newEntry: [string, any] = [name, { ...def, label: titleize(name) }];\n if (refIdx === -1) entries.push(newEntry);\n else entries.splice(refIdx + 1, 0, newEntry);\n\n page.fields = Object.fromEntries(entries);\n selectField(pageIdx, name);\n emit({ type: 'field-added', pageIdx, fieldName: name, kind });\n }\n\n function removeField(pageIdx: number, name: string): void {\n const page = data.value.pages[pageIdx];\n if (!page || !(name in page.fields)) return;\n snapshot();\n const next = { ...page.fields };\n delete next[name];\n page.fields = next;\n if (\n selection.value.pageIdx === pageIdx &&\n selection.value.fieldName === name\n ) {\n selection.value = { kind: 'page', pageIdx, fieldName: null };\n }\n emit({ type: 'field-removed', pageIdx, fieldName: name });\n }\n\n function duplicateField(pageIdx: number, name: string): void {\n const page = data.value.pages[pageIdx];\n if (!page || !(name in page.fields)) return;\n snapshot();\n const copy = deepClone(page.fields[name]);\n const newName = uniqueFieldName(pageIdx, `${name}_copy`);\n const next: Record<string, any> = {};\n for (const [k, v] of Object.entries(page.fields)) {\n next[k] = v;\n if (k === name) next[newName] = copy;\n }\n page.fields = next;\n selectField(pageIdx, newName);\n emit({ type: 'field-duplicated', pageIdx, sourceName: name, newName });\n }\n\n function updateField(pageIdx: number, name: string, patch: Record<string, any>): void {\n const page = data.value.pages[pageIdx];\n if (!page || !(name in page.fields)) return;\n snapshot();\n page.fields = {\n ...page.fields,\n [name]: { ...page.fields[name], ...patch },\n };\n emit({ type: 'field-updated', pageIdx, fieldName: name, patch });\n }\n\n function replaceFieldDef(pageIdx: number, name: string, newDef: Record<string, any>): void {\n const page = data.value.pages[pageIdx];\n if (!page || !(name in page.fields)) return;\n snapshot();\n page.fields = { ...page.fields, [name]: { ...newDef } };\n emit({ type: 'field-updated', pageIdx, fieldName: name, patch: newDef });\n }\n\n function renameField(pageIdx: number, oldName: string, newName: string): void {\n if (oldName === newName) return;\n const page = data.value.pages[pageIdx];\n if (!page || !(oldName in page.fields)) return;\n if (newName in page.fields) throw new Error(`Field \"${newName}\" already exists`);\n if (newName.startsWith('_')) throw new Error(`Reserved name \"${newName}\"`);\n snapshot();\n const next: Record<string, any> = {};\n for (const [k, v] of Object.entries(page.fields)) {\n next[k === oldName ? newName : k] = v;\n }\n page.fields = next;\n if (\n selection.value.pageIdx === pageIdx &&\n selection.value.fieldName === oldName\n ) {\n selection.value = { kind: 'field', pageIdx, fieldName: newName };\n }\n emit({ type: 'field-renamed', pageIdx, oldName, newName });\n }\n\n function moveField(pageIdx: number, fromIdx: number, toIdx: number): void {\n const page = data.value.pages[pageIdx];\n if (!page) return;\n const names = Object.keys(page.fields);\n if (fromIdx === toIdx || fromIdx < 0 || fromIdx >= names.length) return;\n if (toIdx < 0 || toIdx >= names.length) return;\n snapshot();\n const [moved] = names.splice(fromIdx, 1);\n names.splice(toIdx, 0, moved);\n const next: Record<string, any> = {};\n for (const n of names) next[n] = page.fields[n];\n page.fields = next;\n emit({ type: 'field-reordered', pageIdx, order: names });\n }\n\n function reorderFieldsByNames(pageIdx: number, names: string[]): void {\n const page = data.value.pages[pageIdx];\n if (!page) return;\n const existing = Object.keys(page.fields);\n if (names.length !== existing.length) return;\n for (const n of names) {\n if (!existing.includes(n)) return;\n }\n if (existing.every((n, i) => n === names[i])) return;\n snapshot();\n const next: Record<string, any> = {};\n for (const n of names) next[n] = page.fields[n];\n page.fields = next;\n emit({ type: 'field-reordered', pageIdx, order: names });\n }\n\n // ── Theme ───────────────────────────────────────────────────────────────\n\n const resolvedTheme = computed(() => resolveTheme(data.value.theme));\n\n function setTheme(patch: Partial<ThemeSpec>): void {\n snapshot();\n data.value.theme = { ...data.value.theme, ...patch };\n emit({ type: 'theme-changed', theme: data.value.theme });\n }\n\n function setThemeSection(section: 'background' | 'header', patch: Record<string, any>): void {\n snapshot();\n const current = (data.value.theme[section] ?? {}) as Record<string, any>;\n data.value.theme = {\n ...data.value.theme,\n [section]: { ...current, ...patch },\n };\n emit({ type: 'theme-changed', theme: data.value.theme });\n }\n\n function resetTheme(): void {\n snapshot();\n data.value.theme = {};\n emit({ type: 'theme-changed', theme: data.value.theme });\n }\n\n // ── Bulk replace (JSON tab, hydration from props) ───────────────────────\n\n function replaceAll(raw: any): void {\n snapshot();\n if (isPagedSchema(raw)) {\n const paged = toPagedSchema(raw);\n data.value = {\n title: raw.title || data.value.title,\n description: raw.description || '',\n mode: paged.mode || 'form',\n pages: paged.pages.map((p) => ({\n name: p.name,\n title: p.title,\n description: p.description,\n visibleIf: p.visibleIf,\n hideTitle: p.hideTitle,\n hideDescription: p.hideDescription,\n fields: p.fields,\n })),\n theme: paged.theme || {},\n };\n } else {\n data.value = {\n ...blankSchema(),\n pages: [{ name: 'page1', title: 'Page 1', description: '', fields: raw }],\n };\n }\n selection.value = { kind: 'page', pageIdx: 0, fieldName: null };\n emit({ type: 'schema-replaced' });\n }\n\n // ── Export ──────────────────────────────────────────────────────────────\n\n /** Canonical schema shape consumed by `<co-form-wizard>`. */\n const exported = computed<Record<string, any>>(() => {\n const hasTheme = Object.keys(data.value.theme).length > 0;\n if (data.value.pages.length === 1 && !hasTheme) {\n return data.value.pages[0].fields;\n }\n return {\n title: data.value.title,\n ...(data.value.description ? { description: data.value.description } : {}),\n mode: data.value.mode,\n pages: data.value.pages.map((p) => ({\n name: p.name,\n title: p.title,\n description: p.description,\n visibleIf: p.visibleIf,\n ...(p.hideTitle ? { hideTitle: true } : {}),\n ...(p.hideDescription ? { hideDescription: true } : {}),\n fields: p.fields,\n })),\n ...(hasTheme ? { theme: data.value.theme } : {}),\n };\n });\n\n // Optional initial hydration. We bypass snapshot so the user's initial\n // state isn't treated as a \"first edit\" they can undo back to nothing.\n if (options.initialSchema && Object.keys(options.initialSchema).length > 0) {\n if (isPagedSchema(options.initialSchema)) {\n const paged = toPagedSchema(options.initialSchema);\n data.value = {\n title: options.initialSchema.title || 'Untitled Form',\n description: options.initialSchema.description || '',\n mode: paged.mode || 'form',\n pages: paged.pages.map((p) => ({\n name: p.name,\n title: p.title,\n description: p.description,\n visibleIf: p.visibleIf,\n hideTitle: p.hideTitle,\n hideDescription: p.hideDescription,\n fields: p.fields,\n })),\n theme: paged.theme || {},\n };\n } else {\n data.value = {\n ...blankSchema(),\n pages: [{ name: 'page1', title: 'Page 1', description: '', fields: options.initialSchema }],\n };\n }\n }\n\n // `reactive()` wrap auto-unwraps the inner refs/computeds so consumers\n // access `store.selection.pageIdx` (no `.value`), matching the API\n // shape Pinia exposes via `defineStore` — keeps the existing component\n // call-sites working unchanged after the migration.\n return reactive({\n data,\n selection,\n currentPage,\n selectedField,\n canUndo,\n canRedo,\n exported,\n resolvedTheme,\n selectField,\n selectPage,\n selectForm,\n undo,\n redo,\n setTitle,\n setDescription,\n setMode,\n setTheme,\n setThemeSection,\n resetTheme,\n addPage,\n removePage,\n duplicatePage,\n updatePage,\n addField,\n insertFieldAfter,\n removeField,\n duplicateField,\n updateField,\n replaceFieldDef,\n renameField,\n moveField,\n reorderFieldsByNames,\n replaceAll,\n });\n}\n\nexport type SchemaStore = ReturnType<typeof createSchemaStore>;\n\nexport const SCHEMA_STORE_KEY: InjectionKey<SchemaStore> = Symbol(\n 'CobaltFormBuilder.schemaStore',\n);\n\n/**\n * Inject the schema store provided by an ancestor `<CobaltFormBuilder>`.\n * Throws if called outside one — that's almost always a bug worth surfacing\n * loudly rather than silently returning an unrelated singleton.\n */\nexport function useSchemaStore(): SchemaStore {\n const store = inject(SCHEMA_STORE_KEY);\n if (!store) {\n throw new Error(\n '[cobalt-form-builder] useSchemaStore() must be called inside a <CobaltFormBuilder>. ' +\n 'Make sure the component lives in the builder subtree, or call createSchemaStore() ' +\n 'and provide it yourself.',\n );\n }\n return store;\n}\n","/**\n * Catalog of field types the builder can insert. Each entry pairs a Cobalt\n * FieldKind (or composite `uiCom`) with a human label, group, search aliases,\n * and a Phosphor icon name rendered by <co-icon>.\n */\n\nexport interface FieldCatalogEntry {\n id: string;\n label: string;\n group: 'inputs' | 'choices' | 'advanced' | 'layout';\n /** Extra terms the search matches against. */\n aliases?: string[];\n /** Phosphor icon name (used by <co-icon name=\"...\" />). */\n icon: string;\n}\n\nexport const FIELD_CATALOG: FieldCatalogEntry[] = [\n // Inputs\n { id: 'text', label: 'Single-line input', group: 'inputs', aliases: ['text', 'string'], icon: 'text-aa' },\n { id: 'textarea', label: 'Multi-line text', group: 'inputs', aliases: ['textarea', 'comment'], icon: 'text-align-left' },\n { id: 'number', label: 'Number', group: 'inputs', aliases: ['integer', 'numeric'], icon: 'hash' },\n { id: 'date', label: 'Date', group: 'inputs', aliases: ['calendar'], icon: 'calendar' },\n\n // Choices\n { id: 'boolean', label: 'Yes / No', group: 'choices', aliases: ['switch', 'toggle'], icon: 'toggle-left' },\n { id: 'select', label: 'Dropdown', group: 'choices', aliases: ['dropdown', 'enum'], icon: 'caret-circle-down' },\n { id: 'ref', label: 'Reference', group: 'choices', aliases: ['lookup', 'model'], icon: 'link' },\n\n // Advanced\n { id: 'rating', label: 'Rating scale', group: 'advanced', aliases: ['stars', 'score'], icon: 'star' },\n { id: 'slider', label: 'Slider', group: 'advanced', aliases: ['range'], icon: 'sliders-horizontal' },\n { id: 'color', label: 'Color picker', group: 'advanced', aliases: ['hex', 'palette'], icon: 'palette' },\n { id: 'file', label: 'File upload', group: 'advanced', aliases: ['attachment'], icon: 'paperclip' },\n\n // Layout\n { id: 'section', label: 'Section divider', group: 'layout', aliases: ['header', 'group'], icon: 'minus' },\n];\n\nexport const GROUP_LABELS: Record<FieldCatalogEntry['group'], string> = {\n inputs: 'Inputs',\n choices: 'Choices',\n advanced: 'Advanced',\n layout: 'Layout',\n};\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { CoInput, CoListItem } from '@prolibu-suite/cobalt-vue';\nimport { useSchemaStore } from '../stores/schema';\nimport { FIELD_CATALOG, GROUP_LABELS, type FieldCatalogEntry } from '../fieldCatalog';\n\nconst schema = useSchemaStore();\nconst query = ref('');\n\ninterface Group {\n id: FieldCatalogEntry['group'];\n label: string;\n items: FieldCatalogEntry[];\n}\n\nconst groups = computed<Group[]>(() => {\n const q = query.value.trim().toLowerCase();\n const filtered = q\n ? FIELD_CATALOG.filter((f) => {\n if (f.label.toLowerCase().includes(q)) return true;\n if (f.id.toLowerCase().includes(q)) return true;\n return (f.aliases || []).some((a) => a.toLowerCase().includes(q));\n })\n : FIELD_CATALOG;\n\n const byGroup: Record<string, Group> = {};\n for (const item of filtered) {\n if (!byGroup[item.group]) {\n byGroup[item.group] = {\n id: item.group,\n label: GROUP_LABELS[item.group],\n items: [],\n };\n }\n byGroup[item.group].items.push(item);\n }\n return Object.values(byGroup);\n});\n\nfunction onDragStart(ev: DragEvent, kind: string): void {\n if (!ev.dataTransfer) return;\n ev.dataTransfer.setData('application/cobalt-field-kind', kind);\n ev.dataTransfer.effectAllowed = 'copy';\n}\n\nfunction onSelect(kind: string): void {\n schema.addField(kind);\n}\n\nfunction detailValue(ev: CustomEvent): any {\n const d = ev.detail;\n if (d != null && typeof d === 'object' && 'value' in d) return (d as any).value;\n return d;\n}\n</script>\n\n<template>\n <div class=\"toolbox\">\n <!-- Form-level entry: opens theme settings in the right panel. -->\n <button\n class=\"toolbox__form-btn\"\n :class=\"{ 'is-active': schema.selection.kind === 'form' }\"\n @click=\"schema.selectForm()\"\n >\n <span class=\"toolbox__form-btn-icon\">\n <co-icon name=\"paint-brush\" size=\"16\" />\n </span>\n <span class=\"toolbox__form-btn-body\">\n <span class=\"toolbox__form-btn-label\">Theme</span>\n <span class=\"toolbox__form-btn-sub\">Global form settings</span>\n </span>\n <co-icon name=\"caret-right\" size=\"14\" />\n </button>\n\n <div class=\"toolbox__search\">\n <CoInput\n placeholder=\"Type to search…\"\n icon-left=\"magnifying-glass\"\n :value=\"query\"\n @coInput=\"query = detailValue($event) ?? ''\"\n />\n </div>\n\n <div class=\"toolbox__scroll\">\n <div v-if=\"groups.length === 0\" class=\"toolbox__empty\">\n No matches for \"{{ query }}\"\n </div>\n\n <div v-for=\"g in groups\" :key=\"g.id\" class=\"toolbox__group\">\n <div class=\"toolbox__group-label\">{{ g.label }}</div>\n <ul class=\"toolbox__list\">\n <li\n v-for=\"item in g.items\"\n :key=\"item.id\"\n draggable=\"true\"\n class=\"toolbox__row\"\n @dragstart=\"onDragStart($event, item.id)\"\n >\n <CoListItem\n :label=\"item.label\"\n :icon=\"item.icon\"\n dense\n @coSelect=\"onSelect(item.id)\"\n />\n </li>\n </ul>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.toolbox {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n/* Form-level entry (global theme settings). Visually distinct from the\n * field types below so users immediately recognize it as a different\n * scope rather than another draggable widget. */\n.toolbox__form-btn {\n display: flex;\n align-items: center;\n gap: var(--co-spacing-sm, 10px);\n width: 100%;\n padding: var(--co-spacing-md, 12px) var(--co-spacing-lg, 16px);\n border: 0;\n background: transparent;\n border-bottom: 1px solid var(--fb-border);\n text-align: left;\n transition: background 120ms;\n color: var(--co-semantic-text-default, #111827);\n}\n\n.toolbox__form-btn:hover {\n background: var(--fb-bg);\n}\n\n.toolbox__form-btn.is-active {\n background: color-mix(in srgb, var(--co-color-primary-azul) 8%, transparent);\n color: var(--co-color-primary-azul, #2563eb);\n}\n\n.toolbox__form-btn-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--co-border-radius-xs, 8px);\n background: color-mix(in srgb, var(--co-color-primary-azul) 10%, transparent);\n color: var(--co-color-primary-azul, #2563eb);\n flex-shrink: 0;\n}\n\n.toolbox__form-btn-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.toolbox__form-btn-label {\n font-size: var(--co-font-size-13, 13px);\n font-weight: 600;\n line-height: 1.3;\n}\n\n.toolbox__form-btn-sub {\n font-size: var(--co-font-size-11, 11px);\n color: var(--co-semantic-text-secondary, #6b7280);\n margin-top: 1px;\n}\n\n.toolbox__form-btn.is-active .toolbox__form-btn-sub {\n color: color-mix(in srgb, var(--co-color-primary-azul) 70%, var(--co-semantic-text-secondary, #6b7280));\n}\n\n.toolbox__search {\n padding: var(--co-spacing-lg, 16px) var(--co-spacing-lg, 16px) var(--co-spacing-md, 12px);\n border-bottom: 1px solid var(--fb-border);\n}\n\n.toolbox__scroll {\n flex: 1;\n overflow-y: auto;\n padding: var(--co-spacing-sm, 8px) 0;\n}\n\n.toolbox__empty {\n padding: var(--co-spacing-2xl, 24px) var(--co-spacing-lg, 16px);\n text-align: center;\n font-size: var(--co-font-size-12, 12px);\n color: var(--co-semantic-text-secondary, #6b7280);\n}\n\n.toolbox__group {\n padding: var(--co-spacing-sm, 10px) 0;\n}\n\n.toolbox__group + .toolbox__group {\n border-top: 1px solid var(--fb-border);\n margin-top: var(--co-spacing-xs, 4px);\n padding-top: var(--co-spacing-md, 14px);\n}\n\n.toolbox__group-label {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--co-semantic-text-muted, #9ca3af);\n padding: 0 var(--co-spacing-lg, 16px) var(--co-spacing-xs, 6px);\n}\n\n.toolbox__list {\n list-style: none;\n padding: 0 var(--co-spacing-xs, 6px);\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n/* `co-list-item` brings its own padding/hover. We only add the\n * draggable affordance and let the rounded corners settle on the row. */\n.toolbox__row {\n cursor: grab;\n border-radius: var(--co-border-radius-xs, 8px);\n transition: background 100ms;\n}\n\n.toolbox__row:hover {\n background: var(--fb-bg);\n}\n\n.toolbox__row:active { cursor: grabbing; }\n</style>\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\n\n/**\n * Inline-editable text. Click to focus, blur or Enter to commit.\n *\n * We use contenteditable on a span so layout doesn't shift between\n * read/edit modes — switching to an <input> would jump the row height.\n */\nconst props = defineProps<{\n modelValue: string;\n placeholder?: string;\n multiline?: boolean;\n}>();\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string];\n}>();\n\nconst el = ref<HTMLElement | null>(null);\nconst focused = ref(false);\n\n// Reflect external changes into the DOM when not actively editing.\nwatch(\n () => props.modelValue,\n (v) => {\n if (focused.value) return;\n if (el.value && el.value.innerText !== v) {\n el.value.innerText = v;\n }\n },\n { immediate: false },\n);\n\nfunction onInput(): void {\n // Nothing here — we batch the emit until blur. Saves snapshots in the\n // undo stack per word rather than per keystroke.\n}\n\nfunction commit(): void {\n if (!el.value) return;\n const raw = el.value.innerText.replace(/\\n+$/, '');\n if (raw === props.modelValue) return;\n emit('update:modelValue', raw);\n}\n\nfunction onBlur(): void {\n focused.value = false;\n commit();\n}\n\nfunction onFocus(): void {\n focused.value = true;\n}\n\nfunction onKeydown(ev: KeyboardEvent): void {\n if (!props.multiline && ev.key === 'Enter') {\n ev.preventDefault();\n (ev.target as HTMLElement).blur();\n } else if (ev.key === 'Escape') {\n if (el.value) el.value.innerText = props.modelValue;\n (ev.target as HTMLElement).blur();\n }\n}\n</script>\n\n<template>\n <span\n ref=\"el\"\n class=\"editable\"\n :class=\"{ 'is-empty': !modelValue }\"\n :data-placeholder=\"placeholder\"\n contenteditable=\"plaintext-only\"\n spellcheck=\"false\"\n @input=\"onInput\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @keydown=\"onKeydown\"\n >{{ modelValue }}</span>\n</template>\n\n<style scoped>\n.editable {\n display: inline-block;\n min-width: 1px;\n outline: none;\n border-radius: var(--co-border-radius-xxs, 4px);\n padding: 0 var(--co-spacing-xxs, 2px);\n cursor: text;\n}\n\n.editable:hover {\n background: var(--co-semantic-surface-hover, #f3f4f6);\n}\n\n.editable:focus {\n background: var(--co-semantic-surface-hover, #f3f4f6);\n box-shadow: 0 0 0 2px var(--co-color-primary-azul, #2563eb);\n}\n\n.editable.is-empty::before {\n content: attr(data-placeholder);\n color: var(--co-semantic-text-muted, #9ca3af);\n pointer-events: none;\n}\n</style>\n","var an = Object.defineProperty;\nvar Pe = Object.getOwnPropertySymbols;\nvar yt = Object.prototype.hasOwnProperty, wt = Object.prototype.propertyIsEnumerable;\nvar bt = (t, e, n) => e in t ? an(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n, fe = (t, e) => {\n for (var n in e || (e = {}))\n yt.call(e, n) && bt(t, n, e[n]);\n if (Pe)\n for (var n of Pe(e))\n wt.call(e, n) && bt(t, n, e[n]);\n return t;\n};\nvar $e = (t, e) => {\n var n = {};\n for (var o in t)\n yt.call(t, o) && e.indexOf(o) < 0 && (n[o] = t[o]);\n if (t != null && Pe)\n for (var o of Pe(t))\n e.indexOf(o) < 0 && wt.call(t, o) && (n[o] = t[o]);\n return n;\n};\nimport { getCurrentInstance as dt, unref as U, watch as ln, onUnmounted as sn, onMounted as un, nextTick as kt, isRef as qe, defineComponent as cn, computed as Et, toRefs as fn, ref as dn, reactive as hn, h as pn, isProxy as gn } from \"vue\";\nconst Ht = \"[vue-draggable-plus]: \";\nfunction mn(t) {\n console.warn(Ht + t);\n}\nfunction vn(t) {\n console.error(Ht + t);\n}\nfunction St(t, e, n) {\n return n >= 0 && n < t.length && t.splice(n, 0, t.splice(e, 1)[0]), t;\n}\nfunction bn(t) {\n return t.replace(/-(\\w)/g, (e, n) => n ? n.toUpperCase() : \"\");\n}\nfunction yn(t) {\n return Object.keys(t).reduce((e, n) => (typeof t[n] != \"undefined\" && (e[bn(n)] = t[n]), e), {});\n}\nfunction Dt(t, e) {\n return Array.isArray(t) && t.splice(e, 1), t;\n}\nfunction _t(t, e, n) {\n return Array.isArray(t) && t.splice(e, 0, n), t;\n}\nfunction wn(t) {\n return typeof t == \"undefined\";\n}\nfunction En(t) {\n return typeof t == \"string\";\n}\nfunction Tt(t, e, n) {\n const o = t.children[n];\n t.insertBefore(e, o);\n}\nfunction Ke(t) {\n t.parentNode && t.parentNode.removeChild(t);\n}\nfunction Sn(t, e = document) {\n var o;\n let n = null;\n return typeof (e == null ? void 0 : e.querySelector) == \"function\" ? n = (o = e == null ? void 0 : e.querySelector) == null ? void 0 : o.call(e, t) : n = document.querySelector(t), n || mn(`Element not found: ${t}`), n;\n}\nfunction Dn(t, e, n = null) {\n return function(...o) {\n return t.apply(n, o), e.apply(n, o);\n };\n}\nfunction _n(t, e) {\n const n = fe({}, t);\n return Object.keys(e).forEach((o) => {\n n[o] ? n[o] = Dn(t[o], e[o]) : n[o] = e[o];\n }), n;\n}\nfunction Tn(t) {\n return t instanceof HTMLElement;\n}\nfunction Ct(t, e) {\n Object.keys(t).forEach((n) => {\n e(n, t[n]);\n });\n}\nfunction Cn(t) {\n return t.charCodeAt(0) === 111 && t.charCodeAt(1) === 110 && (t.charCodeAt(2) > 122 || t.charCodeAt(2) < 97);\n}\nconst On = Object.assign;\n/**!\n * Sortable 1.15.2\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction Ot(t, e) {\n var n = Object.keys(t);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(t);\n e && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(t, r).enumerable;\n })), n.push.apply(n, o);\n }\n return n;\n}\nfunction ne(t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = arguments[e] != null ? arguments[e] : {};\n e % 2 ? Ot(Object(n), !0).forEach(function(o) {\n In(t, o, n[o]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : Ot(Object(n)).forEach(function(o) {\n Object.defineProperty(t, o, Object.getOwnPropertyDescriptor(n, o));\n });\n }\n return t;\n}\nfunction Ye(t) {\n \"@babel/helpers - typeof\";\n return typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? Ye = function(e) {\n return typeof e;\n } : Ye = function(e) {\n return e && typeof Symbol == \"function\" && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, Ye(t);\n}\nfunction In(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n}\nfunction ie() {\n return ie = Object.assign || function(t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = arguments[e];\n for (var o in n)\n Object.prototype.hasOwnProperty.call(n, o) && (t[o] = n[o]);\n }\n return t;\n }, ie.apply(this, arguments);\n}\nfunction An(t, e) {\n if (t == null)\n return {};\n var n = {}, o = Object.keys(t), r, i;\n for (i = 0; i < o.length; i++)\n r = o[i], !(e.indexOf(r) >= 0) && (n[r] = t[r]);\n return n;\n}\nfunction xn(t, e) {\n if (t == null)\n return {};\n var n = An(t, e), o, r;\n if (Object.getOwnPropertySymbols) {\n var i = Object.getOwnPropertySymbols(t);\n for (r = 0; r < i.length; r++)\n o = i[r], !(e.indexOf(o) >= 0) && Object.prototype.propertyIsEnumerable.call(t, o) && (n[o] = t[o]);\n }\n return n;\n}\nvar Nn = \"1.15.2\";\nfunction re(t) {\n if (typeof window != \"undefined\" && window.navigator)\n return !!/* @__PURE__ */ navigator.userAgent.match(t);\n}\nvar ae = re(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i), xe = re(/Edge/i), It = re(/firefox/i), Te = re(/safari/i) && !re(/chrome/i) && !re(/android/i), Lt = re(/iP(ad|od|hone)/i), Wt = re(/chrome/i) && re(/android/i), Gt = {\n capture: !1,\n passive: !1\n};\nfunction S(t, e, n) {\n t.addEventListener(e, n, !ae && Gt);\n}\nfunction E(t, e, n) {\n t.removeEventListener(e, n, !ae && Gt);\n}\nfunction We(t, e) {\n if (e) {\n if (e[0] === \">\" && (e = e.substring(1)), t)\n try {\n if (t.matches)\n return t.matches(e);\n if (t.msMatchesSelector)\n return t.msMatchesSelector(e);\n if (t.webkitMatchesSelector)\n return t.webkitMatchesSelector(e);\n } catch (n) {\n return !1;\n }\n return !1;\n }\n}\nfunction Pn(t) {\n return t.host && t !== document && t.host.nodeType ? t.host : t.parentNode;\n}\nfunction Q(t, e, n, o) {\n if (t) {\n n = n || document;\n do {\n if (e != null && (e[0] === \">\" ? t.parentNode === n && We(t, e) : We(t, e)) || o && t === n)\n return t;\n if (t === n)\n break;\n } while (t = Pn(t));\n }\n return null;\n}\nvar At = /\\s+/g;\nfunction V(t, e, n) {\n if (t && e)\n if (t.classList)\n t.classList[n ? \"add\" : \"remove\"](e);\n else {\n var o = (\" \" + t.className + \" \").replace(At, \" \").replace(\" \" + e + \" \", \" \");\n t.className = (o + (n ? \" \" + e : \"\")).replace(At, \" \");\n }\n}\nfunction h(t, e, n) {\n var o = t && t.style;\n if (o) {\n if (n === void 0)\n return document.defaultView && document.defaultView.getComputedStyle ? n = document.defaultView.getComputedStyle(t, \"\") : t.currentStyle && (n = t.currentStyle), e === void 0 ? n : n[e];\n !(e in o) && e.indexOf(\"webkit\") === -1 && (e = \"-webkit-\" + e), o[e] = n + (typeof n == \"string\" ? \"\" : \"px\");\n }\n}\nfunction ye(t, e) {\n var n = \"\";\n if (typeof t == \"string\")\n n = t;\n else\n do {\n var o = h(t, \"transform\");\n o && o !== \"none\" && (n = o + \" \" + n);\n } while (!e && (t = t.parentNode));\n var r = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n return r && new r(n);\n}\nfunction jt(t, e, n) {\n if (t) {\n var o = t.getElementsByTagName(e), r = 0, i = o.length;\n if (n)\n for (; r < i; r++)\n n(o[r], r);\n return o;\n }\n return [];\n}\nfunction te() {\n var t = document.scrollingElement;\n return t || document.documentElement;\n}\nfunction P(t, e, n, o, r) {\n if (!(!t.getBoundingClientRect && t !== window)) {\n var i, a, l, s, u, d, f;\n if (t !== window && t.parentNode && t !== te() ? (i = t.getBoundingClientRect(), a = i.top, l = i.left, s = i.bottom, u = i.right, d = i.height, f = i.width) : (a = 0, l = 0, s = window.innerHeight, u = window.innerWidth, d = window.innerHeight, f = window.innerWidth), (e || n) && t !== window && (r = r || t.parentNode, !ae))\n do\n if (r && r.getBoundingClientRect && (h(r, \"transform\") !== \"none\" || n && h(r, \"position\") !== \"static\")) {\n var m = r.getBoundingClientRect();\n a -= m.top + parseInt(h(r, \"border-top-width\")), l -= m.left + parseInt(h(r, \"border-left-width\")), s = a + i.height, u = l + i.width;\n break;\n }\n while (r = r.parentNode);\n if (o && t !== window) {\n var y = ye(r || t), b = y && y.a, w = y && y.d;\n y && (a /= w, l /= b, f /= b, d /= w, s = a + d, u = l + f);\n }\n return {\n top: a,\n left: l,\n bottom: s,\n right: u,\n width: f,\n height: d\n };\n }\n}\nfunction xt(t, e, n) {\n for (var o = ce(t, !0), r = P(t)[e]; o; ) {\n var i = P(o)[n], a = void 0;\n if (a = r >= i, !a)\n return o;\n if (o === te())\n break;\n o = ce(o, !1);\n }\n return !1;\n}\nfunction we(t, e, n, o) {\n for (var r = 0, i = 0, a = t.children; i < a.length; ) {\n if (a[i].style.display !== \"none\" && a[i] !== p.ghost && (o || a[i] !== p.dragged) && Q(a[i], n.draggable, t, !1)) {\n if (r === e)\n return a[i];\n r++;\n }\n i++;\n }\n return null;\n}\nfunction ht(t, e) {\n for (var n = t.lastElementChild; n && (n === p.ghost || h(n, \"display\") === \"none\" || e && !We(n, e)); )\n n = n.previousElementSibling;\n return n || null;\n}\nfunction J(t, e) {\n var n = 0;\n if (!t || !t.parentNode)\n return -1;\n for (; t = t.previousElementSibling; )\n t.nodeName.toUpperCase() !== \"TEMPLATE\" && t !== p.clone && (!e || We(t, e)) && n++;\n return n;\n}\nfunction Nt(t) {\n var e = 0, n = 0, o = te();\n if (t)\n do {\n var r = ye(t), i = r.a, a = r.d;\n e += t.scrollLeft * i, n += t.scrollTop * a;\n } while (t !== o && (t = t.parentNode));\n return [e, n];\n}\nfunction Mn(t, e) {\n for (var n in t)\n if (t.hasOwnProperty(n)) {\n for (var o in e)\n if (e.hasOwnProperty(o) && e[o] === t[n][o])\n return Number(n);\n }\n return -1;\n}\nfunction ce(t, e) {\n if (!t || !t.getBoundingClientRect)\n return te();\n var n = t, o = !1;\n do\n if (n.clientWidth < n.scrollWidth || n.clientHeight < n.scrollHeight) {\n var r = h(n);\n if (n.clientWidth < n.scrollWidth && (r.overflowX == \"auto\" || r.overflowX == \"scroll\") || n.clientHeight < n.scrollHeight && (r.overflowY == \"auto\" || r.overflowY == \"scroll\")) {\n if (!n.getBoundingClientRect || n === document.body)\n return te();\n if (o || e)\n return n;\n o = !0;\n }\n }\n while (n = n.parentNode);\n return te();\n}\nfunction Fn(t, e) {\n if (t && e)\n for (var n in e)\n e.hasOwnProperty(n) && (t[n] = e[n]);\n return t;\n}\nfunction Je(t, e) {\n return Math.round(t.top) === Math.round(e.top) && Math.round(t.left) === Math.round(e.left) && Math.round(t.height) === Math.round(e.height) && Math.round(t.width) === Math.round(e.width);\n}\nvar Ce;\nfunction zt(t, e) {\n return function() {\n if (!Ce) {\n var n = arguments, o = this;\n n.length === 1 ? t.call(o, n[0]) : t.apply(o, n), Ce = setTimeout(function() {\n Ce = void 0;\n }, e);\n }\n };\n}\nfunction Rn() {\n clearTimeout(Ce), Ce = void 0;\n}\nfunction Ut(t, e, n) {\n t.scrollLeft += e, t.scrollTop += n;\n}\nfunction Vt(t) {\n var e = window.Polymer, n = window.jQuery || window.Zepto;\n return e && e.dom ? e.dom(t).cloneNode(!0) : n ? n(t).clone(!0)[0] : t.cloneNode(!0);\n}\nfunction $t(t, e, n) {\n var o = {};\n return Array.from(t.children).forEach(function(r) {\n var i, a, l, s;\n if (!(!Q(r, e.draggable, t, !1) || r.animated || r === n)) {\n var u = P(r);\n o.left = Math.min((i = o.left) !== null && i !== void 0 ? i : 1 / 0, u.left), o.top = Math.min((a = o.top) !== null && a !== void 0 ? a : 1 / 0, u.top), o.right = Math.max((l = o.right) !== null && l !== void 0 ? l : -1 / 0, u.right), o.bottom = Math.max((s = o.bottom) !== null && s !== void 0 ? s : -1 / 0, u.bottom);\n }\n }), o.width = o.right - o.left, o.height = o.bottom - o.top, o.x = o.left, o.y = o.top, o;\n}\nvar q = \"Sortable\" + (/* @__PURE__ */ new Date()).getTime();\nfunction Xn() {\n var t = [], e;\n return {\n captureAnimationState: function() {\n if (t = [], !!this.options.animation) {\n var o = [].slice.call(this.el.children);\n o.forEach(function(r) {\n if (!(h(r, \"display\") === \"none\" || r === p.ghost)) {\n t.push({\n target: r,\n rect: P(r)\n });\n var i = ne({}, t[t.length - 1].rect);\n if (r.thisAnimationDuration) {\n var a = ye(r, !0);\n a && (i.top -= a.f, i.left -= a.e);\n }\n r.fromRect = i;\n }\n });\n }\n },\n addAnimationState: function(o) {\n t.push(o);\n },\n removeAnimationState: function(o) {\n t.splice(Mn(t, {\n target: o\n }), 1);\n },\n animateAll: function(o) {\n var r = this;\n if (!this.options.animation) {\n clearTimeout(e), typeof o == \"function\" && o();\n return;\n }\n var i = !1, a = 0;\n t.forEach(function(l) {\n var s = 0, u = l.target, d = u.fromRect, f = P(u), m = u.prevFromRect, y = u.prevToRect, b = l.rect, w = ye(u, !0);\n w && (f.top -= w.f, f.left -= w.e), u.toRect = f, u.thisAnimationDuration && Je(m, f) && !Je(d, f) && // Make sure animatingRect is on line between toRect & fromRect\n (b.top - f.top) / (b.left - f.left) === (d.top - f.top) / (d.left - f.left) && (s = Bn(b, m, y, r.options)), Je(f, d) || (u.prevFromRect = d, u.prevToRect = f, s || (s = r.options.animation), r.animate(u, b, f, s)), s && (i = !0, a = Math.max(a, s), clearTimeout(u.animationResetTimer), u.animationResetTimer = setTimeout(function() {\n u.animationTime = 0, u.prevFromRect = null, u.fromRect = null, u.prevToRect = null, u.thisAnimationDuration = null;\n }, s), u.thisAnimationDuration = s);\n }), clearTimeout(e), i ? e = setTimeout(function() {\n typeof o == \"function\" && o();\n }, a) : typeof o == \"function\" && o(), t = [];\n },\n animate: function(o, r, i, a) {\n if (a) {\n h(o, \"transition\", \"\"), h(o, \"transform\", \"\");\n var l = ye(this.el), s = l && l.a, u = l && l.d, d = (r.left - i.left) / (s || 1), f = (r.top - i.top) / (u || 1);\n o.animatingX = !!d, o.animatingY = !!f, h(o, \"transform\", \"translate3d(\" + d + \"px,\" + f + \"px,0)\"), this.forRepaintDummy = Yn(o), h(o, \"transition\", \"transform \" + a + \"ms\" + (this.options.easing ? \" \" + this.options.easing : \"\")), h(o, \"transform\", \"translate3d(0,0,0)\"), typeof o.animated == \"number\" && clearTimeout(o.animated), o.animated = setTimeout(function() {\n h(o, \"transition\", \"\"), h(o, \"transform\", \"\"), o.animated = !1, o.animatingX = !1, o.animatingY = !1;\n }, a);\n }\n }\n };\n}\nfunction Yn(t) {\n return t.offsetWidth;\n}\nfunction Bn(t, e, n, o) {\n return Math.sqrt(Math.pow(e.top - t.top, 2) + Math.pow(e.left - t.left, 2)) / Math.sqrt(Math.pow(e.top - n.top, 2) + Math.pow(e.left - n.left, 2)) * o.animation;\n}\nvar ge = [], Ze = {\n initializeByDefault: !0\n}, Ne = {\n mount: function(e) {\n for (var n in Ze)\n Ze.hasOwnProperty(n) && !(n in e) && (e[n] = Ze[n]);\n ge.forEach(function(o) {\n if (o.pluginName === e.pluginName)\n throw \"Sortable: Cannot mount plugin \".concat(e.pluginName, \" more than once\");\n }), ge.push(e);\n },\n pluginEvent: function(e, n, o) {\n var r = this;\n this.eventCanceled = !1, o.cancel = function() {\n r.eventCanceled = !0;\n };\n var i = e + \"Global\";\n ge.forEach(function(a) {\n n[a.pluginName] && (n[a.pluginName][i] && n[a.pluginName][i](ne({\n sortable: n\n }, o)), n.options[a.pluginName] && n[a.pluginName][e] && n[a.pluginName][e](ne({\n sortable: n\n }, o)));\n });\n },\n initializePlugins: function(e, n, o, r) {\n ge.forEach(function(l) {\n var s = l.pluginName;\n if (!(!e.options[s] && !l.initializeByDefault)) {\n var u = new l(e, n, e.options);\n u.sortable = e, u.options = e.options, e[s] = u, ie(o, u.defaults);\n }\n });\n for (var i in e.options)\n if (e.options.hasOwnProperty(i)) {\n var a = this.modifyOption(e, i, e.options[i]);\n typeof a != \"undefined\" && (e.options[i] = a);\n }\n },\n getEventProperties: function(e, n) {\n var o = {};\n return ge.forEach(function(r) {\n typeof r.eventProperties == \"function\" && ie(o, r.eventProperties.call(n[r.pluginName], e));\n }), o;\n },\n modifyOption: function(e, n, o) {\n var r;\n return ge.forEach(function(i) {\n e[i.pluginName] && i.optionListeners && typeof i.optionListeners[n] == \"function\" && (r = i.optionListeners[n].call(e[i.pluginName], o));\n }), r;\n }\n};\nfunction kn(t) {\n var e = t.sortable, n = t.rootEl, o = t.name, r = t.targetEl, i = t.cloneEl, a = t.toEl, l = t.fromEl, s = t.oldIndex, u = t.newIndex, d = t.oldDraggableIndex, f = t.newDraggableIndex, m = t.originalEvent, y = t.putSortable, b = t.extraEventProperties;\n if (e = e || n && n[q], !!e) {\n var w, L = e.options, G = \"on\" + o.charAt(0).toUpperCase() + o.substr(1);\n window.CustomEvent && !ae && !xe ? w = new CustomEvent(o, {\n bubbles: !0,\n cancelable: !0\n }) : (w = document.createEvent(\"Event\"), w.initEvent(o, !0, !0)), w.to = a || n, w.from = l || n, w.item = r || n, w.clone = i, w.oldIndex = s, w.newIndex = u, w.oldDraggableIndex = d, w.newDraggableIndex = f, w.originalEvent = m, w.pullMode = y ? y.lastPutMode : void 0;\n var R = ne(ne({}, b), Ne.getEventProperties(o, e));\n for (var j in R)\n w[j] = R[j];\n n && n.dispatchEvent(w), L[G] && L[G].call(e, w);\n }\n}\nvar Hn = [\"evt\"], z = function(e, n) {\n var o = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, r = o.evt, i = xn(o, Hn);\n Ne.pluginEvent.bind(p)(e, n, ne({\n dragEl: c,\n parentEl: O,\n ghostEl: g,\n rootEl: T,\n nextEl: pe,\n lastDownEl: Be,\n cloneEl: C,\n cloneHidden: ue,\n dragStarted: Se,\n putSortable: Y,\n activeSortable: p.active,\n originalEvent: r,\n oldIndex: be,\n oldDraggableIndex: Oe,\n newIndex: $,\n newDraggableIndex: se,\n hideGhostForTarget: Zt,\n unhideGhostForTarget: Qt,\n cloneNowHidden: function() {\n ue = !0;\n },\n cloneNowShown: function() {\n ue = !1;\n },\n dispatchSortableEvent: function(l) {\n W({\n sortable: n,\n name: l,\n originalEvent: r\n });\n }\n }, i));\n};\nfunction W(t) {\n kn(ne({\n putSortable: Y,\n cloneEl: C,\n targetEl: c,\n rootEl: T,\n oldIndex: be,\n oldDraggableIndex: Oe,\n newIndex: $,\n newDraggableIndex: se\n }, t));\n}\nvar c, O, g, T, pe, Be, C, ue, be, $, Oe, se, Me, Y, ve = !1, Ge = !1, je = [], de, Z, Qe, et, Pt, Mt, Se, me, Ie, Ae = !1, Fe = !1, ke, H, tt = [], lt = !1, ze = [], Ve = typeof document != \"undefined\", Re = Lt, Ft = xe || ae ? \"cssFloat\" : \"float\", Ln = Ve && !Wt && !Lt && \"draggable\" in document.createElement(\"div\"), qt = function() {\n if (Ve) {\n if (ae)\n return !1;\n var t = document.createElement(\"x\");\n return t.style.cssText = \"pointer-events:auto\", t.style.pointerEvents === \"auto\";\n }\n}(), Kt = function(e, n) {\n var o = h(e), r = parseInt(o.width) - parseInt(o.paddingLeft) - parseInt(o.paddingRight) - parseInt(o.borderLeftWidth) - parseInt(o.borderRightWidth), i = we(e, 0, n), a = we(e, 1, n), l = i && h(i), s = a && h(a), u = l && parseInt(l.marginLeft) + parseInt(l.marginRight) + P(i).width, d = s && parseInt(s.marginLeft) + parseInt(s.marginRight) + P(a).width;\n if (o.display === \"flex\")\n return o.flexDirection === \"column\" || o.flexDirection === \"column-reverse\" ? \"vertical\" : \"horizontal\";\n if (o.display === \"grid\")\n return o.gridTemplateColumns.split(\" \").length <= 1 ? \"vertical\" : \"horizontal\";\n if (i && l.float && l.float !== \"none\") {\n var f = l.float === \"left\" ? \"left\" : \"right\";\n return a && (s.clear === \"both\" || s.clear === f) ? \"vertical\" : \"horizontal\";\n }\n return i && (l.display === \"block\" || l.display === \"flex\" || l.display === \"table\" || l.display === \"grid\" || u >= r && o[Ft] === \"none\" || a && o[Ft] === \"none\" && u + d > r) ? \"vertical\" : \"horizontal\";\n}, Wn = function(e, n, o) {\n var r = o ? e.left : e.top, i = o ? e.right : e.bottom, a = o ? e.width : e.height, l = o ? n.left : n.top, s = o ? n.right : n.bottom, u = o ? n.width : n.height;\n return r === l || i === s || r + a / 2 === l + u / 2;\n}, Gn = function(e, n) {\n var o;\n return je.some(function(r) {\n var i = r[q].options.emptyInsertThreshold;\n if (!(!i || ht(r))) {\n var a = P(r), l = e >= a.left - i && e <= a.right + i, s = n >= a.top - i && n <= a.bottom + i;\n if (l && s)\n return o = r;\n }\n }), o;\n}, Jt = function(e) {\n function n(i, a) {\n return function(l, s, u, d) {\n var f = l.options.group.name && s.options.group.name && l.options.group.name === s.options.group.name;\n if (i == null && (a || f))\n return !0;\n if (i == null || i === !1)\n return !1;\n if (a && i === \"clone\")\n return i;\n if (typeof i == \"function\")\n return n(i(l, s, u, d), a)(l, s, u, d);\n var m = (a ? l : s).options.group.name;\n return i === !0 || typeof i == \"string\" && i === m || i.join && i.indexOf(m) > -1;\n };\n }\n var o = {}, r = e.group;\n (!r || Ye(r) != \"object\") && (r = {\n name: r\n }), o.name = r.name, o.checkPull = n(r.pull, !0), o.checkPut = n(r.put), o.revertClone = r.revertClone, e.group = o;\n}, Zt = function() {\n !qt && g && h(g, \"display\", \"none\");\n}, Qt = function() {\n !qt && g && h(g, \"display\", \"\");\n};\nVe && !Wt && document.addEventListener(\"click\", function(t) {\n if (Ge)\n return t.preventDefault(), t.stopPropagation && t.stopPropagation(), t.stopImmediatePropagation && t.stopImmediatePropagation(), Ge = !1, !1;\n}, !0);\nvar he = function(e) {\n if (c) {\n e = e.touches ? e.touches[0] : e;\n var n = Gn(e.clientX, e.clientY);\n if (n) {\n var o = {};\n for (var r in e)\n e.hasOwnProperty(r) && (o[r] = e[r]);\n o.target = o.rootEl = n, o.preventDefault = void 0, o.stopPropagation = void 0, n[q]._onDragOver(o);\n }\n }\n}, jn = function(e) {\n c && c.parentNode[q]._isOutsideThisEl(e.target);\n};\nfunction p(t, e) {\n if (!(t && t.nodeType && t.nodeType === 1))\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(t));\n this.el = t, this.options = e = ie({}, e), t[q] = this;\n var n = {\n group: null,\n sort: !0,\n disabled: !1,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(t.nodeName) ? \">li\" : \">*\",\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: !1,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: !0,\n direction: function() {\n return Kt(t, this.options);\n },\n ghostClass: \"sortable-ghost\",\n chosenClass: \"sortable-chosen\",\n dragClass: \"sortable-drag\",\n ignore: \"a, img\",\n filter: null,\n preventOnFilter: !0,\n animation: 0,\n easing: null,\n setData: function(a, l) {\n a.setData(\"Text\", l.textContent);\n },\n dropBubble: !1,\n dragoverBubble: !1,\n dataIdAttr: \"data-id\",\n delay: 0,\n delayOnTouchOnly: !1,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: !1,\n fallbackClass: \"sortable-fallback\",\n fallbackOnBody: !1,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: p.supportPointer !== !1 && \"PointerEvent\" in window && !Te,\n emptyInsertThreshold: 5\n };\n Ne.initializePlugins(this, t, n);\n for (var o in n)\n !(o in e) && (e[o] = n[o]);\n Jt(e);\n for (var r in this)\n r.charAt(0) === \"_\" && typeof this[r] == \"function\" && (this[r] = this[r].bind(this));\n this.nativeDraggable = e.forceFallback ? !1 : Ln, this.nativeDraggable && (this.options.touchStartThreshold = 1), e.supportPointer ? S(t, \"pointerdown\", this._onTapStart) : (S(t, \"mousedown\", this._onTapStart), S(t, \"touchstart\", this._onTapStart)), this.nativeDraggable && (S(t, \"dragover\", this), S(t, \"dragenter\", this)), je.push(this.el), e.store && e.store.get && this.sort(e.store.get(this) || []), ie(this, Xn());\n}\np.prototype = /** @lends Sortable.prototype */\n{\n constructor: p,\n _isOutsideThisEl: function(e) {\n !this.el.contains(e) && e !== this.el && (me = null);\n },\n _getDirection: function(e, n) {\n return typeof this.options.direction == \"function\" ? this.options.direction.call(this, e, n, c) : this.options.direction;\n },\n _onTapStart: function(e) {\n if (e.cancelable) {\n var n = this, o = this.el, r = this.options, i = r.preventOnFilter, a = e.type, l = e.touches && e.touches[0] || e.pointerType && e.pointerType === \"touch\" && e, s = (l || e).target, u = e.target.shadowRoot && (e.path && e.path[0] || e.composedPath && e.composedPath()[0]) || s, d = r.filter;\n if (Zn(o), !c && !(/mousedown|pointerdown/.test(a) && e.button !== 0 || r.disabled) && !u.isContentEditable && !(!this.nativeDraggable && Te && s && s.tagName.toUpperCase() === \"SELECT\") && (s = Q(s, r.draggable, o, !1), !(s && s.animated) && Be !== s)) {\n if (be = J(s), Oe = J(s, r.draggable), typeof d == \"function\") {\n if (d.call(this, e, s, this)) {\n W({\n sortable: n,\n rootEl: u,\n name: \"filter\",\n targetEl: s,\n toEl: o,\n fromEl: o\n }), z(\"filter\", n, {\n evt: e\n }), i && e.cancelable && e.preventDefault();\n return;\n }\n } else if (d && (d = d.split(\",\").some(function(f) {\n if (f = Q(u, f.trim(), o, !1), f)\n return W({\n sortable: n,\n rootEl: f,\n name: \"filter\",\n targetEl: s,\n fromEl: o,\n toEl: o\n }), z(\"filter\", n, {\n evt: e\n }), !0;\n }), d)) {\n i && e.cancelable && e.preventDefault();\n return;\n }\n r.handle && !Q(u, r.handle, o, !1) || this._prepareDragStart(e, l, s);\n }\n }\n },\n _prepareDragStart: function(e, n, o) {\n var r = this, i = r.el, a = r.options, l = i.ownerDocument, s;\n if (o && !c && o.parentNode === i) {\n var u = P(o);\n if (T = i, c = o, O = c.parentNode, pe = c.nextSibling, Be = o, Me = a.group, p.dragged = c, de = {\n target: c,\n clientX: (n || e).clientX,\n clientY: (n || e).clientY\n }, Pt = de.clientX - u.left, Mt = de.clientY - u.top, this._lastX = (n || e).clientX, this._lastY = (n || e).clientY, c.style[\"will-change\"] = \"all\", s = function() {\n if (z(\"delayEnded\", r, {\n evt: e\n }), p.eventCanceled) {\n r._onDrop();\n return;\n }\n r._disableDelayedDragEvents(), !It && r.nativeDraggable && (c.draggable = !0), r._triggerDragStart(e, n), W({\n sortable: r,\n name: \"choose\",\n originalEvent: e\n }), V(c, a.chosenClass, !0);\n }, a.ignore.split(\",\").forEach(function(d) {\n jt(c, d.trim(), nt);\n }), S(l, \"dragover\", he), S(l, \"mousemove\", he), S(l, \"touchmove\", he), S(l, \"mouseup\", r._onDrop), S(l, \"touchend\", r._onDrop), S(l, \"touchcancel\", r._onDrop), It && this.nativeDraggable && (this.options.touchStartThreshold = 4, c.draggable = !0), z(\"delayStart\", this, {\n evt: e\n }), a.delay && (!a.delayOnTouchOnly || n) && (!this.nativeDraggable || !(xe || ae))) {\n if (p.eventCanceled) {\n this._onDrop();\n return;\n }\n S(l, \"mouseup\", r._disableDelayedDrag), S(l, \"touchend\", r._disableDelayedDrag), S(l, \"touchcancel\", r._disableDelayedDrag), S(l, \"mousemove\", r._delayedDragTouchMoveHandler), S(l, \"touchmove\", r._delayedDragTouchMoveHandler), a.supportPointer && S(l, \"pointermove\", r._delayedDragTouchMoveHandler), r._dragStartTimer = setTimeout(s, a.delay);\n } else\n s();\n }\n },\n _delayedDragTouchMoveHandler: function(e) {\n var n = e.touches ? e.touches[0] : e;\n Math.max(Math.abs(n.clientX - this._lastX), Math.abs(n.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1)) && this._disableDelayedDrag();\n },\n _disableDelayedDrag: function() {\n c && nt(c), clearTimeout(this._dragStartTimer), this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function() {\n var e = this.el.ownerDocument;\n E(e, \"mouseup\", this._disableDelayedDrag), E(e, \"touchend\", this._disableDelayedDrag), E(e, \"touchcancel\", this._disableDelayedDrag), E(e, \"mousemove\", this._delayedDragTouchMoveHandler), E(e, \"touchmove\", this._delayedDragTouchMoveHandler), E(e, \"pointermove\", this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function(e, n) {\n n = n || e.pointerType == \"touch\" && e, !this.nativeDraggable || n ? this.options.supportPointer ? S(document, \"pointermove\", this._onTouchMove) : n ? S(document, \"touchmove\", this._onTouchMove) : S(document, \"mousemove\", this._onTouchMove) : (S(c, \"dragend\", this), S(T, \"dragstart\", this._onDragStart));\n try {\n document.selection ? He(function() {\n document.selection.empty();\n }) : window.getSelection().removeAllRanges();\n } catch (o) {\n }\n },\n _dragStarted: function(e, n) {\n if (ve = !1, T && c) {\n z(\"dragStarted\", this, {\n evt: n\n }), this.nativeDraggable && S(document, \"dragover\", jn);\n var o = this.options;\n !e && V(c, o.dragClass, !1), V(c, o.ghostClass, !0), p.active = this, e && this._appendGhost(), W({\n sortable: this,\n name: \"start\",\n originalEvent: n\n });\n } else\n this._nulling();\n },\n _emulateDragOver: function() {\n if (Z) {\n this._lastX = Z.clientX, this._lastY = Z.clientY, Zt();\n for (var e = document.elementFromPoint(Z.clientX, Z.clientY), n = e; e && e.shadowRoot && (e = e.shadowRoot.elementFromPoint(Z.clientX, Z.clientY), e !== n); )\n n = e;\n if (c.parentNode[q]._isOutsideThisEl(e), n)\n do {\n if (n[q]) {\n var o = void 0;\n if (o = n[q]._onDragOver({\n clientX: Z.clientX,\n clientY: Z.clientY,\n target: e,\n rootEl: n\n }), o && !this.options.dragoverBubble)\n break;\n }\n e = n;\n } while (n = n.parentNode);\n Qt();\n }\n },\n _onTouchMove: function(e) {\n if (de) {\n var n = this.options, o = n.fallbackTolerance, r = n.fallbackOffset, i = e.touches ? e.touches[0] : e, a = g && ye(g, !0), l = g && a && a.a, s = g && a && a.d, u = Re && H && Nt(H), d = (i.clientX - de.clientX + r.x) / (l || 1) + (u ? u[0] - tt[0] : 0) / (l || 1), f = (i.clientY - de.clientY + r.y) / (s || 1) + (u ? u[1] - tt[1] : 0) / (s || 1);\n if (!p.active && !ve) {\n if (o && Math.max(Math.abs(i.clientX - this._lastX), Math.abs(i.clientY - this._lastY)) < o)\n return;\n this._onDragStart(e, !0);\n }\n if (g) {\n a ? (a.e += d - (Qe || 0), a.f += f - (et || 0)) : a = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: d,\n f\n };\n var m = \"matrix(\".concat(a.a, \",\").concat(a.b, \",\").concat(a.c, \",\").concat(a.d, \",\").concat(a.e, \",\").concat(a.f, \")\");\n h(g, \"webkitTransform\", m), h(g, \"mozTransform\", m), h(g, \"msTransform\", m), h(g, \"transform\", m), Qe = d, et = f, Z = i;\n }\n e.cancelable && e.preventDefault();\n }\n },\n _appendGhost: function() {\n if (!g) {\n var e = this.options.fallbackOnBody ? document.body : T, n = P(c, !0, Re, !0, e), o = this.options;\n if (Re) {\n for (H = e; h(H, \"position\") === \"static\" && h(H, \"transform\") === \"none\" && H !== document; )\n H = H.parentNode;\n H !== document.body && H !== document.documentElement ? (H === document && (H = te()), n.top += H.scrollTop, n.left += H.scrollLeft) : H = te(), tt = Nt(H);\n }\n g = c.cloneNode(!0), V(g, o.ghostClass, !1), V(g, o.fallbackClass, !0), V(g, o.dragClass, !0), h(g, \"transition\", \"\"), h(g, \"transform\", \"\"), h(g, \"box-sizing\", \"border-box\"), h(g, \"margin\", 0), h(g, \"top\", n.top), h(g, \"left\", n.left), h(g, \"width\", n.width), h(g, \"height\", n.height), h(g, \"opacity\", \"0.8\"), h(g, \"position\", Re ? \"absolute\" : \"fixed\"), h(g, \"zIndex\", \"100000\"), h(g, \"pointerEvents\", \"none\"), p.ghost = g, e.appendChild(g), h(g, \"transform-origin\", Pt / parseInt(g.style.width) * 100 + \"% \" + Mt / parseInt(g.style.height) * 100 + \"%\");\n }\n },\n _onDragStart: function(e, n) {\n var o = this, r = e.dataTransfer, i = o.options;\n if (z(\"dragStart\", this, {\n evt: e\n }), p.eventCanceled) {\n this._onDrop();\n return;\n }\n z(\"setupClone\", this), p.eventCanceled || (C = Vt(c), C.removeAttribute(\"id\"), C.draggable = !1, C.style[\"will-change\"] = \"\", this._hideClone(), V(C, this.options.chosenClass, !1), p.clone = C), o.cloneId = He(function() {\n z(\"clone\", o), !p.eventCanceled && (o.options.removeCloneOnHide || T.insertBefore(C, c), o._hideClone(), W({\n sortable: o,\n name: \"clone\"\n }));\n }), !n && V(c, i.dragClass, !0), n ? (Ge = !0, o._loopId = setInterval(o._emulateDragOver, 50)) : (E(document, \"mouseup\", o._onDrop), E(document, \"touchend\", o._onDrop), E(document, \"touchcancel\", o._onDrop), r && (r.effectAllowed = \"move\", i.setData && i.setData.call(o, r, c)), S(document, \"drop\", o), h(c, \"transform\", \"translateZ(0)\")), ve = !0, o._dragStartId = He(o._dragStarted.bind(o, n, e)), S(document, \"selectstart\", o), Se = !0, Te && h(document.body, \"user-select\", \"none\");\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function(e) {\n var n = this.el, o = e.target, r, i, a, l = this.options, s = l.group, u = p.active, d = Me === s, f = l.sort, m = Y || u, y, b = this, w = !1;\n if (lt)\n return;\n function L(ee, Ee) {\n z(ee, b, ne({\n evt: e,\n isOwner: d,\n axis: y ? \"vertical\" : \"horizontal\",\n revert: a,\n dragRect: r,\n targetRect: i,\n canSort: f,\n fromSortable: m,\n target: o,\n completed: R,\n onMove: function(vt, rn) {\n return Xe(T, n, c, r, vt, P(vt), e, rn);\n },\n changed: j\n }, Ee));\n }\n function G() {\n L(\"dragOverAnimationCapture\"), b.captureAnimationState(), b !== m && m.captureAnimationState();\n }\n function R(ee) {\n return L(\"dragOverCompleted\", {\n insertion: ee\n }), ee && (d ? u._hideClone() : u._showClone(b), b !== m && (V(c, Y ? Y.options.ghostClass : u.options.ghostClass, !1), V(c, l.ghostClass, !0)), Y !== b && b !== p.active ? Y = b : b === p.active && Y && (Y = null), m === b && (b._ignoreWhileAnimating = o), b.animateAll(function() {\n L(\"dragOverAnimationComplete\"), b._ignoreWhileAnimating = null;\n }), b !== m && (m.animateAll(), m._ignoreWhileAnimating = null)), (o === c && !c.animated || o === n && !o.animated) && (me = null), !l.dragoverBubble && !e.rootEl && o !== document && (c.parentNode[q]._isOutsideThisEl(e.target), !ee && he(e)), !l.dragoverBubble && e.stopPropagation && e.stopPropagation(), w = !0;\n }\n function j() {\n $ = J(c), se = J(c, l.draggable), W({\n sortable: b,\n name: \"change\",\n toEl: n,\n newIndex: $,\n newDraggableIndex: se,\n originalEvent: e\n });\n }\n if (e.preventDefault !== void 0 && e.cancelable && e.preventDefault(), o = Q(o, l.draggable, n, !0), L(\"dragOver\"), p.eventCanceled)\n return w;\n if (c.contains(e.target) || o.animated && o.animatingX && o.animatingY || b._ignoreWhileAnimating === o)\n return R(!1);\n if (Ge = !1, u && !l.disabled && (d ? f || (a = O !== T) : Y === this || (this.lastPutMode = Me.checkPull(this, u, c, e)) && s.checkPut(this, u, c, e))) {\n if (y = this._getDirection(e, o) === \"vertical\", r = P(c), L(\"dragOverValid\"), p.eventCanceled)\n return w;\n if (a)\n return O = T, G(), this._hideClone(), L(\"revert\"), p.eventCanceled || (pe ? T.insertBefore(c, pe) : T.appendChild(c)), R(!0);\n var B = ht(n, l.draggable);\n if (!B || $n(e, y, this) && !B.animated) {\n if (B === c)\n return R(!1);\n if (B && n === e.target && (o = B), o && (i = P(o)), Xe(T, n, c, r, o, i, e, !!o) !== !1)\n return G(), B && B.nextSibling ? n.insertBefore(c, B.nextSibling) : n.appendChild(c), O = n, j(), R(!0);\n } else if (B && Vn(e, y, this)) {\n var X = we(n, 0, l, !0);\n if (X === c)\n return R(!1);\n if (o = X, i = P(o), Xe(T, n, c, r, o, i, e, !1) !== !1)\n return G(), n.insertBefore(c, X), O = n, j(), R(!0);\n } else if (o.parentNode === n) {\n i = P(o);\n var K = 0, oe, le = c.parentNode !== n, k = !Wn(c.animated && c.toRect || r, o.animated && o.toRect || i, y), v = y ? \"top\" : \"left\", D = xt(o, \"top\", \"top\") || xt(c, \"top\", \"top\"), A = D ? D.scrollTop : void 0;\n me !== o && (oe = i[v], Ae = !1, Fe = !k && l.invertSwap || le), K = qn(e, o, i, y, k ? 1 : l.swapThreshold, l.invertedSwapThreshold == null ? l.swapThreshold : l.invertedSwapThreshold, Fe, me === o);\n var I;\n if (K !== 0) {\n var _ = J(c);\n do\n _ -= K, I = O.children[_];\n while (I && (h(I, \"display\") === \"none\" || I === g));\n }\n if (K === 0 || I === o)\n return R(!1);\n me = o, Ie = K;\n var x = o.nextElementSibling, M = !1;\n M = K === 1;\n var F = Xe(T, n, c, r, o, i, e, M);\n if (F !== !1)\n return (F === 1 || F === -1) && (M = F === 1), lt = !0, setTimeout(Un, 30), G(), M && !x ? n.appendChild(c) : o.parentNode.insertBefore(c, M ? x : o), D && Ut(D, 0, A - D.scrollTop), O = c.parentNode, oe !== void 0 && !Fe && (ke = Math.abs(oe - P(o)[v])), j(), R(!0);\n }\n if (n.contains(c))\n return R(!1);\n }\n return !1;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function() {\n E(document, \"mousemove\", this._onTouchMove), E(document, \"touchmove\", this._onTouchMove), E(document, \"pointermove\", this._onTouchMove), E(document, \"dragover\", he), E(document, \"mousemove\", he), E(document, \"touchmove\", he);\n },\n _offUpEvents: function() {\n var e = this.el.ownerDocument;\n E(e, \"mouseup\", this._onDrop), E(e, \"touchend\", this._onDrop), E(e, \"pointerup\", this._onDrop), E(e, \"touchcancel\", this._onDrop), E(document, \"selectstart\", this);\n },\n _onDrop: function(e) {\n var n = this.el, o = this.options;\n if ($ = J(c), se = J(c, o.draggable), z(\"drop\", this, {\n evt: e\n }), O = c && c.parentNode, $ = J(c), se = J(c, o.draggable), p.eventCanceled) {\n this._nulling();\n return;\n }\n ve = !1, Fe = !1, Ae = !1, clearInterval(this._loopId), clearTimeout(this._dragStartTimer), st(this.cloneId), st(this._dragStartId), this.nativeDraggable && (E(document, \"drop\", this), E(n, \"dragstart\", this._onDragStart)), this._offMoveEvents(), this._offUpEvents(), Te && h(document.body, \"user-select\", \"\"), h(c, \"transform\", \"\"), e && (Se && (e.cancelable && e.preventDefault(), !o.dropBubble && e.stopPropagation()), g && g.parentNode && g.parentNode.removeChild(g), (T === O || Y && Y.lastPutMode !== \"clone\") && C && C.parentNode && C.parentNode.removeChild(C), c && (this.nativeDraggable && E(c, \"dragend\", this), nt(c), c.style[\"will-change\"] = \"\", Se && !ve && V(c, Y ? Y.options.ghostClass : this.options.ghostClass, !1), V(c, this.options.chosenClass, !1), W({\n sortable: this,\n name: \"unchoose\",\n toEl: O,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: e\n }), T !== O ? ($ >= 0 && (W({\n rootEl: O,\n name: \"add\",\n toEl: O,\n fromEl: T,\n originalEvent: e\n }), W({\n sortable: this,\n name: \"remove\",\n toEl: O,\n originalEvent: e\n }), W({\n rootEl: O,\n name: \"sort\",\n toEl: O,\n fromEl: T,\n originalEvent: e\n }), W({\n sortable: this,\n name: \"sort\",\n toEl: O,\n originalEvent: e\n })), Y && Y.save()) : $ !== be && $ >= 0 && (W({\n sortable: this,\n name: \"update\",\n toEl: O,\n originalEvent: e\n }), W({\n sortable: this,\n name: \"sort\",\n toEl: O,\n originalEvent: e\n })), p.active && (($ == null || $ === -1) && ($ = be, se = Oe), W({\n sortable: this,\n name: \"end\",\n toEl: O,\n originalEvent: e\n }), this.save()))), this._nulling();\n },\n _nulling: function() {\n z(\"nulling\", this), T = c = O = g = pe = C = Be = ue = de = Z = Se = $ = se = be = Oe = me = Ie = Y = Me = p.dragged = p.ghost = p.clone = p.active = null, ze.forEach(function(e) {\n e.checked = !0;\n }), ze.length = Qe = et = 0;\n },\n handleEvent: function(e) {\n switch (e.type) {\n case \"drop\":\n case \"dragend\":\n this._onDrop(e);\n break;\n case \"dragenter\":\n case \"dragover\":\n c && (this._onDragOver(e), zn(e));\n break;\n case \"selectstart\":\n e.preventDefault();\n break;\n }\n },\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function() {\n for (var e = [], n, o = this.el.children, r = 0, i = o.length, a = this.options; r < i; r++)\n n = o[r], Q(n, a.draggable, this.el, !1) && e.push(n.getAttribute(a.dataIdAttr) || Jn(n));\n return e;\n },\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function(e, n) {\n var o = {}, r = this.el;\n this.toArray().forEach(function(i, a) {\n var l = r.children[a];\n Q(l, this.options.draggable, r, !1) && (o[i] = l);\n }, this), n && this.captureAnimationState(), e.forEach(function(i) {\n o[i] && (r.removeChild(o[i]), r.appendChild(o[i]));\n }), n && this.animateAll();\n },\n /**\n * Save the current sorting\n */\n save: function() {\n var e = this.options.store;\n e && e.set && e.set(this);\n },\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function(e, n) {\n return Q(e, n || this.options.draggable, this.el, !1);\n },\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function(e, n) {\n var o = this.options;\n if (n === void 0)\n return o[e];\n var r = Ne.modifyOption(this, e, n);\n typeof r != \"undefined\" ? o[e] = r : o[e] = n, e === \"group\" && Jt(o);\n },\n /**\n * Destroy\n */\n destroy: function() {\n z(\"destroy\", this);\n var e = this.el;\n e[q] = null, E(e, \"mousedown\", this._onTapStart), E(e, \"touchstart\", this._onTapStart), E(e, \"pointerdown\", this._onTapStart), this.nativeDraggable && (E(e, \"dragover\", this), E(e, \"dragenter\", this)), Array.prototype.forEach.call(e.querySelectorAll(\"[draggable]\"), function(n) {\n n.removeAttribute(\"draggable\");\n }), this._onDrop(), this._disableDelayedDragEvents(), je.splice(je.indexOf(this.el), 1), this.el = e = null;\n },\n _hideClone: function() {\n if (!ue) {\n if (z(\"hideClone\", this), p.eventCanceled)\n return;\n h(C, \"display\", \"none\"), this.options.removeCloneOnHide && C.parentNode && C.parentNode.removeChild(C), ue = !0;\n }\n },\n _showClone: function(e) {\n if (e.lastPutMode !== \"clone\") {\n this._hideClone();\n return;\n }\n if (ue) {\n if (z(\"showClone\", this), p.eventCanceled)\n return;\n c.parentNode == T && !this.options.group.revertClone ? T.insertBefore(C, c) : pe ? T.insertBefore(C, pe) : T.appendChild(C), this.options.group.revertClone && this.animate(c, C), h(C, \"display\", \"\"), ue = !1;\n }\n }\n};\nfunction zn(t) {\n t.dataTransfer && (t.dataTransfer.dropEffect = \"move\"), t.cancelable && t.preventDefault();\n}\nfunction Xe(t, e, n, o, r, i, a, l) {\n var s, u = t[q], d = u.options.onMove, f;\n return window.CustomEvent && !ae && !xe ? s = new CustomEvent(\"move\", {\n bubbles: !0,\n cancelable: !0\n }) : (s = document.createEvent(\"Event\"), s.initEvent(\"move\", !0, !0)), s.to = e, s.from = t, s.dragged = n, s.draggedRect = o, s.related = r || e, s.relatedRect = i || P(e), s.willInsertAfter = l, s.originalEvent = a, t.dispatchEvent(s), d && (f = d.call(u, s, a)), f;\n}\nfunction nt(t) {\n t.draggable = !1;\n}\nfunction Un() {\n lt = !1;\n}\nfunction Vn(t, e, n) {\n var o = P(we(n.el, 0, n.options, !0)), r = $t(n.el, n.options, g), i = 10;\n return e ? t.clientX < r.left - i || t.clientY < o.top && t.clientX < o.right : t.clientY < r.top - i || t.clientY < o.bottom && t.clientX < o.left;\n}\nfunction $n(t, e, n) {\n var o = P(ht(n.el, n.options.draggable)), r = $t(n.el, n.options, g), i = 10;\n return e ? t.clientX > r.right + i || t.clientY > o.bottom && t.clientX > o.left : t.clientY > r.bottom + i || t.clientX > o.right && t.clientY > o.top;\n}\nfunction qn(t, e, n, o, r, i, a, l) {\n var s = o ? t.clientY : t.clientX, u = o ? n.height : n.width, d = o ? n.top : n.left, f = o ? n.bottom : n.right, m = !1;\n if (!a) {\n if (l && ke < u * r) {\n if (!Ae && (Ie === 1 ? s > d + u * i / 2 : s < f - u * i / 2) && (Ae = !0), Ae)\n m = !0;\n else if (Ie === 1 ? s < d + ke : s > f - ke)\n return -Ie;\n } else if (s > d + u * (1 - r) / 2 && s < f - u * (1 - r) / 2)\n return Kn(e);\n }\n return m = m || a, m && (s < d + u * i / 2 || s > f - u * i / 2) ? s > d + u / 2 ? 1 : -1 : 0;\n}\nfunction Kn(t) {\n return J(c) < J(t) ? 1 : -1;\n}\nfunction Jn(t) {\n for (var e = t.tagName + t.className + t.src + t.href + t.textContent, n = e.length, o = 0; n--; )\n o += e.charCodeAt(n);\n return o.toString(36);\n}\nfunction Zn(t) {\n ze.length = 0;\n for (var e = t.getElementsByTagName(\"input\"), n = e.length; n--; ) {\n var o = e[n];\n o.checked && ze.push(o);\n }\n}\nfunction He(t) {\n return setTimeout(t, 0);\n}\nfunction st(t) {\n return clearTimeout(t);\n}\nVe && S(document, \"touchmove\", function(t) {\n (p.active || ve) && t.cancelable && t.preventDefault();\n});\np.utils = {\n on: S,\n off: E,\n css: h,\n find: jt,\n is: function(e, n) {\n return !!Q(e, n, e, !1);\n },\n extend: Fn,\n throttle: zt,\n closest: Q,\n toggleClass: V,\n clone: Vt,\n index: J,\n nextTick: He,\n cancelNextTick: st,\n detectDirection: Kt,\n getChild: we\n};\np.get = function(t) {\n return t[q];\n};\np.mount = function() {\n for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++)\n e[n] = arguments[n];\n e[0].constructor === Array && (e = e[0]), e.forEach(function(o) {\n if (!o.prototype || !o.prototype.constructor)\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(o));\n o.utils && (p.utils = ne(ne({}, p.utils), o.utils)), Ne.mount(o);\n });\n};\np.create = function(t, e) {\n return new p(t, e);\n};\np.version = Nn;\nvar N = [], De, ut, ct = !1, ot, rt, Ue, _e;\nfunction Qn() {\n function t() {\n this.defaults = {\n scroll: !0,\n forceAutoScrollFallback: !1,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: !0\n };\n for (var e in this)\n e.charAt(0) === \"_\" && typeof this[e] == \"function\" && (this[e] = this[e].bind(this));\n }\n return t.prototype = {\n dragStarted: function(n) {\n var o = n.originalEvent;\n this.sortable.nativeDraggable ? S(document, \"dragover\", this._handleAutoScroll) : this.options.supportPointer ? S(document, \"pointermove\", this._handleFallbackAutoScroll) : o.touches ? S(document, \"touchmove\", this._handleFallbackAutoScroll) : S(document, \"mousemove\", this._handleFallbackAutoScroll);\n },\n dragOverCompleted: function(n) {\n var o = n.originalEvent;\n !this.options.dragOverBubble && !o.rootEl && this._handleAutoScroll(o);\n },\n drop: function() {\n this.sortable.nativeDraggable ? E(document, \"dragover\", this._handleAutoScroll) : (E(document, \"pointermove\", this._handleFallbackAutoScroll), E(document, \"touchmove\", this._handleFallbackAutoScroll), E(document, \"mousemove\", this._handleFallbackAutoScroll)), Rt(), Le(), Rn();\n },\n nulling: function() {\n Ue = ut = De = ct = _e = ot = rt = null, N.length = 0;\n },\n _handleFallbackAutoScroll: function(n) {\n this._handleAutoScroll(n, !0);\n },\n _handleAutoScroll: function(n, o) {\n var r = this, i = (n.touches ? n.touches[0] : n).clientX, a = (n.touches ? n.touches[0] : n).clientY, l = document.elementFromPoint(i, a);\n if (Ue = n, o || this.options.forceAutoScrollFallback || xe || ae || Te) {\n it(n, this.options, l, o);\n var s = ce(l, !0);\n ct && (!_e || i !== ot || a !== rt) && (_e && Rt(), _e = setInterval(function() {\n var u = ce(document.elementFromPoint(i, a), !0);\n u !== s && (s = u, Le()), it(n, r.options, u, o);\n }, 10), ot = i, rt = a);\n } else {\n if (!this.options.bubbleScroll || ce(l, !0) === te()) {\n Le();\n return;\n }\n it(n, this.options, ce(l, !1), !1);\n }\n }\n }, ie(t, {\n pluginName: \"scroll\",\n initializeByDefault: !0\n });\n}\nfunction Le() {\n N.forEach(function(t) {\n clearInterval(t.pid);\n }), N = [];\n}\nfunction Rt() {\n clearInterval(_e);\n}\nvar it = zt(function(t, e, n, o) {\n if (e.scroll) {\n var r = (t.touches ? t.touches[0] : t).clientX, i = (t.touches ? t.touches[0] : t).clientY, a = e.scrollSensitivity, l = e.scrollSpeed, s = te(), u = !1, d;\n ut !== n && (ut = n, Le(), De = e.scroll, d = e.scrollFn, De === !0 && (De = ce(n, !0)));\n var f = 0, m = De;\n do {\n var y = m, b = P(y), w = b.top, L = b.bottom, G = b.left, R = b.right, j = b.width, B = b.height, X = void 0, K = void 0, oe = y.scrollWidth, le = y.scrollHeight, k = h(y), v = y.scrollLeft, D = y.scrollTop;\n y === s ? (X = j < oe && (k.overflowX === \"auto\" || k.overflowX === \"scroll\" || k.overflowX === \"visible\"), K = B < le && (k.overflowY === \"auto\" || k.overflowY === \"scroll\" || k.overflowY === \"visible\")) : (X = j < oe && (k.overflowX === \"auto\" || k.overflowX === \"scroll\"), K = B < le && (k.overflowY === \"auto\" || k.overflowY === \"scroll\"));\n var A = X && (Math.abs(R - r) <= a && v + j < oe) - (Math.abs(G - r) <= a && !!v), I = K && (Math.abs(L - i) <= a && D + B < le) - (Math.abs(w - i) <= a && !!D);\n if (!N[f])\n for (var _ = 0; _ <= f; _++)\n N[_] || (N[_] = {});\n (N[f].vx != A || N[f].vy != I || N[f].el !== y) && (N[f].el = y, N[f].vx = A, N[f].vy = I, clearInterval(N[f].pid), (A != 0 || I != 0) && (u = !0, N[f].pid = setInterval(function() {\n o && this.layer === 0 && p.active._onTouchMove(Ue);\n var x = N[this.layer].vy ? N[this.layer].vy * l : 0, M = N[this.layer].vx ? N[this.layer].vx * l : 0;\n typeof d == \"function\" && d.call(p.dragged.parentNode[q], M, x, t, Ue, N[this.layer].el) !== \"continue\" || Ut(N[this.layer].el, M, x);\n }.bind({\n layer: f\n }), 24))), f++;\n } while (e.bubbleScroll && m !== s && (m = ce(m, !1)));\n ct = u;\n }\n}, 30), en = function(e) {\n var n = e.originalEvent, o = e.putSortable, r = e.dragEl, i = e.activeSortable, a = e.dispatchSortableEvent, l = e.hideGhostForTarget, s = e.unhideGhostForTarget;\n if (n) {\n var u = o || i;\n l();\n var d = n.changedTouches && n.changedTouches.length ? n.changedTouches[0] : n, f = document.elementFromPoint(d.clientX, d.clientY);\n s(), u && !u.el.contains(f) && (a(\"spill\"), this.onSpill({\n dragEl: r,\n putSortable: o\n }));\n }\n};\nfunction pt() {\n}\npt.prototype = {\n startIndex: null,\n dragStart: function(e) {\n var n = e.oldDraggableIndex;\n this.startIndex = n;\n },\n onSpill: function(e) {\n var n = e.dragEl, o = e.putSortable;\n this.sortable.captureAnimationState(), o && o.captureAnimationState();\n var r = we(this.sortable.el, this.startIndex, this.options);\n r ? this.sortable.el.insertBefore(n, r) : this.sortable.el.appendChild(n), this.sortable.animateAll(), o && o.animateAll();\n },\n drop: en\n};\nie(pt, {\n pluginName: \"revertOnSpill\"\n});\nfunction gt() {\n}\ngt.prototype = {\n onSpill: function(e) {\n var n = e.dragEl, o = e.putSortable, r = o || this.sortable;\n r.captureAnimationState(), n.parentNode && n.parentNode.removeChild(n), r.animateAll();\n },\n drop: en\n};\nie(gt, {\n pluginName: \"removeOnSpill\"\n});\np.mount(new Qn());\np.mount(gt, pt);\nfunction eo(t) {\n return t == null ? t : JSON.parse(JSON.stringify(t));\n}\nfunction to(t) {\n dt() && sn(t);\n}\nfunction no(t) {\n dt() ? un(t) : kt(t);\n}\nlet tn = null, nn = null;\nfunction Xt(t = null, e = null) {\n tn = t, nn = e;\n}\nfunction oo() {\n return {\n data: tn,\n clonedData: nn\n };\n}\nconst Yt = Symbol(\"cloneElement\");\nfunction on(...t) {\n var le, k;\n const e = (le = dt()) == null ? void 0 : le.proxy;\n let n = null;\n const o = t[0];\n let [, r, i] = t;\n Array.isArray(U(r)) || (i = r, r = null);\n let a = null;\n const {\n immediate: l = !0,\n clone: s = eo,\n forceFallback: u,\n fallbackOnBody: d,\n customUpdate: f\n } = (k = U(i)) != null ? k : {};\n function m(v) {\n var F;\n const { from: D, oldIndex: A, item: I } = v, _ = Array.from(D.childNodes);\n n = u && !d ? _.slice(0, -1) : _;\n const x = U((F = U(r)) == null ? void 0 : F[A]), M = s(x);\n Xt(x, M), I[Yt] = M;\n }\n function y(v) {\n const D = v.item[Yt];\n if (!wn(D)) {\n if (Ke(v.item), qe(r)) {\n const A = [...U(r)];\n r.value = _t(A, v.newDraggableIndex, D);\n return;\n }\n _t(U(r), v.newDraggableIndex, D);\n }\n }\n function b(v) {\n const { from: D, item: A, oldIndex: I, oldDraggableIndex: _, pullMode: x, clone: M } = v;\n if (Tt(D, A, I), x === \"clone\") {\n Ke(M);\n return;\n }\n if (qe(r)) {\n const F = [...U(r)];\n r.value = Dt(F, _);\n return;\n }\n Dt(U(r), _);\n }\n function w(v) {\n if (f) {\n f(v);\n return;\n }\n const { from: D, item: A, oldIndex: I, oldDraggableIndex: _, newDraggableIndex: x } = v;\n if (Ke(A), Tt(D, A, I), qe(r)) {\n const M = [...U(r)];\n r.value = St(\n M,\n _,\n x\n );\n return;\n }\n St(U(r), _, x);\n }\n function L(v) {\n const { newIndex: D, oldIndex: A, from: I, to: _ } = v;\n let x = null;\n const M = D === A && I === _;\n try {\n if (M) {\n let F = null;\n n == null || n.some((ee, Ee) => {\n if (F && (n == null ? void 0 : n.length) !== _.childNodes.length)\n return I.insertBefore(F, ee.nextSibling), !0;\n const mt = _.childNodes[Ee];\n F = _ == null ? void 0 : _.replaceChild(ee, mt);\n });\n }\n } catch (F) {\n x = F;\n } finally {\n n = null;\n }\n kt(() => {\n if (Xt(), x)\n throw x;\n });\n }\n const G = {\n onUpdate: w,\n onStart: m,\n onAdd: y,\n onRemove: b,\n onEnd: L\n };\n function R(v) {\n const D = U(o);\n return v || (v = En(D) ? Sn(D, e == null ? void 0 : e.$el) : D), v && !Tn(v) && (v = v.$el), v || vn(\"Root element not found\"), v;\n }\n function j() {\n var I;\n const _ = (I = U(i)) != null ? I : {}, { immediate: v, clone: D } = _, A = $e(_, [\"immediate\", \"clone\"]);\n return Ct(A, (x, M) => {\n Cn(x) && (A[x] = (F, ...ee) => {\n const Ee = oo();\n return On(F, Ee), M(F, ...ee);\n });\n }), _n(\n r === null ? {} : G,\n A\n );\n }\n const B = (v) => {\n v = R(v), a && X.destroy(), a = new p(v, j());\n };\n ln(\n () => i,\n () => {\n a && Ct(j(), (v, D) => {\n a == null || a.option(v, D);\n });\n },\n { deep: !0 }\n );\n const X = {\n option: (v, D) => a == null ? void 0 : a.option(v, D),\n destroy: () => {\n a == null || a.destroy(), a = null;\n },\n save: () => a == null ? void 0 : a.save(),\n toArray: () => a == null ? void 0 : a.toArray(),\n closest: (...v) => a == null ? void 0 : a.closest(...v)\n }, K = () => X == null ? void 0 : X.option(\"disabled\", !0), oe = () => X == null ? void 0 : X.option(\"disabled\", !1);\n return no(() => {\n l && B();\n }), to(X.destroy), fe({ start: B, pause: K, resume: oe }, X);\n}\nconst ft = [\n \"update\",\n \"start\",\n \"add\",\n \"remove\",\n \"choose\",\n \"unchoose\",\n \"end\",\n \"sort\",\n \"filter\",\n \"clone\",\n \"move\",\n \"change\"\n], ro = [\n \"clone\",\n \"animation\",\n \"ghostClass\",\n \"group\",\n \"sort\",\n \"disabled\",\n \"store\",\n \"handle\",\n \"draggable\",\n \"swapThreshold\",\n \"invertSwap\",\n \"invertedSwapThreshold\",\n \"removeCloneOnHide\",\n \"direction\",\n \"chosenClass\",\n \"dragClass\",\n \"ignore\",\n \"filter\",\n \"preventOnFilter\",\n \"easing\",\n \"setData\",\n \"dropBubble\",\n \"dragoverBubble\",\n \"dataIdAttr\",\n \"delay\",\n \"delayOnTouchOnly\",\n \"touchStartThreshold\",\n \"forceFallback\",\n \"fallbackClass\",\n \"fallbackOnBody\",\n \"fallbackTolerance\",\n \"fallbackOffset\",\n \"supportPointer\",\n \"emptyInsertThreshold\",\n \"scroll\",\n \"forceAutoScrollFallback\",\n \"scrollSensitivity\",\n \"scrollSpeed\",\n \"bubbleScroll\",\n \"modelValue\",\n \"tag\",\n \"target\",\n \"customUpdate\",\n ...ft.map((t) => `on${t.replace(/^\\S/, (e) => e.toUpperCase())}`)\n], lo = cn({\n name: \"VueDraggable\",\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: ro,\n emits: [\"update:modelValue\", ...ft],\n setup(t, { slots: e, emit: n, expose: o, attrs: r }) {\n const i = ft.reduce((d, f) => {\n const m = `on${f.replace(/^\\S/, (y) => y.toUpperCase())}`;\n return d[m] = (...y) => n(f, ...y), d;\n }, {}), a = Et(() => {\n const y = fn(t), { modelValue: d } = y, f = $e(y, [\"modelValue\"]), m = Object.entries(f).reduce((b, [w, L]) => {\n const G = U(L);\n return G !== void 0 && (b[w] = G), b;\n }, {});\n return fe(fe({}, i), yn(fe(fe({}, r), m)));\n }), l = Et({\n get: () => t.modelValue,\n set: (d) => n(\"update:modelValue\", d)\n }), s = dn(), u = hn(\n on(t.target || s, l, a)\n );\n return o(u), () => {\n var d;\n return pn(t.tag || \"div\", { ref: s }, (d = e == null ? void 0 : e.default) == null ? void 0 : d.call(e, u));\n };\n }\n}), Bt = {\n mounted: \"mounted\",\n unmounted: \"unmounted\"\n}, at = /* @__PURE__ */ new WeakMap(), so = {\n [Bt.mounted](t, e) {\n const n = gn(e.value) ? [e.value] : e.value, [o, r] = n, i = on(t, o, r);\n at.set(t, i.destroy);\n },\n [Bt.unmounted](t) {\n var e;\n (e = at.get(t)) == null || e(), at.delete(t);\n }\n};\nexport {\n lo as VueDraggable,\n on as useDraggable,\n so as vDraggable\n};\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport {\n CoButton,\n CoIconButton,\n CoInput,\n CoRating,\n CoSelect,\n CoSlider,\n CoSwitch,\n} from '@prolibu-suite/cobalt-vue';\nimport { FIELD_CATALOG } from '../fieldCatalog';\nimport { FIELD_DEFAULTS, useSchemaStore } from '../stores/schema';\nimport EditableText from './EditableText.vue';\n\nconst props = defineProps<{\n pageIdx: number;\n fieldName: string;\n}>();\n\nconst schema = useSchemaStore();\n\nconst def = computed<Record<string, any>>(\n () => schema.data.pages[props.pageIdx]?.fields[props.fieldName] ?? {},\n);\n\n/**\n * The field's catalog entry — used for the icon and the type switcher's\n * initial value. Mirrors the lookup in `FieldCard.vue`.\n */\nconst catalogEntry = computed(() => {\n const d = def.value;\n if (d.uiCom === 'TextArea') return FIELD_CATALOG.find((x) => x.id === 'textarea');\n if (d.uiCom === 'Rating') return FIELD_CATALOG.find((x) => x.id === 'rating');\n if (d.uiCom === 'Slider') return FIELD_CATALOG.find((x) => x.id === 'slider');\n if (d.uiCom === 'ColorPicker') return FIELD_CATALOG.find((x) => x.id === 'color');\n if (d.uiCom === 'Section') return FIELD_CATALOG.find((x) => x.id === 'section');\n if (d.uiCom === 'File') return FIELD_CATALOG.find((x) => x.id === 'file');\n if (d.ref) return FIELD_CATALOG.find((x) => x.id === 'ref');\n if (Array.isArray(d.enum)) return FIELD_CATALOG.find((x) => x.id === 'select');\n if (d.type === 'Number') return FIELD_CATALOG.find((x) => x.id === 'number');\n if (d.type === 'Date') return FIELD_CATALOG.find((x) => x.id === 'date');\n if (d.type === 'Boolean') return FIELD_CATALOG.find((x) => x.id === 'boolean');\n return FIELD_CATALOG.find((x) => x.id === 'text');\n});\n\nconst kind = computed(() => catalogEntry.value?.id ?? 'text');\n\nconst TYPE_OPTIONS = FIELD_CATALOG.map((c) => ({ label: c.label, value: c.id }));\n\n// ── Event detail normalizer (Cobalt mixes `value` vs `checked` vs raw) ────\nfunction detailValue(ev: CustomEvent): any {\n const d = ev.detail;\n if (d != null && typeof d === 'object' && 'value' in d) return (d as any).value;\n if (d != null && typeof d === 'object' && 'checked' in d) return (d as any).checked;\n return d;\n}\n\n// ── Patches ──────────────────────────────────────────────────────────────\n\nfunction patch(key: string, value: any): void {\n schema.updateField(props.pageIdx, props.fieldName, { [key]: value });\n}\n\nfunction onRename(newName: string): void {\n if (!newName || newName === props.fieldName) return;\n try {\n schema.renameField(props.pageIdx, props.fieldName, newName);\n } catch (err) {\n // EditableText resyncs on next prop change; swallow + warn.\n console.warn('[builder] rename failed:', (err as Error).message);\n }\n}\n\nfunction collapse(): void {\n // Selecting the page deselects the field → collapses this card.\n schema.selectPage(props.pageIdx);\n}\n\nfunction duplicate(): void {\n schema.duplicateField(props.pageIdx, props.fieldName);\n}\n\nfunction remove(): void {\n schema.removeField(props.pageIdx, props.fieldName);\n}\n\n// ── Type switcher with attribute migration ───────────────────────────────\n\n/** Keys preserved across type changes — user-facing config that's portable. */\nconst PRESERVED_KEYS = [\n 'label',\n 'required',\n 'helperText',\n 'placeholder',\n 'full',\n 'hidden',\n 'disabled',\n 'readOnly',\n 'visibleIf',\n 'enableIf',\n 'requiredIf',\n] as const;\n\nfunction changeType(newKind: string): void {\n if (!newKind || newKind === kind.value) return;\n const factory = FIELD_DEFAULTS[newKind];\n const baseDefaults = factory ? factory() : { type: 'String' };\n const preserved: Record<string, any> = {};\n for (const k of PRESERVED_KEYS) {\n if (def.value[k] !== undefined) preserved[k] = def.value[k];\n }\n schema.replaceFieldDef(props.pageIdx, props.fieldName, {\n ...baseDefaults,\n ...preserved,\n });\n}\n\n// ── Select options editor ────────────────────────────────────────────────\n\nconst options = computed<string[]>(() =>\n Array.isArray(def.value.enum) ? def.value.enum : [],\n);\n\nfunction updateOption(idx: number, value: string): void {\n const next = [...options.value];\n next[idx] = value;\n patch('enum', next);\n}\n\nfunction removeOption(idx: number): void {\n const next = options.value.filter((_, i) => i !== idx);\n patch('enum', next.length ? next : undefined);\n}\n\nfunction addOption(): void {\n const next = [...options.value, `Option ${options.value.length + 1}`];\n patch('enum', next);\n}\n\n// ── Drag and drop reorder for select options ─────────────────────────────\n\nconst draggingOptionIdx = ref<number | null>(null);\nconst optionDropTarget = ref<number | null>(null);\n\nfunction onOptionDragStart(ev: DragEvent, idx: number): void {\n if (!ev.dataTransfer) return;\n draggingOptionIdx.value = idx;\n ev.dataTransfer.setData('application/cobalt-option-move', String(idx));\n ev.dataTransfer.effectAllowed = 'move';\n}\n\nfunction onOptionDragOver(ev: DragEvent, idx: number): void {\n if (draggingOptionIdx.value === null) return;\n ev.preventDefault();\n if (ev.dataTransfer) ev.dataTransfer.dropEffect = 'move';\n optionDropTarget.value = idx;\n}\n\nfunction onOptionDragLeave(): void {\n optionDropTarget.value = null;\n}\n\nfunction onOptionDrop(ev: DragEvent, idx: number): void {\n ev.preventDefault();\n const from = draggingOptionIdx.value;\n draggingOptionIdx.value = null;\n optionDropTarget.value = null;\n if (from === null || from === idx) return;\n const next = [...options.value];\n const [moved] = next.splice(from, 1);\n // When dragging downwards, the visual gap shifts up by one after the splice.\n const target = from < idx ? idx - 1 : idx;\n next.splice(target, 0, moved);\n patch('enum', next);\n}\n\nfunction onOptionDragEnd(): void {\n draggingOptionIdx.value = null;\n optionDropTarget.value = null;\n}\n\n// ── \"Other (describe)\" toggle for selects ────────────────────────────────\n// Convention: an option literally equal to \"Other\" (case-insensitive) means\n// \"Other (describe)\". Cobalt's <co-select> doesn't have a built-in escape\n// hatch for this yet, so for now we encode it as a regular enum entry and\n// hint the builder UI about it via this toggle.\n\nconst hasOther = computed(() =>\n options.value.some((o) => String(o).trim().toLowerCase() === 'other'),\n);\n\nfunction toggleOther(): void {\n if (hasOther.value) {\n patch(\n 'enum',\n options.value.filter((o) => String(o).trim().toLowerCase() !== 'other'),\n );\n } else {\n patch('enum', [...options.value, 'Other']);\n }\n}\n\n// ── Mini-toolbar (Google Forms-style) ────────────────────────────────────\n\nconst insertOpen = ref(false);\n\n/** Subset of catalog shown in the quick-insert popover. */\nconst INSERT_OPTIONS = FIELD_CATALOG.filter((c) =>\n ['text', 'textarea', 'number', 'date', 'select', 'boolean', 'rating'].includes(c.id),\n);\n\nfunction insertAfter(newKind: string): void {\n insertOpen.value = false;\n schema.insertFieldAfter(props.pageIdx, props.fieldName, newKind);\n}\n\nfunction insertSection(): void {\n insertOpen.value = false;\n schema.insertFieldAfter(props.pageIdx, props.fieldName, 'section');\n}\n\n// ── Preview helpers ──────────────────────────────────────────────────────\n\nconst previewInputType = computed<string>(() => {\n switch (kind.value) {\n case 'number': return 'number';\n case 'date': return 'date';\n case 'color': return 'color';\n case 'file': return 'file';\n default: return 'text';\n }\n});\n\nfunction toNumOrUndef(v: any): number | undefined {\n if (v === '' || v == null) return undefined;\n const n = Number(v);\n return Number.isFinite(n) ? n : undefined;\n}\n\n// Reactive defaults for the slider preview when the schema is missing values.\nconst sliderMin = computed<number>(() => Number(def.value.min ?? 0));\nconst sliderMax = computed<number>(() => Number(def.value.max ?? 100));\nconst sliderStep = computed<number>(() => Number(def.value.step ?? 1));\nconst sliderPreviewValue = computed<number>(() => sliderMin.value);\n\nconst ratingMax = computed<number>(() => Number(def.value.max ?? 5));\n</script>\n\n<template>\n <div class=\"expanded-wrap\" @click.stop>\n <div class=\"expanded\">\n <!-- ── HEADER ─────────────────────────────────────────────────────── -->\n <header class=\"expanded__head\">\n <span class=\"expanded__icon\">\n <co-icon v-if=\"catalogEntry\" :name=\"catalogEntry.icon\" size=\"20\" />\n </span>\n\n <div class=\"expanded__title\">\n <EditableText\n class=\"expanded__label\"\n :model-value=\"def.label || ''\"\n placeholder=\"Untitled field\"\n @update:model-value=\"patch('label', $event)\"\n />\n <div class=\"expanded__meta\">\n <EditableText\n class=\"expanded__id\"\n :model-value=\"fieldName\"\n placeholder=\"field_id\"\n @update:model-value=\"onRename\"\n />\n <span class=\"expanded__sep\">·</span>\n <span>{{ catalogEntry?.label || 'Field' }}</span>\n </div>\n </div>\n\n <div class=\"expanded__head-actions\">\n <CoSelect\n class=\"expanded__type\"\n :options=\"JSON.stringify(TYPE_OPTIONS)\"\n :value=\"kind\"\n @coChange=\"changeType(detailValue($event))\"\n />\n <CoIconButton\n icon=\"x\"\n variant=\"outlined\"\n size=\"sm\"\n label=\"Collapse\"\n @click=\"collapse\"\n />\n </div>\n </header>\n\n <!-- ── BODY ───────────────────────────────────────────────────────── -->\n <div class=\"expanded__body\">\n <!-- TEXT / TEXTAREA / NUMBER / DATE / COLOR / FILE -->\n <template v-if=\"['text','textarea','number','date','color','file'].includes(kind)\">\n <CoInput\n label=\"Placeholder\"\n :value=\"def.placeholder || ''\"\n @coInput=\"patch('placeholder', detailValue($event))\"\n />\n\n <div class=\"expanded__preview\">\n <div class=\"expanded__preview-label\">Preview</div>\n <CoInput\n :label=\"def.label\"\n :placeholder=\"def.placeholder\"\n :helper-text=\"def.helperText\"\n :type=\"previewInputType\"\n :multiline=\"kind === 'textarea' || undefined\"\n :required=\"!!def.required\"\n disabled\n />\n </div>\n </template>\n\n <!-- SELECT -->\n <template v-else-if=\"kind === 'select'\">\n <div class=\"expanded__options\">\n <div class=\"expanded__options-label\">Options</div>\n\n <div\n v-for=\"(opt, idx) in options\"\n :key=\"idx\"\n class=\"expanded__option\"\n :class=\"{\n 'is-drop-target': optionDropTarget === idx && draggingOptionIdx !== idx,\n 'is-dragging': draggingOptionIdx === idx,\n }\"\n draggable=\"true\"\n @dragstart=\"onOptionDragStart($event, idx)\"\n @dragover=\"onOptionDragOver($event, idx)\"\n @dragleave=\"onOptionDragLeave\"\n @drop=\"onOptionDrop($event, idx)\"\n @dragend=\"onOptionDragEnd\"\n >\n <span class=\"expanded__option-grip\" aria-hidden=\"true\">⋮⋮</span>\n <span class=\"expanded__option-bullet\" aria-hidden=\"true\" />\n <CoInput\n class=\"expanded__option-input\"\n :value=\"opt\"\n :placeholder=\"`Option ${idx + 1}`\"\n @coInput=\"updateOption(idx, detailValue($event))\"\n />\n <CoIconButton\n icon=\"x\"\n variant=\"outlined\"\n size=\"xs\"\n label=\"Remove option\"\n @click=\"removeOption(idx)\"\n />\n </div>\n\n <div class=\"expanded__options-foot\">\n <CoButton\n label=\"Add option\"\n variant=\"stroke\"\n size=\"s\"\n icon-left=\"plus\"\n @click=\"addOption\"\n />\n <button\n class=\"expanded__other-toggle\"\n :class=\"{ 'is-active': hasOther }\"\n @click=\"toggleOther\"\n >\n <co-icon :name=\"hasOther ? 'check-square' : 'square'\" size=\"14\" />\n <span>Add \"Other (describe)\"</span>\n </button>\n </div>\n </div>\n </template>\n\n <!-- BOOLEAN -->\n <template v-else-if=\"kind === 'boolean'\">\n <div class=\"expanded__preview\">\n <div class=\"expanded__preview-label\">Preview</div>\n <CoSwitch :label=\"def.label || fieldName\" :helper-text=\"def.helperText\" disabled />\n </div>\n </template>\n\n <!-- RATING -->\n <template v-else-if=\"kind === 'rating'\">\n <div class=\"expanded__row\">\n <CoInput\n label=\"Max stars\"\n type=\"number\"\n :value=\"String(ratingMax)\"\n @coInput=\"patch('max', toNumOrUndef(detailValue($event)) ?? 5)\"\n />\n </div>\n <div class=\"expanded__preview\">\n <div class=\"expanded__preview-label\">Preview</div>\n <CoRating :label=\"def.label || fieldName\" :max=\"ratingMax\" :value=\"0\" read-only />\n </div>\n </template>\n\n <!-- SLIDER -->\n <template v-else-if=\"kind === 'slider'\">\n <div class=\"expanded__row expanded__row--3\">\n <CoInput\n label=\"Min\"\n type=\"number\"\n :value=\"String(sliderMin)\"\n @coInput=\"patch('min', toNumOrUndef(detailValue($event)) ?? 0)\"\n />\n <CoInput\n label=\"Max\"\n type=\"number\"\n :value=\"String(sliderMax)\"\n @coInput=\"patch('max', toNumOrUndef(detailValue($event)) ?? 100)\"\n />\n <CoInput\n label=\"Step\"\n type=\"number\"\n :value=\"String(sliderStep)\"\n @coInput=\"patch('step', toNumOrUndef(detailValue($event)) ?? 1)\"\n />\n </div>\n <div class=\"expanded__preview\">\n <div class=\"expanded__preview-label\">Preview</div>\n <CoSlider\n :label=\"def.label || fieldName\"\n :min=\"sliderMin\"\n :max=\"sliderMax\"\n :step=\"sliderStep\"\n :value=\"sliderPreviewValue\"\n show-value\n disabled\n />\n </div>\n </template>\n\n <!-- REF -->\n <template v-else-if=\"kind === 'ref'\">\n <div class=\"expanded__row expanded__row--2\">\n <CoInput\n label=\"Model\"\n placeholder=\"Company, User, Deal…\"\n :value=\"def.ref || ''\"\n @coInput=\"patch('ref', detailValue($event))\"\n />\n <CoInput\n label=\"Display field\"\n placeholder=\"name\"\n :value=\"def.displayName || ''\"\n @coInput=\"patch('displayName', detailValue($event))\"\n />\n </div>\n <div class=\"expanded__preview\">\n <div class=\"expanded__preview-label\">Preview</div>\n <CoInput\n :label=\"def.label || fieldName\"\n :placeholder=\"`Search ${def.ref || 'model'}…`\"\n icon-left=\"magnifying-glass\"\n disabled\n />\n </div>\n </template>\n\n <!-- SECTION (not a field — just a header/divider in the rendered form) -->\n <template v-else-if=\"kind === 'section'\">\n <CoInput\n label=\"Description\"\n multiline\n placeholder=\"Optional explanatory text shown under the section title.\"\n :value=\"def.helperText || ''\"\n @coInput=\"patch('helperText', detailValue($event))\"\n />\n <div class=\"expanded__preview\">\n <div class=\"expanded__preview-label\">Preview</div>\n <div class=\"expanded__section-preview\">\n <h4>{{ def.label || 'Section title' }}</h4>\n <p v-if=\"def.helperText\">{{ def.helperText }}</p>\n </div>\n </div>\n </template>\n\n <!-- Helper text — common to most types (sections render their own description). -->\n <CoInput\n v-if=\"kind !== 'section'\"\n label=\"Helper text\"\n :value=\"def.helperText || ''\"\n placeholder=\"Optional helper / hint shown below the field\"\n @coInput=\"patch('helperText', detailValue($event))\"\n />\n </div>\n\n <!-- ── FOOTER ─────────────────────────────────────────────────────── -->\n <footer class=\"expanded__foot\">\n <CoSwitch\n :checked=\"!!def.required\"\n label=\"Required\"\n @coChange=\"patch('required', detailValue($event))\"\n />\n\n <div class=\"expanded__foot-spacer\" />\n\n <button class=\"expanded__foot-btn\" @click=\"duplicate\">\n <co-icon name=\"copy\" size=\"14\" />\n <span>Duplicate</span>\n </button>\n <button class=\"expanded__foot-btn expanded__foot-btn--danger\" @click=\"remove\">\n <co-icon name=\"trash\" size=\"14\" />\n <span>Delete</span>\n </button>\n </footer>\n </div>\n\n <!-- ── Mini-toolbar (Google Forms-style) ──────────────────────────── -->\n <aside class=\"mini-toolbar\" :class=\"{ 'is-open': insertOpen }\">\n <button\n class=\"mini-toolbar__btn\"\n title=\"Add field below\"\n @click.stop=\"insertOpen = !insertOpen\"\n >\n <co-icon name=\"plus\" size=\"16\" />\n </button>\n <button\n class=\"mini-toolbar__btn\"\n title=\"Add section below\"\n @click=\"insertSection\"\n >\n <co-icon name=\"minus\" size=\"16\" />\n </button>\n <button\n class=\"mini-toolbar__btn\"\n title=\"Duplicate\"\n @click=\"duplicate\"\n >\n <co-icon name=\"copy\" size=\"16\" />\n </button>\n\n <!-- Popover with type picker -->\n <div v-if=\"insertOpen\" class=\"mini-popover\" @click.stop>\n <div class=\"mini-popover__label\">Insert field below</div>\n <button\n v-for=\"entry in INSERT_OPTIONS\"\n :key=\"entry.id\"\n class=\"mini-popover__item\"\n @click=\"insertAfter(entry.id)\"\n >\n <co-icon :name=\"entry.icon\" size=\"16\" />\n <span>{{ entry.label }}</span>\n </button>\n </div>\n </aside>\n </div>\n</template>\n\n<style scoped>\n/* Wrapper holds the card + the floating mini-toolbar side by side, with\n * the toolbar peeking out to the right just like Google Forms. */\n.expanded-wrap {\n display: flex;\n align-items: flex-start;\n gap: var(--co-spacing-md, 12px);\n margin: 2px 0;\n position: relative;\n}\n\n.expanded {\n flex: 1;\n min-width: 0;\n background: var(--fb-panel);\n border: 1px solid var(--co-color-primary-azul, #2563eb);\n border-radius: var(--co-border-radius-sm, 12px);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--co-color-primary-azul) 12%, transparent), var(--fb-shadow-md);\n overflow: hidden;\n}\n\n/* Mini-toolbar (floating right). */\n.mini-toolbar {\n position: sticky;\n top: var(--co-spacing-lg, 16px);\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: var(--co-spacing-xs, 4px);\n background: var(--fb-panel);\n border: 1px solid var(--fb-border);\n border-radius: var(--co-border-radius-full, 9999px);\n box-shadow: var(--fb-shadow-md);\n flex-shrink: 0;\n}\n\n.mini-toolbar__btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 0;\n background: transparent;\n border-radius: var(--co-border-radius-full, 9999px);\n color: var(--co-semantic-text-secondary, #6b7280);\n transition: all 120ms;\n}\n\n.mini-toolbar__btn:hover {\n background: color-mix(in srgb, var(--co-color-primary-azul) 8%, transparent);\n color: var(--co-color-primary-azul, #2563eb);\n}\n\n.mini-toolbar.is-open .mini-toolbar__btn:first-child {\n background: var(--co-color-primary-azul, #2563eb);\n color: white;\n}\n\n/* The mini-toolbar sits flush with the right edge of the canvas, so\n * opening this popover to the right would push it under the properties\n * sidebar (where it gets clipped / hidden). Anchor it to the LEFT of the\n * toolbar — always inside the canvas viewport. */\n.mini-popover {\n position: absolute;\n top: 0;\n right: calc(100% + var(--co-spacing-sm, 8px));\n z-index: 10;\n min-width: 220px;\n padding: var(--co-spacing-xs, 6px);\n background: var(--fb-panel);\n border: 1px solid var(--fb-border);\n border-radius: var(--co-border-radius-xs, 10px);\n box-shadow: var(--fb-shadow-lg);\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.mini-popover__label {\n padding: 6px 10px 4px;\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n color: var(--co-semantic-text-muted, #9ca3af);\n}\n\n.mini-popover__item {\n display: flex;\n align-items: center;\n gap: var(--co-spacing-sm, 8px);\n padding: 8px 10px;\n border: 0;\n background: transparent;\n border-radius: var(--co-border-radius-xxs, 6px);\n font-size: var(--co-font-size-13, 13px);\n color: var(--co-semantic-text-default, #111827);\n text-align: left;\n width: 100%;\n}\n\n.mini-popover__item:hover {\n background: var(--fb-bg);\n}\n\n.mini-popover__item co-icon {\n color: var(--co-color-primary-azul, #2563eb);\n}\n\n/* ── Header ─────────────────────────────────────────────────────────── */\n.expanded__head {\n display: flex;\n align-items: center;\n gap: var(--co-spacing-md, 12px);\n padding: var(--co-spacing-md, 14px) var(--co-spacing-lg, 16px);\n border-bottom: 1px solid var(--fb-border);\n background: var(--fb-panel-soft);\n}\n\n.expanded__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border-radius: var(--co-border-radius-xs, 8px);\n background: color-mix(in srgb, var(--co-color-primary-azul) 10%, transparent);\n color: var(--co-color-primary-azul, #2563eb);\n flex-shrink: 0;\n}\n\n.expanded__title {\n flex: 1;\n min-width: 0;\n}\n\n.expanded__label {\n display: inline-block;\n font-size: var(--co-font-size-15, 15px);\n font-weight: 600;\n color: var(--co-semantic-text-default, #111827);\n line-height: 1.3;\n}\n\n.expanded__meta {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 3px;\n font-size: var(--co-font-size-12, 12px);\n color: var(--co-semantic-text-secondary, #6b7280);\n}\n\n.expanded__id {\n font-family: ui-monospace, Menlo, monospace;\n font-size: 11px;\n padding: 2px 7px;\n border-radius: 4px;\n background: var(--fb-bg);\n color: var(--co-semantic-text-default, #111827);\n}\n\n.expanded__sep { color: var(--co-semantic-text-muted, #9ca3af); }\n\n.expanded__head-actions {\n display: flex;\n align-items: center;\n gap: var(--co-spacing-sm, 8px);\n flex-shrink: 0;\n}\n\n.expanded__type {\n min-width: 180px;\n}\n\n/* ── Body ───────────────────────────────────────────────────────────── */\n.expanded__body {\n display: flex;\n flex-direction: column;\n gap: var(--co-spacing-md, 14px);\n padding: var(--co-spacing-lg, 18px) var(--co-spacing-lg, 18px);\n}\n\n.expanded__preview {\n display: flex;\n flex-direction: column;\n gap: var(--co-spacing-xs, 6px);\n padding: var(--co-spacing-md, 12px);\n background: var(--fb-bg);\n border: 1px dashed var(--fb-border);\n border-radius: var(--co-border-radius-xs, 8px);\n}\n\n.expanded__preview-label {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--co-semantic-text-muted, #9ca3af);\n}\n\n/* Multi-column row for compact inputs (slider min/max/step, ref model/display). */\n.expanded__row {\n display: grid;\n gap: var(--co-spacing-md, 12px);\n}\n\n.expanded__row--2 { grid-template-columns: 1fr 1fr; }\n.expanded__row--3 { grid-template-columns: 1fr 1fr 1fr; }\n\n.expanded__section-preview {\n padding: var(--co-spacing-sm, 8px) 0;\n}\n\n.expanded__section-preview h4 {\n margin: 0 0 4px;\n font-size: var(--co-font-size-16, 16px);\n font-weight: 600;\n color: var(--co-semantic-text-default, #111827);\n border-bottom: 1px solid var(--fb-border);\n padding-bottom: 6px;\n}\n\n.expanded__section-preview p {\n margin: 0;\n font-size: var(--co-font-size-13, 13px);\n color: var(--co-semantic-text-secondary, #6b7280);\n}\n\n/* ── Options (select editor) ────────────────────────────────────────── */\n.expanded__options {\n display: flex;\n flex-direction: column;\n gap: var(--co-spacing-xs, 6px);\n}\n\n.expanded__options-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n color: var(--co-semantic-text-secondary, #6b7280);\n margin-bottom: 2px;\n}\n\n.expanded__options-foot {\n display: flex;\n align-items: center;\n gap: var(--co-spacing-md, 12px);\n margin-top: var(--co-spacing-xs, 4px);\n}\n\n.expanded__other-toggle {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px;\n border: 0;\n background: transparent;\n border-radius: var(--co-border-radius-xxs, 6px);\n font-size: var(--co-font-size-12, 12px);\n color: var(--co-semantic-text-secondary, #6b7280);\n transition: all 120ms;\n}\n\n.expanded__other-toggle:hover {\n background: var(--fb-bg);\n color: var(--co-semantic-text-default, #111827);\n}\n\n.expanded__other-toggle.is-active {\n color: var(--co-color-primary-azul, #2563eb);\n}\n\n.expanded__option {\n display: flex;\n align-items: center;\n gap: var(--co-spacing-sm, 8px);\n padding: 2px 0;\n border-radius: var(--co-border-radius-xxs, 6px);\n transition: background 100ms, opacity 100ms;\n}\n\n.expanded__option:hover .expanded__option-grip { opacity: 1; }\n\n.expanded__option.is-dragging {\n opacity: 0.4;\n}\n\n.expanded__option.is-drop-target {\n background: color-mix(in srgb, var(--co-color-primary-azul) 8%, transparent);\n box-shadow: 0 -2px 0 var(--co-color-primary-azul, #2563eb);\n}\n\n.expanded__option-grip {\n color: var(--co-semantic-text-muted, #9ca3af);\n letter-spacing: -2px;\n font-size: 14px;\n line-height: 1;\n cursor: grab;\n opacity: 0;\n transition: opacity 100ms;\n user-select: none;\n flex-shrink: 0;\n}\n\n.expanded__option-grip:active { cursor: grabbing; }\n\n.expanded__option-bullet {\n width: 16px;\n height: 16px;\n border: 2px solid var(--fb-border-strong);\n border-radius: var(--co-border-radius-full, 9999px);\n flex-shrink: 0;\n}\n\n.expanded__option-input {\n flex: 1;\n}\n\n/* ── Footer ─────────────────────────────────────────────────────────── */\n.expanded__foot {\n display: flex;\n align-items: center;\n gap: var(--co-spacing-md, 12px);\n padding: var(--co-spacing-sm, 10px) var(--co-spacing-lg, 16px);\n border-top: 1px solid var(--fb-border);\n background: var(--fb-panel-soft);\n}\n\n.expanded__foot-spacer { flex: 1; }\n\n.expanded__foot-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px;\n border: 0;\n background: transparent;\n border-radius: var(--co-border-radius-xxs, 6px);\n font-size: var(--co-font-size-12, 12px);\n font-weight: 500;\n color: var(--co-semantic-text-secondary, #6b7280);\n transition: all 120ms;\n}\n\n.expanded__foot-btn:hover {\n background: var(--fb-panel);\n color: var(--co-semantic-text-default, #111827);\n box-shadow: var(--fb-shadow-sm);\n}\n\n.expanded__foot-btn--danger:hover {\n color: var(--co-color-status-error, #aa2e1b);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { useSchemaStore } from '../stores/schema';\nimport { FIELD_CATALOG } from '../fieldCatalog';\nimport FieldCardExpanded from './FieldCardExpanded.vue';\n\nconst props = defineProps<{\n pageIdx: number;\n fieldIdx: number;\n fieldName: string;\n}>();\n\nconst schema = useSchemaStore();\n\nconst page = computed(() => schema.data.pages[props.pageIdx]);\nconst def = computed<Record<string, any>>(\n () => page.value?.fields[props.fieldName] ?? {},\n);\n\nconst isSelected = computed(\n () =>\n schema.selection.pageIdx === props.pageIdx &&\n schema.selection.fieldName === props.fieldName,\n);\n\nconst catalogEntry = computed(() => {\n const d = def.value;\n if (d.uiCom === 'TextArea') return FIELD_CATALOG.find((x) => x.id === 'textarea');\n if (d.uiCom === 'Rating') return FIELD_CATALOG.find((x) => x.id === 'rating');\n if (d.uiCom === 'Slider') return FIELD_CATALOG.find((x) => x.id === 'slider');\n if (d.uiCom === 'ColorPicker') return FIELD_CATALOG.find((x) => x.id === 'color');\n if (d.uiCom === 'Section') return FIELD_CATALOG.find((x) => x.id === 'section');\n if (d.uiCom === 'File') return FIELD_CATALOG.find((x) => x.id === 'file');\n if (d.ref) return FIELD_CATALOG.find((x) => x.id === 'ref');\n if (Array.isArray(d.enum)) return FIELD_CATALOG.find((x) => x.id === 'select');\n if (d.type === 'Number') return FIELD_CATALOG.find((x) => x.id === 'number');\n if (d.type === 'Date') return FIELD_CATALOG.find((x) => x.id === 'date');\n if (d.type === 'Boolean') return FIELD_CATALOG.find((x) => x.id === 'boolean');\n return FIELD_CATALOG.find((x) => x.id === 'text');\n});\n\nfunction select(): void {\n schema.selectField(props.pageIdx, props.fieldName);\n}\n\nfunction duplicate(ev: Event): void {\n ev.stopPropagation();\n schema.duplicateField(props.pageIdx, props.fieldName);\n}\n\nfunction remove(ev: Event): void {\n ev.stopPropagation();\n schema.removeField(props.pageIdx, props.fieldName);\n}\n\n// Reorder is handled by `vue-draggable-plus` on the parent <PageCard>;\n// it picks the `.field__grip` element as the drag handle.\n</script>\n\n<template>\n <FieldCardExpanded\n v-if=\"isSelected\"\n :page-idx=\"pageIdx\"\n :field-name=\"fieldName\"\n />\n\n <div\n v-else\n class=\"field\"\n @click.stop=\"select\"\n >\n <span class=\"field__grip\" aria-hidden=\"true\">⋮⋮</span>\n\n <span class=\"field__icon\">\n <co-icon v-if=\"catalogEntry\" :name=\"catalogEntry.icon\" size=\"18\" />\n </span>\n\n <div class=\"field__body\">\n <div class=\"field__name\">\n {{ def.label || fieldName }}\n <span v-if=\"def.required\" class=\"field__chip field__chip--warn\">required</span>\n <span v-if=\"def.visibleIf\" class=\"field__chip\">visibleIf</span>\n <span v-if=\"def.full\" class=\"field__chip\">full</span>\n </div>\n <div class=\"field__meta\">\n <span class=\"field__meta-id\">{{ fieldName }}</span>\n <span class=\"field__meta-sep\">·</span>\n <span>{{ catalogEntry?.label || def.type || 'String' }}</span>\n </div>\n </div>\n\n <div class=\"field__actions\" @click.stop>\n <button class=\"field__action\" title=\"Duplicate\" @click=\"duplicate\">\n <co-icon name=\"copy\" size=\"14\" />\n </button>\n <button class=\"field__action field__action--danger\" title=\"Delete\" @click=\"remove\">\n <co-icon name=\"trash\" size=\"14\" />\n </button>\n </div>\n </div>\n</template>\n\n<style scoped>\n.field {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--co-spacing-md, 12px);\n padding: var(--co-spacing-md, 14px) var(--co-spacing-lg, 16px);\n background: var(--fb-panel);\n border: 1px solid var(--fb-border);\n border-radius: var(--co-border-radius-sm, 10px);\n cursor: pointer;\n transition: all 120ms;\n margin: 2px 0;\n}\n\n.field:hover {\n border-color: var(--fb-border-strong);\n box-shadow: var(--fb-shadow-sm);\n}\n\n.field:hover .field__actions { opacity: 1; }\n.field:hover .field__grip { opacity: 1; }\n\n.field.is-selected {\n border-color: var(--co-color-primary-azul, #2563eb);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--co-color-primary-azul) 12%, transparent);\n}\n\n.field__grip {\n color: var(--co-semantic-text-muted, #9ca3af);\n letter-spacing: -2px;\n cursor: grab;\n opacity: 0.4;\n transition: opacity 120ms, color 120ms;\n user-select: none;\n font-size: 14px;\n line-height: 1;\n /* Padding gives a comfy click target — drag handles too small are\n * frustrating, especially on touch. */\n padding: 4px 2px;\n margin: -4px -2px;\n}\n\n.field:hover .field__grip {\n opacity: 1;\n color: var(--co-semantic-text-secondary, #6b7280);\n}\n\n.field__grip:active { cursor: grabbing; }\n\n.field__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--co-border-radius-xs, 8px);\n background: color-mix(in srgb, var(--co-color-primary-azul) 8%, transparent);\n color: var(--co-color-primary-azul, #2563eb);\n flex-shrink: 0;\n}\n\n.field__body { flex: 1; min-width: 0; }\n\n.field__name {\n display: flex;\n align-items: center;\n gap: var(--co-spacing-xs, 6px);\n font-weight: 600;\n font-size: var(--co-font-size-14, 14px);\n color: var(--co-semantic-text-default, #111827);\n line-height: 1.3;\n}\n\n.field__meta {\n display: flex;\n align-items: center;\n gap: var(--co-spacing-xs, 6px);\n margin-top: 3px;\n font-size: var(--co-font-size-12, 12px);\n color: var(--co-semantic-text-secondary, #6b7280);\n}\n\n.field__meta-id {\n font-family: ui-monospace, Menlo, monospace;\n background: var(--fb-bg);\n padding: 2px 7px;\n border-radius: 4px;\n font-size: 11px;\n}\n\n.field__meta-sep { color: var(--co-semantic-text-muted, #9ca3af); }\n\n.field__chip {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n padding: 2px 7px;\n border-radius: var(--co-border-radius-full, 9999px);\n background: var(--fb-bg);\n color: var(--co-semantic-text-secondary, #6b7280);\n}\n\n.field__chip--warn {\n background: rgba(253, 191, 0, 0.15);\n color: #92400e;\n}\n\n.field__actions {\n display: flex;\n gap: 2px;\n opacity: 0;\n transition: opacity 120ms;\n}\n\n.field.is-selected .field__actions { opacity: 1; }\n\n.field__action {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n border: 0;\n background: transparent;\n border-radius: var(--co-border-radius-xxs, 6px);\n color: var(--co-semantic-text-secondary, #6b7280);\n transition: all 120ms;\n}\n\n.field__action:hover {\n background: var(--fb-bg);\n color: var(--co-semantic-text-default, #111827);\n}\n\n.field__action--danger:hover {\n color: var(--co-color-status-error, #aa2e1b);\n background: rgba(170, 46, 27, 0.08);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { VueDraggable } from 'vue-draggable-plus';\nimport { useSchemaStore } from '../stores/schema';\nimport EditableText from './EditableText.vue';\nimport FieldCard from './FieldCard.vue';\n\nconst props = defineProps<{\n pageIdx: number;\n}>();\n\nconst schema = useSchemaStore();\n\nconst page = computed(() => schema.data.pages[props.pageIdx]);\nconst isSelected = computed(\n () => schema.selection.pageIdx === props.pageIdx && schema.selection.fieldName === null,\n);\n\n/**\n * Field-order array bound to vue-draggable-plus via v-model. The getter\n * derives from the store; the setter pushes the new order back via the\n * `reorderFieldsByNames` helper (which validates + snapshots for undo).\n */\nconst fieldNames = computed<string[]>({\n get: () => (page.value ? Object.keys(page.value.fields) : []),\n set: (names) => schema.reorderFieldsByNames(props.pageIdx, names),\n});\n\n/** Highlight when the toolbox is dragging a new field-kind over the page. */\nconst toolboxDragOver = ref(false);\n\nfunction selectPage(): void {\n schema.selectPage(props.pageIdx);\n}\n\nfunction dup(ev: Event): void {\n ev.stopPropagation();\n schema.duplicatePage(props.pageIdx);\n}\n\nfunction remove(ev: Event): void {\n ev.stopPropagation();\n if (schema.data.pages.length <= 1) return;\n schema.removePage(props.pageIdx);\n}\n\nfunction patchPage(patch: Record<string, any>): void {\n schema.updatePage(props.pageIdx, patch);\n}\n\n// ── Native HTML5 drop from the toolbox ───────────────────────────────────\n// VueDraggable owns within-page reorder. The toolbox still uses native\n// HTML5 dnd to add new fields — we handle its payload here on the page\n// body, separate from SortableJS's pointer flow.\n\nfunction onBodyDragOver(ev: DragEvent): void {\n if (!ev.dataTransfer) return;\n if (!Array.from(ev.dataTransfer.types).includes('application/cobalt-field-kind')) return;\n ev.preventDefault();\n ev.dataTransfer.dropEffect = 'copy';\n toolboxDragOver.value = true;\n}\n\nfunction onBodyDragLeave(ev: DragEvent): void {\n // Only clear when leaving the body itself, not children.\n if (ev.currentTarget === ev.target) toolboxDragOver.value = false;\n}\n\nfunction onBodyDrop(ev: DragEvent): void {\n toolboxDragOver.value = false;\n const kind = ev.dataTransfer?.getData('application/cobalt-field-kind');\n if (!kind) return;\n ev.preventDefault();\n schema.addField(kind, props.pageIdx);\n}\n</script>\n\n<template>\n <section\n v-if=\"page\"\n class=\"page\"\n :class=\"{ 'is-selected': isSelected, 'is-toolbox-drag': toolboxDragOver }\"\n @click=\"selectPage\"\n >\n <header class=\"page__head\">\n <div class=\"page__head-text\">\n <div class=\"page__head-pill\">PAGE {{ pageIdx + 1 }}</div>\n <EditableText\n class=\"page__title\"\n :model-value=\"page.title || ''\"\n placeholder=\"Untitled page\"\n @update:model-value=\"patchPage({ title: $event })\"\n />\n <EditableText\n class=\"page__desc\"\n :model-value=\"page.description || ''\"\n placeholder=\"Add a description for this page (optional)\"\n @update:model-value=\"patchPage({ description: $event })\"\n />\n </div>\n <div class=\"page__head-actions\" @click.stop>\n <button class=\"page__action\" title=\"Duplicate page\" @click=\"dup\">\n <co-icon name=\"copy\" size=\"14\" />\n <span>Duplicate</span>\n </button>\n <button\n class=\"page__action page__action--danger\"\n :disabled=\"schema.data.pages.length <= 1\"\n title=\"Delete page\"\n @click=\"remove\"\n >\n <co-icon name=\"trash\" size=\"14\" />\n <span>Delete</span>\n </button>\n </div>\n </header>\n\n <div\n class=\"page__body\"\n @dragover=\"onBodyDragOver\"\n @dragleave=\"onBodyDragLeave\"\n @drop=\"onBodyDrop\"\n >\n <VueDraggable\n v-model=\"fieldNames\"\n class=\"page__sortable\"\n :animation=\"140\"\n ghost-class=\"page__ghost\"\n chosen-class=\"page__chosen\"\n drag-class=\"page__drag\"\n handle=\".field__grip\"\n >\n <FieldCard\n v-for=\"(name, idx) in fieldNames\"\n :key=\"name\"\n :page-idx=\"pageIdx\"\n :field-idx=\"idx\"\n :field-name=\"name\"\n />\n </VueDraggable>\n\n <div v-if=\"fieldNames.length === 0\" class=\"page__empty\">\n <co-icon name=\"plus\" size=\"20\" />\n <span>Drag a field here or click one in the toolbox</span>\n </div>\n </div>\n </section>\n</template>\n\n<style scoped>\n.page {\n background: var(--fb-panel);\n border: 1px solid var(--fb-border);\n border-radius: var(--co-border-radius-lg, 16px);\n overflow: hidden;\n transition: border-color 120ms, box-shadow 120ms;\n box-shadow: var(--fb-shadow-sm);\n}\n\n.page:hover {\n box-shadow: var(--fb-shadow-md);\n}\n\n.page.is-selected {\n border-color: var(--co-color-primary-azul, #2563eb);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--co-color-primary-azul) 12%, transparent), var(--fb-shadow-md);\n}\n\n/* Toolbox is dragging a new field over this page → outline cue. */\n.page.is-toolbox-drag {\n border-color: var(--co-color-primary-azul, #2563eb);\n border-style: dashed;\n background: color-mix(in srgb, var(--co-color-primary-azul) 4%, var(--fb-panel));\n}\n\n.page__head {\n display: flex;\n align-items: flex-start;\n gap: var(--co-spacing-md, 12px);\n padding: var(--co-spacing-xl, 20px) var(--co-spacing-2xl, 24px);\n border-bottom: 1px solid var(--fb-border);\n background: var(--fb-panel-soft);\n}\n\n.page__head-text { flex: 1; min-width: 0; }\n\n.page__head-pill {\n display: inline-flex;\n align-items: center;\n font-size: var(--co-font-size-10, 10px);\n font-weight: 700;\n letter-spacing: 0.08em;\n color: var(--co-color-primary-azul, #2563eb);\n background: color-mix(in srgb, var(--co-color-primary-azul) 10%, transparent);\n padding: 3px 8px;\n border-radius: var(--co-border-radius-full, 9999px);\n margin-bottom: 6px;\n}\n\n.page__title {\n display: block;\n font-size: var(--co-font-size-18, 18px);\n font-weight: 600;\n color: var(--co-semantic-text-default, #111827);\n letter-spacing: -0.01em;\n line-height: 1.3;\n}\n\n.page__desc {\n display: block;\n margin-top: 4px;\n font-size: var(--co-font-size-13, 13px);\n color: var(--co-semantic-text-secondary, #6b7280);\n}\n\n.page__head-actions {\n display: flex;\n gap: 2px;\n opacity: 0;\n transition: opacity 120ms;\n}\n\n.page:hover .page__head-actions,\n.page.is-selected .page__head-actions { opacity: 1; }\n\n.page__action {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px;\n border: 0;\n background: transparent;\n border-radius: var(--co-border-radius-xxs, 6px);\n font-size: var(--co-font-size-12, 12px);\n font-weight: 500;\n color: var(--co-semantic-text-secondary, #6b7280);\n transition: all 120ms;\n}\n\n.page__action:hover:not(:disabled) {\n background: var(--fb-panel);\n color: var(--co-semantic-text-default, #111827);\n box-shadow: var(--fb-shadow-sm);\n}\n\n.page__action--danger:hover:not(:disabled) {\n color: var(--co-color-status-error, #aa2e1b);\n}\n\n.page__action:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.page__body {\n display: flex;\n flex-direction: column;\n padding: var(--co-spacing-xl, 20px) var(--co-spacing-2xl, 24px);\n gap: 0;\n min-height: 80px;\n}\n\n/* VueDraggable container — its children are the FieldCard rows. */\n.page__sortable {\n display: flex;\n flex-direction: column;\n gap: var(--co-spacing-xs, 6px);\n}\n\n/* ── Sortable visual states ─────────────────────────────────────────── *\n * ghost-class: placeholder showing where the dragged item will land.\n * chosen-class: applied to the picked-up element during the drag.\n * drag-class: applied to the drag image clone (browser-rendered when\n * using native HTML5 drag — most of the styling is decorative since\n * the browser snapshots the element at drag-start).\n */\n.page__ghost {\n opacity: 0.6;\n background: color-mix(in srgb, var(--co-color-primary-azul) 10%, transparent);\n border: 1px dashed var(--co-color-primary-azul, #2563eb) !important;\n border-radius: var(--co-border-radius-sm, 10px);\n}\n\n/* Hide the ghost row's contents so the placeholder is a clean drop-zone\n * outline (instead of a faded copy of the field). */\n.page__ghost > * {\n visibility: hidden;\n}\n\n.page__chosen {\n cursor: grabbing;\n}\n\n.page__drag {\n opacity: 0.95;\n box-shadow: var(--fb-shadow-lg);\n}\n\n.page__empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--co-spacing-md, 12px);\n padding: var(--co-spacing-4xl, 40px) var(--co-spacing-2xl, 24px);\n border: 2px dashed var(--fb-border);\n border-radius: var(--co-border-radius-sm, 12px);\n color: var(--co-semantic-text-secondary, #6b7280);\n font-size: var(--co-font-size-13, 13px);\n background: var(--fb-panel-soft);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { themeToStyles } from '@prolibu-suite/cobalt-form-core';\nimport { useSchemaStore } from '../stores/schema';\nimport EditableText from './EditableText.vue';\nimport PageCard from './PageCard.vue';\n\nconst schema = useSchemaStore();\n\n/**\n * Translate the user's theme into inline CSS custom properties + data\n * attributes for the canvas. This makes theme edits **live** while the\n * user is in the Designer tab — the editor chrome (topbar/sidebars) stays\n * untouched; only the form area reacts.\n */\nconst themeStyles = computed(() => themeToStyles(schema.resolvedTheme));\n\n/** Inline styles for the inner (form-scoped) container. */\nconst innerStyle = computed<Record<string, string>>(() => ({\n ...themeStyles.value.customProperties,\n}));\n\n/** Inline styles for the outer canvas — background color/image live here. */\nconst outerStyle = computed<Record<string, string>>(() => ({\n ...themeStyles.value.inlineStyles,\n}));\n\nconst dataAttrs = computed(() => ({\n 'data-theme': themeStyles.value.modifiers.colorScheme,\n 'data-appearance': themeStyles.value.modifiers.appearance,\n 'data-density': themeStyles.value.modifiers.density,\n 'data-radius': themeStyles.value.modifiers.radius,\n ...(themeStyles.value.modifiers.hideHeader ? { 'data-hide-header': '' } : {}),\n}));\n</script>\n\n<template>\n <div class=\"canvas\" :style=\"outerStyle\">\n <div class=\"canvas__inner\" :style=\"innerStyle\" v-bind=\"dataAttrs\">\n <header\n v-if=\"!themeStyles.modifiers.hideHeader\"\n class=\"canvas__head\"\n :class=\"{ 'is-selected': schema.selection.kind === 'form' }\"\n @click.stop=\"schema.selectForm()\"\n >\n <EditableText\n class=\"canvas__title\"\n :model-value=\"schema.data.title\"\n placeholder=\"Untitled form\"\n @update:model-value=\"schema.setTitle($event)\"\n />\n <EditableText\n class=\"canvas__desc\"\n :model-value=\"schema.data.description\"\n placeholder=\"Add a description (optional)\"\n @update:model-value=\"schema.setDescription($event)\"\n />\n </header>\n\n <div class=\"canvas__pages\">\n <PageCard\n v-for=\"(_, idx) in schema.data.pages\"\n :key=\"schema.data.pages[idx].name + '-' + idx\"\n :page-idx=\"idx\"\n />\n </div>\n\n <button class=\"canvas__add-page\" @click=\"schema.addPage()\">\n <co-icon name=\"plus\" size=\"14\" />\n <span>Add page</span>\n </button>\n </div>\n </div>\n</template>\n\n<style scoped>\n/* The outer canvas is the area BEHIND the form — background color/image\n * from the user's theme paint this layer. Spacing/padding keeps the form\n * card centred regardless of background. */\n.canvas {\n min-height: 100%;\n padding: var(--co-spacing-4xl, 40px) var(--co-spacing-2xl, 24px) var(--co-spacing-3xl, 32px);\n /* Default background is the editor's neutral gray; user can override\n * via theme. The `transparent` fallback lets the image show through. */\n background-color: var(--co-form-canvas-bg, var(--fb-bg, #f6f7f9));\n}\n\n.canvas__inner {\n max-width: 820px;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n gap: var(--co-spacing-xl, 20px);\n}\n\n/* ── Dark mode: re-bind the FB surface tokens inside the canvas only.\n * The editor chrome (topbar, toolbox, side panel) stays light because the\n * `[data-theme=\"dark\"]` selector is scoped here. */\n.canvas__inner[data-theme=\"dark\"] {\n --fb-bg: #1a1f2b;\n --fb-panel: #232936;\n --fb-panel-soft: #1c2230;\n --fb-border: rgba(255, 255, 255, 0.08);\n --fb-border-strong: rgba(255, 255, 255, 0.16);\n --co-semantic-text-default: #f9fafb;\n --co-semantic-text-secondary: #9ca3af;\n --co-semantic-text-muted: #6b7280;\n --co-semantic-surface-hover: rgba(255, 255, 255, 0.06);\n --co-semantic-border-default: rgba(255, 255, 255, 0.08);\n --fb-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);\n --fb-shadow-md: 0 1px 2px rgba(0, 0, 0, 0.4), 0 4px 12px rgba(0, 0, 0, 0.35);\n color: var(--co-semantic-text-default);\n}\n\n.canvas[data-theme=\"dark\"] {\n background-color: #0f1420;\n}\n\n.canvas__inner[data-theme=\"dark\"] .canvas__title { color: #f9fafb; }\n.canvas__inner[data-theme=\"dark\"] .canvas__desc { color: #9ca3af; }\n\n/* Compact density — tighter gap between pages, smaller header padding. */\n.canvas__inner[data-density=\"compact\"] {\n gap: var(--co-spacing-md, 12px);\n}\n\n.canvas__inner[data-density=\"compact\"] .canvas__head {\n padding: var(--co-spacing-lg, 16px) var(--co-spacing-xl, 20px);\n}\n\n/* Flat appearance — strip the head card chrome so it sits directly on\n * the canvas background, matching how the rendered form would look. */\n.canvas__inner[data-appearance=\"flat\"] .canvas__head {\n background: transparent;\n border: 0;\n padding: var(--co-spacing-xl, 20px) 0;\n box-shadow: none;\n}\n\n/* ── Flat appearance ────────────────────────────────────────────────\n * Strips every card surface — pages, page headers, field rows — so\n * editing the form looks like editing on a blank canvas. Selection\n * outlines stay subtle so the user can still tell what's active.\n * Vue scoped CSS can't reach into other component scopes directly,\n * so the cross-component bits use :deep().\n */\n.canvas__inner[data-appearance=\"flat\"] :deep(.page),\n.canvas__inner[data-appearance=\"flat\"] :deep(.page:hover) {\n background: transparent;\n border: 0;\n box-shadow: none;\n}\n\n.canvas__inner[data-appearance=\"flat\"] :deep(.page.is-selected) {\n background: transparent;\n border: 1px dashed var(--co-color-primary-azul, #2563eb);\n box-shadow: none;\n}\n\n.canvas__inner[data-appearance=\"flat\"] :deep(.page__head) {\n background: transparent;\n border-bottom: 0;\n}\n\n/* Field rows lose their card chrome too — only a hover background and\n * the selection outline remain so the editing affordance survives. */\n.canvas__inner[data-appearance=\"flat\"] :deep(.field),\n.canvas__inner[data-appearance=\"flat\"] :deep(.field:hover) {\n background: transparent;\n border: 0;\n box-shadow: none;\n}\n\n.canvas__inner[data-appearance=\"flat\"] :deep(.field:hover) {\n background: var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.03));\n}\n\n.canvas__head {\n background: var(--co-form-header-bg, var(--fb-panel));\n border: 1px solid var(--fb-border);\n border-radius: var(--co-border-radius-lg, 16px);\n padding: var(--co-spacing-2xl, 24px) var(--co-spacing-3xl, 28px);\n box-shadow: var(--fb-shadow-sm);\n cursor: pointer;\n transition: border-color 120ms, box-shadow 120ms;\n min-height: var(--co-form-header-height, auto);\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.canvas__head:hover {\n box-shadow: var(--fb-shadow-md);\n}\n\n.canvas__head.is-selected {\n border-color: var(--co-color-primary-azul, #2563eb);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--co-color-primary-azul) 12%, transparent), var(--fb-shadow-md);\n}\n\n.canvas__head-pill {\n display: inline-flex;\n align-items: center;\n font-size: 10px;\n font-weight: 700;\n letter-spacing: 0.08em;\n color: var(--co-color-primary-azul, #2563eb);\n background: color-mix(in srgb, var(--co-color-primary-azul) 10%, transparent);\n padding: 3px 8px;\n border-radius: var(--co-border-radius-full, 9999px);\n margin-bottom: 6px;\n}\n\n.canvas__title {\n display: block;\n font-size: 26px;\n font-weight: 700;\n color: var(--co-semantic-text-default, #111827);\n letter-spacing: -0.02em;\n line-height: 1.2;\n}\n\n.canvas__desc {\n display: block;\n margin-top: var(--co-spacing-xs, 6px);\n font-size: var(--co-font-size-14, 14px);\n color: var(--co-semantic-text-secondary, #6b7280);\n}\n\n.canvas__pages {\n display: flex;\n flex-direction: column;\n gap: var(--co-spacing-xl, 20px);\n}\n\n.canvas__add-page {\n align-self: center;\n display: inline-flex;\n align-items: center;\n gap: var(--co-spacing-xs, 6px);\n padding: var(--co-spacing-sm, 10px) var(--co-spacing-xl, 20px);\n border: 1px dashed var(--fb-border-strong);\n background: var(--fb-panel);\n border-radius: var(--co-border-radius-full, 9999px);\n color: var(--co-semantic-text-secondary, #6b7280);\n font-size: var(--co-font-size-13, 13px);\n font-weight: 500;\n transition: all 120ms;\n}\n\n.canvas__add-page:hover {\n border-color: var(--co-color-primary-azul, #2563eb);\n color: var(--co-color-primary-azul, #2563eb);\n background: color-mix(in srgb, var(--co-color-primary-azul) 4%, transparent);\n border-style: solid;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport {\n CoButton,\n CoCheckbox,\n CoInput,\n CoSelect,\n CoSlider,\n CoSwitch,\n CoTab,\n CoTabGroup,\n} from '@prolibu-suite/cobalt-vue';\nimport { ACCENT_PRESET_HEX } from '@prolibu-suite/cobalt-form-core';\nimport { useSchemaStore } from '../stores/schema';\n\n/**\n * Selection-driven side panel with THREE independent scopes — each has\n * its own tab set and never overlaps with the others:\n *\n * - FORM scope → global form/theme settings (General/Header/Background/\n * Appearance). Selected by clicking the form title block.\n * - PAGE scope → page-specific (id, visibleIf). Default selection.\n * - FIELD scope → field-specific (Layout/Logic/Validation). Inline editor\n * on canvas + this side panel.\n */\n\ntype FormSection = 'general' | 'header' | 'background' | 'appearance' | 'advanced';\ntype PageSection = 'general' | 'logic';\ntype FieldSection = 'layout' | 'logic' | 'validation';\n\nconst FORM_TABS: { id: FormSection; label: string; icon: string }[] = [\n { id: 'general', label: 'General', icon: 'gear' },\n { id: 'header', label: 'Header', icon: 'image' },\n { id: 'background', label: 'Background', icon: 'paint-bucket' },\n { id: 'appearance', label: 'Appearance', icon: 'paint-brush' },\n { id: 'advanced', label: 'Advanced', icon: 'code' },\n];\n\nconst PAGE_TABS: { id: PageSection; label: string; icon: string }[] = [\n { id: 'general', label: 'General', icon: 'gear' },\n { id: 'logic', label: 'Logic', icon: 'git-branch' },\n];\n\nconst FIELD_TABS: { id: FieldSection; label: string; icon: string }[] = [\n { id: 'layout', label: 'Layout', icon: 'layout' },\n { id: 'logic', label: 'Logic', icon: 'git-branch' },\n { id: 'validation', label: 'Validation', icon: 'shield-check' },\n];\n\nconst APPEARANCE_OPTIONS = [\n { label: 'Panels (default)', value: 'panels' },\n { label: 'Without panels', value: 'flat' },\n];\nconst DENSITY_OPTIONS = [\n { label: 'Comfortable', value: 'comfortable' },\n { label: 'Compact', value: 'compact' },\n];\nconst RADIUS_OPTIONS = [\n { label: 'Rounded', value: 'rounded' },\n { label: 'Sharp', value: 'sharp' },\n];\nconst SIZE_OPTIONS = [\n { label: 'Auto', value: 'auto' },\n { label: 'Contain', value: 'contain' },\n { label: 'Cover', value: 'cover' },\n];\nconst ATTACHMENT_OPTIONS = [\n { label: 'Scroll', value: 'scroll' },\n { label: 'Fixed', value: 'fixed' },\n];\nconst FORMAT_OPTIONS = [\n { label: '(none)', value: '' },\n { label: 'email', value: 'email' },\n { label: 'url', value: 'url' },\n { label: 'uuid', value: 'uuid' },\n];\nconst ACCENT_CHIPS = [\n { id: 'azul', label: 'Azul', hex: ACCENT_PRESET_HEX.azul },\n { id: 'verde', label: 'Verde', hex: ACCENT_PRESET_HEX.verde },\n { id: 'amarillo', label: 'Amarillo', hex: ACCENT_PRESET_HEX.amarillo },\n { id: 'rosado', label: 'Rosado', hex: ACCENT_PRESET_HEX.rosado },\n] as const;\n\nconst schema = useSchemaStore();\n\nconst kind = computed(() => schema.selection.kind);\nconst page = computed(() => schema.currentPage!);\nconst field = computed<Record<string, any>>(() => schema.selectedField || {});\nconst fieldName = computed(() => schema.selection.fieldName ?? '');\n\n// One tab-state per scope so user lands on the right default each time.\nconst formSection = ref<FormSection>('general');\nconst pageSection = ref<PageSection>('general');\nconst fieldSection = ref<FieldSection>('layout');\n\n// Reset tab to the first useful one when switching scopes.\nwatch(kind, (k) => {\n if (k === 'form') formSection.value = 'general';\n else if (k === 'page') pageSection.value = 'general';\n else if (k === 'field') fieldSection.value = 'layout';\n});\n\nconst theme = computed(() => schema.data.theme);\nconst resolved = computed(() => schema.resolvedTheme);\n\n// ── Helpers ──────────────────────────────────────────────────────────────\n\nfunction detailValue(ev: CustomEvent): any {\n const d = ev.detail;\n if (d != null && typeof d === 'object' && 'value' in d) return (d as any).value;\n if (d != null && typeof d === 'object' && 'checked' in d) return (d as any).checked;\n return d;\n}\n\nfunction toNumOrUndef(v: any): number | undefined {\n if (v === '' || v == null) return undefined;\n const n = Number(v);\n return Number.isFinite(n) ? n : undefined;\n}\n\nfunction patchField(key: string, value: any): void {\n schema.updateField(schema.selection.pageIdx, fieldName.value, { [key]: value });\n}\n\nfunction patchPage(key: string, value: any): void {\n schema.updatePage(schema.selection.pageIdx, { [key]: value });\n}\n\nfunction patchTheme(key: string, value: any): void {\n schema.setTheme({ [key]: value } as any);\n}\n\nfunction patchThemeSection(sec: 'background' | 'header', key: string, value: any): void {\n schema.setThemeSection(sec, { [key]: value });\n}\n\nfunction pickAccent(id: 'azul' | 'verde' | 'amarillo' | 'rosado'): void {\n patchTheme('accent', id);\n}\n\nfunction pickCustomAccent(hex: string): void {\n const s = hex.trim();\n if (!/^#[0-9a-fA-F]{3,8}$/.test(s)) return;\n schema.setTheme({ accent: 'custom', accentHex: s });\n}\n\nconst scopeLabel = computed(() => {\n if (kind.value === 'form') return 'Form';\n if (kind.value === 'page') return 'Page';\n return 'Field';\n});\n\nconst scopeSubtitle = computed(() => {\n if (kind.value === 'form') return schema.data.title || 'Untitled form';\n if (kind.value === 'page') return page.value?.name ?? '';\n return fieldName.value;\n});\n</script>\n\n<template>\n <div class=\"props\">\n <header class=\"props__head\">\n <div class=\"props__title\">{{ scopeLabel }}</div>\n <div class=\"props__subtitle\">{{ scopeSubtitle }}</div>\n </header>\n\n <!-- ═══════════ FORM SCOPE ═══════════ -->\n <template v-if=\"kind === 'form'\">\n <CoTabGroup\n class=\"props__tabs\"\n :value=\"formSection\"\n @coTabChange=\"formSection = (detailValue($event) as FormSection) || formSection\"\n >\n <CoTab\n v-for=\"t in FORM_TABS\"\n :key=\"t.id\"\n :label=\"t.label\"\n :value=\"t.id\"\n :icon-left=\"t.icon\"\n size=\"small\"\n />\n </CoTabGroup>\n\n <div class=\"props__body\">\n <template v-if=\"formSection === 'general'\">\n <div class=\"row\">\n <div class=\"row__label\">Color scheme</div>\n <div class=\"seg\">\n <button\n class=\"seg__btn\"\n :class=\"{ 'is-active': resolved.colorScheme === 'light' }\"\n @click=\"patchTheme('colorScheme', 'light')\"\n >\n <co-icon name=\"sun\" size=\"14\" />\n <span>Light</span>\n </button>\n <button\n class=\"seg__btn\"\n :class=\"{ 'is-active': resolved.colorScheme === 'dark' }\"\n @click=\"patchTheme('colorScheme', 'dark')\"\n >\n <co-icon name=\"moon\" size=\"14\" />\n <span>Dark</span>\n </button>\n </div>\n </div>\n <CoSelect\n label=\"Question appearance\"\n :options=\"JSON.stringify(APPEARANCE_OPTIONS)\"\n :value=\"resolved.questionAppearance\"\n @coChange=\"patchTheme('questionAppearance', detailValue($event))\"\n />\n <CoSelect\n label=\"Density\"\n :options=\"JSON.stringify(DENSITY_OPTIONS)\"\n :value=\"resolved.density\"\n @coChange=\"patchTheme('density', detailValue($event))\"\n />\n <CoSelect\n label=\"Border radius\"\n :options=\"JSON.stringify(RADIUS_OPTIONS)\"\n :value=\"resolved.borderRadius\"\n @coChange=\"patchTheme('borderRadius', detailValue($event))\"\n />\n </template>\n\n <template v-if=\"formSection === 'header'\">\n <CoSwitch\n label=\"Show header\"\n :checked=\"resolved.header.show\"\n @coChange=\"patchThemeSection('header', 'show', detailValue($event))\"\n />\n <CoInput\n label=\"Background color\"\n placeholder=\"#fff or rgb(...)\"\n :value=\"theme.header?.backgroundColor || ''\"\n @coInput=\"patchThemeSection('header', 'backgroundColor', detailValue($event) || null)\"\n />\n <CoInput\n label=\"Height\"\n placeholder=\"120px\"\n helper-text=\"Any CSS length. Leave empty for auto.\"\n :value=\"theme.header?.height || ''\"\n @coInput=\"patchThemeSection('header', 'height', detailValue($event) || null)\"\n />\n </template>\n\n <template v-if=\"formSection === 'background'\">\n <CoInput\n label=\"Background color\"\n placeholder=\"#F3F3F3\"\n :value=\"theme.background?.color || ''\"\n @coInput=\"patchThemeSection('background', 'color', detailValue($event) || null)\"\n />\n <CoInput\n label=\"Background image URL\"\n placeholder=\"https://…\"\n :value=\"theme.background?.imageUrl || ''\"\n @coInput=\"patchThemeSection('background', 'imageUrl', detailValue($event) || null)\"\n />\n <CoSelect\n label=\"Image size\"\n :options=\"JSON.stringify(SIZE_OPTIONS)\"\n :value=\"resolved.background.imageSize\"\n @coChange=\"patchThemeSection('background', 'imageSize', detailValue($event))\"\n />\n <CoSelect\n label=\"Image attachment\"\n :options=\"JSON.stringify(ATTACHMENT_OPTIONS)\"\n :value=\"resolved.background.imageAttachment\"\n @coChange=\"patchThemeSection('background', 'imageAttachment', detailValue($event))\"\n />\n <div class=\"row\">\n <div class=\"row__label\">Opacity ({{ resolved.background.opacity }}%)</div>\n <CoSlider\n :min=\"0\"\n :max=\"100\"\n :step=\"5\"\n :value=\"resolved.background.opacity\"\n show-value\n @coChange=\"patchThemeSection('background', 'opacity', detailValue($event))\"\n />\n </div>\n </template>\n\n <template v-if=\"formSection === 'appearance'\">\n <div class=\"row\">\n <div class=\"row__label\">Accent</div>\n <div class=\"accent\">\n <button\n v-for=\"chip in ACCENT_CHIPS\"\n :key=\"chip.id\"\n class=\"accent__chip\"\n :class=\"{ 'is-active': resolved.accent === chip.id }\"\n :style=\"{ '--accent': chip.hex }\"\n :title=\"chip.label\"\n @click=\"pickAccent(chip.id)\"\n >\n <span class=\"accent__chip-dot\" />\n <span>{{ chip.label }}</span>\n </button>\n </div>\n </div>\n <CoInput\n label=\"Custom accent (hex)\"\n placeholder=\"#2563EB\"\n helper-text=\"Sets accent to Custom and overrides the primary.\"\n :value=\"resolved.accent === 'custom' ? resolved.accentHex : ''\"\n @coChange=\"pickCustomAccent(detailValue($event) ?? '')\"\n />\n <CoInput\n label=\"Font family\"\n placeholder=\"Inter, system-ui, sans-serif\"\n helper-text=\"CSS font stack. Empty = Geist (Cobalt default).\"\n :value=\"theme.fontFamily || ''\"\n @coInput=\"patchTheme('fontFamily', detailValue($event) || undefined)\"\n />\n </template>\n\n <template v-if=\"formSection === 'advanced'\">\n <div class=\"row\">\n <div class=\"row__label\">Custom CSS</div>\n <textarea\n class=\"codebox\"\n spellcheck=\"false\"\n rows=\"14\"\n placeholder=\".co-form-wizard [data-co-field="email"] co-input { ... }\"\n :value=\"theme.customCss || ''\"\n @input=\"patchTheme('customCss', ($event.target as HTMLTextAreaElement).value || undefined)\"\n />\n <p class=\"props__hint\">\n Injected scoped to the form. Target fields via\n <code>[data-co-field=\"name\"]</code> or\n <code>[data-co-field-kind=\"select\"]</code>.\n <code>@import</code>, inline scripts and\n <code></style></code> are stripped.\n </p>\n </div>\n </template>\n </div>\n\n <footer class=\"props__foot\">\n <CoButton\n label=\"Reset theme\"\n variant=\"stroke\"\n size=\"s\"\n icon-left=\"arrow-counter-clockwise\"\n @click=\"schema.resetTheme\"\n />\n </footer>\n </template>\n\n <!-- ═══════════ PAGE SCOPE ═══════════ -->\n <template v-else-if=\"kind === 'page'\">\n <CoTabGroup\n class=\"props__tabs\"\n :value=\"pageSection\"\n @coTabChange=\"pageSection = (detailValue($event) as PageSection) || pageSection\"\n >\n <CoTab\n v-for=\"t in PAGE_TABS\"\n :key=\"t.id\"\n :label=\"t.label\"\n :value=\"t.id\"\n :icon-left=\"t.icon\"\n size=\"small\"\n />\n </CoTabGroup>\n\n <div class=\"props__body\">\n <template v-if=\"pageSection === 'general'\">\n <CoInput\n label=\"Name (id)\"\n :value=\"page.name\"\n helper-text=\"Used as the page key in the schema.\"\n @coInput=\"patchPage('name', detailValue($event))\"\n />\n <CoInput\n label=\"Title\"\n :value=\"page.title || ''\"\n helper-text=\"Also editable inline on the canvas.\"\n @coInput=\"patchPage('title', detailValue($event))\"\n />\n <CoSwitch\n label=\"Show title in form\"\n :checked=\"!page.hideTitle\"\n @coChange=\"patchPage('hideTitle', detailValue($event) ? undefined : true)\"\n />\n <CoInput\n label=\"Description\"\n multiline\n :value=\"page.description || ''\"\n @coInput=\"patchPage('description', detailValue($event))\"\n />\n <CoSwitch\n label=\"Show description in form\"\n :checked=\"!page.hideDescription\"\n @coChange=\"patchPage('hideDescription', detailValue($event) ? undefined : true)\"\n />\n </template>\n\n <template v-if=\"pageSection === 'logic'\">\n <CoInput\n label=\"visibleIf\"\n placeholder=\"{customerType} == 'premium'\"\n helper-text=\"Page hidden unless expression is truthy.\"\n :value=\"page.visibleIf || ''\"\n @coInput=\"patchPage('visibleIf', detailValue($event) || undefined)\"\n />\n </template>\n </div>\n </template>\n\n <!-- ═══════════ FIELD SCOPE ═══════════ -->\n <template v-else>\n <CoTabGroup\n class=\"props__tabs\"\n :value=\"fieldSection\"\n @coTabChange=\"fieldSection = (detailValue($event) as FieldSection) || fieldSection\"\n >\n <CoTab\n v-for=\"t in FIELD_TABS\"\n :key=\"t.id\"\n :label=\"t.label\"\n :value=\"t.id\"\n :icon-left=\"t.icon\"\n size=\"small\"\n />\n </CoTabGroup>\n\n <div class=\"props__body\">\n <template v-if=\"fieldSection === 'layout'\">\n <CoCheckbox\n label=\"Full width (span all columns)\"\n :checked=\"!!field.full\"\n @coChange=\"patchField('full', detailValue($event))\"\n />\n <CoCheckbox\n label=\"Hidden\"\n :checked=\"!!field.hidden\"\n @coChange=\"patchField('hidden', detailValue($event))\"\n />\n <CoCheckbox\n label=\"Disabled\"\n :checked=\"!!field.disabled || !!field.readOnly\"\n @coChange=\"patchField('disabled', detailValue($event) || undefined)\"\n />\n <CoSelect\n v-if=\"field.type === 'String'\"\n label=\"Format\"\n :options=\"JSON.stringify(FORMAT_OPTIONS)\"\n :value=\"field.format || ''\"\n @coChange=\"patchField('format', detailValue($event) || undefined)\"\n />\n </template>\n\n <template v-if=\"fieldSection === 'logic'\">\n <CoInput\n label=\"visibleIf\"\n placeholder=\"{type} == 'premium'\"\n :value=\"field.visibleIf || ''\"\n @coInput=\"patchField('visibleIf', detailValue($event) || undefined)\"\n />\n <CoInput\n label=\"enableIf\"\n placeholder=\"{accepted} == true\"\n :value=\"field.enableIf || ''\"\n @coInput=\"patchField('enableIf', detailValue($event) || undefined)\"\n />\n <CoInput\n label=\"requiredIf\"\n placeholder=\"{country} == 'US'\"\n :value=\"field.requiredIf || ''\"\n @coInput=\"patchField('requiredIf', detailValue($event) || undefined)\"\n />\n <p class=\"props__hint\">\n Operators: <code>== != > < >= <= contains && ||</code>\n </p>\n </template>\n\n <template v-if=\"fieldSection === 'validation'\">\n <CoCheckbox\n label=\"Required\"\n :checked=\"!!field.required\"\n @coChange=\"patchField('required', detailValue($event))\"\n />\n <CoInput\n v-if=\"field.type === 'String'\"\n label=\"Min length\"\n type=\"number\"\n :value=\"field.minLength ?? ''\"\n @coInput=\"patchField('minLength', toNumOrUndef(detailValue($event)))\"\n />\n <CoInput\n v-if=\"field.type === 'String'\"\n label=\"Max length\"\n type=\"number\"\n :value=\"field.maxLength ?? ''\"\n @coInput=\"patchField('maxLength', toNumOrUndef(detailValue($event)))\"\n />\n <CoInput\n v-if=\"field.type === 'Number'\"\n label=\"Min\"\n type=\"number\"\n :value=\"field.min ?? ''\"\n @coInput=\"patchField('min', toNumOrUndef(detailValue($event)))\"\n />\n <CoInput\n v-if=\"field.type === 'Number'\"\n label=\"Max\"\n type=\"number\"\n :value=\"field.max ?? ''\"\n @coInput=\"patchField('max', toNumOrUndef(detailValue($event)))\"\n />\n </template>\n </div>\n </template>\n </div>\n</template>\n\n<style scoped>\n.props {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.props__head {\n padding: var(--co-spacing-lg, 16px) var(--co-spacing-xl, 20px);\n border-bottom: 1px solid var(--fb-border);\n background: var(--fb-panel-soft);\n}\n\n.props__title {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--co-semantic-text-muted, #9ca3af);\n}\n\n.props__subtitle {\n font-family: ui-monospace, Menlo, monospace;\n font-size: var(--co-font-size-14, 14px);\n color: var(--co-semantic-text-default, #111827);\n margin-top: 4px;\n word-break: break-all;\n font-weight: 500;\n}\n\n.props__tabs {\n border-bottom: 1px solid var(--fb-border);\n background: var(--fb-panel-soft);\n padding: 0 var(--co-spacing-sm, 8px);\n /* Horizontal scroll when tab labels overflow (the FORM scope has 5\n * tabs; even at 360px sidebar width some labels get clipped). */\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: thin;\n}\n\n.props__tabs::-webkit-scrollbar {\n height: 4px;\n}\n\n.props__tabs::-webkit-scrollbar-thumb {\n background: var(--fb-border-strong);\n border-radius: 2px;\n}\n\n.props__tabs::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.props__body {\n flex: 1;\n /* `min-height: 0` is required for a flex column child to be allowed\n * to shrink below its content size and let `overflow-y: auto` actually\n * scroll instead of pushing the parent past its viewport height. */\n min-height: 0;\n overflow-y: auto;\n padding: var(--co-spacing-xl, 20px);\n display: flex;\n flex-direction: column;\n gap: var(--co-spacing-md, 14px);\n}\n\n.props__foot {\n padding: var(--co-spacing-md, 12px) var(--co-spacing-lg, 16px);\n border-top: 1px solid var(--fb-border);\n background: var(--fb-panel-soft);\n}\n\n.props__hint {\n margin: 0;\n font-size: var(--co-font-size-11, 11px);\n color: var(--co-semantic-text-muted, #9ca3af);\n}\n\n.props__hint code {\n font-family: ui-monospace, Menlo, monospace;\n background: var(--co-semantic-surface-hover, #f3f4f6);\n padding: 1px 4px;\n border-radius: 3px;\n}\n\n.row {\n display: flex;\n flex-direction: column;\n gap: var(--co-spacing-xs, 6px);\n}\n\n.row__label {\n font-size: var(--co-font-size-11, 11px);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--co-semantic-text-secondary, #6b7280);\n}\n\n.seg {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 2px;\n padding: 2px;\n background: var(--fb-bg);\n border-radius: var(--co-border-radius-xs, 8px);\n border: 1px solid var(--fb-border);\n}\n\n.seg__btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 6px 10px;\n border: 0;\n background: transparent;\n border-radius: var(--co-border-radius-xxs, 6px);\n font-size: var(--co-font-size-13, 13px);\n color: var(--co-semantic-text-secondary, #6b7280);\n transition: all 120ms;\n}\n\n.seg__btn:hover { color: var(--co-semantic-text-default, #111827); }\n\n.seg__btn.is-active {\n background: var(--fb-panel);\n color: var(--co-color-primary-azul, #2563eb);\n font-weight: 600;\n box-shadow: var(--fb-shadow-sm);\n}\n\n.accent {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 6px;\n}\n\n.accent__chip {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n border: 1px solid var(--fb-border);\n background: var(--fb-panel);\n border-radius: var(--co-border-radius-xs, 8px);\n font-size: var(--co-font-size-12, 12px);\n color: var(--co-semantic-text-default, #111827);\n text-align: left;\n transition: all 120ms;\n}\n\n.accent__chip:hover { border-color: var(--fb-border-strong); }\n\n.accent__chip.is-active {\n border-color: var(--accent);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 18%, transparent);\n}\n\n.accent__chip-dot {\n display: inline-block;\n width: 14px;\n height: 14px;\n border-radius: var(--co-border-radius-full, 9999px);\n background: var(--accent);\n}\n\n.codebox {\n font-family: ui-monospace, Menlo, monospace;\n font-size: var(--co-font-size-12, 12px);\n line-height: 1.55;\n padding: var(--co-spacing-sm, 10px) var(--co-spacing-md, 12px);\n border: 1px solid var(--co-semantic-border-default, var(--fb-border));\n border-radius: var(--co-border-radius-xs, 8px);\n background: var(--fb-panel-soft);\n color: var(--co-semantic-text-default, #111827);\n resize: vertical;\n outline: none;\n width: 100%;\n min-height: 220px;\n}\n\n.codebox:focus {\n border-color: var(--co-color-primary-azul, #2563eb);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--co-color-primary-azul) 12%, transparent);\n}\n</style>\n","<script setup lang=\"ts\">\nimport FieldToolbox from './FieldToolbox.vue';\nimport FieldCanvas from './FieldCanvas.vue';\nimport PropertiesPanel from './PropertiesPanel.vue';\n</script>\n\n<template>\n <div class=\"designer\">\n <aside class=\"designer__panel designer__panel--left\">\n <FieldToolbox />\n </aside>\n\n <section class=\"designer__canvas\">\n <FieldCanvas />\n </section>\n\n <aside class=\"designer__panel designer__panel--right\">\n <PropertiesPanel />\n </aside>\n </div>\n</template>\n\n<style scoped>\n.designer {\n display: grid;\n grid-template-columns: var(--fb-sidebar-left) 1fr var(--fb-sidebar-right);\n height: 100%;\n}\n\n.designer__panel {\n background: var(--fb-panel);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.designer__panel--left { border-right: 1px solid var(--fb-border); }\n.designer__panel--right { border-left: 1px solid var(--fb-border); }\n\n.designer__canvas {\n overflow-y: auto;\n background: var(--fb-bg);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport { CoButton } from '@prolibu-suite/cobalt-vue';\nimport { useSchemaStore } from '../stores/schema';\n\nconst schema = useSchemaStore();\n\nconst draft = ref('');\nconst error = ref<string | null>(null);\n\nconst serialized = computed(() => JSON.stringify(schema.exported, null, 2));\n\nwatch(serialized, (v) => (draft.value = v), { immediate: true });\n\nfunction apply(): void {\n try {\n const parsed = JSON.parse(draft.value);\n if (!parsed || typeof parsed !== 'object') {\n throw new Error('Schema must be a JSON object');\n }\n schema.replaceAll(parsed);\n error.value = null;\n } catch (err) {\n error.value = (err as Error).message;\n }\n}\n\nfunction reset(): void {\n draft.value = serialized.value;\n error.value = null;\n}\n</script>\n\n<template>\n <div class=\"json-tab\">\n <div class=\"json-tab__bar\">\n <CoButton label=\"Apply\" variant=\"primary\" size=\"s\" @click=\"apply\" />\n <CoButton label=\"Discard\" variant=\"stroke\" size=\"s\" @click=\"reset\" />\n <span v-if=\"error\" class=\"json-tab__err\">{{ error }}</span>\n <span class=\"json-tab__hint\">\n Plain editor — Monaco integration is a follow-up.\n </span>\n </div>\n <textarea v-model=\"draft\" class=\"json-tab__area\" spellcheck=\"false\" />\n </div>\n</template>\n\n<style scoped>\n.json-tab {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: var(--co-spacing-lg, 16px);\n gap: var(--co-spacing-md, 12px);\n}\n\n.json-tab__bar {\n display: flex;\n align-items: center;\n gap: var(--co-spacing-sm, 8px);\n}\n\n.json-tab__err {\n color: var(--co-color-status-error, #aa2e1b);\n font-size: var(--co-font-size-12, 12px);\n}\n\n.json-tab__hint {\n margin-left: auto;\n color: var(--co-semantic-text-secondary, #6b7280);\n font-size: var(--co-font-size-12, 12px);\n}\n\n.json-tab__area {\n flex: 1;\n font-family: ui-monospace, Menlo, monospace;\n font-size: var(--co-font-size-13, 13px);\n padding: var(--co-spacing-md, 12px);\n border: 1px solid var(--co-semantic-border-default, #e5e7eb);\n border-radius: var(--co-border-radius-xs, 8px);\n background: var(--co-semantic-surface-page, #fff);\n resize: none;\n outline: none;\n color: var(--co-semantic-text-default, #111827);\n}\n\n.json-tab__area:focus {\n border-color: var(--co-color-primary-azul, #2563eb);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { isPagedSchema } from '@prolibu-suite/cobalt-form-core';\nimport { useSchemaStore } from '../stores/schema';\n\nconst schema = useSchemaStore();\n\n/**\n * Route to the right renderer:\n * - paged schema (has `pages` array) → `<co-form-wizard>` which knows how\n * to render title / description / stepper / pages.\n * - flat schema → `<co-form>` (simple single-page).\n *\n * `isMultiPage` (pages > 1) is NOT the right check because a single-page\n * schema that carries a `theme` block is still paged on export — and\n * `<co-form>` would mistreat the top-level `pages`/`theme` keys as fields.\n */\nconst exported = computed(() => schema.exported);\nconst isPaged = computed(() => isPagedSchema(exported.value));\nconst schemaJson = computed(() => JSON.stringify(exported.value));\nconst themeJson = computed(() => {\n const out = Object.keys(schema.data.theme).length > 0\n ? JSON.stringify(schema.data.theme)\n : undefined;\n console.log('[PreviewTab] themeJson →', out, 'rawTheme:', schema.data.theme, 'isPaged:', isPaged.value);\n return out;\n});\n\nconst lastSubmit = ref<Record<string, any> | null>(null);\n\nfunction onSubmit(ev: Event): void {\n const detail = (ev as CustomEvent).detail;\n lastSubmit.value = detail?.values ?? null;\n}\n</script>\n\n<template>\n <div class=\"preview\">\n <div class=\"preview__pane preview__pane--form\">\n <!-- No external title block: the wizard renders title + description\n inside its themed scope (so the bg/colors wrap the title too). -->\n <co-form-wizard\n v-if=\"isPaged\"\n :key=\"schemaJson + (themeJson ?? '')\"\n :schema=\"schemaJson\"\n :theme=\"themeJson\"\n layout=\"grid\"\n columns=\"1\"\n @coSubmit=\"onSubmit\"\n />\n <co-form\n v-else\n :key=\"schemaJson + (themeJson ?? '')\"\n :schema=\"schemaJson\"\n :theme=\"themeJson\"\n layout=\"grid\"\n columns=\"2\"\n @coSubmit=\"onSubmit\"\n />\n </div>\n\n <aside class=\"preview__pane preview__pane--side\">\n <div class=\"preview__pane-head\">\n <h3 class=\"preview__title\">Last submit</h3>\n <p class=\"preview__desc\">Fill the form and press Submit to see the payload.</p>\n </div>\n <pre v-if=\"lastSubmit\" class=\"preview__json\">{{ JSON.stringify(lastSubmit, null, 2) }}</pre>\n <div v-else class=\"preview__empty\">No submissions yet.</div>\n </aside>\n </div>\n</template>\n\n<style scoped>\n.preview {\n display: grid;\n grid-template-columns: 1fr 360px;\n gap: var(--co-spacing-lg, 16px);\n padding: var(--co-spacing-lg, 16px);\n height: 100%;\n overflow: hidden;\n}\n\n.preview__pane {\n background: var(--co-semantic-surface-page, #fff);\n border: 1px solid var(--co-semantic-border-default, #e5e7eb);\n border-radius: var(--co-border-radius-sm, 12px);\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n/* The form pane is a transparent surface — the wizard/co-form inside paints\n * its own background (via the theme). Keeping the pane edge-less avoids the\n * \"white frame around a themed form\" look. */\n.preview__pane--form {\n background: transparent;\n border: 0;\n padding: 0;\n}\n\n.preview__pane-head {\n padding: var(--co-spacing-lg, 16px) var(--co-spacing-xl, 20px);\n border-bottom: 1px solid var(--co-semantic-border-default, #e5e7eb);\n}\n\n.preview__pane--side > :not(.preview__pane-head) {\n padding: var(--co-spacing-md, 12px) var(--co-spacing-lg, 16px);\n}\n\n.preview__title {\n margin: 0;\n font-size: var(--co-font-size-14, 14px);\n font-weight: 600;\n color: var(--co-semantic-text-default, #111827);\n}\n\n.preview__desc {\n margin: 4px 0 0;\n font-size: var(--co-font-size-12, 12px);\n color: var(--co-semantic-text-secondary, #6b7280);\n}\n\n.preview__json {\n margin: var(--co-spacing-md, 12px) var(--co-spacing-lg, 16px);\n background: #0b1020;\n color: #e2e8f0;\n padding: var(--co-spacing-md, 12px);\n border-radius: var(--co-border-radius-xs, 8px);\n font-size: var(--co-font-size-12, 12px);\n overflow: auto;\n max-height: 100%;\n}\n\n.preview__empty {\n margin: var(--co-spacing-md, 12px) var(--co-spacing-lg, 16px);\n padding: var(--co-spacing-2xl, 24px);\n text-align: center;\n border: 1px dashed var(--co-semantic-border-default, #e5e7eb);\n border-radius: var(--co-border-radius-xs, 8px);\n color: var(--co-semantic-text-secondary, #6b7280);\n font-size: var(--co-font-size-12, 12px);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, provide, ref, watch } from 'vue';\nimport { CoIconButton } from '@prolibu-suite/cobalt-vue';\nimport { defineCustomElements as defineCobaltCore } from '@prolibu-suite/cobalt-core/loader';\nimport { defineCustomElements as defineCobaltForm } from '@prolibu-suite/cobalt-form/loader';\nimport {\n SCHEMA_STORE_KEY,\n createSchemaStore,\n type SchemaEvent,\n} from './stores/schema';\nimport DesignerTab from './components/DesignerTab.vue';\nimport JsonTab from './components/JsonTab.vue';\nimport PreviewTab from './components/PreviewTab.vue';\n\n/**\n * Reusable Vue 3 component for the Cobalt Form Builder.\n *\n * Each instance creates its own scoped store via `createSchemaStore()`\n * and provides it via `SCHEMA_STORE_KEY`. Multiple builders on the same\n * page therefore stay isolated.\n *\n * Slots let host apps replace the chrome around the editor:\n * - `brand` — left side of the topbar (default: \"CF\" mark + title)\n * - `actions` — right side of the topbar (default: undo/redo buttons)\n * - `before` — content above the topbar (custom banner / breadcrumb)\n * - `after` — content below the editor (custom footer / save bar)\n *\n * Granular `SchemaEvent`s are re-emitted as Vue events the host can\n * listen for analytics, autosave, etc.\n */\n\ntype TabId = 'designer' | 'preview' | 'json';\n\nconst props = withDefaults(\n defineProps<{\n /** The schema being edited (paged shape preferred — `{title,pages,theme}`). */\n modelValue?: Record<string, any>;\n /** Which top-level tabs to expose. Defaults to all three. */\n tabs?: TabId[];\n /** Hide the builder's brand mark (when the host has its own chrome). */\n hideBrand?: boolean;\n /** Brand label text (defaults to \"Cobalt Form Builder\"). */\n brandLabel?: string;\n /** Skip auto-registering Cobalt custom elements (host already did it). */\n skipCobaltRegister?: boolean;\n }>(),\n {\n modelValue: () => ({}),\n tabs: () => ['designer', 'preview', 'json'],\n hideBrand: false,\n brandLabel: 'Cobalt Form Builder',\n skipCobaltRegister: false,\n },\n);\n\nconst emit = defineEmits<{\n // v-model\n 'update:modelValue': [value: Record<string, any>];\n // Granular events — fired by the store on every mutation. The shape\n // matches `SchemaEvent`. Each is also re-emitted with its specific name\n // so the host can use either `@event` or `@field-added` etc.\n event: [payload: SchemaEvent];\n 'field-added': [payload: Extract<SchemaEvent, { type: 'field-added' }>];\n 'field-removed': [payload: Extract<SchemaEvent, { type: 'field-removed' }>];\n 'field-renamed': [payload: Extract<SchemaEvent, { type: 'field-renamed' }>];\n 'field-updated': [payload: Extract<SchemaEvent, { type: 'field-updated' }>];\n 'field-duplicated': [payload: Extract<SchemaEvent, { type: 'field-duplicated' }>];\n 'field-reordered': [payload: Extract<SchemaEvent, { type: 'field-reordered' }>];\n 'page-added': [payload: Extract<SchemaEvent, { type: 'page-added' }>];\n 'page-removed': [payload: Extract<SchemaEvent, { type: 'page-removed' }>];\n 'page-duplicated': [payload: Extract<SchemaEvent, { type: 'page-duplicated' }>];\n 'page-updated': [payload: Extract<SchemaEvent, { type: 'page-updated' }>];\n 'theme-changed': [payload: Extract<SchemaEvent, { type: 'theme-changed' }>];\n 'selection-changed': [payload: Extract<SchemaEvent, { type: 'selection-changed' }>];\n 'schema-replaced': [payload: Extract<SchemaEvent, { type: 'schema-replaced' }>];\n undo: [payload: Extract<SchemaEvent, { type: 'undo' }>];\n redo: [payload: Extract<SchemaEvent, { type: 'redo' }>];\n}>();\n\ndefineSlots<{\n brand?: () => any;\n actions?: (props: { store: ReturnType<typeof createSchemaStore> }) => any;\n before?: () => any;\n after?: (props: { store: ReturnType<typeof createSchemaStore> }) => any;\n}>();\n\nconst TAB_META: Record<TabId, { label: string }> = {\n designer: { label: 'Designer' },\n preview: { label: 'Preview' },\n json: { label: 'JSON Editor' },\n};\n\nconst visibleTabs = computed(() =>\n props.tabs.map((id) => ({ id, label: TAB_META[id].label })),\n);\n\nconst active = ref<TabId>(props.tabs[0] ?? 'designer');\n\n// ── Per-instance store ───────────────────────────────────────────────────\n\nlet suppressModelEmit = false;\n\nconst store = createSchemaStore({\n initialSchema: props.modelValue,\n onEvent: (event) => {\n // Generic \"event\" fires for everything (good for logging) plus a\n // type-specific event so consumers can listen narrowly.\n emit('event', event);\n // @ts-expect-error — emit name comes from the event's type literally;\n // the union typing above already enforces payload shape per name.\n emit(event.type, event);\n },\n});\n\nprovide(SCHEMA_STORE_KEY, store);\n\n// ── v-model bridging ─────────────────────────────────────────────────────\n\nwatch(\n () => store.exported,\n (next) => {\n if (suppressModelEmit) return;\n emit('update:modelValue', next as Record<string, any>);\n },\n { deep: true },\n);\n\nwatch(\n () => props.modelValue,\n (next) => {\n if (!next) return;\n const incoming = JSON.stringify(next);\n const current = JSON.stringify(store.exported);\n if (incoming === current) return;\n suppressModelEmit = true;\n store.replaceAll(next);\n suppressModelEmit = false;\n },\n { deep: true },\n);\n\n// ── Lifecycle ────────────────────────────────────────────────────────────\n\nonMounted(() => {\n if (!props.skipCobaltRegister) {\n defineCobaltCore();\n defineCobaltForm();\n }\n window.addEventListener('keydown', onKey);\n});\n\nonBeforeUnmount(() => {\n window.removeEventListener('keydown', onKey);\n});\n\n// ── Keyboard shortcuts ──────────────────────────────────────────────────\n\nfunction onKey(ev: KeyboardEvent): void {\n // Esc collapses inline editor (skip when focus is in an editable element).\n if (ev.key === 'Escape') {\n const target = ev.target as HTMLElement | null;\n const editable =\n target?.isContentEditable ||\n target?.tagName === 'INPUT' ||\n target?.tagName === 'TEXTAREA' ||\n target?.tagName === 'SELECT';\n if (editable) {\n (target as HTMLElement).blur();\n return;\n }\n if (store.selection.fieldName !== null) {\n store.selectPage(store.selection.pageIdx);\n }\n return;\n }\n\n const isMod = ev.metaKey || ev.ctrlKey;\n if (!isMod) return;\n if (ev.key === 'z' && !ev.shiftKey) {\n ev.preventDefault();\n store.undo();\n } else if ((ev.key === 'z' && ev.shiftKey) || ev.key === 'y') {\n ev.preventDefault();\n store.redo();\n }\n}\n</script>\n\n<template>\n <div class=\"shell\">\n <slot name=\"before\" />\n\n <header class=\"shell__topbar\">\n <slot name=\"brand\">\n <div v-if=\"!hideBrand\" class=\"shell__brand\">\n <div class=\"shell__brand-mark\">CF</div>\n <h1 class=\"shell__brand-title\">{{ brandLabel }}</h1>\n </div>\n </slot>\n\n <nav class=\"shell__tabs\">\n <button\n v-for=\"t in visibleTabs\"\n :key=\"t.id\"\n class=\"shell__tab\"\n :class=\"{ 'is-active': active === t.id }\"\n @click=\"active = t.id\"\n >\n {{ t.label }}\n </button>\n </nav>\n\n <div class=\"shell__actions\">\n <slot name=\"actions\" :store=\"store\">\n <CoIconButton\n icon=\"arrow-counter-clockwise\"\n variant=\"outlined\"\n size=\"sm\"\n label=\"Undo (⌘Z)\"\n :disabled=\"!store.canUndo\"\n @click=\"store.undo()\"\n />\n <CoIconButton\n icon=\"arrow-clockwise\"\n variant=\"outlined\"\n size=\"sm\"\n label=\"Redo (⌘⇧Z)\"\n :disabled=\"!store.canRedo\"\n @click=\"store.redo()\"\n />\n </slot>\n </div>\n </header>\n\n <main class=\"shell__content\">\n <DesignerTab v-show=\"active === 'designer'\" />\n <PreviewTab v-if=\"active === 'preview'\" />\n <JsonTab v-if=\"active === 'json'\" />\n </main>\n\n <slot name=\"after\" :store=\"store\" />\n </div>\n</template>\n\n<style scoped>\n.shell {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n.shell__topbar {\n display: flex;\n align-items: center;\n height: var(--fb-topbar-height);\n padding: 0 var(--co-spacing-2xl, 24px);\n background: var(--fb-panel);\n border-bottom: 1px solid var(--fb-border);\n gap: var(--co-spacing-2xl, 24px);\n flex-shrink: 0;\n}\n\n.shell__brand {\n display: flex;\n align-items: center;\n gap: var(--co-spacing-md, 12px);\n padding-right: var(--co-spacing-lg, 16px);\n border-right: 1px solid var(--fb-border);\n height: 36px;\n}\n\n.shell__brand-mark {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--co-border-radius-xs, 8px);\n background: var(--co-color-primary-azul, #2563eb);\n color: white;\n font-weight: 700;\n font-size: 13px;\n letter-spacing: 0.02em;\n box-shadow: 0 1px 2px color-mix(in srgb, var(--co-color-primary-azul) 25%, transparent);\n}\n\n.shell__brand-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--co-semantic-text-default, #111827);\n letter-spacing: -0.01em;\n}\n\n.shell__tabs {\n display: flex;\n align-items: center;\n height: 100%;\n}\n\n.shell__tab {\n padding: 0 var(--co-spacing-lg, 16px);\n height: 100%;\n border: 0;\n background: transparent;\n font-size: var(--co-font-size-14, 14px);\n color: var(--co-semantic-text-secondary, #6b7280);\n border-bottom: 2px solid transparent;\n font-weight: 500;\n transition: color 120ms;\n cursor: pointer;\n}\n\n.shell__tab:hover { color: var(--co-semantic-text-default, #111827); }\n\n.shell__tab.is-active {\n color: var(--co-color-primary-azul, #2563eb);\n border-bottom-color: var(--co-color-primary-azul, #2563eb);\n font-weight: 600;\n}\n\n.shell__actions {\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--co-spacing-xs, 6px);\n}\n\n.shell__content {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n background: var(--fb-bg);\n}\n</style>\n"],"names":["HISTORY_LIMIT","blankSchema","FIELD_DEFAULTS","titleize","s","c","deepClone","v","createSchemaStore","options","emit","data","ref","selection","past","future","canUndo","computed","canRedo","currentPage","selectedField","page","name","setSelection","next","selectField","pageIdx","fieldName","selectPage","selectForm","snapshot","undo","prev","clampSelection","redo","pi","fn","kind","setTitle","title","setDescription","description","setMode","mode","addPage","num","newIdx","removePage","idx","duplicatePage","src","copy","uniquePageName","updatePage","patch","base","existing","p","i","uniqueFieldName","n","addField","def","insertFieldAfter","refName","entries","refIdx","newEntry","removeField","duplicateField","newName","k","updateField","replaceFieldDef","newDef","renameField","oldName","moveField","fromIdx","toIdx","names","moved","reorderFieldsByNames","resolvedTheme","resolveTheme","setTheme","setThemeSection","section","current","resetTheme","replaceAll","raw","isPagedSchema","paged","toPagedSchema","exported","hasTheme","reactive","SCHEMA_STORE_KEY","useSchemaStore","store","inject","FIELD_CATALOG","GROUP_LABELS","schema","query","groups","q","filtered","f","a","byGroup","item","onDragStart","ev","onSelect","detailValue","d","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_unref","_cache","$event","_hoisted_2","_createVNode","CoInput","_hoisted_3","_hoisted_4","_toDisplayString","_Fragment","_renderList","_hoisted_5","_hoisted_6","CoListItem","props","__props","__emit","el","focused","watch","onInput","commit","onBlur","onFocus","onKeydown","_normalizeClass","an","Pe","yt","wt","bt","t","e","fe","$e","o","Ht","mn","vn","St","bn","yn","Dt","_t","wn","En","Tt","Ke","Sn","Dn","_n","Tn","Ct","Cn","On","Ot","r","ne","In","Ye","ie","An","xn","Nn","re","ae","xe","It","Te","Lt","Wt","Gt","S","E","We","Pn","Q","At","V","h","ye","jt","te","P","l","u","m","y","b","w","xt","ce","we","ht","J","Nt","Mn","Fn","Je","Ce","zt","Rn","Ut","Vt","$t","Xn","Bn","Yn","ge","Ze","Ne","kn","L","G","R","j","Hn","z","O","g","T","pe","Be","C","ue","Se","Y","be","Oe","$","se","Zt","Qt","W","Me","ve","Ge","je","de","Z","Qe","et","Pt","Mt","me","Ie","Ae","Fe","ke","H","tt","lt","ze","Ve","Re","Ft","Ln","qt","Kt","Wn","Gn","Jt","he","jn","Zn","nt","He","ee","Ee","vt","rn","Xe","B","$n","Vn","K","oe","le","D","A","qn","I","_","x","M","F","Un","st","zn","Jn","Kn","N","De","ut","ct","ot","rt","Ue","_e","Qn","Rt","Le","it","X","en","pt","gt","eo","to","dt","sn","no","un","kt","tn","nn","Xt","oo","Yt","on","U","qe","mt","ln","ft","ro","lo","cn","Et","dn","hn","pn","catalogEntry","TYPE_OPTIONS","key","value","onRename","err","collapse","duplicate","remove","PRESERVED_KEYS","changeType","newKind","factory","baseDefaults","preserved","updateOption","removeOption","addOption","draggingOptionIdx","optionDropTarget","onOptionDragStart","onOptionDragOver","onOptionDragLeave","onOptionDrop","from","target","onOptionDragEnd","hasOther","toggleOther","insertOpen","INSERT_OPTIONS","insertAfter","insertSection","previewInputType","toNumOrUndef","sliderMin","sliderMax","sliderStep","sliderPreviewValue","ratingMax","EditableText","_hoisted_7","CoSelect","CoIconButton","_hoisted_8","_hoisted_9","_hoisted_10","opt","_hoisted_12","CoButton","_hoisted_14","CoSwitch","_hoisted_15","_hoisted_16","CoRating","_hoisted_17","_hoisted_18","CoSlider","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_createBlock","_hoisted_24","_withModifiers","entry","isSelected","select","FieldCardExpanded","_createTextVNode","fieldNames","toolboxDragOver","dup","patchPage","onBodyDragOver","onBodyDragLeave","onBodyDrop","VueDraggable","FieldCard","themeStyles","themeToStyles","innerStyle","outerStyle","dataAttrs","_mergeProps","PageCard","FORM_TABS","PAGE_TABS","FIELD_TABS","APPEARANCE_OPTIONS","DENSITY_OPTIONS","RADIUS_OPTIONS","SIZE_OPTIONS","ATTACHMENT_OPTIONS","FORMAT_OPTIONS","ACCENT_CHIPS","ACCENT_PRESET_HEX","field","formSection","pageSection","fieldSection","theme","resolved","patchField","patchTheme","patchThemeSection","sec","pickAccent","id","pickCustomAccent","hex","scopeLabel","scopeSubtitle","CoTabGroup","CoTab","_hoisted_11","chip","_normalizeStyle","_hoisted_13","CoCheckbox","FieldToolbox","FieldCanvas","PropertiesPanel","draft","error","serialized","apply","parsed","reset","isPaged","schemaJson","themeJson","out","lastSubmit","onSubmit","detail","TAB_META","visibleTabs","active","suppressModelEmit","event","provide","incoming","onMounted","defineCobaltCore","defineCobaltForm","onKey","onBeforeUnmount","_renderSlot","_ctx","DesignerTab","PreviewTab","JsonTab"],"mappings":"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","x_google_ignoreList":[4]}
|