@stonecrop/desktop 0.8.1 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/desktop.css +1 -1
- package/dist/desktop.js +175 -175
- package/dist/desktop.js.map +1 -1
- package/dist/desktop.umd.cjs +3 -3
- package/dist/desktop.umd.cjs.map +1 -1
- package/package.json +5 -5
package/dist/desktop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"desktop.js","sources":["../src/components/ActionSet.vue","../src/components/CommandPalette.vue","../../stonecrop/dist/stonecrop.js","../../aform/dist/aform.js","../src/components/SheetNav.vue","../src/components/Desktop.vue","../src/plugins/index.ts"],"sourcesContent":["<template>\n\t<div\n\t\t:class=\"{ 'open-set': isOpen, 'hovered-and-closed': closeClicked }\"\n\t\tclass=\"action-set collapse\"\n\t\t@mouseover=\"onHover\"\n\t\t@mouseleave=\"onHoverLeave\">\n\t\t<div class=\"action-menu-icon\">\n\t\t\t<div id=\"chevron\" @click=\"closeClicked = !closeClicked\">\n\t\t\t\t<svg\n\t\t\t\t\tid=\"Layer_1\"\n\t\t\t\t\tclass=\"leftBar\"\n\t\t\t\t\tversion=\"1.1\"\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\t\t\t\t\tx=\"0px\"\n\t\t\t\t\ty=\"0px\"\n\t\t\t\t\tviewBox=\"0 0 100 100\"\n\t\t\t\t\txml:space=\"preserve\"\n\t\t\t\t\twidth=\"50\"\n\t\t\t\t\theight=\"50\">\n\t\t\t\t\t<polygon points=\"54.2,33.4 29.2,58.8 25,54.6 50,29.2 \" />\n\t\t\t\t</svg>\n\n\t\t\t\t<svg\n\t\t\t\t\tid=\"Layer_1\"\n\t\t\t\t\tclass=\"rightBar\"\n\t\t\t\t\tversion=\"1.1\"\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\t\t\t\t\tx=\"0px\"\n\t\t\t\t\ty=\"0px\"\n\t\t\t\t\tviewBox=\"0 0 100 100\"\n\t\t\t\t\txml:space=\"preserve\"\n\t\t\t\t\twidth=\"50\"\n\t\t\t\t\theight=\"50\">\n\t\t\t\t\t<polygon points=\"70.8,58.8 45.8,33.4 50,29.2 75,54.6 \" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t</div>\n\t\t<div style=\"margin-right: 30px\"></div>\n\t\t<div v-for=\"(el, index) in elements\" :key=\"el.label\" class=\"action-element\">\n\t\t\t<button\n\t\t\t\tv-if=\"el.type == 'button'\"\n\t\t\t\t:disabled=\"el.disabled\"\n\t\t\t\tclass=\"button-default\"\n\t\t\t\t@click=\"handleClick(el.action, el.label)\">\n\t\t\t\t{{ el.label }}\n\t\t\t</button>\n\t\t\t<div v-if=\"el.type == 'dropdown'\">\n\t\t\t\t<button class=\"button-default\" @click=\"toggleDropdown(index)\">{{ el.label }}</button>\n\t\t\t\t<div v-show=\"dropdownStates[index]\" class=\"dropdown-container\">\n\t\t\t\t\t<div class=\"dropdown\">\n\t\t\t\t\t\t<div v-for=\"(item, itemIndex) in el.actions\" :key=\"item.label\">\n\t\t\t\t\t\t\t<button v-if=\"item.action != null\" class=\"dropdown-item\" @click=\"handleClick(item.action, item.label)\">\n\t\t\t\t\t\t\t\t{{ item.label }}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<a v-else-if=\"item.link != null\" :href=\"item.link\"\n\t\t\t\t\t\t\t\t><button class=\"dropdown-item\">{{ item.label }}</button></a\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, ref } from 'vue'\n\nimport type { ActionElements } from '../types'\n\nconst { elements = [] } = defineProps<{ elements?: ActionElements[] }>()\nconst emit = defineEmits<{\n\tactionClick: [label: string, action: (() => void | Promise<void>) | undefined]\n}>()\n\n// Track dropdown open state separately (index -> boolean)\nconst dropdownStates = ref<Record<number, boolean>>({})\n\nconst isOpen = ref(false)\nconst timeoutId = ref<number>(-1)\nconst hover = ref(false)\nconst closeClicked = ref(false)\n\nonMounted(() => {\n\tcloseDropdowns()\n})\n\nconst closeDropdowns = () => {\n\tdropdownStates.value = {}\n}\n\nconst onHover = () => {\n\thover.value = true\n\ttimeoutId.value = setTimeout(() => {\n\t\tif (hover.value) {\n\t\t\tisOpen.value = true\n\t\t}\n\t}, 500)\n}\n\nconst onHoverLeave = () => {\n\thover.value = false\n\tcloseClicked.value = false\n\tclearTimeout(timeoutId.value)\n\tisOpen.value = false\n}\n\nconst toggleDropdown = (index: number) => {\n\tconst showDropdown = !dropdownStates.value[index]\n\tcloseDropdowns()\n\tif (showDropdown) {\n\t\tdropdownStates.value[index] = true\n\t}\n}\n\nconst handleClick = (action: (() => void | Promise<void>) | undefined, label: string) => {\n\t// Emit event to parent - parent will handle execution\n\temit('actionClick', label, action)\n}\n</script>\n\n<style scoped>\n#chevron {\n\tposition: relative;\n\ttransform: rotate(90deg);\n}\n\n.leftBar,\n.rightBar {\n\ttransition-duration: 0.225s;\n\ttransition-property: transform;\n}\n\n.leftBar,\n.action-set.collapse.hovered-and-closed:hover .leftBar {\n\ttransform-origin: 33.4% 50%;\n\ttransform: rotate(90deg);\n}\n\n.rightBar,\n.action-set.collapse.hovered-and-closed:hover .rightBar {\n\ttransform-origin: 67% 50%;\n\ttransform: rotate(-90deg);\n}\n\n.rightBar {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n}\n\n.action-set.collapse:hover .leftBar {\n\ttransform: rotate(0);\n}\n\n.action-set.collapse:hover .rightBar {\n\ttransform: rotate(0);\n}\n\n.action-set {\n\tposition: fixed;\n\ttop: 10px;\n\tright: 10px;\n\tpadding: 20px;\n\tbox-shadow: 0px 1px 2px rgba(25, 39, 52, 0.05), 0px 0px 4px rgba(25, 39, 52, 0.1);\n\tborder-radius: 10px;\n\tdisplay: flex;\n\tflex-direction: row-reverse;\n\tbackground-color: white;\n\toverflow: hidden;\n\tz-index: 1001; /* Above SheetNav (100) and operation log button (999) */\n}\n\n.action-menu-icon {\n\tposition: absolute;\n\ttop: 6px;\n\tright: 4px;\n}\n\n.action-menu-icon svg {\n\tfill: #333333;\n}\n\n.action-set.collapse,\n.action-set.collapse.hovered-and-closed:hover {\n\tmax-width: 25px;\n\toverflow: hidden;\n\n\t-webkit-transition: max-width 0.5s ease-in-out;\n\t-moz-transition: max-width 0.5s ease-in-out;\n\t-o-transition: max-width 0.5s ease-in-out;\n\ttransition: max-width 0.5s ease-in-out;\n}\n\n.action-set.collapse .action-element,\n.action-set.collapse.hovered-and-closed:hover .action-element {\n\topacity: 0;\n\t-webkit-transition: opacity 0.25s ease-in-out;\n\t-moz-transition: opacity 0.25s ease-in-out;\n\t-o-transition: opacity 0.25s ease-in-out;\n\ttransition: opacity 0.25s ease-in-out;\n\ttransition-delay: 0s;\n}\n\n.action-set.collapse:hover {\n\tmax-width: 500px;\n}\n\n.action-set.collapse.open-set:hover {\n\toverflow: visible !important;\n}\n\n.action-set.collapse.hovered-and-closed:hover .action-element {\n\topacity: 0 !important;\n\t/* transition-delay: 0.5s; */\n}\n\n.action-set.collapse:hover .action-element {\n\topacity: 100 !important;\n\t/* transition-delay: 0.5s; */\n}\n\n.action-element {\n\tmargin-left: 5px;\n\tmargin-right: 5px;\n\tposition: relative; /* Make this the positioning context for absolute children */\n}\nbutton.button-default {\n\tbackground-color: #ffffff;\n\tpadding: 5px 12px;\n\tborder-radius: 3px;\n\tbox-shadow: rgba(0, 0, 0, 0.05) 0px 0.5px 0px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px,\n\t\trgba(0, 0, 0, 0.05) 0px 2px 4px 0px;\n\tborder: none;\n\tcursor: pointer;\n\twhite-space: nowrap;\n}\n\nbutton.button-default:hover {\n\tbackground-color: #f2f2f2;\n}\n\nbutton.button-default:disabled {\n\topacity: 0.5;\n\tcursor: not-allowed;\n\tbackground-color: #f5f5f5;\n\tcolor: #999;\n}\n\nbutton.button-default:disabled:hover {\n\tbackground-color: #f5f5f5;\n}\n\n.dropdown-container {\n\tposition: relative;\n}\n\n.dropdown {\n\tposition: absolute;\n\tright: 0;\n\tmin-width: 200px;\n\tbox-shadow: 0 0.5rem 1rem rgb(0 0 0 / 18%);\n\tborder-radius: 10px;\n\tbackground-color: #ffffff;\n\tpadding: 10px;\n\tz-index: 1000;\n}\n\nbutton.dropdown-item {\n\twidth: 100%;\n\tpadding: 8px 5px;\n\ttext-align: left;\n\tborder: none;\n\tbackground-color: #ffffff;\n\tcursor: pointer;\n\tborder-radius: 5px;\n}\n\nbutton.dropdown-item:hover {\n\tbackground-color: #f2f2f2;\n}\n</style>\n","<template>\n\t<Teleport to=\"body\">\n\t\t<Transition name=\"fade\">\n\t\t\t<div v-if=\"isOpen\" class=\"command-palette-overlay\" @click=\"closeModal\">\n\t\t\t\t<div class=\"command-palette\" @click.stop>\n\t\t\t\t\t<div class=\"command-palette-header\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tref=\"input\"\n\t\t\t\t\t\t\tv-model=\"query\"\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tclass=\"command-palette-input\"\n\t\t\t\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t\t\t\tautofocus\n\t\t\t\t\t\t\t@keydown=\"handleKeydown\" />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div v-if=\"results.length\" class=\"command-palette-results\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-for=\"(result, index) in results\"\n\t\t\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t\t\tclass=\"command-palette-result\"\n\t\t\t\t\t\t\t:class=\"{ selected: index === selectedIndex }\"\n\t\t\t\t\t\t\t@click=\"selectResult(result)\"\n\t\t\t\t\t\t\t@mouseover=\"selectedIndex = index\">\n\t\t\t\t\t\t\t<div class=\"result-title\">\n\t\t\t\t\t\t\t\t<slot name=\"title\" :result=\"result\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"result-content\">\n\t\t\t\t\t\t\t\t<slot name=\"content\" :result=\"result\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-else-if=\"query && !results.length\" class=\"command-palette-no-results\">\n\t\t\t\t\t\t<slot name=\"empty\"> No results found for \"{{ query }}\" </slot>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Transition>\n\t</Teleport>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { ref, computed, watch, nextTick, useTemplateRef } from 'vue'\n\ndefineSlots<{\n\ttitle?: { result: T }\n\tcontent?: { result: T }\n\tempty?: null\n}>()\n\nconst {\n\tsearch,\n\tisOpen = false,\n\tplaceholder = 'Type a command or search...',\n\tmaxResults = 10,\n} = defineProps<{\n\tsearch: (query: string) => T[]\n\tisOpen?: boolean\n\tplaceholder?: string\n\tmaxResults?: number\n}>()\n\nconst emit = defineEmits<{\n\tselect: [T]\n\tclose: []\n}>()\n\nconst query = ref('')\nconst selectedIndex = ref(0)\nconst inputRef = useTemplateRef('input')\n\nconst results = computed(() => {\n\tif (!query.value) return []\n\tconst results = search(query.value)\n\treturn results.slice(0, maxResults)\n})\n\n// reset search query when modal opens\nwatch(\n\t() => isOpen,\n\tasync isOpen => {\n\t\tif (isOpen) {\n\t\t\tquery.value = ''\n\t\t\tselectedIndex.value = 0\n\t\t\tawait nextTick()\n\t\t\t;(inputRef.value as HTMLInputElement)?.focus()\n\t\t}\n\t}\n)\n\n// reset selected index when results change\nwatch(results, () => {\n\tselectedIndex.value = 0\n})\n\nconst closeModal = () => {\n\temit('close')\n}\n\nconst handleKeydown = (e: KeyboardEvent) => {\n\tswitch (e.key) {\n\t\tcase 'Escape':\n\t\t\tcloseModal()\n\t\t\tbreak\n\t\tcase 'ArrowDown':\n\t\t\te.preventDefault()\n\t\t\tif (results.value.length) {\n\t\t\t\tselectedIndex.value = (selectedIndex.value + 1) % results.value.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'ArrowUp':\n\t\t\te.preventDefault()\n\t\t\tif (results.value.length) {\n\t\t\t\tselectedIndex.value = (selectedIndex.value - 1 + results.value.length) % results.value.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'Enter':\n\t\t\tif (results.value.length && selectedIndex.value >= 0) {\n\t\t\t\tselectResult(results.value[selectedIndex.value])\n\t\t\t}\n\t\t\tbreak\n\t}\n}\n\nconst selectResult = (result: T) => {\n\temit('select', result)\n\tcloseModal()\n}\n</script>\n\n<style>\n.fade-enter-active,\n.fade-leave-active {\n\ttransition: opacity 0.2s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.command-palette-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: rgba(0, 0, 0, 0.5);\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: center;\n\tz-index: 9999;\n\tpadding-top: 100px;\n}\n\n.command-palette {\n\twidth: 600px;\n\tmax-width: 90%;\n\tbackground-color: white;\n\tborder-radius: 8px;\n\tbox-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n\toverflow: hidden;\n\tmax-height: 80vh;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.command-palette-header {\n\tdisplay: flex;\n\tborder-bottom: 1px solid #eaeaea;\n\tpadding: 12px;\n}\n\n.command-palette-input {\n\tflex: 1;\n\tborder: none;\n\toutline: none;\n\tfont-size: 16px;\n\tpadding: 8px 12px;\n\tbackground-color: transparent;\n}\n\n.command-palette-close {\n\tbackground: transparent;\n\tborder: none;\n\tfont-size: 24px;\n\tcursor: pointer;\n\tcolor: #666;\n\tpadding: 0 8px;\n}\n\n.command-palette-close:hover {\n\tcolor: #333;\n}\n\n.command-palette-results {\n\toverflow-y: auto;\n\tmax-height: 60vh;\n}\n\n.command-palette-result {\n\tpadding: 12px 16px;\n\tcursor: pointer;\n\tborder-bottom: 1px solid #f0f0f0;\n}\n\n.command-palette-result:hover,\n.command-palette-result.selected {\n\tbackground-color: #f5f5f5;\n}\n\n.command-palette-result.selected {\n\tbackground-color: rgba(132, 60, 3, 0.1);\n}\n\n.result-title {\n\tfont-weight: 500;\n\tmargin-bottom: 4px;\n\tcolor: #333;\n}\n\n.result-content {\n\tfont-size: 14px;\n\tcolor: #666;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n.command-palette-no-results {\n\tpadding: 20px 16px;\n\ttext-align: center;\n\tcolor: #666;\n}\n</style>\n","import { hasInjectionContext as Ae, inject as oe, getCurrentInstance as Me, toRaw as Fe, computed as W, isRef as se, isReactive as be, toRef as ce, ref as B, reactive as ye, markRaw as ae, effectScope as Ye, nextTick as de, getCurrentScope as Xe, onScopeDispose as et, watch as U, toRefs as $e, onMounted as Be, readonly as je, customRef as tt, toValue as q, shallowRef as We, unref as rt, provide as De } from \"vue\";\nconst te = typeof window < \"u\";\nlet G;\nconst me = (n) => G = n;\nprocess.env.NODE_ENV;\nconst Pe = process.env.NODE_ENV !== \"production\" ? /* @__PURE__ */ Symbol(\"pinia\") : (\n /* istanbul ignore next */\n /* @__PURE__ */ Symbol()\n);\nfunction Y(n) {\n return n && typeof n == \"object\" && Object.prototype.toString.call(n) === \"[object Object]\" && typeof n.toJSON != \"function\";\n}\nvar le;\n(function(n) {\n n.direct = \"direct\", n.patchObject = \"patch object\", n.patchFunction = \"patch function\";\n})(le || (le = {}));\nfunction He(n, e) {\n for (const t in e) {\n const r = e[t];\n if (!(t in n))\n continue;\n const o = n[t];\n Y(o) && Y(r) && !se(r) && !be(r) ? n[t] = He(o, r) : n[t] = r;\n }\n return n;\n}\nconst ze = () => {\n};\nfunction Te(n, e, t, r = ze) {\n n.add(e);\n const o = () => {\n n.delete(e) && r();\n };\n return !t && Xe() && et(o), o;\n}\nfunction ee(n, ...e) {\n n.forEach((t) => {\n t(...e);\n });\n}\nconst nt = (n) => n(), Ie = /* @__PURE__ */ Symbol(), Ee = /* @__PURE__ */ Symbol();\nfunction Ne(n, e) {\n n instanceof Map && e instanceof Map ? e.forEach((t, r) => n.set(r, t)) : n instanceof Set && e instanceof Set && e.forEach(n.add, n);\n for (const t in e) {\n if (!e.hasOwnProperty(t))\n continue;\n const r = e[t], o = n[t];\n Y(o) && Y(r) && n.hasOwnProperty(t) && !se(r) && !be(r) ? n[t] = Ne(o, r) : n[t] = r;\n }\n return n;\n}\nconst ot = process.env.NODE_ENV !== \"production\" ? /* @__PURE__ */ Symbol(\"pinia:skipHydration\") : (\n /* istanbul ignore next */\n /* @__PURE__ */ Symbol()\n);\nfunction st(n) {\n return !Y(n) || !Object.prototype.hasOwnProperty.call(n, ot);\n}\nconst { assign: z } = Object;\nfunction Ce(n) {\n return !!(se(n) && n.effect);\n}\nfunction ke(n, e, t, r) {\n const { state: o, actions: s, getters: i } = e, a = t.state.value[n];\n let c;\n function f() {\n !a && (process.env.NODE_ENV === \"production\" || !r) && (t.state.value[n] = o ? o() : {});\n const g = process.env.NODE_ENV !== \"production\" && r ? (\n // use ref() to unwrap refs inside state TODO: check if this is still necessary\n $e(B(o ? o() : {}).value)\n ) : $e(t.state.value[n]);\n return z(g, s, Object.keys(i || {}).reduce((b, A) => (process.env.NODE_ENV !== \"production\" && A in g && console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${A}\" in store \"${n}\".`), b[A] = ae(W(() => {\n me(t);\n const $ = t._s.get(n);\n return i[A].call($, $);\n })), b), {}));\n }\n return c = _e(n, f, e, t, r, !0), c;\n}\nfunction _e(n, e, t = {}, r, o, s) {\n let i;\n const a = z({ actions: {} }, t);\n if (process.env.NODE_ENV !== \"production\" && !r._e.active)\n throw new Error(\"Pinia destroyed\");\n const c = { deep: !0 };\n process.env.NODE_ENV !== \"production\" && (c.onTrigger = (d) => {\n f ? $ = d : f == !1 && !v._hotUpdating && (Array.isArray($) ? $.push(d) : console.error(\"🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.\"));\n });\n let f, g, b = /* @__PURE__ */ new Set(), A = /* @__PURE__ */ new Set(), $;\n const k = r.state.value[n];\n !s && !k && (process.env.NODE_ENV === \"production\" || !o) && (r.state.value[n] = {});\n const x = B({});\n let N;\n function D(d) {\n let p;\n f = g = !1, process.env.NODE_ENV !== \"production\" && ($ = []), typeof d == \"function\" ? (d(r.state.value[n]), p = {\n type: le.patchFunction,\n storeId: n,\n events: $\n }) : (Ne(r.state.value[n], d), p = {\n type: le.patchObject,\n payload: d,\n storeId: n,\n events: $\n });\n const R = N = /* @__PURE__ */ Symbol();\n de().then(() => {\n N === R && (f = !0);\n }), g = !0, ee(b, p, r.state.value[n]);\n }\n const P = s ? function() {\n const { state: p } = t, R = p ? p() : {};\n this.$patch((F) => {\n z(F, R);\n });\n } : (\n /* istanbul ignore next */\n process.env.NODE_ENV !== \"production\" ? () => {\n throw new Error(`🍍: Store \"${n}\" is built using the setup syntax and does not implement $reset().`);\n } : ze\n );\n function S() {\n i.stop(), b.clear(), A.clear(), r._s.delete(n);\n }\n const C = (d, p = \"\") => {\n if (Ie in d)\n return d[Ee] = p, d;\n const R = function() {\n me(r);\n const F = Array.from(arguments), w = /* @__PURE__ */ new Set(), T = /* @__PURE__ */ new Set();\n function L(m) {\n w.add(m);\n }\n function y(m) {\n T.add(m);\n }\n ee(A, {\n args: F,\n name: R[Ee],\n store: v,\n after: L,\n onError: y\n });\n let E;\n try {\n E = d.apply(this && this.$id === n ? this : v, F);\n } catch (m) {\n throw ee(T, m), m;\n }\n return E instanceof Promise ? E.then((m) => (ee(w, m), m)).catch((m) => (ee(T, m), Promise.reject(m))) : (ee(w, E), E);\n };\n return R[Ie] = !0, R[Ee] = p, R;\n }, O = /* @__PURE__ */ ae({\n actions: {},\n getters: {},\n state: [],\n hotState: x\n }), _ = {\n _p: r,\n // _s: scope,\n $id: n,\n $onAction: Te.bind(null, A),\n $patch: D,\n $reset: P,\n $subscribe(d, p = {}) {\n const R = Te(b, d, p.detached, () => F()), F = i.run(() => U(() => r.state.value[n], (w) => {\n (p.flush === \"sync\" ? g : f) && d({\n storeId: n,\n type: le.direct,\n events: $\n }, w);\n }, z({}, c, p)));\n return R;\n },\n $dispose: S\n }, v = ye(process.env.NODE_ENV !== \"production\" || process.env.NODE_ENV !== \"production\" && process.env.NODE_ENV !== \"test\" && te ? z(\n {\n _hmrPayload: O,\n _customProperties: ae(/* @__PURE__ */ new Set())\n // devtools custom properties\n },\n _\n // must be added later\n // setupStore\n ) : _);\n r._s.set(n, v);\n const M = (r._a && r._a.runWithContext || nt)(() => r._e.run(() => (i = Ye()).run(() => e({ action: C }))));\n for (const d in M) {\n const p = M[d];\n if (se(p) && !Ce(p) || be(p))\n process.env.NODE_ENV !== \"production\" && o ? x.value[d] = ce(M, d) : s || (k && st(p) && (se(p) ? p.value = k[d] : Ne(p, k[d])), r.state.value[n][d] = p), process.env.NODE_ENV !== \"production\" && O.state.push(d);\n else if (typeof p == \"function\") {\n const R = process.env.NODE_ENV !== \"production\" && o ? p : C(p, d);\n M[d] = R, process.env.NODE_ENV !== \"production\" && (O.actions[d] = p), a.actions[d] = p;\n } else process.env.NODE_ENV !== \"production\" && Ce(p) && (O.getters[d] = s ? (\n // @ts-expect-error\n t.getters[d]\n ) : p, te && (M._getters || // @ts-expect-error: same\n (M._getters = ae([]))).push(d));\n }\n if (z(v, M), z(Fe(v), M), Object.defineProperty(v, \"$state\", {\n get: () => process.env.NODE_ENV !== \"production\" && o ? x.value : r.state.value[n],\n set: (d) => {\n if (process.env.NODE_ENV !== \"production\" && o)\n throw new Error(\"cannot set hotState\");\n D((p) => {\n z(p, d);\n });\n }\n }), process.env.NODE_ENV !== \"production\" && (v._hotUpdate = ae((d) => {\n v._hotUpdating = !0, d._hmrPayload.state.forEach((p) => {\n if (p in v.$state) {\n const R = d.$state[p], F = v.$state[p];\n typeof R == \"object\" && Y(R) && Y(F) ? He(R, F) : d.$state[p] = F;\n }\n v[p] = ce(d.$state, p);\n }), Object.keys(v.$state).forEach((p) => {\n p in d.$state || delete v[p];\n }), f = !1, g = !1, r.state.value[n] = ce(d._hmrPayload, \"hotState\"), g = !0, de().then(() => {\n f = !0;\n });\n for (const p in d._hmrPayload.actions) {\n const R = d[p];\n v[p] = //\n C(R, p);\n }\n for (const p in d._hmrPayload.getters) {\n const R = d._hmrPayload.getters[p], F = s ? (\n // special handling of options api\n W(() => (me(r), R.call(v, v)))\n ) : R;\n v[p] = //\n F;\n }\n Object.keys(v._hmrPayload.getters).forEach((p) => {\n p in d._hmrPayload.getters || delete v[p];\n }), Object.keys(v._hmrPayload.actions).forEach((p) => {\n p in d._hmrPayload.actions || delete v[p];\n }), v._hmrPayload = d._hmrPayload, v._getters = d._getters, v._hotUpdating = !1;\n })), process.env.NODE_ENV !== \"production\" && process.env.NODE_ENV !== \"test\" && te) {\n const d = {\n writable: !0,\n configurable: !0,\n // avoid warning on devtools trying to display this property\n enumerable: !1\n };\n [\"_p\", \"_hmrPayload\", \"_getters\", \"_customProperties\"].forEach((p) => {\n Object.defineProperty(v, p, z({ value: v[p] }, d));\n });\n }\n return r._p.forEach((d) => {\n if (process.env.NODE_ENV !== \"production\" && process.env.NODE_ENV !== \"test\" && te) {\n const p = i.run(() => d({\n store: v,\n app: r._a,\n pinia: r,\n options: a\n }));\n Object.keys(p || {}).forEach((R) => v._customProperties.add(R)), z(v, p);\n } else\n z(v, i.run(() => d({\n store: v,\n app: r._a,\n pinia: r,\n options: a\n })));\n }), process.env.NODE_ENV !== \"production\" && v.$state && typeof v.$state == \"object\" && typeof v.$state.constructor == \"function\" && !v.$state.constructor.toString().includes(\"[native code]\") && console.warn(`[🍍]: The \"state\" must be a plain object. It cannot be\n\tstate: () => new MyClass()\nFound in store \"${v.$id}\".`), k && s && t.hydrate && t.hydrate(v.$state, k), f = !0, g = !0, v;\n}\n// @__NO_SIDE_EFFECTS__\nfunction it(n, e, t) {\n let r;\n const o = typeof e == \"function\";\n r = o ? t : e;\n function s(i, a) {\n const c = Ae();\n if (i = // in test mode, ignore the argument provided as we can always retrieve a\n // pinia instance with getActivePinia()\n (process.env.NODE_ENV === \"test\" && G && G._testing ? null : i) || (c ? oe(Pe, null) : null), i && me(i), process.env.NODE_ENV !== \"production\" && !G)\n throw new Error(`[🍍]: \"getActivePinia()\" was called but there was no active Pinia. Are you trying to use a store before calling \"app.use(pinia)\"?\nSee https://pinia.vuejs.org/core-concepts/outside-component-usage.html for help.\nThis will fail in production.`);\n i = G, i._s.has(n) || (o ? _e(n, e, r, i) : ke(n, r, i), process.env.NODE_ENV !== \"production\" && (s._pinia = i));\n const f = i._s.get(n);\n if (process.env.NODE_ENV !== \"production\" && a) {\n const g = \"__hot:\" + n, b = o ? _e(g, e, r, i, !0) : ke(g, z({}, r), i, !0);\n a._hotUpdate(b), delete i.state.value[g], i._s.delete(g);\n }\n if (process.env.NODE_ENV !== \"production\" && te) {\n const g = Me();\n if (g && g.proxy && // avoid adding stores that are just built for hot module replacement\n !a) {\n const b = g.proxy, A = \"_pStores\" in b ? b._pStores : b._pStores = {};\n A[n] = f;\n }\n }\n return f;\n }\n return s.$id = n, s;\n}\nfunction Ue(n) {\n const e = Fe(n), t = {};\n for (const r in e) {\n const o = e[r];\n o.effect ? t[r] = // ...\n W({\n get: () => n[r],\n set(s) {\n n[r] = s;\n }\n }) : (se(o) || be(o)) && (t[r] = // ---\n ce(n, r));\n }\n return t;\n}\nconst at = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst ct = Object.prototype.toString, lt = (n) => ct.call(n) === \"[object Object]\", Je = () => {\n};\nfunction ut(...n) {\n if (n.length !== 1) return ce(...n);\n const e = n[0];\n return typeof e == \"function\" ? je(tt(() => ({\n get: e,\n set: Je\n }))) : B(e);\n}\nfunction ft(n, e) {\n function t(...r) {\n return new Promise((o, s) => {\n Promise.resolve(n(() => e.apply(this, r), {\n fn: e,\n thisArg: this,\n args: r\n })).then(o).catch(s);\n });\n }\n return t;\n}\nconst qe = (n) => n();\nfunction dt(n = qe, e = {}) {\n const { initialState: t = \"active\" } = e, r = ut(t === \"active\");\n function o() {\n r.value = !1;\n }\n function s() {\n r.value = !0;\n }\n const i = (...a) => {\n r.value && n(...a);\n };\n return {\n isActive: je(r),\n pause: o,\n resume: s,\n eventFilter: i\n };\n}\nfunction Oe(n) {\n return Array.isArray(n) ? n : [n];\n}\nfunction pt(n) {\n return Me();\n}\nfunction ht(n, e, t = {}) {\n const { eventFilter: r = qe, ...o } = t;\n return U(n, ft(r, e), o);\n}\nfunction gt(n, e, t = {}) {\n const { eventFilter: r, initialState: o = \"active\", ...s } = t, { eventFilter: i, pause: a, resume: c, isActive: f } = dt(r, { initialState: o });\n return {\n stop: ht(n, e, {\n ...s,\n eventFilter: i\n }),\n pause: a,\n resume: c,\n isActive: f\n };\n}\nconst vt = gt;\nfunction yt(n, e = !0, t) {\n pt() ? Be(n, t) : e ? n() : de(n);\n}\nfunction mt(n, e, t) {\n return U(n, e, {\n ...t,\n immediate: !0\n });\n}\nfunction ie(n, e, t) {\n return U(n, (o, s, i) => {\n o && e(o, s, i);\n }, {\n ...t,\n once: !1\n });\n}\nconst Q = at ? window : void 0;\nfunction St(n) {\n var e;\n const t = q(n);\n return (e = t?.$el) !== null && e !== void 0 ? e : t;\n}\nfunction re(...n) {\n const e = (r, o, s, i) => (r.addEventListener(o, s, i), () => r.removeEventListener(o, s, i)), t = W(() => {\n const r = Oe(q(n[0])).filter((o) => o != null);\n return r.every((o) => typeof o != \"string\") ? r : void 0;\n });\n return mt(() => {\n var r, o;\n return [\n (r = (o = t.value) === null || o === void 0 ? void 0 : o.map((s) => St(s))) !== null && r !== void 0 ? r : [Q].filter((s) => s != null),\n Oe(q(t.value ? n[1] : n[0])),\n Oe(rt(t.value ? n[2] : n[1])),\n q(t.value ? n[3] : n[2])\n ];\n }, ([r, o, s, i], a, c) => {\n if (!r?.length || !o?.length || !s?.length) return;\n const f = lt(i) ? { ...i } : i, g = r.flatMap((b) => o.flatMap((A) => s.map(($) => e(b, A, $, f))));\n c(() => {\n g.forEach((b) => b());\n });\n }, { flush: \"post\" });\n}\nconst he = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {}, ge = \"__vueuse_ssr_handlers__\", bt = /* @__PURE__ */ wt();\nfunction wt() {\n return ge in he || (he[ge] = he[ge] || {}), he[ge];\n}\nfunction Et(n, e) {\n return bt[n] || e;\n}\nfunction Ot(n) {\n return n == null ? \"any\" : n instanceof Set ? \"set\" : n instanceof Map ? \"map\" : n instanceof Date ? \"date\" : typeof n == \"boolean\" ? \"boolean\" : typeof n == \"string\" ? \"string\" : typeof n == \"object\" ? \"object\" : Number.isNaN(n) ? \"any\" : \"number\";\n}\nconst Rt = {\n boolean: {\n read: (n) => n === \"true\",\n write: (n) => String(n)\n },\n object: {\n read: (n) => JSON.parse(n),\n write: (n) => JSON.stringify(n)\n },\n number: {\n read: (n) => Number.parseFloat(n),\n write: (n) => String(n)\n },\n any: {\n read: (n) => n,\n write: (n) => String(n)\n },\n string: {\n read: (n) => n,\n write: (n) => String(n)\n },\n map: {\n read: (n) => new Map(JSON.parse(n)),\n write: (n) => JSON.stringify(Array.from(n.entries()))\n },\n set: {\n read: (n) => new Set(JSON.parse(n)),\n write: (n) => JSON.stringify(Array.from(n))\n },\n date: {\n read: (n) => new Date(n),\n write: (n) => n.toISOString()\n }\n}, Le = \"vueuse-storage\";\nfunction At(n, e, t, r = {}) {\n var o;\n const { flush: s = \"pre\", deep: i = !0, listenToStorageChanges: a = !0, writeDefaults: c = !0, mergeDefaults: f = !1, shallow: g, window: b = Q, eventFilter: A, onError: $ = (w) => {\n console.error(w);\n }, initOnMounted: k } = r, x = (g ? We : B)(e), N = W(() => q(n));\n if (!t) try {\n t = Et(\"getDefaultStorage\", () => Q?.localStorage)();\n } catch (w) {\n $(w);\n }\n if (!t) return x;\n const D = q(e), P = Ot(D), S = (o = r.serializer) !== null && o !== void 0 ? o : Rt[P], { pause: C, resume: O } = vt(x, (w) => d(w), {\n flush: s,\n deep: i,\n eventFilter: A\n });\n U(N, () => R(), { flush: s });\n let _ = !1;\n const v = (w) => {\n k && !_ || R(w);\n }, j = (w) => {\n k && !_ || F(w);\n };\n b && a && (t instanceof Storage ? re(b, \"storage\", v, { passive: !0 }) : re(b, Le, j)), k ? yt(() => {\n _ = !0, R();\n }) : R();\n function M(w, T) {\n if (b) {\n const L = {\n key: N.value,\n oldValue: w,\n newValue: T,\n storageArea: t\n };\n b.dispatchEvent(t instanceof Storage ? new StorageEvent(\"storage\", L) : new CustomEvent(Le, { detail: L }));\n }\n }\n function d(w) {\n try {\n const T = t.getItem(N.value);\n if (w == null)\n M(T, null), t.removeItem(N.value);\n else {\n const L = S.write(w);\n T !== L && (t.setItem(N.value, L), M(T, L));\n }\n } catch (T) {\n $(T);\n }\n }\n function p(w) {\n const T = w ? w.newValue : t.getItem(N.value);\n if (T == null)\n return c && D != null && t.setItem(N.value, S.write(D)), D;\n if (!w && f) {\n const L = S.read(T);\n return typeof f == \"function\" ? f(L, D) : P === \"object\" && !Array.isArray(L) ? {\n ...D,\n ...L\n } : L;\n } else return typeof T != \"string\" ? T : S.read(T);\n }\n function R(w) {\n if (!(w && w.storageArea !== t)) {\n if (w && w.key == null) {\n x.value = D;\n return;\n }\n if (!(w && w.key !== N.value)) {\n C();\n try {\n const T = S.write(x.value);\n (w === void 0 || w?.newValue !== T) && (x.value = p(w));\n } catch (T) {\n $(T);\n } finally {\n w ? de(O) : O();\n }\n }\n }\n }\n function F(w) {\n R(w.detail);\n }\n return x;\n}\nfunction Pt(n, e, t = {}) {\n const { window: r = Q } = t;\n return At(n, e, r?.localStorage, t);\n}\nconst Nt = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\nfunction _t(n = {}) {\n const { reactive: e = !1, target: t = Q, aliasMap: r = Nt, passive: o = !0, onEventFired: s = Je } = n, i = ye(/* @__PURE__ */ new Set()), a = {\n toJSON() {\n return {};\n },\n current: i\n }, c = e ? ye(a) : a, f = /* @__PURE__ */ new Set(), g = /* @__PURE__ */ new Map([\n [\"Meta\", f],\n [\"Shift\", /* @__PURE__ */ new Set()],\n [\"Alt\", /* @__PURE__ */ new Set()]\n ]), b = /* @__PURE__ */ new Set();\n function A(P, S) {\n P in c && (e ? c[P] = S : c[P].value = S);\n }\n function $() {\n i.clear();\n for (const P of b) A(P, !1);\n }\n function k(P, S, C) {\n if (!(!P || typeof S.getModifierState != \"function\")) {\n for (const [O, _] of g) if (S.getModifierState(O)) {\n C.forEach((v) => _.add(v));\n break;\n }\n }\n }\n function x(P, S) {\n if (P) return;\n const C = `${S[0].toUpperCase()}${S.slice(1)}`, O = g.get(C);\n if (![\"shift\", \"alt\"].includes(S) || !O) return;\n const _ = Array.from(O), v = _.indexOf(S);\n _.forEach((j, M) => {\n M >= v && (i.delete(j), A(j, !1));\n }), O.clear();\n }\n function N(P, S) {\n var C, O;\n const _ = (C = P.key) === null || C === void 0 ? void 0 : C.toLowerCase(), v = [(O = P.code) === null || O === void 0 ? void 0 : O.toLowerCase(), _].filter(Boolean);\n if (_ !== \"\") {\n _ && (S ? i.add(_) : i.delete(_));\n for (const j of v)\n b.add(j), A(j, S);\n k(S, P, [...i, ...v]), x(S, _), _ === \"meta\" && !S && (f.forEach((j) => {\n i.delete(j), A(j, !1);\n }), f.clear());\n }\n }\n re(t, \"keydown\", (P) => (N(P, !0), s(P)), { passive: o }), re(t, \"keyup\", (P) => (N(P, !1), s(P)), { passive: o }), re(\"blur\", $, { passive: o }), re(\"focus\", $, { passive: o });\n const D = new Proxy(c, { get(P, S, C) {\n if (typeof S != \"string\") return Reflect.get(P, S, C);\n if (S = S.toLowerCase(), S in r && (S = r[S]), !(S in c)) if (/[+_-]/.test(S)) {\n const _ = S.split(/[+_-]/g).map((v) => v.trim());\n c[S] = W(() => _.map((v) => q(D[v])).every(Boolean));\n } else c[S] = We(!1);\n const O = Reflect.get(P, S, C);\n return e ? q(O) : O;\n } });\n return D;\n}\nfunction Re() {\n return typeof crypto < \"u\" && crypto.randomUUID ? crypto.randomUUID() : `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n}\nfunction ve(n) {\n const e = {\n type: n.type,\n clientId: n.clientId,\n timestamp: n.timestamp.toISOString()\n };\n return n.operation && (e.operation = {\n ...n.operation,\n timestamp: n.operation.timestamp.toISOString()\n }), n.operations && (e.operations = n.operations.map((t) => ({\n ...t,\n timestamp: t.timestamp.toISOString()\n }))), e;\n}\nfunction $t(n) {\n const e = {\n type: n.type,\n clientId: n.clientId,\n timestamp: new Date(n.timestamp)\n };\n return n.operation && (e.operation = {\n ...n.operation,\n timestamp: new Date(n.operation.timestamp)\n }), n.operations && (e.operations = n.operations.map((t) => ({\n ...t,\n timestamp: new Date(t.timestamp)\n }))), e;\n}\nconst pe = /* @__PURE__ */ it(\"hst-operation-log\", () => {\n const n = B({\n maxOperations: 100,\n enableCrossTabSync: !0,\n autoSyncInterval: 3e4,\n enablePersistence: !1,\n persistenceKeyPrefix: \"stonecrop-ops\"\n }), e = B([]), t = B(-1), r = B(Re()), o = B(!1), s = B([]), i = B(null), a = W(() => t.value < 0 ? !1 : e.value[t.value]?.reversible ?? !1), c = W(() => t.value < e.value.length - 1), f = W(() => {\n let u = 0;\n for (let l = t.value; l >= 0 && e.value[l]?.reversible; l--)\n u++;\n return u;\n }), g = W(() => e.value.length - 1 - t.value), b = W(() => ({\n canUndo: a.value,\n canRedo: c.value,\n undoCount: f.value,\n redoCount: g.value,\n currentIndex: t.value\n }));\n function A(u) {\n n.value = { ...n.value, ...u }, n.value.enablePersistence && (y(), m()), n.value.enableCrossTabSync && p();\n }\n function $(u, l = \"user\") {\n const h = {\n ...u,\n id: Re(),\n timestamp: /* @__PURE__ */ new Date(),\n source: l,\n userId: n.value.userId\n };\n if (n.value.operationFilter && !n.value.operationFilter(h))\n return h.id;\n if (o.value)\n return s.value.push(h), h.id;\n if (t.value < e.value.length - 1 && (e.value = e.value.slice(0, t.value + 1)), e.value.push(h), t.value++, n.value.maxOperations && e.value.length > n.value.maxOperations) {\n const I = e.value.length - n.value.maxOperations;\n e.value = e.value.slice(I), t.value -= I;\n }\n return n.value.enableCrossTabSync && R(h), h.id;\n }\n function k() {\n o.value = !0, s.value = [], i.value = Re();\n }\n function x(u) {\n if (!o.value || s.value.length === 0)\n return o.value = !1, s.value = [], i.value = null, null;\n const l = i.value, h = s.value.every((V) => V.reversible), I = {\n id: l,\n type: \"batch\",\n path: \"\",\n // Batch doesn't have a single path\n fieldname: \"\",\n beforeValue: null,\n afterValue: null,\n doctype: s.value[0]?.doctype || \"\",\n timestamp: /* @__PURE__ */ new Date(),\n source: \"user\",\n reversible: h,\n irreversibleReason: h ? void 0 : \"Contains irreversible operations\",\n childOperationIds: s.value.map((V) => V.id),\n metadata: { description: u }\n };\n s.value.forEach((V) => {\n V.parentOperationId = l;\n }), e.value.push(...s.value, I), t.value = e.value.length - 1, n.value.enableCrossTabSync && F(s.value, I);\n const H = l;\n return o.value = !1, s.value = [], i.value = null, H;\n }\n function N() {\n o.value = !1, s.value = [], i.value = null;\n }\n function D(u) {\n if (!a.value) return !1;\n const l = e.value[t.value];\n if (!l.reversible)\n return typeof console < \"u\" && l.irreversibleReason && console.warn(\"Cannot undo irreversible operation:\", l.irreversibleReason), !1;\n try {\n if (l.type === \"batch\" && l.childOperationIds)\n for (let h = l.childOperationIds.length - 1; h >= 0; h--) {\n const I = l.childOperationIds[h], H = e.value.find((V) => V.id === I);\n H && S(H, u);\n }\n else\n S(l, u);\n return t.value--, n.value.enableCrossTabSync && w(l), !0;\n } catch (h) {\n return typeof console < \"u\" && console.error(\"Undo failed:\", h), !1;\n }\n }\n function P(u) {\n if (!c.value) return !1;\n const l = e.value[t.value + 1];\n try {\n if (l.type === \"batch\" && l.childOperationIds)\n for (const h of l.childOperationIds) {\n const I = e.value.find((H) => H.id === h);\n I && C(I, u);\n }\n else\n C(l, u);\n return t.value++, n.value.enableCrossTabSync && T(l), !0;\n } catch (h) {\n return typeof console < \"u\" && console.error(\"Redo failed:\", h), !1;\n }\n }\n function S(u, l) {\n (u.type === \"set\" || u.type === \"delete\") && l && typeof l.set == \"function\" && l.set(u.path, u.beforeValue, \"undo\");\n }\n function C(u, l) {\n (u.type === \"set\" || u.type === \"delete\") && l && typeof l.set == \"function\" && l.set(u.path, u.afterValue, \"redo\");\n }\n function O() {\n const u = e.value.filter((h) => h.reversible).length, l = e.value.map((h) => h.timestamp);\n return {\n operations: [...e.value],\n currentIndex: t.value,\n totalOperations: e.value.length,\n reversibleOperations: u,\n irreversibleOperations: e.value.length - u,\n oldestOperation: l.length > 0 ? new Date(Math.min(...l.map((h) => h.getTime()))) : void 0,\n newestOperation: l.length > 0 ? new Date(Math.max(...l.map((h) => h.getTime()))) : void 0\n };\n }\n function _() {\n e.value = [], t.value = -1;\n }\n function v(u, l) {\n return e.value.filter((h) => h.doctype === u && (l === void 0 || h.recordId === l));\n }\n function j(u, l) {\n const h = e.value.find((I) => I.id === u);\n h && (h.reversible = !1, h.irreversibleReason = l);\n }\n function M(u, l, h, I = \"success\", H) {\n const V = {\n type: \"action\",\n path: h && h.length > 0 ? `${u}.${h[0]}` : u,\n fieldname: \"\",\n beforeValue: null,\n afterValue: null,\n doctype: u,\n recordId: h && h.length > 0 ? h[0] : void 0,\n reversible: !1,\n // Actions are typically not reversible\n actionName: l,\n actionRecordIds: h,\n actionResult: I,\n actionError: H\n };\n return $(V);\n }\n let d = null;\n function p() {\n typeof window > \"u\" || !window.BroadcastChannel || (d = new BroadcastChannel(\"stonecrop-operation-log\"), d.addEventListener(\"message\", (u) => {\n const l = u.data;\n if (!l || typeof l != \"object\") return;\n const h = $t(l);\n h.clientId !== r.value && (h.type === \"operation\" && h.operation ? (e.value.push({ ...h.operation, source: \"sync\" }), t.value = e.value.length - 1) : h.type === \"operation\" && h.operations && (e.value.push(...h.operations.map((I) => ({ ...I, source: \"sync\" }))), t.value = e.value.length - 1));\n }));\n }\n function R(u) {\n if (!d) return;\n const l = {\n type: \"operation\",\n operation: u,\n clientId: r.value,\n timestamp: /* @__PURE__ */ new Date()\n };\n d.postMessage(ve(l));\n }\n function F(u, l) {\n if (!d) return;\n const h = {\n type: \"operation\",\n operations: [...u, l],\n clientId: r.value,\n timestamp: /* @__PURE__ */ new Date()\n };\n d.postMessage(ve(h));\n }\n function w(u) {\n if (!d) return;\n const l = {\n type: \"undo\",\n operation: u,\n clientId: r.value,\n timestamp: /* @__PURE__ */ new Date()\n };\n d.postMessage(ve(l));\n }\n function T(u) {\n if (!d) return;\n const l = {\n type: \"redo\",\n operation: u,\n clientId: r.value,\n timestamp: /* @__PURE__ */ new Date()\n };\n d.postMessage(ve(l));\n }\n const L = Pt(\"stonecrop-ops-operations\", null, {\n serializer: {\n read: (u) => {\n try {\n return JSON.parse(u);\n } catch {\n return null;\n }\n },\n write: (u) => u ? JSON.stringify(u) : \"\"\n }\n });\n function y() {\n if (!(typeof window > \"u\"))\n try {\n const u = L.value;\n u && Array.isArray(u.operations) && (e.value = u.operations.map((l) => ({\n ...l,\n timestamp: new Date(l.timestamp)\n })), t.value = u.currentIndex ?? -1);\n } catch (u) {\n typeof console < \"u\" && console.error(\"Failed to load operations from persistence:\", u);\n }\n }\n function E() {\n if (!(typeof window > \"u\"))\n try {\n L.value = {\n operations: e.value.map((u) => ({\n ...u,\n timestamp: u.timestamp.toISOString()\n })),\n currentIndex: t.value\n };\n } catch (u) {\n typeof console < \"u\" && console.error(\"Failed to save operations to persistence:\", u);\n }\n }\n function m() {\n U(\n [e, t],\n () => {\n n.value.enablePersistence && E();\n },\n { deep: !0 }\n );\n }\n return {\n // State\n operations: e,\n currentIndex: t,\n config: n,\n clientId: r,\n undoRedoState: b,\n // Computed\n canUndo: a,\n canRedo: c,\n undoCount: f,\n redoCount: g,\n // Methods\n configure: A,\n addOperation: $,\n startBatch: k,\n commitBatch: x,\n cancelBatch: N,\n undo: D,\n redo: P,\n clear: _,\n getOperationsFor: v,\n getSnapshot: O,\n markIrreversible: j,\n logAction: M\n };\n});\nclass ue {\n /**\n * The root FieldTriggerEngine instance\n */\n static _root;\n options;\n doctypeActions = /* @__PURE__ */ new Map();\n // doctype -> action/field -> functions\n doctypeTransitions = /* @__PURE__ */ new Map();\n // doctype -> transition -> functions\n fieldRollbackConfig = /* @__PURE__ */ new Map();\n // doctype -> field -> rollback enabled\n globalActions = /* @__PURE__ */ new Map();\n // action name -> function\n globalTransitionActions = /* @__PURE__ */ new Map();\n // transition action name -> function\n /**\n * Creates a new FieldTriggerEngine instance (singleton pattern)\n * @param options - Configuration options for the field trigger engine\n */\n constructor(e = {}) {\n if (ue._root)\n return ue._root;\n ue._root = this, this.options = {\n defaultTimeout: e.defaultTimeout ?? 5e3,\n debug: e.debug ?? !1,\n enableRollback: e.enableRollback ?? !0,\n errorHandler: e.errorHandler\n };\n }\n /**\n * Register a global action function\n * @param name - The name of the action\n * @param fn - The action function\n */\n registerAction(e, t) {\n this.globalActions.set(e, t);\n }\n /**\n * Register a global XState transition action function\n * @param name - The name of the transition action\n * @param fn - The transition action function\n */\n registerTransitionAction(e, t) {\n this.globalTransitionActions.set(e, t);\n }\n /**\n * Configure rollback behavior for a specific field trigger\n * @param doctype - The doctype name\n * @param fieldname - The field name\n * @param enableRollback - Whether to enable rollback\n */\n setFieldRollback(e, t, r) {\n this.fieldRollbackConfig.has(e) || this.fieldRollbackConfig.set(e, /* @__PURE__ */ new Map()), this.fieldRollbackConfig.get(e).set(t, r);\n }\n /**\n * Get rollback configuration for a specific field trigger\n */\n getFieldRollback(e, t) {\n return this.fieldRollbackConfig.get(e)?.get(t);\n }\n /**\n * Register actions from a doctype - both regular actions and field triggers\n * Separates XState transitions (uppercase) from field triggers (lowercase)\n * @param doctype - The doctype name\n * @param actions - The actions to register (supports Immutable Map, Map, or plain object)\n */\n registerDoctypeActions(e, t) {\n if (!t) return;\n const r = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();\n if (typeof t.entrySeq == \"function\")\n t.entrySeq().forEach(([s, i]) => {\n this.categorizeAction(s, i, r, o);\n });\n else if (t instanceof Map)\n for (const [s, i] of t)\n this.categorizeAction(s, i, r, o);\n else t && typeof t == \"object\" && Object.entries(t).forEach(([s, i]) => {\n this.categorizeAction(s, i, r, o);\n });\n this.doctypeActions.set(e, r), this.doctypeTransitions.set(e, o);\n }\n /**\n * Categorize an action as either a field trigger or XState transition\n * Uses uppercase convention: UPPERCASE = transition, lowercase/mixed = field trigger\n */\n categorizeAction(e, t, r, o) {\n this.isTransitionKey(e) ? o.set(e, t) : r.set(e, t);\n }\n /**\n * Determine if a key represents an XState transition\n * Transitions are identified by being all uppercase\n */\n isTransitionKey(e) {\n return /^[A-Z0-9_]+$/.test(e) && e.length > 0;\n }\n /**\n * Execute field triggers for a changed field\n * @param context - The field change context\n * @param options - Execution options (timeout and enableRollback)\n */\n async executeFieldTriggers(e, t = {}) {\n const { doctype: r, fieldname: o } = e, s = this.findFieldTriggers(r, o);\n if (s.length === 0)\n return {\n path: e.path,\n actionResults: [],\n totalExecutionTime: 0,\n allSucceeded: !0,\n stoppedOnError: !1,\n rolledBack: !1\n };\n const i = performance.now(), a = [];\n let c = !1, f = !1, g;\n const b = this.getFieldRollback(r, o), A = t.enableRollback ?? b ?? this.options.enableRollback;\n A && e.store && (g = this.captureSnapshot(e));\n for (const N of s)\n try {\n const D = await this.executeAction(N, e, t.timeout);\n if (a.push(D), !D.success) {\n c = !0;\n break;\n }\n } catch (D) {\n const S = {\n success: !1,\n error: D instanceof Error ? D : new Error(String(D)),\n executionTime: 0,\n action: N\n };\n a.push(S), c = !0;\n break;\n }\n if (A && c && g && e.store)\n try {\n this.restoreSnapshot(e, g), f = !0;\n } catch (N) {\n console.error(\"[FieldTriggers] Rollback failed:\", N);\n }\n const $ = performance.now() - i, k = a.filter((N) => !N.success);\n if (k.length > 0 && this.options.errorHandler)\n for (const N of k)\n try {\n this.options.errorHandler(N.error, e, N.action);\n } catch (D) {\n console.error(\"[FieldTriggers] Error in global error handler:\", D);\n }\n return {\n path: e.path,\n actionResults: a,\n totalExecutionTime: $,\n allSucceeded: a.every((N) => N.success),\n stoppedOnError: c,\n rolledBack: f,\n snapshot: this.options.debug && A ? g : void 0\n // Only include snapshot in debug mode if rollback is enabled\n };\n }\n /**\n * Execute XState transition actions\n * Similar to field triggers but specifically for FSM state transitions\n * @param context - The transition change context\n * @param options - Execution options (timeout)\n */\n async executeTransitionActions(e, t = {}) {\n const { doctype: r, transition: o } = e, s = this.findTransitionActions(r, o);\n if (s.length === 0)\n return [];\n const i = [];\n for (const c of s)\n try {\n const f = await this.executeTransitionAction(c, e, t.timeout);\n if (i.push(f), !f.success)\n break;\n } catch (f) {\n const b = {\n success: !1,\n error: f instanceof Error ? f : new Error(String(f)),\n executionTime: 0,\n action: c,\n transition: o\n };\n i.push(b);\n break;\n }\n const a = i.filter((c) => !c.success);\n if (a.length > 0 && this.options.errorHandler)\n for (const c of a)\n try {\n this.options.errorHandler(c.error, e, c.action);\n } catch (f) {\n console.error(\"[FieldTriggers] Error in global error handler:\", f);\n }\n return i;\n }\n /**\n * Find transition actions for a specific doctype and transition\n */\n findTransitionActions(e, t) {\n const r = this.doctypeTransitions.get(e);\n return r ? r.get(t) || [] : [];\n }\n /**\n * Execute a single transition action by name\n */\n async executeTransitionAction(e, t, r) {\n const o = performance.now(), s = r ?? this.options.defaultTimeout;\n try {\n let i = this.globalTransitionActions.get(e);\n if (!i) {\n const c = this.globalActions.get(e);\n c && (i = c);\n }\n if (!i)\n throw new Error(`Transition action \"${e}\" not found in registry`);\n return await this.executeWithTimeout(i, t, s), {\n success: !0,\n executionTime: performance.now() - o,\n action: e,\n transition: t.transition\n };\n } catch (i) {\n const a = performance.now() - o;\n return {\n success: !1,\n error: i instanceof Error ? i : new Error(String(i)),\n executionTime: a,\n action: e,\n transition: t.transition\n };\n }\n }\n /**\n * Find field triggers for a specific doctype and field\n * Field triggers are identified by keys that look like field paths (contain dots or match field names)\n */\n findFieldTriggers(e, t) {\n const r = this.doctypeActions.get(e);\n if (!r) return [];\n const o = [];\n for (const [s, i] of r)\n this.isFieldTriggerKey(s, t) && o.push(...i);\n return o;\n }\n /**\n * Determine if an action key represents a field trigger\n * Field triggers can be:\n * - Exact field name match: \"emailAddress\"\n * - Wildcard patterns: \"emailAddress.*\", \"*.is_primary\"\n * - Nested field paths: \"address.street\", \"contact.email\"\n */\n isFieldTriggerKey(e, t) {\n return e === t ? !0 : e.includes(\".\") ? this.matchFieldPattern(e, t) : e.includes(\"*\") ? this.matchFieldPattern(e, t) : !1;\n }\n /**\n * Match a field pattern against a field name\n * Supports wildcards (*) for dynamic segments\n */\n matchFieldPattern(e, t) {\n const r = e.split(\".\"), o = t.split(\".\");\n if (r.length !== o.length)\n return !1;\n for (let s = 0; s < r.length; s++) {\n const i = r[s], a = o[s];\n if (i !== \"*\" && i !== a)\n return !1;\n }\n return !0;\n }\n /**\n * Execute a single action by name\n */\n async executeAction(e, t, r) {\n const o = performance.now(), s = r ?? this.options.defaultTimeout;\n try {\n const i = this.globalActions.get(e);\n if (!i)\n throw new Error(`Action \"${e}\" not found in registry`);\n return await this.executeWithTimeout(i, t, s), {\n success: !0,\n executionTime: performance.now() - o,\n action: e\n };\n } catch (i) {\n const a = performance.now() - o;\n return {\n success: !1,\n error: i instanceof Error ? i : new Error(String(i)),\n executionTime: a,\n action: e\n };\n }\n }\n /**\n * Execute a function with timeout\n */\n async executeWithTimeout(e, t, r) {\n return new Promise((o, s) => {\n const i = setTimeout(() => {\n s(new Error(`Action timeout after ${r}ms`));\n }, r);\n Promise.resolve(e(t)).then((a) => {\n clearTimeout(i), o(a);\n }).catch((a) => {\n clearTimeout(i), s(a);\n });\n });\n }\n /**\n * Capture a snapshot of the record state before executing actions\n * This creates a deep copy of the record data for potential rollback\n */\n captureSnapshot(e) {\n if (!(!e.store || !e.doctype || !e.recordId))\n try {\n const t = `${e.doctype}.${e.recordId}`, r = e.store.get(t);\n return !r || typeof r != \"object\" ? void 0 : JSON.parse(JSON.stringify(r));\n } catch (t) {\n this.options.debug && console.warn(\"[FieldTriggers] Failed to capture snapshot:\", t);\n return;\n }\n }\n /**\n * Restore a previously captured snapshot\n * This reverts the record to its state before actions were executed\n */\n restoreSnapshot(e, t) {\n if (!(!e.store || !e.doctype || !e.recordId || !t))\n try {\n const r = `${e.doctype}.${e.recordId}`;\n e.store.set(r, t), this.options.debug && console.log(`[FieldTriggers] Rolled back ${r} to previous state`);\n } catch (r) {\n throw console.error(\"[FieldTriggers] Failed to restore snapshot:\", r), r;\n }\n }\n}\nfunction K(n) {\n return new ue(n);\n}\nfunction xt(n, e) {\n K().registerAction(n, e);\n}\nfunction Mt(n, e) {\n K().registerTransitionAction(n, e);\n}\nfunction Ft(n, e, t) {\n K().setFieldRollback(n, e, t);\n}\nasync function Bt(n, e, t) {\n const r = K(), o = {\n path: t?.path || (t?.recordId ? `${n}.${t.recordId}` : n),\n fieldname: \"\",\n beforeValue: void 0,\n afterValue: void 0,\n operation: \"set\",\n doctype: n,\n recordId: t?.recordId,\n timestamp: /* @__PURE__ */ new Date(),\n transition: e,\n currentState: t?.currentState,\n targetState: t?.targetState,\n fsmContext: t?.fsmContext\n };\n return await r.executeTransitionActions(o);\n}\nfunction jt(n, e) {\n if (n)\n try {\n pe().markIrreversible(n, e);\n } catch {\n }\n}\nfunction Ve() {\n try {\n return pe();\n } catch {\n return null;\n }\n}\nclass ne {\n static instance;\n /**\n * Gets the singleton instance of HST\n * @returns The HST singleton instance\n */\n static getInstance() {\n return ne.instance || (ne.instance = new ne()), ne.instance;\n }\n /**\n * Gets the global registry instance\n * @returns The global registry object or undefined if not found\n */\n getRegistry() {\n if (typeof globalThis < \"u\") {\n const e = globalThis.Registry?._root;\n if (e)\n return e;\n }\n if (typeof window < \"u\") {\n const e = window.Registry?._root;\n if (e)\n return e;\n }\n if (typeof global < \"u\" && global) {\n const e = global.Registry?._root;\n if (e)\n return e;\n }\n }\n /**\n * Helper method to get doctype metadata from the registry\n * @param doctype - The name of the doctype to retrieve metadata for\n * @returns The doctype metadata object or undefined if not found\n */\n getDoctypeMeta(e) {\n const t = this.getRegistry();\n if (t && typeof t == \"object\" && \"registry\" in t)\n return t.registry[e];\n }\n}\nclass Se {\n target;\n parentPath;\n rootNode;\n doctype;\n parentDoctype;\n hst;\n constructor(e, t, r = \"\", o = null, s) {\n return this.target = e, this.parentPath = r, this.rootNode = o || this, this.doctype = t, this.parentDoctype = s, this.hst = ne.getInstance(), new Proxy(this, {\n get(i, a) {\n if (a in i) return i[a];\n const c = String(a);\n return i.getNode(c);\n },\n set(i, a, c) {\n const f = String(a);\n return i.set(f, c), !0;\n }\n });\n }\n get(e) {\n return this.resolveValue(e);\n }\n // Method to get a tree-wrapped node for navigation\n getNode(e) {\n const t = this.resolvePath(e), r = this.resolveValue(e), o = t.split(\".\");\n let s = this.doctype;\n return this.doctype === \"StonecropStore\" && o.length >= 1 && (s = o[0]), typeof r == \"object\" && r !== null && !this.isPrimitive(r) ? new Se(r, s, t, this.rootNode, this.parentDoctype) : new Se(r, s, t, this.rootNode, this.parentDoctype);\n }\n set(e, t, r = \"user\") {\n const o = this.resolvePath(e), s = this.has(e) ? this.get(e) : void 0;\n if (r !== \"undo\" && r !== \"redo\") {\n const i = Ve();\n if (i && typeof i.addOperation == \"function\") {\n const a = o.split(\".\"), c = this.doctype === \"StonecropStore\" && a.length >= 1 ? a[0] : this.doctype, f = a.length >= 2 ? a[1] : void 0, g = a.slice(2).join(\".\") || a[a.length - 1], A = t === void 0 && s !== void 0 ? \"delete\" : \"set\";\n i.addOperation(\n {\n type: A,\n path: o,\n fieldname: g,\n beforeValue: s,\n afterValue: t,\n doctype: c,\n recordId: f,\n reversible: !0\n // Default to reversible, can be changed by field triggers\n },\n r\n );\n }\n }\n this.updateValue(e, t), this.triggerFieldActions(o, s, t);\n }\n has(e) {\n try {\n if (e === \"\")\n return !0;\n const t = this.parsePath(e);\n let r = this.target;\n for (let o = 0; o < t.length; o++) {\n const s = t[o];\n if (r == null)\n return !1;\n if (o === t.length - 1)\n return this.isImmutable(r) ? r.has(s) : this.isPiniaStore(r) && r.$state && s in r.$state || s in r;\n r = this.getProperty(r, s);\n }\n return !1;\n } catch {\n return !1;\n }\n }\n // Tree navigation methods\n getParent() {\n if (!this.parentPath) return null;\n const t = this.parentPath.split(\".\").slice(0, -1).join(\".\");\n return t === \"\" ? this.rootNode : this.rootNode.getNode(t);\n }\n getRoot() {\n return this.rootNode;\n }\n getPath() {\n return this.parentPath;\n }\n getDepth() {\n return this.parentPath ? this.parentPath.split(\".\").length : 0;\n }\n getBreadcrumbs() {\n return this.parentPath ? this.parentPath.split(\".\") : [];\n }\n /**\n * Trigger an XState transition with optional context data\n */\n async triggerTransition(e, t) {\n const r = K(), o = this.parentPath.split(\".\");\n let s = this.doctype, i;\n this.doctype === \"StonecropStore\" && o.length >= 1 && (s = o[0]), o.length >= 2 && (i = o[1]);\n const a = {\n path: this.parentPath,\n fieldname: \"\",\n // No specific field for transitions\n beforeValue: void 0,\n afterValue: void 0,\n operation: \"set\",\n doctype: s,\n recordId: i,\n timestamp: /* @__PURE__ */ new Date(),\n store: this.rootNode || void 0,\n transition: e,\n currentState: t?.currentState,\n targetState: t?.targetState,\n fsmContext: t?.fsmContext\n }, c = Ve();\n return c && typeof c.addOperation == \"function\" && c.addOperation(\n {\n type: \"transition\",\n path: this.parentPath,\n fieldname: e,\n beforeValue: t?.currentState,\n afterValue: t?.targetState,\n doctype: s,\n recordId: i,\n reversible: !1,\n // FSM transitions are generally not reversible\n metadata: {\n transition: e,\n currentState: t?.currentState,\n targetState: t?.targetState,\n fsmContext: t?.fsmContext\n }\n },\n \"user\"\n ), await r.executeTransitionActions(a);\n }\n // Private helper methods\n resolvePath(e) {\n return e === \"\" ? this.parentPath : this.parentPath ? `${this.parentPath}.${e}` : e;\n }\n resolveValue(e) {\n if (e === \"\")\n return this.target;\n const t = this.parsePath(e);\n let r = this.target;\n for (const o of t) {\n if (r == null)\n return;\n r = this.getProperty(r, o);\n }\n return r;\n }\n updateValue(e, t) {\n if (e === \"\")\n throw new Error(\"Cannot set value on empty path\");\n const r = this.parsePath(e), o = r.pop();\n let s = this.target;\n for (const i of r)\n if (s = this.getProperty(s, i), s == null)\n throw new Error(`Cannot set property on null/undefined path: ${e}`);\n this.setProperty(s, o, t);\n }\n getProperty(e, t) {\n return this.isImmutable(e) ? e.get(t) : this.isVueReactive(e) ? e[t] : this.isPiniaStore(e) ? e.$state?.[t] ?? e[t] : e[t];\n }\n setProperty(e, t, r) {\n if (this.isImmutable(e))\n throw new Error(\"Cannot directly mutate immutable objects. Use immutable update methods instead.\");\n if (this.isPiniaStore(e)) {\n e.$patch ? e.$patch({ [t]: r }) : e[t] = r;\n return;\n }\n e[t] = r;\n }\n async triggerFieldActions(e, t, r) {\n try {\n if (!e || typeof e != \"string\")\n return;\n const o = e.split(\".\");\n if (o.length < 3)\n return;\n const s = K(), i = o.slice(2).join(\".\") || o[o.length - 1];\n let a = this.doctype;\n this.doctype === \"StonecropStore\" && o.length >= 1 && (a = o[0]);\n let c;\n o.length >= 2 && (c = o[1]);\n const f = {\n path: e,\n fieldname: i,\n beforeValue: t,\n afterValue: r,\n operation: \"set\",\n doctype: a,\n recordId: c,\n timestamp: /* @__PURE__ */ new Date(),\n store: this.rootNode || void 0\n // Pass the root store for snapshot/rollback capabilities\n };\n await s.executeFieldTriggers(f);\n } catch (o) {\n o instanceof Error && console.warn(\"Field trigger error:\", o.message);\n }\n }\n isVueReactive(e) {\n return e && typeof e == \"object\" && \"__v_isReactive\" in e && e.__v_isReactive === !0;\n }\n isPiniaStore(e) {\n return e && typeof e == \"object\" && (\"$state\" in e || \"$patch\" in e || \"$id\" in e);\n }\n isImmutable(e) {\n if (!e || typeof e != \"object\")\n return !1;\n const t = \"get\" in e && typeof e.get == \"function\", r = \"set\" in e && typeof e.set == \"function\", o = \"has\" in e && typeof e.has == \"function\", s = \"__ownerID\" in e || \"_map\" in e || \"_list\" in e || \"_origin\" in e || \"_capacity\" in e || \"_defaultValues\" in e || \"_tail\" in e || \"_root\" in e || \"size\" in e && t && r;\n let i;\n try {\n const c = e;\n if (\"constructor\" in c && c.constructor && typeof c.constructor == \"object\" && \"name\" in c.constructor) {\n const f = c.constructor.name;\n i = typeof f == \"string\" ? f : void 0;\n }\n } catch {\n i = void 0;\n }\n const a = i && (i.includes(\"Map\") || i.includes(\"List\") || i.includes(\"Set\") || i.includes(\"Stack\") || i.includes(\"Seq\")) && (t || r);\n return !!(t && r && o && s || t && r && a);\n }\n isPrimitive(e) {\n return e == null || typeof e == \"string\" || typeof e == \"number\" || typeof e == \"boolean\" || typeof e == \"function\" || typeof e == \"symbol\" || typeof e == \"bigint\";\n }\n /**\n * Parse a path string into segments, handling both dot notation and array bracket notation\n * @param path - The path string to parse (e.g., \"order.456.line_items[0].product\")\n * @returns Array of path segments (e.g., ['order', '456', 'line_items', '0', 'product'])\n */\n parsePath(e) {\n return e ? e.replace(/\\[(\\d+)\\]/g, \".$1\").split(\".\").filter((r) => r.length > 0) : [];\n }\n}\nfunction Dt(n, e, t) {\n return new Se(n, e, \"\", null, t);\n}\nclass Ke {\n hstStore;\n _operationLogStore;\n _operationLogConfig;\n /** The registry instance containing all doctype definitions */\n registry;\n /**\n * Creates a new Stonecrop instance with HST integration\n * @param registry - The Registry instance containing doctype definitions\n * @param operationLogConfig - Optional configuration for the operation log\n */\n constructor(e, t) {\n this.registry = e, this._operationLogConfig = t, this.initializeHSTStore(), this.setupRegistrySync();\n }\n /**\n * Get the operation log store (lazy initialization)\n * @internal\n */\n getOperationLogStore() {\n return this._operationLogStore || (this._operationLogStore = pe(), this._operationLogConfig && this._operationLogStore.configure(this._operationLogConfig)), this._operationLogStore;\n }\n /**\n * Initialize the HST store structure\n */\n initializeHSTStore() {\n const e = {};\n Object.keys(this.registry.registry).forEach((t) => {\n e[t] = {};\n }), this.hstStore = Dt(ye(e), \"StonecropStore\");\n }\n /**\n * Setup automatic sync with Registry when doctypes are added\n */\n setupRegistrySync() {\n const e = this.registry.addDoctype.bind(this.registry);\n this.registry.addDoctype = (t) => {\n e(t), this.hstStore.has(t.slug) || this.hstStore.set(t.slug, {});\n };\n }\n /**\n * Get records hash for a doctype\n * @param doctype - The doctype to get records for\n * @returns HST node containing records hash\n */\n records(e) {\n const t = typeof e == \"string\" ? e : e.slug;\n return this.ensureDoctypeExists(t), this.hstStore.getNode(t);\n }\n /**\n * Add a record to the store\n * @param doctype - The doctype\n * @param recordId - The record ID\n * @param recordData - The record data\n */\n addRecord(e, t, r) {\n const o = typeof e == \"string\" ? e : e.slug;\n this.ensureDoctypeExists(o), this.hstStore.set(`${o}.${t}`, r);\n }\n /**\n * Get a specific record\n * @param doctype - The doctype\n * @param recordId - The record ID\n * @returns HST node for the record or undefined\n */\n getRecordById(e, t) {\n const r = typeof e == \"string\" ? e : e.slug;\n if (this.ensureDoctypeExists(r), !(!this.hstStore.has(`${r}.${t}`) || this.hstStore.get(`${r}.${t}`) === void 0))\n return this.hstStore.getNode(`${r}.${t}`);\n }\n /**\n * Remove a record from the store\n * @param doctype - The doctype\n * @param recordId - The record ID\n */\n removeRecord(e, t) {\n const r = typeof e == \"string\" ? e : e.slug;\n this.ensureDoctypeExists(r), this.hstStore.has(`${r}.${t}`) && this.hstStore.set(`${r}.${t}`, void 0);\n }\n /**\n * Get all record IDs for a doctype\n * @param doctype - The doctype\n * @returns Array of record IDs\n */\n getRecordIds(e) {\n const t = typeof e == \"string\" ? e : e.slug;\n this.ensureDoctypeExists(t);\n const r = this.hstStore.get(t);\n return !r || typeof r != \"object\" ? [] : Object.keys(r).filter((o) => r[o] !== void 0);\n }\n /**\n * Clear all records for a doctype\n * @param doctype - The doctype\n */\n clearRecords(e) {\n const t = typeof e == \"string\" ? e : e.slug;\n this.ensureDoctypeExists(t), this.getRecordIds(t).forEach((o) => {\n this.hstStore.set(`${t}.${o}`, void 0);\n });\n }\n /**\n * Setup method for doctype initialization\n * @param doctype - The doctype to setup\n */\n setup(e) {\n this.ensureDoctypeExists(e.slug);\n }\n /**\n * Run action on doctype\n * Executes the action and logs it to the operation log for audit tracking\n * @param doctype - The doctype\n * @param action - The action to run\n * @param args - Action arguments (typically record IDs)\n */\n runAction(e, t, r) {\n const s = this.registry.registry[e.slug]?.actions?.get(t), i = Array.isArray(r) ? r.filter((g) => typeof g == \"string\") : void 0, a = this.getOperationLogStore();\n let c = \"success\", f;\n try {\n s && s.length > 0 && s.forEach((g) => {\n try {\n new Function(\"args\", g)(r);\n } catch (b) {\n throw c = \"failure\", f = b instanceof Error ? b.message : \"Unknown error\", b;\n }\n });\n } catch {\n } finally {\n a.logAction(e.doctype, t, i, c, f);\n }\n }\n /**\n * Get records from server (maintains compatibility)\n * @param doctype - The doctype\n */\n async getRecords(e) {\n (await (await fetch(`/${e.slug}`)).json()).forEach((o) => {\n o.id && this.addRecord(e, o.id, o);\n });\n }\n /**\n * Get single record from server (maintains compatibility)\n * @param doctype - The doctype\n * @param recordId - The record ID\n */\n async getRecord(e, t) {\n const o = await (await fetch(`/${e.slug}/${t}`)).json();\n this.addRecord(e, t, o);\n }\n /**\n * Ensure doctype section exists in HST store\n * @param slug - The doctype slug\n */\n ensureDoctypeExists(e) {\n this.hstStore.has(e) || this.hstStore.set(e, {});\n }\n /**\n * Get doctype metadata from the registry\n * @param context - The route context\n * @returns The doctype metadata\n */\n async getMeta(e) {\n if (!this.registry.getMeta)\n throw new Error(\"No getMeta function provided to Registry\");\n return await this.registry.getMeta(e);\n }\n /**\n * Get the root HST store node for advanced usage\n * @returns Root HST node\n */\n getStore() {\n return this.hstStore;\n }\n}\nfunction Wt(n) {\n n || (n = {});\n const e = n.registry || oe(\"$registry\"), t = oe(\"$stonecrop\"), r = B(), o = B(), s = B({}), i = B(), a = B(), c = B([]);\n if (n.doctype && e) {\n const y = n.doctype.schema ? Array.isArray(n.doctype.schema) ? n.doctype.schema : Array.from(n.doctype.schema) : [];\n c.value = e.resolveSchema(y);\n }\n const f = B([]), g = B(-1), b = W(() => r.value?.getOperationLogStore().canUndo ?? !1), A = W(() => r.value?.getOperationLogStore().canRedo ?? !1), $ = W(() => r.value?.getOperationLogStore().undoCount ?? 0), k = W(() => r.value?.getOperationLogStore().redoCount ?? 0), x = W(\n () => r.value?.getOperationLogStore().undoRedoState ?? {\n canUndo: !1,\n canRedo: !1,\n undoCount: 0,\n redoCount: 0,\n currentIndex: -1\n }\n ), N = (y) => r.value?.getOperationLogStore().undo(y) ?? !1, D = (y) => r.value?.getOperationLogStore().redo(y) ?? !1, P = () => {\n r.value?.getOperationLogStore().startBatch();\n }, S = (y) => r.value?.getOperationLogStore().commitBatch(y) ?? null, C = () => {\n r.value?.getOperationLogStore().cancelBatch();\n }, O = () => {\n r.value?.getOperationLogStore().clear();\n }, _ = (y, E) => r.value?.getOperationLogStore().getOperationsFor(y, E) ?? [], v = () => r.value?.getOperationLogStore().getSnapshot() ?? {\n operations: [],\n currentIndex: -1,\n totalOperations: 0,\n reversibleOperations: 0,\n irreversibleOperations: 0\n }, j = (y, E) => {\n r.value?.getOperationLogStore().markIrreversible(y, E);\n }, M = (y, E, m, u = \"success\", l) => r.value?.getOperationLogStore().logAction(y, E, m, u, l) ?? \"\", d = (y) => {\n r.value?.getOperationLogStore().configure(y);\n };\n Be(async () => {\n if (e) {\n r.value = t || new Ke(e);\n try {\n const y = r.value.getOperationLogStore(), E = Ue(y);\n f.value = E.operations.value, g.value = E.currentIndex.value, U(\n () => E.operations.value,\n (m) => {\n f.value = m;\n }\n ), U(\n () => E.currentIndex.value,\n (m) => {\n g.value = m;\n }\n );\n } catch {\n }\n if (!n.doctype && e.router) {\n const y = e.router.currentRoute.value;\n if (!y.path) return;\n const E = y.path.split(\"/\").filter((u) => u.length > 0), m = E[1]?.toLowerCase();\n if (E.length > 0) {\n const u = {\n path: y.path,\n segments: E\n }, l = await e.getMeta?.(u);\n if (l) {\n if (e.addDoctype(l), r.value.setup(l), i.value = l, a.value = m, o.value = r.value.getStore(), e) {\n const h = l.schema ? Array.isArray(l.schema) ? l.schema : Array.from(l.schema) : [];\n c.value = e.resolveSchema(h);\n }\n if (m && m !== \"new\") {\n const h = r.value.getRecordById(l, m);\n if (h)\n s.value = h.get(\"\") || {};\n else\n try {\n await r.value.getRecord(l, m);\n const I = r.value.getRecordById(l, m);\n I && (s.value = I.get(\"\") || {});\n } catch {\n s.value = J(l);\n }\n } else\n s.value = J(l);\n o.value && xe(l, m || \"new\", s, o.value), r.value.runAction(l, \"load\", m ? [m] : void 0);\n }\n }\n }\n if (n.doctype) {\n o.value = r.value.getStore();\n const y = n.doctype, E = n.recordId;\n if (E && E !== \"new\") {\n const m = r.value.getRecordById(y, E);\n if (m)\n s.value = m.get(\"\") || {};\n else\n try {\n await r.value.getRecord(y, E);\n const u = r.value.getRecordById(y, E);\n u && (s.value = u.get(\"\") || {});\n } catch {\n s.value = J(y);\n }\n } else\n s.value = J(y);\n o.value && xe(y, E || \"new\", s, o.value);\n }\n }\n });\n const p = (y, E) => {\n const m = n.doctype || i.value;\n if (!m) return \"\";\n const u = E || n.recordId || a.value || \"new\";\n return `${m.slug}.${u}.${y}`;\n }, R = (y) => {\n const E = n.doctype || i.value;\n if (!(!o.value || !r.value || !E))\n try {\n const m = y.path.split(\".\");\n if (m.length >= 2) {\n const h = m[0], I = m[1];\n if (o.value.has(`${h}.${I}`) || r.value.addRecord(E, I, { ...s.value }), m.length > 3) {\n const H = `${h}.${I}`, V = m.slice(2);\n let Z = H;\n for (let X = 0; X < V.length - 1; X++)\n if (Z += `.${V[X]}`, !o.value.has(Z)) {\n const we = V[X + 1], Qe = !isNaN(Number(we));\n o.value.set(Z, Qe ? [] : {});\n }\n }\n }\n o.value.set(y.path, y.value);\n const u = y.fieldname.split(\".\"), l = { ...s.value };\n u.length === 1 ? l[u[0]] = y.value : Tt(l, u, y.value), s.value = l;\n } catch {\n }\n };\n (n.doctype || e?.router) && (De(\"hstPathProvider\", p), De(\"hstChangeHandler\", R));\n const F = (y, E, m) => {\n if (!r.value)\n return J(E);\n if (m)\n try {\n const u = o.value?.get(y);\n return u && typeof u == \"object\" ? u : J(E);\n } catch {\n return J(E);\n }\n return J(E);\n }, w = async (y, E) => {\n if (!o.value || !r.value)\n throw new Error(\"HST store not initialized\");\n const m = `${y.slug}.${E}`, l = { ...o.value.get(m) || {} }, h = y.schema ? Array.isArray(y.schema) ? y.schema : Array.from(y.schema) : [], H = (e ? e.resolveSchema(h) : h).filter(\n (V) => \"fieldtype\" in V && V.fieldtype === \"Doctype\" && \"schema\" in V && Array.isArray(V.schema)\n );\n for (const V of H) {\n const Z = V, X = `${m}.${Z.fieldname}`, we = Ze(Z.schema, X, o.value);\n l[Z.fieldname] = we;\n }\n return l;\n }, T = (y, E) => ({\n provideHSTPath: (l) => `${y}.${l}`,\n handleHSTChange: (l) => {\n const h = l.path.startsWith(y) ? l.path : `${y}.${l.fieldname}`;\n R({\n ...l,\n path: h\n });\n }\n }), L = {\n operations: f,\n currentIndex: g,\n undoRedoState: x,\n canUndo: b,\n canRedo: A,\n undoCount: $,\n redoCount: k,\n undo: N,\n redo: D,\n startBatch: P,\n commitBatch: S,\n cancelBatch: C,\n clear: O,\n getOperationsFor: _,\n getSnapshot: v,\n markIrreversible: j,\n logAction: M,\n configure: d\n };\n return n.doctype ? {\n stonecrop: r,\n operationLog: L,\n provideHSTPath: p,\n handleHSTChange: R,\n hstStore: o,\n formData: s,\n resolvedSchema: c,\n loadNestedData: F,\n saveRecursive: w,\n createNestedContext: T\n } : !n.doctype && e?.router ? {\n stonecrop: r,\n operationLog: L,\n provideHSTPath: p,\n handleHSTChange: R,\n hstStore: o,\n formData: s,\n resolvedSchema: c,\n loadNestedData: F,\n saveRecursive: w,\n createNestedContext: T\n } : {\n stonecrop: r,\n operationLog: L\n };\n}\nfunction J(n) {\n const e = {};\n return n.schema && n.schema.forEach((t) => {\n switch (\"fieldtype\" in t ? t.fieldtype : \"Data\") {\n case \"Data\":\n case \"Text\":\n e[t.fieldname] = \"\";\n break;\n case \"Check\":\n e[t.fieldname] = !1;\n break;\n case \"Int\":\n case \"Float\":\n e[t.fieldname] = 0;\n break;\n case \"Table\":\n e[t.fieldname] = [];\n break;\n case \"JSON\":\n e[t.fieldname] = {};\n break;\n default:\n e[t.fieldname] = null;\n }\n }), e;\n}\nfunction xe(n, e, t, r) {\n U(\n t,\n (o) => {\n const s = `${n.slug}.${e}`;\n Object.keys(o).forEach((i) => {\n const a = `${s}.${i}`;\n try {\n r.set(a, o[i]);\n } catch {\n }\n });\n },\n { deep: !0 }\n );\n}\nfunction Tt(n, e, t) {\n let r = n;\n for (let s = 0; s < e.length - 1; s++) {\n const i = e[s];\n (!(i in r) || typeof r[i] != \"object\") && (r[i] = isNaN(Number(e[s + 1])) ? {} : []), r = r[i];\n }\n const o = e[e.length - 1];\n r[o] = t;\n}\nfunction Ze(n, e, t) {\n const o = { ...t.get(e) || {} }, s = n.filter(\n (i) => \"fieldtype\" in i && i.fieldtype === \"Doctype\" && \"schema\" in i && Array.isArray(i.schema)\n );\n for (const i of s) {\n const a = i, c = `${e}.${a.fieldname}`, f = Ze(a.schema, c, t);\n o[a.fieldname] = f;\n }\n return o;\n}\nfunction Ge(n) {\n const t = oe(\"$operationLogStore\", void 0) || pe();\n n && t.configure(n);\n const { operations: r, currentIndex: o, undoRedoState: s, canUndo: i, canRedo: a, undoCount: c, redoCount: f } = Ue(t);\n function g(O) {\n return t.undo(O);\n }\n function b(O) {\n return t.redo(O);\n }\n function A() {\n t.startBatch();\n }\n function $(O) {\n return t.commitBatch(O);\n }\n function k() {\n t.cancelBatch();\n }\n function x() {\n t.clear();\n }\n function N(O, _) {\n return t.getOperationsFor(O, _);\n }\n function D() {\n return t.getSnapshot();\n }\n function P(O, _) {\n t.markIrreversible(O, _);\n }\n function S(O, _, v, j = \"success\", M) {\n return t.logAction(O, _, v, j, M);\n }\n function C(O) {\n t.configure(O);\n }\n return {\n // State\n operations: r,\n currentIndex: o,\n undoRedoState: s,\n canUndo: i,\n canRedo: a,\n undoCount: c,\n redoCount: f,\n // Methods\n undo: g,\n redo: b,\n startBatch: A,\n commitBatch: $,\n cancelBatch: k,\n clear: x,\n getOperationsFor: N,\n getSnapshot: D,\n markIrreversible: P,\n logAction: S,\n configure: C\n };\n}\nfunction Ht(n, e = !0) {\n if (!e) return;\n const { undo: t, redo: r, canUndo: o, canRedo: s } = Ge(), i = _t();\n ie(i[\"Ctrl+Z\"], () => {\n o.value && t(n);\n }), ie(i[\"Meta+Z\"], () => {\n o.value && t(n);\n }), ie(i[\"Ctrl+Shift+Z\"], () => {\n s.value && r(n);\n }), ie(i[\"Meta+Shift+Z\"], () => {\n s.value && r(n);\n }), ie(i[\"Ctrl+Y\"], () => {\n s.value && r(n);\n });\n}\nasync function zt(n, e) {\n const { startBatch: t, commitBatch: r, cancelBatch: o } = Ge();\n t();\n try {\n return await n(), r(e);\n } catch (s) {\n throw o(), s;\n }\n}\nclass Ut {\n /**\n * The doctype name\n * @public\n * @readonly\n */\n doctype;\n /**\n * The doctype schema\n * @public\n * @readonly\n */\n schema;\n /**\n * The doctype workflow\n * @public\n * @readonly\n */\n workflow;\n /**\n * The doctype actions and field triggers\n * @public\n * @readonly\n */\n actions;\n /**\n * The doctype component\n * @public\n * @readonly\n */\n component;\n /**\n * Creates a new DoctypeMeta instance\n * @param doctype - The doctype name\n * @param schema - The doctype schema definition\n * @param workflow - The doctype workflow configuration (XState machine)\n * @param actions - The doctype actions and field triggers\n * @param component - Optional Vue component for rendering the doctype\n */\n constructor(e, t, r, o, s) {\n this.doctype = e, this.schema = t, this.workflow = r, this.actions = o, this.component = s;\n }\n /**\n * Converts the registered doctype string to a slug (kebab-case). The following conversions are made:\n * - It replaces camelCase and PascalCase with kebab-case strings\n * - It replaces spaces and underscores with hyphens\n * - It converts the string to lowercase\n *\n * @returns The slugified doctype string\n *\n * @example\n * ```ts\n * const doctype = new DoctypeMeta('TaskItem', schema, workflow, actions\n * console.log(doctype.slug) // 'task-item'\n * ```\n *\n * @public\n */\n get slug() {\n return this.doctype.replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[\\s_]+/g, \"-\").toLowerCase();\n }\n}\nclass fe {\n /**\n * The root Registry instance\n */\n static _root;\n /**\n * The name of the Registry instance\n *\n * @defaultValue 'Registry'\n */\n name;\n /**\n * The registry property contains a collection of doctypes\n * @see {@link DoctypeMeta}\n */\n registry;\n /**\n * The Vue router instance\n * @see {@link https://router.vuejs.org/}\n */\n router;\n /**\n * Creates a new Registry instance (singleton pattern)\n * @param router - Optional Vue router instance for route management\n * @param getMeta - Optional function to fetch doctype metadata from an API\n */\n constructor(e, t) {\n if (fe._root)\n return fe._root;\n fe._root = this, this.name = \"Registry\", this.registry = {}, this.router = e, this.getMeta = t;\n }\n /**\n * The getMeta function fetches doctype metadata from an API based on route context\n * @see {@link DoctypeMeta}\n */\n getMeta;\n /**\n * Get doctype metadata\n * @param doctype - The doctype to fetch metadata for\n * @returns The doctype metadata\n * @see {@link DoctypeMeta}\n */\n addDoctype(e) {\n e.doctype in Object.keys(this.registry) || (this.registry[e.slug] = e);\n const t = K();\n t.registerDoctypeActions(e.doctype, e.actions), e.slug !== e.doctype && t.registerDoctypeActions(e.slug, e.actions), e.component && this.router && !this.router.hasRoute(e.doctype) && this.router.addRoute({\n path: `/${e.slug}`,\n name: e.slug,\n component: e.component\n });\n }\n /**\n * Resolve nested Doctype and Table fields in a schema by embedding child schemas inline.\n *\n * @remarks\n * Walks the schema array and for each field with `fieldtype: 'Doctype'` and a string\n * `options` value, looks up the referenced doctype in the registry and embeds its schema\n * as the field's `schema` property. Recurses for deeply nested doctypes.\n *\n * For fields with `fieldtype: 'Table'`, looks up the referenced child doctype and\n * auto-derives `columns` from its schema fields (unless columns are already provided).\n * Also sets sensible defaults for `component` (`'ATable'`) and `config` (`{ view: 'list' }`).\n * Row data is expected to come from the parent form's data model at `data[fieldname]`.\n *\n * Returns a new array — does not mutate the original schema.\n *\n * @param schema - The schema array to resolve\n * @returns A new schema array with nested Doctype fields resolved\n *\n * @example\n * ```ts\n * registry.addDoctype(addressDoctype)\n * registry.addDoctype(customerDoctype)\n *\n * // Before: customer schema has { fieldname: 'address', fieldtype: 'Doctype', options: 'address' }\n * const resolved = registry.resolveSchema(customerSchema)\n * // After: address field now has schema: [...address fields...]\n * ```\n *\n * @public\n */\n resolveSchema(e, t) {\n const r = t || /* @__PURE__ */ new Set();\n return e.map((o) => {\n if (\"fieldtype\" in o && o.fieldtype === \"Doctype\" && \"options\" in o && typeof o.options == \"string\") {\n const s = o.options;\n if (r.has(s))\n return { ...o };\n const i = this.registry[s];\n if (i && i.schema) {\n const a = Array.isArray(i.schema) ? i.schema : Array.from(i.schema);\n r.add(s);\n const c = this.resolveSchema(a, r);\n return r.delete(s), { ...o, schema: c };\n }\n }\n if (\"fieldtype\" in o && o.fieldtype === \"Table\" && \"options\" in o && typeof o.options == \"string\") {\n const s = o.options;\n if (r.has(s))\n return { ...o };\n const i = this.registry[s];\n if (i && i.schema) {\n const a = Array.isArray(i.schema) ? i.schema : Array.from(i.schema), c = { ...o };\n return (!(\"columns\" in o) || !o.columns) && (c.columns = a.map((f) => ({\n name: f.fieldname,\n fieldname: f.fieldname,\n label: \"label\" in f && f.label || f.fieldname,\n fieldtype: \"fieldtype\" in f ? f.fieldtype : \"Data\",\n align: \"align\" in f && f.align || \"left\",\n edit: \"edit\" in f ? f.edit : !0,\n width: \"width\" in f && f.width || \"20ch\"\n }))), c.component || (c.component = \"ATable\"), (!(\"config\" in o) || !o.config) && (c.config = { view: \"list\" }), (!(\"rows\" in o) || !o.rows) && (c.rows = []), c;\n }\n }\n return { ...o };\n });\n }\n /**\n * Initialize a new record with default values based on a schema.\n *\n * @remarks\n * Creates a plain object with keys from the schema's fieldnames and default values\n * derived from each field's `fieldtype`:\n * - Data, Text → `''`\n * - Check → `false`\n * - Int, Float, Decimal, Currency, Quantity → `0`\n * - Table → `[]`\n * - JSON, Doctype → `{}`\n * - All others → `null`\n *\n * For Doctype fields with a resolved `schema` array, recursively initializes the nested record.\n *\n * @param schema - The schema array to derive defaults from\n * @returns A plain object with default values for each field\n *\n * @example\n * ```ts\n * const defaults = registry.initializeRecord(addressSchema)\n * // { street: '', city: '', state: '', zip_code: '' }\n * ```\n *\n * @public\n */\n initializeRecord(e) {\n const t = {};\n return e.forEach((r) => {\n switch (\"fieldtype\" in r ? r.fieldtype : \"Data\") {\n case \"Data\":\n case \"Text\":\n case \"Code\":\n t[r.fieldname] = \"\";\n break;\n case \"Check\":\n t[r.fieldname] = !1;\n break;\n case \"Int\":\n case \"Float\":\n case \"Decimal\":\n case \"Currency\":\n case \"Quantity\":\n t[r.fieldname] = 0;\n break;\n case \"Table\":\n t[r.fieldname] = [];\n break;\n case \"JSON\":\n t[r.fieldname] = {};\n break;\n case \"Doctype\":\n \"schema\" in r && Array.isArray(r.schema) ? t[r.fieldname] = this.initializeRecord(r.schema) : t[r.fieldname] = {};\n break;\n default:\n t[r.fieldname] = null;\n }\n }), t;\n }\n // TODO: should we allow clearing the registry at all?\n // clear() {\n // \tthis.registry = {}\n // \tif (this.router) {\n // \t\tconst routes = this.router.getRoutes()\n // \t\tfor (const route of routes) {\n // \t\t\tif (route.name) {\n // \t\t\t\tthis.router.removeRoute(route.name)\n // \t\t\t}\n // \t\t}\n // \t}\n // }\n}\nasync function It(n, e, t) {\n await de();\n try {\n await t(n, e);\n } catch {\n }\n}\nconst Jt = {\n install: (n, e) => {\n const t = n.config.globalProperties.$router, r = e?.router, o = t || r;\n !t && r && n.use(r);\n const s = new fe(o, e?.getMeta);\n n.provide(\"$registry\", s), n.config.globalProperties.$registry = s;\n const i = new Ke(s);\n n.provide(\"$stonecrop\", i), n.config.globalProperties.$stonecrop = i;\n try {\n const a = n.config.globalProperties.$pinia;\n if (a) {\n const c = pe(a);\n n.provide(\"$operationLogStore\", c), n.config.globalProperties.$operationLogStore = c;\n }\n } catch (a) {\n console.warn(\"Pinia not available - operation log features will be disabled:\", a);\n }\n if (e?.components)\n for (const [a, c] of Object.entries(e.components))\n n.component(a, c);\n e?.autoInitializeRouter && e.onRouterInitialized && It(s, i, e.onRouterInitialized);\n }\n};\nvar Ct = /* @__PURE__ */ ((n) => (n.ERROR = \"error\", n.WARNING = \"warning\", n.INFO = \"info\", n))(Ct || {});\nclass kt {\n options;\n /**\n * Creates a new SchemaValidator instance\n * @param options - Validator configuration options\n */\n constructor(e = {}) {\n this.options = {\n registry: e.registry || null,\n validateLinkTargets: e.validateLinkTargets ?? !0,\n validateActions: e.validateActions ?? !0,\n validateWorkflows: e.validateWorkflows ?? !0,\n validateRequiredProperties: e.validateRequiredProperties ?? !0\n };\n }\n /**\n * Validates a complete doctype schema\n * @param doctype - Doctype name\n * @param schema - Schema fields (List or Array)\n * @param workflow - Optional workflow configuration\n * @param actions - Optional actions map\n * @returns Validation result\n */\n validate(e, t, r, o) {\n const s = [], i = t ? Array.isArray(t) ? t : t.toArray() : [];\n if (this.options.validateRequiredProperties && s.push(...this.validateRequiredProperties(e, i)), this.options.validateLinkTargets && this.options.registry && s.push(...this.validateLinkFields(e, i, this.options.registry)), this.options.validateWorkflows && r && s.push(...this.validateWorkflow(e, r)), this.options.validateActions && o) {\n const g = o instanceof Map ? o : o.toObject();\n s.push(...this.validateActionRegistration(e, g));\n }\n const a = s.filter(\n (g) => g.severity === \"error\"\n /* ERROR */\n ).length, c = s.filter(\n (g) => g.severity === \"warning\"\n /* WARNING */\n ).length, f = s.filter(\n (g) => g.severity === \"info\"\n /* INFO */\n ).length;\n return {\n valid: a === 0,\n issues: s,\n errorCount: a,\n warningCount: c,\n infoCount: f\n };\n }\n /**\n * Validates that required schema properties are present\n * @internal\n */\n validateRequiredProperties(e, t) {\n const r = [];\n for (const o of t) {\n if (!o.fieldname) {\n r.push({\n severity: \"error\",\n rule: \"required-fieldname\",\n message: \"Field is missing required property: fieldname\",\n doctype: e,\n context: { field: o }\n });\n continue;\n }\n if (!o.component && !(\"fieldtype\" in o) && r.push({\n severity: \"error\",\n rule: \"required-component-or-fieldtype\",\n message: `Field \"${o.fieldname}\" must have either component or fieldtype property`,\n doctype: e,\n fieldname: o.fieldname\n }), \"schema\" in o) {\n const s = o.schema, i = Array.isArray(s) ? s : s.toArray?.() || [];\n r.push(...this.validateRequiredProperties(e, i));\n }\n }\n return r;\n }\n /**\n * Validates Link field targets exist in registry\n * @internal\n */\n validateLinkFields(e, t, r) {\n const o = [];\n for (const s of t) {\n if ((\"fieldtype\" in s ? s.fieldtype : void 0) === \"Link\") {\n const a = \"options\" in s ? s.options : void 0;\n if (!a) {\n o.push({\n severity: \"error\",\n rule: \"link-missing-options\",\n message: `Link field \"${s.fieldname}\" is missing options property (target doctype)`,\n doctype: e,\n fieldname: s.fieldname\n });\n continue;\n }\n const c = typeof a == \"string\" ? a : \"\";\n if (!c) {\n o.push({\n severity: \"error\",\n rule: \"link-invalid-options\",\n message: `Link field \"${s.fieldname}\" has invalid options format (expected string doctype name)`,\n doctype: e,\n fieldname: s.fieldname\n });\n continue;\n }\n r.registry[c] || r.registry[c.toLowerCase()] || o.push({\n severity: \"error\",\n rule: \"link-invalid-target\",\n message: `Link field \"${s.fieldname}\" references non-existent doctype: \"${c}\"`,\n doctype: e,\n fieldname: s.fieldname,\n context: { targetDoctype: c }\n });\n }\n if (\"schema\" in s) {\n const a = s.schema, c = Array.isArray(a) ? a : a.toArray?.() || [];\n o.push(...this.validateLinkFields(e, c, r));\n }\n }\n return o;\n }\n /**\n * Validates workflow state machine configuration\n * @internal\n */\n validateWorkflow(e, t) {\n const r = [];\n if (!t.initial && !t.type && r.push({\n severity: \"warning\",\n rule: \"workflow-missing-initial\",\n message: \"Workflow is missing initial state property\",\n doctype: e\n }), !t.states || Object.keys(t.states).length === 0)\n return r.push({\n severity: \"warning\",\n rule: \"workflow-no-states\",\n message: \"Workflow has no states defined\",\n doctype: e\n }), r;\n t.initial && typeof t.initial == \"string\" && !t.states[t.initial] && r.push({\n severity: \"error\",\n rule: \"workflow-invalid-initial\",\n message: `Workflow initial state \"${t.initial}\" does not exist in states`,\n doctype: e,\n context: { initialState: t.initial }\n });\n const o = Object.keys(t.states), s = /* @__PURE__ */ new Set();\n t.initial && typeof t.initial == \"string\" && s.add(t.initial);\n for (const [i, a] of Object.entries(t.states)) {\n const c = a;\n if (c.on) {\n for (const [f, g] of Object.entries(c.on))\n if (typeof g == \"string\")\n s.add(g);\n else if (g && typeof g == \"object\") {\n const b = \"target\" in g ? g.target : void 0;\n typeof b == \"string\" ? s.add(b) : Array.isArray(b) && b.forEach((A) => {\n typeof A == \"string\" && s.add(A);\n });\n }\n }\n }\n for (const i of o)\n s.has(i) || r.push({\n severity: \"warning\",\n rule: \"workflow-unreachable-state\",\n message: `Workflow state \"${i}\" may not be reachable`,\n doctype: e,\n context: { stateName: i }\n });\n return r;\n }\n /**\n * Validates that actions are registered in the FieldTriggerEngine\n * @internal\n */\n validateActionRegistration(e, t) {\n const r = [], o = K();\n for (const [s, i] of Object.entries(t)) {\n if (!Array.isArray(i)) {\n r.push({\n severity: \"error\",\n rule: \"action-invalid-format\",\n message: `Action configuration for \"${s}\" must be an array`,\n doctype: e,\n context: { triggerName: s, actionNames: i }\n });\n continue;\n }\n for (const a of i) {\n const c = o;\n c.globalActions?.has(a) || c.globalTransitionActions?.has(a) || r.push({\n severity: \"warning\",\n rule: \"action-not-registered\",\n message: `Action \"${a}\" referenced in \"${s}\" is not registered in FieldTriggerEngine`,\n doctype: e,\n context: { triggerName: s, actionName: a }\n });\n }\n }\n return r;\n }\n}\nfunction Lt(n, e) {\n return new kt({\n registry: n,\n ...e\n });\n}\nfunction qt(n, e, t, r, o) {\n return Lt(t).validate(n, e, r, o);\n}\nexport {\n Ut as DoctypeMeta,\n ne as HST,\n fe as Registry,\n kt as SchemaValidator,\n Ke as Stonecrop,\n Ct as ValidationSeverity,\n Dt as createHST,\n Lt as createValidator,\n Jt as default,\n K as getGlobalTriggerEngine,\n jt as markOperationIrreversible,\n xt as registerGlobalAction,\n Mt as registerTransitionAction,\n Ft as setFieldRollback,\n Bt as triggerTransition,\n Ge as useOperationLog,\n pe as useOperationLogStore,\n Wt as useStonecrop,\n Ht as useUndoRedoShortcuts,\n qt as validateSchema,\n zt as withBatch\n};\n//# sourceMappingURL=stonecrop.js.map\n","import { defineComponent as j, useTemplateRef as ne, ref as S, computed as M, createElementBlock as k, openBlock as x, unref as $, normalizeClass as ee, normalizeStyle as ce, createBlock as re, resolveDynamicComponent as Ae, mergeProps as et, toDisplayString as W, createCommentVNode as K, createElementVNode as y, Fragment as te, renderList as ae, withDirectives as U, renderSlot as oe, createTextVNode as Ct, withModifiers as $e, onMounted as ve, watch as Y, onBeforeUnmount as tn, nextTick as tt, useCssVars as xn, onUnmounted as bn, vShow as be, mergeModels as de, useModel as fe, createVNode as Ze, withCtx as It, shallowRef as J, toValue as T, reactive as nn, vModelText as se, vModelCheckbox as on, vModelSelect as In, isRef as kn, toRefs as Cn, customRef as Et, getCurrentScope as nt, onScopeDispose as ot, getCurrentInstance as lt, watchEffect as Ce, toRef as ln, readonly as Dt, resolveComponent as an, withKeys as De } from \"vue\";\nimport { defineStore as En } from \"pinia\";\nimport './assets/index.css';function rn(e, t) {\n return nt() ? (ot(e, t), !0) : !1;\n}\nconst Dn = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst Tn = (e) => e != null, An = Object.prototype.toString, $n = (e) => An.call(e) === \"[object Object]\", Mn = () => {\n};\nfunction Je(e) {\n return Array.isArray(e) ? e : [e];\n}\nfunction Sn(e, t, n) {\n return Y(e, t, {\n ...n,\n immediate: !0\n });\n}\nconst Le = Dn ? window : void 0;\nfunction Me(e) {\n var t;\n const n = T(e);\n return (t = n?.$el) !== null && t !== void 0 ? t : n;\n}\nfunction Oe(...e) {\n const t = (o, a, s, l) => (o.addEventListener(a, s, l), () => o.removeEventListener(a, s, l)), n = M(() => {\n const o = Je(T(e[0])).filter((a) => a != null);\n return o.every((a) => typeof a != \"string\") ? o : void 0;\n });\n return Sn(() => {\n var o, a;\n return [\n (o = (a = n.value) === null || a === void 0 ? void 0 : a.map((s) => Me(s))) !== null && o !== void 0 ? o : [Le].filter((s) => s != null),\n Je(T(n.value ? e[1] : e[0])),\n Je($(n.value ? e[2] : e[1])),\n T(n.value ? e[3] : e[2])\n ];\n }, ([o, a, s, l], r, i) => {\n if (!o?.length || !a?.length || !s?.length) return;\n const u = $n(l) ? { ...l } : l, c = o.flatMap((m) => a.flatMap((g) => s.map((p) => t(m, g, p, u))));\n i(() => {\n c.forEach((m) => m());\n });\n }, { flush: \"post\" });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Ln() {\n const e = J(!1), t = lt();\n return t && ve(() => {\n e.value = !0;\n }, t), e;\n}\n// @__NO_SIDE_EFFECTS__\nfunction Rn(e) {\n const t = /* @__PURE__ */ Ln();\n return M(() => (t.value, !!e()));\n}\nfunction Vn(e, t, n = {}) {\n const { window: o = Le, ...a } = n;\n let s;\n const l = /* @__PURE__ */ Rn(() => o && \"MutationObserver\" in o), r = () => {\n s && (s.disconnect(), s = void 0);\n }, i = Y(M(() => {\n const m = Je(T(e)).map(Me).filter(Tn);\n return new Set(m);\n }), (m) => {\n r(), l.value && m.size && (s = new MutationObserver(t), m.forEach((g) => s.observe(g, a)));\n }, {\n immediate: !0,\n flush: \"post\"\n }), u = () => s?.takeRecords(), c = () => {\n i(), r();\n };\n return rn(c), {\n isSupported: l,\n stop: c,\n takeRecords: u\n };\n}\nfunction Pn(e, t, n = {}) {\n const { window: o = Le, document: a = o?.document, flush: s = \"sync\" } = n;\n if (!o || !a) return Mn;\n let l;\n const r = (c) => {\n l?.(), l = c;\n }, i = Ce(() => {\n const c = Me(e);\n if (c) {\n const { stop: m } = Vn(a, (g) => {\n g.map((p) => [...p.removedNodes]).flat().some((p) => p === c || p.contains(c)) && t(g);\n }, {\n window: o,\n childList: !0,\n subtree: !0\n });\n r(m);\n }\n }, { flush: s }), u = () => {\n i(), r();\n };\n return rn(u), u;\n}\n// @__NO_SIDE_EFFECTS__\nfunction On(e = {}) {\n var t;\n const { window: n = Le, deep: o = !0, triggerOnRemoval: a = !1 } = e, s = (t = e.document) !== null && t !== void 0 ? t : n?.document, l = () => {\n let u = s?.activeElement;\n if (o)\n for (var c; u?.shadowRoot; ) u = u == null || (c = u.shadowRoot) === null || c === void 0 ? void 0 : c.activeElement;\n return u;\n }, r = J(), i = () => {\n r.value = l();\n };\n if (n) {\n const u = {\n capture: !0,\n passive: !0\n };\n Oe(n, \"blur\", (c) => {\n c.relatedTarget === null && i();\n }, u), Oe(n, \"focus\", i, u);\n }\n return a && Pn(r, i, { document: s }), i(), r;\n}\nconst _n = \"focusin\", Hn = \"focusout\", Fn = \":focus-within\";\nfunction Nn(e, t = {}) {\n const { window: n = Le } = t, o = M(() => Me(e)), a = J(!1), s = M(() => a.value);\n if (!n || !(/* @__PURE__ */ On(t)).value) return { focused: s };\n const l = { passive: !0 };\n return Oe(o, _n, () => a.value = !0, l), Oe(o, Hn, () => {\n var r, i, u;\n return a.value = (r = (i = o.value) === null || i === void 0 || (u = i.matches) === null || u === void 0 ? void 0 : u.call(i, Fn)) !== null && r !== void 0 ? r : !1;\n }, l), { focused: s };\n}\nfunction Bn(e, { window: t = Le, scrollTarget: n } = {}) {\n const o = S(!1), a = () => {\n if (!t) return;\n const s = t.document, l = Me(e);\n if (!l)\n o.value = !1;\n else {\n const r = l.getBoundingClientRect();\n o.value = r.top <= (t.innerHeight || s.documentElement.clientHeight) && r.left <= (t.innerWidth || s.documentElement.clientWidth) && r.bottom >= 0 && r.right >= 0;\n }\n };\n return Y(\n () => Me(e),\n () => a(),\n { immediate: !0, flush: \"post\" }\n ), t && Oe(n || t, \"scroll\", a, {\n capture: !1,\n passive: !0\n }), o;\n}\nconst me = (e) => {\n let t = Bn(e).value;\n return t = t && e.offsetHeight > 0, t;\n}, pe = (e) => e.tabIndex >= 0, Ht = (e) => {\n const t = e.target;\n return Tt(t);\n}, Tt = (e) => {\n let t;\n if (e instanceof HTMLTableCellElement) {\n const n = e.parentElement?.previousElementSibling;\n if (n) {\n const o = Array.from(n.children)[e.cellIndex];\n o && (t = o);\n }\n } else if (e instanceof HTMLTableRowElement) {\n const n = e.previousElementSibling;\n n && (t = n);\n }\n return t && (!pe(t) || !me(t)) ? Tt(t) : t;\n}, Gn = (e) => {\n const t = e.target;\n let n;\n if (t instanceof HTMLTableCellElement) {\n const o = t.parentElement?.parentElement;\n if (o) {\n const a = o.firstElementChild?.children[t.cellIndex];\n a && (n = a);\n }\n } else if (t instanceof HTMLTableRowElement) {\n const o = t.parentElement;\n if (o) {\n const a = o.firstElementChild;\n a && (n = a);\n }\n }\n return n && (!pe(n) || !me(n)) ? At(n) : n;\n}, Ft = (e) => {\n const t = e.target;\n return At(t);\n}, At = (e) => {\n let t;\n if (e instanceof HTMLTableCellElement) {\n const n = e.parentElement?.nextElementSibling;\n if (n) {\n const o = Array.from(n.children)[e.cellIndex];\n o && (t = o);\n }\n } else if (e instanceof HTMLTableRowElement) {\n const n = e.nextElementSibling;\n n && (t = n);\n }\n return t && (!pe(t) || !me(t)) ? At(t) : t;\n}, Un = (e) => {\n const t = e.target;\n let n;\n if (t instanceof HTMLTableCellElement) {\n const o = t.parentElement?.parentElement;\n if (o) {\n const a = o.lastElementChild?.children[t.cellIndex];\n a && (n = a);\n }\n } else if (t instanceof HTMLTableRowElement) {\n const o = t.parentElement;\n if (o) {\n const a = o.lastElementChild;\n a && (n = a);\n }\n }\n return n && (!pe(n) || !me(n)) ? Tt(n) : n;\n}, Nt = (e) => {\n const t = e.target;\n return $t(t);\n}, $t = (e) => {\n let t;\n return e.previousElementSibling ? t = e.previousElementSibling : t = e.parentElement?.previousElementSibling?.lastElementChild, t && (!pe(t) || !me(t)) ? $t(t) : t;\n}, Bt = (e) => {\n const t = e.target;\n return Mt(t);\n}, Mt = (e) => {\n let t;\n return e.nextElementSibling ? t = e.nextElementSibling : t = e.parentElement?.nextElementSibling?.firstElementChild, t && (!pe(t) || !me(t)) ? Mt(t) : t;\n}, Gt = (e) => {\n const t = e.target.parentElement?.firstElementChild;\n return t && (!pe(t) || !me(t)) ? Mt(t) : t;\n}, Ut = (e) => {\n const t = e.target.parentElement?.lastElementChild;\n return t && (!pe(t) || !me(t)) ? $t(t) : t;\n}, je = [\"alt\", \"control\", \"shift\", \"meta\"], zn = {\n ArrowUp: \"up\",\n ArrowDown: \"down\",\n ArrowLeft: \"left\",\n ArrowRight: \"right\"\n}, at = {\n \"keydown.up\": (e) => {\n const t = Ht(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.down\": (e) => {\n const t = Ft(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.left\": (e) => {\n const t = Nt(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.right\": (e) => {\n const t = Bt(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.control.up\": (e) => {\n const t = Gn(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.down\": (e) => {\n const t = Un(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.left\": (e) => {\n const t = Gt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.right\": (e) => {\n const t = Ut(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.end\": (e) => {\n const t = Ut(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.enter\": (e) => {\n if (e.target instanceof HTMLTableCellElement) {\n e.preventDefault(), e.stopPropagation();\n const t = Ft(e);\n t && t.focus();\n }\n },\n \"keydown.shift.enter\": (e) => {\n if (e.target instanceof HTMLTableCellElement) {\n e.preventDefault(), e.stopPropagation();\n const t = Ht(e);\n t && t.focus();\n }\n },\n \"keydown.home\": (e) => {\n const t = Gt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.tab\": (e) => {\n const t = Bt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.shift.tab\": (e) => {\n const t = Nt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n }\n};\nfunction St(e) {\n const t = (l) => {\n let r = null;\n return l.parent && (typeof l.parent == \"string\" ? r = document.querySelector(l.parent) : l.parent instanceof HTMLElement ? r = l.parent : r = l.parent.value), r;\n }, n = (l) => {\n const r = t(l);\n let i = [];\n if (typeof l.selectors == \"string\")\n i = Array.from(r ? r.querySelectorAll(l.selectors) : document.querySelectorAll(l.selectors));\n else if (Array.isArray(l.selectors))\n for (const u of l.selectors)\n u instanceof HTMLElement ? i.push(u) : i.push(u.$el);\n else if (l.selectors instanceof HTMLElement)\n i.push(l.selectors);\n else if (l.selectors?.value)\n if (Array.isArray(l.selectors.value))\n for (const u of l.selectors.value)\n u instanceof HTMLElement ? i.push(u) : i.push(u.$el);\n else\n i.push(l.selectors.value);\n return i;\n }, o = (l) => {\n const r = t(l);\n let i = [];\n return l.selectors ? i = n(l) : r && (i = Array.from(r.children).filter((u) => pe(u) && me(u))), i;\n }, a = (l) => (r) => {\n const i = zn[r.key] || r.key.toLowerCase();\n if (je.includes(i)) return;\n const u = l.handlers || at;\n for (const c of Object.keys(u)) {\n const [m, ...g] = c.split(\".\");\n if (m === \"keydown\" && g.includes(i)) {\n const p = u[c], D = g.filter((f) => je.includes(f)), w = je.some((f) => {\n const h = f.charAt(0).toUpperCase() + f.slice(1);\n return r.getModifierState(h);\n });\n if (D.length > 0) {\n if (w) {\n for (const f of je)\n if (g.includes(f)) {\n const h = f.charAt(0).toUpperCase() + f.slice(1);\n r.getModifierState(h) && p(r);\n }\n }\n } else\n w || p(r);\n }\n }\n }, s = [];\n ve(() => {\n for (const l of e) {\n const r = t(l), i = o(l), u = a(l), c = r ? [r] : i;\n for (const m of c) {\n const { focused: g } = Nn(S(m)), p = Y(g, (D) => {\n D ? m.addEventListener(\"keydown\", u) : m.removeEventListener(\"keydown\", u);\n });\n s.push(p);\n }\n }\n }), tn(() => {\n for (const l of s)\n l();\n });\n}\nfunction Lt(e, t) {\n return nt() ? (ot(e, t), !0) : !1;\n}\nconst sn = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst Wn = (e) => e != null, Xn = Object.prototype.toString, jn = (e) => Xn.call(e) === \"[object Object]\", Ee = () => {\n};\nfunction qn(...e) {\n if (e.length !== 1) return ln(...e);\n const t = e[0];\n return typeof t == \"function\" ? Dt(Et(() => ({\n get: t,\n set: Ee\n }))) : S(t);\n}\nfunction Yn(e, t) {\n function n(...o) {\n return new Promise((a, s) => {\n Promise.resolve(e(() => t.apply(this, o), {\n fn: t,\n thisArg: this,\n args: o\n })).then(a).catch(s);\n });\n }\n return n;\n}\nfunction Jn(e, t = {}) {\n let n, o, a = Ee;\n const s = (r) => {\n clearTimeout(r), a(), a = Ee;\n };\n let l;\n return (r) => {\n const i = T(e), u = T(t.maxWait);\n return n && s(n), i <= 0 || u !== void 0 && u <= 0 ? (o && (s(o), o = void 0), Promise.resolve(r())) : new Promise((c, m) => {\n a = t.rejectOnCancel ? m : c, l = r, u && !o && (o = setTimeout(() => {\n n && s(n), o = void 0, c(l());\n }, u)), n = setTimeout(() => {\n o && s(o), o = void 0, c(r());\n }, i);\n });\n };\n}\nfunction Ke(e) {\n return Array.isArray(e) ? e : [e];\n}\nfunction Kn(e) {\n return lt();\n}\n// @__NO_SIDE_EFFECTS__\nfunction Qn(e, t = 200, n = {}) {\n return Yn(Jn(t, n), e);\n}\nfunction Zn(e, t = {}) {\n if (!kn(e)) return Cn(e);\n const n = Array.isArray(e.value) ? Array.from({ length: e.value.length }) : {};\n for (const o in e.value) n[o] = Et(() => ({\n get() {\n return e.value[o];\n },\n set(a) {\n var s;\n if (!((s = T(t.replaceRef)) !== null && s !== void 0) || s) if (Array.isArray(e.value)) {\n const l = [...e.value];\n l[o] = a, e.value = l;\n } else {\n const l = {\n ...e.value,\n [o]: a\n };\n Object.setPrototypeOf(l, Object.getPrototypeOf(e.value)), e.value = l;\n }\n else e.value[o] = a;\n }\n }));\n return n;\n}\nfunction eo(e, t = !0, n) {\n Kn() ? ve(e, n) : t ? e() : tt(e);\n}\nfunction to(e, t, n) {\n return Y(e, t, {\n ...n,\n immediate: !0\n });\n}\nconst He = sn ? window : void 0;\nfunction ue(e) {\n var t;\n const n = T(e);\n return (t = n?.$el) !== null && t !== void 0 ? t : n;\n}\nfunction xe(...e) {\n const t = (o, a, s, l) => (o.addEventListener(a, s, l), () => o.removeEventListener(a, s, l)), n = M(() => {\n const o = Ke(T(e[0])).filter((a) => a != null);\n return o.every((a) => typeof a != \"string\") ? o : void 0;\n });\n return to(() => {\n var o, a;\n return [\n (o = (a = n.value) === null || a === void 0 ? void 0 : a.map((s) => ue(s))) !== null && o !== void 0 ? o : [He].filter((s) => s != null),\n Ke(T(n.value ? e[1] : e[0])),\n Ke($(n.value ? e[2] : e[1])),\n T(n.value ? e[3] : e[2])\n ];\n }, ([o, a, s, l], r, i) => {\n if (!o?.length || !a?.length || !s?.length) return;\n const u = jn(l) ? { ...l } : l, c = o.flatMap((m) => a.flatMap((g) => s.map((p) => t(m, g, p, u))));\n i(() => {\n c.forEach((m) => m());\n });\n }, { flush: \"post\" });\n}\nfunction zt(e, t, n = {}) {\n const { window: o = He, ignore: a = [], capture: s = !0, detectIframe: l = !1, controls: r = !1 } = n;\n if (!o) return r ? {\n stop: Ee,\n cancel: Ee,\n trigger: Ee\n } : Ee;\n let i = !0;\n const u = (f) => T(a).some((h) => {\n if (typeof h == \"string\") return Array.from(o.document.querySelectorAll(h)).some((I) => I === f.target || f.composedPath().includes(I));\n {\n const I = ue(h);\n return I && (f.target === I || f.composedPath().includes(I));\n }\n });\n function c(f) {\n const h = T(f);\n return h && h.$.subTree.shapeFlag === 16;\n }\n function m(f, h) {\n const I = T(f), E = I.$.subTree && I.$.subTree.children;\n return E == null || !Array.isArray(E) ? !1 : E.some((L) => L.el === h.target || h.composedPath().includes(L.el));\n }\n const g = (f) => {\n const h = ue(e);\n if (f.target != null && !(!(h instanceof Element) && c(e) && m(e, f)) && !(!h || h === f.target || f.composedPath().includes(h))) {\n if (\"detail\" in f && f.detail === 0 && (i = !u(f)), !i) {\n i = !0;\n return;\n }\n t(f);\n }\n };\n let p = !1;\n const D = [\n xe(o, \"click\", (f) => {\n p || (p = !0, setTimeout(() => {\n p = !1;\n }, 0), g(f));\n }, {\n passive: !0,\n capture: s\n }),\n xe(o, \"pointerdown\", (f) => {\n const h = ue(e);\n i = !u(f) && !!(h && !f.composedPath().includes(h));\n }, { passive: !0 }),\n l && xe(o, \"blur\", (f) => {\n setTimeout(() => {\n var h;\n const I = ue(e);\n ((h = o.document.activeElement) === null || h === void 0 ? void 0 : h.tagName) === \"IFRAME\" && !I?.contains(o.document.activeElement) && t(f);\n }, 0);\n }, { passive: !0 })\n ].filter(Boolean), w = () => D.forEach((f) => f());\n return r ? {\n stop: w,\n cancel: () => {\n i = !1;\n },\n trigger: (f) => {\n i = !0, g(f), i = !1;\n }\n } : w;\n}\n// @__NO_SIDE_EFFECTS__\nfunction no() {\n const e = J(!1), t = lt();\n return t && ve(() => {\n e.value = !0;\n }, t), e;\n}\n// @__NO_SIDE_EFFECTS__\nfunction un(e) {\n const t = /* @__PURE__ */ no();\n return M(() => (t.value, !!e()));\n}\nfunction cn(e, t, n = {}) {\n const { window: o = He, ...a } = n;\n let s;\n const l = /* @__PURE__ */ un(() => o && \"MutationObserver\" in o), r = () => {\n s && (s.disconnect(), s = void 0);\n }, i = Y(M(() => {\n const m = Ke(T(e)).map(ue).filter(Wn);\n return new Set(m);\n }), (m) => {\n r(), l.value && m.size && (s = new MutationObserver(t), m.forEach((g) => s.observe(g, a)));\n }, {\n immediate: !0,\n flush: \"post\"\n }), u = () => s?.takeRecords(), c = () => {\n i(), r();\n };\n return Lt(c), {\n isSupported: l,\n stop: c,\n takeRecords: u\n };\n}\nfunction vt(e, t = {}) {\n var n;\n const { pointerTypes: o, preventDefault: a, stopPropagation: s, exact: l, onMove: r, onEnd: i, onStart: u, initialValue: c, axis: m = \"both\", draggingElement: g = He, containerElement: p, handle: D = e, buttons: w = [0] } = t, f = S((n = T(c)) !== null && n !== void 0 ? n : {\n x: 0,\n y: 0\n }), h = S(), I = (C) => o ? o.includes(C.pointerType) : !0, E = (C) => {\n T(a) && C.preventDefault(), T(s) && C.stopPropagation();\n }, L = (C) => {\n var O;\n if (!T(w).includes(C.button) || T(t.disabled) || !I(C) || T(l) && C.target !== T(e)) return;\n const q = T(p), G = q == null || (O = q.getBoundingClientRect) === null || O === void 0 ? void 0 : O.call(q), F = T(e).getBoundingClientRect(), le = {\n x: C.clientX - (q ? F.left - G.left + q.scrollLeft : F.left),\n y: C.clientY - (q ? F.top - G.top + q.scrollTop : F.top)\n };\n u?.(le, C) !== !1 && (h.value = le, E(C));\n }, z = (C) => {\n if (T(t.disabled) || !I(C) || !h.value) return;\n const O = T(p), q = T(e).getBoundingClientRect();\n let { x: G, y: F } = f.value;\n (m === \"x\" || m === \"both\") && (G = C.clientX - h.value.x, O && (G = Math.min(Math.max(0, G), O.scrollWidth - q.width))), (m === \"y\" || m === \"both\") && (F = C.clientY - h.value.y, O && (F = Math.min(Math.max(0, F), O.scrollHeight - q.height))), f.value = {\n x: G,\n y: F\n }, r?.(f.value, C), E(C);\n }, R = (C) => {\n T(t.disabled) || !I(C) || h.value && (h.value = void 0, i?.(f.value, C), E(C));\n };\n if (sn) {\n const C = () => {\n var O;\n return {\n capture: (O = t.capture) !== null && O !== void 0 ? O : !0,\n passive: !T(a)\n };\n };\n xe(D, \"pointerdown\", L, C), xe(g, \"pointermove\", z, C), xe(g, \"pointerup\", R, C);\n }\n return {\n ...Zn(f),\n position: f,\n isDragging: M(() => !!h.value),\n style: M(() => `left:${f.value.x}px;top:${f.value.y}px;`)\n };\n}\nfunction kt(e, t, n = {}) {\n const { window: o = He, ...a } = n;\n let s;\n const l = /* @__PURE__ */ un(() => o && \"ResizeObserver\" in o), r = () => {\n s && (s.disconnect(), s = void 0);\n }, i = Y(M(() => {\n const c = T(e);\n return Array.isArray(c) ? c.map((m) => ue(m)) : [ue(c)];\n }), (c) => {\n if (r(), l.value && o) {\n s = new ResizeObserver(t);\n for (const m of c) m && s.observe(m, a);\n }\n }, {\n immediate: !0,\n flush: \"post\"\n }), u = () => {\n r(), i();\n };\n return Lt(u), {\n isSupported: l,\n stop: u\n };\n}\nfunction ke(e, t = {}) {\n const { reset: n = !0, windowResize: o = !0, windowScroll: a = !0, immediate: s = !0, updateTiming: l = \"sync\" } = t, r = J(0), i = J(0), u = J(0), c = J(0), m = J(0), g = J(0), p = J(0), D = J(0);\n function w() {\n const h = ue(e);\n if (!h) {\n n && (r.value = 0, i.value = 0, u.value = 0, c.value = 0, m.value = 0, g.value = 0, p.value = 0, D.value = 0);\n return;\n }\n const I = h.getBoundingClientRect();\n r.value = I.height, i.value = I.bottom, u.value = I.left, c.value = I.right, m.value = I.top, g.value = I.width, p.value = I.x, D.value = I.y;\n }\n function f() {\n l === \"sync\" ? w() : l === \"next-frame\" && requestAnimationFrame(() => w());\n }\n return kt(e, f), Y(() => ue(e), (h) => !h && f()), cn(e, f, { attributeFilter: [\"style\", \"class\"] }), a && xe(\"scroll\", f, {\n capture: !0,\n passive: !0\n }), o && xe(\"resize\", f, { passive: !0 }), eo(() => {\n s && f();\n }), {\n height: r,\n bottom: i,\n left: u,\n right: c,\n top: m,\n width: g,\n x: p,\n y: D,\n update: f\n };\n}\nfunction mt(e) {\n return typeof Window < \"u\" && e instanceof Window ? e.document.documentElement : typeof Document < \"u\" && e instanceof Document ? e.documentElement : e;\n}\nconst pt = /* @__PURE__ */ new WeakMap();\nfunction oo(e, t = !1) {\n const n = J(t);\n let o = \"\";\n Y(qn(e), (l) => {\n const r = mt(T(l));\n if (r) {\n const i = r;\n if (pt.get(i) || pt.set(i, i.style.overflow), i.style.overflow !== \"hidden\" && (o = i.style.overflow), i.style.overflow === \"hidden\") return n.value = !0;\n if (n.value) return i.style.overflow = \"hidden\";\n }\n }, { immediate: !0 });\n const a = () => {\n const l = mt(T(e));\n !l || n.value || (l.style.overflow = \"hidden\", n.value = !0);\n }, s = () => {\n const l = mt(T(e));\n !l || !n.value || (l.style.overflow = o, pt.delete(l), n.value = !1);\n };\n return Lt(s), M({\n get() {\n return n.value;\n },\n set(l) {\n l ? a() : s();\n }\n });\n}\nconst lo = (e) => {\n const t = new DOMParser().parseFromString(e, \"text/html\");\n return Array.from(t.body.childNodes).some((n) => n.nodeType === 1);\n}, ao = (e = 8) => Array.from({ length: e }, () => Math.floor(Math.random() * 16).toString(16)).join(\"\"), ro = [\"data-colindex\", \"data-rowindex\", \"data-editable\", \"contenteditable\", \"tabindex\"], so = [\"innerHTML\"], io = { key: 2 }, uo = /* @__PURE__ */ j({\n __name: \"ACell\",\n props: {\n colIndex: {},\n rowIndex: {},\n store: {},\n addNavigation: { type: [Boolean, Object], default: !0 },\n tabIndex: { default: 0 },\n pinned: { type: Boolean, default: !1 },\n debounce: { default: 300 }\n },\n setup(e, { expose: t }) {\n const n = ne(\"cell\"), o = e.store.getCellData(e.colIndex, e.rowIndex), a = S(\"\"), s = S(!1), l = e.store.columns[e.colIndex], r = e.store.rows[e.rowIndex], i = l.align || \"center\", u = l.width || \"40ch\", c = M(() => e.store.getCellDisplayValue(e.colIndex, e.rowIndex)), m = M(() => typeof c.value == \"string\" ? lo(c.value) : !1), g = M(() => ({\n textAlign: i,\n width: u,\n fontWeight: s.value ? \"bold\" : \"inherit\",\n paddingLeft: e.store.getIndent(e.colIndex, e.store.display[e.rowIndex]?.indent)\n })), p = M(() => ({\n \"sticky-column\": e.pinned,\n \"cell-modified\": s.value\n })), D = () => {\n f(), w();\n }, w = () => {\n const { left: R, bottom: C, width: O, height: q } = ke(n);\n l.mask, l.modalComponent && e.store.$patch((G) => {\n G.modal.visible = !0, G.modal.colIndex = e.colIndex, G.modal.rowIndex = e.rowIndex, G.modal.left = R, G.modal.bottom = C, G.modal.width = O, G.modal.height = q, G.modal.cell = n.value, typeof l.modalComponent == \"function\" ? G.modal.component = l.modalComponent({ table: G.table, row: r, column: l }) : G.modal.component = l.modalComponent, G.modal.componentProps = l.modalComponentExtraProps;\n });\n };\n if (e.addNavigation) {\n let R = {\n ...at,\n \"keydown.f2\": w,\n \"keydown.alt.up\": w,\n \"keydown.alt.down\": w,\n \"keydown.alt.left\": w,\n \"keydown.alt.right\": w\n };\n typeof e.addNavigation == \"object\" && (R = {\n ...R,\n ...e.addNavigation\n }), St([\n {\n selectors: n,\n handlers: R\n }\n ]);\n }\n const f = () => {\n if (n.value && l.edit) {\n const R = window.getSelection();\n if (R)\n try {\n const C = document.createRange();\n C.selectNodeContents && (C.selectNodeContents(n.value), R.removeAllRanges(), R.addRange(C));\n } catch {\n }\n }\n }, h = () => {\n n.value && (a.value = n.value.textContent, f());\n }, I = () => {\n try {\n const R = window.getSelection();\n if (R && R.rangeCount > 0 && n.value) {\n const C = R.getRangeAt(0), O = C.cloneRange();\n if (O.selectNodeContents && O.setEnd)\n return O.selectNodeContents(n.value), O.setEnd(C.endContainer, C.endOffset), O.toString().length;\n }\n } catch {\n }\n return 0;\n }, E = (R) => {\n if (n.value)\n try {\n const C = window.getSelection();\n if (!C) return;\n let O = 0;\n const q = document.createTreeWalker ? document.createTreeWalker(n.value, NodeFilter.SHOW_TEXT, null) : null;\n if (!q) return;\n let G, F = null;\n for (; G = q.nextNode(); ) {\n const le = G, we = O + le.textContent.length;\n if (R <= we && (F = document.createRange(), F.setStart && F.setEnd)) {\n F.setStart(le, R - O), F.setEnd(le, R - O);\n break;\n }\n O = we;\n }\n F && C.removeAllRanges && C.addRange && (C.removeAllRanges(), C.addRange(F));\n } catch {\n }\n }, L = (R) => {\n if (!l.edit) return;\n const C = R.target;\n if (C.textContent === a.value)\n return;\n const O = I();\n a.value = C.textContent, l.format ? (s.value = C.textContent !== e.store.getFormattedValue(e.colIndex, e.rowIndex, o), e.store.setCellText(e.colIndex, e.rowIndex, C.textContent)) : (s.value = C.textContent !== o, e.store.setCellData(e.colIndex, e.rowIndex, C.textContent)), tt().then(() => {\n E(O);\n });\n }, z = /* @__PURE__ */ Qn(L, e.debounce);\n return t({\n currentData: a\n }), (R, C) => (x(), k(\"td\", {\n ref: \"cell\",\n \"data-colindex\": e.colIndex,\n \"data-rowindex\": e.rowIndex,\n \"data-editable\": $(l).edit,\n contenteditable: $(l).edit,\n tabindex: e.tabIndex,\n spellcheck: !1,\n style: ce(g.value),\n class: ee([\"atable-cell\", p.value]),\n onFocus: h,\n onPaste: L,\n onInput: C[0] || (C[0] = //@ts-ignore\n (...O) => $(z) && $(z)(...O)),\n onClick: D\n }, [\n $(l).cellComponent ? (x(), re(Ae($(l).cellComponent), et({\n key: 0,\n value: c.value\n }, $(l).cellComponentProps), null, 16, [\"value\"])) : m.value ? (x(), k(\"span\", {\n key: 1,\n innerHTML: c.value\n }, null, 8, so)) : (x(), k(\"span\", io, W(c.value), 1))\n ], 46, ro));\n }\n}), co = [\"tabindex\"], fo = [\"tabindex\"], vo = [\"colspan\"], mo = /* @__PURE__ */ j({\n __name: \"AExpansionRow\",\n props: {\n rowIndex: {},\n store: {},\n tabIndex: { default: () => -1 },\n addNavigation: { type: [Boolean, Object], default: () => at }\n },\n setup(e) {\n const t = ne(\"rowEl\"), n = M(() => e.store.display[e.rowIndex].expanded ? \"▼\" : \"►\");\n if (e.addNavigation) {\n const o = {\n \"keydown.control.g\": (a) => {\n a.stopPropagation(), a.preventDefault(), e.store.toggleRowExpand(e.rowIndex);\n }\n };\n typeof e.addNavigation == \"object\" && Object.assign(o, e.addNavigation), St([\n {\n selectors: t,\n handlers: o\n }\n ]);\n }\n return (o, a) => (x(), k(te, null, [\n y(\"tr\", et(o.$attrs, {\n ref: \"rowEl\",\n tabindex: e.tabIndex,\n class: \"expandable-row\"\n }), [\n y(\"td\", {\n tabIndex: -1,\n class: \"row-index\",\n onClick: a[0] || (a[0] = (s) => e.store.toggleRowExpand(e.rowIndex))\n }, W(n.value), 1),\n oe(o.$slots, \"row\", {}, void 0, !0)\n ], 16, co),\n e.store.display[e.rowIndex].expanded ? (x(), k(\"tr\", {\n key: 0,\n ref: \"rowExpanded\",\n tabindex: e.tabIndex,\n class: \"expanded-row\"\n }, [\n y(\"td\", {\n tabIndex: -1,\n colspan: e.store.columns.length + 1,\n class: \"expanded-row-content\"\n }, [\n oe(o.$slots, \"content\", {}, void 0, !0)\n ], 8, vo)\n ], 8, fo)) : K(\"\", !0)\n ], 64));\n }\n}), Ie = (e, t) => {\n const n = e.__vccOpts || e;\n for (const [o, a] of t)\n n[o] = a;\n return n;\n}, po = /* @__PURE__ */ Ie(mo, [[\"__scopeId\", \"data-v-a42297c7\"]]), ho = [\"colspan\"], go = {\n ref: \"container\",\n class: \"gantt-container\"\n}, yo = [\"data-rowindex\", \"data-colindex\"], wo = {\n key: 2,\n class: \"gantt-label\"\n}, xo = [\"x1\", \"y1\", \"x2\", \"y2\"], bo = /* @__PURE__ */ j({\n __name: \"AGanttCell\",\n props: {\n store: {},\n columnsCount: {},\n rowIndex: {},\n colIndex: {},\n start: { default: 0 },\n end: { default: 0 },\n colspan: { default: 1 },\n label: { default: \"\" },\n color: { default: \"#cccccc\" }\n },\n emits: [\"connection:create\"],\n setup(e, { expose: t, emit: n }) {\n xn((V) => ({\n v6d722296: a.value,\n v260b36f8: V.colspan\n }));\n const o = n, a = S(e.color.length >= 6 ? e.color : \"#cccccc\"), s = `gantt-bar-row-${e.rowIndex}-col-${e.colIndex}`, l = ne(\"container\"), r = ne(\"bar\"), i = ne(\"leftResizeHandle\"), u = ne(\"rightResizeHandle\"), c = ne(\"leftConnectionHandle\"), m = ne(\"rightConnectionHandle\"), { width: g } = ke(l), { left: p, right: D } = ke(r), w = S(e.start), f = S(e.end || w.value + e.colspan), h = S(!1), I = S(!1), E = S(!1), L = S(!1), z = S(!1), R = S({ startX: 0, startY: 0, endX: 0, endY: 0 }), C = M(() => Fe.value || le.value || we.value), O = M(() => e.colspan > 0 ? g.value / e.colspan : 0), q = M(() => {\n const V = w.value / e.colspan * 100, P = f.value / e.colspan * 100;\n return {\n left: `${V}%`,\n width: `${P - V}%`,\n backgroundColor: a.value\n };\n }), G = M(\n () => ({\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"100vw\",\n height: \"100vh\",\n pointerEvents: \"none\",\n zIndex: 1e3\n })\n ), F = S({ startX: 0, startPos: 0 }), { isDragging: le } = vt(i, {\n axis: \"x\",\n onStart: () => Ve(p.value, w.value),\n onMove: ({ x: V }) => rt(V),\n onEnd: ({ x: V }) => st(V)\n }), { isDragging: we } = vt(u, {\n axis: \"x\",\n onStart: () => Ve(D.value, f.value),\n onMove: ({ x: V }) => Ne(V),\n onEnd: ({ x: V }) => it(V)\n }), { isDragging: Fe } = vt(r, {\n exact: !0,\n axis: \"x\",\n onStart: () => Ve(p.value, w.value),\n onMove: ({ x: V }) => Be(V),\n onEnd: ({ x: V }) => ut(V)\n });\n ve(() => {\n ct();\n }), bn(() => {\n dt();\n });\n function Ve(V, P) {\n r.value && (r.value.style.transition = \"none\"), F.value = { startX: V, startPos: P };\n }\n function rt(V) {\n if (!le.value || !r.value) return;\n const P = (V - F.value.startX) / O.value, N = Math.max(0, Math.min(f.value - 1, F.value.startPos + P));\n r.value.style.left = `${N / e.colspan * 100}%`, r.value.style.width = `${(f.value - N) / e.colspan * 100}%`;\n }\n function st(V) {\n if (!r.value) return;\n const P = V - F.value.startX, N = Math.round(P / O.value), X = w.value, Q = Math.max(0, Math.min(f.value - 1, F.value.startPos + N));\n w.value = Q, e.store.updateGanttBar({\n rowIndex: e.rowIndex,\n colIndex: e.colIndex,\n type: \"resize\",\n edge: \"start\",\n oldStart: X,\n newStart: Q,\n end: f.value,\n delta: N,\n oldColspan: f.value - X,\n newColspan: f.value - Q\n });\n }\n function Ne(V) {\n if (!we.value || !r.value) return;\n const P = (V - F.value.startX) / O.value, N = Math.max(w.value + 1, Math.min(e.columnsCount, F.value.startPos + P));\n r.value.style.width = `${(N - w.value) / e.colspan * 100}%`;\n }\n function it(V) {\n if (!r.value) return;\n const P = V - F.value.startX, N = Math.round(P / O.value), X = f.value, Q = Math.max(w.value + 1, Math.min(e.columnsCount, F.value.startPos + N));\n f.value = Q, e.store.updateGanttBar({\n rowIndex: e.rowIndex,\n colIndex: e.colIndex,\n type: \"resize\",\n edge: \"end\",\n oldEnd: X,\n newEnd: Q,\n start: w.value,\n delta: N,\n oldColspan: X - w.value,\n newColspan: Q - w.value\n });\n }\n function Be(V) {\n if (!Fe.value || !r.value) return;\n const P = (V - F.value.startX) / O.value, N = f.value - w.value, X = Math.max(0, Math.min(F.value.startPos + P, e.columnsCount - N));\n r.value.style.left = `${X / e.colspan * 100}%`;\n }\n function ut(V) {\n if (!r.value) return;\n const P = V - F.value.startX, N = Math.round(P / O.value), X = f.value - w.value, Q = w.value, d = f.value;\n let v = F.value.startPos + N, b = v + X;\n v < 0 ? (v = 0, b = X) : b > e.columnsCount && (b = e.columnsCount, v = b - X), w.value = v, f.value = b, e.store.updateGanttBar({\n rowIndex: e.rowIndex,\n colIndex: e.colIndex,\n type: \"bar\",\n oldStart: Q,\n oldEnd: d,\n newStart: v,\n newEnd: b,\n delta: N,\n colspan: b - v\n });\n }\n function ct() {\n const { x: V, y: P } = ke(r), { x: N, y: X } = ke(c), { x: Q, y: d } = ke(m);\n e.store.registerGanttBar({\n id: s,\n rowIndex: e.rowIndex,\n colIndex: e.colIndex,\n startIndex: w,\n endIndex: f,\n color: a,\n label: e.label,\n position: { x: V, y: P }\n }), e.store.isDependencyGraphEnabled && (e.store.registerConnectionHandle({\n id: `${s}-connection-left`,\n rowIndex: e.rowIndex,\n colIndex: e.colIndex,\n side: \"left\",\n position: { x: N, y: X },\n visible: h,\n barId: s\n }), e.store.registerConnectionHandle({\n id: `${s}-connection-right`,\n rowIndex: e.rowIndex,\n colIndex: e.colIndex,\n side: \"right\",\n position: { x: Q, y: d },\n visible: I,\n barId: s\n }));\n }\n function dt() {\n e.store.unregisterGanttBar(s), e.store.isDependencyGraphEnabled && (e.store.unregisterConnectionHandle(`${s}-connection-left`), e.store.unregisterConnectionHandle(`${s}-connection-right`));\n }\n function ft() {\n e.store.isDependencyGraphEnabled && (h.value = !0, I.value = !0);\n }\n function Ge() {\n !E.value && !L.value && (h.value = !1, I.value = !1);\n }\n function Ue(V, P) {\n P.preventDefault(), P.stopPropagation(), z.value = !0, V === \"left\" ? E.value = !0 : L.value = !0;\n const N = V === \"left\" ? c.value : m.value;\n if (N) {\n const d = N.getBoundingClientRect(), v = d.left + d.width / 2, b = d.top + d.height / 2;\n R.value = { startX: v, startY: b, endX: v, endY: b };\n }\n const X = (d) => {\n R.value.endX = d.clientX, R.value.endY = d.clientY;\n }, Q = (d) => {\n ze(d, V), We(X, Q);\n };\n document.addEventListener(\"mousemove\", X), document.addEventListener(\"mouseup\", Q);\n }\n function ze(V, P) {\n const N = document.elementFromPoint(V.clientX, V.clientY)?.closest(\".connection-handle\");\n if (N && N !== (P === \"left\" ? c.value : m.value)) {\n const X = N.closest(\".gantt-bar\");\n if (X) {\n const Q = parseInt(X.getAttribute(\"data-rowindex\") || \"0\"), d = parseInt(X.getAttribute(\"data-colindex\") || \"0\"), v = N.classList.contains(\"left-connection-handle\") ? \"left\" : \"right\", b = `gantt-bar-row-${Q}-col-${d}`, H = e.store.createConnection(\n `${s}-connection-${P}`,\n `${b}-connection-${v}`\n );\n H && o(\"connection:create\", H);\n }\n }\n }\n function We(V, P) {\n z.value = !1, E.value = !1, L.value = !1, document.removeEventListener(\"mousemove\", V), document.removeEventListener(\"mouseup\", P), r.value?.matches(\":hover\") || Ge();\n }\n return t({\n barStyle: q,\n cleanupConnectionDrag: We,\n currentEnd: f,\n handleConnectionDrop: ze,\n isLeftConnectionDragging: E,\n isLeftConnectionVisible: h,\n isRightConnectionDragging: L,\n isRightConnectionVisible: I,\n showDragPreview: z\n }), (V, P) => (x(), k(\"td\", {\n class: \"aganttcell\",\n colspan: e.colspan\n }, [\n y(\"div\", go, [\n y(\"div\", {\n ref: \"bar\",\n \"data-rowindex\": e.rowIndex,\n \"data-colindex\": e.colIndex,\n class: ee([\"gantt-bar\", { \"is-dragging\": C.value }]),\n style: ce(q.value),\n onMouseenter: ft,\n onMouseleave: Ge\n }, [\n e.store.isDependencyGraphEnabled ? (x(), k(\"div\", {\n key: 0,\n ref: \"leftConnectionHandle\",\n class: ee([\"connection-handle left-connection-handle\", { visible: h.value, \"is-dragging\": E.value }]),\n onMousedown: P[0] || (P[0] = $e((N) => Ue(\"left\", N), [\"stop\"]))\n }, [...P[2] || (P[2] = [\n y(\"div\", { class: \"connection-dot\" }, null, -1)\n ])], 34)) : K(\"\", !0),\n e.store.isDependencyGraphEnabled ? (x(), k(\"div\", {\n key: 1,\n ref: \"rightConnectionHandle\",\n class: ee([\"connection-handle right-connection-handle\", { visible: I.value, \"is-dragging\": L.value }]),\n onMousedown: P[1] || (P[1] = $e((N) => Ue(\"right\", N), [\"stop\"]))\n }, [...P[3] || (P[3] = [\n y(\"div\", { class: \"connection-dot\" }, null, -1)\n ])], 34)) : K(\"\", !0),\n y(\"div\", {\n ref: \"leftResizeHandle\",\n class: ee([\"resize-handle left-resize-handle\", { \"is-dragging\": $(le) }])\n }, [...P[4] || (P[4] = [\n y(\"div\", { class: \"handle-grip\" }, null, -1),\n y(\"div\", { class: \"vertical-indicator left-indicator\" }, null, -1)\n ])], 2),\n e.label ? (x(), k(\"label\", wo, W(e.label), 1)) : K(\"\", !0),\n y(\"div\", {\n ref: \"rightResizeHandle\",\n class: ee([\"resize-handle right-resize-handle\", { \"is-dragging\": $(we) }])\n }, [...P[5] || (P[5] = [\n y(\"div\", { class: \"handle-grip\" }, null, -1),\n y(\"div\", { class: \"vertical-indicator right-indicator\" }, null, -1)\n ])], 2)\n ], 46, yo)\n ], 512),\n e.store.isDependencyGraphEnabled && z.value ? (x(), k(\"svg\", {\n key: 0,\n style: ce(G.value)\n }, [\n y(\"line\", {\n x1: R.value.startX,\n y1: R.value.startY,\n x2: R.value.endX,\n y2: R.value.endY,\n stroke: \"#2196f3\",\n \"stroke-width\": \"2\",\n \"stroke-dasharray\": \"5,5\"\n }, null, 8, xo)\n ], 4)) : K(\"\", !0)\n ], 8, ho));\n }\n}), Io = /* @__PURE__ */ Ie(bo, [[\"__scopeId\", \"data-v-8917a8a3\"]]), ko = [\"tabindex\"], Co = /* @__PURE__ */ j({\n __name: \"ARow\",\n props: {\n rowIndex: {},\n store: {},\n tabIndex: { default: () => -1 },\n addNavigation: { type: [Boolean, Object], default: !1 }\n },\n setup(e) {\n const t = ne(\"rowEl\"), n = M(() => e.store.isRowVisible(e.rowIndex)), o = M(() => e.store.getRowExpandSymbol(e.rowIndex));\n if (e.addNavigation) {\n let a = at;\n typeof e.addNavigation == \"object\" && (a = {\n ...a,\n ...e.addNavigation\n }), St([\n {\n selectors: t,\n handlers: a\n }\n ]);\n }\n return (a, s) => U((x(), k(\"tr\", {\n ref: \"rowEl\",\n tabindex: e.tabIndex,\n class: \"atable-row\"\n }, [\n e.store.config.view !== \"uncounted\" ? oe(a.$slots, \"index\", { key: 0 }, () => [\n e.store.config.view === \"list\" ? (x(), k(\"td\", {\n key: 0,\n tabIndex: -1,\n class: ee([\"list-index\", e.store.hasPinnedColumns ? \"sticky-index\" : \"\"])\n }, W(e.rowIndex + 1), 3)) : e.store.isTreeView ? (x(), k(\"td\", {\n key: 1,\n tabIndex: -1,\n class: ee([\"tree-index\", e.store.hasPinnedColumns ? \"sticky-index\" : \"\"]),\n onClick: s[0] || (s[0] = (l) => e.store.toggleRowExpand(e.rowIndex))\n }, W(o.value), 3)) : K(\"\", !0)\n ], !0) : K(\"\", !0),\n oe(a.$slots, \"default\", {}, void 0, !0)\n ], 8, ko)), [\n [be, n.value]\n ]);\n }\n}), dn = /* @__PURE__ */ Ie(Co, [[\"__scopeId\", \"data-v-0fa91f83\"]]), ht = /* @__PURE__ */ new WeakMap(), Eo = {\n mounted(e, t) {\n const n = !t.modifiers.bubble;\n let o;\n if (typeof t.value == \"function\") o = zt(e, t.value, { capture: n });\n else {\n const [a, s] = t.value;\n o = zt(e, a, Object.assign({ capture: n }, s));\n }\n ht.set(e, o);\n },\n unmounted(e) {\n const t = ht.get(e);\n t && typeof t == \"function\" ? t() : t?.stop(), ht.delete(e);\n }\n}, Do = { mounted(e, t) {\n typeof t.value == \"function\" ? kt(e, t.value) : kt(e, ...t.value);\n} };\nfunction To() {\n let e = !1;\n const t = J(!1);\n return (n, o) => {\n if (t.value = o.value, e) return;\n e = !0;\n const a = oo(n, o.value);\n Y(t, (s) => a.value = s);\n };\n}\nTo();\nconst Ao = { class: \"gantt-connection-overlay\" }, $o = {\n class: \"connection-svg\",\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n pointerEvents: \"none\",\n zIndex: 1\n }\n}, Mo = [\"d\", \"stroke-width\", \"onDblclick\"], So = [\"id\", \"d\", \"stroke\", \"stroke-width\", \"onDblclick\"], Lo = 0.25, qe = 16, Ro = /* @__PURE__ */ j({\n __name: \"AGanttConnection\",\n props: {\n store: {}\n },\n emits: [\"connection:delete\"],\n setup(e, { emit: t }) {\n const n = t, o = M(() => e.store.connectionPaths.filter((l) => {\n const r = e.store.ganttBars.find((u) => u.id === l.from.barId), i = e.store.ganttBars.find((u) => u.id === l.to.barId);\n return r && i;\n })), a = (l) => {\n const r = e.store.connectionHandles.find(\n (C) => C.barId === l.from.barId && C.side === l.from.side\n ), i = e.store.connectionHandles.find(\n (C) => C.barId === l.to.barId && C.side === l.to.side\n );\n if (!r || !i) return \"\";\n const u = r.position.x + qe / 2, c = r.position.y + qe / 2, m = i.position.x + qe / 2, g = i.position.y + qe / 2, p = Math.abs(m - u), D = Math.max(p * Lo, 50), w = u + (l.from.side === \"left\" ? -D : D), f = m + (l.to.side === \"left\" ? -D : D), h = { x: 0.5 * u + 0.5 * w, y: 0.5 * c + 0.5 * c }, I = { x: 0.5 * w + 0.5 * f, y: 0.5 * c + 0.5 * g }, E = { x: 0.5 * f + 0.5 * m, y: 0.5 * g + 0.5 * g }, L = { x: 0.5 * h.x + 0.5 * I.x, y: 0.5 * h.y + 0.5 * I.y }, z = { x: 0.5 * I.x + 0.5 * E.x, y: 0.5 * I.y + 0.5 * E.y }, R = { x: 0.5 * L.x + 0.5 * z.x, y: 0.5 * L.y + 0.5 * z.y };\n return `M ${u} ${c} Q ${w} ${c}, ${R.x} ${R.y} Q ${f} ${g}, ${m} ${g}`;\n }, s = (l) => {\n e.store.deleteConnection(l.id) && n(\"connection:delete\", l);\n };\n return (l, r) => (x(), k(\"div\", Ao, [\n (x(), k(\"svg\", $o, [\n r[0] || (r[0] = y(\"defs\", null, [\n y(\"path\", {\n id: \"arrowhead\",\n d: \"M 0 -7 L 20 0 L 0 7Z\",\n stroke: \"black\",\n \"stroke-width\": \"1\",\n fill: \"currentColor\"\n }),\n y(\"marker\", {\n id: \"arrowhead-marker\",\n markerWidth: \"10\",\n markerHeight: \"7\",\n refX: \"5\",\n refY: \"3.5\",\n orient: \"auto\",\n markerUnits: \"strokeWidth\"\n }, [\n y(\"polygon\", {\n points: \"0 0, 10 3.5, 0 7\",\n fill: \"currentColor\"\n })\n ])\n ], -1)),\n (x(!0), k(te, null, ae(o.value, (i) => (x(), k(\"path\", {\n key: `${i.id}-hitbox`,\n d: a(i),\n stroke: \"transparent\",\n \"stroke-width\": (i.style?.width || 2) + 10,\n fill: \"none\",\n class: \"connection-hitbox\",\n onDblclick: (u) => s(i)\n }, null, 40, Mo))), 128)),\n (x(!0), k(te, null, ae(o.value, (i) => (x(), k(\"path\", {\n id: i.id,\n key: i.id,\n d: a(i),\n stroke: i.style?.color || \"#666\",\n \"stroke-width\": i.style?.width || 2,\n fill: \"none\",\n \"marker-mid\": \"url(#arrowhead-marker)\",\n class: \"connection-path animated-path\",\n onDblclick: (u) => s(i)\n }, null, 40, So))), 128))\n ]))\n ]));\n }\n}), Vo = /* @__PURE__ */ Ie(Ro, [[\"__scopeId\", \"data-v-71911260\"]]), Po = { class: \"column-filter\" }, Oo = {\n key: 2,\n class: \"checkbox-filter\"\n}, _o = [\"value\"], Ho = {\n key: 5,\n class: \"date-range-filter\"\n}, Fo = /* @__PURE__ */ j({\n __name: \"ATableColumnFilter\",\n props: {\n column: {},\n colIndex: {},\n store: {}\n },\n setup(e) {\n const t = S(\"\"), n = nn({\n startValue: \"\",\n endValue: \"\"\n }), o = (i) => {\n if (i.filterOptions) return i.filterOptions;\n const u = /* @__PURE__ */ new Set();\n return e.store.rows.forEach((c) => {\n const m = c[i.name];\n m != null && m !== \"\" && u.add(m);\n }), Array.from(u).map((c) => ({\n value: c,\n label: String(c)\n }));\n }, a = M(() => !!(t.value || n.startValue || n.endValue)), s = (i) => {\n !i && e.column.filterType !== \"checkbox\" ? (e.store.clearFilter(e.colIndex), t.value = \"\") : (t.value = i, e.store.setFilter(e.colIndex, { value: i }));\n }, l = (i, u) => {\n i === \"start\" ? n.startValue = u : n.endValue = u, !n.startValue && !n.endValue ? e.store.clearFilter(e.colIndex) : e.store.setFilter(e.colIndex, {\n value: null,\n startValue: n.startValue,\n endValue: n.endValue\n });\n }, r = () => {\n t.value = \"\", n.startValue = \"\", n.endValue = \"\", e.store.clearFilter(e.colIndex);\n };\n return (i, u) => (x(), k(\"div\", Po, [\n (e.column.filterType || \"text\") === \"text\" ? U((x(), k(\"input\", {\n key: 0,\n \"onUpdate:modelValue\": u[0] || (u[0] = (c) => t.value = c),\n type: \"text\",\n class: \"filter-input\",\n onInput: u[1] || (u[1] = (c) => s(t.value))\n }, null, 544)), [\n [se, t.value]\n ]) : e.column.filterType === \"number\" ? U((x(), k(\"input\", {\n key: 1,\n \"onUpdate:modelValue\": u[2] || (u[2] = (c) => t.value = c),\n type: \"number\",\n class: \"filter-input\",\n onInput: u[3] || (u[3] = (c) => s(t.value))\n }, null, 544)), [\n [se, t.value]\n ]) : e.column.filterType === \"checkbox\" ? (x(), k(\"label\", Oo, [\n U(y(\"input\", {\n \"onUpdate:modelValue\": u[4] || (u[4] = (c) => t.value = c),\n type: \"checkbox\",\n class: \"filter-checkbox\",\n onChange: u[5] || (u[5] = (c) => s(t.value))\n }, null, 544), [\n [on, t.value]\n ]),\n y(\"span\", null, W(e.column.label), 1)\n ])) : e.column.filterType === \"select\" ? U((x(), k(\"select\", {\n key: 3,\n \"onUpdate:modelValue\": u[6] || (u[6] = (c) => t.value = c),\n class: \"filter-select\",\n onChange: u[7] || (u[7] = (c) => s(t.value))\n }, [\n u[15] || (u[15] = y(\"option\", { value: \"\" }, \"All\", -1)),\n (x(!0), k(te, null, ae(o(e.column), (c) => (x(), k(\"option\", {\n key: c.value || c,\n value: c.value || c\n }, W(c.label || c), 9, _o))), 128))\n ], 544)), [\n [In, t.value]\n ]) : e.column.filterType === \"date\" ? U((x(), k(\"input\", {\n key: 4,\n \"onUpdate:modelValue\": u[8] || (u[8] = (c) => t.value = c),\n type: \"date\",\n class: \"filter-input\",\n onChange: u[9] || (u[9] = (c) => s(t.value))\n }, null, 544)), [\n [se, t.value]\n ]) : e.column.filterType === \"dateRange\" ? (x(), k(\"div\", Ho, [\n U(y(\"input\", {\n \"onUpdate:modelValue\": u[10] || (u[10] = (c) => n.startValue = c),\n type: \"date\",\n class: \"filter-input\",\n onChange: u[11] || (u[11] = (c) => l(\"start\", n.startValue))\n }, null, 544), [\n [se, n.startValue]\n ]),\n u[16] || (u[16] = y(\"span\", { class: \"date-separator\" }, \"-\", -1)),\n U(y(\"input\", {\n \"onUpdate:modelValue\": u[12] || (u[12] = (c) => n.endValue = c),\n type: \"date\",\n class: \"filter-input\",\n onChange: u[13] || (u[13] = (c) => l(\"end\", n.endValue))\n }, null, 544), [\n [se, n.endValue]\n ])\n ])) : e.column.filterType === \"component\" && e.column.filterComponent ? (x(), re(Ae(e.column.filterComponent), {\n key: 6,\n value: t.value,\n column: e.column,\n colIndex: e.colIndex,\n store: e.store,\n \"onUpdate:value\": u[14] || (u[14] = (c) => s(c))\n }, null, 40, [\"value\", \"column\", \"colIndex\", \"store\"])) : K(\"\", !0),\n a.value ? (x(), k(\"button\", {\n key: 7,\n onClick: r,\n class: \"clear-btn\",\n title: \"Clear\"\n }, \"×\")) : K(\"\", !0)\n ]));\n }\n}), No = /* @__PURE__ */ Ie(Fo, [[\"__scopeId\", \"data-v-8487462d\"]]), Bo = { key: 0 }, Go = {\n class: \"atable-header-row\",\n tabindex: \"-1\"\n}, Uo = [\"data-colindex\", \"onClick\"], zo = {\n key: 0,\n class: \"atable-filters-row\"\n}, fn = /* @__PURE__ */ j({\n __name: \"ATableHeader\",\n props: {\n columns: {},\n store: {}\n },\n setup(e) {\n const t = M(() => e.columns.filter((a) => a.filterable)), n = (a) => e.store.sortByColumn(a), o = (a) => {\n for (const s of a) {\n if (s.borderBoxSize.length === 0) continue;\n const l = s.borderBoxSize[0].inlineSize, r = Number(s.target.dataset.colindex), i = e.store.columns[r]?.width;\n typeof i == \"number\" && i !== l && e.store.resizeColumn(r, l);\n }\n };\n return (a, s) => e.columns.length ? (x(), k(\"thead\", Bo, [\n y(\"tr\", Go, [\n e.store.zeroColumn ? (x(), k(\"th\", {\n key: 0,\n id: \"header-index\",\n class: ee([[\n e.store.hasPinnedColumns ? \"sticky-index\" : \"\",\n e.store.isTreeView ? \"tree-index\" : \"\",\n e.store.config.view === \"list-expansion\" ? \"list-expansion-index\" : \"\"\n ], \"list-index\"])\n }, null, 2)) : K(\"\", !0),\n (x(!0), k(te, null, ae(e.columns, (l, r) => U((x(), k(\"th\", {\n key: l.name,\n \"data-colindex\": r,\n tabindex: \"-1\",\n style: ce(e.store.getHeaderCellStyle(l)),\n class: ee(`${l.pinned ? \"sticky-column\" : \"\"} ${l.sortable === !1 ? \"\" : \"cursor-pointer\"}`),\n onClick: (i) => l.sortable !== !1 ? n(r) : void 0\n }, [\n oe(a.$slots, \"default\", {}, () => [\n Ct(W(l.label || String.fromCharCode(r + 97).toUpperCase()), 1)\n ])\n ], 14, Uo)), [\n [$(Do), o]\n ])), 128))\n ]),\n t.value.length > 0 ? (x(), k(\"tr\", zo, [\n e.store.zeroColumn ? (x(), k(\"th\", {\n key: 0,\n class: ee([[\n e.store.hasPinnedColumns ? \"sticky-index\" : \"\",\n e.store.isTreeView ? \"tree-index\" : \"\",\n e.store.config.view === \"list-expansion\" ? \"list-expansion-index\" : \"\"\n ], \"list-index\"])\n }, null, 2)) : K(\"\", !0),\n (x(!0), k(te, null, ae(e.columns, (l, r) => (x(), k(\"th\", {\n key: `filter-${l.name}`,\n class: ee(`${l.pinned ? \"sticky-column\" : \"\"}`),\n style: ce(e.store.getHeaderCellStyle(l))\n }, [\n l.filterable ? (x(), re(No, {\n key: 0,\n column: l,\n \"col-index\": r,\n store: e.store\n }, null, 8, [\"column\", \"col-index\", \"store\"])) : K(\"\", !0)\n ], 6))), 128))\n ])) : K(\"\", !0)\n ])) : K(\"\", !0);\n }\n}), vn = /* @__PURE__ */ j({\n __name: \"ATableModal\",\n props: {\n store: {}\n },\n setup(e) {\n const t = ne(\"amodal\"), { width: n, height: o } = ke(t), a = M(() => {\n if (!(e.store.modal.height && e.store.modal.width && e.store.modal.left && e.store.modal.bottom)) return;\n const s = e.store.modal.cell?.closest(\"table\");\n if (!s) return {};\n const l = s.offsetHeight || 0, r = s.offsetWidth || 0;\n let i = e.store.modal.cell?.offsetTop || 0;\n const u = s.querySelector(\"thead\")?.offsetHeight || 0;\n i += u, i = i + o.value < l ? i : i - (o.value + e.store.modal.height);\n let c = e.store.modal.cell?.offsetLeft || 0;\n return c = c + n.value <= r ? c : c - (n.value - e.store.modal.width), {\n left: `${c}px`,\n top: `${i}px`\n };\n });\n return (s, l) => (x(), k(\"div\", {\n ref: \"amodal\",\n class: \"amodal\",\n tabindex: \"-1\",\n style: ce(a.value),\n onClick: l[0] || (l[0] = $e(() => {\n }, [\"stop\"])),\n onInput: l[1] || (l[1] = $e(() => {\n }, [\"stop\"]))\n }, [\n oe(s.$slots, \"default\")\n ], 36));\n }\n}), Wo = (e) => {\n const t = e.id || ao();\n return En(`table-${t}`, () => {\n const n = () => {\n const d = [Object.assign({}, { rowModified: !1 })], v = /* @__PURE__ */ new Set();\n for (let A = 0; A < a.value.length; A++) {\n const _ = a.value[A];\n _.parent !== null && _.parent !== void 0 && v.add(_.parent);\n }\n const b = (A) => a.value[A]?.gantt !== void 0, H = (A) => {\n for (let _ = 0; _ < a.value.length; _++)\n if (a.value[_].parent === A && (b(_) || H(_)))\n return !0;\n return !1;\n }, B = (A) => {\n const _ = s.value, Z = _.view === \"tree\" || _.view === \"tree-gantt\" ? _.defaultTreeExpansion : void 0;\n if (!Z) return !0;\n switch (Z) {\n case \"root\":\n return !1;\n // Only root nodes are visible, all children start collapsed\n case \"branch\":\n return H(A);\n case \"leaf\":\n return !0;\n // All nodes should be expanded\n default:\n return !0;\n }\n };\n for (let A = 0; A < a.value.length; A++) {\n const _ = a.value[A], Z = _.parent === null || _.parent === void 0, ie = v.has(A);\n d[A] = {\n childrenOpen: B(A),\n expanded: !1,\n indent: _.indent || 0,\n isParent: ie,\n isRoot: Z,\n rowModified: !1,\n open: Z,\n // This will be recalculated later for non-root nodes\n parent: _.parent\n };\n }\n return d;\n }, o = S(e.columns), a = S(e.rows), s = S(e.config || {}), l = S({}), r = S({}), i = M(() => {\n const d = {};\n for (const [v, b] of o.value.entries())\n for (const [H, B] of a.value.entries())\n d[`${v}:${H}`] = B[b.name];\n return d;\n }), u = M({\n get: () => {\n const d = n();\n for (let v = 0; v < d.length; v++)\n l.value[v] && (d[v].rowModified = l.value[v]), r.value[v] && (r.value[v].childrenOpen !== void 0 && (d[v].childrenOpen = r.value[v].childrenOpen), r.value[v].expanded !== void 0 && (d[v].expanded = r.value[v].expanded));\n if (E.value) {\n const v = (b, H) => {\n const B = H[b];\n if (B.isRoot || B.parent === null || B.parent === void 0)\n return !0;\n const A = B.parent;\n return A < 0 || A >= H.length ? !1 : (H[A].childrenOpen || !1) && v(A, H);\n };\n for (let b = 0; b < d.length; b++)\n d[b].isRoot || (d[b].open = v(b, d));\n }\n return d;\n },\n set: (d) => {\n JSON.stringify(d) !== JSON.stringify(u.value) && (u.value = d);\n }\n }), c = S(e.modal || { visible: !1 }), m = S({}), g = S([]), p = S([]), D = S([]), w = S({\n column: null,\n direction: null\n }), f = S({}), h = M(() => o.value.some((d) => d.pinned)), I = M(() => s.value.view === \"gantt\" || s.value.view === \"tree-gantt\"), E = M(() => s.value.view === \"tree\" || s.value.view === \"tree-gantt\"), L = M(() => {\n const d = s.value;\n return d.view === \"gantt\" || d.view === \"tree-gantt\" ? d.dependencyGraph !== !1 : !0;\n }), z = M(() => `${Math.ceil(a.value.length / 100 + 1)}ch`), R = M(\n () => s.value.view ? [\"list\", \"tree\", \"tree-gantt\", \"list-expansion\"].includes(s.value.view) : !1\n ), C = M(() => {\n let d = a.value.map((v, b) => ({\n ...v,\n originalIndex: b\n }));\n if (Object.entries(f.value).forEach(([v, b]) => {\n const H = parseInt(v), B = o.value[H];\n !B || !(b.value || b.startValue || b.endValue || B.filterType === \"checkbox\" && b.value !== void 0) || (d = d.filter((A) => {\n const _ = A[B.name];\n return Q(_, b, B);\n }));\n }), w.value.column !== null && w.value.direction) {\n const v = o.value[w.value.column], b = w.value.direction;\n d.sort((H, B) => {\n let A = H[v.name], _ = B[v.name];\n A == null && (A = \"\"), _ == null && (_ = \"\");\n const Z = Number(A), ie = Number(_);\n if (!isNaN(Z) && !isNaN(ie) && A !== \"\" && _ !== \"\")\n return b === \"asc\" ? Z - ie : ie - Z;\n {\n const Xe = String(A).toLowerCase(), _t = String(_).toLowerCase();\n return b === \"asc\" ? Xe.localeCompare(_t) : _t.localeCompare(Xe);\n }\n });\n }\n return d;\n }), O = (d, v) => i.value[`${d}:${v}`], q = (d, v, b) => {\n const H = `${d}:${v}`, B = o.value[d];\n i.value[H] !== b && (l.value[v] = !0), i.value[H] = b, a.value[v] = {\n ...a.value[v],\n [B.name]: b\n };\n }, G = (d) => {\n a.value = d;\n }, F = (d, v, b) => {\n const H = `${d}:${v}`;\n i.value[H] !== b && (l.value[v] = !0, m.value[H] = b);\n }, le = (d) => {\n const v = o.value.indexOf(d) === o.value.length - 1, b = s.value.fullWidth ? d.resizable && !v : d.resizable;\n return {\n width: d.width || \"40ch\",\n textAlign: d.align || \"center\",\n ...b && {\n resize: \"horizontal\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\"\n }\n };\n }, we = (d, v) => {\n if (d < 0 || d >= o.value.length) return;\n const b = Math.max(v, 40);\n o.value[d] = {\n ...o.value[d],\n width: `${b}px`\n };\n }, Fe = (d) => {\n const v = a.value[d];\n return I.value && v.gantt !== void 0;\n }, Ve = (d) => !E.value || u.value[d].isRoot || u.value[d].open, rt = (d) => !E.value && s.value.view !== \"list-expansion\" ? \"\" : E.value && (u.value[d].isRoot || u.value[d].isParent) ? u.value[d].childrenOpen ? \"▼\" : \"►\" : s.value.view === \"list-expansion\" ? u.value[d].expanded ? \"▼\" : \"►\" : \"\", st = (d) => {\n if (E.value) {\n const v = r.value[d] || {}, b = !(v.childrenOpen ?? u.value[d].childrenOpen);\n r.value[d] = {\n ...v,\n childrenOpen: b\n }, b || Ne(d);\n } else if (s.value.view === \"list-expansion\") {\n const v = r.value[d] || {}, b = v.expanded ?? u.value[d].expanded;\n r.value[d] = {\n ...v,\n expanded: !b\n };\n }\n }, Ne = (d) => {\n for (let v = 0; v < a.value.length; v++)\n if (u.value[v].parent === d) {\n const b = r.value[v] || {};\n r.value[v] = {\n ...b,\n childrenOpen: !1\n }, Ne(v);\n }\n }, it = (d, v) => {\n const b = O(d, v);\n return Be(d, v, b);\n }, Be = (d, v, b) => {\n const H = o.value[d], B = a.value[v], A = H.format;\n return A ? typeof A == \"function\" ? A(b, { table: i.value, row: B, column: H }) : typeof A == \"string\" ? Function(`\"use strict\";return (${A})`)()(b, { table: i.value, row: B, column: H }) : b : b;\n }, ut = (d) => {\n d.target instanceof Node && c.value.parent?.contains(d.target) || c.value.visible && (c.value.visible = !1);\n }, ct = (d, v) => v && d === 0 && v > 0 ? `${v}ch` : \"inherit\", dt = (d) => {\n const v = a.value[d.rowIndex]?.gantt;\n v && (d.type === \"resize\" ? d.edge === \"start\" ? (v.startIndex = d.newStart, v.endIndex = d.end, v.colspan = v.endIndex - v.startIndex) : d.edge === \"end\" && (v.startIndex = d.start, v.endIndex = d.newEnd, v.colspan = v.endIndex - v.startIndex) : d.type === \"bar\" && (v.startIndex = d.newStart, v.endIndex = d.newEnd, v.colspan = v.endIndex - v.startIndex));\n }, ft = (d) => {\n const v = g.value.findIndex((b) => b.id === d.id);\n v >= 0 ? g.value[v] = d : g.value.push(d);\n }, Ge = (d) => {\n const v = g.value.findIndex((b) => b.id === d);\n v >= 0 && g.value.splice(v, 1);\n }, Ue = (d) => {\n const v = p.value.findIndex((b) => b.id === d.id);\n v >= 0 ? p.value[v] = d : p.value.push(d);\n }, ze = (d) => {\n const v = p.value.findIndex((b) => b.id === d);\n v >= 0 && p.value.splice(v, 1);\n }, We = (d, v, b) => {\n const H = p.value.find((_) => _.id === d), B = p.value.find((_) => _.id === v);\n if (!H || !B)\n return console.warn(\"Cannot create connection: handle not found\"), null;\n const A = {\n id: `connection-${d}-${v}`,\n from: {\n barId: H.barId,\n side: H.side\n },\n to: {\n barId: B.barId,\n side: B.side\n },\n style: b?.style,\n label: b?.label\n };\n return D.value.push(A), A;\n }, V = (d) => {\n const v = D.value.findIndex((b) => b.id === d);\n return v >= 0 ? (D.value.splice(v, 1), !0) : !1;\n }, P = (d) => D.value.filter((v) => v.from.barId === d || v.to.barId === d), N = (d) => p.value.filter((v) => v.barId === d), X = (d) => {\n if (o.value[d].sortable === !1) return;\n let v;\n w.value.column === d && w.value.direction === \"asc\" ? v = \"desc\" : v = \"asc\", w.value.column = d, w.value.direction = v;\n }, Q = (d, v, b) => {\n const H = b.filterType || \"text\", B = v.value;\n if (!B && H !== \"dateRange\" && H !== \"checkbox\") return !0;\n switch (H) {\n case \"text\": {\n let A = \"\";\n return typeof d == \"object\" && d !== null ? A = Object.values(d).join(\" \") : A = String(d || \"\"), A.toLowerCase().includes(String(B).toLowerCase());\n }\n case \"number\": {\n const A = Number(d), _ = Number(B);\n return !isNaN(A) && !isNaN(_) && A === _;\n }\n case \"select\":\n return d === B;\n case \"checkbox\":\n return B === !0 ? !!d : !0;\n case \"date\": {\n let A;\n if (typeof d == \"number\") {\n const Z = new Date(d), ie = (/* @__PURE__ */ new Date()).getFullYear();\n A = new Date(ie, Z.getMonth(), Z.getDate());\n } else\n A = new Date(String(d));\n const _ = new Date(String(B));\n return A.toDateString() === _.toDateString();\n }\n case \"dateRange\": {\n const A = v.startValue, _ = v.endValue;\n if (!A && !_) return !0;\n let Z;\n if (typeof d == \"number\") {\n const ie = new Date(d), Xe = (/* @__PURE__ */ new Date()).getFullYear();\n Z = new Date(Xe, ie.getMonth(), ie.getDate());\n } else\n Z = new Date(String(d));\n return !(A && Z < new Date(String(A)) || _ && Z > new Date(String(_)));\n }\n default:\n return !0;\n }\n };\n return {\n // state\n columns: o,\n config: s,\n connectionHandles: p,\n connectionPaths: D,\n display: u,\n filterState: f,\n ganttBars: g,\n modal: c,\n rows: a,\n sortState: w,\n table: i,\n updates: m,\n // getters\n filteredRows: C,\n hasPinnedColumns: h,\n isGanttView: I,\n isTreeView: E,\n isDependencyGraphEnabled: L,\n numberedRowWidth: z,\n zeroColumn: R,\n // actions\n clearFilter: (d) => {\n delete f.value[d];\n },\n closeModal: ut,\n createConnection: We,\n deleteConnection: V,\n getCellData: O,\n getCellDisplayValue: it,\n getConnectionsForBar: P,\n getFormattedValue: Be,\n getHandlesForBar: N,\n getHeaderCellStyle: le,\n getIndent: ct,\n getRowExpandSymbol: rt,\n isRowGantt: Fe,\n isRowVisible: Ve,\n registerConnectionHandle: Ue,\n registerGanttBar: ft,\n resizeColumn: we,\n setCellData: q,\n setCellText: F,\n setFilter: (d, v) => {\n !v.value && !v.startValue && !v.endValue ? delete f.value[d] : f.value[d] = v;\n },\n sortByColumn: X,\n toggleRowExpand: st,\n unregisterConnectionHandle: ze,\n unregisterGanttBar: Ge,\n updateGanttBar: dt,\n updateRows: G\n };\n })();\n}, Xo = {\n class: \"atable-container\",\n style: { position: \"relative\" }\n}, jo = /* @__PURE__ */ j({\n __name: \"ATable\",\n props: /* @__PURE__ */ de({\n id: { default: \"\" },\n config: { default: () => new Object() }\n }, {\n rows: { required: !0 },\n rowsModifiers: {},\n columns: { required: !0 },\n columnsModifiers: {}\n }),\n emits: /* @__PURE__ */ de([\"cellUpdate\", \"gantt:drag\", \"connection:event\", \"columns:update\"], [\"update:rows\", \"update:columns\"]),\n setup(e, { expose: t, emit: n }) {\n const o = fe(e, \"rows\"), a = fe(e, \"columns\"), s = n, l = ne(\"table\"), r = Wo({ columns: a.value, rows: o.value, id: e.id, config: e.config });\n r.$onAction(({ name: p, store: D, args: w, after: f }) => {\n if (p === \"setCellData\" || p === \"setCellText\") {\n const [h, I, E] = w, L = D.getCellData(h, I);\n f(() => {\n o.value = [...D.rows], s(\"cellUpdate\", { colIndex: h, rowIndex: I, newValue: E, oldValue: L });\n });\n } else if (p === \"updateGanttBar\") {\n const [h] = w;\n let I = !1;\n h.type === \"resize\" ? I = h.oldColspan !== h.newColspan : h.type === \"bar\" && (I = h.oldStart !== h.newStart || h.oldEnd !== h.newEnd), I && f(() => {\n s(\"gantt:drag\", h);\n });\n } else p === \"resizeColumn\" && f(() => {\n a.value = [...D.columns], s(\"columns:update\", [...D.columns]);\n });\n }), Y(\n () => o.value,\n (p) => {\n JSON.stringify(p) !== JSON.stringify(r.rows) && (r.rows = [...p]);\n },\n { deep: !0 }\n ), Y(\n a,\n (p) => {\n JSON.stringify(p) !== JSON.stringify(r.columns) && (r.columns = [...p], s(\"columns:update\", [...p]));\n },\n { deep: !0 }\n ), ve(() => {\n a.value.some((p) => p.pinned) && (u(), r.isTreeView && cn(l, u, { childList: !0, subtree: !0 }));\n });\n const i = M(() => r.columns.filter((p) => p.pinned).length), u = () => {\n const p = l.value, D = p?.rows[0], w = p?.rows[1], f = D ? Array.from(D.cells) : [];\n for (const [h, I] of f.entries()) {\n const E = w?.cells[h];\n E && (I.style.width = `${E.offsetWidth}px`);\n }\n for (const h of p?.rows || []) {\n let I = 0;\n const E = [];\n for (const L of h.cells)\n (L.classList.contains(\"sticky-column\") || L.classList.contains(\"sticky-index\")) && (L.style.left = `${I}px`, I += L.offsetWidth, E.push(L));\n E.length > 0 && E[E.length - 1].classList.add(\"sticky-column-edge\");\n }\n };\n window.addEventListener(\"keydown\", (p) => {\n if (p.key === \"Escape\" && r.modal.visible) {\n r.modal.visible = !1;\n const D = r.modal.parent;\n D && tt().then(() => {\n D.focus();\n });\n }\n });\n const c = (p) => {\n if (!p.gantt || i.value === 0)\n return r.columns;\n const D = [];\n for (let w = 0; w < i.value; w++) {\n const f = { ...r.columns[w] };\n f.originalIndex = w, D.push(f);\n }\n return D.push({\n ...r.columns[i.value],\n isGantt: !0,\n colspan: p.gantt?.colspan || r.columns.length - i.value,\n originalIndex: i.value,\n width: \"auto\"\n // TODO: refactor to API that can detect when data exists in a cell. Might have be custom and not generalizable\n }), D;\n }, m = (p) => {\n s(\"connection:event\", { type: \"create\", connection: p });\n }, g = (p) => {\n s(\"connection:event\", { type: \"delete\", connection: p });\n };\n return t({\n store: r,\n createConnection: r.createConnection,\n deleteConnection: r.deleteConnection,\n getConnectionsForBar: r.getConnectionsForBar,\n getHandlesForBar: r.getHandlesForBar\n }), (p, D) => (x(), k(\"div\", Xo, [\n U((x(), k(\"table\", {\n ref: \"table\",\n class: \"atable\",\n style: ce({\n width: $(r).config.fullWidth ? \"100%\" : \"auto\"\n })\n }, [\n oe(p.$slots, \"header\", { data: $(r) }, () => [\n Ze(fn, {\n columns: $(r).columns,\n store: $(r)\n }, null, 8, [\"columns\", \"store\"])\n ], !0),\n y(\"tbody\", null, [\n oe(p.$slots, \"body\", { data: $(r) }, () => [\n (x(!0), k(te, null, ae($(r).filteredRows, (w, f) => (x(), re(dn, {\n key: `${w.originalIndex}-${f}`,\n row: w,\n rowIndex: w.originalIndex,\n store: $(r)\n }, {\n default: It(() => [\n (x(!0), k(te, null, ae(c(w), (h, I) => (x(), k(te, {\n key: h.name\n }, [\n h.isGantt ? (x(), re(Ae(h.ganttComponent || \"AGanttCell\"), {\n key: 0,\n store: $(r),\n \"columns-count\": $(r).columns.length - i.value,\n color: w.gantt?.color,\n start: w.gantt?.startIndex,\n end: w.gantt?.endIndex,\n colspan: h.colspan,\n pinned: h.pinned,\n rowIndex: w.originalIndex,\n colIndex: h.originalIndex ?? I,\n style: ce({\n textAlign: h?.align || \"center\",\n minWidth: h?.width || \"40ch\",\n width: $(r).config.fullWidth ? \"auto\" : null\n }),\n \"onConnection:create\": m\n }, null, 40, [\"store\", \"columns-count\", \"color\", \"start\", \"end\", \"colspan\", \"pinned\", \"rowIndex\", \"colIndex\", \"style\"])) : (x(), re(Ae(h.cellComponent || \"ACell\"), {\n key: 1,\n store: $(r),\n pinned: h.pinned,\n rowIndex: w.originalIndex,\n colIndex: I,\n style: ce({\n textAlign: h?.align || \"center\",\n width: $(r).config.fullWidth ? \"auto\" : null\n }),\n spellcheck: \"false\"\n }, null, 8, [\"store\", \"pinned\", \"rowIndex\", \"colIndex\", \"style\"]))\n ], 64))), 128))\n ]),\n _: 2\n }, 1032, [\"row\", \"rowIndex\", \"store\"]))), 128))\n ], !0)\n ]),\n oe(p.$slots, \"footer\", { data: $(r) }, void 0, !0),\n oe(p.$slots, \"modal\", { data: $(r) }, () => [\n U(Ze(vn, { store: $(r) }, {\n default: It(() => [\n (x(), re(Ae($(r).modal.component), et({\n key: `${$(r).modal.rowIndex}:${$(r).modal.colIndex}`,\n \"col-index\": $(r).modal.colIndex,\n \"row-index\": $(r).modal.rowIndex,\n store: $(r)\n }, $(r).modal.componentProps), null, 16, [\"col-index\", \"row-index\", \"store\"]))\n ]),\n _: 1\n }, 8, [\"store\"]), [\n [be, $(r).modal.visible]\n ])\n ], !0)\n ], 4)), [\n [$(Eo), $(r).closeModal]\n ]),\n $(r).isGanttView && $(r).isDependencyGraphEnabled ? (x(), re(Vo, {\n key: 0,\n store: $(r),\n \"onConnection:delete\": g\n }, null, 8, [\"store\"])) : K(\"\", !0)\n ]));\n }\n}), qo = /* @__PURE__ */ Ie(jo, [[\"__scopeId\", \"data-v-c0a0032f\"]]), Yo = {}, Jo = { class: \"aloading\" }, Ko = { class: \"aloading-header\" };\nfunction Qo(e, t) {\n return x(), k(\"div\", Jo, [\n y(\"h2\", Ko, [\n oe(e.$slots, \"default\", {}, void 0, !0)\n ]),\n t[0] || (t[0] = y(\"div\", { class: \"aloading-bar\" }, null, -1))\n ]);\n}\nconst Zo = /* @__PURE__ */ Ie(Yo, [[\"render\", Qo], [\"__scopeId\", \"data-v-a930a25b\"]]), el = {}, tl = { class: \"aloading\" }, nl = { class: \"aloading-header\" };\nfunction ol(e, t) {\n return x(), k(\"div\", tl, [\n y(\"h2\", nl, [\n oe(e.$slots, \"default\", {}, void 0, !0)\n ]),\n t[0] || (t[0] = y(\"div\", { class: \"aloading-bar\" }, null, -1))\n ]);\n}\nconst ll = /* @__PURE__ */ Ie(el, [[\"render\", ol], [\"__scopeId\", \"data-v-e1165876\"]]);\nfunction al(e) {\n e.component(\"ACell\", uo), e.component(\"AExpansionRow\", po), e.component(\"AGanttCell\", Io), e.component(\"ARow\", dn), e.component(\"ATable\", qo), e.component(\"ATableHeader\", fn), e.component(\"ATableLoading\", Zo), e.component(\"ATableLoadingBar\", ll), e.component(\"ATableModal\", vn);\n}\nconst rl = { class: \"aform_form-element\" }, sl = [\"for\"], il = { class: \"aform_checkbox-container aform_input-field\" }, ul = [\"id\", \"readonly\", \"required\"], cl = [\"innerHTML\"], dl = /* @__PURE__ */ j({\n __name: \"ACheckbox\",\n props: /* @__PURE__ */ de({\n schema: {},\n label: {},\n mask: {},\n required: { type: Boolean },\n readOnly: { type: Boolean },\n uuid: {},\n validation: { default: () => ({ errorMessage: \" \" }) }\n }, {\n modelValue: {},\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = fe(e, \"modelValue\");\n return (n, o) => (x(), k(\"div\", rl, [\n y(\"label\", {\n class: \"aform_field-label\",\n for: e.uuid\n }, W(e.label), 9, sl),\n y(\"span\", il, [\n U(y(\"input\", {\n id: e.uuid,\n \"onUpdate:modelValue\": o[0] || (o[0] = (a) => t.value = a),\n type: \"checkbox\",\n class: \"aform_checkbox\",\n readonly: e.readOnly,\n required: e.required\n }, null, 8, ul), [\n [on, t.value]\n ])\n ]),\n U(y(\"p\", {\n class: \"aform_error\",\n innerHTML: e.validation.errorMessage\n }, null, 8, cl), [\n [be, e.validation.errorMessage]\n ])\n ]));\n }\n}), he = (e, t) => {\n const n = e.__vccOpts || e;\n for (const [o, a] of t)\n n[o] = a;\n return n;\n}, fl = /* @__PURE__ */ he(dl, [[\"__scopeId\", \"data-v-f13fd4d6\"]]), vl = /* @__PURE__ */ j({\n __name: \"AComboBox\",\n props: [\"event\", \"cellData\", \"tableID\"],\n setup(e) {\n return (t, n) => {\n const o = an(\"ATableModal\");\n return x(), re(o, {\n event: e.event,\n \"cell-data\": e.cellData,\n class: \"amodal\"\n }, {\n default: It(() => [...n[0] || (n[0] = [\n y(\"div\", null, [\n y(\"input\", { type: \"text\" }),\n y(\"input\", { type: \"text\" }),\n y(\"input\", { type: \"text\" })\n ], -1)\n ])]),\n _: 1\n }, 8, [\"event\", \"cell-data\"]);\n };\n }\n}), ml = [\"id\", \"disabled\", \"required\"], pl = [\"for\"], hl = [\"innerHTML\"], gl = /* @__PURE__ */ j({\n __name: \"ADate\",\n props: /* @__PURE__ */ de({\n schema: {},\n label: { default: \"Date\" },\n mask: {},\n required: { type: Boolean },\n readOnly: { type: Boolean },\n uuid: {},\n validation: { default: () => ({ errorMessage: \" \" }) }\n }, {\n modelValue: {\n // format the date to be compatible with the native input datepicker\n },\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = fe(e, \"modelValue\", {\n // format the date to be compatible with the native input datepicker\n set: (a) => new Date(a).toISOString().split(\"T\")[0]\n }), n = ne(\"date\"), o = () => {\n n.value && \"showPicker\" in HTMLInputElement.prototype && n.value.showPicker();\n };\n return (a, s) => (x(), k(\"div\", null, [\n U(y(\"input\", {\n id: e.uuid,\n ref: \"date\",\n \"onUpdate:modelValue\": s[0] || (s[0] = (l) => t.value = l),\n type: \"date\",\n disabled: e.readOnly,\n required: e.required,\n onClick: o\n }, null, 8, ml), [\n [se, t.value]\n ]),\n y(\"label\", { for: e.uuid }, W(e.label), 9, pl),\n U(y(\"p\", {\n innerHTML: e.validation.errorMessage\n }, null, 8, hl), [\n [be, e.validation.errorMessage]\n ])\n ]));\n }\n}), yl = /* @__PURE__ */ he(gl, [[\"__scopeId\", \"data-v-a15ed922\"]]);\nfunction mn(e, t) {\n return nt() ? (ot(e, t), !0) : !1;\n}\n// @__NO_SIDE_EFFECTS__\nfunction Wt() {\n const e = /* @__PURE__ */ new Set(), t = (s) => {\n e.delete(s);\n };\n return {\n on: (s) => {\n e.add(s);\n const l = () => t(s);\n return mn(l), { off: l };\n },\n off: t,\n trigger: (...s) => Promise.all(Array.from(e).map((l) => l(...s))),\n clear: () => {\n e.clear();\n }\n };\n}\nconst pn = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst wl = Object.prototype.toString, xl = (e) => wl.call(e) === \"[object Object]\", Pe = () => {\n}, bl = (e, t) => Object.prototype.hasOwnProperty.call(e, t);\nfunction Il(...e) {\n if (e.length !== 1) return ln(...e);\n const t = e[0];\n return typeof t == \"function\" ? Dt(Et(() => ({\n get: t,\n set: Pe\n }))) : S(t);\n}\nfunction gt(e) {\n return Array.isArray(e) ? e : [e];\n}\nfunction kl(e, t, n) {\n return Y(e, t, {\n ...n,\n immediate: !0\n });\n}\nconst hn = pn ? window : void 0, Cl = pn ? window.document : void 0;\nfunction Te(e) {\n var t;\n const n = T(e);\n return (t = n?.$el) !== null && t !== void 0 ? t : n;\n}\nfunction yt(...e) {\n const t = (o, a, s, l) => (o.addEventListener(a, s, l), () => o.removeEventListener(a, s, l)), n = M(() => {\n const o = gt(T(e[0])).filter((a) => a != null);\n return o.every((a) => typeof a != \"string\") ? o : void 0;\n });\n return kl(() => {\n var o, a;\n return [\n (o = (a = n.value) === null || a === void 0 ? void 0 : a.map((s) => Te(s))) !== null && o !== void 0 ? o : [hn].filter((s) => s != null),\n gt(T(n.value ? e[1] : e[0])),\n gt($(n.value ? e[2] : e[1])),\n T(n.value ? e[3] : e[2])\n ];\n }, ([o, a, s, l], r, i) => {\n if (!o?.length || !a?.length || !s?.length) return;\n const u = xl(l) ? { ...l } : l, c = o.flatMap((m) => a.flatMap((g) => s.map((p) => t(m, g, p, u))));\n i(() => {\n c.forEach((m) => m());\n });\n }, { flush: \"post\" });\n}\nfunction Xt(e, t, n = {}) {\n const { window: o = hn, ignore: a = [], capture: s = !0, detectIframe: l = !1, controls: r = !1 } = n;\n if (!o) return r ? {\n stop: Pe,\n cancel: Pe,\n trigger: Pe\n } : Pe;\n let i = !0;\n const u = (f) => T(a).some((h) => {\n if (typeof h == \"string\") return Array.from(o.document.querySelectorAll(h)).some((I) => I === f.target || f.composedPath().includes(I));\n {\n const I = Te(h);\n return I && (f.target === I || f.composedPath().includes(I));\n }\n });\n function c(f) {\n const h = T(f);\n return h && h.$.subTree.shapeFlag === 16;\n }\n function m(f, h) {\n const I = T(f), E = I.$.subTree && I.$.subTree.children;\n return E == null || !Array.isArray(E) ? !1 : E.some((L) => L.el === h.target || h.composedPath().includes(L.el));\n }\n const g = (f) => {\n const h = Te(e);\n if (f.target != null && !(!(h instanceof Element) && c(e) && m(e, f)) && !(!h || h === f.target || f.composedPath().includes(h))) {\n if (\"detail\" in f && f.detail === 0 && (i = !u(f)), !i) {\n i = !0;\n return;\n }\n t(f);\n }\n };\n let p = !1;\n const D = [\n yt(o, \"click\", (f) => {\n p || (p = !0, setTimeout(() => {\n p = !1;\n }, 0), g(f));\n }, {\n passive: !0,\n capture: s\n }),\n yt(o, \"pointerdown\", (f) => {\n const h = Te(e);\n i = !u(f) && !!(h && !f.composedPath().includes(h));\n }, { passive: !0 }),\n l && yt(o, \"blur\", (f) => {\n setTimeout(() => {\n var h;\n const I = Te(e);\n ((h = o.document.activeElement) === null || h === void 0 ? void 0 : h.tagName) === \"IFRAME\" && !I?.contains(o.document.activeElement) && t(f);\n }, 0);\n }, { passive: !0 })\n ].filter(Boolean), w = () => D.forEach((f) => f());\n return r ? {\n stop: w,\n cancel: () => {\n i = !1;\n },\n trigger: (f) => {\n i = !0, g(f), i = !1;\n }\n } : w;\n}\nconst El = {\n multiple: !0,\n accept: \"*\",\n reset: !1,\n directory: !1\n};\nfunction Dl(e) {\n if (!e) return null;\n if (e instanceof FileList) return e;\n const t = new DataTransfer();\n for (const n of e) t.items.add(n);\n return t.files;\n}\nfunction Tl(e = {}) {\n const { document: t = Cl } = e, n = S(Dl(e.initialFiles)), { on: o, trigger: a } = /* @__PURE__ */ Wt(), { on: s, trigger: l } = /* @__PURE__ */ Wt(), r = M(() => {\n var m;\n const g = (m = Te(e.input)) !== null && m !== void 0 ? m : t ? t.createElement(\"input\") : void 0;\n return g && (g.type = \"file\", g.onchange = (p) => {\n n.value = p.target.files, a(n.value);\n }, g.oncancel = () => {\n l();\n }), g;\n }), i = () => {\n n.value = null, r.value && r.value.value && (r.value.value = \"\", a(null));\n }, u = (m) => {\n const g = r.value;\n g && (g.multiple = T(m.multiple), g.accept = T(m.accept), g.webkitdirectory = T(m.directory), bl(m, \"capture\") && (g.capture = T(m.capture)));\n }, c = (m) => {\n const g = r.value;\n if (!g) return;\n const p = {\n ...El,\n ...e,\n ...m\n };\n u(p), T(p.reset) && i(), g.click();\n };\n return Ce(() => {\n u(e);\n }), {\n files: Dt(n),\n open: c,\n reset: i,\n onCancel: s,\n onChange: o\n };\n}\nfunction wt(e) {\n return typeof Window < \"u\" && e instanceof Window ? e.document.documentElement : typeof Document < \"u\" && e instanceof Document ? e.documentElement : e;\n}\nconst xt = /* @__PURE__ */ new WeakMap();\nfunction Al(e, t = !1) {\n const n = J(t);\n let o = \"\";\n Y(Il(e), (l) => {\n const r = wt(T(l));\n if (r) {\n const i = r;\n if (xt.get(i) || xt.set(i, i.style.overflow), i.style.overflow !== \"hidden\" && (o = i.style.overflow), i.style.overflow === \"hidden\") return n.value = !0;\n if (n.value) return i.style.overflow = \"hidden\";\n }\n }, { immediate: !0 });\n const a = () => {\n const l = wt(T(e));\n !l || n.value || (l.style.overflow = \"hidden\", n.value = !0);\n }, s = () => {\n const l = wt(T(e));\n !l || !n.value || (l.style.overflow = o, xt.delete(l), n.value = !1);\n };\n return mn(s), M({\n get() {\n return n.value;\n },\n set(l) {\n l ? a() : s();\n }\n });\n}\nconst bt = /* @__PURE__ */ new WeakMap(), $l = {\n mounted(e, t) {\n const n = !t.modifiers.bubble;\n let o;\n if (typeof t.value == \"function\") o = Xt(e, t.value, { capture: n });\n else {\n const [a, s] = t.value;\n o = Xt(e, a, Object.assign({ capture: n }, s));\n }\n bt.set(e, o);\n },\n unmounted(e) {\n const t = bt.get(e);\n t && typeof t == \"function\" ? t() : t?.stop(), bt.delete(e);\n }\n};\nfunction Ml() {\n let e = !1;\n const t = J(!1);\n return (n, o) => {\n if (t.value = o.value, e) return;\n e = !0;\n const a = Al(n, o.value);\n Y(t, (s) => a.value = s);\n };\n}\nMl();\nconst Sl = { class: \"input-wrapper\" }, Ll = {\n id: \"autocomplete-results\",\n class: \"autocomplete-results\"\n}, Rl = {\n key: 0,\n class: \"loading autocomplete-result\"\n}, Vl = [\"onClick\"], Pl = /* @__PURE__ */ j({\n __name: \"ADropdown\",\n props: /* @__PURE__ */ de({\n label: {},\n items: { default: () => [] },\n isAsync: { type: Boolean, default: !1 },\n filterFunction: { type: Function, default: void 0 }\n }, {\n modelValue: {},\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = fe(e, \"modelValue\"), n = nn({\n activeItemIndex: null,\n open: !1,\n loading: !1,\n results: e.items\n }), o = () => r(), a = async () => {\n if (n.open = !0, n.activeItemIndex = null, e.filterFunction) {\n e.isAsync && (n.loading = !0);\n try {\n const g = await e.filterFunction(t.value || \"\");\n n.results = g || [];\n } catch {\n n.results = [];\n } finally {\n e.isAsync && (n.loading = !1);\n }\n } else\n i();\n }, s = (g) => {\n t.value = g, r(g);\n }, l = () => {\n n.activeItemIndex = e.isAsync ? null : t.value && e.items?.indexOf(t.value) || null, n.open = !0, n.results = e.isAsync ? [] : e.items;\n }, r = (g) => {\n n.activeItemIndex = null, n.open = !1, e.items?.includes(g || t.value || \"\") || (t.value = \"\");\n }, i = () => {\n t.value ? n.results = e.items?.filter((g) => g.toLowerCase().includes((t.value ?? \"\").toLowerCase())) : n.results = e.items;\n }, u = () => {\n const g = n.results?.length || 0;\n if (n.activeItemIndex != null) {\n const p = isNaN(n.activeItemIndex) ? 0 : n.activeItemIndex;\n n.activeItemIndex = (p + 1) % g;\n } else\n n.activeItemIndex = 0;\n }, c = () => {\n const g = n.results?.length || 0;\n if (n.activeItemIndex != null) {\n const p = isNaN(n.activeItemIndex) ? 0 : n.activeItemIndex;\n p === 0 ? n.activeItemIndex = null : n.activeItemIndex = p - 1;\n } else\n n.activeItemIndex = g - 1;\n }, m = () => {\n if (n.results) {\n const g = n.activeItemIndex || 0, p = n.results[g];\n s(p);\n }\n n.activeItemIndex = 0;\n };\n return (g, p) => U((x(), k(\"div\", {\n class: ee([\"autocomplete\", { isOpen: n.open }])\n }, [\n y(\"div\", Sl, [\n U(y(\"input\", {\n \"onUpdate:modelValue\": p[0] || (p[0] = (D) => t.value = D),\n type: \"text\",\n onInput: a,\n onFocus: l,\n onKeydown: [\n De(u, [\"down\"]),\n De(c, [\"up\"]),\n De(m, [\"enter\"]),\n De(o, [\"esc\"]),\n De(o, [\"tab\"])\n ]\n }, null, 544), [\n [se, t.value]\n ]),\n U(y(\"ul\", Ll, [\n n.loading ? (x(), k(\"li\", Rl, \"Loading results...\")) : (x(!0), k(te, { key: 1 }, ae(n.results, (D, w) => (x(), k(\"li\", {\n key: D,\n class: ee([\"autocomplete-result\", { \"is-active\": w === n.activeItemIndex }]),\n onClick: $e((f) => s(D), [\"stop\"])\n }, W(D), 11, Vl))), 128))\n ], 512), [\n [be, n.open]\n ]),\n y(\"label\", null, W(e.label), 1)\n ])\n ], 2)), [\n [$($l), o]\n ]);\n }\n}), Ol = /* @__PURE__ */ he(Pl, [[\"__scopeId\", \"data-v-31a6db8c\"]]);\nfunction gn(e, t) {\n return nt() ? (ot(e, t), !0) : !1;\n}\nconst _l = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst Hl = (e) => e != null, Fl = Object.prototype.toString, Nl = (e) => Fl.call(e) === \"[object Object]\", Bl = () => {\n};\nfunction Qe(e) {\n return Array.isArray(e) ? e : [e];\n}\nfunction Gl(e, t, n) {\n return Y(e, t, {\n ...n,\n immediate: !0\n });\n}\nconst Re = _l ? window : void 0;\nfunction Se(e) {\n var t;\n const n = T(e);\n return (t = n?.$el) !== null && t !== void 0 ? t : n;\n}\nfunction _e(...e) {\n const t = (o, a, s, l) => (o.addEventListener(a, s, l), () => o.removeEventListener(a, s, l)), n = M(() => {\n const o = Qe(T(e[0])).filter((a) => a != null);\n return o.every((a) => typeof a != \"string\") ? o : void 0;\n });\n return Gl(() => {\n var o, a;\n return [\n (o = (a = n.value) === null || a === void 0 ? void 0 : a.map((s) => Se(s))) !== null && o !== void 0 ? o : [Re].filter((s) => s != null),\n Qe(T(n.value ? e[1] : e[0])),\n Qe($(n.value ? e[2] : e[1])),\n T(n.value ? e[3] : e[2])\n ];\n }, ([o, a, s, l], r, i) => {\n if (!o?.length || !a?.length || !s?.length) return;\n const u = Nl(l) ? { ...l } : l, c = o.flatMap((m) => a.flatMap((g) => s.map((p) => t(m, g, p, u))));\n i(() => {\n c.forEach((m) => m());\n });\n }, { flush: \"post\" });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Ul() {\n const e = J(!1), t = lt();\n return t && ve(() => {\n e.value = !0;\n }, t), e;\n}\n// @__NO_SIDE_EFFECTS__\nfunction zl(e) {\n const t = /* @__PURE__ */ Ul();\n return M(() => (t.value, !!e()));\n}\nfunction Wl(e, t, n = {}) {\n const { window: o = Re, ...a } = n;\n let s;\n const l = /* @__PURE__ */ zl(() => o && \"MutationObserver\" in o), r = () => {\n s && (s.disconnect(), s = void 0);\n }, i = Y(M(() => {\n const m = Qe(T(e)).map(Se).filter(Hl);\n return new Set(m);\n }), (m) => {\n r(), l.value && m.size && (s = new MutationObserver(t), m.forEach((g) => s.observe(g, a)));\n }, {\n immediate: !0,\n flush: \"post\"\n }), u = () => s?.takeRecords(), c = () => {\n i(), r();\n };\n return gn(c), {\n isSupported: l,\n stop: c,\n takeRecords: u\n };\n}\nfunction Xl(e, t, n = {}) {\n const { window: o = Re, document: a = o?.document, flush: s = \"sync\" } = n;\n if (!o || !a) return Bl;\n let l;\n const r = (c) => {\n l?.(), l = c;\n }, i = Ce(() => {\n const c = Se(e);\n if (c) {\n const { stop: m } = Wl(a, (g) => {\n g.map((p) => [...p.removedNodes]).flat().some((p) => p === c || p.contains(c)) && t(g);\n }, {\n window: o,\n childList: !0,\n subtree: !0\n });\n r(m);\n }\n }, { flush: s }), u = () => {\n i(), r();\n };\n return gn(u), u;\n}\n// @__NO_SIDE_EFFECTS__\nfunction jl(e = {}) {\n var t;\n const { window: n = Re, deep: o = !0, triggerOnRemoval: a = !1 } = e, s = (t = e.document) !== null && t !== void 0 ? t : n?.document, l = () => {\n let u = s?.activeElement;\n if (o)\n for (var c; u?.shadowRoot; ) u = u == null || (c = u.shadowRoot) === null || c === void 0 ? void 0 : c.activeElement;\n return u;\n }, r = J(), i = () => {\n r.value = l();\n };\n if (n) {\n const u = {\n capture: !0,\n passive: !0\n };\n _e(n, \"blur\", (c) => {\n c.relatedTarget === null && i();\n }, u), _e(n, \"focus\", i, u);\n }\n return a && Xl(r, i, { document: s }), i(), r;\n}\nconst ql = \"focusin\", Yl = \"focusout\", Jl = \":focus-within\";\nfunction Kl(e, t = {}) {\n const { window: n = Re } = t, o = M(() => Se(e)), a = J(!1), s = M(() => a.value);\n if (!n || !(/* @__PURE__ */ jl(t)).value) return { focused: s };\n const l = { passive: !0 };\n return _e(o, ql, () => a.value = !0, l), _e(o, Yl, () => {\n var r, i, u;\n return a.value = (r = (i = o.value) === null || i === void 0 || (u = i.matches) === null || u === void 0 ? void 0 : u.call(i, Jl)) !== null && r !== void 0 ? r : !1;\n }, l), { focused: s };\n}\nfunction Ql(e, { window: t = Re, scrollTarget: n } = {}) {\n const o = S(!1), a = () => {\n if (!t) return;\n const s = t.document, l = Se(e);\n if (!l)\n o.value = !1;\n else {\n const r = l.getBoundingClientRect();\n o.value = r.top <= (t.innerHeight || s.documentElement.clientHeight) && r.left <= (t.innerWidth || s.documentElement.clientWidth) && r.bottom >= 0 && r.right >= 0;\n }\n };\n return Y(\n () => Se(e),\n () => a(),\n { immediate: !0, flush: \"post\" }\n ), t && _e(n || t, \"scroll\", a, {\n capture: !1,\n passive: !0\n }), o;\n}\nconst ge = (e) => {\n let t = Ql(e).value;\n return t = t && e.offsetHeight > 0, t;\n}, ye = (e) => e.tabIndex >= 0, jt = (e) => {\n const t = e.target;\n return Rt(t);\n}, Rt = (e) => {\n let t;\n if (e instanceof HTMLTableCellElement) {\n const n = e.parentElement?.previousElementSibling;\n if (n) {\n const o = Array.from(n.children)[e.cellIndex];\n o && (t = o);\n }\n } else if (e instanceof HTMLTableRowElement) {\n const n = e.previousElementSibling;\n n && (t = n);\n }\n return t && (!ye(t) || !ge(t)) ? Rt(t) : t;\n}, Zl = (e) => {\n const t = e.target;\n let n;\n if (t instanceof HTMLTableCellElement) {\n const o = t.parentElement?.parentElement;\n if (o) {\n const a = o.firstElementChild?.children[t.cellIndex];\n a && (n = a);\n }\n } else if (t instanceof HTMLTableRowElement) {\n const o = t.parentElement;\n if (o) {\n const a = o.firstElementChild;\n a && (n = a);\n }\n }\n return n && (!ye(n) || !ge(n)) ? Vt(n) : n;\n}, qt = (e) => {\n const t = e.target;\n return Vt(t);\n}, Vt = (e) => {\n let t;\n if (e instanceof HTMLTableCellElement) {\n const n = e.parentElement?.nextElementSibling;\n if (n) {\n const o = Array.from(n.children)[e.cellIndex];\n o && (t = o);\n }\n } else if (e instanceof HTMLTableRowElement) {\n const n = e.nextElementSibling;\n n && (t = n);\n }\n return t && (!ye(t) || !ge(t)) ? Vt(t) : t;\n}, ea = (e) => {\n const t = e.target;\n let n;\n if (t instanceof HTMLTableCellElement) {\n const o = t.parentElement?.parentElement;\n if (o) {\n const a = o.lastElementChild?.children[t.cellIndex];\n a && (n = a);\n }\n } else if (t instanceof HTMLTableRowElement) {\n const o = t.parentElement;\n if (o) {\n const a = o.lastElementChild;\n a && (n = a);\n }\n }\n return n && (!ye(n) || !ge(n)) ? Rt(n) : n;\n}, Yt = (e) => {\n const t = e.target;\n return Pt(t);\n}, Pt = (e) => {\n let t;\n return e.previousElementSibling ? t = e.previousElementSibling : t = e.parentElement?.previousElementSibling?.lastElementChild, t && (!ye(t) || !ge(t)) ? Pt(t) : t;\n}, Jt = (e) => {\n const t = e.target;\n return Ot(t);\n}, Ot = (e) => {\n let t;\n return e.nextElementSibling ? t = e.nextElementSibling : t = e.parentElement?.nextElementSibling?.firstElementChild, t && (!ye(t) || !ge(t)) ? Ot(t) : t;\n}, Kt = (e) => {\n const t = e.target.parentElement?.firstElementChild;\n return t && (!ye(t) || !ge(t)) ? Ot(t) : t;\n}, Qt = (e) => {\n const t = e.target.parentElement?.lastElementChild;\n return t && (!ye(t) || !ge(t)) ? Pt(t) : t;\n}, Ye = [\"alt\", \"control\", \"shift\", \"meta\"], ta = {\n ArrowUp: \"up\",\n ArrowDown: \"down\",\n ArrowLeft: \"left\",\n ArrowRight: \"right\"\n}, yn = {\n \"keydown.up\": (e) => {\n const t = jt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.down\": (e) => {\n const t = qt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.left\": (e) => {\n const t = Yt(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.right\": (e) => {\n const t = Jt(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.control.up\": (e) => {\n const t = Zl(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.down\": (e) => {\n const t = ea(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.left\": (e) => {\n const t = Kt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.right\": (e) => {\n const t = Qt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.end\": (e) => {\n const t = Qt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.enter\": (e) => {\n if (e.target instanceof HTMLTableCellElement) {\n e.preventDefault(), e.stopPropagation();\n const t = qt(e);\n t && t.focus();\n }\n },\n \"keydown.shift.enter\": (e) => {\n if (e.target instanceof HTMLTableCellElement) {\n e.preventDefault(), e.stopPropagation();\n const t = jt(e);\n t && t.focus();\n }\n },\n \"keydown.home\": (e) => {\n const t = Kt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.tab\": (e) => {\n const t = Jt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.shift.tab\": (e) => {\n const t = Yt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n }\n};\nfunction na(e) {\n const t = (l) => {\n let r = null;\n return l.parent && (typeof l.parent == \"string\" ? r = document.querySelector(l.parent) : l.parent instanceof HTMLElement ? r = l.parent : r = l.parent.value), r;\n }, n = (l) => {\n const r = t(l);\n let i = [];\n if (typeof l.selectors == \"string\")\n i = Array.from(r ? r.querySelectorAll(l.selectors) : document.querySelectorAll(l.selectors));\n else if (Array.isArray(l.selectors))\n for (const u of l.selectors)\n u instanceof HTMLElement ? i.push(u) : i.push(u.$el);\n else if (l.selectors instanceof HTMLElement)\n i.push(l.selectors);\n else if (l.selectors?.value)\n if (Array.isArray(l.selectors.value))\n for (const u of l.selectors.value)\n u instanceof HTMLElement ? i.push(u) : i.push(u.$el);\n else\n i.push(l.selectors.value);\n return i;\n }, o = (l) => {\n const r = t(l);\n let i = [];\n return l.selectors ? i = n(l) : r && (i = Array.from(r.children).filter((u) => ye(u) && ge(u))), i;\n }, a = (l) => (r) => {\n const i = ta[r.key] || r.key.toLowerCase();\n if (Ye.includes(i)) return;\n const u = l.handlers || yn;\n for (const c of Object.keys(u)) {\n const [m, ...g] = c.split(\".\");\n if (m === \"keydown\" && g.includes(i)) {\n const p = u[c], D = g.filter((f) => Ye.includes(f)), w = Ye.some((f) => {\n const h = f.charAt(0).toUpperCase() + f.slice(1);\n return r.getModifierState(h);\n });\n if (D.length > 0) {\n if (w) {\n for (const f of Ye)\n if (g.includes(f)) {\n const h = f.charAt(0).toUpperCase() + f.slice(1);\n r.getModifierState(h) && p(r);\n }\n }\n } else\n w || p(r);\n }\n }\n }, s = [];\n ve(() => {\n for (const l of e) {\n const r = t(l), i = o(l), u = a(l), c = r ? [r] : i;\n for (const m of c) {\n const { focused: g } = Kl(S(m)), p = Y(g, (D) => {\n D ? m.addEventListener(\"keydown\", u) : m.removeEventListener(\"keydown\", u);\n });\n s.push(p);\n }\n }\n }), tn(() => {\n for (const l of s)\n l();\n });\n}\nconst oa = {\n ref: \"datepicker\",\n class: \"adatepicker\",\n tabindex: \"0\"\n}, la = {\n colspan: \"5\",\n tabindex: -1\n}, aa = [\"onClick\", \"onKeydown\"], ra = 6, Zt = 7, sa = /* @__PURE__ */ j({\n __name: \"ADatePicker\",\n props: {\n modelValue: { default: /* @__PURE__ */ new Date() },\n modelModifiers: {}\n },\n emits: [\"update:modelValue\"],\n setup(e, { expose: t }) {\n const n = fe(e, \"modelValue\"), o = S(new Date(n.value)), a = S(o.value.getMonth()), s = S(o.value.getFullYear()), l = S([]), r = ne(\"datepicker\");\n ve(async () => {\n i(), await tt();\n const E = document.getElementsByClassName(\"selectedDate\");\n if (E.length > 0)\n E[0].focus();\n else {\n const L = document.getElementsByClassName(\"todaysDate\");\n L.length > 0 && L[0].focus();\n }\n });\n const i = () => {\n l.value = [];\n const E = new Date(s.value, a.value, 1), L = E.getDay(), z = E.setDate(E.getDate() - L);\n for (const R of Array(43).keys())\n l.value.push(z + R * 864e5);\n };\n Y([a, s], i);\n const u = () => s.value -= 1, c = () => s.value += 1, m = () => {\n a.value == 0 ? (a.value = 11, u()) : a.value -= 1;\n }, g = () => {\n a.value == 11 ? (a.value = 0, c()) : a.value += 1;\n }, p = (E) => {\n const L = /* @__PURE__ */ new Date();\n if (a.value === L.getMonth())\n return L.toDateString() === new Date(E).toDateString();\n }, D = (E) => new Date(E).toDateString() === new Date(o.value).toDateString(), w = (E, L) => (E - 1) * Zt + L, f = (E, L) => l.value[w(E, L)], h = (E) => {\n n.value = o.value = new Date(l.value[E]);\n }, I = M(() => new Date(s.value, a.value, 1).toLocaleDateString(void 0, {\n year: \"numeric\",\n month: \"long\"\n }));\n return na([\n {\n parent: r,\n selectors: \"td\",\n handlers: {\n ...yn,\n \"keydown.pageup\": m,\n \"keydown.shift.pageup\": u,\n \"keydown.pagedown\": g,\n \"keydown.shift.pagedown\": c,\n // TODO: this is a hack to override the stonecrop enter handler;\n // store context inside the component so that handlers can be setup consistently\n \"keydown.enter\": () => {\n }\n }\n }\n ]), t({ currentMonth: a, currentYear: s, selectedDate: o }), (E, L) => (x(), k(\"div\", oa, [\n y(\"table\", null, [\n y(\"tbody\", null, [\n y(\"tr\", null, [\n y(\"td\", {\n id: \"previous-month-btn\",\n tabindex: -1,\n onClick: m\n }, \"<\"),\n y(\"th\", la, W(I.value), 1),\n y(\"td\", {\n id: \"next-month-btn\",\n tabindex: -1,\n onClick: g\n }, \">\")\n ]),\n L[0] || (L[0] = y(\"tr\", { class: \"days-header\" }, [\n y(\"td\", null, \"M\"),\n y(\"td\", null, \"T\"),\n y(\"td\", null, \"W\"),\n y(\"td\", null, \"T\"),\n y(\"td\", null, \"F\"),\n y(\"td\", null, \"S\"),\n y(\"td\", null, \"S\")\n ], -1)),\n (x(), k(te, null, ae(ra, (z) => y(\"tr\", { key: z }, [\n (x(), k(te, null, ae(Zt, (R) => y(\"td\", {\n ref_for: !0,\n ref: \"celldate\",\n key: w(z, R),\n contenteditable: !1,\n spellcheck: !1,\n tabindex: 0,\n class: ee({\n todaysDate: p(f(z, R)),\n selectedDate: D(f(z, R))\n }),\n onClick: $e((C) => h(w(z, R)), [\"prevent\", \"stop\"]),\n onKeydown: De((C) => h(w(z, R)), [\"enter\"])\n }, W(new Date(f(z, R)).getDate()), 43, aa)), 64))\n ])), 64))\n ])\n ])\n ], 512));\n }\n}), ia = /* @__PURE__ */ he(sa, [[\"__scopeId\", \"data-v-056d2b5e\"]]), ua = /* @__PURE__ */ j({\n __name: \"CollapseButton\",\n props: {\n collapsed: { type: Boolean }\n },\n setup(e) {\n return (t, n) => (x(), k(\"button\", {\n class: ee([\"collapse-button\", e.collapsed ? \"rotated\" : \"unrotated\"])\n }, \"×\", 2));\n }\n}), ca = /* @__PURE__ */ he(ua, [[\"__scopeId\", \"data-v-6f1c1b45\"]]), da = { class: \"aform\" }, fa = {\n key: 0,\n class: \"aform-nested-section\"\n}, va = {\n key: 0,\n class: \"aform-nested-label\"\n}, ma = /* @__PURE__ */ j({\n __name: \"AForm\",\n props: /* @__PURE__ */ de({\n schema: {},\n readOnly: { type: Boolean }\n }, {\n data: { required: !0 },\n dataModifiers: {}\n }),\n emits: /* @__PURE__ */ de([\"update:schema\", \"update:data\"], [\"update:data\"]),\n setup(e, { emit: t }) {\n const n = t, o = fe(e, \"data\"), a = S({});\n Ce(() => {\n !e.schema || !o.value || e.schema.forEach((i) => {\n \"schema\" in i && Array.isArray(i.schema) && i.schema.length > 0 && (!a.value[i.fieldname] && o.value[i.fieldname] ? a.value[i.fieldname] = o.value[i.fieldname] : a.value[i.fieldname] || (a.value[i.fieldname] = {}));\n });\n }), Ce(() => {\n Object.keys(a.value).forEach((i) => {\n o.value && a.value[i] !== o.value[i] && (o.value[i] = a.value[i], n(\"update:data\", o.value));\n });\n }), Ce(() => {\n o.value && e.schema && e.schema.forEach((i) => {\n i.fieldname && o.value[i.fieldname] !== void 0 && (i.value = o.value[i.fieldname]);\n });\n });\n const s = (i) => {\n const u = {};\n for (const [c, m] of Object.entries(i))\n [\"component\", \"fieldtype\"].includes(c) || (u[c] = m), c === \"rows\" && (!m || Array.isArray(m) && m.length === 0) && (u.rows = o.value[i.fieldname] || []);\n return u;\n }, l = S([]);\n Ce(() => {\n e.schema && l.value.length !== e.schema.length && (l.value = e.schema.map((i, u) => M({\n get() {\n return i.value;\n },\n set: (c) => {\n const m = e.schema[u].fieldname;\n e.schema[u].value = c, m && o.value && (o.value[m] = c, n(\"update:data\", o.value)), n(\"update:schema\", e.schema);\n }\n })));\n });\n const r = M(() => l.value);\n return (i, u) => {\n const c = an(\"AForm\", !0);\n return x(), k(\"form\", da, [\n (x(!0), k(te, null, ae(e.schema, (m, g) => (x(), k(te, { key: g }, [\n \"schema\" in m && Array.isArray(m.schema) && m.schema.length > 0 ? (x(), k(\"div\", fa, [\n m.label ? (x(), k(\"h4\", va, W(m.label), 1)) : K(\"\", !0),\n Ze(c, {\n data: a.value[m.fieldname],\n \"onUpdate:data\": (p) => a.value[m.fieldname] = p,\n schema: m.schema,\n \"read-only\": e.readOnly || m.readOnly\n }, null, 8, [\"data\", \"onUpdate:data\", \"schema\", \"read-only\"])\n ])) : (x(), re(Ae(m.component), et({\n key: 1,\n modelValue: r.value[g].value,\n \"onUpdate:modelValue\": (p) => r.value[g].value = p,\n schema: m,\n data: o.value[m.fieldname],\n \"read-only\": e.readOnly\n }, { ref_for: !0 }, s(m)), null, 16, [\"modelValue\", \"onUpdate:modelValue\", \"schema\", \"data\", \"read-only\"]))\n ], 64))), 128))\n ]);\n };\n }\n}), wn = /* @__PURE__ */ he(ma, [[\"__scopeId\", \"data-v-06e17c5b\"]]), pa = /* @__PURE__ */ j({\n __name: \"AFieldset\",\n props: {\n schema: {},\n label: {},\n collapsible: { type: Boolean },\n data: { default: () => ({}) }\n },\n setup(e, { expose: t }) {\n const n = S(!1), o = S(e.data || []), a = S(e.schema), s = (l) => {\n l.preventDefault(), e.collapsible && (n.value = !n.value);\n };\n return t({ collapsed: n }), (l, r) => (x(), k(\"fieldset\", null, [\n y(\"legend\", {\n onClick: s,\n onSubmit: s\n }, [\n Ct(W(e.label) + \" \", 1),\n e.collapsible ? (x(), re(ca, {\n key: 0,\n collapsed: n.value\n }, null, 8, [\"collapsed\"])) : K(\"\", !0)\n ], 32),\n oe(l.$slots, \"default\", { collapsed: n.value }, () => [\n U(Ze(wn, {\n schema: a.value,\n data: o.value,\n \"onUpdate:data\": r[0] || (r[0] = (i) => o.value = i)\n }, null, 8, [\"schema\", \"data\"]), [\n [be, !n.value]\n ])\n ], !0)\n ]));\n }\n}), ha = /* @__PURE__ */ he(pa, [[\"__scopeId\", \"data-v-18fd6c61\"]]), ga = { class: \"aform_form-element aform_file-attach aform__grid--full\" }, ya = {\n key: 0,\n class: \"aform_file-attach-feedback\"\n}, wa = [\"disabled\"], xa = /* @__PURE__ */ j({\n __name: \"AFileAttach\",\n props: {\n label: {}\n },\n setup(e) {\n const { files: t, open: n, reset: o, onChange: a } = Tl(), s = M(() => `${t.value.length} ${t.value.length === 1 ? \"file\" : \"files\"}`);\n return a((l) => l), (l, r) => (x(), k(\"div\", ga, [\n $(t) ? (x(), k(\"div\", ya, [\n y(\"p\", null, [\n r[2] || (r[2] = Ct(\" You have selected: \", -1)),\n y(\"b\", null, W(s.value), 1)\n ]),\n (x(!0), k(te, null, ae($(t), (i) => (x(), k(\"li\", {\n key: i.name\n }, W(i.name), 1))), 128))\n ])) : K(\"\", !0),\n y(\"button\", {\n type: \"button\",\n class: \"aform_form-btn\",\n onClick: r[0] || (r[0] = (i) => $(n)())\n }, W(e.label), 1),\n y(\"button\", {\n type: \"button\",\n disabled: !$(t),\n class: \"aform_form-btn\",\n onClick: r[1] || (r[1] = (i) => $(o)())\n }, \"Reset\", 8, wa)\n ]));\n }\n}), ba = /* @__PURE__ */ he(xa, [[\"__scopeId\", \"data-v-b700734f\"]]), Ia = { class: \"aform_form-element\" }, ka = [\"id\", \"disabled\", \"required\"], Ca = [\"for\"], Ea = [\"innerHTML\"], Da = /* @__PURE__ */ j({\n __name: \"ANumericInput\",\n props: /* @__PURE__ */ de({\n schema: {},\n label: {},\n mask: {},\n required: { type: Boolean },\n readOnly: { type: Boolean },\n uuid: {},\n validation: { default: () => ({ errorMessage: \" \" }) }\n }, {\n modelValue: {},\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = fe(e, \"modelValue\");\n return (n, o) => (x(), k(\"div\", Ia, [\n U(y(\"input\", {\n id: e.uuid,\n \"onUpdate:modelValue\": o[0] || (o[0] = (a) => t.value = a),\n class: \"aform_input-field\",\n type: \"number\",\n disabled: e.readOnly,\n required: e.required\n }, null, 8, ka), [\n [se, t.value]\n ]),\n y(\"label\", {\n class: \"aform_field-label\",\n for: e.uuid\n }, W(e.label), 9, Ca),\n U(y(\"p\", {\n class: \"aform_error\",\n innerHTML: e.validation.errorMessage\n }, null, 8, Ea), [\n [be, e.validation.errorMessage]\n ])\n ]));\n }\n}), en = {\n date: \"##/##/####\",\n datetime: \"####/##/## ##:##\",\n time: \"##:##\",\n fulltime: \"##:##:##\",\n phone: \"(###) ### - ####\",\n card: \"#### #### #### ####\"\n};\nfunction Ta(e) {\n try {\n return Function(`\"use strict\";return (${e})`)();\n } catch {\n }\n}\nfunction Aa(e) {\n let t = e.value;\n if (t) {\n const n = Ta(t);\n if (n) {\n const o = e.instance?.locale;\n t = n(o);\n }\n } else {\n const o = e.instance?.schema?.fieldtype?.toLowerCase();\n o && en[o] && (t = en[o]);\n }\n return t;\n}\nfunction $a(e, t) {\n let n = e;\n const o = [t, \"/\", \"-\", \"(\", \")\", \" \"];\n for (const a of o)\n n = n.replaceAll(a, \"\");\n return n;\n}\nfunction Ma(e, t, n) {\n let o = t;\n for (const a of e) {\n const s = o.indexOf(n);\n if (s !== -1) {\n const l = o.substring(0, s), r = o.substring(s + 1);\n o = l + a + r;\n }\n }\n return o.slice(0, t.length);\n}\nfunction Sa(e, t) {\n const n = Aa(t);\n if (!n) return;\n const o = \"#\", a = e.value, s = $a(a, o);\n if (s) {\n const l = Ma(s, n, o);\n t.instance?.maskFilled && (t.instance.maskFilled = !l.includes(o)), e.value = l;\n } else\n e.value = n;\n}\nconst La = { class: \"aform_form-element\" }, Ra = [\"id\", \"disabled\", \"maxlength\", \"required\"], Va = [\"for\"], Pa = [\"innerHTML\"], Oa = /* @__PURE__ */ j({\n __name: \"ATextInput\",\n props: /* @__PURE__ */ de({\n schema: {},\n label: {},\n mask: {},\n required: { type: Boolean },\n readOnly: { type: Boolean },\n uuid: {},\n validation: { default: () => ({ errorMessage: \" \" }) }\n }, {\n modelValue: {},\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = S(!0), n = fe(e, \"modelValue\");\n return (o, a) => (x(), k(\"div\", La, [\n U(y(\"input\", {\n id: e.uuid,\n \"onUpdate:modelValue\": a[0] || (a[0] = (s) => n.value = s),\n class: \"aform_input-field\",\n disabled: e.readOnly,\n maxlength: e.mask && t.value ? e.mask.length : void 0,\n required: e.required\n }, null, 8, Ra), [\n [se, n.value],\n [$(Sa), e.mask]\n ]),\n y(\"label\", {\n class: \"aform_field-label\",\n for: e.uuid\n }, W(e.label), 9, Va),\n U(y(\"p\", {\n class: \"aform_error\",\n innerHTML: e.validation.errorMessage\n }, null, 8, Pa), [\n [be, e.validation.errorMessage]\n ])\n ]));\n }\n}), _a = { class: \"login-container\" }, Ha = { class: \"account-container\" }, Fa = { class: \"account-header\" }, Na = { id: \"account-title\" }, Ba = { id: \"account-subtitle\" }, Ga = { class: \"login-form-container\" }, Ua = { class: \"login-form-email aform_form-element\" }, za = [\"disabled\"], Wa = { class: \"login-form-password aform_form-element\" }, Xa = [\"disabled\"], ja = [\"disabled\"], qa = {\n key: 0,\n class: \"material-symbols-outlined loading-icon\"\n}, Ya = /* @__PURE__ */ j({\n __name: \"Login\",\n props: {\n headerTitle: { default: \"Login\" },\n headerSubtitle: { default: \"Enter your email and password to login\" }\n },\n emits: [\"loginFailed\", \"loginSuccess\"],\n setup(e, { emit: t }) {\n const n = t, o = S(\"\"), a = S(\"\"), s = S(!1), l = S(!1);\n function r(i) {\n if (i.preventDefault(), s.value = !0, l.value) {\n s.value = !1, n(\"loginFailed\");\n return;\n }\n s.value = !1, n(\"loginSuccess\");\n }\n return (i, u) => (x(), k(\"div\", _a, [\n y(\"div\", null, [\n y(\"div\", Ha, [\n y(\"div\", Fa, [\n y(\"h1\", Na, W(e.headerTitle), 1),\n y(\"p\", Ba, W(e.headerSubtitle), 1)\n ]),\n y(\"form\", { onSubmit: r }, [\n y(\"div\", Ga, [\n y(\"div\", Ua, [\n u[2] || (u[2] = y(\"label\", {\n id: \"login-email\",\n for: \"email\",\n class: \"aform_field-label\"\n }, \"Email\", -1)),\n U(y(\"input\", {\n id: \"email\",\n \"onUpdate:modelValue\": u[0] || (u[0] = (c) => o.value = c),\n class: \"aform_input-field\",\n name: \"email\",\n placeholder: \"name@example.com\",\n type: \"email\",\n \"auto-capitalize\": \"none\",\n \"auto-complete\": \"email\",\n \"auto-correct\": \"off\",\n disabled: s.value\n }, null, 8, za), [\n [se, o.value]\n ])\n ]),\n y(\"div\", Wa, [\n u[3] || (u[3] = y(\"label\", {\n id: \"login-password\",\n for: \"password\",\n class: \"aform_field-label\"\n }, \"Password\", -1)),\n U(y(\"input\", {\n id: \"password\",\n \"onUpdate:modelValue\": u[1] || (u[1] = (c) => a.value = c),\n class: \"aform_input-field\",\n name: \"password\",\n type: \"password\",\n disabled: s.value\n }, null, 8, Xa), [\n [se, a.value]\n ])\n ]),\n y(\"button\", {\n class: \"btn\",\n disabled: s.value || !o.value || !a.value,\n onClick: r\n }, [\n s.value ? (x(), k(\"span\", qa, \"progress_activity\")) : K(\"\", !0),\n u[4] || (u[4] = y(\"span\", { id: \"login-form-button\" }, \"Login\", -1))\n ], 8, ja)\n ])\n ], 32),\n u[5] || (u[5] = y(\"button\", { class: \"btn\" }, [\n y(\"span\", { id: \"forgot-password-button\" }, \"Forgot password?\")\n ], -1))\n ])\n ])\n ]));\n }\n}), Qa = /* @__PURE__ */ he(Ya, [[\"__scopeId\", \"data-v-d9ffd0a7\"]]);\nfunction Za(e) {\n e.use(al), e.component(\"ACheckbox\", fl), e.component(\"ACombobox\", vl), e.component(\"ADate\", yl), e.component(\"ADropdown\", Ol), e.component(\"ADatePicker\", ia), e.component(\"AFieldset\", ha), e.component(\"AFileAttach\", ba), e.component(\"AForm\", wn), e.component(\"ANumericInput\", Da), e.component(\"ATextInput\", Oa);\n}\nexport {\n fl as ACheckbox,\n vl as AComboBox,\n yl as ADate,\n ia as ADatePicker,\n Ol as ADropdown,\n ha as AFieldset,\n ba as AFileAttach,\n wn as AForm,\n Da as ANumericInput,\n Oa as ATextInput,\n Qa as Login,\n Za as install\n};\n//# sourceMappingURL=aform.js.map\n","<template>\n\t<footer>\n\t\t<ul class=\"tabs\">\n\t\t\t<li class=\"hidebreadcrumbs\" @click=\"toggleBreadcrumbs\" @keydown.enter=\"toggleBreadcrumbs\">\n\t\t\t\t<a tabindex=\"0\"><div :class=\"rotateHideTabIcon\">×</div></a>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\tclass=\"hometab\"\n\t\t\t\t:style=\"{ display: breadcrumbsVisibile ? 'block' : 'none' }\"\n\t\t\t\t@click=\"navigateHome\"\n\t\t\t\t@keydown.enter=\"navigateHome\">\n\t\t\t\t<router-link to=\"/\" tabindex=\"0\">\n\t\t\t\t\t<svg class=\"icon\" aria-label=\"Home\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n\t\t\t\t\t\t<path d=\"M3 12l9-9 9 9\" />\n\t\t\t\t\t\t<path d=\"M9 21V12h6v9\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</router-link>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\t:class=\"['searchtab', { 'search-active': searchVisible }]\"\n\t\t\t\t:style=\"{ display: breadcrumbsVisibile ? 'block' : 'none' }\">\n\t\t\t\t<a tabindex=\"0\">\n\t\t\t\t\t<svg\n\t\t\t\t\t\tv-show=\"!searchVisible\"\n\t\t\t\t\t\tclass=\"icon search-icon\"\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\taria-label=\"Search\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t@click=\"toggleSearch\"\n\t\t\t\t\t\t@keydown.enter=\"toggleSearch\">\n\t\t\t\t\t\t<circle cx=\"11\" cy=\"11\" r=\"7\" />\n\t\t\t\t\t\t<path d=\"M21 21l-4.35-4.35\" />\n\t\t\t\t\t</svg>\n\t\t\t\t\t<input\n\t\t\t\t\t\tv-show=\"searchVisible\"\n\t\t\t\t\t\tref=\"searchinput\"\n\t\t\t\t\t\tv-model=\"searchText\"\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t@click.stop\n\t\t\t\t\t\t@input=\"handleSearchInput($event)\"\n\t\t\t\t\t\t@blur=\"handleSearch($event)\"\n\t\t\t\t\t\t@keydown.enter=\"handleSearch($event)\"\n\t\t\t\t\t\t@keydown.escape=\"toggleSearch\" />\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\tv-for=\"breadcrumb in breadcrumbs\"\n\t\t\t\t:key=\"breadcrumb.title\"\n\t\t\t\t:style=\"{ display: breadcrumbsVisibile ? 'block' : 'none' }\">\n\t\t\t\t<router-link tabindex=\"0\" :to=\"breadcrumb.to\"> {{ breadcrumb.title }} </router-link>\n\t\t\t</li>\n\t\t</ul>\n\t</footer>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, ref, useTemplateRef } from 'vue'\n\nconst { breadcrumbs = [] } = defineProps<{ breadcrumbs?: { title: string; to: string }[] }>()\n\nconst breadcrumbsVisibile = ref(true)\nconst searchVisible = ref(false)\nconst searchText = ref('')\nconst inputRef = useTemplateRef<HTMLInputElement>('searchinput')\n\nconst rotateHideTabIcon = computed(() => {\n\treturn breadcrumbsVisibile.value ? 'unrotated' : 'rotated'\n})\n\nconst toggleBreadcrumbs = () => {\n\tbreadcrumbsVisibile.value = !breadcrumbsVisibile.value\n}\n\nconst toggleSearch = async () => {\n\tsearchVisible.value = !searchVisible.value\n\tawait nextTick(() => {\n\t\tinputRef.value?.focus()\n\t})\n}\n\nconst handleSearchInput = (event: Event | MouseEvent) => {\n\tevent.preventDefault()\n\tevent.stopPropagation()\n}\n\nconst handleSearch = async (event: FocusEvent | KeyboardEvent) => {\n\tevent.preventDefault()\n\tevent.stopPropagation()\n\tawait toggleSearch()\n}\n\nconst navigateHome = (/* event: MouseEvent | KeyboardEvent */) => {\n\t// navigate home\n}\n</script>\n\n<style scoped>\nfooter {\n\tposition: fixed;\n\tbottom: 0px;\n\twidth: 100%;\n\tbackground-color: transparent;\n\theight: auto;\n\tmin-height: 2.4rem;\n\tz-index: 100;\n\ttext-align: left;\n\tfont-size: 100%;\n\tdisplay: flex;\n\tjustify-content: right;\n\tpadding: 0 0.75rem 0 0;\n\tbox-sizing: border-box;\n}\nul {\n\tdisplay: flex;\n\tflex-direction: row-reverse;\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n}\n\n.tabs li {\n\tfloat: left;\n\tlist-style-type: none;\n\tposition: relative;\n\tmargin-left: -1px;\n}\n\n/* Base tab styling */\n.tabs a {\n\tfloat: left;\n\tpadding: 0.5rem 1rem;\n\theight: 2.4rem;\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttext-decoration: none;\n\tcolor: var(--sc-gray-60, #666);\n\tbackground: var(--sc-btn-color, #ffffff);\n\tborder: 1px solid var(--sc-btn-border, #ccc);\n\tfont-size: 0.85rem;\n\tfont-family: var(--sc-font-family, system-ui, sans-serif);\n\ttransition: all 0.15s ease;\n\n\t/* Minimal ornamentation - subtle top radius only */\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n}\n\n.tabs a:hover {\n\tbackground: var(--sc-btn-hover, #f2f2f2);\n}\n\n.tabs .router-link-active {\n\tz-index: 3;\n\tbackground: var(--sc-primary-color, #827553) !important;\n\tborder-color: var(--sc-primary-color, #827553) !important;\n\tcolor: var(--sc-primary-text-color, #fff) !important;\n}\n\n/* Pseudo-elements removed - minimal ornamentation style */\n\n/* Hide breadcrumbs tab */\n.hidebreadcrumbs a {\n\tmin-width: 2.4rem;\n\twidth: 2.4rem;\n\theight: 2.4rem;\n\tpadding: 0.5rem;\n\tbackground: var(--sc-btn-color, #ffffff);\n\tborder: 1px solid var(--sc-btn-border, #ccc);\n\tcolor: var(--sc-gray-60, #666);\n}\n\n.hidebreadcrumbs a div {\n\tfont-size: 1.2rem;\n}\n\n.rotated {\n\ttransform: rotate(45deg);\n\t-webkit-transform: rotate(45deg);\n\t-moz-transform: rotate(45deg);\n\t-ms-transform: rotate(45deg);\n\t-o-transform: rotate(45deg);\n\ttransition: transform 250ms ease;\n}\n.unrotated {\n\ttransform: rotate(0deg);\n\t-webkit-transform: rotate(0deg);\n\t-moz-transform: rotate(0deg);\n\t-ms-transform: rotate(0deg);\n\t-o-transform: rotate(0deg);\n\ttransition: transform 250ms ease;\n}\n\nli:active,\nli:hover,\nli:focus,\nli > a:active,\nli > a:hover,\nli > a:focus {\n\tz-index: 3;\n}\n\na:active,\na:hover,\na:focus {\n\toutline: 2px solid var(--sc-input-active-border-color, black);\n\tz-index: 3;\n}\n\n/* Home tab */\n.hometab a {\n\tmin-width: 2.4rem;\n\twidth: 2.4rem;\n\theight: 2.4rem;\n\tpadding: 0.5rem;\n\tbackground: var(--sc-btn-color, #ffffff);\n\tborder: 1px solid var(--sc-btn-border, #ccc);\n\tcolor: var(--sc-gray-60, #666);\n}\n\n/* SVG icon styling */\n.icon {\n\twidth: 1rem;\n\theight: 1rem;\n\tstroke: currentColor;\n\tflex-shrink: 0;\n}\n\n/* Search tab with animation */\n.searchtab {\n\toverflow: hidden;\n}\n\n.searchtab a {\n\tmin-width: 2.4rem;\n\theight: 2.4rem;\n\tpadding: 0.5rem;\n\tbackground: var(--sc-btn-color, #ffffff);\n\tborder: 1px solid var(--sc-btn-border, #ccc);\n\tcolor: var(--sc-gray-60, #666);\n\toverflow: hidden;\n\t/* Animation for smooth expand/collapse */\n\tmax-width: 2.4rem;\n\ttransition: max-width 0.35s ease-in-out, padding 0.35s ease-in-out, background 0.2s ease;\n}\n\n.searchtab .search-icon {\n\tcursor: pointer;\n}\n\n.searchtab input {\n\toutline: none;\n\tborder: 1px solid var(--sc-input-border-color, #ccc);\n\tborder-radius: 0.25rem;\n\tbackground-color: var(--sc-form-background, #ffffff);\n\tcolor: var(--sc-gray-80, #333);\n\ttext-align: left;\n\tfont-size: 0.875rem;\n\tpadding: 0.25rem 0.5rem;\n\twidth: 180px;\n\theight: 1.5rem;\n\tflex-shrink: 0;\n\topacity: 0;\n\ttransition: opacity 0.2s ease-in-out;\n\ttransition-delay: 0s;\n}\n\n.searchtab input:focus {\n\tborder-color: var(--sc-input-active-border-color, #4f46e5);\n\toutline: none;\n}\n\n.searchtab input::placeholder {\n\tcolor: var(--sc-input-label-color, #999);\n}\n\n/* Search active state - expanded with animation */\n.searchtab.search-active a {\n\tmax-width: 200px;\n\tmin-width: auto;\n\twidth: auto;\n\tpadding: 0.5rem 0.75rem;\n}\n\n.searchtab.search-active input {\n\topacity: 1;\n\ttransition-delay: 0.15s;\n}\n</style>\n","<template>\n\t<div class=\"desktop\" @click=\"handleClick\">\n\t\t<!-- Action Set -->\n\t\t<ActionSet :elements=\"actionElements\" @action-click=\"handleActionClick\" />\n\n\t\t<!-- Main content using AForm -->\n\t\t<AForm v-if=\"writableSchema.length > 0\" v-model=\"writableSchema\" :data=\"currentViewData\" />\n\t\t<div v-else-if=\"!stonecrop\" class=\"loading\"><p>Initializing Stonecrop...</p></div>\n\t\t<div v-else class=\"loading\">\n\t\t\t<p>Loading {{ currentView }} data...</p>\n\t\t</div>\n\n\t\t<!-- Sheet Navigation -->\n\t\t<SheetNav :breadcrumbs=\"navigationBreadcrumbs\" />\n\n\t\t<!-- Command Palette -->\n\t\t<CommandPalette\n\t\t\t:is-open=\"commandPaletteOpen\"\n\t\t\t:search=\"searchCommands\"\n\t\t\tplaceholder=\"Type a command or search...\"\n\t\t\t@select=\"executeCommand\"\n\t\t\t@close=\"commandPaletteOpen = false\">\n\t\t\t<template #title=\"{ result }\">\n\t\t\t\t{{ result.title }}\n\t\t\t</template>\n\t\t\t<template #content=\"{ result }\">\n\t\t\t\t{{ result.description }}\n\t\t\t</template>\n\t\t</CommandPalette>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useStonecrop } from '@stonecrop/stonecrop'\nimport { AForm, type SchemaTypes, type TableColumn, type TableConfig } from '@stonecrop/aform'\nimport { computed, nextTick, onMounted, provide, ref, unref, watch } from 'vue'\n\nimport ActionSet from './ActionSet.vue'\nimport SheetNav from './SheetNav.vue'\nimport CommandPalette from './CommandPalette.vue'\nimport type { ActionElements } from '../types'\n\nconst { availableDoctypes = [] } = defineProps<{ availableDoctypes?: string[] }>()\n\nconst { stonecrop } = useStonecrop()\n\n// State\nconst loading = ref(false)\nconst saving = ref(false)\nconst commandPaletteOpen = ref(false)\n\n// HST-based form data management - field triggers are handled automatically by HST\n\n// Computed property that reads from HST store for reactive form data\nconst currentViewData = computed<Record<string, any>>({\n\tget() {\n\t\tif (!stonecrop.value || !currentDoctype.value || !currentRecordId.value) {\n\t\t\treturn {}\n\t\t}\n\n\t\ttry {\n\t\t\tconst record = stonecrop.value.getRecordById(currentDoctype.value, currentRecordId.value)\n\t\t\treturn record?.get('') || {}\n\t\t} catch {\n\t\t\treturn {}\n\t\t}\n\t},\n\tset(newData: Record<string, any>) {\n\t\tif (!stonecrop.value || !currentDoctype.value || !currentRecordId.value) {\n\t\t\treturn\n\t\t}\n\n\t\ttry {\n\t\t\t// Update each field in HST, which will automatically trigger field actions\n\t\t\tconst hstStore = stonecrop.value.getStore()\n\t\t\tfor (const [fieldname, value] of Object.entries(newData)) {\n\t\t\t\tconst fieldPath = `${currentDoctype.value}.${currentRecordId.value}.${fieldname}`\n\t\t\t\thstStore.set(fieldPath, value)\n\t\t\t}\n\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('HST update failed:', error)\n\t\t}\n\t},\n})\n\n// HST-based form data management - field triggers are handled automatically by HST\n\n// Computed properties for current route context\nconst route = computed(() => unref(stonecrop.value?.registry.router?.currentRoute))\nconst router = computed(() => stonecrop.value?.registry.router)\nconst currentDoctype = computed(() => {\n\tif (!route.value) return ''\n\n\t// First check if we have actualDoctype in meta (from registered routes)\n\tif (route.value.meta?.actualDoctype) {\n\t\treturn route.value.meta.actualDoctype as string\n\t}\n\n\t// For named routes, use params.doctype\n\tif (route.value.params.doctype) {\n\t\treturn route.value.params.doctype as string\n\t}\n\n\t// For catch-all routes that haven't been registered yet, extract from path\n\tconst pathMatch = route.value.params.pathMatch as string[] | undefined\n\tif (pathMatch && pathMatch.length > 0) {\n\t\treturn pathMatch[0]\n\t}\n\n\treturn ''\n})\n\n// The route doctype for display and navigation (e.g., 'todo')\nconst routeDoctype = computed(() => {\n\tif (!route.value) return ''\n\n\t// Check route meta first\n\tif (route.value.meta?.doctype) {\n\t\treturn route.value.meta.doctype as string\n\t}\n\n\t// For named routes, use params.doctype\n\tif (route.value.params.doctype) {\n\t\treturn route.value.params.doctype as string\n\t}\n\n\t// For catch-all routes, extract from path\n\tconst pathMatch = route.value.params.pathMatch as string[] | undefined\n\tif (pathMatch && pathMatch.length > 0) {\n\t\treturn pathMatch[0]\n\t}\n\n\treturn ''\n})\n\nconst currentRecordId = computed(() => {\n\tif (!route.value) return ''\n\n\t// For named routes, use params.recordId\n\tif (route.value.params.recordId) {\n\t\treturn route.value.params.recordId as string\n\t}\n\n\t// For catch-all routes that haven't been registered yet, extract from path\n\tconst pathMatch = route.value.params.pathMatch as string[] | undefined\n\tif (pathMatch && pathMatch.length > 1) {\n\t\treturn pathMatch[1]\n\t}\n\n\treturn ''\n})\nconst isNewRecord = computed(() => currentRecordId.value?.startsWith('new-'))\n\n// Determine current view based on route\nconst currentView = computed(() => {\n\tif (!route.value) {\n\t\treturn 'doctypes'\n\t}\n\n\t// Home route\n\tif (route.value.name === 'home' || route.value.path === '/') {\n\t\treturn 'doctypes'\n\t}\n\n\t// Named routes from registered doctypes\n\tif (route.value.name && route.value.name !== 'catch-all') {\n\t\tconst routeName = route.value.name as string\n\t\tif (routeName.includes('form') || route.value.params.recordId) {\n\t\t\treturn 'record'\n\t\t} else if (routeName.includes('list') || route.value.params.doctype) {\n\t\t\treturn 'records'\n\t\t}\n\t}\n\n\t// Catch-all route - determine from path structure\n\tconst pathMatch = route.value.params.pathMatch as string[] | undefined\n\tif (pathMatch && pathMatch.length > 0) {\n\t\tconst view = pathMatch.length === 1 ? 'records' : 'record'\n\t\treturn view\n\t}\n\n\treturn 'doctypes'\n})\n\n// Computed properties (now that all helper functions are defined)\n// Helper function to get available transitions for current record\nconst getAvailableTransitions = () => {\n\tif (!stonecrop.value || !currentDoctype.value || !currentRecordId.value) {\n\t\treturn []\n\t}\n\n\ttry {\n\t\tconst registry = stonecrop.value.registry\n\t\tconst meta = registry.registry[currentDoctype.value]\n\n\t\tif (!meta?.workflow?.states) {\n\t\t\treturn []\n\t\t}\n\n\t\t// Get current FSM state (for now, use workflow initial state or 'editing')\n\t\t// In a full implementation, this would track actual FSM state\n\t\tconst currentState = isNewRecord.value ? 'creating' : 'editing'\n\t\tconst stateConfig = meta.workflow.states[currentState]\n\n\t\tif (!stateConfig?.on) {\n\t\t\treturn []\n\t\t}\n\n\t\t// Get available transitions from current state\n\t\tconst transitions = Object.keys(stateConfig.on)\n\n\t\t// Create action elements for each transition\n\t\tconst actionElements = transitions.map(transition => {\n\t\t\tconst targetState = stateConfig.on?.[transition]\n\t\t\tconst targetStateName = typeof targetState === 'string' ? targetState : 'unknown'\n\n\t\t\tconst actionFn = async () => {\n\t\t\t\tconst node = stonecrop.value?.getRecordById(currentDoctype.value, currentRecordId.value)\n\t\t\t\tif (node) {\n\t\t\t\t\tconst recordData = currentViewData.value || {}\n\t\t\t\t\tawait node.triggerTransition(transition, {\n\t\t\t\t\t\tcurrentState,\n\t\t\t\t\t\ttargetState: targetStateName,\n\t\t\t\t\t\tfsmContext: recordData,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst element = {\n\t\t\t\tlabel: `${transition} (→ ${targetStateName})`,\n\t\t\t\taction: actionFn,\n\t\t\t}\n\n\t\t\treturn element\n\t\t})\n\n\t\treturn actionElements\n\t} catch (error) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn('Error getting available transitions:', error)\n\t\treturn []\n\t}\n}\n\n// New component reactive properties// New component reactive properties\nconst actionElements = computed<ActionElements[]>(() => {\n\tconst elements: ActionElements[] = []\n\n\tswitch (currentView.value) {\n\t\tcase 'doctypes':\n\t\t\telements.push({\n\t\t\t\ttype: 'button',\n\t\t\t\tlabel: 'Refresh',\n\t\t\t\taction: () => {\n\t\t\t\t\t// Refresh doctypes\n\t\t\t\t\twindow.location.reload()\n\t\t\t\t},\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'records':\n\t\t\telements.push(\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tlabel: 'New Record',\n\t\t\t\t\taction: () => void createNewRecord(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tlabel: 'Refresh',\n\t\t\t\t\taction: () => {\n\t\t\t\t\t\t// Refresh records\n\t\t\t\t\t\twindow.location.reload()\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t)\n\t\t\tbreak\n\t\tcase 'record': {\n\t\t\t// Add XState Transitions dropdown for record view\n\t\t\tconst transitionActions = getAvailableTransitions()\n\t\t\tif (transitionActions.length > 0) {\n\t\t\t\telements.push({\n\t\t\t\t\ttype: 'dropdown',\n\t\t\t\t\tlabel: 'Actions',\n\t\t\t\t\tactions: transitionActions,\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn elements\n})\n\nconst navigationBreadcrumbs = computed(() => {\n\tconst breadcrumbs: { title: string; to: string }[] = []\n\n\tif (currentView.value === 'records' && routeDoctype.value) {\n\t\tbreadcrumbs.push(\n\t\t\t{ title: 'Home', to: '/' },\n\t\t\t{ title: formatDoctypeName(routeDoctype.value), to: `/${routeDoctype.value}` }\n\t\t)\n\t} else if (currentView.value === 'record' && routeDoctype.value) {\n\t\tbreadcrumbs.push(\n\t\t\t{ title: 'Home', to: '/' },\n\t\t\t{ title: formatDoctypeName(routeDoctype.value), to: `/${routeDoctype.value}` },\n\t\t\t{ title: isNewRecord.value ? 'New Record' : 'Edit Record', to: route.value?.fullPath || '' }\n\t\t)\n\t}\n\n\treturn breadcrumbs\n})\n\n// Command palette functionality\ntype Command = {\n\ttitle: string\n\tdescription: string\n\taction: () => void\n}\n\nconst searchCommands = (query: string): Command[] => {\n\tconst commands: Command[] = [\n\t\t{\n\t\t\ttitle: 'Go Home',\n\t\t\tdescription: 'Navigate to the home page',\n\t\t\taction: () => void router.value?.push('/'),\n\t\t},\n\t\t{\n\t\t\ttitle: 'Toggle Command Palette',\n\t\t\tdescription: 'Open/close the command palette',\n\t\t\taction: () => (commandPaletteOpen.value = !commandPaletteOpen.value),\n\t\t},\n\t]\n\n\t// Add doctype-specific commands\n\tif (routeDoctype.value) {\n\t\tcommands.push({\n\t\t\ttitle: `View ${formatDoctypeName(routeDoctype.value)} Records`,\n\t\t\tdescription: `Navigate to ${routeDoctype.value} list`,\n\t\t\taction: () => void router.value?.push(`/${routeDoctype.value}`),\n\t\t})\n\n\t\tcommands.push({\n\t\t\ttitle: `Create New ${formatDoctypeName(routeDoctype.value)}`,\n\t\t\tdescription: `Create a new ${routeDoctype.value} record`,\n\t\t\taction: () => void createNewRecord(),\n\t\t})\n\t}\n\n\t// Add available doctypes as commands\n\tavailableDoctypes.forEach(doctype => {\n\t\tcommands.push({\n\t\t\ttitle: `View ${formatDoctypeName(doctype)}`,\n\t\t\tdescription: `Navigate to ${doctype} list`,\n\t\t\taction: () => void router.value?.push(`/${doctype}`),\n\t\t})\n\t})\n\n\t// Filter commands based on query\n\tif (!query) return commands\n\n\treturn commands.filter(\n\t\tcmd =>\n\t\t\tcmd.title.toLowerCase().includes(query.toLowerCase()) ||\n\t\t\tcmd.description.toLowerCase().includes(query.toLowerCase())\n\t)\n}\n\nconst executeCommand = (command: Command) => {\n\tcommand.action()\n\tcommandPaletteOpen.value = false\n}\n\n// Helper functions - moved here to avoid \"before initialization\" errors\nconst formatDoctypeName = (doctype: string): string => {\n\treturn doctype\n\t\t.split('-')\n\t\t.map(word => word.charAt(0).toUpperCase() + word.slice(1))\n\t\t.join(' ')\n}\n\nconst getRecordCount = (doctype: string): number => {\n\tif (!stonecrop.value) return 0\n\tconst recordIds = stonecrop.value.getRecordIds(doctype)\n\treturn recordIds.length\n}\n\nconst navigateToDoctype = async (doctype: string) => {\n\tawait router.value?.push(`/${doctype}`)\n}\n\nconst openRecord = async (recordId: string) => {\n\tawait router.value?.push(`/${routeDoctype.value}/${recordId}`)\n}\n\nconst createNewRecord = async () => {\n\tconst newId = `new-${Date.now()}`\n\tawait router.value?.push(`/${routeDoctype.value}/${newId}`)\n}\n\n// Doctype metadata loader - simplified since router handles most of this\nconst loadDoctypeMetadata = (doctype: string) => {\n\tif (!stonecrop.value) return\n\n\t// Ensure the doctype structure exists in HST\n\t// The router should have already loaded the metadata, but this ensures the HST structure exists\n\ttry {\n\t\tstonecrop.value.records(doctype)\n\t} catch (error) {\n\t\t// Silent error handling - structure will be created if needed\n\t}\n}\n\n// Schema generator functions - moved here to be available to computed properties\nconst getDoctypesSchema = (): SchemaTypes[] => {\n\tif (!availableDoctypes.length) return []\n\n\tconst rows = availableDoctypes.map(doctype => ({\n\t\tid: doctype,\n\t\tdoctype,\n\t\tdisplay_name: formatDoctypeName(doctype),\n\t\trecord_count: getRecordCount(doctype),\n\t\tactions: 'View Records',\n\t}))\n\n\treturn [\n\t\t{\n\t\t\tfieldname: 'header',\n\t\t\tcomponent: 'div',\n\t\t\tvalue: `\n\t\t\t\t<div class=\"view-header\">\n\t\t\t\t\t<h1>Available Doctypes</h1>\n\t\t\t\t</div>\n\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tfieldname: 'doctypes_table',\n\t\t\tcomponent: 'ATable',\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Doctype',\n\t\t\t\t\tname: 'doctype',\n\t\t\t\t\tfieldtype: 'Data',\n\t\t\t\t\talign: 'left',\n\t\t\t\t\tedit: false,\n\t\t\t\t\twidth: '20ch',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Name',\n\t\t\t\t\tname: 'display_name',\n\t\t\t\t\tfieldtype: 'Data',\n\t\t\t\t\talign: 'left',\n\t\t\t\t\tedit: false,\n\t\t\t\t\twidth: '30ch',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Records',\n\t\t\t\t\tname: 'record_count',\n\t\t\t\t\tfieldtype: 'Int',\n\t\t\t\t\talign: 'center',\n\t\t\t\t\tedit: false,\n\t\t\t\t\twidth: '15ch',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Actions',\n\t\t\t\t\tname: 'actions',\n\t\t\t\t\tfieldtype: 'Data',\n\t\t\t\t\talign: 'center',\n\t\t\t\t\tedit: false,\n\t\t\t\t\twidth: '20ch',\n\t\t\t\t},\n\t\t\t] as TableColumn[],\n\t\t\tconfig: {\n\t\t\t\tview: 'list',\n\t\t\t\tfullWidth: true,\n\t\t\t} as TableConfig,\n\t\t\trows,\n\t\t},\n\t]\n}\n\nconst getRecordsSchema = (): SchemaTypes[] => {\n\tif (!currentDoctype.value) return []\n\tif (!stonecrop.value) return []\n\n\tconst records = getRecords()\n\tconst columns = getColumns()\n\n\t// If no columns are available, show a loading or empty state\n\tif (columns.length === 0) {\n\t\treturn [\n\t\t\t{\n\t\t\t\tfieldname: 'header',\n\t\t\t\tcomponent: 'div',\n\t\t\t\tvalue: `\n\t\t\t\t\t<div class=\"view-header\">\n\t\t\t\t\t\t<nav class=\"breadcrumbs\">\n\t\t\t\t\t\t\t<a href=\"/\">Home</a>\n\t\t\t\t\t\t\t<span class=\"separator\">/</span>\n\t\t\t\t\t\t\t<span class=\"current\">${formatDoctypeName(routeDoctype.value || currentDoctype.value)}</span>\n\t\t\t\t\t\t</nav>\n\t\t\t\t\t\t<h1>${formatDoctypeName(routeDoctype.value || currentDoctype.value)} Records</h1>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tfieldname: 'loading',\n\t\t\t\tcomponent: 'div',\n\t\t\t\tvalue: `\n\t\t\t\t\t<div class=\"loading-state\">\n\t\t\t\t\t\t<p>Loading ${formatDoctypeName(routeDoctype.value || currentDoctype.value)} schema...</p>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t]\n\t}\n\n\tconst rows = records.map((record: any) => ({\n\t\t...record,\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\tid: record.id || '',\n\t\tactions: 'Edit | Delete',\n\t}))\n\n\treturn [\n\t\t{\n\t\t\tfieldname: 'header',\n\t\t\tcomponent: 'div',\n\t\t\tvalue: `\n\t\t\t\t<div class=\"view-header\">\n\t\t\t\t\t<nav class=\"breadcrumbs\">\n\t\t\t\t\t\t<a href=\"/\">Home</a>\n\t\t\t\t\t\t<span class=\"separator\">/</span>\n\t\t\t\t\t\t<span class=\"current\">${formatDoctypeName(routeDoctype.value || currentDoctype.value)}</span>\n\t\t\t\t\t</nav>\n\t\t\t\t\t<h1>${formatDoctypeName(routeDoctype.value || currentDoctype.value)} Records</h1>\n\t\t\t\t</div>\n\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tfieldname: 'actions',\n\t\t\tcomponent: 'div',\n\t\t\tvalue: `\n\t\t\t\t<div class=\"view-actions\">\n\t\t\t\t\t<button class=\"btn-primary\" data-action=\"create\">\n\t\t\t\t\t\tNew ${formatDoctypeName(routeDoctype.value || currentDoctype.value)}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t`,\n\t\t},\n\t\t...(records.length === 0\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tfieldname: 'empty_state',\n\t\t\t\t\t\tcomponent: 'div',\n\t\t\t\t\t\tvalue: `\n\t\t\t\t\t\t\t<div class=\"empty-state\">\n\t\t\t\t\t\t\t\t<p>No ${routeDoctype.value || currentDoctype.value} records found.</p>\n\t\t\t\t\t\t\t\t<button class=\"btn-primary\" data-action=\"create\">\n\t\t\t\t\t\t\t\t\tCreate First Record\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`,\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfieldname: 'records_table',\n\t\t\t\t\t\tcomponent: 'ATable',\n\t\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t\t...columns.map(col => ({\n\t\t\t\t\t\t\t\tlabel: col.label,\n\t\t\t\t\t\t\t\tname: col.fieldname,\n\t\t\t\t\t\t\t\tfieldtype: col.fieldtype,\n\t\t\t\t\t\t\t\talign: 'left',\n\t\t\t\t\t\t\t\tedit: false,\n\t\t\t\t\t\t\t\twidth: '20ch',\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'Actions',\n\t\t\t\t\t\t\t\tname: 'actions',\n\t\t\t\t\t\t\t\tfieldtype: 'Data',\n\t\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\t\tedit: false,\n\t\t\t\t\t\t\t\twidth: '20ch',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t] as TableColumn[],\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tview: 'list',\n\t\t\t\t\t\t\tfullWidth: true,\n\t\t\t\t\t\t} as TableConfig,\n\t\t\t\t\t\trows,\n\t\t\t\t\t},\n\t\t\t ]),\n\t]\n}\n\nconst getRecordFormSchema = (): SchemaTypes[] => {\n\tif (!currentDoctype.value) return []\n\tif (!stonecrop.value) return []\n\n\ttry {\n\t\tconst registry = stonecrop.value?.registry\n\t\tconst meta = registry?.registry[currentDoctype.value]\n\n\t\tif (!meta?.schema) {\n\t\t\t// Return loading state if schema isn't available yet\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tfieldname: 'header',\n\t\t\t\t\tcomponent: 'div',\n\t\t\t\t\tvalue: `\n\t\t\t\t\t\t<div class=\"view-header\">\n\t\t\t\t\t\t\t<nav class=\"breadcrumbs\">\n\t\t\t\t\t\t\t\t<a href=\"/\">Home</a>\n\t\t\t\t\t\t\t\t<span class=\"separator\">/</span>\n\t\t\t\t\t\t\t\t<a href=\"/${routeDoctype.value || currentDoctype.value}\">${formatDoctypeName(\n\t\t\t\t\t\trouteDoctype.value || currentDoctype.value\n\t\t\t\t\t)}</a>\n\t\t\t\t\t\t\t\t<span class=\"separator\">/</span>\n\t\t\t\t\t\t\t\t<span class=\"current\">${isNewRecord.value ? 'New Record' : currentRecordId.value}</span>\n\t\t\t\t\t\t\t</nav>\n\t\t\t\t\t\t\t<h1>${\n\t\t\t\t\t\t\t\tisNewRecord.value\n\t\t\t\t\t\t\t\t\t? `New ${formatDoctypeName(routeDoctype.value || currentDoctype.value)}`\n\t\t\t\t\t\t\t\t\t: `Edit ${formatDoctypeName(routeDoctype.value || currentDoctype.value)}`\n\t\t\t\t\t\t\t}</h1>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldname: 'loading',\n\t\t\t\t\tcomponent: 'div',\n\t\t\t\t\tvalue: `\n\t\t\t\t\t\t<div class=\"loading-state\">\n\t\t\t\t\t\t\t<p>Loading ${formatDoctypeName(routeDoctype.value || currentDoctype.value)} form...</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\n\t\tconst schemaArray = 'toArray' in meta.schema ? meta.schema.toArray() : meta.schema\n\t\tconst currentRecord = getCurrentRecord()\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tfieldname: 'header',\n\t\t\t\tcomponent: 'div',\n\t\t\t\tvalue: `\n\t\t\t\t\t<div class=\"view-header\">\n\t\t\t\t\t\t<nav class=\"breadcrumbs\">\n\t\t\t\t\t\t\t<a href=\"/\">Home</a>\n\t\t\t\t\t\t\t<span class=\"separator\">/</span>\n\t\t\t\t\t\t\t<a href=\"/${routeDoctype.value || currentDoctype.value}\">${formatDoctypeName(\n\t\t\t\t\trouteDoctype.value || currentDoctype.value\n\t\t\t\t)}</a>\n\t\t\t\t\t\t\t<span class=\"separator\">/</span>\n\t\t\t\t\t\t\t<span class=\"current\">${isNewRecord.value ? 'New Record' : currentRecordId.value}</span>\n\t\t\t\t\t\t</nav>\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\tisNewRecord.value\n\t\t\t\t\t\t\t\t\t? `New ${formatDoctypeName(routeDoctype.value || currentDoctype.value)}`\n\t\t\t\t\t\t\t\t\t: `Edit ${formatDoctypeName(routeDoctype.value || currentDoctype.value)}`\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tfieldname: 'actions',\n\t\t\t\tcomponent: 'div',\n\t\t\t\tvalue: `\n\t\t\t\t\t<div class=\"view-actions\">\n\t\t\t\t\t\t<button class=\"btn-primary\" data-action=\"save\" ${saving.value ? 'disabled' : ''}>\n\t\t\t\t\t\t\t${saving.value ? 'Saving...' : 'Save'}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button class=\"btn-secondary\" data-action=\"cancel\">Cancel</button>\n\t\t\t\t\t\t${!isNewRecord.value ? '<button class=\"btn-danger\" data-action=\"delete\">Delete</button>' : ''}\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\t...schemaArray.map(field => ({\n\t\t\t\t...field,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\tvalue: currentRecord[field.fieldname] || '',\n\t\t\t})),\n\t\t]\n\t} catch (error) {\n\t\treturn [\n\t\t\t{\n\t\t\t\tfieldname: 'error',\n\t\t\t\tcomponent: 'div',\n\t\t\t\tvalue: `\n\t\t\t\t\t<div class=\"error-state\">\n\t\t\t\t\t\t<p>Unable to load form schema for ${formatDoctypeName(routeDoctype.value || currentDoctype.value)}</p>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t]\n\t}\n}\n\n// Additional data helper functions\nconst getRecords = () => {\n\tif (!stonecrop.value || !currentDoctype.value) {\n\t\treturn []\n\t}\n\n\tconst recordsNode = stonecrop.value.records(currentDoctype.value)\n\tconst recordsData = recordsNode?.get('')\n\n\tif (recordsData && typeof recordsData === 'object' && !Array.isArray(recordsData)) {\n\t\treturn Object.values(recordsData as Record<string, any>)\n\t}\n\n\treturn []\n}\n\nconst getColumns = () => {\n\tif (!stonecrop.value || !currentDoctype.value) return []\n\n\ttry {\n\t\tconst registry = stonecrop.value.registry\n\t\tconst meta = registry.registry[currentDoctype.value]\n\n\t\tif (meta?.schema) {\n\t\t\tconst schemaArray = 'toArray' in meta.schema ? meta.schema.toArray() : meta.schema\n\t\t\treturn schemaArray.map(field => ({\n\t\t\t\tfieldname: field.fieldname,\n\t\t\t\tlabel: ('label' in field && field.label) || field.fieldname,\n\t\t\t\tfieldtype: ('fieldtype' in field && field.fieldtype) || 'Data',\n\t\t\t}))\n\t\t}\n\t} catch (error) {\n\t\t// Error getting schema - return empty array\n\t}\n\n\treturn []\n}\n\nconst getCurrentRecord = () => {\n\tif (!stonecrop.value || !currentDoctype.value || isNewRecord.value) return {}\n\n\tconst record = stonecrop.value.getRecordById(currentDoctype.value, currentRecordId.value)\n\treturn record?.get('') || {}\n}\n\n// Schema for different views - defined here after all helper functions are available\nconst currentViewSchema = computed<SchemaTypes[]>(() => {\n\tswitch (currentView.value) {\n\t\tcase 'doctypes':\n\t\t\treturn getDoctypesSchema()\n\t\tcase 'records':\n\t\t\treturn getRecordsSchema()\n\t\tcase 'record':\n\t\t\treturn getRecordFormSchema()\n\t\tdefault:\n\t\t\treturn []\n\t}\n})\n\n// Writable schema for AForm v-model binding\nconst writableSchema = ref<SchemaTypes[]>([])\n\n// Sync computed schema to writable schema when it changes\nwatch(\n\tcurrentViewSchema,\n\tnewSchema => {\n\t\twritableSchema.value = [...newSchema]\n\t},\n\t{ immediate: true, deep: true }\n)\n\n// Watch for field changes in writable schema and sync to HST\nwatch(\n\twritableSchema,\n\tnewSchema => {\n\t\tif (!stonecrop.value || !currentDoctype.value || !currentRecordId.value || isNewRecord.value) {\n\t\t\treturn\n\t\t}\n\n\t\ttry {\n\t\t\tconst hstStore = stonecrop.value.getStore()\n\n\t\t\t// Process form field updates from schema\n\t\t\tnewSchema.forEach(field => {\n\t\t\t\t// Only process fields that have a fieldname and value (form fields)\n\t\t\t\tif (\n\t\t\t\t\tfield.fieldname &&\n\t\t\t\t\t'value' in field &&\n\t\t\t\t\t!['header', 'actions', 'loading', 'error'].includes(field.fieldname)\n\t\t\t\t) {\n\t\t\t\t\tconst fieldPath = `${currentDoctype.value}.${currentRecordId.value}.${field.fieldname}`\n\t\t\t\t\tconst currentValue = hstStore.has(fieldPath) ? hstStore.get(fieldPath) : undefined\n\n\t\t\t\t\t// Only update if value actually changed to avoid infinite loops\n\t\t\t\t\tif (currentValue !== field.value) {\n\t\t\t\t\t\thstStore.set(fieldPath, field.value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('HST schema sync failed:', error)\n\t\t}\n\t},\n\t{ deep: true }\n)\n\n// Action handlers (will be triggered by button clicks in the UI)\nconst handleSave = async () => {\n\t// eslint-disable-next-line no-console\n\tif (!stonecrop.value) return\n\n\tsaving.value = true\n\n\ttry {\n\t\tconst formData = currentViewData.value || {}\n\n\t\tif (isNewRecord.value) {\n\t\t\tconst newId = `record-${Date.now()}`\n\t\t\tconst recordData = { id: newId, ...formData }\n\n\t\t\tstonecrop.value.addRecord(currentDoctype.value, newId, recordData)\n\n\t\t\t// Trigger SAVE transition for new record\n\t\t\tconst node = stonecrop.value.getRecordById(currentDoctype.value, newId)\n\t\t\tif (node) {\n\t\t\t\tawait node.triggerTransition('SAVE', {\n\t\t\t\t\tcurrentState: 'creating',\n\t\t\t\t\ttargetState: 'saved',\n\t\t\t\t\tfsmContext: recordData,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tawait router.value?.replace(`/${routeDoctype.value}/${newId}`)\n\t\t} else {\n\t\t\tconst recordData = { id: currentRecordId.value, ...formData }\n\t\t\tstonecrop.value.addRecord(currentDoctype.value, currentRecordId.value, recordData)\n\n\t\t\t// Trigger SAVE transition for existing record\n\t\t\tconst node = stonecrop.value.getRecordById(currentDoctype.value, currentRecordId.value)\n\t\t\tif (node) {\n\t\t\t\tawait node.triggerTransition('SAVE', {\n\t\t\t\t\tcurrentState: 'editing',\n\t\t\t\t\ttargetState: 'saved',\n\t\t\t\t\tfsmContext: recordData,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\t// Silently handle error\n\t} finally {\n\t\tsaving.value = false\n\t}\n}\n\nconst handleCancel = async () => {\n\tif (isNewRecord.value) {\n\t\t// For new records, we don't have a specific record node yet\n\t\t// Just navigate back without triggering transition\n\t\tawait router.value?.push(`/${routeDoctype.value}`)\n\t} else {\n\t\t// Trigger CANCEL transition for existing record\n\t\tif (stonecrop.value) {\n\t\t\tconst node = stonecrop.value.getRecordById(currentDoctype.value, currentRecordId.value)\n\t\t\tif (node) {\n\t\t\t\tawait node.triggerTransition('CANCEL', {\n\t\t\t\t\tcurrentState: 'editing',\n\t\t\t\t\ttargetState: 'cancelled',\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\t// Reload current record data\n\t\tloadRecordData()\n\t}\n}\n\nconst handleActionClick = (label: string, action: (() => void | Promise<void>) | undefined) => {\n\t// eslint-disable-next-line no-console\n\tif (action) {\n\t\tvoid action()\n\t}\n}\n\nconst handleDelete = async (recordId?: string) => {\n\tif (!stonecrop.value) return\n\n\tconst targetRecordId = recordId || currentRecordId.value\n\tif (!targetRecordId) return\n\n\tif (confirm('Are you sure you want to delete this record?')) {\n\t\t// Trigger DELETE transition before removing\n\t\tconst node = stonecrop.value.getRecordById(currentDoctype.value, targetRecordId)\n\t\tif (node) {\n\t\t\tawait node.triggerTransition('DELETE', {\n\t\t\t\tcurrentState: 'editing',\n\t\t\t\ttargetState: 'deleted',\n\t\t\t})\n\t\t}\n\n\t\tstonecrop.value.removeRecord(currentDoctype.value, targetRecordId)\n\n\t\tif (currentView.value === 'record') {\n\t\t\tawait router.value?.push(`/${routeDoctype.value}`)\n\t\t}\n\t}\n}\n\n// Event handlers\nconst handleClick = async (event: Event) => {\n\tconst target = event.target as HTMLElement\n\tconst action = target.getAttribute('data-action')\n\n\tif (action) {\n\t\tswitch (action) {\n\t\t\tcase 'create':\n\t\t\t\tawait createNewRecord()\n\t\t\t\tbreak\n\t\t\tcase 'save':\n\t\t\t\tawait handleSave()\n\t\t\t\tbreak\n\t\t\tcase 'cancel':\n\t\t\t\tawait handleCancel()\n\t\t\t\tbreak\n\t\t\tcase 'delete':\n\t\t\t\tawait handleDelete()\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t// Handle table cell clicks for actions\n\tconst cell = target.closest('td, th')\n\tif (cell) {\n\t\tconst cellText = cell.textContent?.trim()\n\t\tconst row = cell.closest('tr')\n\n\t\tif (cellText === 'View Records' && row) {\n\t\t\t// Get the doctype from the row data\n\t\t\tconst cells = row.querySelectorAll('td')\n\t\t\tif (cells.length > 0) {\n\t\t\t\tconst doctypeCell = cells[1] // Assuming doctype is in second column (first column is index)\n\t\t\t\tconst doctype = doctypeCell.textContent?.trim()\n\t\t\t\tif (doctype) {\n\t\t\t\t\tawait navigateToDoctype(doctype)\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (cellText?.includes('Edit') && row) {\n\t\t\t// Get the record ID from the row\n\t\t\tconst cells = row.querySelectorAll('td')\n\t\t\tif (cells.length > 0) {\n\t\t\t\tconst idCell = cells[0] // Assuming ID is in first column\n\t\t\t\tconst recordId = idCell.textContent?.trim()\n\t\t\t\tif (recordId) {\n\t\t\t\t\tawait openRecord(recordId)\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (cellText?.includes('Delete') && row) {\n\t\t\t// Get the record ID from the row\n\t\t\tconst cells = row.querySelectorAll('td')\n\t\t\tif (cells.length > 0) {\n\t\t\t\tconst idCell = cells[0] // Assuming ID is in first column\n\t\t\t\tconst recordId = idCell.textContent?.trim()\n\t\t\t\tif (recordId) {\n\t\t\t\t\tawait handleDelete(recordId)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Watch for route changes to load appropriate data\nwatch(\n\t[currentView, currentDoctype, currentRecordId],\n\t() => {\n\t\tif (currentView.value === 'record') {\n\t\t\tloadRecordData()\n\t\t}\n\t},\n\t{ immediate: true }\n)\n\n// Watch for Stonecrop instance to become available\nwatch(\n\tstonecrop,\n\tnewStonecrop => {\n\t\tif (newStonecrop) {\n\t\t\t// Force a re-evaluation of the current view schema when Stonecrop becomes available\n\t\t\t// This is handled automatically by the reactive computed properties\n\t\t}\n\t},\n\t{ immediate: true }\n)\n\n// Watch for when we need to load data for records view\nwatch(\n\t[currentView, currentDoctype, stonecrop],\n\t([view, doctype, stonecropInstance]) => {\n\t\tif (view === 'records' && doctype && stonecropInstance) {\n\t\t\t// Ensure doctype metadata is loaded\n\t\t\tloadDoctypeMetadata(doctype)\n\t\t}\n\t},\n\t{ immediate: true }\n)\n\nconst loadRecordData = () => {\n\tif (!stonecrop.value || !currentDoctype.value) return\n\n\tloading.value = true\n\n\ttry {\n\t\tif (!isNewRecord.value) {\n\t\t\t// For existing records, ensure the record exists in HST\n\t\t\t// The computed currentViewData will automatically read from HST\n\t\t\tstonecrop.value.getRecordById(currentDoctype.value, currentRecordId.value)\n\t\t}\n\t\t// For new records, currentViewData computed property will return {} automatically\n\t} catch (error) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn('Error loading record data:', error)\n\t} finally {\n\t\tloading.value = false\n\t}\n}\n\n// Provide methods for action components\nconst desktopMethods = {\n\tnavigateToDoctype,\n\topenRecord,\n\tcreateNewRecord,\n\thandleSave,\n\thandleCancel,\n\thandleDelete,\n}\n\nprovide('desktopMethods', desktopMethods)\n\n// Register action components in Vue app\nonMounted(() => {\n\t// Wait a tick for stonecrop to be ready, then load initial data\n\tvoid nextTick(() => {\n\t\tif (currentView.value === 'records' && currentDoctype.value && stonecrop.value) {\n\t\t\tloadDoctypeMetadata(currentDoctype.value)\n\t\t}\n\t})\n\n\t// Components will be automatically registered via the global component system\n\n\t// Add keyboard shortcuts\n\tconst handleKeydown = (event: KeyboardEvent) => {\n\t\t// Ctrl+K or Cmd+K to open command palette\n\t\tif ((event.ctrlKey || event.metaKey) && event.key === 'k') {\n\t\t\tevent.preventDefault()\n\t\t\tcommandPaletteOpen.value = true\n\t\t}\n\t\t// Escape to close command palette\n\t\tif (event.key === 'Escape' && commandPaletteOpen.value) {\n\t\t\tcommandPaletteOpen.value = false\n\t\t}\n\t}\n\n\tdocument.addEventListener('keydown', handleKeydown)\n\n\t// Cleanup event listener on unmount\n\treturn () => {\n\t\tdocument.removeEventListener('keydown', handleKeydown)\n\t}\n})\n</script>\n","import { App, type Plugin } from 'vue'\n\nimport ActionSet from '../components/ActionSet.vue'\nimport CommandPalette from '../components/CommandPalette.vue'\nimport Desktop from '../components/Desktop.vue'\nimport SheetNav from '../components/SheetNav.vue'\n\n/**\n * This is the main plugin that will be used to register all the desktop components.\n * @public\n */\nconst plugin: Plugin = {\n\tinstall: (app: App) => {\n\t\tapp.component('ActionSet', ActionSet)\n\t\tapp.component('CommandPalette', CommandPalette)\n\t\tapp.component('Desktop', Desktop)\n\t\tapp.component('SheetNav', SheetNav)\n\t},\n}\n\nexport default plugin\n"],"names":["emit","__emit","dropdownStates","ref","isOpen","timeoutId","hover","closeClicked","onMounted","closeDropdowns","onHover","onHoverLeave","toggleDropdown","index","showDropdown","handleClick","action","label","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_cache","$event","_openBlock","_Fragment","_renderList","__props","el","_toDisplayString","_hoisted_2","_hoisted_3","_hoisted_4","_withDirectives","_hoisted_5","_hoisted_6","item","itemIndex","_hoisted_7","_hoisted_9","_vShow","query","selectedIndex","inputRef","useTemplateRef","results","computed","watch","nextTick","closeModal","handleKeydown","e","selectResult","result","_createBlock","_Teleport","_createVNode","_Transition","_renderSlot","_ctx","te","G","me","n","Pe","Y","le","He","t","r","o","se","be","ze","Te","Xe","et","ee","nt","Ie","Ee","Ne","ot","st","z","Ce","ke","s","i","a","c","f","g","$e","B","b","A","ae","W","$","_e","d","v","x","N","D","p","R","de","P","F","S","C","w","T","L","m","y","E","O","_","U","ye","M","Ye","ce","Fe","it","Ae","oe","Me","Ue","at","ct","lt","Je","ut","je","tt","ft","qe","dt","Oe","pt","ht","gt","vt","yt","Be","mt","Q","St","q","re","rt","he","ge","bt","wt","Et","Ot","Rt","Le","At","We","j","Pt","Re","ve","$t","pe","u","l","h","I","V","H","ue","K","Ve","ne","Se","Dt","Ke","Wt","J","xe","Z","X","we","Qe","Tt","De","Ze","Lt","qn","ln","oo","To","mn","Il","xt","Al","Ml","da","fa","va","ma","fe","an","k","wn","breadcrumbsVisibile","searchVisible","searchText","rotateHideTabIcon","toggleBreadcrumbs","toggleSearch","handleSearchInput","event","handleSearch","navigateHome","_component_router_link","_withKeys","breadcrumb","_createTextVNode","stonecrop","useStonecrop","loading","saving","commandPaletteOpen","currentViewData","currentDoctype","currentRecordId","newData","hstStore","fieldname","value","fieldPath","error","route","unref","router","pathMatch","routeDoctype","isNewRecord","currentView","routeName","getAvailableTransitions","meta","currentState","stateConfig","transition","targetState","targetStateName","actionFn","node","recordData","actionElements","elements","createNewRecord","transitionActions","navigationBreadcrumbs","breadcrumbs","formatDoctypeName","searchCommands","commands","doctype","cmd","executeCommand","command","word","getRecordCount","navigateToDoctype","openRecord","recordId","newId","loadDoctypeMetadata","getDoctypesSchema","rows","getRecordsSchema","records","getRecords","columns","getColumns","record","col","getRecordFormSchema","schemaArray","currentRecord","getCurrentRecord","field","recordsData","currentViewSchema","writableSchema","newSchema","handleSave","formData","handleCancel","loadRecordData","handleActionClick","handleDelete","targetRecordId","target","cell","cellText","row","cells","newStonecrop","view","stonecropInstance","provide","ActionSet","_unref","AForm","SheetNav","CommandPalette","_withCtx","plugin","app","Desktop"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"desktop.js","sources":["../src/components/ActionSet.vue","../src/components/CommandPalette.vue","../../stonecrop/dist/stonecrop.js","../../aform/dist/aform.js","../src/components/SheetNav.vue","../src/components/Desktop.vue","../src/plugins/index.ts"],"sourcesContent":["<template>\n\t<div\n\t\t:class=\"{ 'open-set': isOpen, 'hovered-and-closed': closeClicked }\"\n\t\tclass=\"action-set collapse\"\n\t\t@mouseover=\"onHover\"\n\t\t@mouseleave=\"onHoverLeave\">\n\t\t<div class=\"action-menu-icon\">\n\t\t\t<div id=\"chevron\" @click=\"closeClicked = !closeClicked\">\n\t\t\t\t<svg\n\t\t\t\t\tid=\"Layer_1\"\n\t\t\t\t\tclass=\"leftBar\"\n\t\t\t\t\tversion=\"1.1\"\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\t\t\t\t\tx=\"0px\"\n\t\t\t\t\ty=\"0px\"\n\t\t\t\t\tviewBox=\"0 0 100 100\"\n\t\t\t\t\txml:space=\"preserve\"\n\t\t\t\t\twidth=\"50\"\n\t\t\t\t\theight=\"50\">\n\t\t\t\t\t<polygon points=\"54.2,33.4 29.2,58.8 25,54.6 50,29.2 \" />\n\t\t\t\t</svg>\n\n\t\t\t\t<svg\n\t\t\t\t\tid=\"Layer_1\"\n\t\t\t\t\tclass=\"rightBar\"\n\t\t\t\t\tversion=\"1.1\"\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\t\t\t\t\tx=\"0px\"\n\t\t\t\t\ty=\"0px\"\n\t\t\t\t\tviewBox=\"0 0 100 100\"\n\t\t\t\t\txml:space=\"preserve\"\n\t\t\t\t\twidth=\"50\"\n\t\t\t\t\theight=\"50\">\n\t\t\t\t\t<polygon points=\"70.8,58.8 45.8,33.4 50,29.2 75,54.6 \" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t</div>\n\t\t<div style=\"margin-right: 30px\"></div>\n\t\t<div v-for=\"(el, index) in elements\" :key=\"el.label\" class=\"action-element\">\n\t\t\t<button\n\t\t\t\tv-if=\"el.type == 'button'\"\n\t\t\t\t:disabled=\"el.disabled\"\n\t\t\t\tclass=\"button-default\"\n\t\t\t\t@click=\"handleClick(el.action, el.label)\">\n\t\t\t\t{{ el.label }}\n\t\t\t</button>\n\t\t\t<div v-if=\"el.type == 'dropdown'\">\n\t\t\t\t<button class=\"button-default\" @click=\"toggleDropdown(index)\">{{ el.label }}</button>\n\t\t\t\t<div v-show=\"dropdownStates[index]\" class=\"dropdown-container\">\n\t\t\t\t\t<div class=\"dropdown\">\n\t\t\t\t\t\t<div v-for=\"(item, itemIndex) in el.actions\" :key=\"item.label\">\n\t\t\t\t\t\t\t<button v-if=\"item.action != null\" class=\"dropdown-item\" @click=\"handleClick(item.action, item.label)\">\n\t\t\t\t\t\t\t\t{{ item.label }}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<a v-else-if=\"item.link != null\" :href=\"item.link\"\n\t\t\t\t\t\t\t\t><button class=\"dropdown-item\">{{ item.label }}</button></a\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, ref } from 'vue'\n\nimport type { ActionElements } from '../types'\n\nconst { elements = [] } = defineProps<{ elements?: ActionElements[] }>()\nconst emit = defineEmits<{\n\tactionClick: [label: string, action: (() => void | Promise<void>) | undefined]\n}>()\n\n// Track dropdown open state separately (index -> boolean)\nconst dropdownStates = ref<Record<number, boolean>>({})\n\nconst isOpen = ref(false)\nconst timeoutId = ref<number>(-1)\nconst hover = ref(false)\nconst closeClicked = ref(false)\n\nonMounted(() => {\n\tcloseDropdowns()\n})\n\nconst closeDropdowns = () => {\n\tdropdownStates.value = {}\n}\n\nconst onHover = () => {\n\thover.value = true\n\ttimeoutId.value = setTimeout(() => {\n\t\tif (hover.value) {\n\t\t\tisOpen.value = true\n\t\t}\n\t}, 500)\n}\n\nconst onHoverLeave = () => {\n\thover.value = false\n\tcloseClicked.value = false\n\tclearTimeout(timeoutId.value)\n\tisOpen.value = false\n}\n\nconst toggleDropdown = (index: number) => {\n\tconst showDropdown = !dropdownStates.value[index]\n\tcloseDropdowns()\n\tif (showDropdown) {\n\t\tdropdownStates.value[index] = true\n\t}\n}\n\nconst handleClick = (action: (() => void | Promise<void>) | undefined, label: string) => {\n\t// Emit event to parent - parent will handle execution\n\temit('actionClick', label, action)\n}\n</script>\n\n<style scoped>\n#chevron {\n\tposition: relative;\n\ttransform: rotate(90deg);\n}\n\n.leftBar,\n.rightBar {\n\ttransition-duration: 0.225s;\n\ttransition-property: transform;\n}\n\n.leftBar,\n.action-set.collapse.hovered-and-closed:hover .leftBar {\n\ttransform-origin: 33.4% 50%;\n\ttransform: rotate(90deg);\n}\n\n.rightBar,\n.action-set.collapse.hovered-and-closed:hover .rightBar {\n\ttransform-origin: 67% 50%;\n\ttransform: rotate(-90deg);\n}\n\n.rightBar {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n}\n\n.action-set.collapse:hover .leftBar {\n\ttransform: rotate(0);\n}\n\n.action-set.collapse:hover .rightBar {\n\ttransform: rotate(0);\n}\n\n.action-set {\n\tposition: fixed;\n\ttop: 10px;\n\tright: 10px;\n\tpadding: 20px;\n\tbox-shadow: 0px 1px 2px rgba(25, 39, 52, 0.05), 0px 0px 4px rgba(25, 39, 52, 0.1);\n\tborder-radius: 10px;\n\tdisplay: flex;\n\tflex-direction: row-reverse;\n\tbackground-color: white;\n\toverflow: hidden;\n\tz-index: 1001; /* Above SheetNav (100) and operation log button (999) */\n}\n\n.action-menu-icon {\n\tposition: absolute;\n\ttop: 6px;\n\tright: 4px;\n}\n\n.action-menu-icon svg {\n\tfill: #333333;\n}\n\n.action-set.collapse,\n.action-set.collapse.hovered-and-closed:hover {\n\tmax-width: 25px;\n\toverflow: hidden;\n\n\t-webkit-transition: max-width 0.5s ease-in-out;\n\t-moz-transition: max-width 0.5s ease-in-out;\n\t-o-transition: max-width 0.5s ease-in-out;\n\ttransition: max-width 0.5s ease-in-out;\n}\n\n.action-set.collapse .action-element,\n.action-set.collapse.hovered-and-closed:hover .action-element {\n\topacity: 0;\n\t-webkit-transition: opacity 0.25s ease-in-out;\n\t-moz-transition: opacity 0.25s ease-in-out;\n\t-o-transition: opacity 0.25s ease-in-out;\n\ttransition: opacity 0.25s ease-in-out;\n\ttransition-delay: 0s;\n}\n\n.action-set.collapse:hover {\n\tmax-width: 500px;\n}\n\n.action-set.collapse.open-set:hover {\n\toverflow: visible !important;\n}\n\n.action-set.collapse.hovered-and-closed:hover .action-element {\n\topacity: 0 !important;\n\t/* transition-delay: 0.5s; */\n}\n\n.action-set.collapse:hover .action-element {\n\topacity: 100 !important;\n\t/* transition-delay: 0.5s; */\n}\n\n.action-element {\n\tmargin-left: 5px;\n\tmargin-right: 5px;\n\tposition: relative; /* Make this the positioning context for absolute children */\n}\nbutton.button-default {\n\tbackground-color: #ffffff;\n\tpadding: 5px 12px;\n\tborder-radius: 3px;\n\tbox-shadow: rgba(0, 0, 0, 0.05) 0px 0.5px 0px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px,\n\t\trgba(0, 0, 0, 0.05) 0px 2px 4px 0px;\n\tborder: none;\n\tcursor: pointer;\n\twhite-space: nowrap;\n}\n\nbutton.button-default:hover {\n\tbackground-color: #f2f2f2;\n}\n\nbutton.button-default:disabled {\n\topacity: 0.5;\n\tcursor: not-allowed;\n\tbackground-color: #f5f5f5;\n\tcolor: #999;\n}\n\nbutton.button-default:disabled:hover {\n\tbackground-color: #f5f5f5;\n}\n\n.dropdown-container {\n\tposition: relative;\n}\n\n.dropdown {\n\tposition: absolute;\n\tright: 0;\n\tmin-width: 200px;\n\tbox-shadow: 0 0.5rem 1rem rgb(0 0 0 / 18%);\n\tborder-radius: 10px;\n\tbackground-color: #ffffff;\n\tpadding: 10px;\n\tz-index: 1000;\n}\n\nbutton.dropdown-item {\n\twidth: 100%;\n\tpadding: 8px 5px;\n\ttext-align: left;\n\tborder: none;\n\tbackground-color: #ffffff;\n\tcursor: pointer;\n\tborder-radius: 5px;\n}\n\nbutton.dropdown-item:hover {\n\tbackground-color: #f2f2f2;\n}\n</style>\n","<template>\n\t<Teleport to=\"body\">\n\t\t<Transition name=\"fade\">\n\t\t\t<div v-if=\"isOpen\" class=\"command-palette-overlay\" @click=\"closeModal\">\n\t\t\t\t<div class=\"command-palette\" @click.stop>\n\t\t\t\t\t<div class=\"command-palette-header\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tref=\"input\"\n\t\t\t\t\t\t\tv-model=\"query\"\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tclass=\"command-palette-input\"\n\t\t\t\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t\t\t\tautofocus\n\t\t\t\t\t\t\t@keydown=\"handleKeydown\" />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div v-if=\"results.length\" class=\"command-palette-results\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-for=\"(result, index) in results\"\n\t\t\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t\t\tclass=\"command-palette-result\"\n\t\t\t\t\t\t\t:class=\"{ selected: index === selectedIndex }\"\n\t\t\t\t\t\t\t@click=\"selectResult(result)\"\n\t\t\t\t\t\t\t@mouseover=\"selectedIndex = index\">\n\t\t\t\t\t\t\t<div class=\"result-title\">\n\t\t\t\t\t\t\t\t<slot name=\"title\" :result=\"result\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"result-content\">\n\t\t\t\t\t\t\t\t<slot name=\"content\" :result=\"result\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-else-if=\"query && !results.length\" class=\"command-palette-no-results\">\n\t\t\t\t\t\t<slot name=\"empty\"> No results found for \"{{ query }}\" </slot>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Transition>\n\t</Teleport>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { ref, computed, watch, nextTick, useTemplateRef } from 'vue'\n\ndefineSlots<{\n\ttitle?: { result: T }\n\tcontent?: { result: T }\n\tempty?: null\n}>()\n\nconst {\n\tsearch,\n\tisOpen = false,\n\tplaceholder = 'Type a command or search...',\n\tmaxResults = 10,\n} = defineProps<{\n\tsearch: (query: string) => T[]\n\tisOpen?: boolean\n\tplaceholder?: string\n\tmaxResults?: number\n}>()\n\nconst emit = defineEmits<{\n\tselect: [T]\n\tclose: []\n}>()\n\nconst query = ref('')\nconst selectedIndex = ref(0)\nconst inputRef = useTemplateRef('input')\n\nconst results = computed(() => {\n\tif (!query.value) return []\n\tconst results = search(query.value)\n\treturn results.slice(0, maxResults)\n})\n\n// reset search query when modal opens\nwatch(\n\t() => isOpen,\n\tasync isOpen => {\n\t\tif (isOpen) {\n\t\t\tquery.value = ''\n\t\t\tselectedIndex.value = 0\n\t\t\tawait nextTick()\n\t\t\t;(inputRef.value as HTMLInputElement)?.focus()\n\t\t}\n\t}\n)\n\n// reset selected index when results change\nwatch(results, () => {\n\tselectedIndex.value = 0\n})\n\nconst closeModal = () => {\n\temit('close')\n}\n\nconst handleKeydown = (e: KeyboardEvent) => {\n\tswitch (e.key) {\n\t\tcase 'Escape':\n\t\t\tcloseModal()\n\t\t\tbreak\n\t\tcase 'ArrowDown':\n\t\t\te.preventDefault()\n\t\t\tif (results.value.length) {\n\t\t\t\tselectedIndex.value = (selectedIndex.value + 1) % results.value.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'ArrowUp':\n\t\t\te.preventDefault()\n\t\t\tif (results.value.length) {\n\t\t\t\tselectedIndex.value = (selectedIndex.value - 1 + results.value.length) % results.value.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'Enter':\n\t\t\tif (results.value.length && selectedIndex.value >= 0) {\n\t\t\t\tselectResult(results.value[selectedIndex.value])\n\t\t\t}\n\t\t\tbreak\n\t}\n}\n\nconst selectResult = (result: T) => {\n\temit('select', result)\n\tcloseModal()\n}\n</script>\n\n<style>\n.fade-enter-active,\n.fade-leave-active {\n\ttransition: opacity 0.2s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.command-palette-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: rgba(0, 0, 0, 0.5);\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: center;\n\tz-index: 9999;\n\tpadding-top: 100px;\n}\n\n.command-palette {\n\twidth: 600px;\n\tmax-width: 90%;\n\tbackground-color: white;\n\tborder-radius: 8px;\n\tbox-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n\toverflow: hidden;\n\tmax-height: 80vh;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.command-palette-header {\n\tdisplay: flex;\n\tborder-bottom: 1px solid #eaeaea;\n\tpadding: 12px;\n}\n\n.command-palette-input {\n\tflex: 1;\n\tborder: none;\n\toutline: none;\n\tfont-size: 16px;\n\tpadding: 8px 12px;\n\tbackground-color: transparent;\n}\n\n.command-palette-close {\n\tbackground: transparent;\n\tborder: none;\n\tfont-size: 24px;\n\tcursor: pointer;\n\tcolor: #666;\n\tpadding: 0 8px;\n}\n\n.command-palette-close:hover {\n\tcolor: #333;\n}\n\n.command-palette-results {\n\toverflow-y: auto;\n\tmax-height: 60vh;\n}\n\n.command-palette-result {\n\tpadding: 12px 16px;\n\tcursor: pointer;\n\tborder-bottom: 1px solid #f0f0f0;\n}\n\n.command-palette-result:hover,\n.command-palette-result.selected {\n\tbackground-color: #f5f5f5;\n}\n\n.command-palette-result.selected {\n\tbackground-color: rgba(132, 60, 3, 0.1);\n}\n\n.result-title {\n\tfont-weight: 500;\n\tmargin-bottom: 4px;\n\tcolor: #333;\n}\n\n.result-content {\n\tfont-size: 14px;\n\tcolor: #666;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n.command-palette-no-results {\n\tpadding: 20px 16px;\n\ttext-align: center;\n\tcolor: #666;\n}\n</style>\n","import { hasInjectionContext as Ae, inject as oe, getCurrentInstance as Me, toRaw as Fe, computed as W, isRef as se, isReactive as be, toRef as ce, ref as B, reactive as ye, markRaw as ae, effectScope as Ye, nextTick as de, getCurrentScope as Xe, onScopeDispose as et, watch as U, toRefs as $e, onMounted as Be, readonly as je, customRef as tt, toValue as q, shallowRef as We, unref as rt, provide as De } from \"vue\";\nconst te = typeof window < \"u\";\nlet G;\nconst me = (n) => G = n;\nprocess.env.NODE_ENV;\nconst Pe = process.env.NODE_ENV !== \"production\" ? /* @__PURE__ */ Symbol(\"pinia\") : (\n /* istanbul ignore next */\n /* @__PURE__ */ Symbol()\n);\nfunction Y(n) {\n return n && typeof n == \"object\" && Object.prototype.toString.call(n) === \"[object Object]\" && typeof n.toJSON != \"function\";\n}\nvar le;\n(function(n) {\n n.direct = \"direct\", n.patchObject = \"patch object\", n.patchFunction = \"patch function\";\n})(le || (le = {}));\nfunction He(n, e) {\n for (const t in e) {\n const r = e[t];\n if (!(t in n))\n continue;\n const o = n[t];\n Y(o) && Y(r) && !se(r) && !be(r) ? n[t] = He(o, r) : n[t] = r;\n }\n return n;\n}\nconst ze = () => {\n};\nfunction Te(n, e, t, r = ze) {\n n.add(e);\n const o = () => {\n n.delete(e) && r();\n };\n return !t && Xe() && et(o), o;\n}\nfunction ee(n, ...e) {\n n.forEach((t) => {\n t(...e);\n });\n}\nconst nt = (n) => n(), Ie = /* @__PURE__ */ Symbol(), Ee = /* @__PURE__ */ Symbol();\nfunction Ne(n, e) {\n n instanceof Map && e instanceof Map ? e.forEach((t, r) => n.set(r, t)) : n instanceof Set && e instanceof Set && e.forEach(n.add, n);\n for (const t in e) {\n if (!e.hasOwnProperty(t))\n continue;\n const r = e[t], o = n[t];\n Y(o) && Y(r) && n.hasOwnProperty(t) && !se(r) && !be(r) ? n[t] = Ne(o, r) : n[t] = r;\n }\n return n;\n}\nconst ot = process.env.NODE_ENV !== \"production\" ? /* @__PURE__ */ Symbol(\"pinia:skipHydration\") : (\n /* istanbul ignore next */\n /* @__PURE__ */ Symbol()\n);\nfunction st(n) {\n return !Y(n) || !Object.prototype.hasOwnProperty.call(n, ot);\n}\nconst { assign: z } = Object;\nfunction Ce(n) {\n return !!(se(n) && n.effect);\n}\nfunction ke(n, e, t, r) {\n const { state: o, actions: s, getters: i } = e, a = t.state.value[n];\n let c;\n function f() {\n !a && (process.env.NODE_ENV === \"production\" || !r) && (t.state.value[n] = o ? o() : {});\n const g = process.env.NODE_ENV !== \"production\" && r ? (\n // use ref() to unwrap refs inside state TODO: check if this is still necessary\n $e(B(o ? o() : {}).value)\n ) : $e(t.state.value[n]);\n return z(g, s, Object.keys(i || {}).reduce((b, A) => (process.env.NODE_ENV !== \"production\" && A in g && console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${A}\" in store \"${n}\".`), b[A] = ae(W(() => {\n me(t);\n const $ = t._s.get(n);\n return i[A].call($, $);\n })), b), {}));\n }\n return c = _e(n, f, e, t, r, !0), c;\n}\nfunction _e(n, e, t = {}, r, o, s) {\n let i;\n const a = z({ actions: {} }, t);\n if (process.env.NODE_ENV !== \"production\" && !r._e.active)\n throw new Error(\"Pinia destroyed\");\n const c = { deep: !0 };\n process.env.NODE_ENV !== \"production\" && (c.onTrigger = (d) => {\n f ? $ = d : f == !1 && !v._hotUpdating && (Array.isArray($) ? $.push(d) : console.error(\"🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.\"));\n });\n let f, g, b = /* @__PURE__ */ new Set(), A = /* @__PURE__ */ new Set(), $;\n const k = r.state.value[n];\n !s && !k && (process.env.NODE_ENV === \"production\" || !o) && (r.state.value[n] = {});\n const x = B({});\n let N;\n function D(d) {\n let p;\n f = g = !1, process.env.NODE_ENV !== \"production\" && ($ = []), typeof d == \"function\" ? (d(r.state.value[n]), p = {\n type: le.patchFunction,\n storeId: n,\n events: $\n }) : (Ne(r.state.value[n], d), p = {\n type: le.patchObject,\n payload: d,\n storeId: n,\n events: $\n });\n const R = N = /* @__PURE__ */ Symbol();\n de().then(() => {\n N === R && (f = !0);\n }), g = !0, ee(b, p, r.state.value[n]);\n }\n const P = s ? function() {\n const { state: p } = t, R = p ? p() : {};\n this.$patch((F) => {\n z(F, R);\n });\n } : (\n /* istanbul ignore next */\n process.env.NODE_ENV !== \"production\" ? () => {\n throw new Error(`🍍: Store \"${n}\" is built using the setup syntax and does not implement $reset().`);\n } : ze\n );\n function S() {\n i.stop(), b.clear(), A.clear(), r._s.delete(n);\n }\n const C = (d, p = \"\") => {\n if (Ie in d)\n return d[Ee] = p, d;\n const R = function() {\n me(r);\n const F = Array.from(arguments), w = /* @__PURE__ */ new Set(), T = /* @__PURE__ */ new Set();\n function L(m) {\n w.add(m);\n }\n function y(m) {\n T.add(m);\n }\n ee(A, {\n args: F,\n name: R[Ee],\n store: v,\n after: L,\n onError: y\n });\n let E;\n try {\n E = d.apply(this && this.$id === n ? this : v, F);\n } catch (m) {\n throw ee(T, m), m;\n }\n return E instanceof Promise ? E.then((m) => (ee(w, m), m)).catch((m) => (ee(T, m), Promise.reject(m))) : (ee(w, E), E);\n };\n return R[Ie] = !0, R[Ee] = p, R;\n }, O = /* @__PURE__ */ ae({\n actions: {},\n getters: {},\n state: [],\n hotState: x\n }), _ = {\n _p: r,\n // _s: scope,\n $id: n,\n $onAction: Te.bind(null, A),\n $patch: D,\n $reset: P,\n $subscribe(d, p = {}) {\n const R = Te(b, d, p.detached, () => F()), F = i.run(() => U(() => r.state.value[n], (w) => {\n (p.flush === \"sync\" ? g : f) && d({\n storeId: n,\n type: le.direct,\n events: $\n }, w);\n }, z({}, c, p)));\n return R;\n },\n $dispose: S\n }, v = ye(process.env.NODE_ENV !== \"production\" || process.env.NODE_ENV !== \"production\" && process.env.NODE_ENV !== \"test\" && te ? z(\n {\n _hmrPayload: O,\n _customProperties: ae(/* @__PURE__ */ new Set())\n // devtools custom properties\n },\n _\n // must be added later\n // setupStore\n ) : _);\n r._s.set(n, v);\n const M = (r._a && r._a.runWithContext || nt)(() => r._e.run(() => (i = Ye()).run(() => e({ action: C }))));\n for (const d in M) {\n const p = M[d];\n if (se(p) && !Ce(p) || be(p))\n process.env.NODE_ENV !== \"production\" && o ? x.value[d] = ce(M, d) : s || (k && st(p) && (se(p) ? p.value = k[d] : Ne(p, k[d])), r.state.value[n][d] = p), process.env.NODE_ENV !== \"production\" && O.state.push(d);\n else if (typeof p == \"function\") {\n const R = process.env.NODE_ENV !== \"production\" && o ? p : C(p, d);\n M[d] = R, process.env.NODE_ENV !== \"production\" && (O.actions[d] = p), a.actions[d] = p;\n } else process.env.NODE_ENV !== \"production\" && Ce(p) && (O.getters[d] = s ? (\n // @ts-expect-error\n t.getters[d]\n ) : p, te && (M._getters || // @ts-expect-error: same\n (M._getters = ae([]))).push(d));\n }\n if (z(v, M), z(Fe(v), M), Object.defineProperty(v, \"$state\", {\n get: () => process.env.NODE_ENV !== \"production\" && o ? x.value : r.state.value[n],\n set: (d) => {\n if (process.env.NODE_ENV !== \"production\" && o)\n throw new Error(\"cannot set hotState\");\n D((p) => {\n z(p, d);\n });\n }\n }), process.env.NODE_ENV !== \"production\" && (v._hotUpdate = ae((d) => {\n v._hotUpdating = !0, d._hmrPayload.state.forEach((p) => {\n if (p in v.$state) {\n const R = d.$state[p], F = v.$state[p];\n typeof R == \"object\" && Y(R) && Y(F) ? He(R, F) : d.$state[p] = F;\n }\n v[p] = ce(d.$state, p);\n }), Object.keys(v.$state).forEach((p) => {\n p in d.$state || delete v[p];\n }), f = !1, g = !1, r.state.value[n] = ce(d._hmrPayload, \"hotState\"), g = !0, de().then(() => {\n f = !0;\n });\n for (const p in d._hmrPayload.actions) {\n const R = d[p];\n v[p] = //\n C(R, p);\n }\n for (const p in d._hmrPayload.getters) {\n const R = d._hmrPayload.getters[p], F = s ? (\n // special handling of options api\n W(() => (me(r), R.call(v, v)))\n ) : R;\n v[p] = //\n F;\n }\n Object.keys(v._hmrPayload.getters).forEach((p) => {\n p in d._hmrPayload.getters || delete v[p];\n }), Object.keys(v._hmrPayload.actions).forEach((p) => {\n p in d._hmrPayload.actions || delete v[p];\n }), v._hmrPayload = d._hmrPayload, v._getters = d._getters, v._hotUpdating = !1;\n })), process.env.NODE_ENV !== \"production\" && process.env.NODE_ENV !== \"test\" && te) {\n const d = {\n writable: !0,\n configurable: !0,\n // avoid warning on devtools trying to display this property\n enumerable: !1\n };\n [\"_p\", \"_hmrPayload\", \"_getters\", \"_customProperties\"].forEach((p) => {\n Object.defineProperty(v, p, z({ value: v[p] }, d));\n });\n }\n return r._p.forEach((d) => {\n if (process.env.NODE_ENV !== \"production\" && process.env.NODE_ENV !== \"test\" && te) {\n const p = i.run(() => d({\n store: v,\n app: r._a,\n pinia: r,\n options: a\n }));\n Object.keys(p || {}).forEach((R) => v._customProperties.add(R)), z(v, p);\n } else\n z(v, i.run(() => d({\n store: v,\n app: r._a,\n pinia: r,\n options: a\n })));\n }), process.env.NODE_ENV !== \"production\" && v.$state && typeof v.$state == \"object\" && typeof v.$state.constructor == \"function\" && !v.$state.constructor.toString().includes(\"[native code]\") && console.warn(`[🍍]: The \"state\" must be a plain object. It cannot be\n\tstate: () => new MyClass()\nFound in store \"${v.$id}\".`), k && s && t.hydrate && t.hydrate(v.$state, k), f = !0, g = !0, v;\n}\n// @__NO_SIDE_EFFECTS__\nfunction it(n, e, t) {\n let r;\n const o = typeof e == \"function\";\n r = o ? t : e;\n function s(i, a) {\n const c = Ae();\n if (i = // in test mode, ignore the argument provided as we can always retrieve a\n // pinia instance with getActivePinia()\n (process.env.NODE_ENV === \"test\" && G && G._testing ? null : i) || (c ? oe(Pe, null) : null), i && me(i), process.env.NODE_ENV !== \"production\" && !G)\n throw new Error(`[🍍]: \"getActivePinia()\" was called but there was no active Pinia. Are you trying to use a store before calling \"app.use(pinia)\"?\nSee https://pinia.vuejs.org/core-concepts/outside-component-usage.html for help.\nThis will fail in production.`);\n i = G, i._s.has(n) || (o ? _e(n, e, r, i) : ke(n, r, i), process.env.NODE_ENV !== \"production\" && (s._pinia = i));\n const f = i._s.get(n);\n if (process.env.NODE_ENV !== \"production\" && a) {\n const g = \"__hot:\" + n, b = o ? _e(g, e, r, i, !0) : ke(g, z({}, r), i, !0);\n a._hotUpdate(b), delete i.state.value[g], i._s.delete(g);\n }\n if (process.env.NODE_ENV !== \"production\" && te) {\n const g = Me();\n if (g && g.proxy && // avoid adding stores that are just built for hot module replacement\n !a) {\n const b = g.proxy, A = \"_pStores\" in b ? b._pStores : b._pStores = {};\n A[n] = f;\n }\n }\n return f;\n }\n return s.$id = n, s;\n}\nfunction Ue(n) {\n const e = Fe(n), t = {};\n for (const r in e) {\n const o = e[r];\n o.effect ? t[r] = // ...\n W({\n get: () => n[r],\n set(s) {\n n[r] = s;\n }\n }) : (se(o) || be(o)) && (t[r] = // ---\n ce(n, r));\n }\n return t;\n}\nconst at = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst ct = Object.prototype.toString, lt = (n) => ct.call(n) === \"[object Object]\", Je = () => {\n};\nfunction ut(...n) {\n if (n.length !== 1) return ce(...n);\n const e = n[0];\n return typeof e == \"function\" ? je(tt(() => ({\n get: e,\n set: Je\n }))) : B(e);\n}\nfunction ft(n, e) {\n function t(...r) {\n return new Promise((o, s) => {\n Promise.resolve(n(() => e.apply(this, r), {\n fn: e,\n thisArg: this,\n args: r\n })).then(o).catch(s);\n });\n }\n return t;\n}\nconst qe = (n) => n();\nfunction dt(n = qe, e = {}) {\n const { initialState: t = \"active\" } = e, r = ut(t === \"active\");\n function o() {\n r.value = !1;\n }\n function s() {\n r.value = !0;\n }\n const i = (...a) => {\n r.value && n(...a);\n };\n return {\n isActive: je(r),\n pause: o,\n resume: s,\n eventFilter: i\n };\n}\nfunction Oe(n) {\n return Array.isArray(n) ? n : [n];\n}\nfunction pt(n) {\n return Me();\n}\nfunction ht(n, e, t = {}) {\n const { eventFilter: r = qe, ...o } = t;\n return U(n, ft(r, e), o);\n}\nfunction gt(n, e, t = {}) {\n const { eventFilter: r, initialState: o = \"active\", ...s } = t, { eventFilter: i, pause: a, resume: c, isActive: f } = dt(r, { initialState: o });\n return {\n stop: ht(n, e, {\n ...s,\n eventFilter: i\n }),\n pause: a,\n resume: c,\n isActive: f\n };\n}\nconst vt = gt;\nfunction yt(n, e = !0, t) {\n pt() ? Be(n, t) : e ? n() : de(n);\n}\nfunction mt(n, e, t) {\n return U(n, e, {\n ...t,\n immediate: !0\n });\n}\nfunction ie(n, e, t) {\n return U(n, (o, s, i) => {\n o && e(o, s, i);\n }, {\n ...t,\n once: !1\n });\n}\nconst Q = at ? window : void 0;\nfunction St(n) {\n var e;\n const t = q(n);\n return (e = t?.$el) !== null && e !== void 0 ? e : t;\n}\nfunction re(...n) {\n const e = (r, o, s, i) => (r.addEventListener(o, s, i), () => r.removeEventListener(o, s, i)), t = W(() => {\n const r = Oe(q(n[0])).filter((o) => o != null);\n return r.every((o) => typeof o != \"string\") ? r : void 0;\n });\n return mt(() => {\n var r, o;\n return [\n (r = (o = t.value) === null || o === void 0 ? void 0 : o.map((s) => St(s))) !== null && r !== void 0 ? r : [Q].filter((s) => s != null),\n Oe(q(t.value ? n[1] : n[0])),\n Oe(rt(t.value ? n[2] : n[1])),\n q(t.value ? n[3] : n[2])\n ];\n }, ([r, o, s, i], a, c) => {\n if (!r?.length || !o?.length || !s?.length) return;\n const f = lt(i) ? { ...i } : i, g = r.flatMap((b) => o.flatMap((A) => s.map(($) => e(b, A, $, f))));\n c(() => {\n g.forEach((b) => b());\n });\n }, { flush: \"post\" });\n}\nconst he = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {}, ge = \"__vueuse_ssr_handlers__\", bt = /* @__PURE__ */ wt();\nfunction wt() {\n return ge in he || (he[ge] = he[ge] || {}), he[ge];\n}\nfunction Et(n, e) {\n return bt[n] || e;\n}\nfunction Ot(n) {\n return n == null ? \"any\" : n instanceof Set ? \"set\" : n instanceof Map ? \"map\" : n instanceof Date ? \"date\" : typeof n == \"boolean\" ? \"boolean\" : typeof n == \"string\" ? \"string\" : typeof n == \"object\" ? \"object\" : Number.isNaN(n) ? \"any\" : \"number\";\n}\nconst Rt = {\n boolean: {\n read: (n) => n === \"true\",\n write: (n) => String(n)\n },\n object: {\n read: (n) => JSON.parse(n),\n write: (n) => JSON.stringify(n)\n },\n number: {\n read: (n) => Number.parseFloat(n),\n write: (n) => String(n)\n },\n any: {\n read: (n) => n,\n write: (n) => String(n)\n },\n string: {\n read: (n) => n,\n write: (n) => String(n)\n },\n map: {\n read: (n) => new Map(JSON.parse(n)),\n write: (n) => JSON.stringify(Array.from(n.entries()))\n },\n set: {\n read: (n) => new Set(JSON.parse(n)),\n write: (n) => JSON.stringify(Array.from(n))\n },\n date: {\n read: (n) => new Date(n),\n write: (n) => n.toISOString()\n }\n}, Le = \"vueuse-storage\";\nfunction At(n, e, t, r = {}) {\n var o;\n const { flush: s = \"pre\", deep: i = !0, listenToStorageChanges: a = !0, writeDefaults: c = !0, mergeDefaults: f = !1, shallow: g, window: b = Q, eventFilter: A, onError: $ = (w) => {\n console.error(w);\n }, initOnMounted: k } = r, x = (g ? We : B)(e), N = W(() => q(n));\n if (!t) try {\n t = Et(\"getDefaultStorage\", () => Q?.localStorage)();\n } catch (w) {\n $(w);\n }\n if (!t) return x;\n const D = q(e), P = Ot(D), S = (o = r.serializer) !== null && o !== void 0 ? o : Rt[P], { pause: C, resume: O } = vt(x, (w) => d(w), {\n flush: s,\n deep: i,\n eventFilter: A\n });\n U(N, () => R(), { flush: s });\n let _ = !1;\n const v = (w) => {\n k && !_ || R(w);\n }, j = (w) => {\n k && !_ || F(w);\n };\n b && a && (t instanceof Storage ? re(b, \"storage\", v, { passive: !0 }) : re(b, Le, j)), k ? yt(() => {\n _ = !0, R();\n }) : R();\n function M(w, T) {\n if (b) {\n const L = {\n key: N.value,\n oldValue: w,\n newValue: T,\n storageArea: t\n };\n b.dispatchEvent(t instanceof Storage ? new StorageEvent(\"storage\", L) : new CustomEvent(Le, { detail: L }));\n }\n }\n function d(w) {\n try {\n const T = t.getItem(N.value);\n if (w == null)\n M(T, null), t.removeItem(N.value);\n else {\n const L = S.write(w);\n T !== L && (t.setItem(N.value, L), M(T, L));\n }\n } catch (T) {\n $(T);\n }\n }\n function p(w) {\n const T = w ? w.newValue : t.getItem(N.value);\n if (T == null)\n return c && D != null && t.setItem(N.value, S.write(D)), D;\n if (!w && f) {\n const L = S.read(T);\n return typeof f == \"function\" ? f(L, D) : P === \"object\" && !Array.isArray(L) ? {\n ...D,\n ...L\n } : L;\n } else return typeof T != \"string\" ? T : S.read(T);\n }\n function R(w) {\n if (!(w && w.storageArea !== t)) {\n if (w && w.key == null) {\n x.value = D;\n return;\n }\n if (!(w && w.key !== N.value)) {\n C();\n try {\n const T = S.write(x.value);\n (w === void 0 || w?.newValue !== T) && (x.value = p(w));\n } catch (T) {\n $(T);\n } finally {\n w ? de(O) : O();\n }\n }\n }\n }\n function F(w) {\n R(w.detail);\n }\n return x;\n}\nfunction Pt(n, e, t = {}) {\n const { window: r = Q } = t;\n return At(n, e, r?.localStorage, t);\n}\nconst Nt = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\nfunction _t(n = {}) {\n const { reactive: e = !1, target: t = Q, aliasMap: r = Nt, passive: o = !0, onEventFired: s = Je } = n, i = ye(/* @__PURE__ */ new Set()), a = {\n toJSON() {\n return {};\n },\n current: i\n }, c = e ? ye(a) : a, f = /* @__PURE__ */ new Set(), g = /* @__PURE__ */ new Map([\n [\"Meta\", f],\n [\"Shift\", /* @__PURE__ */ new Set()],\n [\"Alt\", /* @__PURE__ */ new Set()]\n ]), b = /* @__PURE__ */ new Set();\n function A(P, S) {\n P in c && (e ? c[P] = S : c[P].value = S);\n }\n function $() {\n i.clear();\n for (const P of b) A(P, !1);\n }\n function k(P, S, C) {\n if (!(!P || typeof S.getModifierState != \"function\")) {\n for (const [O, _] of g) if (S.getModifierState(O)) {\n C.forEach((v) => _.add(v));\n break;\n }\n }\n }\n function x(P, S) {\n if (P) return;\n const C = `${S[0].toUpperCase()}${S.slice(1)}`, O = g.get(C);\n if (![\"shift\", \"alt\"].includes(S) || !O) return;\n const _ = Array.from(O), v = _.indexOf(S);\n _.forEach((j, M) => {\n M >= v && (i.delete(j), A(j, !1));\n }), O.clear();\n }\n function N(P, S) {\n var C, O;\n const _ = (C = P.key) === null || C === void 0 ? void 0 : C.toLowerCase(), v = [(O = P.code) === null || O === void 0 ? void 0 : O.toLowerCase(), _].filter(Boolean);\n if (_ !== \"\") {\n _ && (S ? i.add(_) : i.delete(_));\n for (const j of v)\n b.add(j), A(j, S);\n k(S, P, [...i, ...v]), x(S, _), _ === \"meta\" && !S && (f.forEach((j) => {\n i.delete(j), A(j, !1);\n }), f.clear());\n }\n }\n re(t, \"keydown\", (P) => (N(P, !0), s(P)), { passive: o }), re(t, \"keyup\", (P) => (N(P, !1), s(P)), { passive: o }), re(\"blur\", $, { passive: o }), re(\"focus\", $, { passive: o });\n const D = new Proxy(c, { get(P, S, C) {\n if (typeof S != \"string\") return Reflect.get(P, S, C);\n if (S = S.toLowerCase(), S in r && (S = r[S]), !(S in c)) if (/[+_-]/.test(S)) {\n const _ = S.split(/[+_-]/g).map((v) => v.trim());\n c[S] = W(() => _.map((v) => q(D[v])).every(Boolean));\n } else c[S] = We(!1);\n const O = Reflect.get(P, S, C);\n return e ? q(O) : O;\n } });\n return D;\n}\nfunction Re() {\n return typeof crypto < \"u\" && crypto.randomUUID ? crypto.randomUUID() : `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n}\nfunction ve(n) {\n const e = {\n type: n.type,\n clientId: n.clientId,\n timestamp: n.timestamp.toISOString()\n };\n return n.operation && (e.operation = {\n ...n.operation,\n timestamp: n.operation.timestamp.toISOString()\n }), n.operations && (e.operations = n.operations.map((t) => ({\n ...t,\n timestamp: t.timestamp.toISOString()\n }))), e;\n}\nfunction $t(n) {\n const e = {\n type: n.type,\n clientId: n.clientId,\n timestamp: new Date(n.timestamp)\n };\n return n.operation && (e.operation = {\n ...n.operation,\n timestamp: new Date(n.operation.timestamp)\n }), n.operations && (e.operations = n.operations.map((t) => ({\n ...t,\n timestamp: new Date(t.timestamp)\n }))), e;\n}\nconst pe = /* @__PURE__ */ it(\"hst-operation-log\", () => {\n const n = B({\n maxOperations: 100,\n enableCrossTabSync: !0,\n autoSyncInterval: 3e4,\n enablePersistence: !1,\n persistenceKeyPrefix: \"stonecrop-ops\"\n }), e = B([]), t = B(-1), r = B(Re()), o = B(!1), s = B([]), i = B(null), a = W(() => t.value < 0 ? !1 : e.value[t.value]?.reversible ?? !1), c = W(() => t.value < e.value.length - 1), f = W(() => {\n let u = 0;\n for (let l = t.value; l >= 0 && e.value[l]?.reversible; l--)\n u++;\n return u;\n }), g = W(() => e.value.length - 1 - t.value), b = W(() => ({\n canUndo: a.value,\n canRedo: c.value,\n undoCount: f.value,\n redoCount: g.value,\n currentIndex: t.value\n }));\n function A(u) {\n n.value = { ...n.value, ...u }, n.value.enablePersistence && (y(), m()), n.value.enableCrossTabSync && p();\n }\n function $(u, l = \"user\") {\n const h = {\n ...u,\n id: Re(),\n timestamp: /* @__PURE__ */ new Date(),\n source: l,\n userId: n.value.userId\n };\n if (n.value.operationFilter && !n.value.operationFilter(h))\n return h.id;\n if (o.value)\n return s.value.push(h), h.id;\n if (t.value < e.value.length - 1 && (e.value = e.value.slice(0, t.value + 1)), e.value.push(h), t.value++, n.value.maxOperations && e.value.length > n.value.maxOperations) {\n const I = e.value.length - n.value.maxOperations;\n e.value = e.value.slice(I), t.value -= I;\n }\n return n.value.enableCrossTabSync && R(h), h.id;\n }\n function k() {\n o.value = !0, s.value = [], i.value = Re();\n }\n function x(u) {\n if (!o.value || s.value.length === 0)\n return o.value = !1, s.value = [], i.value = null, null;\n const l = i.value, h = s.value.every((V) => V.reversible), I = {\n id: l,\n type: \"batch\",\n path: \"\",\n // Batch doesn't have a single path\n fieldname: \"\",\n beforeValue: null,\n afterValue: null,\n doctype: s.value[0]?.doctype || \"\",\n timestamp: /* @__PURE__ */ new Date(),\n source: \"user\",\n reversible: h,\n irreversibleReason: h ? void 0 : \"Contains irreversible operations\",\n childOperationIds: s.value.map((V) => V.id),\n metadata: { description: u }\n };\n s.value.forEach((V) => {\n V.parentOperationId = l;\n }), e.value.push(...s.value, I), t.value = e.value.length - 1, n.value.enableCrossTabSync && F(s.value, I);\n const H = l;\n return o.value = !1, s.value = [], i.value = null, H;\n }\n function N() {\n o.value = !1, s.value = [], i.value = null;\n }\n function D(u) {\n if (!a.value) return !1;\n const l = e.value[t.value];\n if (!l.reversible)\n return typeof console < \"u\" && l.irreversibleReason && console.warn(\"Cannot undo irreversible operation:\", l.irreversibleReason), !1;\n try {\n if (l.type === \"batch\" && l.childOperationIds)\n for (let h = l.childOperationIds.length - 1; h >= 0; h--) {\n const I = l.childOperationIds[h], H = e.value.find((V) => V.id === I);\n H && S(H, u);\n }\n else\n S(l, u);\n return t.value--, n.value.enableCrossTabSync && w(l), !0;\n } catch (h) {\n return typeof console < \"u\" && console.error(\"Undo failed:\", h), !1;\n }\n }\n function P(u) {\n if (!c.value) return !1;\n const l = e.value[t.value + 1];\n try {\n if (l.type === \"batch\" && l.childOperationIds)\n for (const h of l.childOperationIds) {\n const I = e.value.find((H) => H.id === h);\n I && C(I, u);\n }\n else\n C(l, u);\n return t.value++, n.value.enableCrossTabSync && T(l), !0;\n } catch (h) {\n return typeof console < \"u\" && console.error(\"Redo failed:\", h), !1;\n }\n }\n function S(u, l) {\n (u.type === \"set\" || u.type === \"delete\") && l && typeof l.set == \"function\" && l.set(u.path, u.beforeValue, \"undo\");\n }\n function C(u, l) {\n (u.type === \"set\" || u.type === \"delete\") && l && typeof l.set == \"function\" && l.set(u.path, u.afterValue, \"redo\");\n }\n function O() {\n const u = e.value.filter((h) => h.reversible).length, l = e.value.map((h) => h.timestamp);\n return {\n operations: [...e.value],\n currentIndex: t.value,\n totalOperations: e.value.length,\n reversibleOperations: u,\n irreversibleOperations: e.value.length - u,\n oldestOperation: l.length > 0 ? new Date(Math.min(...l.map((h) => h.getTime()))) : void 0,\n newestOperation: l.length > 0 ? new Date(Math.max(...l.map((h) => h.getTime()))) : void 0\n };\n }\n function _() {\n e.value = [], t.value = -1;\n }\n function v(u, l) {\n return e.value.filter((h) => h.doctype === u && (l === void 0 || h.recordId === l));\n }\n function j(u, l) {\n const h = e.value.find((I) => I.id === u);\n h && (h.reversible = !1, h.irreversibleReason = l);\n }\n function M(u, l, h, I = \"success\", H) {\n const V = {\n type: \"action\",\n path: h && h.length > 0 ? `${u}.${h[0]}` : u,\n fieldname: \"\",\n beforeValue: null,\n afterValue: null,\n doctype: u,\n recordId: h && h.length > 0 ? h[0] : void 0,\n reversible: !1,\n // Actions are typically not reversible\n actionName: l,\n actionRecordIds: h,\n actionResult: I,\n actionError: H\n };\n return $(V);\n }\n let d = null;\n function p() {\n typeof window > \"u\" || !window.BroadcastChannel || (d = new BroadcastChannel(\"stonecrop-operation-log\"), d.addEventListener(\"message\", (u) => {\n const l = u.data;\n if (!l || typeof l != \"object\") return;\n const h = $t(l);\n h.clientId !== r.value && (h.type === \"operation\" && h.operation ? (e.value.push({ ...h.operation, source: \"sync\" }), t.value = e.value.length - 1) : h.type === \"operation\" && h.operations && (e.value.push(...h.operations.map((I) => ({ ...I, source: \"sync\" }))), t.value = e.value.length - 1));\n }));\n }\n function R(u) {\n if (!d) return;\n const l = {\n type: \"operation\",\n operation: u,\n clientId: r.value,\n timestamp: /* @__PURE__ */ new Date()\n };\n d.postMessage(ve(l));\n }\n function F(u, l) {\n if (!d) return;\n const h = {\n type: \"operation\",\n operations: [...u, l],\n clientId: r.value,\n timestamp: /* @__PURE__ */ new Date()\n };\n d.postMessage(ve(h));\n }\n function w(u) {\n if (!d) return;\n const l = {\n type: \"undo\",\n operation: u,\n clientId: r.value,\n timestamp: /* @__PURE__ */ new Date()\n };\n d.postMessage(ve(l));\n }\n function T(u) {\n if (!d) return;\n const l = {\n type: \"redo\",\n operation: u,\n clientId: r.value,\n timestamp: /* @__PURE__ */ new Date()\n };\n d.postMessage(ve(l));\n }\n const L = Pt(\"stonecrop-ops-operations\", null, {\n serializer: {\n read: (u) => {\n try {\n return JSON.parse(u);\n } catch {\n return null;\n }\n },\n write: (u) => u ? JSON.stringify(u) : \"\"\n }\n });\n function y() {\n if (!(typeof window > \"u\"))\n try {\n const u = L.value;\n u && Array.isArray(u.operations) && (e.value = u.operations.map((l) => ({\n ...l,\n timestamp: new Date(l.timestamp)\n })), t.value = u.currentIndex ?? -1);\n } catch (u) {\n typeof console < \"u\" && console.error(\"Failed to load operations from persistence:\", u);\n }\n }\n function E() {\n if (!(typeof window > \"u\"))\n try {\n L.value = {\n operations: e.value.map((u) => ({\n ...u,\n timestamp: u.timestamp.toISOString()\n })),\n currentIndex: t.value\n };\n } catch (u) {\n typeof console < \"u\" && console.error(\"Failed to save operations to persistence:\", u);\n }\n }\n function m() {\n U(\n [e, t],\n () => {\n n.value.enablePersistence && E();\n },\n { deep: !0 }\n );\n }\n return {\n // State\n operations: e,\n currentIndex: t,\n config: n,\n clientId: r,\n undoRedoState: b,\n // Computed\n canUndo: a,\n canRedo: c,\n undoCount: f,\n redoCount: g,\n // Methods\n configure: A,\n addOperation: $,\n startBatch: k,\n commitBatch: x,\n cancelBatch: N,\n undo: D,\n redo: P,\n clear: _,\n getOperationsFor: v,\n getSnapshot: O,\n markIrreversible: j,\n logAction: M\n };\n});\nclass ue {\n /**\n * The root FieldTriggerEngine instance\n */\n static _root;\n options;\n doctypeActions = /* @__PURE__ */ new Map();\n // doctype -> action/field -> functions\n doctypeTransitions = /* @__PURE__ */ new Map();\n // doctype -> transition -> functions\n fieldRollbackConfig = /* @__PURE__ */ new Map();\n // doctype -> field -> rollback enabled\n globalActions = /* @__PURE__ */ new Map();\n // action name -> function\n globalTransitionActions = /* @__PURE__ */ new Map();\n // transition action name -> function\n /**\n * Creates a new FieldTriggerEngine instance (singleton pattern)\n * @param options - Configuration options for the field trigger engine\n */\n constructor(e = {}) {\n if (ue._root)\n return ue._root;\n ue._root = this, this.options = {\n defaultTimeout: e.defaultTimeout ?? 5e3,\n debug: e.debug ?? !1,\n enableRollback: e.enableRollback ?? !0,\n errorHandler: e.errorHandler\n };\n }\n /**\n * Register a global action function\n * @param name - The name of the action\n * @param fn - The action function\n */\n registerAction(e, t) {\n this.globalActions.set(e, t);\n }\n /**\n * Register a global XState transition action function\n * @param name - The name of the transition action\n * @param fn - The transition action function\n */\n registerTransitionAction(e, t) {\n this.globalTransitionActions.set(e, t);\n }\n /**\n * Configure rollback behavior for a specific field trigger\n * @param doctype - The doctype name\n * @param fieldname - The field name\n * @param enableRollback - Whether to enable rollback\n */\n setFieldRollback(e, t, r) {\n this.fieldRollbackConfig.has(e) || this.fieldRollbackConfig.set(e, /* @__PURE__ */ new Map()), this.fieldRollbackConfig.get(e).set(t, r);\n }\n /**\n * Get rollback configuration for a specific field trigger\n */\n getFieldRollback(e, t) {\n return this.fieldRollbackConfig.get(e)?.get(t);\n }\n /**\n * Register actions from a doctype - both regular actions and field triggers\n * Separates XState transitions (uppercase) from field triggers (lowercase)\n * @param doctype - The doctype name\n * @param actions - The actions to register (supports Immutable Map, Map, or plain object)\n */\n registerDoctypeActions(e, t) {\n if (!t) return;\n const r = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();\n if (typeof t.entrySeq == \"function\")\n t.entrySeq().forEach(([s, i]) => {\n this.categorizeAction(s, i, r, o);\n });\n else if (t instanceof Map)\n for (const [s, i] of t)\n this.categorizeAction(s, i, r, o);\n else t && typeof t == \"object\" && Object.entries(t).forEach(([s, i]) => {\n this.categorizeAction(s, i, r, o);\n });\n this.doctypeActions.set(e, r), this.doctypeTransitions.set(e, o);\n }\n /**\n * Categorize an action as either a field trigger or XState transition\n * Uses uppercase convention: UPPERCASE = transition, lowercase/mixed = field trigger\n */\n categorizeAction(e, t, r, o) {\n this.isTransitionKey(e) ? o.set(e, t) : r.set(e, t);\n }\n /**\n * Determine if a key represents an XState transition\n * Transitions are identified by being all uppercase\n */\n isTransitionKey(e) {\n return /^[A-Z0-9_]+$/.test(e) && e.length > 0;\n }\n /**\n * Execute field triggers for a changed field\n * @param context - The field change context\n * @param options - Execution options (timeout and enableRollback)\n */\n async executeFieldTriggers(e, t = {}) {\n const { doctype: r, fieldname: o } = e, s = this.findFieldTriggers(r, o);\n if (s.length === 0)\n return {\n path: e.path,\n actionResults: [],\n totalExecutionTime: 0,\n allSucceeded: !0,\n stoppedOnError: !1,\n rolledBack: !1\n };\n const i = performance.now(), a = [];\n let c = !1, f = !1, g;\n const b = this.getFieldRollback(r, o), A = t.enableRollback ?? b ?? this.options.enableRollback;\n A && e.store && (g = this.captureSnapshot(e));\n for (const N of s)\n try {\n const D = await this.executeAction(N, e, t.timeout);\n if (a.push(D), !D.success) {\n c = !0;\n break;\n }\n } catch (D) {\n const S = {\n success: !1,\n error: D instanceof Error ? D : new Error(String(D)),\n executionTime: 0,\n action: N\n };\n a.push(S), c = !0;\n break;\n }\n if (A && c && g && e.store)\n try {\n this.restoreSnapshot(e, g), f = !0;\n } catch (N) {\n console.error(\"[FieldTriggers] Rollback failed:\", N);\n }\n const $ = performance.now() - i, k = a.filter((N) => !N.success);\n if (k.length > 0 && this.options.errorHandler)\n for (const N of k)\n try {\n this.options.errorHandler(N.error, e, N.action);\n } catch (D) {\n console.error(\"[FieldTriggers] Error in global error handler:\", D);\n }\n return {\n path: e.path,\n actionResults: a,\n totalExecutionTime: $,\n allSucceeded: a.every((N) => N.success),\n stoppedOnError: c,\n rolledBack: f,\n snapshot: this.options.debug && A ? g : void 0\n // Only include snapshot in debug mode if rollback is enabled\n };\n }\n /**\n * Execute XState transition actions\n * Similar to field triggers but specifically for FSM state transitions\n * @param context - The transition change context\n * @param options - Execution options (timeout)\n */\n async executeTransitionActions(e, t = {}) {\n const { doctype: r, transition: o } = e, s = this.findTransitionActions(r, o);\n if (s.length === 0)\n return [];\n const i = [];\n for (const c of s)\n try {\n const f = await this.executeTransitionAction(c, e, t.timeout);\n if (i.push(f), !f.success)\n break;\n } catch (f) {\n const b = {\n success: !1,\n error: f instanceof Error ? f : new Error(String(f)),\n executionTime: 0,\n action: c,\n transition: o\n };\n i.push(b);\n break;\n }\n const a = i.filter((c) => !c.success);\n if (a.length > 0 && this.options.errorHandler)\n for (const c of a)\n try {\n this.options.errorHandler(c.error, e, c.action);\n } catch (f) {\n console.error(\"[FieldTriggers] Error in global error handler:\", f);\n }\n return i;\n }\n /**\n * Find transition actions for a specific doctype and transition\n */\n findTransitionActions(e, t) {\n const r = this.doctypeTransitions.get(e);\n return r ? r.get(t) || [] : [];\n }\n /**\n * Execute a single transition action by name\n */\n async executeTransitionAction(e, t, r) {\n const o = performance.now(), s = r ?? this.options.defaultTimeout;\n try {\n let i = this.globalTransitionActions.get(e);\n if (!i) {\n const c = this.globalActions.get(e);\n c && (i = c);\n }\n if (!i)\n throw new Error(`Transition action \"${e}\" not found in registry`);\n return await this.executeWithTimeout(i, t, s), {\n success: !0,\n executionTime: performance.now() - o,\n action: e,\n transition: t.transition\n };\n } catch (i) {\n const a = performance.now() - o;\n return {\n success: !1,\n error: i instanceof Error ? i : new Error(String(i)),\n executionTime: a,\n action: e,\n transition: t.transition\n };\n }\n }\n /**\n * Find field triggers for a specific doctype and field\n * Field triggers are identified by keys that look like field paths (contain dots or match field names)\n */\n findFieldTriggers(e, t) {\n const r = this.doctypeActions.get(e);\n if (!r) return [];\n const o = [];\n for (const [s, i] of r)\n this.isFieldTriggerKey(s, t) && o.push(...i);\n return o;\n }\n /**\n * Determine if an action key represents a field trigger\n * Field triggers can be:\n * - Exact field name match: \"emailAddress\"\n * - Wildcard patterns: \"emailAddress.*\", \"*.is_primary\"\n * - Nested field paths: \"address.street\", \"contact.email\"\n */\n isFieldTriggerKey(e, t) {\n return e === t ? !0 : e.includes(\".\") ? this.matchFieldPattern(e, t) : e.includes(\"*\") ? this.matchFieldPattern(e, t) : !1;\n }\n /**\n * Match a field pattern against a field name\n * Supports wildcards (*) for dynamic segments\n */\n matchFieldPattern(e, t) {\n const r = e.split(\".\"), o = t.split(\".\");\n if (r.length !== o.length)\n return !1;\n for (let s = 0; s < r.length; s++) {\n const i = r[s], a = o[s];\n if (i !== \"*\" && i !== a)\n return !1;\n }\n return !0;\n }\n /**\n * Execute a single action by name\n */\n async executeAction(e, t, r) {\n const o = performance.now(), s = r ?? this.options.defaultTimeout;\n try {\n const i = this.globalActions.get(e);\n if (!i)\n throw new Error(`Action \"${e}\" not found in registry`);\n return await this.executeWithTimeout(i, t, s), {\n success: !0,\n executionTime: performance.now() - o,\n action: e\n };\n } catch (i) {\n const a = performance.now() - o;\n return {\n success: !1,\n error: i instanceof Error ? i : new Error(String(i)),\n executionTime: a,\n action: e\n };\n }\n }\n /**\n * Execute a function with timeout\n */\n async executeWithTimeout(e, t, r) {\n return new Promise((o, s) => {\n const i = setTimeout(() => {\n s(new Error(`Action timeout after ${r}ms`));\n }, r);\n Promise.resolve(e(t)).then((a) => {\n clearTimeout(i), o(a);\n }).catch((a) => {\n clearTimeout(i), s(a);\n });\n });\n }\n /**\n * Capture a snapshot of the record state before executing actions\n * This creates a deep copy of the record data for potential rollback\n */\n captureSnapshot(e) {\n if (!(!e.store || !e.doctype || !e.recordId))\n try {\n const t = `${e.doctype}.${e.recordId}`, r = e.store.get(t);\n return !r || typeof r != \"object\" ? void 0 : JSON.parse(JSON.stringify(r));\n } catch (t) {\n this.options.debug && console.warn(\"[FieldTriggers] Failed to capture snapshot:\", t);\n return;\n }\n }\n /**\n * Restore a previously captured snapshot\n * This reverts the record to its state before actions were executed\n */\n restoreSnapshot(e, t) {\n if (!(!e.store || !e.doctype || !e.recordId || !t))\n try {\n const r = `${e.doctype}.${e.recordId}`;\n e.store.set(r, t), this.options.debug && console.log(`[FieldTriggers] Rolled back ${r} to previous state`);\n } catch (r) {\n throw console.error(\"[FieldTriggers] Failed to restore snapshot:\", r), r;\n }\n }\n}\nfunction K(n) {\n return new ue(n);\n}\nfunction xt(n, e) {\n K().registerAction(n, e);\n}\nfunction Mt(n, e) {\n K().registerTransitionAction(n, e);\n}\nfunction Ft(n, e, t) {\n K().setFieldRollback(n, e, t);\n}\nasync function Bt(n, e, t) {\n const r = K(), o = {\n path: t?.path || (t?.recordId ? `${n}.${t.recordId}` : n),\n fieldname: \"\",\n beforeValue: void 0,\n afterValue: void 0,\n operation: \"set\",\n doctype: n,\n recordId: t?.recordId,\n timestamp: /* @__PURE__ */ new Date(),\n transition: e,\n currentState: t?.currentState,\n targetState: t?.targetState,\n fsmContext: t?.fsmContext\n };\n return await r.executeTransitionActions(o);\n}\nfunction jt(n, e) {\n if (n)\n try {\n pe().markIrreversible(n, e);\n } catch {\n }\n}\nfunction Ve() {\n try {\n return pe();\n } catch {\n return null;\n }\n}\nclass ne {\n static instance;\n /**\n * Gets the singleton instance of HST\n * @returns The HST singleton instance\n */\n static getInstance() {\n return ne.instance || (ne.instance = new ne()), ne.instance;\n }\n /**\n * Gets the global registry instance\n * @returns The global registry object or undefined if not found\n */\n getRegistry() {\n if (typeof globalThis < \"u\") {\n const e = globalThis.Registry?._root;\n if (e)\n return e;\n }\n if (typeof window < \"u\") {\n const e = window.Registry?._root;\n if (e)\n return e;\n }\n if (typeof global < \"u\" && global) {\n const e = global.Registry?._root;\n if (e)\n return e;\n }\n }\n /**\n * Helper method to get doctype metadata from the registry\n * @param doctype - The name of the doctype to retrieve metadata for\n * @returns The doctype metadata object or undefined if not found\n */\n getDoctypeMeta(e) {\n const t = this.getRegistry();\n if (t && typeof t == \"object\" && \"registry\" in t)\n return t.registry[e];\n }\n}\nclass Se {\n target;\n parentPath;\n rootNode;\n doctype;\n parentDoctype;\n hst;\n constructor(e, t, r = \"\", o = null, s) {\n return this.target = e, this.parentPath = r, this.rootNode = o || this, this.doctype = t, this.parentDoctype = s, this.hst = ne.getInstance(), new Proxy(this, {\n get(i, a) {\n if (a in i) return i[a];\n const c = String(a);\n return i.getNode(c);\n },\n set(i, a, c) {\n const f = String(a);\n return i.set(f, c), !0;\n }\n });\n }\n get(e) {\n return this.resolveValue(e);\n }\n // Method to get a tree-wrapped node for navigation\n getNode(e) {\n const t = this.resolvePath(e), r = this.resolveValue(e), o = t.split(\".\");\n let s = this.doctype;\n return this.doctype === \"StonecropStore\" && o.length >= 1 && (s = o[0]), typeof r == \"object\" && r !== null && !this.isPrimitive(r) ? new Se(r, s, t, this.rootNode, this.parentDoctype) : new Se(r, s, t, this.rootNode, this.parentDoctype);\n }\n set(e, t, r = \"user\") {\n const o = this.resolvePath(e), s = this.has(e) ? this.get(e) : void 0;\n if (r !== \"undo\" && r !== \"redo\") {\n const i = Ve();\n if (i && typeof i.addOperation == \"function\") {\n const a = o.split(\".\"), c = this.doctype === \"StonecropStore\" && a.length >= 1 ? a[0] : this.doctype, f = a.length >= 2 ? a[1] : void 0, g = a.slice(2).join(\".\") || a[a.length - 1], A = t === void 0 && s !== void 0 ? \"delete\" : \"set\";\n i.addOperation(\n {\n type: A,\n path: o,\n fieldname: g,\n beforeValue: s,\n afterValue: t,\n doctype: c,\n recordId: f,\n reversible: !0\n // Default to reversible, can be changed by field triggers\n },\n r\n );\n }\n }\n this.updateValue(e, t), this.triggerFieldActions(o, s, t);\n }\n has(e) {\n try {\n if (e === \"\")\n return !0;\n const t = this.parsePath(e);\n let r = this.target;\n for (let o = 0; o < t.length; o++) {\n const s = t[o];\n if (r == null)\n return !1;\n if (o === t.length - 1)\n return this.isImmutable(r) ? r.has(s) : this.isPiniaStore(r) && r.$state && s in r.$state || s in r;\n r = this.getProperty(r, s);\n }\n return !1;\n } catch {\n return !1;\n }\n }\n // Tree navigation methods\n getParent() {\n if (!this.parentPath) return null;\n const t = this.parentPath.split(\".\").slice(0, -1).join(\".\");\n return t === \"\" ? this.rootNode : this.rootNode.getNode(t);\n }\n getRoot() {\n return this.rootNode;\n }\n getPath() {\n return this.parentPath;\n }\n getDepth() {\n return this.parentPath ? this.parentPath.split(\".\").length : 0;\n }\n getBreadcrumbs() {\n return this.parentPath ? this.parentPath.split(\".\") : [];\n }\n /**\n * Trigger an XState transition with optional context data\n */\n async triggerTransition(e, t) {\n const r = K(), o = this.parentPath.split(\".\");\n let s = this.doctype, i;\n this.doctype === \"StonecropStore\" && o.length >= 1 && (s = o[0]), o.length >= 2 && (i = o[1]);\n const a = {\n path: this.parentPath,\n fieldname: \"\",\n // No specific field for transitions\n beforeValue: void 0,\n afterValue: void 0,\n operation: \"set\",\n doctype: s,\n recordId: i,\n timestamp: /* @__PURE__ */ new Date(),\n store: this.rootNode || void 0,\n transition: e,\n currentState: t?.currentState,\n targetState: t?.targetState,\n fsmContext: t?.fsmContext\n }, c = Ve();\n return c && typeof c.addOperation == \"function\" && c.addOperation(\n {\n type: \"transition\",\n path: this.parentPath,\n fieldname: e,\n beforeValue: t?.currentState,\n afterValue: t?.targetState,\n doctype: s,\n recordId: i,\n reversible: !1,\n // FSM transitions are generally not reversible\n metadata: {\n transition: e,\n currentState: t?.currentState,\n targetState: t?.targetState,\n fsmContext: t?.fsmContext\n }\n },\n \"user\"\n ), await r.executeTransitionActions(a);\n }\n // Private helper methods\n resolvePath(e) {\n return e === \"\" ? this.parentPath : this.parentPath ? `${this.parentPath}.${e}` : e;\n }\n resolveValue(e) {\n if (e === \"\")\n return this.target;\n const t = this.parsePath(e);\n let r = this.target;\n for (const o of t) {\n if (r == null)\n return;\n r = this.getProperty(r, o);\n }\n return r;\n }\n updateValue(e, t) {\n if (e === \"\")\n throw new Error(\"Cannot set value on empty path\");\n const r = this.parsePath(e), o = r.pop();\n let s = this.target;\n for (const i of r)\n if (s = this.getProperty(s, i), s == null)\n throw new Error(`Cannot set property on null/undefined path: ${e}`);\n this.setProperty(s, o, t);\n }\n getProperty(e, t) {\n return this.isImmutable(e) ? e.get(t) : this.isVueReactive(e) ? e[t] : this.isPiniaStore(e) ? e.$state?.[t] ?? e[t] : e[t];\n }\n setProperty(e, t, r) {\n if (this.isImmutable(e))\n throw new Error(\"Cannot directly mutate immutable objects. Use immutable update methods instead.\");\n if (this.isPiniaStore(e)) {\n e.$patch ? e.$patch({ [t]: r }) : e[t] = r;\n return;\n }\n e[t] = r;\n }\n async triggerFieldActions(e, t, r) {\n try {\n if (!e || typeof e != \"string\")\n return;\n const o = e.split(\".\");\n if (o.length < 3)\n return;\n const s = K(), i = o.slice(2).join(\".\") || o[o.length - 1];\n let a = this.doctype;\n this.doctype === \"StonecropStore\" && o.length >= 1 && (a = o[0]);\n let c;\n o.length >= 2 && (c = o[1]);\n const f = {\n path: e,\n fieldname: i,\n beforeValue: t,\n afterValue: r,\n operation: \"set\",\n doctype: a,\n recordId: c,\n timestamp: /* @__PURE__ */ new Date(),\n store: this.rootNode || void 0\n // Pass the root store for snapshot/rollback capabilities\n };\n await s.executeFieldTriggers(f);\n } catch (o) {\n o instanceof Error && console.warn(\"Field trigger error:\", o.message);\n }\n }\n isVueReactive(e) {\n return e && typeof e == \"object\" && \"__v_isReactive\" in e && e.__v_isReactive === !0;\n }\n isPiniaStore(e) {\n return e && typeof e == \"object\" && (\"$state\" in e || \"$patch\" in e || \"$id\" in e);\n }\n isImmutable(e) {\n if (!e || typeof e != \"object\")\n return !1;\n const t = \"get\" in e && typeof e.get == \"function\", r = \"set\" in e && typeof e.set == \"function\", o = \"has\" in e && typeof e.has == \"function\", s = \"__ownerID\" in e || \"_map\" in e || \"_list\" in e || \"_origin\" in e || \"_capacity\" in e || \"_defaultValues\" in e || \"_tail\" in e || \"_root\" in e || \"size\" in e && t && r;\n let i;\n try {\n const c = e;\n if (\"constructor\" in c && c.constructor && typeof c.constructor == \"object\" && \"name\" in c.constructor) {\n const f = c.constructor.name;\n i = typeof f == \"string\" ? f : void 0;\n }\n } catch {\n i = void 0;\n }\n const a = i && (i.includes(\"Map\") || i.includes(\"List\") || i.includes(\"Set\") || i.includes(\"Stack\") || i.includes(\"Seq\")) && (t || r);\n return !!(t && r && o && s || t && r && a);\n }\n isPrimitive(e) {\n return e == null || typeof e == \"string\" || typeof e == \"number\" || typeof e == \"boolean\" || typeof e == \"function\" || typeof e == \"symbol\" || typeof e == \"bigint\";\n }\n /**\n * Parse a path string into segments, handling both dot notation and array bracket notation\n * @param path - The path string to parse (e.g., \"order.456.line_items[0].product\")\n * @returns Array of path segments (e.g., ['order', '456', 'line_items', '0', 'product'])\n */\n parsePath(e) {\n return e ? e.replace(/\\[(\\d+)\\]/g, \".$1\").split(\".\").filter((r) => r.length > 0) : [];\n }\n}\nfunction Dt(n, e, t) {\n return new Se(n, e, \"\", null, t);\n}\nclass Ke {\n hstStore;\n _operationLogStore;\n _operationLogConfig;\n /** The registry instance containing all doctype definitions */\n registry;\n /**\n * Creates a new Stonecrop instance with HST integration\n * @param registry - The Registry instance containing doctype definitions\n * @param operationLogConfig - Optional configuration for the operation log\n */\n constructor(e, t) {\n this.registry = e, this._operationLogConfig = t, this.initializeHSTStore(), this.setupRegistrySync();\n }\n /**\n * Get the operation log store (lazy initialization)\n * @internal\n */\n getOperationLogStore() {\n return this._operationLogStore || (this._operationLogStore = pe(), this._operationLogConfig && this._operationLogStore.configure(this._operationLogConfig)), this._operationLogStore;\n }\n /**\n * Initialize the HST store structure\n */\n initializeHSTStore() {\n const e = {};\n Object.keys(this.registry.registry).forEach((t) => {\n e[t] = {};\n }), this.hstStore = Dt(ye(e), \"StonecropStore\");\n }\n /**\n * Setup automatic sync with Registry when doctypes are added\n */\n setupRegistrySync() {\n const e = this.registry.addDoctype.bind(this.registry);\n this.registry.addDoctype = (t) => {\n e(t), this.hstStore.has(t.slug) || this.hstStore.set(t.slug, {});\n };\n }\n /**\n * Get records hash for a doctype\n * @param doctype - The doctype to get records for\n * @returns HST node containing records hash\n */\n records(e) {\n const t = typeof e == \"string\" ? e : e.slug;\n return this.ensureDoctypeExists(t), this.hstStore.getNode(t);\n }\n /**\n * Add a record to the store\n * @param doctype - The doctype\n * @param recordId - The record ID\n * @param recordData - The record data\n */\n addRecord(e, t, r) {\n const o = typeof e == \"string\" ? e : e.slug;\n this.ensureDoctypeExists(o), this.hstStore.set(`${o}.${t}`, r);\n }\n /**\n * Get a specific record\n * @param doctype - The doctype\n * @param recordId - The record ID\n * @returns HST node for the record or undefined\n */\n getRecordById(e, t) {\n const r = typeof e == \"string\" ? e : e.slug;\n if (this.ensureDoctypeExists(r), !(!this.hstStore.has(`${r}.${t}`) || this.hstStore.get(`${r}.${t}`) === void 0))\n return this.hstStore.getNode(`${r}.${t}`);\n }\n /**\n * Remove a record from the store\n * @param doctype - The doctype\n * @param recordId - The record ID\n */\n removeRecord(e, t) {\n const r = typeof e == \"string\" ? e : e.slug;\n this.ensureDoctypeExists(r), this.hstStore.has(`${r}.${t}`) && this.hstStore.set(`${r}.${t}`, void 0);\n }\n /**\n * Get all record IDs for a doctype\n * @param doctype - The doctype\n * @returns Array of record IDs\n */\n getRecordIds(e) {\n const t = typeof e == \"string\" ? e : e.slug;\n this.ensureDoctypeExists(t);\n const r = this.hstStore.get(t);\n return !r || typeof r != \"object\" ? [] : Object.keys(r).filter((o) => r[o] !== void 0);\n }\n /**\n * Clear all records for a doctype\n * @param doctype - The doctype\n */\n clearRecords(e) {\n const t = typeof e == \"string\" ? e : e.slug;\n this.ensureDoctypeExists(t), this.getRecordIds(t).forEach((o) => {\n this.hstStore.set(`${t}.${o}`, void 0);\n });\n }\n /**\n * Setup method for doctype initialization\n * @param doctype - The doctype to setup\n */\n setup(e) {\n this.ensureDoctypeExists(e.slug);\n }\n /**\n * Run action on doctype\n * Executes the action and logs it to the operation log for audit tracking\n * @param doctype - The doctype\n * @param action - The action to run\n * @param args - Action arguments (typically record IDs)\n */\n runAction(e, t, r) {\n const s = this.registry.registry[e.slug]?.actions?.get(t), i = Array.isArray(r) ? r.filter((g) => typeof g == \"string\") : void 0, a = this.getOperationLogStore();\n let c = \"success\", f;\n try {\n s && s.length > 0 && s.forEach((g) => {\n try {\n new Function(\"args\", g)(r);\n } catch (b) {\n throw c = \"failure\", f = b instanceof Error ? b.message : \"Unknown error\", b;\n }\n });\n } catch {\n } finally {\n a.logAction(e.doctype, t, i, c, f);\n }\n }\n /**\n * Get records from server (maintains compatibility)\n * @param doctype - The doctype\n */\n async getRecords(e) {\n (await (await fetch(`/${e.slug}`)).json()).forEach((o) => {\n o.id && this.addRecord(e, o.id, o);\n });\n }\n /**\n * Get single record from server (maintains compatibility)\n * @param doctype - The doctype\n * @param recordId - The record ID\n */\n async getRecord(e, t) {\n const o = await (await fetch(`/${e.slug}/${t}`)).json();\n this.addRecord(e, t, o);\n }\n /**\n * Ensure doctype section exists in HST store\n * @param slug - The doctype slug\n */\n ensureDoctypeExists(e) {\n this.hstStore.has(e) || this.hstStore.set(e, {});\n }\n /**\n * Get doctype metadata from the registry\n * @param context - The route context\n * @returns The doctype metadata\n */\n async getMeta(e) {\n if (!this.registry.getMeta)\n throw new Error(\"No getMeta function provided to Registry\");\n return await this.registry.getMeta(e);\n }\n /**\n * Get the root HST store node for advanced usage\n * @returns Root HST node\n */\n getStore() {\n return this.hstStore;\n }\n}\nfunction Wt(n) {\n n || (n = {});\n const e = n.registry || oe(\"$registry\"), t = oe(\"$stonecrop\"), r = B(), o = B(), s = B({}), i = B(), a = B(), c = B([]);\n if (n.doctype && e) {\n const y = n.doctype.schema ? Array.isArray(n.doctype.schema) ? n.doctype.schema : Array.from(n.doctype.schema) : [];\n c.value = e.resolveSchema(y);\n }\n const f = B([]), g = B(-1), b = W(() => r.value?.getOperationLogStore().canUndo ?? !1), A = W(() => r.value?.getOperationLogStore().canRedo ?? !1), $ = W(() => r.value?.getOperationLogStore().undoCount ?? 0), k = W(() => r.value?.getOperationLogStore().redoCount ?? 0), x = W(\n () => r.value?.getOperationLogStore().undoRedoState ?? {\n canUndo: !1,\n canRedo: !1,\n undoCount: 0,\n redoCount: 0,\n currentIndex: -1\n }\n ), N = (y) => r.value?.getOperationLogStore().undo(y) ?? !1, D = (y) => r.value?.getOperationLogStore().redo(y) ?? !1, P = () => {\n r.value?.getOperationLogStore().startBatch();\n }, S = (y) => r.value?.getOperationLogStore().commitBatch(y) ?? null, C = () => {\n r.value?.getOperationLogStore().cancelBatch();\n }, O = () => {\n r.value?.getOperationLogStore().clear();\n }, _ = (y, E) => r.value?.getOperationLogStore().getOperationsFor(y, E) ?? [], v = () => r.value?.getOperationLogStore().getSnapshot() ?? {\n operations: [],\n currentIndex: -1,\n totalOperations: 0,\n reversibleOperations: 0,\n irreversibleOperations: 0\n }, j = (y, E) => {\n r.value?.getOperationLogStore().markIrreversible(y, E);\n }, M = (y, E, m, u = \"success\", l) => r.value?.getOperationLogStore().logAction(y, E, m, u, l) ?? \"\", d = (y) => {\n r.value?.getOperationLogStore().configure(y);\n };\n Be(async () => {\n if (e) {\n r.value = t || new Ke(e);\n try {\n const y = r.value.getOperationLogStore(), E = Ue(y);\n f.value = E.operations.value, g.value = E.currentIndex.value, U(\n () => E.operations.value,\n (m) => {\n f.value = m;\n }\n ), U(\n () => E.currentIndex.value,\n (m) => {\n g.value = m;\n }\n );\n } catch {\n }\n if (!n.doctype && e.router) {\n const y = e.router.currentRoute.value;\n if (!y.path) return;\n const E = y.path.split(\"/\").filter((u) => u.length > 0), m = E[1]?.toLowerCase();\n if (E.length > 0) {\n const u = {\n path: y.path,\n segments: E\n }, l = await e.getMeta?.(u);\n if (l) {\n if (e.addDoctype(l), r.value.setup(l), i.value = l, a.value = m, o.value = r.value.getStore(), e) {\n const h = l.schema ? Array.isArray(l.schema) ? l.schema : Array.from(l.schema) : [];\n c.value = e.resolveSchema(h);\n }\n if (m && m !== \"new\") {\n const h = r.value.getRecordById(l, m);\n if (h)\n s.value = h.get(\"\") || {};\n else\n try {\n await r.value.getRecord(l, m);\n const I = r.value.getRecordById(l, m);\n I && (s.value = I.get(\"\") || {});\n } catch {\n s.value = J(l);\n }\n } else\n s.value = J(l);\n o.value && xe(l, m || \"new\", s, o.value), r.value.runAction(l, \"load\", m ? [m] : void 0);\n }\n }\n }\n if (n.doctype) {\n o.value = r.value.getStore();\n const y = n.doctype, E = n.recordId;\n if (E && E !== \"new\") {\n const m = r.value.getRecordById(y, E);\n if (m)\n s.value = m.get(\"\") || {};\n else\n try {\n await r.value.getRecord(y, E);\n const u = r.value.getRecordById(y, E);\n u && (s.value = u.get(\"\") || {});\n } catch {\n s.value = J(y);\n }\n } else\n s.value = J(y);\n o.value && xe(y, E || \"new\", s, o.value);\n }\n }\n });\n const p = (y, E) => {\n const m = n.doctype || i.value;\n if (!m) return \"\";\n const u = E || n.recordId || a.value || \"new\";\n return `${m.slug}.${u}.${y}`;\n }, R = (y) => {\n const E = n.doctype || i.value;\n if (!(!o.value || !r.value || !E))\n try {\n const m = y.path.split(\".\");\n if (m.length >= 2) {\n const h = m[0], I = m[1];\n if (o.value.has(`${h}.${I}`) || r.value.addRecord(E, I, { ...s.value }), m.length > 3) {\n const H = `${h}.${I}`, V = m.slice(2);\n let Z = H;\n for (let X = 0; X < V.length - 1; X++)\n if (Z += `.${V[X]}`, !o.value.has(Z)) {\n const we = V[X + 1], Qe = !isNaN(Number(we));\n o.value.set(Z, Qe ? [] : {});\n }\n }\n }\n o.value.set(y.path, y.value);\n const u = y.fieldname.split(\".\"), l = { ...s.value };\n u.length === 1 ? l[u[0]] = y.value : Tt(l, u, y.value), s.value = l;\n } catch {\n }\n };\n (n.doctype || e?.router) && (De(\"hstPathProvider\", p), De(\"hstChangeHandler\", R));\n const F = (y, E, m) => {\n if (!r.value)\n return J(E);\n if (m)\n try {\n const u = o.value?.get(y);\n return u && typeof u == \"object\" ? u : J(E);\n } catch {\n return J(E);\n }\n return J(E);\n }, w = async (y, E) => {\n if (!o.value || !r.value)\n throw new Error(\"HST store not initialized\");\n const m = `${y.slug}.${E}`, l = { ...o.value.get(m) || {} }, h = y.schema ? Array.isArray(y.schema) ? y.schema : Array.from(y.schema) : [], H = (e ? e.resolveSchema(h) : h).filter(\n (V) => \"fieldtype\" in V && V.fieldtype === \"Doctype\" && \"schema\" in V && Array.isArray(V.schema)\n );\n for (const V of H) {\n const Z = V, X = `${m}.${Z.fieldname}`, we = Ze(Z.schema, X, o.value);\n l[Z.fieldname] = we;\n }\n return l;\n }, T = (y, E) => ({\n provideHSTPath: (l) => `${y}.${l}`,\n handleHSTChange: (l) => {\n const h = l.path.startsWith(y) ? l.path : `${y}.${l.fieldname}`;\n R({\n ...l,\n path: h\n });\n }\n }), L = {\n operations: f,\n currentIndex: g,\n undoRedoState: x,\n canUndo: b,\n canRedo: A,\n undoCount: $,\n redoCount: k,\n undo: N,\n redo: D,\n startBatch: P,\n commitBatch: S,\n cancelBatch: C,\n clear: O,\n getOperationsFor: _,\n getSnapshot: v,\n markIrreversible: j,\n logAction: M,\n configure: d\n };\n return n.doctype ? {\n stonecrop: r,\n operationLog: L,\n provideHSTPath: p,\n handleHSTChange: R,\n hstStore: o,\n formData: s,\n resolvedSchema: c,\n loadNestedData: F,\n saveRecursive: w,\n createNestedContext: T\n } : !n.doctype && e?.router ? {\n stonecrop: r,\n operationLog: L,\n provideHSTPath: p,\n handleHSTChange: R,\n hstStore: o,\n formData: s,\n resolvedSchema: c,\n loadNestedData: F,\n saveRecursive: w,\n createNestedContext: T\n } : {\n stonecrop: r,\n operationLog: L\n };\n}\nfunction J(n) {\n const e = {};\n return n.schema && n.schema.forEach((t) => {\n switch (\"fieldtype\" in t ? t.fieldtype : \"Data\") {\n case \"Data\":\n case \"Text\":\n e[t.fieldname] = \"\";\n break;\n case \"Check\":\n e[t.fieldname] = !1;\n break;\n case \"Int\":\n case \"Float\":\n e[t.fieldname] = 0;\n break;\n case \"Table\":\n e[t.fieldname] = [];\n break;\n case \"JSON\":\n e[t.fieldname] = {};\n break;\n default:\n e[t.fieldname] = null;\n }\n }), e;\n}\nfunction xe(n, e, t, r) {\n U(\n t,\n (o) => {\n const s = `${n.slug}.${e}`;\n Object.keys(o).forEach((i) => {\n const a = `${s}.${i}`;\n try {\n r.set(a, o[i]);\n } catch {\n }\n });\n },\n { deep: !0 }\n );\n}\nfunction Tt(n, e, t) {\n let r = n;\n for (let s = 0; s < e.length - 1; s++) {\n const i = e[s];\n (!(i in r) || typeof r[i] != \"object\") && (r[i] = isNaN(Number(e[s + 1])) ? {} : []), r = r[i];\n }\n const o = e[e.length - 1];\n r[o] = t;\n}\nfunction Ze(n, e, t) {\n const o = { ...t.get(e) || {} }, s = n.filter(\n (i) => \"fieldtype\" in i && i.fieldtype === \"Doctype\" && \"schema\" in i && Array.isArray(i.schema)\n );\n for (const i of s) {\n const a = i, c = `${e}.${a.fieldname}`, f = Ze(a.schema, c, t);\n o[a.fieldname] = f;\n }\n return o;\n}\nfunction Ge(n) {\n const t = oe(\"$operationLogStore\", void 0) || pe();\n n && t.configure(n);\n const { operations: r, currentIndex: o, undoRedoState: s, canUndo: i, canRedo: a, undoCount: c, redoCount: f } = Ue(t);\n function g(O) {\n return t.undo(O);\n }\n function b(O) {\n return t.redo(O);\n }\n function A() {\n t.startBatch();\n }\n function $(O) {\n return t.commitBatch(O);\n }\n function k() {\n t.cancelBatch();\n }\n function x() {\n t.clear();\n }\n function N(O, _) {\n return t.getOperationsFor(O, _);\n }\n function D() {\n return t.getSnapshot();\n }\n function P(O, _) {\n t.markIrreversible(O, _);\n }\n function S(O, _, v, j = \"success\", M) {\n return t.logAction(O, _, v, j, M);\n }\n function C(O) {\n t.configure(O);\n }\n return {\n // State\n operations: r,\n currentIndex: o,\n undoRedoState: s,\n canUndo: i,\n canRedo: a,\n undoCount: c,\n redoCount: f,\n // Methods\n undo: g,\n redo: b,\n startBatch: A,\n commitBatch: $,\n cancelBatch: k,\n clear: x,\n getOperationsFor: N,\n getSnapshot: D,\n markIrreversible: P,\n logAction: S,\n configure: C\n };\n}\nfunction Ht(n, e = !0) {\n if (!e) return;\n const { undo: t, redo: r, canUndo: o, canRedo: s } = Ge(), i = _t();\n ie(i[\"Ctrl+Z\"], () => {\n o.value && t(n);\n }), ie(i[\"Meta+Z\"], () => {\n o.value && t(n);\n }), ie(i[\"Ctrl+Shift+Z\"], () => {\n s.value && r(n);\n }), ie(i[\"Meta+Shift+Z\"], () => {\n s.value && r(n);\n }), ie(i[\"Ctrl+Y\"], () => {\n s.value && r(n);\n });\n}\nasync function zt(n, e) {\n const { startBatch: t, commitBatch: r, cancelBatch: o } = Ge();\n t();\n try {\n return await n(), r(e);\n } catch (s) {\n throw o(), s;\n }\n}\nclass Ut {\n /**\n * The doctype name\n * @public\n * @readonly\n */\n doctype;\n /**\n * The doctype schema\n * @public\n * @readonly\n */\n schema;\n /**\n * The doctype workflow\n * @public\n * @readonly\n */\n workflow;\n /**\n * The doctype actions and field triggers\n * @public\n * @readonly\n */\n actions;\n /**\n * The doctype component\n * @public\n * @readonly\n */\n component;\n /**\n * Creates a new DoctypeMeta instance\n * @param doctype - The doctype name\n * @param schema - The doctype schema definition\n * @param workflow - The doctype workflow configuration (XState machine)\n * @param actions - The doctype actions and field triggers\n * @param component - Optional Vue component for rendering the doctype\n */\n constructor(e, t, r, o, s) {\n this.doctype = e, this.schema = t, this.workflow = r, this.actions = o, this.component = s;\n }\n /**\n * Converts the registered doctype string to a slug (kebab-case). The following conversions are made:\n * - It replaces camelCase and PascalCase with kebab-case strings\n * - It replaces spaces and underscores with hyphens\n * - It converts the string to lowercase\n *\n * @returns The slugified doctype string\n *\n * @example\n * ```ts\n * const doctype = new DoctypeMeta('TaskItem', schema, workflow, actions\n * console.log(doctype.slug) // 'task-item'\n * ```\n *\n * @public\n */\n get slug() {\n return this.doctype.replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[\\s_]+/g, \"-\").toLowerCase();\n }\n}\nclass fe {\n /**\n * The root Registry instance\n */\n static _root;\n /**\n * The name of the Registry instance\n *\n * @defaultValue 'Registry'\n */\n name;\n /**\n * The registry property contains a collection of doctypes\n * @see {@link DoctypeMeta}\n */\n registry;\n /**\n * The Vue router instance\n * @see {@link https://router.vuejs.org/}\n */\n router;\n /**\n * Creates a new Registry instance (singleton pattern)\n * @param router - Optional Vue router instance for route management\n * @param getMeta - Optional function to fetch doctype metadata from an API\n */\n constructor(e, t) {\n if (fe._root)\n return fe._root;\n fe._root = this, this.name = \"Registry\", this.registry = {}, this.router = e, this.getMeta = t;\n }\n /**\n * The getMeta function fetches doctype metadata from an API based on route context\n * @see {@link DoctypeMeta}\n */\n getMeta;\n /**\n * Get doctype metadata\n * @param doctype - The doctype to fetch metadata for\n * @returns The doctype metadata\n * @see {@link DoctypeMeta}\n */\n addDoctype(e) {\n e.doctype in Object.keys(this.registry) || (this.registry[e.slug] = e);\n const t = K();\n t.registerDoctypeActions(e.doctype, e.actions), e.slug !== e.doctype && t.registerDoctypeActions(e.slug, e.actions), e.component && this.router && !this.router.hasRoute(e.doctype) && this.router.addRoute({\n path: `/${e.slug}`,\n name: e.slug,\n component: e.component\n });\n }\n /**\n * Resolve nested Doctype and Table fields in a schema by embedding child schemas inline.\n *\n * @remarks\n * Walks the schema array and for each field with `fieldtype: 'Doctype'` and a string\n * `options` value, looks up the referenced doctype in the registry and embeds its schema\n * as the field's `schema` property. Recurses for deeply nested doctypes.\n *\n * For fields with `fieldtype: 'Table'`, looks up the referenced child doctype and\n * auto-derives `columns` from its schema fields (unless columns are already provided).\n * Also sets sensible defaults for `component` (`'ATable'`) and `config` (`{ view: 'list' }`).\n * Row data is expected to come from the parent form's data model at `data[fieldname]`.\n *\n * Returns a new array — does not mutate the original schema.\n *\n * @param schema - The schema array to resolve\n * @returns A new schema array with nested Doctype fields resolved\n *\n * @example\n * ```ts\n * registry.addDoctype(addressDoctype)\n * registry.addDoctype(customerDoctype)\n *\n * // Before: customer schema has { fieldname: 'address', fieldtype: 'Doctype', options: 'address' }\n * const resolved = registry.resolveSchema(customerSchema)\n * // After: address field now has schema: [...address fields...]\n * ```\n *\n * @public\n */\n resolveSchema(e, t) {\n const r = t || /* @__PURE__ */ new Set();\n return e.map((o) => {\n if (\"fieldtype\" in o && o.fieldtype === \"Doctype\" && \"options\" in o && typeof o.options == \"string\") {\n const s = o.options;\n if (r.has(s))\n return { ...o };\n const i = this.registry[s];\n if (i && i.schema) {\n const a = Array.isArray(i.schema) ? i.schema : Array.from(i.schema);\n r.add(s);\n const c = this.resolveSchema(a, r);\n return r.delete(s), { ...o, schema: c };\n }\n }\n if (\"fieldtype\" in o && o.fieldtype === \"Table\" && \"options\" in o && typeof o.options == \"string\") {\n const s = o.options;\n if (r.has(s))\n return { ...o };\n const i = this.registry[s];\n if (i && i.schema) {\n const a = Array.isArray(i.schema) ? i.schema : Array.from(i.schema), c = { ...o };\n return (!(\"columns\" in o) || !o.columns) && (c.columns = a.map((f) => ({\n name: f.fieldname,\n fieldname: f.fieldname,\n label: \"label\" in f && f.label || f.fieldname,\n fieldtype: \"fieldtype\" in f ? f.fieldtype : \"Data\",\n align: \"align\" in f && f.align || \"left\",\n edit: \"edit\" in f ? f.edit : !0,\n width: \"width\" in f && f.width || \"20ch\"\n }))), c.component || (c.component = \"ATable\"), (!(\"config\" in o) || !o.config) && (c.config = { view: \"list\" }), (!(\"rows\" in o) || !o.rows) && (c.rows = []), c;\n }\n }\n return { ...o };\n });\n }\n /**\n * Initialize a new record with default values based on a schema.\n *\n * @remarks\n * Creates a plain object with keys from the schema's fieldnames and default values\n * derived from each field's `fieldtype`:\n * - Data, Text → `''`\n * - Check → `false`\n * - Int, Float, Decimal, Currency, Quantity → `0`\n * - Table → `[]`\n * - JSON, Doctype → `{}`\n * - All others → `null`\n *\n * For Doctype fields with a resolved `schema` array, recursively initializes the nested record.\n *\n * @param schema - The schema array to derive defaults from\n * @returns A plain object with default values for each field\n *\n * @example\n * ```ts\n * const defaults = registry.initializeRecord(addressSchema)\n * // { street: '', city: '', state: '', zip_code: '' }\n * ```\n *\n * @public\n */\n initializeRecord(e) {\n const t = {};\n return e.forEach((r) => {\n switch (\"fieldtype\" in r ? r.fieldtype : \"Data\") {\n case \"Data\":\n case \"Text\":\n case \"Code\":\n t[r.fieldname] = \"\";\n break;\n case \"Check\":\n t[r.fieldname] = !1;\n break;\n case \"Int\":\n case \"Float\":\n case \"Decimal\":\n case \"Currency\":\n case \"Quantity\":\n t[r.fieldname] = 0;\n break;\n case \"Table\":\n t[r.fieldname] = [];\n break;\n case \"JSON\":\n t[r.fieldname] = {};\n break;\n case \"Doctype\":\n \"schema\" in r && Array.isArray(r.schema) ? t[r.fieldname] = this.initializeRecord(r.schema) : t[r.fieldname] = {};\n break;\n default:\n t[r.fieldname] = null;\n }\n }), t;\n }\n // TODO: should we allow clearing the registry at all?\n // clear() {\n // \tthis.registry = {}\n // \tif (this.router) {\n // \t\tconst routes = this.router.getRoutes()\n // \t\tfor (const route of routes) {\n // \t\t\tif (route.name) {\n // \t\t\t\tthis.router.removeRoute(route.name)\n // \t\t\t}\n // \t\t}\n // \t}\n // }\n}\nasync function It(n, e, t) {\n await de();\n try {\n await t(n, e);\n } catch {\n }\n}\nconst Jt = {\n install: (n, e) => {\n const t = n.config.globalProperties.$router, r = e?.router, o = t || r;\n !t && r && n.use(r);\n const s = new fe(o, e?.getMeta);\n n.provide(\"$registry\", s), n.config.globalProperties.$registry = s;\n const i = new Ke(s);\n n.provide(\"$stonecrop\", i), n.config.globalProperties.$stonecrop = i;\n try {\n const a = n.config.globalProperties.$pinia;\n if (a) {\n const c = pe(a);\n n.provide(\"$operationLogStore\", c), n.config.globalProperties.$operationLogStore = c;\n }\n } catch (a) {\n console.warn(\"Pinia not available - operation log features will be disabled:\", a);\n }\n if (e?.components)\n for (const [a, c] of Object.entries(e.components))\n n.component(a, c);\n e?.autoInitializeRouter && e.onRouterInitialized && It(s, i, e.onRouterInitialized);\n }\n};\nvar Ct = /* @__PURE__ */ ((n) => (n.ERROR = \"error\", n.WARNING = \"warning\", n.INFO = \"info\", n))(Ct || {});\nclass kt {\n options;\n /**\n * Creates a new SchemaValidator instance\n * @param options - Validator configuration options\n */\n constructor(e = {}) {\n this.options = {\n registry: e.registry || null,\n validateLinkTargets: e.validateLinkTargets ?? !0,\n validateActions: e.validateActions ?? !0,\n validateWorkflows: e.validateWorkflows ?? !0,\n validateRequiredProperties: e.validateRequiredProperties ?? !0\n };\n }\n /**\n * Validates a complete doctype schema\n * @param doctype - Doctype name\n * @param schema - Schema fields (List or Array)\n * @param workflow - Optional workflow configuration\n * @param actions - Optional actions map\n * @returns Validation result\n */\n validate(e, t, r, o) {\n const s = [], i = t ? Array.isArray(t) ? t : t.toArray() : [];\n if (this.options.validateRequiredProperties && s.push(...this.validateRequiredProperties(e, i)), this.options.validateLinkTargets && this.options.registry && s.push(...this.validateLinkFields(e, i, this.options.registry)), this.options.validateWorkflows && r && s.push(...this.validateWorkflow(e, r)), this.options.validateActions && o) {\n const g = o instanceof Map ? o : o.toObject();\n s.push(...this.validateActionRegistration(e, g));\n }\n const a = s.filter(\n (g) => g.severity === \"error\"\n /* ERROR */\n ).length, c = s.filter(\n (g) => g.severity === \"warning\"\n /* WARNING */\n ).length, f = s.filter(\n (g) => g.severity === \"info\"\n /* INFO */\n ).length;\n return {\n valid: a === 0,\n issues: s,\n errorCount: a,\n warningCount: c,\n infoCount: f\n };\n }\n /**\n * Validates that required schema properties are present\n * @internal\n */\n validateRequiredProperties(e, t) {\n const r = [];\n for (const o of t) {\n if (!o.fieldname) {\n r.push({\n severity: \"error\",\n rule: \"required-fieldname\",\n message: \"Field is missing required property: fieldname\",\n doctype: e,\n context: { field: o }\n });\n continue;\n }\n if (!o.component && !(\"fieldtype\" in o) && r.push({\n severity: \"error\",\n rule: \"required-component-or-fieldtype\",\n message: `Field \"${o.fieldname}\" must have either component or fieldtype property`,\n doctype: e,\n fieldname: o.fieldname\n }), \"schema\" in o) {\n const s = o.schema, i = Array.isArray(s) ? s : s.toArray?.() || [];\n r.push(...this.validateRequiredProperties(e, i));\n }\n }\n return r;\n }\n /**\n * Validates Link field targets exist in registry\n * @internal\n */\n validateLinkFields(e, t, r) {\n const o = [];\n for (const s of t) {\n if ((\"fieldtype\" in s ? s.fieldtype : void 0) === \"Link\") {\n const a = \"options\" in s ? s.options : void 0;\n if (!a) {\n o.push({\n severity: \"error\",\n rule: \"link-missing-options\",\n message: `Link field \"${s.fieldname}\" is missing options property (target doctype)`,\n doctype: e,\n fieldname: s.fieldname\n });\n continue;\n }\n const c = typeof a == \"string\" ? a : \"\";\n if (!c) {\n o.push({\n severity: \"error\",\n rule: \"link-invalid-options\",\n message: `Link field \"${s.fieldname}\" has invalid options format (expected string doctype name)`,\n doctype: e,\n fieldname: s.fieldname\n });\n continue;\n }\n r.registry[c] || r.registry[c.toLowerCase()] || o.push({\n severity: \"error\",\n rule: \"link-invalid-target\",\n message: `Link field \"${s.fieldname}\" references non-existent doctype: \"${c}\"`,\n doctype: e,\n fieldname: s.fieldname,\n context: { targetDoctype: c }\n });\n }\n if (\"schema\" in s) {\n const a = s.schema, c = Array.isArray(a) ? a : a.toArray?.() || [];\n o.push(...this.validateLinkFields(e, c, r));\n }\n }\n return o;\n }\n /**\n * Validates workflow state machine configuration\n * @internal\n */\n validateWorkflow(e, t) {\n const r = [];\n if (!t.initial && !t.type && r.push({\n severity: \"warning\",\n rule: \"workflow-missing-initial\",\n message: \"Workflow is missing initial state property\",\n doctype: e\n }), !t.states || Object.keys(t.states).length === 0)\n return r.push({\n severity: \"warning\",\n rule: \"workflow-no-states\",\n message: \"Workflow has no states defined\",\n doctype: e\n }), r;\n t.initial && typeof t.initial == \"string\" && !t.states[t.initial] && r.push({\n severity: \"error\",\n rule: \"workflow-invalid-initial\",\n message: `Workflow initial state \"${t.initial}\" does not exist in states`,\n doctype: e,\n context: { initialState: t.initial }\n });\n const o = Object.keys(t.states), s = /* @__PURE__ */ new Set();\n t.initial && typeof t.initial == \"string\" && s.add(t.initial);\n for (const [i, a] of Object.entries(t.states)) {\n const c = a;\n if (c.on) {\n for (const [f, g] of Object.entries(c.on))\n if (typeof g == \"string\")\n s.add(g);\n else if (g && typeof g == \"object\") {\n const b = \"target\" in g ? g.target : void 0;\n typeof b == \"string\" ? s.add(b) : Array.isArray(b) && b.forEach((A) => {\n typeof A == \"string\" && s.add(A);\n });\n }\n }\n }\n for (const i of o)\n s.has(i) || r.push({\n severity: \"warning\",\n rule: \"workflow-unreachable-state\",\n message: `Workflow state \"${i}\" may not be reachable`,\n doctype: e,\n context: { stateName: i }\n });\n return r;\n }\n /**\n * Validates that actions are registered in the FieldTriggerEngine\n * @internal\n */\n validateActionRegistration(e, t) {\n const r = [], o = K();\n for (const [s, i] of Object.entries(t)) {\n if (!Array.isArray(i)) {\n r.push({\n severity: \"error\",\n rule: \"action-invalid-format\",\n message: `Action configuration for \"${s}\" must be an array`,\n doctype: e,\n context: { triggerName: s, actionNames: i }\n });\n continue;\n }\n for (const a of i) {\n const c = o;\n c.globalActions?.has(a) || c.globalTransitionActions?.has(a) || r.push({\n severity: \"warning\",\n rule: \"action-not-registered\",\n message: `Action \"${a}\" referenced in \"${s}\" is not registered in FieldTriggerEngine`,\n doctype: e,\n context: { triggerName: s, actionName: a }\n });\n }\n }\n return r;\n }\n}\nfunction Lt(n, e) {\n return new kt({\n registry: n,\n ...e\n });\n}\nfunction qt(n, e, t, r, o) {\n return Lt(t).validate(n, e, r, o);\n}\nexport {\n Ut as DoctypeMeta,\n ne as HST,\n fe as Registry,\n kt as SchemaValidator,\n Ke as Stonecrop,\n Ct as ValidationSeverity,\n Dt as createHST,\n Lt as createValidator,\n Jt as default,\n K as getGlobalTriggerEngine,\n jt as markOperationIrreversible,\n xt as registerGlobalAction,\n Mt as registerTransitionAction,\n Ft as setFieldRollback,\n Bt as triggerTransition,\n Ge as useOperationLog,\n pe as useOperationLogStore,\n Wt as useStonecrop,\n Ht as useUndoRedoShortcuts,\n qt as validateSchema,\n zt as withBatch\n};\n//# sourceMappingURL=stonecrop.js.map\n","import { defineComponent as Y, useTemplateRef as ae, ref as S, computed as T, createElementBlock as k, openBlock as w, unref as L, normalizeClass as K, normalizeStyle as fe, createBlock as re, resolveDynamicComponent as Re, mergeProps as at, toDisplayString as j, createElementVNode as y, withDirectives as U, withModifiers as pe, Fragment as oe, renderList as ie, vShow as ge, createCommentVNode as z, renderSlot as ue, createTextVNode as Dt, onMounted as we, watch as Q, onBeforeUnmount as an, nextTick as st, useCssVars as Cn, onUnmounted as Mn, toValue as $, mergeModels as me, useModel as he, createVNode as ot, withCtx as At, shallowRef as ee, getCurrentScope as rt, onScopeDispose as it, reactive as sn, vModelText as de, vModelCheckbox as rn, vModelSelect as En, isRef as An, toRefs as Tn, customRef as $t, getCurrentInstance as ut, watchEffect as Te, toRef as un, readonly as St, resolveComponent as cn, withKeys as $e } from \"vue\";\nimport { defineStore as Dn } from \"pinia\";\nimport './assets/index.css';function dn(e, t) {\n return rt() ? (it(e, t), !0) : !1;\n}\nconst $n = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst Sn = (e) => e != null, Rn = Object.prototype.toString, Ln = (e) => Rn.call(e) === \"[object Object]\", Hn = () => {\n};\nfunction Qe(e) {\n return Array.isArray(e) ? e : [e];\n}\nfunction _n(e, t, n) {\n return Q(e, t, {\n ...n,\n immediate: !0\n });\n}\nconst _e = $n ? window : void 0;\nfunction Le(e) {\n var t;\n const n = $(e);\n return (t = n?.$el) !== null && t !== void 0 ? t : n;\n}\nfunction Be(...e) {\n const t = (o, a, r, s) => (o.addEventListener(a, r, s), () => o.removeEventListener(a, r, s)), n = T(() => {\n const o = Qe($(e[0])).filter((a) => a != null);\n return o.every((a) => typeof a != \"string\") ? o : void 0;\n });\n return _n(() => {\n var o, a;\n return [\n (o = (a = n.value) === null || a === void 0 ? void 0 : a.map((r) => Le(r))) !== null && o !== void 0 ? o : [_e].filter((r) => r != null),\n Qe($(n.value ? e[1] : e[0])),\n Qe(L(n.value ? e[2] : e[1])),\n $(n.value ? e[3] : e[2])\n ];\n }, ([o, a, r, s], l, i) => {\n if (!o?.length || !a?.length || !r?.length) return;\n const u = Ln(s) ? { ...s } : s, c = o.flatMap((p) => a.flatMap((h) => r.map((b) => t(p, h, b, u))));\n i(() => {\n c.forEach((p) => p());\n });\n }, { flush: \"post\" });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Vn() {\n const e = ee(!1), t = ut();\n return t && we(() => {\n e.value = !0;\n }, t), e;\n}\n// @__NO_SIDE_EFFECTS__\nfunction On(e) {\n const t = /* @__PURE__ */ Vn();\n return T(() => (t.value, !!e()));\n}\nfunction Pn(e, t, n = {}) {\n const { window: o = _e, ...a } = n;\n let r;\n const s = /* @__PURE__ */ On(() => o && \"MutationObserver\" in o), l = () => {\n r && (r.disconnect(), r = void 0);\n }, i = Q(T(() => {\n const p = Qe($(e)).map(Le).filter(Sn);\n return new Set(p);\n }), (p) => {\n l(), s.value && p.size && (r = new MutationObserver(t), p.forEach((h) => r.observe(h, a)));\n }, {\n immediate: !0,\n flush: \"post\"\n }), u = () => r?.takeRecords(), c = () => {\n i(), l();\n };\n return dn(c), {\n isSupported: s,\n stop: c,\n takeRecords: u\n };\n}\nfunction Bn(e, t, n = {}) {\n const { window: o = _e, document: a = o?.document, flush: r = \"sync\" } = n;\n if (!o || !a) return Hn;\n let s;\n const l = (c) => {\n s?.(), s = c;\n }, i = Te(() => {\n const c = Le(e);\n if (c) {\n const { stop: p } = Pn(a, (h) => {\n h.map((b) => [...b.removedNodes]).flat().some((b) => b === c || b.contains(c)) && t(h);\n }, {\n window: o,\n childList: !0,\n subtree: !0\n });\n l(p);\n }\n }, { flush: r }), u = () => {\n i(), l();\n };\n return dn(u), u;\n}\n// @__NO_SIDE_EFFECTS__\nfunction Fn(e = {}) {\n var t;\n const { window: n = _e, deep: o = !0, triggerOnRemoval: a = !1 } = e, r = (t = e.document) !== null && t !== void 0 ? t : n?.document, s = () => {\n let u = r?.activeElement;\n if (o)\n for (var c; u?.shadowRoot; ) u = u == null || (c = u.shadowRoot) === null || c === void 0 ? void 0 : c.activeElement;\n return u;\n }, l = ee(), i = () => {\n l.value = s();\n };\n if (n) {\n const u = {\n capture: !0,\n passive: !0\n };\n Be(n, \"blur\", (c) => {\n c.relatedTarget === null && i();\n }, u), Be(n, \"focus\", i, u);\n }\n return a && Bn(l, i, { document: r }), i(), l;\n}\nconst Zn = \"focusin\", Nn = \"focusout\", Wn = \":focus-within\";\nfunction zn(e, t = {}) {\n const { window: n = _e } = t, o = T(() => Le(e)), a = ee(!1), r = T(() => a.value);\n if (!n || !(/* @__PURE__ */ Fn(t)).value) return { focused: r };\n const s = { passive: !0 };\n return Be(o, Zn, () => a.value = !0, s), Be(o, Nn, () => {\n var l, i, u;\n return a.value = (l = (i = o.value) === null || i === void 0 || (u = i.matches) === null || u === void 0 ? void 0 : u.call(i, Wn)) !== null && l !== void 0 ? l : !1;\n }, s), { focused: r };\n}\nfunction Gn(e, { window: t = _e, scrollTarget: n } = {}) {\n const o = S(!1), a = () => {\n if (!t) return;\n const r = t.document, s = Le(e);\n if (!s)\n o.value = !1;\n else {\n const l = s.getBoundingClientRect();\n o.value = l.top <= (t.innerHeight || r.documentElement.clientHeight) && l.left <= (t.innerWidth || r.documentElement.clientWidth) && l.bottom >= 0 && l.right >= 0;\n }\n };\n return Q(\n () => Le(e),\n () => a(),\n { immediate: !0, flush: \"post\" }\n ), t && Be(n || t, \"scroll\", a, {\n capture: !1,\n passive: !0\n }), o;\n}\nconst ye = (e) => {\n let t = Gn(e).value;\n return t = t && e.offsetHeight > 0, t;\n}, xe = (e) => e.tabIndex >= 0, Wt = (e) => {\n const t = e.target;\n return Rt(t);\n}, Rt = (e) => {\n let t;\n if (e instanceof HTMLTableCellElement) {\n const n = e.parentElement?.previousElementSibling;\n if (n) {\n const o = Array.from(n.children)[e.cellIndex];\n o && (t = o);\n }\n } else if (e instanceof HTMLTableRowElement) {\n const n = e.previousElementSibling;\n n && (t = n);\n }\n return t && (!xe(t) || !ye(t)) ? Rt(t) : t;\n}, Un = (e) => {\n const t = e.target;\n let n;\n if (t instanceof HTMLTableCellElement) {\n const o = t.parentElement?.parentElement;\n if (o) {\n const a = o.firstElementChild?.children[t.cellIndex];\n a && (n = a);\n }\n } else if (t instanceof HTMLTableRowElement) {\n const o = t.parentElement;\n if (o) {\n const a = o.firstElementChild;\n a && (n = a);\n }\n }\n return n && (!xe(n) || !ye(n)) ? Lt(n) : n;\n}, zt = (e) => {\n const t = e.target;\n return Lt(t);\n}, Lt = (e) => {\n let t;\n if (e instanceof HTMLTableCellElement) {\n const n = e.parentElement?.nextElementSibling;\n if (n) {\n const o = Array.from(n.children)[e.cellIndex];\n o && (t = o);\n }\n } else if (e instanceof HTMLTableRowElement) {\n const n = e.nextElementSibling;\n n && (t = n);\n }\n return t && (!xe(t) || !ye(t)) ? Lt(t) : t;\n}, jn = (e) => {\n const t = e.target;\n let n;\n if (t instanceof HTMLTableCellElement) {\n const o = t.parentElement?.parentElement;\n if (o) {\n const a = o.lastElementChild?.children[t.cellIndex];\n a && (n = a);\n }\n } else if (t instanceof HTMLTableRowElement) {\n const o = t.parentElement;\n if (o) {\n const a = o.lastElementChild;\n a && (n = a);\n }\n }\n return n && (!xe(n) || !ye(n)) ? Rt(n) : n;\n}, Gt = (e) => {\n const t = e.target;\n return Ht(t);\n}, Ht = (e) => {\n let t;\n return e.previousElementSibling ? t = e.previousElementSibling : t = e.parentElement?.previousElementSibling?.lastElementChild, t && (!xe(t) || !ye(t)) ? Ht(t) : t;\n}, Ut = (e) => {\n const t = e.target;\n return _t(t);\n}, _t = (e) => {\n let t;\n return e.nextElementSibling ? t = e.nextElementSibling : t = e.parentElement?.nextElementSibling?.firstElementChild, t && (!xe(t) || !ye(t)) ? _t(t) : t;\n}, jt = (e) => {\n const t = e.target.parentElement?.firstElementChild;\n return t && (!xe(t) || !ye(t)) ? _t(t) : t;\n}, qt = (e) => {\n const t = e.target.parentElement?.lastElementChild;\n return t && (!xe(t) || !ye(t)) ? Ht(t) : t;\n}, Xe = [\"alt\", \"control\", \"shift\", \"meta\"], qn = {\n ArrowUp: \"up\",\n ArrowDown: \"down\",\n ArrowLeft: \"left\",\n ArrowRight: \"right\"\n}, ct = {\n \"keydown.up\": (e) => {\n const t = Wt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.down\": (e) => {\n const t = zt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.left\": (e) => {\n const t = Gt(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.right\": (e) => {\n const t = Ut(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.control.up\": (e) => {\n const t = Un(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.down\": (e) => {\n const t = jn(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.left\": (e) => {\n const t = jt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.right\": (e) => {\n const t = qt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.end\": (e) => {\n const t = qt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.enter\": (e) => {\n if (e.target instanceof HTMLTableCellElement) {\n e.preventDefault(), e.stopPropagation();\n const t = zt(e);\n t && t.focus();\n }\n },\n \"keydown.shift.enter\": (e) => {\n if (e.target instanceof HTMLTableCellElement) {\n e.preventDefault(), e.stopPropagation();\n const t = Wt(e);\n t && t.focus();\n }\n },\n \"keydown.home\": (e) => {\n const t = jt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.tab\": (e) => {\n const t = Ut(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.shift.tab\": (e) => {\n const t = Gt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n }\n};\nfunction Vt(e) {\n const t = (s) => {\n let l = null;\n return s.parent && (typeof s.parent == \"string\" ? l = document.querySelector(s.parent) : s.parent instanceof HTMLElement ? l = s.parent : l = s.parent.value), l;\n }, n = (s) => {\n const l = t(s);\n let i = [];\n if (typeof s.selectors == \"string\")\n i = Array.from(l ? l.querySelectorAll(s.selectors) : document.querySelectorAll(s.selectors));\n else if (Array.isArray(s.selectors))\n for (const u of s.selectors)\n u instanceof HTMLElement ? i.push(u) : i.push(u.$el);\n else if (s.selectors instanceof HTMLElement)\n i.push(s.selectors);\n else if (s.selectors?.value)\n if (Array.isArray(s.selectors.value))\n for (const u of s.selectors.value)\n u instanceof HTMLElement ? i.push(u) : i.push(u.$el);\n else\n i.push(s.selectors.value);\n return i;\n }, o = (s) => {\n const l = t(s);\n let i = [];\n return s.selectors ? i = n(s) : l && (i = Array.from(l.children).filter((u) => xe(u) && ye(u))), i;\n }, a = (s) => (l) => {\n const i = qn[l.key] || l.key.toLowerCase();\n if (Xe.includes(i)) return;\n const u = s.handlers || ct;\n for (const c of Object.keys(u)) {\n const [p, ...h] = c.split(\".\");\n if (p === \"keydown\" && h.includes(i)) {\n const b = u[c], C = h.filter((v) => Xe.includes(v)), x = Xe.some((v) => {\n const m = v.charAt(0).toUpperCase() + v.slice(1);\n return l.getModifierState(m);\n });\n if (C.length > 0) {\n if (x) {\n for (const v of Xe)\n if (h.includes(v)) {\n const m = v.charAt(0).toUpperCase() + v.slice(1);\n l.getModifierState(m) && b(l);\n }\n }\n } else\n x || b(l);\n }\n }\n }, r = [];\n we(() => {\n for (const s of e) {\n const l = t(s), i = o(s), u = a(s), c = l ? [l] : i;\n for (const p of c) {\n const { focused: h } = zn(S(p)), b = Q(h, (C) => {\n C ? p.addEventListener(\"keydown\", u) : p.removeEventListener(\"keydown\", u);\n });\n r.push(b);\n }\n }\n }), an(() => {\n for (const s of r)\n s();\n });\n}\nfunction Ot(e, t) {\n return rt() ? (it(e, t), !0) : !1;\n}\nconst vn = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst Yn = (e) => e != null, Xn = Object.prototype.toString, Jn = (e) => Xn.call(e) === \"[object Object]\", De = () => {\n};\nfunction Kn(...e) {\n if (e.length !== 1) return un(...e);\n const t = e[0];\n return typeof t == \"function\" ? St($t(() => ({\n get: t,\n set: De\n }))) : S(t);\n}\nfunction Qn(e, t) {\n function n(...o) {\n return new Promise((a, r) => {\n Promise.resolve(e(() => t.apply(this, o), {\n fn: t,\n thisArg: this,\n args: o\n })).then(a).catch(r);\n });\n }\n return n;\n}\nfunction eo(e, t = {}) {\n let n, o, a = De;\n const r = (l) => {\n clearTimeout(l), a(), a = De;\n };\n let s;\n return (l) => {\n const i = $(e), u = $(t.maxWait);\n return n && r(n), i <= 0 || u !== void 0 && u <= 0 ? (o && (r(o), o = void 0), Promise.resolve(l())) : new Promise((c, p) => {\n a = t.rejectOnCancel ? p : c, s = l, u && !o && (o = setTimeout(() => {\n n && r(n), o = void 0, c(s());\n }, u)), n = setTimeout(() => {\n o && r(o), o = void 0, c(l());\n }, i);\n });\n };\n}\nfunction et(e) {\n return Array.isArray(e) ? e : [e];\n}\nfunction to(e) {\n return ut();\n}\n// @__NO_SIDE_EFFECTS__\nfunction no(e, t = 200, n = {}) {\n return Qn(eo(t, n), e);\n}\nfunction oo(e, t = {}) {\n if (!An(e)) return Tn(e);\n const n = Array.isArray(e.value) ? Array.from({ length: e.value.length }) : {};\n for (const o in e.value) n[o] = $t(() => ({\n get() {\n return e.value[o];\n },\n set(a) {\n var r;\n if (!((r = $(t.replaceRef)) !== null && r !== void 0) || r) if (Array.isArray(e.value)) {\n const s = [...e.value];\n s[o] = a, e.value = s;\n } else {\n const s = {\n ...e.value,\n [o]: a\n };\n Object.setPrototypeOf(s, Object.getPrototypeOf(e.value)), e.value = s;\n }\n else e.value[o] = a;\n }\n }));\n return n;\n}\nfunction lo(e, t = !0, n) {\n to() ? we(e, n) : t ? e() : st(e);\n}\nfunction ao(e, t, n) {\n return Q(e, t, {\n ...n,\n immediate: !0\n });\n}\nconst Ze = vn ? window : void 0;\nfunction ve(e) {\n var t;\n const n = $(e);\n return (t = n?.$el) !== null && t !== void 0 ? t : n;\n}\nfunction Me(...e) {\n const t = (o, a, r, s) => (o.addEventListener(a, r, s), () => o.removeEventListener(a, r, s)), n = T(() => {\n const o = et($(e[0])).filter((a) => a != null);\n return o.every((a) => typeof a != \"string\") ? o : void 0;\n });\n return ao(() => {\n var o, a;\n return [\n (o = (a = n.value) === null || a === void 0 ? void 0 : a.map((r) => ve(r))) !== null && o !== void 0 ? o : [Ze].filter((r) => r != null),\n et($(n.value ? e[1] : e[0])),\n et(L(n.value ? e[2] : e[1])),\n $(n.value ? e[3] : e[2])\n ];\n }, ([o, a, r, s], l, i) => {\n if (!o?.length || !a?.length || !r?.length) return;\n const u = Jn(s) ? { ...s } : s, c = o.flatMap((p) => a.flatMap((h) => r.map((b) => t(p, h, b, u))));\n i(() => {\n c.forEach((p) => p());\n });\n }, { flush: \"post\" });\n}\nfunction Tt(e, t, n = {}) {\n const { window: o = Ze, ignore: a = [], capture: r = !0, detectIframe: s = !1, controls: l = !1 } = n;\n if (!o) return l ? {\n stop: De,\n cancel: De,\n trigger: De\n } : De;\n let i = !0;\n const u = (v) => $(a).some((m) => {\n if (typeof m == \"string\") return Array.from(o.document.querySelectorAll(m)).some((g) => g === v.target || v.composedPath().includes(g));\n {\n const g = ve(m);\n return g && (v.target === g || v.composedPath().includes(g));\n }\n });\n function c(v) {\n const m = $(v);\n return m && m.$.subTree.shapeFlag === 16;\n }\n function p(v, m) {\n const g = $(v), M = g.$.subTree && g.$.subTree.children;\n return M == null || !Array.isArray(M) ? !1 : M.some((D) => D.el === m.target || m.composedPath().includes(D.el));\n }\n const h = (v) => {\n const m = ve(e);\n if (v.target != null && !(!(m instanceof Element) && c(e) && p(e, v)) && !(!m || m === v.target || v.composedPath().includes(m))) {\n if (\"detail\" in v && v.detail === 0 && (i = !u(v)), !i) {\n i = !0;\n return;\n }\n t(v);\n }\n };\n let b = !1;\n const C = [\n Me(o, \"click\", (v) => {\n b || (b = !0, setTimeout(() => {\n b = !1;\n }, 0), h(v));\n }, {\n passive: !0,\n capture: r\n }),\n Me(o, \"pointerdown\", (v) => {\n const m = ve(e);\n i = !u(v) && !!(m && !v.composedPath().includes(m));\n }, { passive: !0 }),\n s && Me(o, \"blur\", (v) => {\n setTimeout(() => {\n var m;\n const g = ve(e);\n ((m = o.document.activeElement) === null || m === void 0 ? void 0 : m.tagName) === \"IFRAME\" && !g?.contains(o.document.activeElement) && t(v);\n }, 0);\n }, { passive: !0 })\n ].filter(Boolean), x = () => C.forEach((v) => v());\n return l ? {\n stop: x,\n cancel: () => {\n i = !1;\n },\n trigger: (v) => {\n i = !0, h(v), i = !1;\n }\n } : x;\n}\n// @__NO_SIDE_EFFECTS__\nfunction so() {\n const e = ee(!1), t = ut();\n return t && we(() => {\n e.value = !0;\n }, t), e;\n}\n// @__NO_SIDE_EFFECTS__\nfunction fn(e) {\n const t = /* @__PURE__ */ so();\n return T(() => (t.value, !!e()));\n}\nfunction pn(e, t, n = {}) {\n const { window: o = Ze, ...a } = n;\n let r;\n const s = /* @__PURE__ */ fn(() => o && \"MutationObserver\" in o), l = () => {\n r && (r.disconnect(), r = void 0);\n }, i = Q(T(() => {\n const p = et($(e)).map(ve).filter(Yn);\n return new Set(p);\n }), (p) => {\n l(), s.value && p.size && (r = new MutationObserver(t), p.forEach((h) => r.observe(h, a)));\n }, {\n immediate: !0,\n flush: \"post\"\n }), u = () => r?.takeRecords(), c = () => {\n i(), l();\n };\n return Ot(c), {\n isSupported: s,\n stop: c,\n takeRecords: u\n };\n}\nfunction wt(e, t = {}) {\n var n;\n const { pointerTypes: o, preventDefault: a, stopPropagation: r, exact: s, onMove: l, onEnd: i, onStart: u, initialValue: c, axis: p = \"both\", draggingElement: h = Ze, containerElement: b, handle: C = e, buttons: x = [0] } = t, v = S((n = $(c)) !== null && n !== void 0 ? n : {\n x: 0,\n y: 0\n }), m = S(), g = (E) => o ? o.includes(E.pointerType) : !0, M = (E) => {\n $(a) && E.preventDefault(), $(r) && E.stopPropagation();\n }, D = (E) => {\n var O;\n if (!$(x).includes(E.button) || $(t.disabled) || !g(E) || $(s) && E.target !== $(e)) return;\n const X = $(b), G = X == null || (O = X.getBoundingClientRect) === null || O === void 0 ? void 0 : O.call(X), N = $(e).getBoundingClientRect(), ce = {\n x: E.clientX - (X ? N.left - G.left + X.scrollLeft : N.left),\n y: E.clientY - (X ? N.top - G.top + X.scrollTop : N.top)\n };\n u?.(ce, E) !== !1 && (m.value = ce, M(E));\n }, P = (E) => {\n if ($(t.disabled) || !g(E) || !m.value) return;\n const O = $(b), X = $(e).getBoundingClientRect();\n let { x: G, y: N } = v.value;\n (p === \"x\" || p === \"both\") && (G = E.clientX - m.value.x, O && (G = Math.min(Math.max(0, G), O.scrollWidth - X.width))), (p === \"y\" || p === \"both\") && (N = E.clientY - m.value.y, O && (N = Math.min(Math.max(0, N), O.scrollHeight - X.height))), v.value = {\n x: G,\n y: N\n }, l?.(v.value, E), M(E);\n }, H = (E) => {\n $(t.disabled) || !g(E) || m.value && (m.value = void 0, i?.(v.value, E), M(E));\n };\n if (vn) {\n const E = () => {\n var O;\n return {\n capture: (O = t.capture) !== null && O !== void 0 ? O : !0,\n passive: !$(a)\n };\n };\n Me(C, \"pointerdown\", D, E), Me(h, \"pointermove\", P, E), Me(h, \"pointerup\", H, E);\n }\n return {\n ...oo(v),\n position: v,\n isDragging: T(() => !!m.value),\n style: T(() => `left:${v.value.x}px;top:${v.value.y}px;`)\n };\n}\nfunction lt(e, t, n = {}) {\n const { window: o = Ze, ...a } = n;\n let r;\n const s = /* @__PURE__ */ fn(() => o && \"ResizeObserver\" in o), l = () => {\n r && (r.disconnect(), r = void 0);\n }, i = Q(T(() => {\n const c = $(e);\n return Array.isArray(c) ? c.map((p) => ve(p)) : [ve(c)];\n }), (c) => {\n if (l(), s.value && o) {\n r = new ResizeObserver(t);\n for (const p of c) p && r.observe(p, a);\n }\n }, {\n immediate: !0,\n flush: \"post\"\n }), u = () => {\n l(), i();\n };\n return Ot(u), {\n isSupported: s,\n stop: u\n };\n}\nfunction Ae(e, t = {}) {\n const { reset: n = !0, windowResize: o = !0, windowScroll: a = !0, immediate: r = !0, updateTiming: s = \"sync\" } = t, l = ee(0), i = ee(0), u = ee(0), c = ee(0), p = ee(0), h = ee(0), b = ee(0), C = ee(0);\n function x() {\n const m = ve(e);\n if (!m) {\n n && (l.value = 0, i.value = 0, u.value = 0, c.value = 0, p.value = 0, h.value = 0, b.value = 0, C.value = 0);\n return;\n }\n const g = m.getBoundingClientRect();\n l.value = g.height, i.value = g.bottom, u.value = g.left, c.value = g.right, p.value = g.top, h.value = g.width, b.value = g.x, C.value = g.y;\n }\n function v() {\n s === \"sync\" ? x() : s === \"next-frame\" && requestAnimationFrame(() => x());\n }\n return lt(e, v), Q(() => ve(e), (m) => !m && v()), pn(e, v, { attributeFilter: [\"style\", \"class\"] }), a && Me(\"scroll\", v, {\n capture: !0,\n passive: !0\n }), o && Me(\"resize\", v, { passive: !0 }), lo(() => {\n r && v();\n }), {\n height: l,\n bottom: i,\n left: u,\n right: c,\n top: p,\n width: h,\n x: b,\n y: C,\n update: v\n };\n}\nfunction yt(e) {\n return typeof Window < \"u\" && e instanceof Window ? e.document.documentElement : typeof Document < \"u\" && e instanceof Document ? e.documentElement : e;\n}\nconst xt = /* @__PURE__ */ new WeakMap();\nfunction ro(e, t = !1) {\n const n = ee(t);\n let o = \"\";\n Q(Kn(e), (s) => {\n const l = yt($(s));\n if (l) {\n const i = l;\n if (xt.get(i) || xt.set(i, i.style.overflow), i.style.overflow !== \"hidden\" && (o = i.style.overflow), i.style.overflow === \"hidden\") return n.value = !0;\n if (n.value) return i.style.overflow = \"hidden\";\n }\n }, { immediate: !0 });\n const a = () => {\n const s = yt($(e));\n !s || n.value || (s.style.overflow = \"hidden\", n.value = !0);\n }, r = () => {\n const s = yt($(e));\n !s || !n.value || (s.style.overflow = o, xt.delete(s), n.value = !1);\n };\n return Ot(r), T({\n get() {\n return n.value;\n },\n set(s) {\n s ? a() : r();\n }\n });\n}\nconst io = (e) => {\n const t = new DOMParser().parseFromString(e, \"text/html\");\n return Array.from(t.body.childNodes).some((n) => n.nodeType === 1);\n}, uo = (e = 8) => Array.from({ length: e }, () => Math.floor(Math.random() * 16).toString(16)).join(\"\"), co = [\"data-colindex\", \"data-rowindex\", \"data-editable\", \"contenteditable\", \"tabindex\"], vo = [\"innerHTML\"], fo = { key: 2 }, po = /* @__PURE__ */ Y({\n __name: \"ACell\",\n props: {\n colIndex: {},\n rowIndex: {},\n store: {},\n addNavigation: { type: [Boolean, Object], default: !0 },\n tabIndex: { default: 0 },\n pinned: { type: Boolean, default: !1 },\n debounce: { default: 300 }\n },\n setup(e, { expose: t }) {\n const n = ae(\"cell\"), o = e.store.getCellData(e.colIndex, e.rowIndex), a = S(\"\"), r = S(!1), s = e.store.columns[e.colIndex], l = e.store.rows[e.rowIndex], i = s.align || \"center\", u = s.width || \"40ch\", c = T(() => e.store.getCellDisplayValue(e.colIndex, e.rowIndex)), p = T(() => typeof c.value == \"string\" ? io(c.value) : !1), h = T(() => ({\n textAlign: i,\n width: u,\n fontWeight: r.value ? \"bold\" : \"inherit\",\n paddingLeft: e.store.getIndent(e.colIndex, e.store.display[e.rowIndex]?.indent)\n })), b = T(() => ({\n \"sticky-column\": e.pinned,\n \"cell-modified\": r.value\n })), C = () => {\n v(), x();\n }, x = () => {\n const { left: H, bottom: E, width: O, height: X } = Ae(n);\n s.mask, s.modalComponent && e.store.$patch((G) => {\n G.modal.visible = !0, G.modal.colIndex = e.colIndex, G.modal.rowIndex = e.rowIndex, G.modal.left = H, G.modal.bottom = E, G.modal.width = O, G.modal.height = X, G.modal.cell = n.value, typeof s.modalComponent == \"function\" ? G.modal.component = s.modalComponent({ table: G.table, row: l, column: s }) : G.modal.component = s.modalComponent, G.modal.componentProps = s.modalComponentExtraProps;\n });\n };\n if (e.addNavigation) {\n let H = {\n ...ct,\n \"keydown.f2\": x,\n \"keydown.alt.up\": x,\n \"keydown.alt.down\": x,\n \"keydown.alt.left\": x,\n \"keydown.alt.right\": x\n };\n typeof e.addNavigation == \"object\" && (H = {\n ...H,\n ...e.addNavigation\n }), Vt([\n {\n selectors: n,\n handlers: H\n }\n ]);\n }\n const v = () => {\n if (n.value && s.edit) {\n const H = window.getSelection();\n if (H)\n try {\n const E = document.createRange();\n E.selectNodeContents && (E.selectNodeContents(n.value), H.removeAllRanges(), H.addRange(E));\n } catch {\n }\n }\n }, m = () => {\n n.value && (a.value = n.value.textContent, v());\n }, g = () => {\n try {\n const H = window.getSelection();\n if (H && H.rangeCount > 0 && n.value) {\n const E = H.getRangeAt(0), O = E.cloneRange();\n if (O.selectNodeContents && O.setEnd)\n return O.selectNodeContents(n.value), O.setEnd(E.endContainer, E.endOffset), O.toString().length;\n }\n } catch {\n }\n return 0;\n }, M = (H) => {\n if (n.value)\n try {\n const E = window.getSelection();\n if (!E) return;\n let O = 0;\n const X = document.createTreeWalker ? document.createTreeWalker(n.value, NodeFilter.SHOW_TEXT, null) : null;\n if (!X) return;\n let G, N = null;\n for (; G = X.nextNode(); ) {\n const ce = G, Ce = O + ce.textContent.length;\n if (H <= Ce && (N = document.createRange(), N.setStart && N.setEnd)) {\n N.setStart(ce, H - O), N.setEnd(ce, H - O);\n break;\n }\n O = Ce;\n }\n N && E.removeAllRanges && E.addRange && (E.removeAllRanges(), E.addRange(N));\n } catch {\n }\n }, D = (H) => {\n if (!s.edit) return;\n const E = H.target;\n if (E.textContent === a.value)\n return;\n const O = g();\n a.value = E.textContent, s.format ? (r.value = E.textContent !== e.store.getFormattedValue(e.colIndex, e.rowIndex, o), e.store.setCellText(e.colIndex, e.rowIndex, E.textContent)) : (r.value = E.textContent !== o, e.store.setCellData(e.colIndex, e.rowIndex, E.textContent)), st().then(() => {\n M(O);\n });\n }, P = /* @__PURE__ */ no(D, e.debounce);\n return t({\n currentData: a\n }), (H, E) => (w(), k(\"td\", {\n ref: \"cell\",\n \"data-colindex\": e.colIndex,\n \"data-rowindex\": e.rowIndex,\n \"data-editable\": L(s).edit,\n contenteditable: L(s).edit,\n tabindex: e.tabIndex,\n spellcheck: !1,\n style: fe(h.value),\n class: K([\"atable-cell\", b.value]),\n onFocus: m,\n onPaste: D,\n onInput: E[0] || (E[0] = //@ts-ignore\n (...O) => L(P) && L(P)(...O)),\n onClick: C\n }, [\n L(s).cellComponent ? (w(), re(Re(L(s).cellComponent), at({\n key: 0,\n value: c.value\n }, L(s).cellComponentProps), null, 16, [\"value\"])) : p.value ? (w(), k(\"span\", {\n key: 1,\n innerHTML: c.value\n }, null, 8, vo)) : (w(), k(\"span\", fo, j(c.value), 1))\n ], 46, co));\n }\n}), mo = [\"tabindex\"], ho = [\"tabindex\"], go = [\"colspan\"], wo = /* @__PURE__ */ Y({\n __name: \"AExpansionRow\",\n props: {\n rowIndex: {},\n store: {},\n tabIndex: { default: () => -1 },\n addNavigation: { type: [Boolean, Object], default: () => ct }\n },\n setup(e) {\n const t = ae(\"rowEl\"), n = T(() => e.store.display[e.rowIndex].expanded ? \"▼\" : \"►\");\n if (e.addNavigation) {\n const o = {\n \"keydown.control.g\": (a) => {\n a.stopPropagation(), a.preventDefault(), e.store.toggleRowExpand(e.rowIndex);\n }\n };\n typeof e.addNavigation == \"object\" && Object.assign(o, e.addNavigation), Vt([\n {\n selectors: t,\n handlers: o\n }\n ]);\n }\n return (o, a) => (w(), k(oe, null, [\n y(\"tr\", at(o.$attrs, {\n ref: \"rowEl\",\n tabindex: e.tabIndex,\n class: \"expandable-row\"\n }), [\n y(\"td\", {\n tabIndex: -1,\n class: \"row-index\",\n onClick: a[0] || (a[0] = (r) => e.store.toggleRowExpand(e.rowIndex))\n }, j(n.value), 1),\n ue(o.$slots, \"row\", {}, void 0, !0)\n ], 16, mo),\n e.store.display[e.rowIndex].expanded ? (w(), k(\"tr\", {\n key: 0,\n ref: \"rowExpanded\",\n tabindex: e.tabIndex,\n class: \"expanded-row\"\n }, [\n y(\"td\", {\n tabIndex: -1,\n colspan: e.store.columns.length + 1,\n class: \"expanded-row-content\"\n }, [\n ue(o.$slots, \"content\", {}, void 0, !0)\n ], 8, go)\n ], 8, ho)) : z(\"\", !0)\n ], 64));\n }\n}), Ee = (e, t) => {\n const n = e.__vccOpts || e;\n for (const [o, a] of t)\n n[o] = a;\n return n;\n}, yo = /* @__PURE__ */ Ee(wo, [[\"__scopeId\", \"data-v-a42297c7\"]]), xo = [\"colspan\"], bo = {\n ref: \"container\",\n class: \"gantt-container\"\n}, ko = [\"data-rowindex\", \"data-colindex\"], Io = {\n key: 2,\n class: \"gantt-label\"\n}, Co = [\"x1\", \"y1\", \"x2\", \"y2\"], Mo = /* @__PURE__ */ Y({\n __name: \"AGanttCell\",\n props: {\n store: {},\n columnsCount: {},\n rowIndex: {},\n colIndex: {},\n start: { default: 0 },\n end: { default: 0 },\n colspan: { default: 1 },\n label: { default: \"\" },\n color: { default: \"#cccccc\" }\n },\n emits: [\"connection:create\"],\n setup(e, { expose: t, emit: n }) {\n Cn((V) => ({\n v6d722296: a.value,\n v260b36f8: V.colspan\n }));\n const o = n, a = S(e.color.length >= 6 ? e.color : \"#cccccc\"), r = `gantt-bar-row-${e.rowIndex}-col-${e.colIndex}`, s = ae(\"container\"), l = ae(\"bar\"), i = ae(\"leftResizeHandle\"), u = ae(\"rightResizeHandle\"), c = ae(\"leftConnectionHandle\"), p = ae(\"rightConnectionHandle\"), { width: h } = Ae(s), { left: b, right: C } = Ae(l), x = S(e.start), v = S(e.end || x.value + e.colspan), m = S(!1), g = S(!1), M = S(!1), D = S(!1), P = S(!1), H = S({ startX: 0, startY: 0, endX: 0, endY: 0 }), E = T(() => Ne.value || ce.value || Ce.value), O = T(() => e.colspan > 0 ? h.value / e.colspan : 0), X = T(() => {\n const V = x.value / e.colspan * 100, B = v.value / e.colspan * 100;\n return {\n left: `${V}%`,\n width: `${B - V}%`,\n backgroundColor: a.value\n };\n }), G = T(\n () => ({\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"100vw\",\n height: \"100vh\",\n pointerEvents: \"none\",\n zIndex: 1e3\n })\n ), N = S({ startX: 0, startPos: 0 }), { isDragging: ce } = wt(i, {\n axis: \"x\",\n onStart: () => Oe(b.value, x.value),\n onMove: ({ x: V }) => dt(V),\n onEnd: ({ x: V }) => vt(V)\n }), { isDragging: Ce } = wt(u, {\n axis: \"x\",\n onStart: () => Oe(C.value, v.value),\n onMove: ({ x: V }) => We(V),\n onEnd: ({ x: V }) => ft(V)\n }), { isDragging: Ne } = wt(l, {\n exact: !0,\n axis: \"x\",\n onStart: () => Oe(b.value, x.value),\n onMove: ({ x: V }) => ze(V),\n onEnd: ({ x: V }) => pt(V)\n });\n we(() => {\n mt();\n }), Mn(() => {\n ht();\n });\n function Oe(V, B) {\n l.value && (l.value.style.transition = \"none\"), N.value = { startX: V, startPos: B };\n }\n function dt(V) {\n if (!ce.value || !l.value) return;\n const B = (V - N.value.startX) / O.value, W = Math.max(0, Math.min(v.value - 1, N.value.startPos + B));\n l.value.style.left = `${W / e.colspan * 100}%`, l.value.style.width = `${(v.value - W) / e.colspan * 100}%`;\n }\n function vt(V) {\n if (!l.value) return;\n const B = V - N.value.startX, W = Math.round(B / O.value), q = x.value, te = Math.max(0, Math.min(v.value - 1, N.value.startPos + W));\n x.value = te, e.store.updateGanttBar({\n rowIndex: e.rowIndex,\n colIndex: e.colIndex,\n type: \"resize\",\n edge: \"start\",\n oldStart: q,\n newStart: te,\n end: v.value,\n delta: W,\n oldColspan: v.value - q,\n newColspan: v.value - te\n });\n }\n function We(V) {\n if (!Ce.value || !l.value) return;\n const B = (V - N.value.startX) / O.value, W = Math.max(x.value + 1, Math.min(e.columnsCount, N.value.startPos + B));\n l.value.style.width = `${(W - x.value) / e.colspan * 100}%`;\n }\n function ft(V) {\n if (!l.value) return;\n const B = V - N.value.startX, W = Math.round(B / O.value), q = v.value, te = Math.max(x.value + 1, Math.min(e.columnsCount, N.value.startPos + W));\n v.value = te, e.store.updateGanttBar({\n rowIndex: e.rowIndex,\n colIndex: e.colIndex,\n type: \"resize\",\n edge: \"end\",\n oldEnd: q,\n newEnd: te,\n start: x.value,\n delta: W,\n oldColspan: q - x.value,\n newColspan: te - x.value\n });\n }\n function ze(V) {\n if (!Ne.value || !l.value) return;\n const B = (V - N.value.startX) / O.value, W = v.value - x.value, q = Math.max(0, Math.min(N.value.startPos + B, e.columnsCount - W));\n l.value.style.left = `${q / e.colspan * 100}%`;\n }\n function pt(V) {\n if (!l.value) return;\n const B = V - N.value.startX, W = Math.round(B / O.value), q = v.value - x.value, te = x.value, ne = v.value;\n let se = N.value.startPos + W, le = se + q;\n se < 0 ? (se = 0, le = q) : le > e.columnsCount && (le = e.columnsCount, se = le - q), x.value = se, v.value = le, e.store.updateGanttBar({\n rowIndex: e.rowIndex,\n colIndex: e.colIndex,\n type: \"bar\",\n oldStart: te,\n oldEnd: ne,\n newStart: se,\n newEnd: le,\n delta: W,\n colspan: le - se\n });\n }\n function mt() {\n const { x: V, y: B } = Ae(l), { x: W, y: q } = Ae(c), { x: te, y: ne } = Ae(p);\n e.store.registerGanttBar({\n id: r,\n rowIndex: e.rowIndex,\n colIndex: e.colIndex,\n startIndex: x,\n endIndex: v,\n color: a,\n label: e.label,\n position: { x: V, y: B }\n }), e.store.isDependencyGraphEnabled && (e.store.registerConnectionHandle({\n id: `${r}-connection-left`,\n rowIndex: e.rowIndex,\n colIndex: e.colIndex,\n side: \"left\",\n position: { x: W, y: q },\n visible: m,\n barId: r\n }), e.store.registerConnectionHandle({\n id: `${r}-connection-right`,\n rowIndex: e.rowIndex,\n colIndex: e.colIndex,\n side: \"right\",\n position: { x: te, y: ne },\n visible: g,\n barId: r\n }));\n }\n function ht() {\n e.store.unregisterGanttBar(r), e.store.isDependencyGraphEnabled && (e.store.unregisterConnectionHandle(`${r}-connection-left`), e.store.unregisterConnectionHandle(`${r}-connection-right`));\n }\n function gt() {\n e.store.isDependencyGraphEnabled && (m.value = !0, g.value = !0);\n }\n function Ge() {\n !M.value && !D.value && (m.value = !1, g.value = !1);\n }\n function Ue(V, B) {\n B.preventDefault(), B.stopPropagation(), P.value = !0, V === \"left\" ? M.value = !0 : D.value = !0;\n const W = V === \"left\" ? c.value : p.value;\n if (W) {\n const ne = W.getBoundingClientRect(), se = ne.left + ne.width / 2, le = ne.top + ne.height / 2;\n H.value = { startX: se, startY: le, endX: se, endY: le };\n }\n const q = (ne) => {\n H.value.endX = ne.clientX, H.value.endY = ne.clientY;\n }, te = (ne) => {\n je(ne, V), qe(q, te);\n };\n document.addEventListener(\"mousemove\", q), document.addEventListener(\"mouseup\", te);\n }\n function je(V, B) {\n const W = document.elementFromPoint(V.clientX, V.clientY)?.closest(\".connection-handle\");\n if (W && W !== (B === \"left\" ? c.value : p.value)) {\n const q = W.closest(\".gantt-bar\");\n if (q) {\n const te = parseInt(q.getAttribute(\"data-rowindex\") || \"0\"), ne = parseInt(q.getAttribute(\"data-colindex\") || \"0\"), se = W.classList.contains(\"left-connection-handle\") ? \"left\" : \"right\", le = `gantt-bar-row-${te}-col-${ne}`, d = e.store.createConnection(\n `${r}-connection-${B}`,\n `${le}-connection-${se}`\n );\n d && o(\"connection:create\", d);\n }\n }\n }\n function qe(V, B) {\n P.value = !1, M.value = !1, D.value = !1, document.removeEventListener(\"mousemove\", V), document.removeEventListener(\"mouseup\", B), l.value?.matches(\":hover\") || Ge();\n }\n return t({\n barStyle: X,\n cleanupConnectionDrag: qe,\n currentEnd: v,\n handleConnectionDrop: je,\n isLeftConnectionDragging: M,\n isLeftConnectionVisible: m,\n isRightConnectionDragging: D,\n isRightConnectionVisible: g,\n showDragPreview: P\n }), (V, B) => (w(), k(\"td\", {\n class: \"aganttcell\",\n colspan: e.colspan\n }, [\n y(\"div\", bo, [\n y(\"div\", {\n ref: \"bar\",\n \"data-rowindex\": e.rowIndex,\n \"data-colindex\": e.colIndex,\n class: K([\"gantt-bar\", { \"is-dragging\": E.value }]),\n style: fe(X.value),\n onMouseenter: gt,\n onMouseleave: Ge\n }, [\n e.store.isDependencyGraphEnabled ? (w(), k(\"div\", {\n key: 0,\n ref: \"leftConnectionHandle\",\n class: K([\"connection-handle left-connection-handle\", { visible: m.value, \"is-dragging\": M.value }]),\n onMousedown: B[0] || (B[0] = pe((W) => Ue(\"left\", W), [\"stop\"]))\n }, [...B[2] || (B[2] = [\n y(\"div\", { class: \"connection-dot\" }, null, -1)\n ])], 34)) : z(\"\", !0),\n e.store.isDependencyGraphEnabled ? (w(), k(\"div\", {\n key: 1,\n ref: \"rightConnectionHandle\",\n class: K([\"connection-handle right-connection-handle\", { visible: g.value, \"is-dragging\": D.value }]),\n onMousedown: B[1] || (B[1] = pe((W) => Ue(\"right\", W), [\"stop\"]))\n }, [...B[3] || (B[3] = [\n y(\"div\", { class: \"connection-dot\" }, null, -1)\n ])], 34)) : z(\"\", !0),\n y(\"div\", {\n ref: \"leftResizeHandle\",\n class: K([\"resize-handle left-resize-handle\", { \"is-dragging\": L(ce) }])\n }, [...B[4] || (B[4] = [\n y(\"div\", { class: \"handle-grip\" }, null, -1),\n y(\"div\", { class: \"vertical-indicator left-indicator\" }, null, -1)\n ])], 2),\n e.label ? (w(), k(\"label\", Io, j(e.label), 1)) : z(\"\", !0),\n y(\"div\", {\n ref: \"rightResizeHandle\",\n class: K([\"resize-handle right-resize-handle\", { \"is-dragging\": L(Ce) }])\n }, [...B[5] || (B[5] = [\n y(\"div\", { class: \"handle-grip\" }, null, -1),\n y(\"div\", { class: \"vertical-indicator right-indicator\" }, null, -1)\n ])], 2)\n ], 46, ko)\n ], 512),\n e.store.isDependencyGraphEnabled && P.value ? (w(), k(\"svg\", {\n key: 0,\n style: fe(G.value)\n }, [\n y(\"line\", {\n x1: H.value.startX,\n y1: H.value.startY,\n x2: H.value.endX,\n y2: H.value.endY,\n stroke: \"#2196f3\",\n \"stroke-width\": \"2\",\n \"stroke-dasharray\": \"5,5\"\n }, null, 8, Co)\n ], 4)) : z(\"\", !0)\n ], 8, xo));\n }\n}), Eo = /* @__PURE__ */ Ee(Mo, [[\"__scopeId\", \"data-v-8917a8a3\"]]), Ao = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 64 64\">\n <path d=\"M32,64C14.35,64,0,49.65,0,32S14.35,0,32,0s32,14.35,32,32-14.35,32-32,32ZM32,4c-15.44,0-28,12.56-28,28s12.56,28,28,28,28-12.56,28-28S47.44,4,32,4Z\" style=\"fill: #000; stroke-width: 0px;\"/>\n <polygon points=\"34 18 30 18 30 30 18 30 18 34 30 34 30 46 34 46 34 34 46 34 46 30 34 30 34 18\" style=\"fill: #000; stroke-width: 0px;\"/>\n</svg>\n`, To = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 64 64\">\n <path d=\"M32,64C14.35,64,0,49.65,0,32S14.35,0,32,0s32,14.35,32,32-14.35,32-32,32ZM32,4c-15.44,0-28,12.56-28,28s12.56,28,28,28,28-12.56,28-28S47.44,4,32,4Z\" style=\"fill: #000; stroke-width: 0px;\"/>\n <polygon points=\"46.84 19.99 44.01 17.16 32 29.17 19.99 17.16 17.16 19.99 29.17 32 17.16 44.01 19.99 46.84 32 34.83 44.01 46.84 46.84 44.01 34.83 32 46.84 19.99\" style=\"fill: #000; stroke-width: 0px;\"/>\n</svg>`, Do = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 70.67 70.67\">\n <path d=\"M68.67,16.67h-14.67V2c0-1.1-.9-2-2-2H2C.9,0,0,.9,0,2v50c0,1.1.9,2,2,2h14.67v14.67c0,1.1.9,2,2,2h50c1.1,0,2-.9,2-2V18.67c0-1.1-.9-2-2-2ZM4,4h46v46H4V4ZM66.67,66.67H20.67v-12.67h31.33c1.1,0,2-.9,2-2v-31.33h12.67v46Z\" style=\"fill: #000; stroke-width: 0px;\"/>\n <polygon points=\"41 25 29 25 29 13 25 13 25 25 13 25 13 29 25 29 25 41 29 41 29 29 41 29 41 25\" style=\"fill: #000; stroke-width: 0px;\"/>\n</svg>`, $o = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 70.6 61.5\">\n <path d=\"M68.6,45.8v13.7H2v-13.7h66.6M70.6,43.8H0v17.7h70.6v-17.7h0Z\"/>\n <path d=\"M68.6,24.2v13.7H2v-13.7h66.6M70.6,22.2H0v17.7h70.6v-17.7h0Z\"/>\n <g>\n <polygon points=\"70.6 2.5 68.6 2.5 68.6 2 68.1 2 68.1 0 70.6 0 70.6 2.5\"/>\n <path d=\"M65.3,2h-2.9V0h2.9v2ZM59.6,2h-2.9V0h2.9v2ZM53.9,2h-2.9V0h2.9v2ZM48.2,2h-2.9V0h2.9v2ZM42.4,2h-2.9V0h2.9v2ZM36.7,2h-2.9V0h2.9v2ZM31,2h-2.9V0h2.9v2ZM25.3,2h-2.9V0h2.9v2ZM19.6,2h-2.9V0h2.9v2ZM13.9,2h-2.9V0h2.9v2ZM8.2,2h-2.9V0h2.9v2Z\"/>\n <polygon points=\"2 2.5 0 2.5 0 0 2.5 0 2.5 2 2 2 2 2.5\"/>\n <path d=\"M2,13.4H0v-2.7h2v2.7ZM2,8H0v-2.7h2v2.7Z\"/>\n <polygon points=\"2.5 18.7 0 18.7 0 16.2 2 16.2 2 16.7 2.5 16.7 2.5 18.7\"/>\n <path d=\"M65.3,18.7h-2.9v-2h2.9v2ZM59.6,18.7h-2.9v-2h2.9v2ZM53.9,18.7h-2.9v-2h2.9v2ZM48.2,18.7h-2.9v-2h2.9v2ZM42.4,18.7h-2.9v-2h2.9v2ZM36.7,18.7h-2.9v-2h2.9v2ZM31,18.7h-2.9v-2h2.9v2ZM25.3,18.7h-2.9v-2h2.9v2ZM19.6,18.7h-2.9v-2h2.9v2ZM13.9,18.7h-2.9v-2h2.9v2ZM8.2,18.7h-2.9v-2h2.9v2Z\"/>\n <polygon points=\"70.6 18.7 68.1 18.7 68.1 16.7 68.6 16.7 68.6 16.2 70.6 16.2 70.6 18.7\"/>\n <path d=\"M70.6,13.4h-2v-2.7h2v2.7ZM70.6,8h-2v-2.7h2v2.7Z\"/>\n </g>\n</svg>`, So = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 70.6 61.5\">\n <g>\n <polygon points=\"70.6 45.3 68.6 45.3 68.6 44.8 68.1 44.8 68.1 42.8 70.6 42.8 70.6 45.3\"/>\n <path d=\"M65.3,44.8h-2.9v-2h2.9v2ZM59.6,44.8h-2.9v-2h2.9v2ZM53.9,44.8h-2.9v-2h2.9v2ZM48.2,44.8h-2.9v-2h2.9v2ZM42.4,44.8h-2.9v-2h2.9v2ZM36.7,44.8h-2.9v-2h2.9v2ZM31,44.8h-2.9v-2h2.9v2ZM25.3,44.8h-2.9v-2h2.9v2ZM19.6,44.8h-2.9v-2h2.9v2ZM13.9,44.8h-2.9v-2h2.9v2ZM8.2,44.8h-2.9v-2h2.9v2Z\"/>\n <polygon points=\"2 45.3 0 45.3 0 42.8 2.5 42.8 2.5 44.8 2 44.8 2 45.3\"/>\n <path d=\"M2,56.3H0v-2.7h2v2.7ZM2,50.8H0v-2.7h2v2.7Z\"/>\n <polygon points=\"2.5 61.5 0 61.5 0 59 2 59 2 59.5 2.5 59.5 2.5 61.5\"/>\n <path d=\"M65.3,61.5h-2.9v-2h2.9v2ZM59.6,61.5h-2.9v-2h2.9v2ZM53.9,61.5h-2.9v-2h2.9v2ZM48.2,61.5h-2.9v-2h2.9v2ZM42.4,61.5h-2.9v-2h2.9v2ZM36.7,61.5h-2.9v-2h2.9v2ZM31,61.5h-2.9v-2h2.9v2ZM25.3,61.5h-2.9v-2h2.9v2ZM19.6,61.5h-2.9v-2h2.9v2ZM13.9,61.5h-2.9v-2h2.9v2ZM8.2,61.5h-2.9v-2h2.9v2Z\"/>\n <polygon points=\"70.6 61.5 68.1 61.5 68.1 59.5 68.6 59.5 68.6 59 70.6 59 70.6 61.5\"/>\n <path d=\"M70.6,56.3h-2v-2.7h2v2.7ZM70.6,50.8h-2v-2.7h2v2.7Z\"/>\n </g>\n <path d=\"M68.6,23.7v13.7H2v-13.7h66.6M70.6,21.7H0v17.7h70.6v-17.7h0Z\"/>\n <path d=\"M68.6,2v13.7H2V2h66.6M70.6,0H0v17.7h70.6V0h0Z\"/>\n</svg>`, Ro = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 70.67 70.64\">\n <path d=\"M70.08,33.9l-9.75-9.75-2.83,2.83,6.33,6.33h-26.51V6.81l6.33,6.33,2.83-2.83L36.75.56c-.75-.75-2.08-.75-2.83,0l-9.75,9.75,2.83,2.83,6.33-6.33v26.5H6.83l6.33-6.33-2.83-2.83L.59,33.9c-.38.38-.59.88-.59,1.41s.21,1.04.59,1.41l9.75,9.75,2.83-2.83-6.33-6.33h26.5v26.51l-6.33-6.33-2.83,2.83,9.75,9.75c.38.38.88.59,1.41.59s1.04-.21,1.41-.59l9.75-9.75-2.83-2.83-6.33,6.33v-26.51h26.51l-6.33,6.33,2.83,2.83,9.75-9.75c.38-.38.59-.88.59-1.41s-.21-1.04-.59-1.41Z\" style=\"fill: #000; stroke-width: 0px;\"/>\n</svg>`, Lo = {\n add: Ao,\n delete: To,\n duplicate: Do,\n insertAbove: $o,\n insertBelow: So,\n move: Ro\n}, Ho = {\n key: 0,\n class: \"row-actions-dropdown\"\n}, _o = [\"aria-expanded\"], Vo = [\"onClick\"], Oo = [\"innerHTML\"], Po = { class: \"action-label\" }, Bo = {\n key: 1,\n class: \"row-actions-icons\"\n}, Fo = [\"title\", \"aria-label\", \"onClick\"], Zo = [\"innerHTML\"], tt = /* @__PURE__ */ Y({\n __name: \"ARowActions\",\n props: {\n rowIndex: {},\n store: {},\n config: {},\n position: {}\n },\n emits: [\"action\"],\n setup(e, { emit: t }) {\n const n = e, o = t, a = ae(\"actionsCell\"), r = ae(\"toggleButton\"), s = S(0), l = S(!1), i = S(!1), u = S({ top: 0, left: 0 }), c = {\n add: \"Add Row\",\n delete: \"Delete Row\",\n duplicate: \"Duplicate Row\",\n insertAbove: \"Insert Above\",\n insertBelow: \"Insert Below\",\n move: \"Move Row\"\n }, p = T(() => {\n const m = [], g = n.config.actions || {}, M = [\"add\", \"delete\", \"duplicate\", \"insertAbove\", \"insertBelow\", \"move\"];\n for (const D of M) {\n const P = g[D];\n if (P === !1 || P === void 0) continue;\n let H = !0, E = c[D], O = Lo[D];\n typeof P == \"object\" && (H = P.enabled !== !1, E = P.label || E, O = P.icon || O), H && m.push({ type: D, label: E, icon: O });\n }\n return m;\n }), h = T(() => {\n if (n.config.forceDropdown) return !0;\n const m = n.config.dropdownThreshold ?? 150;\n return m === 0 ? !1 : s.value > 0 && s.value < m;\n }), b = T(() => l.value ? i.value ? {\n position: \"fixed\",\n bottom: `${window.innerHeight - u.value.top}px`,\n left: `${u.value.left}px`,\n top: \"auto\"\n } : {\n position: \"fixed\",\n top: `${u.value.top}px`,\n left: `${u.value.left}px`\n } : {});\n lt(a, (m) => {\n const g = m[0];\n g && (s.value = g.contentRect.width);\n });\n const C = () => {\n l.value || x(), l.value = !l.value;\n }, x = () => {\n if (!r.value) return;\n const m = r.value.getBoundingClientRect(), g = window.innerHeight, M = p.value.length * 40 + 16, D = g - m.bottom, P = m.top;\n i.value = D < M && P > M, i.value ? u.value = {\n top: m.top,\n left: m.left\n } : u.value = {\n top: m.bottom,\n left: m.left\n };\n };\n Tt(a, () => {\n l.value = !1;\n });\n const v = (m) => {\n l.value = !1;\n const g = n.config.actions?.[m];\n typeof g == \"object\" && g.handler && g.handler(n.rowIndex, n.store) === !1 || o(\"action\", m, n.rowIndex);\n };\n return (m, g) => (w(), k(\"td\", {\n ref: \"actionsCell\",\n class: K([\"atable-row-actions\", { \"sticky-column\": e.position === \"before-index\", \"dropdown-active\": l.value }])\n }, [\n h.value ? (w(), k(\"div\", Ho, [\n y(\"button\", {\n ref: \"toggleButton\",\n type: \"button\",\n class: \"row-actions-toggle\",\n \"aria-expanded\": l.value,\n \"aria-haspopup\": \"true\",\n onClick: pe(C, [\"stop\"])\n }, [...g[0] || (g[0] = [\n y(\"span\", { class: \"dropdown-icon\" }, \"⋮\", -1)\n ])], 8, _o),\n U(y(\"div\", {\n class: K([\"row-actions-menu\", { \"menu-flipped\": i.value }]),\n style: fe(b.value),\n role: \"menu\"\n }, [\n (w(!0), k(oe, null, ie(p.value, (M) => (w(), k(\"button\", {\n key: M.type,\n type: \"button\",\n class: \"row-action-menu-item\",\n role: \"menuitem\",\n onClick: pe((D) => v(M.type), [\"stop\"])\n }, [\n y(\"span\", {\n class: \"action-icon\",\n innerHTML: M.icon\n }, null, 8, Oo),\n y(\"span\", Po, j(M.label), 1)\n ], 8, Vo))), 128))\n ], 6), [\n [ge, l.value]\n ])\n ])) : (w(), k(\"div\", Bo, [\n (w(!0), k(oe, null, ie(p.value, (M) => (w(), k(\"button\", {\n key: M.type,\n type: \"button\",\n class: \"row-action-btn\",\n title: M.label,\n \"aria-label\": M.label,\n onClick: pe((D) => v(M.type), [\"stop\"])\n }, [\n y(\"span\", {\n class: \"action-icon\",\n innerHTML: M.icon\n }, null, 8, Zo)\n ], 8, Fo))), 128))\n ]))\n ], 2));\n }\n}), No = [\"tabindex\"], Wo = /* @__PURE__ */ Y({\n __name: \"ARow\",\n props: {\n rowIndex: {},\n store: {},\n tabIndex: { default: () => -1 },\n addNavigation: { type: [Boolean, Object], default: !1 }\n },\n emits: [\"row:action\"],\n setup(e, { emit: t }) {\n const n = t, o = ae(\"rowEl\"), a = T(() => e.store.isRowVisible(e.rowIndex)), r = T(() => e.store.getRowExpandSymbol(e.rowIndex)), s = T(() => e.store.config.rowActions || { enabled: !1 }), l = T(() => s.value.enabled), i = T(() => s.value.position || \"before-index\"), u = (c, p) => {\n n(\"row:action\", c, p);\n };\n if (e.addNavigation) {\n let c = ct;\n typeof e.addNavigation == \"object\" && (c = {\n ...c,\n ...e.addNavigation\n }), Vt([\n {\n selectors: o,\n handlers: c\n }\n ]);\n }\n return (c, p) => U((w(), k(\"tr\", {\n ref: \"rowEl\",\n tabindex: e.tabIndex,\n class: \"atable-row\"\n }, [\n l.value && i.value === \"before-index\" ? (w(), re(tt, {\n key: 0,\n \"row-index\": e.rowIndex,\n store: e.store,\n config: s.value,\n position: i.value,\n onAction: u\n }, null, 8, [\"row-index\", \"store\", \"config\", \"position\"])) : z(\"\", !0),\n e.store.config.view !== \"uncounted\" ? ue(c.$slots, \"index\", { key: 1 }, () => [\n e.store.config.view === \"list\" ? (w(), k(\"td\", {\n key: 0,\n tabIndex: -1,\n class: K([\"list-index\", e.store.hasPinnedColumns ? \"sticky-index\" : \"\"])\n }, j(e.rowIndex + 1), 3)) : e.store.isTreeView ? (w(), k(\"td\", {\n key: 1,\n tabIndex: -1,\n class: K([\"tree-index\", e.store.hasPinnedColumns ? \"sticky-index\" : \"\"]),\n onClick: p[0] || (p[0] = (h) => e.store.toggleRowExpand(e.rowIndex))\n }, j(r.value), 3)) : z(\"\", !0)\n ], !0) : z(\"\", !0),\n l.value && i.value === \"after-index\" ? (w(), re(tt, {\n key: 2,\n \"row-index\": e.rowIndex,\n store: e.store,\n config: s.value,\n position: i.value,\n onAction: u\n }, null, 8, [\"row-index\", \"store\", \"config\", \"position\"])) : z(\"\", !0),\n ue(c.$slots, \"default\", {}, void 0, !0),\n l.value && i.value === \"end\" ? (w(), re(tt, {\n key: 3,\n \"row-index\": e.rowIndex,\n store: e.store,\n config: s.value,\n position: i.value,\n onAction: u\n }, null, 8, [\"row-index\", \"store\", \"config\", \"position\"])) : z(\"\", !0)\n ], 8, No)), [\n [ge, a.value]\n ]);\n }\n}), mn = /* @__PURE__ */ Ee(Wo, [[\"__scopeId\", \"data-v-c35a3748\"]]), bt = /* @__PURE__ */ new WeakMap(), zo = {\n mounted(e, t) {\n const n = !t.modifiers.bubble;\n let o;\n if (typeof t.value == \"function\") o = Tt(e, t.value, { capture: n });\n else {\n const [a, r] = t.value;\n o = Tt(e, a, Object.assign({ capture: n }, r));\n }\n bt.set(e, o);\n },\n unmounted(e) {\n const t = bt.get(e);\n t && typeof t == \"function\" ? t() : t?.stop(), bt.delete(e);\n }\n}, Go = { mounted(e, t) {\n typeof t.value == \"function\" ? lt(e, t.value) : lt(e, ...t.value);\n} };\nfunction Uo() {\n let e = !1;\n const t = ee(!1);\n return (n, o) => {\n if (t.value = o.value, e) return;\n e = !0;\n const a = ro(n, o.value);\n Q(t, (r) => a.value = r);\n };\n}\nUo();\nconst jo = { class: \"gantt-connection-overlay\" }, qo = {\n class: \"connection-svg\",\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n pointerEvents: \"none\",\n zIndex: 1\n }\n}, Yo = [\"d\", \"stroke-width\", \"onDblclick\"], Xo = [\"id\", \"d\", \"stroke\", \"stroke-width\", \"onDblclick\"], Jo = 0.25, Je = 16, Ko = /* @__PURE__ */ Y({\n __name: \"AGanttConnection\",\n props: {\n store: {}\n },\n emits: [\"connection:delete\"],\n setup(e, { emit: t }) {\n const n = t, o = T(() => e.store.connectionPaths.filter((s) => {\n const l = e.store.ganttBars.find((u) => u.id === s.from.barId), i = e.store.ganttBars.find((u) => u.id === s.to.barId);\n return l && i;\n })), a = (s) => {\n const l = e.store.connectionHandles.find(\n (E) => E.barId === s.from.barId && E.side === s.from.side\n ), i = e.store.connectionHandles.find(\n (E) => E.barId === s.to.barId && E.side === s.to.side\n );\n if (!l || !i) return \"\";\n const u = l.position.x + Je / 2, c = l.position.y + Je / 2, p = i.position.x + Je / 2, h = i.position.y + Je / 2, b = Math.abs(p - u), C = Math.max(b * Jo, 50), x = u + (s.from.side === \"left\" ? -C : C), v = p + (s.to.side === \"left\" ? -C : C), m = { x: 0.5 * u + 0.5 * x, y: 0.5 * c + 0.5 * c }, g = { x: 0.5 * x + 0.5 * v, y: 0.5 * c + 0.5 * h }, M = { x: 0.5 * v + 0.5 * p, y: 0.5 * h + 0.5 * h }, D = { x: 0.5 * m.x + 0.5 * g.x, y: 0.5 * m.y + 0.5 * g.y }, P = { x: 0.5 * g.x + 0.5 * M.x, y: 0.5 * g.y + 0.5 * M.y }, H = { x: 0.5 * D.x + 0.5 * P.x, y: 0.5 * D.y + 0.5 * P.y };\n return `M ${u} ${c} Q ${x} ${c}, ${H.x} ${H.y} Q ${v} ${h}, ${p} ${h}`;\n }, r = (s) => {\n e.store.deleteConnection(s.id) && n(\"connection:delete\", s);\n };\n return (s, l) => (w(), k(\"div\", jo, [\n (w(), k(\"svg\", qo, [\n l[0] || (l[0] = y(\"defs\", null, [\n y(\"path\", {\n id: \"arrowhead\",\n d: \"M 0 -7 L 20 0 L 0 7Z\",\n stroke: \"black\",\n \"stroke-width\": \"1\",\n fill: \"currentColor\"\n }),\n y(\"marker\", {\n id: \"arrowhead-marker\",\n markerWidth: \"10\",\n markerHeight: \"7\",\n refX: \"5\",\n refY: \"3.5\",\n orient: \"auto\",\n markerUnits: \"strokeWidth\"\n }, [\n y(\"polygon\", {\n points: \"0 0, 10 3.5, 0 7\",\n fill: \"currentColor\"\n })\n ])\n ], -1)),\n (w(!0), k(oe, null, ie(o.value, (i) => (w(), k(\"path\", {\n key: `${i.id}-hitbox`,\n d: a(i),\n stroke: \"transparent\",\n \"stroke-width\": (i.style?.width || 2) + 10,\n fill: \"none\",\n class: \"connection-hitbox\",\n onDblclick: (u) => r(i)\n }, null, 40, Yo))), 128)),\n (w(!0), k(oe, null, ie(o.value, (i) => (w(), k(\"path\", {\n id: i.id,\n key: i.id,\n d: a(i),\n stroke: i.style?.color || \"#666\",\n \"stroke-width\": i.style?.width || 2,\n fill: \"none\",\n \"marker-mid\": \"url(#arrowhead-marker)\",\n class: \"connection-path animated-path\",\n onDblclick: (u) => r(i)\n }, null, 40, Xo))), 128))\n ]))\n ]));\n }\n}), Qo = /* @__PURE__ */ Ee(Ko, [[\"__scopeId\", \"data-v-71911260\"]]), el = { class: \"column-filter\" }, tl = {\n key: 2,\n class: \"checkbox-filter\"\n}, nl = [\"value\"], ol = {\n key: 5,\n class: \"date-range-filter\"\n}, ll = /* @__PURE__ */ Y({\n __name: \"ATableColumnFilter\",\n props: {\n column: {},\n colIndex: {},\n store: {}\n },\n setup(e) {\n const t = S(\"\"), n = sn({\n startValue: \"\",\n endValue: \"\"\n }), o = (i) => {\n if (i.filterOptions) return i.filterOptions;\n const u = /* @__PURE__ */ new Set();\n return e.store.rows.forEach((c) => {\n const p = c[i.name];\n p != null && p !== \"\" && u.add(p);\n }), Array.from(u).map((c) => ({\n value: c,\n label: String(c)\n }));\n }, a = T(() => !!(t.value || n.startValue || n.endValue)), r = (i) => {\n !i && e.column.filterType !== \"checkbox\" ? (e.store.clearFilter(e.colIndex), t.value = \"\") : (t.value = i, e.store.setFilter(e.colIndex, { value: i }));\n }, s = (i, u) => {\n i === \"start\" ? n.startValue = u : n.endValue = u, !n.startValue && !n.endValue ? e.store.clearFilter(e.colIndex) : e.store.setFilter(e.colIndex, {\n value: null,\n startValue: n.startValue,\n endValue: n.endValue\n });\n }, l = () => {\n t.value = \"\", n.startValue = \"\", n.endValue = \"\", e.store.clearFilter(e.colIndex);\n };\n return (i, u) => (w(), k(\"div\", el, [\n (e.column.filterType || \"text\") === \"text\" ? U((w(), k(\"input\", {\n key: 0,\n \"onUpdate:modelValue\": u[0] || (u[0] = (c) => t.value = c),\n type: \"text\",\n class: \"filter-input\",\n onInput: u[1] || (u[1] = (c) => r(t.value))\n }, null, 544)), [\n [de, t.value]\n ]) : e.column.filterType === \"number\" ? U((w(), k(\"input\", {\n key: 1,\n \"onUpdate:modelValue\": u[2] || (u[2] = (c) => t.value = c),\n type: \"number\",\n class: \"filter-input\",\n onInput: u[3] || (u[3] = (c) => r(t.value))\n }, null, 544)), [\n [de, t.value]\n ]) : e.column.filterType === \"checkbox\" ? (w(), k(\"label\", tl, [\n U(y(\"input\", {\n \"onUpdate:modelValue\": u[4] || (u[4] = (c) => t.value = c),\n type: \"checkbox\",\n class: \"filter-checkbox\",\n onChange: u[5] || (u[5] = (c) => r(t.value))\n }, null, 544), [\n [rn, t.value]\n ]),\n y(\"span\", null, j(e.column.label), 1)\n ])) : e.column.filterType === \"select\" ? U((w(), k(\"select\", {\n key: 3,\n \"onUpdate:modelValue\": u[6] || (u[6] = (c) => t.value = c),\n class: \"filter-select\",\n onChange: u[7] || (u[7] = (c) => r(t.value))\n }, [\n u[15] || (u[15] = y(\"option\", { value: \"\" }, \"All\", -1)),\n (w(!0), k(oe, null, ie(o(e.column), (c) => (w(), k(\"option\", {\n key: c.value || c,\n value: c.value || c\n }, j(c.label || c), 9, nl))), 128))\n ], 544)), [\n [En, t.value]\n ]) : e.column.filterType === \"date\" ? U((w(), k(\"input\", {\n key: 4,\n \"onUpdate:modelValue\": u[8] || (u[8] = (c) => t.value = c),\n type: \"date\",\n class: \"filter-input\",\n onChange: u[9] || (u[9] = (c) => r(t.value))\n }, null, 544)), [\n [de, t.value]\n ]) : e.column.filterType === \"dateRange\" ? (w(), k(\"div\", ol, [\n U(y(\"input\", {\n \"onUpdate:modelValue\": u[10] || (u[10] = (c) => n.startValue = c),\n type: \"date\",\n class: \"filter-input\",\n onChange: u[11] || (u[11] = (c) => s(\"start\", n.startValue))\n }, null, 544), [\n [de, n.startValue]\n ]),\n u[16] || (u[16] = y(\"span\", { class: \"date-separator\" }, \"-\", -1)),\n U(y(\"input\", {\n \"onUpdate:modelValue\": u[12] || (u[12] = (c) => n.endValue = c),\n type: \"date\",\n class: \"filter-input\",\n onChange: u[13] || (u[13] = (c) => s(\"end\", n.endValue))\n }, null, 544), [\n [de, n.endValue]\n ])\n ])) : e.column.filterType === \"component\" && e.column.filterComponent ? (w(), re(Re(e.column.filterComponent), {\n key: 6,\n value: t.value,\n column: e.column,\n colIndex: e.colIndex,\n store: e.store,\n \"onUpdate:value\": u[14] || (u[14] = (c) => r(c))\n }, null, 40, [\"value\", \"column\", \"colIndex\", \"store\"])) : z(\"\", !0),\n a.value ? (w(), k(\"button\", {\n key: 7,\n onClick: l,\n class: \"clear-btn\",\n title: \"Clear\"\n }, \"×\")) : z(\"\", !0)\n ]));\n }\n}), al = /* @__PURE__ */ Ee(ll, [[\"__scopeId\", \"data-v-8487462d\"]]), sl = { key: 0 }, rl = {\n class: \"atable-header-row\",\n tabindex: \"-1\"\n}, il = {\n key: 2,\n class: \"row-actions-header\"\n}, ul = [\"data-colindex\", \"onClick\"], cl = {\n key: 3,\n class: \"row-actions-header\"\n}, dl = {\n key: 0,\n class: \"atable-filters-row\"\n}, vl = {\n key: 2,\n class: \"row-actions-header\"\n}, fl = {\n key: 3,\n class: \"row-actions-header\"\n}, hn = /* @__PURE__ */ Y({\n __name: \"ATableHeader\",\n props: {\n columns: {},\n store: {}\n },\n setup(e) {\n const t = e, n = T(() => t.columns.filter((l) => l.filterable)), o = T(() => t.store.config.value?.rowActions?.enabled ?? !1), a = T(() => t.store.config.value?.rowActions?.position ?? \"before-index\"), r = (l) => t.store.sortByColumn(l), s = (l) => {\n for (const i of l) {\n if (i.borderBoxSize.length === 0) continue;\n const u = i.borderBoxSize[0].inlineSize, c = Number(i.target.dataset.colindex), p = t.store.columns[c]?.width;\n typeof p == \"number\" && p !== u && t.store.resizeColumn(c, u);\n }\n };\n return (l, i) => t.columns.length ? (w(), k(\"thead\", sl, [\n y(\"tr\", rl, [\n o.value && a.value === \"before-index\" ? (w(), k(\"th\", {\n key: 0,\n class: K([\"row-actions-header\", { \"sticky-column\": a.value === \"before-index\" }])\n }, null, 2)) : z(\"\", !0),\n t.store.zeroColumn ? (w(), k(\"th\", {\n key: 1,\n id: \"header-index\",\n class: K([[\n t.store.hasPinnedColumns ? \"sticky-index\" : \"\",\n t.store.isTreeView ? \"tree-index\" : \"\",\n t.store.config.view === \"list-expansion\" ? \"list-expansion-index\" : \"\"\n ], \"list-index\"])\n }, null, 2)) : z(\"\", !0),\n o.value && a.value === \"after-index\" ? (w(), k(\"th\", il)) : z(\"\", !0),\n (w(!0), k(oe, null, ie(t.columns, (u, c) => U((w(), k(\"th\", {\n key: u.name,\n \"data-colindex\": c,\n tabindex: \"-1\",\n style: fe(t.store.getHeaderCellStyle(u)),\n class: K(`${u.pinned ? \"sticky-column\" : \"\"} ${u.sortable === !1 ? \"\" : \"cursor-pointer\"}`),\n onClick: (p) => u.sortable !== !1 ? r(c) : void 0\n }, [\n ue(l.$slots, \"default\", {}, () => [\n Dt(j(u.label || String.fromCharCode(c + 97).toUpperCase()), 1)\n ])\n ], 14, ul)), [\n [L(Go), s]\n ])), 128)),\n o.value && a.value === \"end\" ? (w(), k(\"th\", cl)) : z(\"\", !0)\n ]),\n n.value.length > 0 ? (w(), k(\"tr\", dl, [\n o.value && a.value === \"before-index\" ? (w(), k(\"th\", {\n key: 0,\n class: K([\"row-actions-header\", { \"sticky-column\": a.value === \"before-index\" }])\n }, null, 2)) : z(\"\", !0),\n t.store.zeroColumn ? (w(), k(\"th\", {\n key: 1,\n class: K([[\n t.store.hasPinnedColumns ? \"sticky-index\" : \"\",\n t.store.isTreeView ? \"tree-index\" : \"\",\n t.store.config.view === \"list-expansion\" ? \"list-expansion-index\" : \"\"\n ], \"list-index\"])\n }, null, 2)) : z(\"\", !0),\n o.value && a.value === \"after-index\" ? (w(), k(\"th\", vl)) : z(\"\", !0),\n (w(!0), k(oe, null, ie(t.columns, (u, c) => (w(), k(\"th\", {\n key: `filter-${u.name}`,\n class: K(`${u.pinned ? \"sticky-column\" : \"\"}`),\n style: fe(t.store.getHeaderCellStyle(u))\n }, [\n u.filterable ? (w(), re(al, {\n key: 0,\n column: u,\n \"col-index\": c,\n store: t.store\n }, null, 8, [\"column\", \"col-index\", \"store\"])) : z(\"\", !0)\n ], 6))), 128)),\n o.value && a.value === \"end\" ? (w(), k(\"th\", fl)) : z(\"\", !0)\n ])) : z(\"\", !0)\n ])) : z(\"\", !0);\n }\n}), gn = /* @__PURE__ */ Y({\n __name: \"ATableModal\",\n props: {\n store: {}\n },\n setup(e) {\n const t = ae(\"amodal\"), { width: n, height: o } = Ae(t), a = T(() => {\n if (!(e.store.modal.height && e.store.modal.width && e.store.modal.left && e.store.modal.bottom)) return;\n const r = e.store.modal.cell?.closest(\"table\");\n if (!r) return {};\n const s = r.offsetHeight || 0, l = r.offsetWidth || 0;\n let i = e.store.modal.cell?.offsetTop || 0;\n const u = r.querySelector(\"thead\")?.offsetHeight || 0;\n i += u, i = i + o.value < s ? i : i - (o.value + e.store.modal.height);\n let c = e.store.modal.cell?.offsetLeft || 0;\n return c = c + n.value <= l ? c : c - (n.value - e.store.modal.width), {\n left: `${c}px`,\n top: `${i}px`\n };\n });\n return (r, s) => (w(), k(\"div\", {\n ref: \"amodal\",\n class: \"amodal\",\n tabindex: \"-1\",\n style: fe(a.value),\n onClick: s[0] || (s[0] = pe(() => {\n }, [\"stop\"])),\n onInput: s[1] || (s[1] = pe(() => {\n }, [\"stop\"]))\n }, [\n ue(r.$slots, \"default\")\n ], 36));\n }\n}), pl = (e) => {\n const t = e.id || uo();\n return Dn(`table-${t}`, () => {\n const n = () => {\n const d = [Object.assign({}, { rowModified: !1 })], f = /* @__PURE__ */ new Set();\n for (let A = 0; A < a.value.length; A++) {\n const R = a.value[A];\n R.parent !== null && R.parent !== void 0 && f.add(R.parent);\n }\n const I = (A) => a.value[A]?.gantt !== void 0, _ = (A) => {\n for (let R = 0; R < a.value.length; R++)\n if (a.value[R].parent === A && (I(R) || _(R)))\n return !0;\n return !1;\n }, F = (A) => {\n const R = r.value, Z = R.view === \"tree\" || R.view === \"tree-gantt\" ? R.defaultTreeExpansion : void 0;\n if (!Z) return !0;\n switch (Z) {\n case \"root\":\n return !1;\n // Only root nodes are visible, all children start collapsed\n case \"branch\":\n return _(A);\n case \"leaf\":\n return !0;\n // All nodes should be expanded\n default:\n return !0;\n }\n };\n for (let A = 0; A < a.value.length; A++) {\n const R = a.value[A], Z = R.parent === null || R.parent === void 0, J = f.has(A);\n d[A] = {\n childrenOpen: F(A),\n expanded: !1,\n indent: R.indent || 0,\n isParent: J,\n isRoot: Z,\n rowModified: !1,\n open: Z,\n // This will be recalculated later for non-root nodes\n parent: R.parent\n };\n }\n return d;\n }, o = S(e.columns), a = S(e.rows), r = S(e.config || {}), s = S({}), l = S({}), i = T(() => {\n const d = {};\n for (const [f, I] of o.value.entries())\n for (const [_, F] of a.value.entries())\n d[`${f}:${_}`] = F[I.name];\n return d;\n }), u = T({\n get: () => {\n const d = n();\n for (let f = 0; f < d.length; f++)\n s.value[f] && (d[f].rowModified = s.value[f]), l.value[f] && (l.value[f].childrenOpen !== void 0 && (d[f].childrenOpen = l.value[f].childrenOpen), l.value[f].expanded !== void 0 && (d[f].expanded = l.value[f].expanded));\n if (M.value) {\n const f = (I, _) => {\n const F = _[I];\n if (F.isRoot || F.parent === null || F.parent === void 0)\n return !0;\n const A = F.parent;\n return A < 0 || A >= _.length ? !1 : (_[A].childrenOpen || !1) && f(A, _);\n };\n for (let I = 0; I < d.length; I++)\n d[I].isRoot || (d[I].open = f(I, d));\n }\n return d;\n },\n set: (d) => {\n JSON.stringify(d) !== JSON.stringify(u.value) && (u.value = d);\n }\n }), c = S(e.modal || { visible: !1 }), p = S({}), h = S([]), b = S([]), C = S([]), x = S({\n column: null,\n direction: null\n }), v = S({}), m = T(() => o.value.some((d) => d.pinned)), g = T(() => r.value.view === \"gantt\" || r.value.view === \"tree-gantt\"), M = T(() => r.value.view === \"tree\" || r.value.view === \"tree-gantt\"), D = T(() => {\n const d = r.value;\n return d.view === \"gantt\" || d.view === \"tree-gantt\" ? d.dependencyGraph !== !1 : !0;\n }), P = T(() => `${Math.ceil(a.value.length / 100 + 1)}ch`), H = T(\n () => r.value.view ? [\"list\", \"tree\", \"tree-gantt\", \"list-expansion\"].includes(r.value.view) : !1\n ), E = T(() => {\n let d = a.value.map((f, I) => ({\n ...f,\n originalIndex: I\n }));\n if (Object.entries(v.value).forEach(([f, I]) => {\n const _ = parseInt(f), F = o.value[_];\n !F || !(I.value || I.startValue || I.endValue || F.filterType === \"checkbox\" && I.value !== void 0) || (d = d.filter((A) => {\n const R = A[F.name];\n return te(R, I, F);\n }));\n }), x.value.column !== null && x.value.direction) {\n const f = o.value[x.value.column], I = x.value.direction;\n d.sort((_, F) => {\n let A = _[f.name], R = F[f.name];\n A == null && (A = \"\"), R == null && (R = \"\");\n const Z = Number(A), J = Number(R);\n if (!isNaN(Z) && !isNaN(J) && A !== \"\" && R !== \"\")\n return I === \"asc\" ? Z - J : J - Z;\n {\n const Ye = String(A).toLowerCase(), Nt = String(R).toLowerCase();\n return I === \"asc\" ? Ye.localeCompare(Nt) : Nt.localeCompare(Ye);\n }\n });\n }\n return d;\n }), O = (d, f) => i.value[`${d}:${f}`], X = (d, f, I) => {\n const _ = `${d}:${f}`, F = o.value[d];\n i.value[_] !== I && (s.value[f] = !0), i.value[_] = I, a.value[f] = {\n ...a.value[f],\n [F.name]: I\n };\n }, G = (d) => {\n a.value = d;\n }, N = (d, f, I) => {\n const _ = `${d}:${f}`;\n i.value[_] !== I && (s.value[f] = !0, p.value[_] = I);\n }, ce = (d) => {\n const f = o.value.indexOf(d) === o.value.length - 1, I = r.value.fullWidth ? d.resizable && !f : d.resizable;\n return {\n width: d.width || \"40ch\",\n textAlign: d.align || \"center\",\n ...I && {\n resize: \"horizontal\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\"\n }\n };\n }, Ce = (d, f) => {\n if (d < 0 || d >= o.value.length) return;\n const I = Math.max(f, 40);\n o.value[d] = {\n ...o.value[d],\n width: `${I}px`\n };\n }, Ne = (d) => {\n const f = a.value[d];\n return g.value && f.gantt !== void 0;\n }, Oe = (d) => !M.value || u.value[d].isRoot || u.value[d].open, dt = (d) => !M.value && r.value.view !== \"list-expansion\" ? \"\" : M.value && (u.value[d].isRoot || u.value[d].isParent) ? u.value[d].childrenOpen ? \"▼\" : \"►\" : r.value.view === \"list-expansion\" ? u.value[d].expanded ? \"▼\" : \"►\" : \"\", vt = (d) => {\n if (M.value) {\n const f = l.value[d] || {}, I = !(f.childrenOpen ?? u.value[d].childrenOpen);\n l.value[d] = {\n ...f,\n childrenOpen: I\n }, I || We(d);\n } else if (r.value.view === \"list-expansion\") {\n const f = l.value[d] || {}, I = f.expanded ?? u.value[d].expanded;\n l.value[d] = {\n ...f,\n expanded: !I\n };\n }\n }, We = (d) => {\n for (let f = 0; f < a.value.length; f++)\n if (u.value[f].parent === d) {\n const I = l.value[f] || {};\n l.value[f] = {\n ...I,\n childrenOpen: !1\n }, We(f);\n }\n }, ft = (d, f) => {\n const I = O(d, f);\n return ze(d, f, I);\n }, ze = (d, f, I) => {\n const _ = o.value[d], F = a.value[f], A = _.format;\n return A ? typeof A == \"function\" ? A(I, { table: i.value, row: F, column: _ }) : typeof A == \"string\" ? Function(`\"use strict\";return (${A})`)()(I, { table: i.value, row: F, column: _ }) : I : I;\n }, pt = (d) => {\n d.target instanceof Node && c.value.parent?.contains(d.target) || c.value.visible && (c.value.visible = !1);\n }, mt = (d, f) => f && d === 0 && f > 0 ? `${f}ch` : \"inherit\", ht = (d) => {\n const f = a.value[d.rowIndex]?.gantt;\n f && (d.type === \"resize\" ? d.edge === \"start\" ? (f.startIndex = d.newStart, f.endIndex = d.end, f.colspan = f.endIndex - f.startIndex) : d.edge === \"end\" && (f.startIndex = d.start, f.endIndex = d.newEnd, f.colspan = f.endIndex - f.startIndex) : d.type === \"bar\" && (f.startIndex = d.newStart, f.endIndex = d.newEnd, f.colspan = f.endIndex - f.startIndex));\n }, gt = (d) => {\n const f = h.value.findIndex((I) => I.id === d.id);\n f >= 0 ? h.value[f] = d : h.value.push(d);\n }, Ge = (d) => {\n const f = h.value.findIndex((I) => I.id === d);\n f >= 0 && h.value.splice(f, 1);\n }, Ue = (d) => {\n const f = b.value.findIndex((I) => I.id === d.id);\n f >= 0 ? b.value[f] = d : b.value.push(d);\n }, je = (d) => {\n const f = b.value.findIndex((I) => I.id === d);\n f >= 0 && b.value.splice(f, 1);\n }, qe = (d, f, I) => {\n const _ = b.value.find((R) => R.id === d), F = b.value.find((R) => R.id === f);\n if (!_ || !F)\n return console.warn(\"Cannot create connection: handle not found\"), null;\n const A = {\n id: `connection-${d}-${f}`,\n from: {\n barId: _.barId,\n side: _.side\n },\n to: {\n barId: F.barId,\n side: F.side\n },\n style: I?.style,\n label: I?.label\n };\n return C.value.push(A), A;\n }, V = (d) => {\n const f = C.value.findIndex((I) => I.id === d);\n return f >= 0 ? (C.value.splice(f, 1), !0) : !1;\n }, B = (d) => C.value.filter((f) => f.from.barId === d || f.to.barId === d), W = (d) => b.value.filter((f) => f.barId === d), q = (d) => {\n if (o.value[d].sortable === !1) return;\n let f;\n x.value.column === d && x.value.direction === \"asc\" ? f = \"desc\" : f = \"asc\", x.value.column = d, x.value.direction = f;\n }, te = (d, f, I) => {\n const _ = I.filterType || \"text\", F = f.value;\n if (!F && _ !== \"dateRange\" && _ !== \"checkbox\") return !0;\n switch (_) {\n case \"text\": {\n let A = \"\";\n return typeof d == \"object\" && d !== null ? A = Object.values(d).join(\" \") : A = String(d || \"\"), A.toLowerCase().includes(String(F).toLowerCase());\n }\n case \"number\": {\n const A = Number(d), R = Number(F);\n return !isNaN(A) && !isNaN(R) && A === R;\n }\n case \"select\":\n return d === F;\n case \"checkbox\":\n return F === !0 ? !!d : !0;\n case \"date\": {\n let A;\n if (typeof d == \"number\") {\n const Z = new Date(d), J = (/* @__PURE__ */ new Date()).getFullYear();\n A = new Date(J, Z.getMonth(), Z.getDate());\n } else\n A = new Date(String(d));\n const R = new Date(String(F));\n return A.toDateString() === R.toDateString();\n }\n case \"dateRange\": {\n const A = f.startValue, R = f.endValue;\n if (!A && !R) return !0;\n let Z;\n if (typeof d == \"number\") {\n const J = new Date(d), Ye = (/* @__PURE__ */ new Date()).getFullYear();\n Z = new Date(Ye, J.getMonth(), J.getDate());\n } else\n Z = new Date(String(d));\n return !(A && Z < new Date(String(A)) || R && Z > new Date(String(R)));\n }\n default:\n return !0;\n }\n }, ne = (d, f) => {\n !f.value && !f.startValue && !f.endValue ? delete v.value[d] : v.value[d] = f;\n }, se = (d) => {\n delete v.value[d];\n }, le = (d, f = \"end\") => {\n const I = {};\n for (const F of o.value)\n I[F.name] = \"\";\n d && Object.assign(I, d);\n let _;\n return f === \"start\" ? (_ = 0, a.value.unshift(I)) : f === \"end\" ? (_ = a.value.length, a.value.push(I)) : (_ = Math.max(0, Math.min(f, a.value.length)), a.value.splice(_, 0, I)), _;\n };\n return {\n // state\n columns: o,\n config: r,\n connectionHandles: b,\n connectionPaths: C,\n display: u,\n filterState: v,\n ganttBars: h,\n modal: c,\n rows: a,\n sortState: x,\n table: i,\n updates: p,\n // getters\n filteredRows: E,\n hasPinnedColumns: m,\n isGanttView: g,\n isTreeView: M,\n isDependencyGraphEnabled: D,\n numberedRowWidth: P,\n zeroColumn: H,\n // actions\n addRow: le,\n clearFilter: se,\n closeModal: pt,\n createConnection: qe,\n deleteConnection: V,\n deleteRow: (d) => {\n if (d < 0 || d >= a.value.length)\n return null;\n const [f] = a.value.splice(d, 1);\n delete s.value[d], delete l.value[d];\n const I = {}, _ = {};\n for (const [F, A] of Object.entries(s.value)) {\n const R = parseInt(F);\n R > d ? I[R - 1] = A : I[R] = A;\n }\n for (const [F, A] of Object.entries(l.value)) {\n const R = parseInt(F);\n R > d ? _[R - 1] = A : _[R] = A;\n }\n return s.value = I, l.value = _, f;\n },\n duplicateRow: (d) => {\n if (d < 0 || d >= a.value.length)\n return -1;\n const f = a.value[d], I = JSON.parse(JSON.stringify(f)), _ = d + 1;\n return a.value.splice(_, 0, I), _;\n },\n getCellData: O,\n getCellDisplayValue: ft,\n getConnectionsForBar: B,\n getFormattedValue: ze,\n getHandlesForBar: W,\n getHeaderCellStyle: ce,\n getIndent: mt,\n getRowExpandSymbol: dt,\n insertRowAbove: (d, f) => {\n const I = Math.max(0, d);\n return le(f, I);\n },\n insertRowBelow: (d, f) => {\n const I = Math.min(d + 1, a.value.length);\n return le(f, I);\n },\n isRowGantt: Ne,\n isRowVisible: Oe,\n moveRow: (d, f) => {\n if (d < 0 || d >= a.value.length || f < 0 || f >= a.value.length || d === f)\n return !1;\n const [I] = a.value.splice(d, 1);\n a.value.splice(f, 0, I);\n const _ = {}, F = {};\n for (const [A, R] of Object.entries(s.value)) {\n const Z = parseInt(A);\n let J = Z;\n Z === d ? J = f : d < f ? Z > d && Z <= f && (J = Z - 1) : Z >= f && Z < d && (J = Z + 1), _[J] = R;\n }\n for (const [A, R] of Object.entries(l.value)) {\n const Z = parseInt(A);\n let J = Z;\n Z === d ? J = f : d < f ? Z > d && Z <= f && (J = Z - 1) : Z >= f && Z < d && (J = Z + 1), F[J] = R;\n }\n return s.value = _, l.value = F, !0;\n },\n registerConnectionHandle: Ue,\n registerGanttBar: gt,\n resizeColumn: Ce,\n setCellData: X,\n setCellText: N,\n setFilter: ne,\n sortByColumn: q,\n toggleRowExpand: vt,\n unregisterConnectionHandle: je,\n unregisterGanttBar: Ge,\n updateGanttBar: ht,\n updateRows: G\n };\n })();\n}, ml = {\n class: \"atable-container\",\n style: { position: \"relative\" }\n}, hl = /* @__PURE__ */ Y({\n __name: \"ATable\",\n props: /* @__PURE__ */ me({\n id: { default: \"\" },\n config: { default: () => new Object() }\n }, {\n rows: { required: !0 },\n rowsModifiers: {},\n columns: { required: !0 },\n columnsModifiers: {}\n }),\n emits: /* @__PURE__ */ me([\"cellUpdate\", \"gantt:drag\", \"connection:event\", \"columns:update\", \"row:add\", \"row:delete\", \"row:duplicate\", \"row:insert-above\", \"row:insert-below\", \"row:move\"], [\"update:rows\", \"update:columns\"]),\n setup(e, { expose: t, emit: n }) {\n const o = he(e, \"rows\"), a = he(e, \"columns\"), r = n, s = ae(\"table\"), l = pl({ columns: a.value, rows: o.value, id: e.id, config: e.config });\n l.$onAction(({ name: C, store: x, args: v, after: m }) => {\n if (C === \"setCellData\" || C === \"setCellText\") {\n const [g, M, D] = v, P = x.getCellData(g, M);\n m(() => {\n o.value = [...x.rows], r(\"cellUpdate\", { colIndex: g, rowIndex: M, newValue: D, oldValue: P });\n });\n } else if (C === \"updateGanttBar\") {\n const [g] = v;\n let M = !1;\n g.type === \"resize\" ? M = g.oldColspan !== g.newColspan : g.type === \"bar\" && (M = g.oldStart !== g.newStart || g.oldEnd !== g.newEnd), M && m(() => {\n r(\"gantt:drag\", g);\n });\n } else C === \"resizeColumn\" && m(() => {\n a.value = [...x.columns], r(\"columns:update\", [...x.columns]);\n });\n }), Q(\n () => o.value,\n (C) => {\n JSON.stringify(C) !== JSON.stringify(l.rows) && (l.rows = [...C]);\n },\n { deep: !0 }\n ), Q(\n a,\n (C) => {\n JSON.stringify(C) !== JSON.stringify(l.columns) && (l.columns = [...C], r(\"columns:update\", [...C]));\n },\n { deep: !0 }\n ), we(() => {\n a.value.some((C) => C.pinned) && (u(), l.isTreeView && pn(s, u, { childList: !0, subtree: !0 }));\n });\n const i = T(() => l.columns.filter((C) => C.pinned).length), u = () => {\n const C = s.value, x = C?.rows[0], v = C?.rows[1], m = x ? Array.from(x.cells) : [];\n for (const [g, M] of m.entries()) {\n const D = v?.cells[g];\n D && (M.style.width = `${D.offsetWidth}px`);\n }\n for (const g of C?.rows || []) {\n let M = 0;\n const D = [];\n for (const P of g.cells)\n (P.classList.contains(\"sticky-column\") || P.classList.contains(\"sticky-index\")) && (P.style.left = `${M}px`, M += P.offsetWidth, D.push(P));\n D.length > 0 && D[D.length - 1].classList.add(\"sticky-column-edge\");\n }\n };\n window.addEventListener(\"keydown\", (C) => {\n if (C.key === \"Escape\" && l.modal.visible) {\n l.modal.visible = !1;\n const x = l.modal.parent;\n x && st().then(() => {\n x.focus();\n });\n }\n });\n const c = (C) => {\n if (!C.gantt || i.value === 0)\n return l.columns;\n const x = [];\n for (let v = 0; v < i.value; v++) {\n const m = { ...l.columns[v] };\n m.originalIndex = v, x.push(m);\n }\n return x.push({\n ...l.columns[i.value],\n isGantt: !0,\n colspan: C.gantt?.colspan || l.columns.length - i.value,\n originalIndex: i.value,\n width: \"auto\"\n // TODO: refactor to API that can detect when data exists in a cell. Might have be custom and not generalizable\n }), x;\n }, p = (C) => {\n r(\"connection:event\", { type: \"create\", connection: C });\n }, h = (C) => {\n r(\"connection:event\", { type: \"delete\", connection: C });\n }, b = (C, x) => {\n switch (C) {\n case \"add\": {\n const v = l.addRow({}, x + 1), m = l.rows[v];\n o.value = [...l.rows], r(\"row:add\", { rowIndex: v, row: m });\n break;\n }\n case \"delete\": {\n const v = l.deleteRow(x);\n v && (o.value = [...l.rows], r(\"row:delete\", { rowIndex: x, row: v }));\n break;\n }\n case \"duplicate\": {\n const v = l.duplicateRow(x);\n if (v >= 0) {\n const m = l.rows[v];\n o.value = [...l.rows], r(\"row:duplicate\", { sourceIndex: x, newIndex: v, row: m });\n }\n break;\n }\n case \"insertAbove\": {\n const v = l.insertRowAbove(x), m = l.rows[v];\n o.value = [...l.rows], r(\"row:insert-above\", { targetIndex: x, newIndex: v, row: m });\n break;\n }\n case \"insertBelow\": {\n const v = l.insertRowBelow(x), m = l.rows[v];\n o.value = [...l.rows], r(\"row:insert-below\", { targetIndex: x, newIndex: v, row: m });\n break;\n }\n case \"move\": {\n r(\"row:move\", { fromIndex: x, toIndex: -1 });\n break;\n }\n }\n };\n return t({\n store: l,\n createConnection: l.createConnection,\n deleteConnection: l.deleteConnection,\n getConnectionsForBar: l.getConnectionsForBar,\n getHandlesForBar: l.getHandlesForBar,\n // Row action methods\n addRow: l.addRow,\n deleteRow: l.deleteRow,\n duplicateRow: l.duplicateRow,\n insertRowAbove: l.insertRowAbove,\n insertRowBelow: l.insertRowBelow,\n moveRow: l.moveRow\n }), (C, x) => (w(), k(\"div\", ml, [\n U((w(), k(\"table\", {\n ref: \"table\",\n class: \"atable\",\n style: fe({\n width: L(l).config.fullWidth ? \"100%\" : \"auto\"\n })\n }, [\n ue(C.$slots, \"header\", { data: L(l) }, () => [\n ot(hn, {\n columns: L(l).columns,\n store: L(l)\n }, null, 8, [\"columns\", \"store\"])\n ], !0),\n y(\"tbody\", null, [\n ue(C.$slots, \"body\", { data: L(l) }, () => [\n (w(!0), k(oe, null, ie(L(l).filteredRows, (v, m) => (w(), re(mn, {\n key: `${v.originalIndex}-${m}`,\n row: v,\n rowIndex: v.originalIndex,\n store: L(l),\n \"onRow:action\": b\n }, {\n default: At(() => [\n (w(!0), k(oe, null, ie(c(v), (g, M) => (w(), k(oe, {\n key: g.name\n }, [\n g.isGantt ? (w(), re(Re(g.ganttComponent || \"AGanttCell\"), {\n key: 0,\n store: L(l),\n \"columns-count\": L(l).columns.length - i.value,\n color: v.gantt?.color,\n start: v.gantt?.startIndex,\n end: v.gantt?.endIndex,\n colspan: g.colspan,\n pinned: g.pinned,\n rowIndex: v.originalIndex,\n colIndex: g.originalIndex ?? M,\n style: fe({\n textAlign: g?.align || \"center\",\n minWidth: g?.width || \"40ch\",\n width: L(l).config.fullWidth ? \"auto\" : null\n }),\n \"onConnection:create\": p\n }, null, 40, [\"store\", \"columns-count\", \"color\", \"start\", \"end\", \"colspan\", \"pinned\", \"rowIndex\", \"colIndex\", \"style\"])) : (w(), re(Re(g.cellComponent || \"ACell\"), {\n key: 1,\n store: L(l),\n pinned: g.pinned,\n rowIndex: v.originalIndex,\n colIndex: M,\n style: fe({\n textAlign: g?.align || \"center\",\n width: L(l).config.fullWidth ? \"auto\" : null\n }),\n spellcheck: \"false\"\n }, null, 8, [\"store\", \"pinned\", \"rowIndex\", \"colIndex\", \"style\"]))\n ], 64))), 128))\n ]),\n _: 2\n }, 1032, [\"row\", \"rowIndex\", \"store\"]))), 128))\n ], !0)\n ]),\n ue(C.$slots, \"footer\", { data: L(l) }, void 0, !0),\n ue(C.$slots, \"modal\", { data: L(l) }, () => [\n U(ot(gn, { store: L(l) }, {\n default: At(() => [\n (w(), re(Re(L(l).modal.component), at({\n key: `${L(l).modal.rowIndex}:${L(l).modal.colIndex}`,\n \"col-index\": L(l).modal.colIndex,\n \"row-index\": L(l).modal.rowIndex,\n store: L(l)\n }, L(l).modal.componentProps), null, 16, [\"col-index\", \"row-index\", \"store\"]))\n ]),\n _: 1\n }, 8, [\"store\"]), [\n [ge, L(l).modal.visible]\n ])\n ], !0)\n ], 4)), [\n [L(zo), L(l).closeModal]\n ]),\n L(l).isGanttView && L(l).isDependencyGraphEnabled ? (w(), re(Qo, {\n key: 0,\n store: L(l),\n \"onConnection:delete\": h\n }, null, 8, [\"store\"])) : z(\"\", !0)\n ]));\n }\n}), gl = /* @__PURE__ */ Ee(hl, [[\"__scopeId\", \"data-v-3d00d51b\"]]), wl = {}, yl = { class: \"aloading\" }, xl = { class: \"aloading-header\" };\nfunction bl(e, t) {\n return w(), k(\"div\", yl, [\n y(\"h2\", xl, [\n ue(e.$slots, \"default\", {}, void 0, !0)\n ]),\n t[0] || (t[0] = y(\"div\", { class: \"aloading-bar\" }, null, -1))\n ]);\n}\nconst kl = /* @__PURE__ */ Ee(wl, [[\"render\", bl], [\"__scopeId\", \"data-v-a930a25b\"]]), Il = {}, Cl = { class: \"aloading\" }, Ml = { class: \"aloading-header\" };\nfunction El(e, t) {\n return w(), k(\"div\", Cl, [\n y(\"h2\", Ml, [\n ue(e.$slots, \"default\", {}, void 0, !0)\n ]),\n t[0] || (t[0] = y(\"div\", { class: \"aloading-bar\" }, null, -1))\n ]);\n}\nconst Al = /* @__PURE__ */ Ee(Il, [[\"render\", El], [\"__scopeId\", \"data-v-e1165876\"]]);\nfunction Tl(e) {\n e.component(\"ACell\", po), e.component(\"AExpansionRow\", yo), e.component(\"AGanttCell\", Eo), e.component(\"ARow\", mn), e.component(\"ARowActions\", tt), e.component(\"ATable\", gl), e.component(\"ATableHeader\", hn), e.component(\"ATableLoading\", kl), e.component(\"ATableLoadingBar\", Al), e.component(\"ATableModal\", gn);\n}\nconst Dl = { class: \"aform_form-element\" }, $l = [\"for\"], Sl = { class: \"aform_checkbox-container aform_input-field\" }, Rl = [\"id\", \"readonly\", \"required\"], Ll = [\"innerHTML\"], Hl = /* @__PURE__ */ Y({\n __name: \"ACheckbox\",\n props: /* @__PURE__ */ me({\n schema: {},\n label: {},\n mask: {},\n required: { type: Boolean },\n readOnly: { type: Boolean },\n uuid: {},\n validation: { default: () => ({ errorMessage: \" \" }) }\n }, {\n modelValue: {},\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = he(e, \"modelValue\");\n return (n, o) => (w(), k(\"div\", Dl, [\n y(\"label\", {\n class: \"aform_field-label\",\n for: e.uuid\n }, j(e.label), 9, $l),\n y(\"span\", Sl, [\n U(y(\"input\", {\n id: e.uuid,\n \"onUpdate:modelValue\": o[0] || (o[0] = (a) => t.value = a),\n type: \"checkbox\",\n class: \"aform_checkbox\",\n readonly: e.readOnly,\n required: e.required\n }, null, 8, Rl), [\n [rn, t.value]\n ])\n ]),\n U(y(\"p\", {\n class: \"aform_error\",\n innerHTML: e.validation.errorMessage\n }, null, 8, Ll), [\n [ge, e.validation.errorMessage]\n ])\n ]));\n }\n}), be = (e, t) => {\n const n = e.__vccOpts || e;\n for (const [o, a] of t)\n n[o] = a;\n return n;\n}, _l = /* @__PURE__ */ be(Hl, [[\"__scopeId\", \"data-v-f13fd4d6\"]]), Vl = /* @__PURE__ */ Y({\n __name: \"AComboBox\",\n props: [\"event\", \"cellData\", \"tableID\"],\n setup(e) {\n return (t, n) => {\n const o = cn(\"ATableModal\");\n return w(), re(o, {\n event: e.event,\n \"cell-data\": e.cellData,\n class: \"amodal\"\n }, {\n default: At(() => [...n[0] || (n[0] = [\n y(\"div\", null, [\n y(\"input\", { type: \"text\" }),\n y(\"input\", { type: \"text\" }),\n y(\"input\", { type: \"text\" })\n ], -1)\n ])]),\n _: 1\n }, 8, [\"event\", \"cell-data\"]);\n };\n }\n}), Ol = [\"id\", \"disabled\", \"required\"], Pl = [\"for\"], Bl = [\"innerHTML\"], Fl = /* @__PURE__ */ Y({\n __name: \"ADate\",\n props: /* @__PURE__ */ me({\n schema: {},\n label: { default: \"Date\" },\n mask: {},\n required: { type: Boolean },\n readOnly: { type: Boolean },\n uuid: {},\n validation: { default: () => ({ errorMessage: \" \" }) }\n }, {\n modelValue: {\n // format the date to be compatible with the native input datepicker\n },\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = he(e, \"modelValue\", {\n // format the date to be compatible with the native input datepicker\n set: (a) => new Date(a).toISOString().split(\"T\")[0]\n }), n = ae(\"date\"), o = () => {\n n.value && \"showPicker\" in HTMLInputElement.prototype && n.value.showPicker();\n };\n return (a, r) => (w(), k(\"div\", null, [\n U(y(\"input\", {\n id: e.uuid,\n ref: \"date\",\n \"onUpdate:modelValue\": r[0] || (r[0] = (s) => t.value = s),\n type: \"date\",\n disabled: e.readOnly,\n required: e.required,\n onClick: o\n }, null, 8, Ol), [\n [de, t.value]\n ]),\n y(\"label\", { for: e.uuid }, j(e.label), 9, Pl),\n U(y(\"p\", {\n innerHTML: e.validation.errorMessage\n }, null, 8, Bl), [\n [ge, e.validation.errorMessage]\n ])\n ]));\n }\n}), Zl = /* @__PURE__ */ be(Fl, [[\"__scopeId\", \"data-v-a15ed922\"]]);\nfunction wn(e, t) {\n return rt() ? (it(e, t), !0) : !1;\n}\n// @__NO_SIDE_EFFECTS__\nfunction Yt() {\n const e = /* @__PURE__ */ new Set(), t = (r) => {\n e.delete(r);\n };\n return {\n on: (r) => {\n e.add(r);\n const s = () => t(r);\n return wn(s), { off: s };\n },\n off: t,\n trigger: (...r) => Promise.all(Array.from(e).map((s) => s(...r))),\n clear: () => {\n e.clear();\n }\n };\n}\nconst yn = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst Nl = Object.prototype.toString, Wl = (e) => Nl.call(e) === \"[object Object]\", Pe = () => {\n}, zl = (e, t) => Object.prototype.hasOwnProperty.call(e, t);\nfunction Gl(...e) {\n if (e.length !== 1) return un(...e);\n const t = e[0];\n return typeof t == \"function\" ? St($t(() => ({\n get: t,\n set: Pe\n }))) : S(t);\n}\nfunction kt(e) {\n return Array.isArray(e) ? e : [e];\n}\nfunction Ul(e, t, n) {\n return Q(e, t, {\n ...n,\n immediate: !0\n });\n}\nconst xn = yn ? window : void 0, jl = yn ? window.document : void 0;\nfunction Se(e) {\n var t;\n const n = $(e);\n return (t = n?.$el) !== null && t !== void 0 ? t : n;\n}\nfunction It(...e) {\n const t = (o, a, r, s) => (o.addEventListener(a, r, s), () => o.removeEventListener(a, r, s)), n = T(() => {\n const o = kt($(e[0])).filter((a) => a != null);\n return o.every((a) => typeof a != \"string\") ? o : void 0;\n });\n return Ul(() => {\n var o, a;\n return [\n (o = (a = n.value) === null || a === void 0 ? void 0 : a.map((r) => Se(r))) !== null && o !== void 0 ? o : [xn].filter((r) => r != null),\n kt($(n.value ? e[1] : e[0])),\n kt(L(n.value ? e[2] : e[1])),\n $(n.value ? e[3] : e[2])\n ];\n }, ([o, a, r, s], l, i) => {\n if (!o?.length || !a?.length || !r?.length) return;\n const u = Wl(s) ? { ...s } : s, c = o.flatMap((p) => a.flatMap((h) => r.map((b) => t(p, h, b, u))));\n i(() => {\n c.forEach((p) => p());\n });\n }, { flush: \"post\" });\n}\nfunction Xt(e, t, n = {}) {\n const { window: o = xn, ignore: a = [], capture: r = !0, detectIframe: s = !1, controls: l = !1 } = n;\n if (!o) return l ? {\n stop: Pe,\n cancel: Pe,\n trigger: Pe\n } : Pe;\n let i = !0;\n const u = (v) => $(a).some((m) => {\n if (typeof m == \"string\") return Array.from(o.document.querySelectorAll(m)).some((g) => g === v.target || v.composedPath().includes(g));\n {\n const g = Se(m);\n return g && (v.target === g || v.composedPath().includes(g));\n }\n });\n function c(v) {\n const m = $(v);\n return m && m.$.subTree.shapeFlag === 16;\n }\n function p(v, m) {\n const g = $(v), M = g.$.subTree && g.$.subTree.children;\n return M == null || !Array.isArray(M) ? !1 : M.some((D) => D.el === m.target || m.composedPath().includes(D.el));\n }\n const h = (v) => {\n const m = Se(e);\n if (v.target != null && !(!(m instanceof Element) && c(e) && p(e, v)) && !(!m || m === v.target || v.composedPath().includes(m))) {\n if (\"detail\" in v && v.detail === 0 && (i = !u(v)), !i) {\n i = !0;\n return;\n }\n t(v);\n }\n };\n let b = !1;\n const C = [\n It(o, \"click\", (v) => {\n b || (b = !0, setTimeout(() => {\n b = !1;\n }, 0), h(v));\n }, {\n passive: !0,\n capture: r\n }),\n It(o, \"pointerdown\", (v) => {\n const m = Se(e);\n i = !u(v) && !!(m && !v.composedPath().includes(m));\n }, { passive: !0 }),\n s && It(o, \"blur\", (v) => {\n setTimeout(() => {\n var m;\n const g = Se(e);\n ((m = o.document.activeElement) === null || m === void 0 ? void 0 : m.tagName) === \"IFRAME\" && !g?.contains(o.document.activeElement) && t(v);\n }, 0);\n }, { passive: !0 })\n ].filter(Boolean), x = () => C.forEach((v) => v());\n return l ? {\n stop: x,\n cancel: () => {\n i = !1;\n },\n trigger: (v) => {\n i = !0, h(v), i = !1;\n }\n } : x;\n}\nconst ql = {\n multiple: !0,\n accept: \"*\",\n reset: !1,\n directory: !1\n};\nfunction Yl(e) {\n if (!e) return null;\n if (e instanceof FileList) return e;\n const t = new DataTransfer();\n for (const n of e) t.items.add(n);\n return t.files;\n}\nfunction Xl(e = {}) {\n const { document: t = jl } = e, n = S(Yl(e.initialFiles)), { on: o, trigger: a } = /* @__PURE__ */ Yt(), { on: r, trigger: s } = /* @__PURE__ */ Yt(), l = T(() => {\n var p;\n const h = (p = Se(e.input)) !== null && p !== void 0 ? p : t ? t.createElement(\"input\") : void 0;\n return h && (h.type = \"file\", h.onchange = (b) => {\n n.value = b.target.files, a(n.value);\n }, h.oncancel = () => {\n s();\n }), h;\n }), i = () => {\n n.value = null, l.value && l.value.value && (l.value.value = \"\", a(null));\n }, u = (p) => {\n const h = l.value;\n h && (h.multiple = $(p.multiple), h.accept = $(p.accept), h.webkitdirectory = $(p.directory), zl(p, \"capture\") && (h.capture = $(p.capture)));\n }, c = (p) => {\n const h = l.value;\n if (!h) return;\n const b = {\n ...ql,\n ...e,\n ...p\n };\n u(b), $(b.reset) && i(), h.click();\n };\n return Te(() => {\n u(e);\n }), {\n files: St(n),\n open: c,\n reset: i,\n onCancel: r,\n onChange: o\n };\n}\nfunction Ct(e) {\n return typeof Window < \"u\" && e instanceof Window ? e.document.documentElement : typeof Document < \"u\" && e instanceof Document ? e.documentElement : e;\n}\nconst Mt = /* @__PURE__ */ new WeakMap();\nfunction Jl(e, t = !1) {\n const n = ee(t);\n let o = \"\";\n Q(Gl(e), (s) => {\n const l = Ct($(s));\n if (l) {\n const i = l;\n if (Mt.get(i) || Mt.set(i, i.style.overflow), i.style.overflow !== \"hidden\" && (o = i.style.overflow), i.style.overflow === \"hidden\") return n.value = !0;\n if (n.value) return i.style.overflow = \"hidden\";\n }\n }, { immediate: !0 });\n const a = () => {\n const s = Ct($(e));\n !s || n.value || (s.style.overflow = \"hidden\", n.value = !0);\n }, r = () => {\n const s = Ct($(e));\n !s || !n.value || (s.style.overflow = o, Mt.delete(s), n.value = !1);\n };\n return wn(r), T({\n get() {\n return n.value;\n },\n set(s) {\n s ? a() : r();\n }\n });\n}\nconst Et = /* @__PURE__ */ new WeakMap(), Kl = {\n mounted(e, t) {\n const n = !t.modifiers.bubble;\n let o;\n if (typeof t.value == \"function\") o = Xt(e, t.value, { capture: n });\n else {\n const [a, r] = t.value;\n o = Xt(e, a, Object.assign({ capture: n }, r));\n }\n Et.set(e, o);\n },\n unmounted(e) {\n const t = Et.get(e);\n t && typeof t == \"function\" ? t() : t?.stop(), Et.delete(e);\n }\n};\nfunction Ql() {\n let e = !1;\n const t = ee(!1);\n return (n, o) => {\n if (t.value = o.value, e) return;\n e = !0;\n const a = Jl(n, o.value);\n Q(t, (r) => a.value = r);\n };\n}\nQl();\nconst ea = { class: \"input-wrapper\" }, ta = {\n id: \"autocomplete-results\",\n class: \"autocomplete-results\"\n}, na = {\n key: 0,\n class: \"loading autocomplete-result\"\n}, oa = [\"onClick\"], la = /* @__PURE__ */ Y({\n __name: \"ADropdown\",\n props: /* @__PURE__ */ me({\n label: {},\n items: { default: () => [] },\n isAsync: { type: Boolean, default: !1 },\n filterFunction: { type: Function, default: void 0 }\n }, {\n modelValue: {},\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = he(e, \"modelValue\"), n = sn({\n activeItemIndex: null,\n open: !1,\n loading: !1,\n results: e.items\n }), o = () => l(), a = async () => {\n if (n.open = !0, n.activeItemIndex = null, e.filterFunction) {\n e.isAsync && (n.loading = !0);\n try {\n const h = await e.filterFunction(t.value || \"\");\n n.results = h || [];\n } catch {\n n.results = [];\n } finally {\n e.isAsync && (n.loading = !1);\n }\n } else\n i();\n }, r = (h) => {\n t.value = h, l(h);\n }, s = () => {\n n.activeItemIndex = e.isAsync ? null : t.value && e.items?.indexOf(t.value) || null, n.open = !0, n.results = e.isAsync ? [] : e.items;\n }, l = (h) => {\n n.activeItemIndex = null, n.open = !1, e.items?.includes(h || t.value || \"\") || (t.value = \"\");\n }, i = () => {\n t.value ? n.results = e.items?.filter((h) => h.toLowerCase().includes((t.value ?? \"\").toLowerCase())) : n.results = e.items;\n }, u = () => {\n const h = n.results?.length || 0;\n if (n.activeItemIndex != null) {\n const b = isNaN(n.activeItemIndex) ? 0 : n.activeItemIndex;\n n.activeItemIndex = (b + 1) % h;\n } else\n n.activeItemIndex = 0;\n }, c = () => {\n const h = n.results?.length || 0;\n if (n.activeItemIndex != null) {\n const b = isNaN(n.activeItemIndex) ? 0 : n.activeItemIndex;\n b === 0 ? n.activeItemIndex = null : n.activeItemIndex = b - 1;\n } else\n n.activeItemIndex = h - 1;\n }, p = () => {\n if (n.results) {\n const h = n.activeItemIndex || 0, b = n.results[h];\n r(b);\n }\n n.activeItemIndex = 0;\n };\n return (h, b) => U((w(), k(\"div\", {\n class: K([\"autocomplete\", { isOpen: n.open }])\n }, [\n y(\"div\", ea, [\n U(y(\"input\", {\n \"onUpdate:modelValue\": b[0] || (b[0] = (C) => t.value = C),\n type: \"text\",\n onInput: a,\n onFocus: s,\n onKeydown: [\n $e(u, [\"down\"]),\n $e(c, [\"up\"]),\n $e(p, [\"enter\"]),\n $e(o, [\"esc\"]),\n $e(o, [\"tab\"])\n ]\n }, null, 544), [\n [de, t.value]\n ]),\n U(y(\"ul\", ta, [\n n.loading ? (w(), k(\"li\", na, \"Loading results...\")) : (w(!0), k(oe, { key: 1 }, ie(n.results, (C, x) => (w(), k(\"li\", {\n key: C,\n class: K([\"autocomplete-result\", { \"is-active\": x === n.activeItemIndex }]),\n onClick: pe((v) => r(C), [\"stop\"])\n }, j(C), 11, oa))), 128))\n ], 512), [\n [ge, n.open]\n ]),\n y(\"label\", null, j(e.label), 1)\n ])\n ], 2)), [\n [L(Kl), o]\n ]);\n }\n}), aa = /* @__PURE__ */ be(la, [[\"__scopeId\", \"data-v-31a6db8c\"]]);\nfunction bn(e, t) {\n return rt() ? (it(e, t), !0) : !1;\n}\nconst sa = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst ra = (e) => e != null, ia = Object.prototype.toString, ua = (e) => ia.call(e) === \"[object Object]\", ca = () => {\n};\nfunction nt(e) {\n return Array.isArray(e) ? e : [e];\n}\nfunction da(e, t, n) {\n return Q(e, t, {\n ...n,\n immediate: !0\n });\n}\nconst Ve = sa ? window : void 0;\nfunction He(e) {\n var t;\n const n = $(e);\n return (t = n?.$el) !== null && t !== void 0 ? t : n;\n}\nfunction Fe(...e) {\n const t = (o, a, r, s) => (o.addEventListener(a, r, s), () => o.removeEventListener(a, r, s)), n = T(() => {\n const o = nt($(e[0])).filter((a) => a != null);\n return o.every((a) => typeof a != \"string\") ? o : void 0;\n });\n return da(() => {\n var o, a;\n return [\n (o = (a = n.value) === null || a === void 0 ? void 0 : a.map((r) => He(r))) !== null && o !== void 0 ? o : [Ve].filter((r) => r != null),\n nt($(n.value ? e[1] : e[0])),\n nt(L(n.value ? e[2] : e[1])),\n $(n.value ? e[3] : e[2])\n ];\n }, ([o, a, r, s], l, i) => {\n if (!o?.length || !a?.length || !r?.length) return;\n const u = ua(s) ? { ...s } : s, c = o.flatMap((p) => a.flatMap((h) => r.map((b) => t(p, h, b, u))));\n i(() => {\n c.forEach((p) => p());\n });\n }, { flush: \"post\" });\n}\n// @__NO_SIDE_EFFECTS__\nfunction va() {\n const e = ee(!1), t = ut();\n return t && we(() => {\n e.value = !0;\n }, t), e;\n}\n// @__NO_SIDE_EFFECTS__\nfunction fa(e) {\n const t = /* @__PURE__ */ va();\n return T(() => (t.value, !!e()));\n}\nfunction pa(e, t, n = {}) {\n const { window: o = Ve, ...a } = n;\n let r;\n const s = /* @__PURE__ */ fa(() => o && \"MutationObserver\" in o), l = () => {\n r && (r.disconnect(), r = void 0);\n }, i = Q(T(() => {\n const p = nt($(e)).map(He).filter(ra);\n return new Set(p);\n }), (p) => {\n l(), s.value && p.size && (r = new MutationObserver(t), p.forEach((h) => r.observe(h, a)));\n }, {\n immediate: !0,\n flush: \"post\"\n }), u = () => r?.takeRecords(), c = () => {\n i(), l();\n };\n return bn(c), {\n isSupported: s,\n stop: c,\n takeRecords: u\n };\n}\nfunction ma(e, t, n = {}) {\n const { window: o = Ve, document: a = o?.document, flush: r = \"sync\" } = n;\n if (!o || !a) return ca;\n let s;\n const l = (c) => {\n s?.(), s = c;\n }, i = Te(() => {\n const c = He(e);\n if (c) {\n const { stop: p } = pa(a, (h) => {\n h.map((b) => [...b.removedNodes]).flat().some((b) => b === c || b.contains(c)) && t(h);\n }, {\n window: o,\n childList: !0,\n subtree: !0\n });\n l(p);\n }\n }, { flush: r }), u = () => {\n i(), l();\n };\n return bn(u), u;\n}\n// @__NO_SIDE_EFFECTS__\nfunction ha(e = {}) {\n var t;\n const { window: n = Ve, deep: o = !0, triggerOnRemoval: a = !1 } = e, r = (t = e.document) !== null && t !== void 0 ? t : n?.document, s = () => {\n let u = r?.activeElement;\n if (o)\n for (var c; u?.shadowRoot; ) u = u == null || (c = u.shadowRoot) === null || c === void 0 ? void 0 : c.activeElement;\n return u;\n }, l = ee(), i = () => {\n l.value = s();\n };\n if (n) {\n const u = {\n capture: !0,\n passive: !0\n };\n Fe(n, \"blur\", (c) => {\n c.relatedTarget === null && i();\n }, u), Fe(n, \"focus\", i, u);\n }\n return a && ma(l, i, { document: r }), i(), l;\n}\nconst ga = \"focusin\", wa = \"focusout\", ya = \":focus-within\";\nfunction xa(e, t = {}) {\n const { window: n = Ve } = t, o = T(() => He(e)), a = ee(!1), r = T(() => a.value);\n if (!n || !(/* @__PURE__ */ ha(t)).value) return { focused: r };\n const s = { passive: !0 };\n return Fe(o, ga, () => a.value = !0, s), Fe(o, wa, () => {\n var l, i, u;\n return a.value = (l = (i = o.value) === null || i === void 0 || (u = i.matches) === null || u === void 0 ? void 0 : u.call(i, ya)) !== null && l !== void 0 ? l : !1;\n }, s), { focused: r };\n}\nfunction ba(e, { window: t = Ve, scrollTarget: n } = {}) {\n const o = S(!1), a = () => {\n if (!t) return;\n const r = t.document, s = He(e);\n if (!s)\n o.value = !1;\n else {\n const l = s.getBoundingClientRect();\n o.value = l.top <= (t.innerHeight || r.documentElement.clientHeight) && l.left <= (t.innerWidth || r.documentElement.clientWidth) && l.bottom >= 0 && l.right >= 0;\n }\n };\n return Q(\n () => He(e),\n () => a(),\n { immediate: !0, flush: \"post\" }\n ), t && Fe(n || t, \"scroll\", a, {\n capture: !1,\n passive: !0\n }), o;\n}\nconst ke = (e) => {\n let t = ba(e).value;\n return t = t && e.offsetHeight > 0, t;\n}, Ie = (e) => e.tabIndex >= 0, Jt = (e) => {\n const t = e.target;\n return Pt(t);\n}, Pt = (e) => {\n let t;\n if (e instanceof HTMLTableCellElement) {\n const n = e.parentElement?.previousElementSibling;\n if (n) {\n const o = Array.from(n.children)[e.cellIndex];\n o && (t = o);\n }\n } else if (e instanceof HTMLTableRowElement) {\n const n = e.previousElementSibling;\n n && (t = n);\n }\n return t && (!Ie(t) || !ke(t)) ? Pt(t) : t;\n}, ka = (e) => {\n const t = e.target;\n let n;\n if (t instanceof HTMLTableCellElement) {\n const o = t.parentElement?.parentElement;\n if (o) {\n const a = o.firstElementChild?.children[t.cellIndex];\n a && (n = a);\n }\n } else if (t instanceof HTMLTableRowElement) {\n const o = t.parentElement;\n if (o) {\n const a = o.firstElementChild;\n a && (n = a);\n }\n }\n return n && (!Ie(n) || !ke(n)) ? Bt(n) : n;\n}, Kt = (e) => {\n const t = e.target;\n return Bt(t);\n}, Bt = (e) => {\n let t;\n if (e instanceof HTMLTableCellElement) {\n const n = e.parentElement?.nextElementSibling;\n if (n) {\n const o = Array.from(n.children)[e.cellIndex];\n o && (t = o);\n }\n } else if (e instanceof HTMLTableRowElement) {\n const n = e.nextElementSibling;\n n && (t = n);\n }\n return t && (!Ie(t) || !ke(t)) ? Bt(t) : t;\n}, Ia = (e) => {\n const t = e.target;\n let n;\n if (t instanceof HTMLTableCellElement) {\n const o = t.parentElement?.parentElement;\n if (o) {\n const a = o.lastElementChild?.children[t.cellIndex];\n a && (n = a);\n }\n } else if (t instanceof HTMLTableRowElement) {\n const o = t.parentElement;\n if (o) {\n const a = o.lastElementChild;\n a && (n = a);\n }\n }\n return n && (!Ie(n) || !ke(n)) ? Pt(n) : n;\n}, Qt = (e) => {\n const t = e.target;\n return Ft(t);\n}, Ft = (e) => {\n let t;\n return e.previousElementSibling ? t = e.previousElementSibling : t = e.parentElement?.previousElementSibling?.lastElementChild, t && (!Ie(t) || !ke(t)) ? Ft(t) : t;\n}, en = (e) => {\n const t = e.target;\n return Zt(t);\n}, Zt = (e) => {\n let t;\n return e.nextElementSibling ? t = e.nextElementSibling : t = e.parentElement?.nextElementSibling?.firstElementChild, t && (!Ie(t) || !ke(t)) ? Zt(t) : t;\n}, tn = (e) => {\n const t = e.target.parentElement?.firstElementChild;\n return t && (!Ie(t) || !ke(t)) ? Zt(t) : t;\n}, nn = (e) => {\n const t = e.target.parentElement?.lastElementChild;\n return t && (!Ie(t) || !ke(t)) ? Ft(t) : t;\n}, Ke = [\"alt\", \"control\", \"shift\", \"meta\"], Ca = {\n ArrowUp: \"up\",\n ArrowDown: \"down\",\n ArrowLeft: \"left\",\n ArrowRight: \"right\"\n}, kn = {\n \"keydown.up\": (e) => {\n const t = Jt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.down\": (e) => {\n const t = Kt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.left\": (e) => {\n const t = Qt(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.right\": (e) => {\n const t = en(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.control.up\": (e) => {\n const t = ka(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.down\": (e) => {\n const t = Ia(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.left\": (e) => {\n const t = tn(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.right\": (e) => {\n const t = nn(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.end\": (e) => {\n const t = nn(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.enter\": (e) => {\n if (e.target instanceof HTMLTableCellElement) {\n e.preventDefault(), e.stopPropagation();\n const t = Kt(e);\n t && t.focus();\n }\n },\n \"keydown.shift.enter\": (e) => {\n if (e.target instanceof HTMLTableCellElement) {\n e.preventDefault(), e.stopPropagation();\n const t = Jt(e);\n t && t.focus();\n }\n },\n \"keydown.home\": (e) => {\n const t = tn(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.tab\": (e) => {\n const t = en(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.shift.tab\": (e) => {\n const t = Qt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n }\n};\nfunction Ma(e) {\n const t = (s) => {\n let l = null;\n return s.parent && (typeof s.parent == \"string\" ? l = document.querySelector(s.parent) : s.parent instanceof HTMLElement ? l = s.parent : l = s.parent.value), l;\n }, n = (s) => {\n const l = t(s);\n let i = [];\n if (typeof s.selectors == \"string\")\n i = Array.from(l ? l.querySelectorAll(s.selectors) : document.querySelectorAll(s.selectors));\n else if (Array.isArray(s.selectors))\n for (const u of s.selectors)\n u instanceof HTMLElement ? i.push(u) : i.push(u.$el);\n else if (s.selectors instanceof HTMLElement)\n i.push(s.selectors);\n else if (s.selectors?.value)\n if (Array.isArray(s.selectors.value))\n for (const u of s.selectors.value)\n u instanceof HTMLElement ? i.push(u) : i.push(u.$el);\n else\n i.push(s.selectors.value);\n return i;\n }, o = (s) => {\n const l = t(s);\n let i = [];\n return s.selectors ? i = n(s) : l && (i = Array.from(l.children).filter((u) => Ie(u) && ke(u))), i;\n }, a = (s) => (l) => {\n const i = Ca[l.key] || l.key.toLowerCase();\n if (Ke.includes(i)) return;\n const u = s.handlers || kn;\n for (const c of Object.keys(u)) {\n const [p, ...h] = c.split(\".\");\n if (p === \"keydown\" && h.includes(i)) {\n const b = u[c], C = h.filter((v) => Ke.includes(v)), x = Ke.some((v) => {\n const m = v.charAt(0).toUpperCase() + v.slice(1);\n return l.getModifierState(m);\n });\n if (C.length > 0) {\n if (x) {\n for (const v of Ke)\n if (h.includes(v)) {\n const m = v.charAt(0).toUpperCase() + v.slice(1);\n l.getModifierState(m) && b(l);\n }\n }\n } else\n x || b(l);\n }\n }\n }, r = [];\n we(() => {\n for (const s of e) {\n const l = t(s), i = o(s), u = a(s), c = l ? [l] : i;\n for (const p of c) {\n const { focused: h } = xa(S(p)), b = Q(h, (C) => {\n C ? p.addEventListener(\"keydown\", u) : p.removeEventListener(\"keydown\", u);\n });\n r.push(b);\n }\n }\n }), an(() => {\n for (const s of r)\n s();\n });\n}\nconst Ea = {\n ref: \"datepicker\",\n class: \"adatepicker\",\n tabindex: \"0\"\n}, Aa = {\n colspan: \"5\",\n tabindex: -1\n}, Ta = [\"onClick\", \"onKeydown\"], Da = 6, on = 7, $a = /* @__PURE__ */ Y({\n __name: \"ADatePicker\",\n props: {\n modelValue: { default: /* @__PURE__ */ new Date() },\n modelModifiers: {}\n },\n emits: [\"update:modelValue\"],\n setup(e, { expose: t }) {\n const n = he(e, \"modelValue\"), o = S(new Date(n.value)), a = S(o.value.getMonth()), r = S(o.value.getFullYear()), s = S([]), l = ae(\"datepicker\");\n we(async () => {\n i(), await st();\n const M = document.getElementsByClassName(\"selectedDate\");\n if (M.length > 0)\n M[0].focus();\n else {\n const D = document.getElementsByClassName(\"todaysDate\");\n D.length > 0 && D[0].focus();\n }\n });\n const i = () => {\n s.value = [];\n const M = new Date(r.value, a.value, 1), D = M.getDay(), P = M.setDate(M.getDate() - D);\n for (const H of Array(43).keys())\n s.value.push(P + H * 864e5);\n };\n Q([a, r], i);\n const u = () => r.value -= 1, c = () => r.value += 1, p = () => {\n a.value == 0 ? (a.value = 11, u()) : a.value -= 1;\n }, h = () => {\n a.value == 11 ? (a.value = 0, c()) : a.value += 1;\n }, b = (M) => {\n const D = /* @__PURE__ */ new Date();\n if (a.value === D.getMonth())\n return D.toDateString() === new Date(M).toDateString();\n }, C = (M) => new Date(M).toDateString() === new Date(o.value).toDateString(), x = (M, D) => (M - 1) * on + D, v = (M, D) => s.value[x(M, D)], m = (M) => {\n n.value = o.value = new Date(s.value[M]);\n }, g = T(() => new Date(r.value, a.value, 1).toLocaleDateString(void 0, {\n year: \"numeric\",\n month: \"long\"\n }));\n return Ma([\n {\n parent: l,\n selectors: \"td\",\n handlers: {\n ...kn,\n \"keydown.pageup\": p,\n \"keydown.shift.pageup\": u,\n \"keydown.pagedown\": h,\n \"keydown.shift.pagedown\": c,\n // TODO: this is a hack to override the stonecrop enter handler;\n // store context inside the component so that handlers can be setup consistently\n \"keydown.enter\": () => {\n }\n }\n }\n ]), t({ currentMonth: a, currentYear: r, selectedDate: o }), (M, D) => (w(), k(\"div\", Ea, [\n y(\"table\", null, [\n y(\"tbody\", null, [\n y(\"tr\", null, [\n y(\"td\", {\n id: \"previous-month-btn\",\n tabindex: -1,\n onClick: p\n }, \"<\"),\n y(\"th\", Aa, j(g.value), 1),\n y(\"td\", {\n id: \"next-month-btn\",\n tabindex: -1,\n onClick: h\n }, \">\")\n ]),\n D[0] || (D[0] = y(\"tr\", { class: \"days-header\" }, [\n y(\"td\", null, \"M\"),\n y(\"td\", null, \"T\"),\n y(\"td\", null, \"W\"),\n y(\"td\", null, \"T\"),\n y(\"td\", null, \"F\"),\n y(\"td\", null, \"S\"),\n y(\"td\", null, \"S\")\n ], -1)),\n (w(), k(oe, null, ie(Da, (P) => y(\"tr\", { key: P }, [\n (w(), k(oe, null, ie(on, (H) => y(\"td\", {\n ref_for: !0,\n ref: \"celldate\",\n key: x(P, H),\n contenteditable: !1,\n spellcheck: !1,\n tabindex: 0,\n class: K({\n todaysDate: b(v(P, H)),\n selectedDate: C(v(P, H))\n }),\n onClick: pe((E) => m(x(P, H)), [\"prevent\", \"stop\"]),\n onKeydown: $e((E) => m(x(P, H)), [\"enter\"])\n }, j(new Date(v(P, H)).getDate()), 43, Ta)), 64))\n ])), 64))\n ])\n ])\n ], 512));\n }\n}), Sa = /* @__PURE__ */ be($a, [[\"__scopeId\", \"data-v-056d2b5e\"]]), Ra = /* @__PURE__ */ Y({\n __name: \"CollapseButton\",\n props: {\n collapsed: { type: Boolean }\n },\n setup(e) {\n return (t, n) => (w(), k(\"button\", {\n class: K([\"collapse-button\", e.collapsed ? \"rotated\" : \"unrotated\"])\n }, \"×\", 2));\n }\n}), La = /* @__PURE__ */ be(Ra, [[\"__scopeId\", \"data-v-6f1c1b45\"]]), Ha = { class: \"aform\" }, _a = {\n key: 0,\n class: \"aform-nested-section\"\n}, Va = {\n key: 0,\n class: \"aform-nested-label\"\n}, Oa = /* @__PURE__ */ Y({\n __name: \"AForm\",\n props: /* @__PURE__ */ me({\n schema: {},\n readOnly: { type: Boolean }\n }, {\n data: { required: !0 },\n dataModifiers: {}\n }),\n emits: /* @__PURE__ */ me([\"update:schema\", \"update:data\"], [\"update:data\"]),\n setup(e, { emit: t }) {\n const n = t, o = he(e, \"data\"), a = S({});\n Te(() => {\n !e.schema || !o.value || e.schema.forEach((i) => {\n \"schema\" in i && Array.isArray(i.schema) && i.schema.length > 0 && (!a.value[i.fieldname] && o.value[i.fieldname] ? a.value[i.fieldname] = o.value[i.fieldname] : a.value[i.fieldname] || (a.value[i.fieldname] = {}));\n });\n }), Te(() => {\n Object.keys(a.value).forEach((i) => {\n o.value && a.value[i] !== o.value[i] && (o.value[i] = a.value[i], n(\"update:data\", o.value));\n });\n }), Te(() => {\n o.value && e.schema && e.schema.forEach((i) => {\n i.fieldname && o.value[i.fieldname] !== void 0 && (i.value = o.value[i.fieldname]);\n });\n });\n const r = (i) => {\n const u = {};\n for (const [c, p] of Object.entries(i))\n [\"component\", \"fieldtype\"].includes(c) || (u[c] = p), c === \"rows\" && (!p || Array.isArray(p) && p.length === 0) && (u.rows = o.value[i.fieldname] || []);\n return u;\n }, s = S([]);\n Te(() => {\n e.schema && s.value.length !== e.schema.length && (s.value = e.schema.map((i, u) => T({\n get() {\n return i.value;\n },\n set: (c) => {\n const p = e.schema[u].fieldname;\n e.schema[u].value = c, p && o.value && (o.value[p] = c, n(\"update:data\", o.value)), n(\"update:schema\", e.schema);\n }\n })));\n });\n const l = T(() => s.value);\n return (i, u) => {\n const c = cn(\"AForm\", !0);\n return w(), k(\"form\", Ha, [\n (w(!0), k(oe, null, ie(e.schema, (p, h) => (w(), k(oe, { key: h }, [\n \"schema\" in p && Array.isArray(p.schema) && p.schema.length > 0 ? (w(), k(\"div\", _a, [\n p.label ? (w(), k(\"h4\", Va, j(p.label), 1)) : z(\"\", !0),\n ot(c, {\n data: a.value[p.fieldname],\n \"onUpdate:data\": (b) => a.value[p.fieldname] = b,\n schema: p.schema,\n \"read-only\": e.readOnly || p.readOnly\n }, null, 8, [\"data\", \"onUpdate:data\", \"schema\", \"read-only\"])\n ])) : (w(), re(Re(p.component), at({\n key: 1,\n modelValue: l.value[h].value,\n \"onUpdate:modelValue\": (b) => l.value[h].value = b,\n schema: p,\n data: o.value[p.fieldname],\n \"read-only\": e.readOnly\n }, { ref_for: !0 }, r(p)), null, 16, [\"modelValue\", \"onUpdate:modelValue\", \"schema\", \"data\", \"read-only\"]))\n ], 64))), 128))\n ]);\n };\n }\n}), In = /* @__PURE__ */ be(Oa, [[\"__scopeId\", \"data-v-06e17c5b\"]]), Pa = /* @__PURE__ */ Y({\n __name: \"AFieldset\",\n props: {\n schema: {},\n label: {},\n collapsible: { type: Boolean },\n data: { default: () => ({}) }\n },\n setup(e, { expose: t }) {\n const n = S(!1), o = S(e.data || []), a = S(e.schema), r = (s) => {\n s.preventDefault(), e.collapsible && (n.value = !n.value);\n };\n return t({ collapsed: n }), (s, l) => (w(), k(\"fieldset\", null, [\n y(\"legend\", {\n onClick: r,\n onSubmit: r\n }, [\n Dt(j(e.label) + \" \", 1),\n e.collapsible ? (w(), re(La, {\n key: 0,\n collapsed: n.value\n }, null, 8, [\"collapsed\"])) : z(\"\", !0)\n ], 32),\n ue(s.$slots, \"default\", { collapsed: n.value }, () => [\n U(ot(In, {\n schema: a.value,\n data: o.value,\n \"onUpdate:data\": l[0] || (l[0] = (i) => o.value = i)\n }, null, 8, [\"schema\", \"data\"]), [\n [ge, !n.value]\n ])\n ], !0)\n ]));\n }\n}), Ba = /* @__PURE__ */ be(Pa, [[\"__scopeId\", \"data-v-18fd6c61\"]]), Fa = { class: \"aform_form-element aform_file-attach aform__grid--full\" }, Za = {\n key: 0,\n class: \"aform_file-attach-feedback\"\n}, Na = [\"disabled\"], Wa = /* @__PURE__ */ Y({\n __name: \"AFileAttach\",\n props: {\n label: {}\n },\n setup(e) {\n const { files: t, open: n, reset: o, onChange: a } = Xl(), r = T(() => `${t.value.length} ${t.value.length === 1 ? \"file\" : \"files\"}`);\n return a((s) => s), (s, l) => (w(), k(\"div\", Fa, [\n L(t) ? (w(), k(\"div\", Za, [\n y(\"p\", null, [\n l[2] || (l[2] = Dt(\" You have selected: \", -1)),\n y(\"b\", null, j(r.value), 1)\n ]),\n (w(!0), k(oe, null, ie(L(t), (i) => (w(), k(\"li\", {\n key: i.name\n }, j(i.name), 1))), 128))\n ])) : z(\"\", !0),\n y(\"button\", {\n type: \"button\",\n class: \"aform_form-btn\",\n onClick: l[0] || (l[0] = (i) => L(n)())\n }, j(e.label), 1),\n y(\"button\", {\n type: \"button\",\n disabled: !L(t),\n class: \"aform_form-btn\",\n onClick: l[1] || (l[1] = (i) => L(o)())\n }, \"Reset\", 8, Na)\n ]));\n }\n}), za = /* @__PURE__ */ be(Wa, [[\"__scopeId\", \"data-v-b700734f\"]]), Ga = { class: \"aform_form-element\" }, Ua = [\"id\", \"disabled\", \"required\"], ja = [\"for\"], qa = [\"innerHTML\"], Ya = /* @__PURE__ */ Y({\n __name: \"ANumericInput\",\n props: /* @__PURE__ */ me({\n schema: {},\n label: {},\n mask: {},\n required: { type: Boolean },\n readOnly: { type: Boolean },\n uuid: {},\n validation: { default: () => ({ errorMessage: \" \" }) }\n }, {\n modelValue: {},\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = he(e, \"modelValue\");\n return (n, o) => (w(), k(\"div\", Ga, [\n U(y(\"input\", {\n id: e.uuid,\n \"onUpdate:modelValue\": o[0] || (o[0] = (a) => t.value = a),\n class: \"aform_input-field\",\n type: \"number\",\n disabled: e.readOnly,\n required: e.required\n }, null, 8, Ua), [\n [de, t.value]\n ]),\n y(\"label\", {\n class: \"aform_field-label\",\n for: e.uuid\n }, j(e.label), 9, ja),\n U(y(\"p\", {\n class: \"aform_error\",\n innerHTML: e.validation.errorMessage\n }, null, 8, qa), [\n [ge, e.validation.errorMessage]\n ])\n ]));\n }\n}), ln = {\n date: \"##/##/####\",\n datetime: \"####/##/## ##:##\",\n time: \"##:##\",\n fulltime: \"##:##:##\",\n phone: \"(###) ### - ####\",\n card: \"#### #### #### ####\"\n};\nfunction Xa(e) {\n try {\n return Function(`\"use strict\";return (${e})`)();\n } catch {\n }\n}\nfunction Ja(e) {\n let t = e.value;\n if (t) {\n const n = Xa(t);\n if (n) {\n const o = e.instance?.locale;\n t = n(o);\n }\n } else {\n const o = e.instance?.schema?.fieldtype?.toLowerCase();\n o && ln[o] && (t = ln[o]);\n }\n return t;\n}\nfunction Ka(e, t) {\n let n = e;\n const o = [t, \"/\", \"-\", \"(\", \")\", \" \"];\n for (const a of o)\n n = n.replaceAll(a, \"\");\n return n;\n}\nfunction Qa(e, t, n) {\n let o = t;\n for (const a of e) {\n const r = o.indexOf(n);\n if (r !== -1) {\n const s = o.substring(0, r), l = o.substring(r + 1);\n o = s + a + l;\n }\n }\n return o.slice(0, t.length);\n}\nfunction es(e, t) {\n const n = Ja(t);\n if (!n) return;\n const o = \"#\", a = e.value, r = Ka(a, o);\n if (r) {\n const s = Qa(r, n, o);\n t.instance?.maskFilled && (t.instance.maskFilled = !s.includes(o)), e.value = s;\n } else\n e.value = n;\n}\nconst ts = { class: \"aform_form-element\" }, ns = [\"id\", \"disabled\", \"maxlength\", \"required\"], os = [\"for\"], ls = [\"innerHTML\"], as = /* @__PURE__ */ Y({\n __name: \"ATextInput\",\n props: /* @__PURE__ */ me({\n schema: {},\n label: {},\n mask: {},\n required: { type: Boolean },\n readOnly: { type: Boolean },\n uuid: {},\n validation: { default: () => ({ errorMessage: \" \" }) }\n }, {\n modelValue: {},\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = S(!0), n = he(e, \"modelValue\");\n return (o, a) => (w(), k(\"div\", ts, [\n U(y(\"input\", {\n id: e.uuid,\n \"onUpdate:modelValue\": a[0] || (a[0] = (r) => n.value = r),\n class: \"aform_input-field\",\n disabled: e.readOnly,\n maxlength: e.mask && t.value ? e.mask.length : void 0,\n required: e.required\n }, null, 8, ns), [\n [de, n.value],\n [L(es), e.mask]\n ]),\n y(\"label\", {\n class: \"aform_field-label\",\n for: e.uuid\n }, j(e.label), 9, os),\n U(y(\"p\", {\n class: \"aform_error\",\n innerHTML: e.validation.errorMessage\n }, null, 8, ls), [\n [ge, e.validation.errorMessage]\n ])\n ]));\n }\n}), ss = { class: \"login-container\" }, rs = { class: \"account-container\" }, is = { class: \"account-header\" }, us = { id: \"account-title\" }, cs = { id: \"account-subtitle\" }, ds = { class: \"login-form-container\" }, vs = { class: \"login-form-email aform_form-element\" }, fs = [\"disabled\"], ps = { class: \"login-form-password aform_form-element\" }, ms = [\"disabled\"], hs = [\"disabled\"], gs = {\n key: 0,\n class: \"material-symbols-outlined loading-icon\"\n}, ws = /* @__PURE__ */ Y({\n __name: \"Login\",\n props: {\n headerTitle: { default: \"Login\" },\n headerSubtitle: { default: \"Enter your email and password to login\" }\n },\n emits: [\"loginFailed\", \"loginSuccess\"],\n setup(e, { emit: t }) {\n const n = t, o = S(\"\"), a = S(\"\"), r = S(!1), s = S(!1);\n function l(i) {\n if (i.preventDefault(), r.value = !0, s.value) {\n r.value = !1, n(\"loginFailed\");\n return;\n }\n r.value = !1, n(\"loginSuccess\");\n }\n return (i, u) => (w(), k(\"div\", ss, [\n y(\"div\", null, [\n y(\"div\", rs, [\n y(\"div\", is, [\n y(\"h1\", us, j(e.headerTitle), 1),\n y(\"p\", cs, j(e.headerSubtitle), 1)\n ]),\n y(\"form\", { onSubmit: l }, [\n y(\"div\", ds, [\n y(\"div\", vs, [\n u[2] || (u[2] = y(\"label\", {\n id: \"login-email\",\n for: \"email\",\n class: \"aform_field-label\"\n }, \"Email\", -1)),\n U(y(\"input\", {\n id: \"email\",\n \"onUpdate:modelValue\": u[0] || (u[0] = (c) => o.value = c),\n class: \"aform_input-field\",\n name: \"email\",\n placeholder: \"name@example.com\",\n type: \"email\",\n \"auto-capitalize\": \"none\",\n \"auto-complete\": \"email\",\n \"auto-correct\": \"off\",\n disabled: r.value\n }, null, 8, fs), [\n [de, o.value]\n ])\n ]),\n y(\"div\", ps, [\n u[3] || (u[3] = y(\"label\", {\n id: \"login-password\",\n for: \"password\",\n class: \"aform_field-label\"\n }, \"Password\", -1)),\n U(y(\"input\", {\n id: \"password\",\n \"onUpdate:modelValue\": u[1] || (u[1] = (c) => a.value = c),\n class: \"aform_input-field\",\n name: \"password\",\n type: \"password\",\n disabled: r.value\n }, null, 8, ms), [\n [de, a.value]\n ])\n ]),\n y(\"button\", {\n class: \"btn\",\n disabled: r.value || !o.value || !a.value,\n onClick: l\n }, [\n r.value ? (w(), k(\"span\", gs, \"progress_activity\")) : z(\"\", !0),\n u[4] || (u[4] = y(\"span\", { id: \"login-form-button\" }, \"Login\", -1))\n ], 8, hs)\n ])\n ], 32),\n u[5] || (u[5] = y(\"button\", { class: \"btn\" }, [\n y(\"span\", { id: \"forgot-password-button\" }, \"Forgot password?\")\n ], -1))\n ])\n ])\n ]));\n }\n}), bs = /* @__PURE__ */ be(ws, [[\"__scopeId\", \"data-v-d9ffd0a7\"]]);\nfunction ks(e) {\n e.use(Tl), e.component(\"ACheckbox\", _l), e.component(\"ACombobox\", Vl), e.component(\"ADate\", Zl), e.component(\"ADropdown\", aa), e.component(\"ADatePicker\", Sa), e.component(\"AFieldset\", Ba), e.component(\"AFileAttach\", za), e.component(\"AForm\", In), e.component(\"ANumericInput\", Ya), e.component(\"ATextInput\", as);\n}\nexport {\n _l as ACheckbox,\n Vl as AComboBox,\n Zl as ADate,\n Sa as ADatePicker,\n aa as ADropdown,\n Ba as AFieldset,\n za as AFileAttach,\n In as AForm,\n Ya as ANumericInput,\n as as ATextInput,\n bs as Login,\n ks as install\n};\n//# sourceMappingURL=aform.js.map\n","<template>\n\t<footer>\n\t\t<ul class=\"tabs\">\n\t\t\t<li class=\"hidebreadcrumbs\" @click=\"toggleBreadcrumbs\" @keydown.enter=\"toggleBreadcrumbs\">\n\t\t\t\t<a tabindex=\"0\"><div :class=\"rotateHideTabIcon\">×</div></a>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\tclass=\"hometab\"\n\t\t\t\t:style=\"{ display: breadcrumbsVisibile ? 'block' : 'none' }\"\n\t\t\t\t@click=\"navigateHome\"\n\t\t\t\t@keydown.enter=\"navigateHome\">\n\t\t\t\t<router-link to=\"/\" tabindex=\"0\">\n\t\t\t\t\t<svg class=\"icon\" aria-label=\"Home\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n\t\t\t\t\t\t<path d=\"M3 12l9-9 9 9\" />\n\t\t\t\t\t\t<path d=\"M9 21V12h6v9\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</router-link>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\t:class=\"['searchtab', { 'search-active': searchVisible }]\"\n\t\t\t\t:style=\"{ display: breadcrumbsVisibile ? 'block' : 'none' }\">\n\t\t\t\t<a tabindex=\"0\">\n\t\t\t\t\t<svg\n\t\t\t\t\t\tv-show=\"!searchVisible\"\n\t\t\t\t\t\tclass=\"icon search-icon\"\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\taria-label=\"Search\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t@click=\"toggleSearch\"\n\t\t\t\t\t\t@keydown.enter=\"toggleSearch\">\n\t\t\t\t\t\t<circle cx=\"11\" cy=\"11\" r=\"7\" />\n\t\t\t\t\t\t<path d=\"M21 21l-4.35-4.35\" />\n\t\t\t\t\t</svg>\n\t\t\t\t\t<input\n\t\t\t\t\t\tv-show=\"searchVisible\"\n\t\t\t\t\t\tref=\"searchinput\"\n\t\t\t\t\t\tv-model=\"searchText\"\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t@click.stop\n\t\t\t\t\t\t@input=\"handleSearchInput($event)\"\n\t\t\t\t\t\t@blur=\"handleSearch($event)\"\n\t\t\t\t\t\t@keydown.enter=\"handleSearch($event)\"\n\t\t\t\t\t\t@keydown.escape=\"toggleSearch\" />\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\tv-for=\"breadcrumb in breadcrumbs\"\n\t\t\t\t:key=\"breadcrumb.title\"\n\t\t\t\t:style=\"{ display: breadcrumbsVisibile ? 'block' : 'none' }\">\n\t\t\t\t<router-link tabindex=\"0\" :to=\"breadcrumb.to\"> {{ breadcrumb.title }} </router-link>\n\t\t\t</li>\n\t\t</ul>\n\t</footer>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, ref, useTemplateRef } from 'vue'\n\nconst { breadcrumbs = [] } = defineProps<{ breadcrumbs?: { title: string; to: string }[] }>()\n\nconst breadcrumbsVisibile = ref(true)\nconst searchVisible = ref(false)\nconst searchText = ref('')\nconst inputRef = useTemplateRef<HTMLInputElement>('searchinput')\n\nconst rotateHideTabIcon = computed(() => {\n\treturn breadcrumbsVisibile.value ? 'unrotated' : 'rotated'\n})\n\nconst toggleBreadcrumbs = () => {\n\tbreadcrumbsVisibile.value = !breadcrumbsVisibile.value\n}\n\nconst toggleSearch = async () => {\n\tsearchVisible.value = !searchVisible.value\n\tawait nextTick(() => {\n\t\tinputRef.value?.focus()\n\t})\n}\n\nconst handleSearchInput = (event: Event | MouseEvent) => {\n\tevent.preventDefault()\n\tevent.stopPropagation()\n}\n\nconst handleSearch = async (event: FocusEvent | KeyboardEvent) => {\n\tevent.preventDefault()\n\tevent.stopPropagation()\n\tawait toggleSearch()\n}\n\nconst navigateHome = (/* event: MouseEvent | KeyboardEvent */) => {\n\t// navigate home\n}\n</script>\n\n<style scoped>\nfooter {\n\tposition: fixed;\n\tbottom: 0px;\n\twidth: 100%;\n\tbackground-color: transparent;\n\theight: auto;\n\tmin-height: 2.4rem;\n\tz-index: 100;\n\ttext-align: left;\n\tfont-size: 100%;\n\tdisplay: flex;\n\tjustify-content: right;\n\tpadding: 0 0.75rem 0 0;\n\tbox-sizing: border-box;\n}\nul {\n\tdisplay: flex;\n\tflex-direction: row-reverse;\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n}\n\n.tabs li {\n\tfloat: left;\n\tlist-style-type: none;\n\tposition: relative;\n\tmargin-left: -1px;\n}\n\n/* Base tab styling */\n.tabs a {\n\tfloat: left;\n\tpadding: 0.5rem 1rem;\n\theight: 2.4rem;\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttext-decoration: none;\n\tcolor: var(--sc-gray-60, #666);\n\tbackground: var(--sc-btn-color, #ffffff);\n\tborder: 1px solid var(--sc-btn-border, #ccc);\n\tfont-size: 0.85rem;\n\tfont-family: var(--sc-font-family, system-ui, sans-serif);\n\ttransition: all 0.15s ease;\n\n\t/* Minimal ornamentation - subtle top radius only */\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n}\n\n.tabs a:hover {\n\tbackground: var(--sc-btn-hover, #f2f2f2);\n}\n\n.tabs .router-link-active {\n\tz-index: 3;\n\tbackground: var(--sc-primary-color, #827553) !important;\n\tborder-color: var(--sc-primary-color, #827553) !important;\n\tcolor: var(--sc-primary-text-color, #fff) !important;\n}\n\n/* Pseudo-elements removed - minimal ornamentation style */\n\n/* Hide breadcrumbs tab */\n.hidebreadcrumbs a {\n\tmin-width: 2.4rem;\n\twidth: 2.4rem;\n\theight: 2.4rem;\n\tpadding: 0.5rem;\n\tbackground: var(--sc-btn-color, #ffffff);\n\tborder: 1px solid var(--sc-btn-border, #ccc);\n\tcolor: var(--sc-gray-60, #666);\n}\n\n.hidebreadcrumbs a div {\n\tfont-size: 1.2rem;\n}\n\n.rotated {\n\ttransform: rotate(45deg);\n\t-webkit-transform: rotate(45deg);\n\t-moz-transform: rotate(45deg);\n\t-ms-transform: rotate(45deg);\n\t-o-transform: rotate(45deg);\n\ttransition: transform 250ms ease;\n}\n.unrotated {\n\ttransform: rotate(0deg);\n\t-webkit-transform: rotate(0deg);\n\t-moz-transform: rotate(0deg);\n\t-ms-transform: rotate(0deg);\n\t-o-transform: rotate(0deg);\n\ttransition: transform 250ms ease;\n}\n\nli:active,\nli:hover,\nli:focus,\nli > a:active,\nli > a:hover,\nli > a:focus {\n\tz-index: 3;\n}\n\na:active,\na:hover,\na:focus {\n\toutline: 2px solid var(--sc-input-active-border-color, black);\n\tz-index: 3;\n}\n\n/* Home tab */\n.hometab a {\n\tmin-width: 2.4rem;\n\twidth: 2.4rem;\n\theight: 2.4rem;\n\tpadding: 0.5rem;\n\tbackground: var(--sc-btn-color, #ffffff);\n\tborder: 1px solid var(--sc-btn-border, #ccc);\n\tcolor: var(--sc-gray-60, #666);\n}\n\n/* SVG icon styling */\n.icon {\n\twidth: 1rem;\n\theight: 1rem;\n\tstroke: currentColor;\n\tflex-shrink: 0;\n}\n\n/* Search tab with animation */\n.searchtab {\n\toverflow: hidden;\n}\n\n.searchtab a {\n\tmin-width: 2.4rem;\n\theight: 2.4rem;\n\tpadding: 0.5rem;\n\tbackground: var(--sc-btn-color, #ffffff);\n\tborder: 1px solid var(--sc-btn-border, #ccc);\n\tcolor: var(--sc-gray-60, #666);\n\toverflow: hidden;\n\t/* Animation for smooth expand/collapse */\n\tmax-width: 2.4rem;\n\ttransition: max-width 0.35s ease-in-out, padding 0.35s ease-in-out, background 0.2s ease;\n}\n\n.searchtab .search-icon {\n\tcursor: pointer;\n}\n\n.searchtab input {\n\toutline: none;\n\tborder: 1px solid var(--sc-input-border-color, #ccc);\n\tborder-radius: 0.25rem;\n\tbackground-color: var(--sc-form-background, #ffffff);\n\tcolor: var(--sc-gray-80, #333);\n\ttext-align: left;\n\tfont-size: 0.875rem;\n\tpadding: 0.25rem 0.5rem;\n\twidth: 180px;\n\theight: 1.5rem;\n\tflex-shrink: 0;\n\topacity: 0;\n\ttransition: opacity 0.2s ease-in-out;\n\ttransition-delay: 0s;\n}\n\n.searchtab input:focus {\n\tborder-color: var(--sc-input-active-border-color, #4f46e5);\n\toutline: none;\n}\n\n.searchtab input::placeholder {\n\tcolor: var(--sc-input-label-color, #999);\n}\n\n/* Search active state - expanded with animation */\n.searchtab.search-active a {\n\tmax-width: 200px;\n\tmin-width: auto;\n\twidth: auto;\n\tpadding: 0.5rem 0.75rem;\n}\n\n.searchtab.search-active input {\n\topacity: 1;\n\ttransition-delay: 0.15s;\n}\n</style>\n","<template>\n\t<div class=\"desktop\" @click=\"handleClick\">\n\t\t<!-- Action Set -->\n\t\t<ActionSet :elements=\"actionElements\" @action-click=\"handleActionClick\" />\n\n\t\t<!-- Main content using AForm -->\n\t\t<AForm v-if=\"writableSchema.length > 0\" v-model=\"writableSchema\" :data=\"currentViewData\" />\n\t\t<div v-else-if=\"!stonecrop\" class=\"loading\"><p>Initializing Stonecrop...</p></div>\n\t\t<div v-else class=\"loading\">\n\t\t\t<p>Loading {{ currentView }} data...</p>\n\t\t</div>\n\n\t\t<!-- Sheet Navigation -->\n\t\t<SheetNav :breadcrumbs=\"navigationBreadcrumbs\" />\n\n\t\t<!-- Command Palette -->\n\t\t<CommandPalette\n\t\t\t:is-open=\"commandPaletteOpen\"\n\t\t\t:search=\"searchCommands\"\n\t\t\tplaceholder=\"Type a command or search...\"\n\t\t\t@select=\"executeCommand\"\n\t\t\t@close=\"commandPaletteOpen = false\">\n\t\t\t<template #title=\"{ result }\">\n\t\t\t\t{{ result.title }}\n\t\t\t</template>\n\t\t\t<template #content=\"{ result }\">\n\t\t\t\t{{ result.description }}\n\t\t\t</template>\n\t\t</CommandPalette>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useStonecrop } from '@stonecrop/stonecrop'\nimport { AForm, type SchemaTypes, type TableColumn, type TableConfig } from '@stonecrop/aform'\nimport { computed, nextTick, onMounted, provide, ref, unref, watch } from 'vue'\n\nimport ActionSet from './ActionSet.vue'\nimport SheetNav from './SheetNav.vue'\nimport CommandPalette from './CommandPalette.vue'\nimport type { ActionElements } from '../types'\n\nconst { availableDoctypes = [] } = defineProps<{ availableDoctypes?: string[] }>()\n\nconst { stonecrop } = useStonecrop()\n\n// State\nconst loading = ref(false)\nconst saving = ref(false)\nconst commandPaletteOpen = ref(false)\n\n// HST-based form data management - field triggers are handled automatically by HST\n\n// Computed property that reads from HST store for reactive form data\nconst currentViewData = computed<Record<string, any>>({\n\tget() {\n\t\tif (!stonecrop.value || !currentDoctype.value || !currentRecordId.value) {\n\t\t\treturn {}\n\t\t}\n\n\t\ttry {\n\t\t\tconst record = stonecrop.value.getRecordById(currentDoctype.value, currentRecordId.value)\n\t\t\treturn record?.get('') || {}\n\t\t} catch {\n\t\t\treturn {}\n\t\t}\n\t},\n\tset(newData: Record<string, any>) {\n\t\tif (!stonecrop.value || !currentDoctype.value || !currentRecordId.value) {\n\t\t\treturn\n\t\t}\n\n\t\ttry {\n\t\t\t// Update each field in HST, which will automatically trigger field actions\n\t\t\tconst hstStore = stonecrop.value.getStore()\n\t\t\tfor (const [fieldname, value] of Object.entries(newData)) {\n\t\t\t\tconst fieldPath = `${currentDoctype.value}.${currentRecordId.value}.${fieldname}`\n\t\t\t\thstStore.set(fieldPath, value)\n\t\t\t}\n\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('HST update failed:', error)\n\t\t}\n\t},\n})\n\n// HST-based form data management - field triggers are handled automatically by HST\n\n// Computed properties for current route context\nconst route = computed(() => unref(stonecrop.value?.registry.router?.currentRoute))\nconst router = computed(() => stonecrop.value?.registry.router)\nconst currentDoctype = computed(() => {\n\tif (!route.value) return ''\n\n\t// First check if we have actualDoctype in meta (from registered routes)\n\tif (route.value.meta?.actualDoctype) {\n\t\treturn route.value.meta.actualDoctype as string\n\t}\n\n\t// For named routes, use params.doctype\n\tif (route.value.params.doctype) {\n\t\treturn route.value.params.doctype as string\n\t}\n\n\t// For catch-all routes that haven't been registered yet, extract from path\n\tconst pathMatch = route.value.params.pathMatch as string[] | undefined\n\tif (pathMatch && pathMatch.length > 0) {\n\t\treturn pathMatch[0]\n\t}\n\n\treturn ''\n})\n\n// The route doctype for display and navigation (e.g., 'todo')\nconst routeDoctype = computed(() => {\n\tif (!route.value) return ''\n\n\t// Check route meta first\n\tif (route.value.meta?.doctype) {\n\t\treturn route.value.meta.doctype as string\n\t}\n\n\t// For named routes, use params.doctype\n\tif (route.value.params.doctype) {\n\t\treturn route.value.params.doctype as string\n\t}\n\n\t// For catch-all routes, extract from path\n\tconst pathMatch = route.value.params.pathMatch as string[] | undefined\n\tif (pathMatch && pathMatch.length > 0) {\n\t\treturn pathMatch[0]\n\t}\n\n\treturn ''\n})\n\nconst currentRecordId = computed(() => {\n\tif (!route.value) return ''\n\n\t// For named routes, use params.recordId\n\tif (route.value.params.recordId) {\n\t\treturn route.value.params.recordId as string\n\t}\n\n\t// For catch-all routes that haven't been registered yet, extract from path\n\tconst pathMatch = route.value.params.pathMatch as string[] | undefined\n\tif (pathMatch && pathMatch.length > 1) {\n\t\treturn pathMatch[1]\n\t}\n\n\treturn ''\n})\nconst isNewRecord = computed(() => currentRecordId.value?.startsWith('new-'))\n\n// Determine current view based on route\nconst currentView = computed(() => {\n\tif (!route.value) {\n\t\treturn 'doctypes'\n\t}\n\n\t// Home route\n\tif (route.value.name === 'home' || route.value.path === '/') {\n\t\treturn 'doctypes'\n\t}\n\n\t// Named routes from registered doctypes\n\tif (route.value.name && route.value.name !== 'catch-all') {\n\t\tconst routeName = route.value.name as string\n\t\tif (routeName.includes('form') || route.value.params.recordId) {\n\t\t\treturn 'record'\n\t\t} else if (routeName.includes('list') || route.value.params.doctype) {\n\t\t\treturn 'records'\n\t\t}\n\t}\n\n\t// Catch-all route - determine from path structure\n\tconst pathMatch = route.value.params.pathMatch as string[] | undefined\n\tif (pathMatch && pathMatch.length > 0) {\n\t\tconst view = pathMatch.length === 1 ? 'records' : 'record'\n\t\treturn view\n\t}\n\n\treturn 'doctypes'\n})\n\n// Computed properties (now that all helper functions are defined)\n// Helper function to get available transitions for current record\nconst getAvailableTransitions = () => {\n\tif (!stonecrop.value || !currentDoctype.value || !currentRecordId.value) {\n\t\treturn []\n\t}\n\n\ttry {\n\t\tconst registry = stonecrop.value.registry\n\t\tconst meta = registry.registry[currentDoctype.value]\n\n\t\tif (!meta?.workflow?.states) {\n\t\t\treturn []\n\t\t}\n\n\t\t// Get current FSM state (for now, use workflow initial state or 'editing')\n\t\t// In a full implementation, this would track actual FSM state\n\t\tconst currentState = isNewRecord.value ? 'creating' : 'editing'\n\t\tconst stateConfig = meta.workflow.states[currentState]\n\n\t\tif (!stateConfig?.on) {\n\t\t\treturn []\n\t\t}\n\n\t\t// Get available transitions from current state\n\t\tconst transitions = Object.keys(stateConfig.on)\n\n\t\t// Create action elements for each transition\n\t\tconst actionElements = transitions.map(transition => {\n\t\t\tconst targetState = stateConfig.on?.[transition]\n\t\t\tconst targetStateName = typeof targetState === 'string' ? targetState : 'unknown'\n\n\t\t\tconst actionFn = async () => {\n\t\t\t\tconst node = stonecrop.value?.getRecordById(currentDoctype.value, currentRecordId.value)\n\t\t\t\tif (node) {\n\t\t\t\t\tconst recordData = currentViewData.value || {}\n\t\t\t\t\tawait node.triggerTransition(transition, {\n\t\t\t\t\t\tcurrentState,\n\t\t\t\t\t\ttargetState: targetStateName,\n\t\t\t\t\t\tfsmContext: recordData,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst element = {\n\t\t\t\tlabel: `${transition} (→ ${targetStateName})`,\n\t\t\t\taction: actionFn,\n\t\t\t}\n\n\t\t\treturn element\n\t\t})\n\n\t\treturn actionElements\n\t} catch (error) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn('Error getting available transitions:', error)\n\t\treturn []\n\t}\n}\n\n// New component reactive properties// New component reactive properties\nconst actionElements = computed<ActionElements[]>(() => {\n\tconst elements: ActionElements[] = []\n\n\tswitch (currentView.value) {\n\t\tcase 'doctypes':\n\t\t\telements.push({\n\t\t\t\ttype: 'button',\n\t\t\t\tlabel: 'Refresh',\n\t\t\t\taction: () => {\n\t\t\t\t\t// Refresh doctypes\n\t\t\t\t\twindow.location.reload()\n\t\t\t\t},\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'records':\n\t\t\telements.push(\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tlabel: 'New Record',\n\t\t\t\t\taction: () => void createNewRecord(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tlabel: 'Refresh',\n\t\t\t\t\taction: () => {\n\t\t\t\t\t\t// Refresh records\n\t\t\t\t\t\twindow.location.reload()\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t)\n\t\t\tbreak\n\t\tcase 'record': {\n\t\t\t// Add XState Transitions dropdown for record view\n\t\t\tconst transitionActions = getAvailableTransitions()\n\t\t\tif (transitionActions.length > 0) {\n\t\t\t\telements.push({\n\t\t\t\t\ttype: 'dropdown',\n\t\t\t\t\tlabel: 'Actions',\n\t\t\t\t\tactions: transitionActions,\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn elements\n})\n\nconst navigationBreadcrumbs = computed(() => {\n\tconst breadcrumbs: { title: string; to: string }[] = []\n\n\tif (currentView.value === 'records' && routeDoctype.value) {\n\t\tbreadcrumbs.push(\n\t\t\t{ title: 'Home', to: '/' },\n\t\t\t{ title: formatDoctypeName(routeDoctype.value), to: `/${routeDoctype.value}` }\n\t\t)\n\t} else if (currentView.value === 'record' && routeDoctype.value) {\n\t\tbreadcrumbs.push(\n\t\t\t{ title: 'Home', to: '/' },\n\t\t\t{ title: formatDoctypeName(routeDoctype.value), to: `/${routeDoctype.value}` },\n\t\t\t{ title: isNewRecord.value ? 'New Record' : 'Edit Record', to: route.value?.fullPath || '' }\n\t\t)\n\t}\n\n\treturn breadcrumbs\n})\n\n// Command palette functionality\ntype Command = {\n\ttitle: string\n\tdescription: string\n\taction: () => void\n}\n\nconst searchCommands = (query: string): Command[] => {\n\tconst commands: Command[] = [\n\t\t{\n\t\t\ttitle: 'Go Home',\n\t\t\tdescription: 'Navigate to the home page',\n\t\t\taction: () => void router.value?.push('/'),\n\t\t},\n\t\t{\n\t\t\ttitle: 'Toggle Command Palette',\n\t\t\tdescription: 'Open/close the command palette',\n\t\t\taction: () => (commandPaletteOpen.value = !commandPaletteOpen.value),\n\t\t},\n\t]\n\n\t// Add doctype-specific commands\n\tif (routeDoctype.value) {\n\t\tcommands.push({\n\t\t\ttitle: `View ${formatDoctypeName(routeDoctype.value)} Records`,\n\t\t\tdescription: `Navigate to ${routeDoctype.value} list`,\n\t\t\taction: () => void router.value?.push(`/${routeDoctype.value}`),\n\t\t})\n\n\t\tcommands.push({\n\t\t\ttitle: `Create New ${formatDoctypeName(routeDoctype.value)}`,\n\t\t\tdescription: `Create a new ${routeDoctype.value} record`,\n\t\t\taction: () => void createNewRecord(),\n\t\t})\n\t}\n\n\t// Add available doctypes as commands\n\tavailableDoctypes.forEach(doctype => {\n\t\tcommands.push({\n\t\t\ttitle: `View ${formatDoctypeName(doctype)}`,\n\t\t\tdescription: `Navigate to ${doctype} list`,\n\t\t\taction: () => void router.value?.push(`/${doctype}`),\n\t\t})\n\t})\n\n\t// Filter commands based on query\n\tif (!query) return commands\n\n\treturn commands.filter(\n\t\tcmd =>\n\t\t\tcmd.title.toLowerCase().includes(query.toLowerCase()) ||\n\t\t\tcmd.description.toLowerCase().includes(query.toLowerCase())\n\t)\n}\n\nconst executeCommand = (command: Command) => {\n\tcommand.action()\n\tcommandPaletteOpen.value = false\n}\n\n// Helper functions - moved here to avoid \"before initialization\" errors\nconst formatDoctypeName = (doctype: string): string => {\n\treturn doctype\n\t\t.split('-')\n\t\t.map(word => word.charAt(0).toUpperCase() + word.slice(1))\n\t\t.join(' ')\n}\n\nconst getRecordCount = (doctype: string): number => {\n\tif (!stonecrop.value) return 0\n\tconst recordIds = stonecrop.value.getRecordIds(doctype)\n\treturn recordIds.length\n}\n\nconst navigateToDoctype = async (doctype: string) => {\n\tawait router.value?.push(`/${doctype}`)\n}\n\nconst openRecord = async (recordId: string) => {\n\tawait router.value?.push(`/${routeDoctype.value}/${recordId}`)\n}\n\nconst createNewRecord = async () => {\n\tconst newId = `new-${Date.now()}`\n\tawait router.value?.push(`/${routeDoctype.value}/${newId}`)\n}\n\n// Doctype metadata loader - simplified since router handles most of this\nconst loadDoctypeMetadata = (doctype: string) => {\n\tif (!stonecrop.value) return\n\n\t// Ensure the doctype structure exists in HST\n\t// The router should have already loaded the metadata, but this ensures the HST structure exists\n\ttry {\n\t\tstonecrop.value.records(doctype)\n\t} catch (error) {\n\t\t// Silent error handling - structure will be created if needed\n\t}\n}\n\n// Schema generator functions - moved here to be available to computed properties\nconst getDoctypesSchema = (): SchemaTypes[] => {\n\tif (!availableDoctypes.length) return []\n\n\tconst rows = availableDoctypes.map(doctype => ({\n\t\tid: doctype,\n\t\tdoctype,\n\t\tdisplay_name: formatDoctypeName(doctype),\n\t\trecord_count: getRecordCount(doctype),\n\t\tactions: 'View Records',\n\t}))\n\n\treturn [\n\t\t{\n\t\t\tfieldname: 'header',\n\t\t\tcomponent: 'div',\n\t\t\tvalue: `\n\t\t\t\t<div class=\"view-header\">\n\t\t\t\t\t<h1>Available Doctypes</h1>\n\t\t\t\t</div>\n\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tfieldname: 'doctypes_table',\n\t\t\tcomponent: 'ATable',\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Doctype',\n\t\t\t\t\tname: 'doctype',\n\t\t\t\t\tfieldtype: 'Data',\n\t\t\t\t\talign: 'left',\n\t\t\t\t\tedit: false,\n\t\t\t\t\twidth: '20ch',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Name',\n\t\t\t\t\tname: 'display_name',\n\t\t\t\t\tfieldtype: 'Data',\n\t\t\t\t\talign: 'left',\n\t\t\t\t\tedit: false,\n\t\t\t\t\twidth: '30ch',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Records',\n\t\t\t\t\tname: 'record_count',\n\t\t\t\t\tfieldtype: 'Int',\n\t\t\t\t\talign: 'center',\n\t\t\t\t\tedit: false,\n\t\t\t\t\twidth: '15ch',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Actions',\n\t\t\t\t\tname: 'actions',\n\t\t\t\t\tfieldtype: 'Data',\n\t\t\t\t\talign: 'center',\n\t\t\t\t\tedit: false,\n\t\t\t\t\twidth: '20ch',\n\t\t\t\t},\n\t\t\t] as TableColumn[],\n\t\t\tconfig: {\n\t\t\t\tview: 'list',\n\t\t\t\tfullWidth: true,\n\t\t\t} as TableConfig,\n\t\t\trows,\n\t\t},\n\t]\n}\n\nconst getRecordsSchema = (): SchemaTypes[] => {\n\tif (!currentDoctype.value) return []\n\tif (!stonecrop.value) return []\n\n\tconst records = getRecords()\n\tconst columns = getColumns()\n\n\t// If no columns are available, show a loading or empty state\n\tif (columns.length === 0) {\n\t\treturn [\n\t\t\t{\n\t\t\t\tfieldname: 'header',\n\t\t\t\tcomponent: 'div',\n\t\t\t\tvalue: `\n\t\t\t\t\t<div class=\"view-header\">\n\t\t\t\t\t\t<nav class=\"breadcrumbs\">\n\t\t\t\t\t\t\t<a href=\"/\">Home</a>\n\t\t\t\t\t\t\t<span class=\"separator\">/</span>\n\t\t\t\t\t\t\t<span class=\"current\">${formatDoctypeName(routeDoctype.value || currentDoctype.value)}</span>\n\t\t\t\t\t\t</nav>\n\t\t\t\t\t\t<h1>${formatDoctypeName(routeDoctype.value || currentDoctype.value)} Records</h1>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tfieldname: 'loading',\n\t\t\t\tcomponent: 'div',\n\t\t\t\tvalue: `\n\t\t\t\t\t<div class=\"loading-state\">\n\t\t\t\t\t\t<p>Loading ${formatDoctypeName(routeDoctype.value || currentDoctype.value)} schema...</p>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t]\n\t}\n\n\tconst rows = records.map((record: any) => ({\n\t\t...record,\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\tid: record.id || '',\n\t\tactions: 'Edit | Delete',\n\t}))\n\n\treturn [\n\t\t{\n\t\t\tfieldname: 'header',\n\t\t\tcomponent: 'div',\n\t\t\tvalue: `\n\t\t\t\t<div class=\"view-header\">\n\t\t\t\t\t<nav class=\"breadcrumbs\">\n\t\t\t\t\t\t<a href=\"/\">Home</a>\n\t\t\t\t\t\t<span class=\"separator\">/</span>\n\t\t\t\t\t\t<span class=\"current\">${formatDoctypeName(routeDoctype.value || currentDoctype.value)}</span>\n\t\t\t\t\t</nav>\n\t\t\t\t\t<h1>${formatDoctypeName(routeDoctype.value || currentDoctype.value)} Records</h1>\n\t\t\t\t</div>\n\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tfieldname: 'actions',\n\t\t\tcomponent: 'div',\n\t\t\tvalue: `\n\t\t\t\t<div class=\"view-actions\">\n\t\t\t\t\t<button class=\"btn-primary\" data-action=\"create\">\n\t\t\t\t\t\tNew ${formatDoctypeName(routeDoctype.value || currentDoctype.value)}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t`,\n\t\t},\n\t\t...(records.length === 0\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tfieldname: 'empty_state',\n\t\t\t\t\t\tcomponent: 'div',\n\t\t\t\t\t\tvalue: `\n\t\t\t\t\t\t\t<div class=\"empty-state\">\n\t\t\t\t\t\t\t\t<p>No ${routeDoctype.value || currentDoctype.value} records found.</p>\n\t\t\t\t\t\t\t\t<button class=\"btn-primary\" data-action=\"create\">\n\t\t\t\t\t\t\t\t\tCreate First Record\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`,\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfieldname: 'records_table',\n\t\t\t\t\t\tcomponent: 'ATable',\n\t\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t\t...columns.map(col => ({\n\t\t\t\t\t\t\t\tlabel: col.label,\n\t\t\t\t\t\t\t\tname: col.fieldname,\n\t\t\t\t\t\t\t\tfieldtype: col.fieldtype,\n\t\t\t\t\t\t\t\talign: 'left',\n\t\t\t\t\t\t\t\tedit: false,\n\t\t\t\t\t\t\t\twidth: '20ch',\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'Actions',\n\t\t\t\t\t\t\t\tname: 'actions',\n\t\t\t\t\t\t\t\tfieldtype: 'Data',\n\t\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\t\tedit: false,\n\t\t\t\t\t\t\t\twidth: '20ch',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t] as TableColumn[],\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tview: 'list',\n\t\t\t\t\t\t\tfullWidth: true,\n\t\t\t\t\t\t} as TableConfig,\n\t\t\t\t\t\trows,\n\t\t\t\t\t},\n\t\t\t ]),\n\t]\n}\n\nconst getRecordFormSchema = (): SchemaTypes[] => {\n\tif (!currentDoctype.value) return []\n\tif (!stonecrop.value) return []\n\n\ttry {\n\t\tconst registry = stonecrop.value?.registry\n\t\tconst meta = registry?.registry[currentDoctype.value]\n\n\t\tif (!meta?.schema) {\n\t\t\t// Return loading state if schema isn't available yet\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tfieldname: 'header',\n\t\t\t\t\tcomponent: 'div',\n\t\t\t\t\tvalue: `\n\t\t\t\t\t\t<div class=\"view-header\">\n\t\t\t\t\t\t\t<nav class=\"breadcrumbs\">\n\t\t\t\t\t\t\t\t<a href=\"/\">Home</a>\n\t\t\t\t\t\t\t\t<span class=\"separator\">/</span>\n\t\t\t\t\t\t\t\t<a href=\"/${routeDoctype.value || currentDoctype.value}\">${formatDoctypeName(\n\t\t\t\t\t\trouteDoctype.value || currentDoctype.value\n\t\t\t\t\t)}</a>\n\t\t\t\t\t\t\t\t<span class=\"separator\">/</span>\n\t\t\t\t\t\t\t\t<span class=\"current\">${isNewRecord.value ? 'New Record' : currentRecordId.value}</span>\n\t\t\t\t\t\t\t</nav>\n\t\t\t\t\t\t\t<h1>${\n\t\t\t\t\t\t\t\tisNewRecord.value\n\t\t\t\t\t\t\t\t\t? `New ${formatDoctypeName(routeDoctype.value || currentDoctype.value)}`\n\t\t\t\t\t\t\t\t\t: `Edit ${formatDoctypeName(routeDoctype.value || currentDoctype.value)}`\n\t\t\t\t\t\t\t}</h1>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldname: 'loading',\n\t\t\t\t\tcomponent: 'div',\n\t\t\t\t\tvalue: `\n\t\t\t\t\t\t<div class=\"loading-state\">\n\t\t\t\t\t\t\t<p>Loading ${formatDoctypeName(routeDoctype.value || currentDoctype.value)} form...</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\n\t\tconst schemaArray = 'toArray' in meta.schema ? meta.schema.toArray() : meta.schema\n\t\tconst currentRecord = getCurrentRecord()\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tfieldname: 'header',\n\t\t\t\tcomponent: 'div',\n\t\t\t\tvalue: `\n\t\t\t\t\t<div class=\"view-header\">\n\t\t\t\t\t\t<nav class=\"breadcrumbs\">\n\t\t\t\t\t\t\t<a href=\"/\">Home</a>\n\t\t\t\t\t\t\t<span class=\"separator\">/</span>\n\t\t\t\t\t\t\t<a href=\"/${routeDoctype.value || currentDoctype.value}\">${formatDoctypeName(\n\t\t\t\t\trouteDoctype.value || currentDoctype.value\n\t\t\t\t)}</a>\n\t\t\t\t\t\t\t<span class=\"separator\">/</span>\n\t\t\t\t\t\t\t<span class=\"current\">${isNewRecord.value ? 'New Record' : currentRecordId.value}</span>\n\t\t\t\t\t\t</nav>\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\tisNewRecord.value\n\t\t\t\t\t\t\t\t\t? `New ${formatDoctypeName(routeDoctype.value || currentDoctype.value)}`\n\t\t\t\t\t\t\t\t\t: `Edit ${formatDoctypeName(routeDoctype.value || currentDoctype.value)}`\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tfieldname: 'actions',\n\t\t\t\tcomponent: 'div',\n\t\t\t\tvalue: `\n\t\t\t\t\t<div class=\"view-actions\">\n\t\t\t\t\t\t<button class=\"btn-primary\" data-action=\"save\" ${saving.value ? 'disabled' : ''}>\n\t\t\t\t\t\t\t${saving.value ? 'Saving...' : 'Save'}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button class=\"btn-secondary\" data-action=\"cancel\">Cancel</button>\n\t\t\t\t\t\t${!isNewRecord.value ? '<button class=\"btn-danger\" data-action=\"delete\">Delete</button>' : ''}\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\t...schemaArray.map(field => ({\n\t\t\t\t...field,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\tvalue: currentRecord[field.fieldname] || '',\n\t\t\t})),\n\t\t]\n\t} catch (error) {\n\t\treturn [\n\t\t\t{\n\t\t\t\tfieldname: 'error',\n\t\t\t\tcomponent: 'div',\n\t\t\t\tvalue: `\n\t\t\t\t\t<div class=\"error-state\">\n\t\t\t\t\t\t<p>Unable to load form schema for ${formatDoctypeName(routeDoctype.value || currentDoctype.value)}</p>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t]\n\t}\n}\n\n// Additional data helper functions\nconst getRecords = () => {\n\tif (!stonecrop.value || !currentDoctype.value) {\n\t\treturn []\n\t}\n\n\tconst recordsNode = stonecrop.value.records(currentDoctype.value)\n\tconst recordsData = recordsNode?.get('')\n\n\tif (recordsData && typeof recordsData === 'object' && !Array.isArray(recordsData)) {\n\t\treturn Object.values(recordsData as Record<string, any>)\n\t}\n\n\treturn []\n}\n\nconst getColumns = () => {\n\tif (!stonecrop.value || !currentDoctype.value) return []\n\n\ttry {\n\t\tconst registry = stonecrop.value.registry\n\t\tconst meta = registry.registry[currentDoctype.value]\n\n\t\tif (meta?.schema) {\n\t\t\tconst schemaArray = 'toArray' in meta.schema ? meta.schema.toArray() : meta.schema\n\t\t\treturn schemaArray.map(field => ({\n\t\t\t\tfieldname: field.fieldname,\n\t\t\t\tlabel: ('label' in field && field.label) || field.fieldname,\n\t\t\t\tfieldtype: ('fieldtype' in field && field.fieldtype) || 'Data',\n\t\t\t}))\n\t\t}\n\t} catch (error) {\n\t\t// Error getting schema - return empty array\n\t}\n\n\treturn []\n}\n\nconst getCurrentRecord = () => {\n\tif (!stonecrop.value || !currentDoctype.value || isNewRecord.value) return {}\n\n\tconst record = stonecrop.value.getRecordById(currentDoctype.value, currentRecordId.value)\n\treturn record?.get('') || {}\n}\n\n// Schema for different views - defined here after all helper functions are available\nconst currentViewSchema = computed<SchemaTypes[]>(() => {\n\tswitch (currentView.value) {\n\t\tcase 'doctypes':\n\t\t\treturn getDoctypesSchema()\n\t\tcase 'records':\n\t\t\treturn getRecordsSchema()\n\t\tcase 'record':\n\t\t\treturn getRecordFormSchema()\n\t\tdefault:\n\t\t\treturn []\n\t}\n})\n\n// Writable schema for AForm v-model binding\nconst writableSchema = ref<SchemaTypes[]>([])\n\n// Sync computed schema to writable schema when it changes\nwatch(\n\tcurrentViewSchema,\n\tnewSchema => {\n\t\twritableSchema.value = [...newSchema]\n\t},\n\t{ immediate: true, deep: true }\n)\n\n// Watch for field changes in writable schema and sync to HST\nwatch(\n\twritableSchema,\n\tnewSchema => {\n\t\tif (!stonecrop.value || !currentDoctype.value || !currentRecordId.value || isNewRecord.value) {\n\t\t\treturn\n\t\t}\n\n\t\ttry {\n\t\t\tconst hstStore = stonecrop.value.getStore()\n\n\t\t\t// Process form field updates from schema\n\t\t\tnewSchema.forEach(field => {\n\t\t\t\t// Only process fields that have a fieldname and value (form fields)\n\t\t\t\tif (\n\t\t\t\t\tfield.fieldname &&\n\t\t\t\t\t'value' in field &&\n\t\t\t\t\t!['header', 'actions', 'loading', 'error'].includes(field.fieldname)\n\t\t\t\t) {\n\t\t\t\t\tconst fieldPath = `${currentDoctype.value}.${currentRecordId.value}.${field.fieldname}`\n\t\t\t\t\tconst currentValue = hstStore.has(fieldPath) ? hstStore.get(fieldPath) : undefined\n\n\t\t\t\t\t// Only update if value actually changed to avoid infinite loops\n\t\t\t\t\tif (currentValue !== field.value) {\n\t\t\t\t\t\thstStore.set(fieldPath, field.value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('HST schema sync failed:', error)\n\t\t}\n\t},\n\t{ deep: true }\n)\n\n// Action handlers (will be triggered by button clicks in the UI)\nconst handleSave = async () => {\n\t// eslint-disable-next-line no-console\n\tif (!stonecrop.value) return\n\n\tsaving.value = true\n\n\ttry {\n\t\tconst formData = currentViewData.value || {}\n\n\t\tif (isNewRecord.value) {\n\t\t\tconst newId = `record-${Date.now()}`\n\t\t\tconst recordData = { id: newId, ...formData }\n\n\t\t\tstonecrop.value.addRecord(currentDoctype.value, newId, recordData)\n\n\t\t\t// Trigger SAVE transition for new record\n\t\t\tconst node = stonecrop.value.getRecordById(currentDoctype.value, newId)\n\t\t\tif (node) {\n\t\t\t\tawait node.triggerTransition('SAVE', {\n\t\t\t\t\tcurrentState: 'creating',\n\t\t\t\t\ttargetState: 'saved',\n\t\t\t\t\tfsmContext: recordData,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tawait router.value?.replace(`/${routeDoctype.value}/${newId}`)\n\t\t} else {\n\t\t\tconst recordData = { id: currentRecordId.value, ...formData }\n\t\t\tstonecrop.value.addRecord(currentDoctype.value, currentRecordId.value, recordData)\n\n\t\t\t// Trigger SAVE transition for existing record\n\t\t\tconst node = stonecrop.value.getRecordById(currentDoctype.value, currentRecordId.value)\n\t\t\tif (node) {\n\t\t\t\tawait node.triggerTransition('SAVE', {\n\t\t\t\t\tcurrentState: 'editing',\n\t\t\t\t\ttargetState: 'saved',\n\t\t\t\t\tfsmContext: recordData,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\t// Silently handle error\n\t} finally {\n\t\tsaving.value = false\n\t}\n}\n\nconst handleCancel = async () => {\n\tif (isNewRecord.value) {\n\t\t// For new records, we don't have a specific record node yet\n\t\t// Just navigate back without triggering transition\n\t\tawait router.value?.push(`/${routeDoctype.value}`)\n\t} else {\n\t\t// Trigger CANCEL transition for existing record\n\t\tif (stonecrop.value) {\n\t\t\tconst node = stonecrop.value.getRecordById(currentDoctype.value, currentRecordId.value)\n\t\t\tif (node) {\n\t\t\t\tawait node.triggerTransition('CANCEL', {\n\t\t\t\t\tcurrentState: 'editing',\n\t\t\t\t\ttargetState: 'cancelled',\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\t// Reload current record data\n\t\tloadRecordData()\n\t}\n}\n\nconst handleActionClick = (label: string, action: (() => void | Promise<void>) | undefined) => {\n\t// eslint-disable-next-line no-console\n\tif (action) {\n\t\tvoid action()\n\t}\n}\n\nconst handleDelete = async (recordId?: string) => {\n\tif (!stonecrop.value) return\n\n\tconst targetRecordId = recordId || currentRecordId.value\n\tif (!targetRecordId) return\n\n\tif (confirm('Are you sure you want to delete this record?')) {\n\t\t// Trigger DELETE transition before removing\n\t\tconst node = stonecrop.value.getRecordById(currentDoctype.value, targetRecordId)\n\t\tif (node) {\n\t\t\tawait node.triggerTransition('DELETE', {\n\t\t\t\tcurrentState: 'editing',\n\t\t\t\ttargetState: 'deleted',\n\t\t\t})\n\t\t}\n\n\t\tstonecrop.value.removeRecord(currentDoctype.value, targetRecordId)\n\n\t\tif (currentView.value === 'record') {\n\t\t\tawait router.value?.push(`/${routeDoctype.value}`)\n\t\t}\n\t}\n}\n\n// Event handlers\nconst handleClick = async (event: Event) => {\n\tconst target = event.target as HTMLElement\n\tconst action = target.getAttribute('data-action')\n\n\tif (action) {\n\t\tswitch (action) {\n\t\t\tcase 'create':\n\t\t\t\tawait createNewRecord()\n\t\t\t\tbreak\n\t\t\tcase 'save':\n\t\t\t\tawait handleSave()\n\t\t\t\tbreak\n\t\t\tcase 'cancel':\n\t\t\t\tawait handleCancel()\n\t\t\t\tbreak\n\t\t\tcase 'delete':\n\t\t\t\tawait handleDelete()\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t// Handle table cell clicks for actions\n\tconst cell = target.closest('td, th')\n\tif (cell) {\n\t\tconst cellText = cell.textContent?.trim()\n\t\tconst row = cell.closest('tr')\n\n\t\tif (cellText === 'View Records' && row) {\n\t\t\t// Get the doctype from the row data\n\t\t\tconst cells = row.querySelectorAll('td')\n\t\t\tif (cells.length > 0) {\n\t\t\t\tconst doctypeCell = cells[1] // Assuming doctype is in second column (first column is index)\n\t\t\t\tconst doctype = doctypeCell.textContent?.trim()\n\t\t\t\tif (doctype) {\n\t\t\t\t\tawait navigateToDoctype(doctype)\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (cellText?.includes('Edit') && row) {\n\t\t\t// Get the record ID from the row\n\t\t\tconst cells = row.querySelectorAll('td')\n\t\t\tif (cells.length > 0) {\n\t\t\t\tconst idCell = cells[0] // Assuming ID is in first column\n\t\t\t\tconst recordId = idCell.textContent?.trim()\n\t\t\t\tif (recordId) {\n\t\t\t\t\tawait openRecord(recordId)\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (cellText?.includes('Delete') && row) {\n\t\t\t// Get the record ID from the row\n\t\t\tconst cells = row.querySelectorAll('td')\n\t\t\tif (cells.length > 0) {\n\t\t\t\tconst idCell = cells[0] // Assuming ID is in first column\n\t\t\t\tconst recordId = idCell.textContent?.trim()\n\t\t\t\tif (recordId) {\n\t\t\t\t\tawait handleDelete(recordId)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Watch for route changes to load appropriate data\nwatch(\n\t[currentView, currentDoctype, currentRecordId],\n\t() => {\n\t\tif (currentView.value === 'record') {\n\t\t\tloadRecordData()\n\t\t}\n\t},\n\t{ immediate: true }\n)\n\n// Watch for Stonecrop instance to become available\nwatch(\n\tstonecrop,\n\tnewStonecrop => {\n\t\tif (newStonecrop) {\n\t\t\t// Force a re-evaluation of the current view schema when Stonecrop becomes available\n\t\t\t// This is handled automatically by the reactive computed properties\n\t\t}\n\t},\n\t{ immediate: true }\n)\n\n// Watch for when we need to load data for records view\nwatch(\n\t[currentView, currentDoctype, stonecrop],\n\t([view, doctype, stonecropInstance]) => {\n\t\tif (view === 'records' && doctype && stonecropInstance) {\n\t\t\t// Ensure doctype metadata is loaded\n\t\t\tloadDoctypeMetadata(doctype)\n\t\t}\n\t},\n\t{ immediate: true }\n)\n\nconst loadRecordData = () => {\n\tif (!stonecrop.value || !currentDoctype.value) return\n\n\tloading.value = true\n\n\ttry {\n\t\tif (!isNewRecord.value) {\n\t\t\t// For existing records, ensure the record exists in HST\n\t\t\t// The computed currentViewData will automatically read from HST\n\t\t\tstonecrop.value.getRecordById(currentDoctype.value, currentRecordId.value)\n\t\t}\n\t\t// For new records, currentViewData computed property will return {} automatically\n\t} catch (error) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn('Error loading record data:', error)\n\t} finally {\n\t\tloading.value = false\n\t}\n}\n\n// Provide methods for action components\nconst desktopMethods = {\n\tnavigateToDoctype,\n\topenRecord,\n\tcreateNewRecord,\n\thandleSave,\n\thandleCancel,\n\thandleDelete,\n}\n\nprovide('desktopMethods', desktopMethods)\n\n// Register action components in Vue app\nonMounted(() => {\n\t// Wait a tick for stonecrop to be ready, then load initial data\n\tvoid nextTick(() => {\n\t\tif (currentView.value === 'records' && currentDoctype.value && stonecrop.value) {\n\t\t\tloadDoctypeMetadata(currentDoctype.value)\n\t\t}\n\t})\n\n\t// Components will be automatically registered via the global component system\n\n\t// Add keyboard shortcuts\n\tconst handleKeydown = (event: KeyboardEvent) => {\n\t\t// Ctrl+K or Cmd+K to open command palette\n\t\tif ((event.ctrlKey || event.metaKey) && event.key === 'k') {\n\t\t\tevent.preventDefault()\n\t\t\tcommandPaletteOpen.value = true\n\t\t}\n\t\t// Escape to close command palette\n\t\tif (event.key === 'Escape' && commandPaletteOpen.value) {\n\t\t\tcommandPaletteOpen.value = false\n\t\t}\n\t}\n\n\tdocument.addEventListener('keydown', handleKeydown)\n\n\t// Cleanup event listener on unmount\n\treturn () => {\n\t\tdocument.removeEventListener('keydown', handleKeydown)\n\t}\n})\n</script>\n","import { App, type Plugin } from 'vue'\n\nimport ActionSet from '../components/ActionSet.vue'\nimport CommandPalette from '../components/CommandPalette.vue'\nimport Desktop from '../components/Desktop.vue'\nimport SheetNav from '../components/SheetNav.vue'\n\n/**\n * This is the main plugin that will be used to register all the desktop components.\n * @public\n */\nconst plugin: Plugin = {\n\tinstall: (app: App) => {\n\t\tapp.component('ActionSet', ActionSet)\n\t\tapp.component('CommandPalette', CommandPalette)\n\t\tapp.component('Desktop', Desktop)\n\t\tapp.component('SheetNav', SheetNav)\n\t},\n}\n\nexport default plugin\n"],"names":["emit","__emit","dropdownStates","ref","isOpen","timeoutId","hover","closeClicked","onMounted","closeDropdowns","onHover","onHoverLeave","toggleDropdown","index","showDropdown","handleClick","action","label","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_cache","$event","_openBlock","_Fragment","_renderList","__props","el","_toDisplayString","_hoisted_2","_hoisted_3","_hoisted_4","_withDirectives","_hoisted_5","_hoisted_6","item","itemIndex","_hoisted_7","_hoisted_9","_vShow","query","selectedIndex","inputRef","useTemplateRef","results","computed","watch","nextTick","closeModal","handleKeydown","e","selectResult","result","_createBlock","_Teleport","_createVNode","_Transition","_renderSlot","_ctx","te","G","me","n","Pe","Y","le","He","t","r","o","se","be","ze","Te","Xe","et","ee","nt","Ie","Ee","Ne","ot","st","z","Ce","ke","s","i","a","c","f","g","$e","B","b","A","ae","W","$","_e","d","v","x","N","D","p","R","de","P","F","S","C","w","T","L","m","y","E","O","_","U","ye","M","Ye","ce","Fe","it","Ae","oe","Me","Ue","at","ct","lt","Je","ut","je","tt","ft","qe","dt","Oe","pt","ht","gt","vt","yt","Be","mt","Q","St","q","re","rt","he","ge","bt","wt","Et","Ot","Rt","Le","At","We","j","Pt","Re","ve","$t","pe","u","l","h","I","V","H","ue","K","Ve","ne","Se","Dt","Ke","Wt","J","xe","Z","X","we","Qe","Tt","De","Ze","Kn","un","xt","ro","Uo","wn","Gl","Ct","Mt","Jl","Ql","Ha","_a","Va","Oa","cn","k","ie","In","breadcrumbsVisibile","searchVisible","searchText","rotateHideTabIcon","toggleBreadcrumbs","toggleSearch","handleSearchInput","event","handleSearch","navigateHome","_component_router_link","_withKeys","breadcrumb","_createTextVNode","stonecrop","useStonecrop","loading","saving","commandPaletteOpen","currentViewData","currentDoctype","currentRecordId","newData","hstStore","fieldname","value","fieldPath","error","route","unref","router","pathMatch","routeDoctype","isNewRecord","currentView","routeName","getAvailableTransitions","meta","currentState","stateConfig","transition","targetState","targetStateName","actionFn","node","recordData","actionElements","elements","createNewRecord","transitionActions","navigationBreadcrumbs","breadcrumbs","formatDoctypeName","searchCommands","commands","doctype","cmd","executeCommand","command","word","getRecordCount","navigateToDoctype","openRecord","recordId","newId","loadDoctypeMetadata","getDoctypesSchema","rows","getRecordsSchema","records","getRecords","columns","getColumns","record","col","getRecordFormSchema","schemaArray","currentRecord","getCurrentRecord","field","recordsData","currentViewSchema","writableSchema","newSchema","handleSave","formData","handleCancel","loadRecordData","handleActionClick","handleDelete","targetRecordId","target","cell","cellText","row","cells","newStonecrop","view","stonecropInstance","provide","ActionSet","_unref","AForm","SheetNav","CommandPalette","_withCtx","plugin","app","Desktop"],"mappings":"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"}
|