@stonecrop/desktop 0.7.9 → 0.8.1

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.
@@ -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 we, inject as te, getCurrentInstance as Fe, toRaw as Le, computed as B, isRef as re, isReactive as ye, toRef as se, ref as M, reactive as Ee, markRaw as oe, effectScope as Je, nextTick as le, getCurrentScope as Ke, onScopeDispose as Ze, watch as H, toRefs as Pe, onMounted as Ve, readonly as Me, customRef as Ge, toValue as q, shallowRef as xe, unref as Ye, provide as _e } from \"vue\";\nconst Q = typeof window < \"u\";\nlet K;\nconst ge = (n) => K = n;\nprocess.env.NODE_ENV;\nconst Oe = process.env.NODE_ENV !== \"production\" ? /* @__PURE__ */ Symbol(\"pinia\") : (\n /* istanbul ignore next */\n /* @__PURE__ */ Symbol()\n);\nfunction G(n) {\n return n && typeof n == \"object\" && Object.prototype.toString.call(n) === \"[object Object]\" && typeof n.toJSON != \"function\";\n}\nvar ie;\n(function(n) {\n n.direct = \"direct\", n.patchObject = \"patch object\", n.patchFunction = \"patch function\";\n})(ie || (ie = {}));\nfunction Be(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 G(o) && G(r) && !re(r) && !ye(r) ? n[t] = Be(o, r) : n[t] = r;\n }\n return n;\n}\nconst je = () => {\n};\nfunction Ae(n, e, t, r = je) {\n n.add(e);\n const o = () => {\n n.delete(e) && r();\n };\n return !t && Ke() && Ze(o), o;\n}\nfunction Y(n, ...e) {\n n.forEach((t) => {\n t(...e);\n });\n}\nconst Qe = (n) => n(), $e = /* @__PURE__ */ Symbol(), me = /* @__PURE__ */ Symbol();\nfunction Re(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 G(o) && G(r) && n.hasOwnProperty(t) && !re(r) && !ye(r) ? n[t] = Re(o, r) : n[t] = r;\n }\n return n;\n}\nconst Xe = process.env.NODE_ENV !== \"production\" ? /* @__PURE__ */ Symbol(\"pinia:skipHydration\") : (\n /* istanbul ignore next */\n /* @__PURE__ */ Symbol()\n);\nfunction et(n) {\n return !G(n) || !Object.prototype.hasOwnProperty.call(n, Xe);\n}\nconst { assign: W } = Object;\nfunction Ie(n) {\n return !!(re(n) && n.effect);\n}\nfunction De(n, e, t, r) {\n const { state: o, actions: s, getters: i } = e, a = t.state.value[n];\n let c;\n function h() {\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 Pe(M(o ? o() : {}).value)\n ) : Pe(t.state.value[n]);\n return W(g, s, Object.keys(i || {}).reduce((w, R) => (process.env.NODE_ENV !== \"production\" && R in g && console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${R}\" in store \"${n}\".`), w[R] = oe(B(() => {\n ge(t);\n const $ = t._s.get(n);\n return i[R].call($, $);\n })), w), {}));\n }\n return c = Ne(n, h, e, t, r, !0), c;\n}\nfunction Ne(n, e, t = {}, r, o, s) {\n let i;\n const a = W({ 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 = (l) => {\n h ? $ = l : h == !1 && !v._hotUpdating && (Array.isArray($) ? $.push(l) : console.error(\"🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.\"));\n });\n let h, g, w = /* @__PURE__ */ new Set(), R = /* @__PURE__ */ new Set(), $;\n const T = r.state.value[n];\n !s && !T && (process.env.NODE_ENV === \"production\" || !o) && (r.state.value[n] = {});\n const L = M({});\n let P;\n function I(l) {\n let u;\n h = g = !1, process.env.NODE_ENV !== \"production\" && ($ = []), typeof l == \"function\" ? (l(r.state.value[n]), u = {\n type: ie.patchFunction,\n storeId: n,\n events: $\n }) : (Re(r.state.value[n], l), u = {\n type: ie.patchObject,\n payload: l,\n storeId: n,\n events: $\n });\n const O = P = /* @__PURE__ */ Symbol();\n le().then(() => {\n P === O && (h = !0);\n }), g = !0, Y(w, u, r.state.value[n]);\n }\n const N = s ? function() {\n const { state: u } = t, O = u ? u() : {};\n this.$patch((m) => {\n W(m, O);\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 } : je\n );\n function S() {\n i.stop(), w.clear(), R.clear(), r._s.delete(n);\n }\n const D = (l, u = \"\") => {\n if ($e in l)\n return l[me] = u, l;\n const O = function() {\n ge(r);\n const m = Array.from(arguments), f = /* @__PURE__ */ new Set(), b = /* @__PURE__ */ new Set();\n function A(k) {\n f.add(k);\n }\n function C(k) {\n b.add(k);\n }\n Y(R, {\n args: m,\n name: O[me],\n store: v,\n after: A,\n onError: C\n });\n let j;\n try {\n j = l.apply(this && this.$id === n ? this : v, m);\n } catch (k) {\n throw Y(b, k), k;\n }\n return j instanceof Promise ? j.then((k) => (Y(f, k), k)).catch((k) => (Y(b, k), Promise.reject(k))) : (Y(f, j), j);\n };\n return O[$e] = !0, O[me] = u, O;\n }, E = /* @__PURE__ */ oe({\n actions: {},\n getters: {},\n state: [],\n hotState: L\n }), _ = {\n _p: r,\n // _s: scope,\n $id: n,\n $onAction: Ae.bind(null, R),\n $patch: I,\n $reset: N,\n $subscribe(l, u = {}) {\n const O = Ae(w, l, u.detached, () => m()), m = i.run(() => H(() => r.state.value[n], (f) => {\n (u.flush === \"sync\" ? g : h) && l({\n storeId: n,\n type: ie.direct,\n events: $\n }, f);\n }, W({}, c, u)));\n return O;\n },\n $dispose: S\n }, v = Ee(process.env.NODE_ENV !== \"production\" || process.env.NODE_ENV !== \"production\" && process.env.NODE_ENV !== \"test\" && Q ? W(\n {\n _hmrPayload: E,\n _customProperties: oe(/* @__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 V = (r._a && r._a.runWithContext || Qe)(() => r._e.run(() => (i = Je()).run(() => e({ action: D }))));\n for (const l in V) {\n const u = V[l];\n if (re(u) && !Ie(u) || ye(u))\n process.env.NODE_ENV !== \"production\" && o ? L.value[l] = se(V, l) : s || (T && et(u) && (re(u) ? u.value = T[l] : Re(u, T[l])), r.state.value[n][l] = u), process.env.NODE_ENV !== \"production\" && E.state.push(l);\n else if (typeof u == \"function\") {\n const O = process.env.NODE_ENV !== \"production\" && o ? u : D(u, l);\n V[l] = O, process.env.NODE_ENV !== \"production\" && (E.actions[l] = u), a.actions[l] = u;\n } else process.env.NODE_ENV !== \"production\" && Ie(u) && (E.getters[l] = s ? (\n // @ts-expect-error\n t.getters[l]\n ) : u, Q && (V._getters || // @ts-expect-error: same\n (V._getters = oe([]))).push(l));\n }\n if (W(v, V), W(Le(v), V), Object.defineProperty(v, \"$state\", {\n get: () => process.env.NODE_ENV !== \"production\" && o ? L.value : r.state.value[n],\n set: (l) => {\n if (process.env.NODE_ENV !== \"production\" && o)\n throw new Error(\"cannot set hotState\");\n I((u) => {\n W(u, l);\n });\n }\n }), process.env.NODE_ENV !== \"production\" && (v._hotUpdate = oe((l) => {\n v._hotUpdating = !0, l._hmrPayload.state.forEach((u) => {\n if (u in v.$state) {\n const O = l.$state[u], m = v.$state[u];\n typeof O == \"object\" && G(O) && G(m) ? Be(O, m) : l.$state[u] = m;\n }\n v[u] = se(l.$state, u);\n }), Object.keys(v.$state).forEach((u) => {\n u in l.$state || delete v[u];\n }), h = !1, g = !1, r.state.value[n] = se(l._hmrPayload, \"hotState\"), g = !0, le().then(() => {\n h = !0;\n });\n for (const u in l._hmrPayload.actions) {\n const O = l[u];\n v[u] = //\n D(O, u);\n }\n for (const u in l._hmrPayload.getters) {\n const O = l._hmrPayload.getters[u], m = s ? (\n // special handling of options api\n B(() => (ge(r), O.call(v, v)))\n ) : O;\n v[u] = //\n m;\n }\n Object.keys(v._hmrPayload.getters).forEach((u) => {\n u in l._hmrPayload.getters || delete v[u];\n }), Object.keys(v._hmrPayload.actions).forEach((u) => {\n u in l._hmrPayload.actions || delete v[u];\n }), v._hmrPayload = l._hmrPayload, v._getters = l._getters, v._hotUpdating = !1;\n })), process.env.NODE_ENV !== \"production\" && process.env.NODE_ENV !== \"test\" && Q) {\n const l = {\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((u) => {\n Object.defineProperty(v, u, W({ value: v[u] }, l));\n });\n }\n return r._p.forEach((l) => {\n if (process.env.NODE_ENV !== \"production\" && process.env.NODE_ENV !== \"test\" && Q) {\n const u = i.run(() => l({\n store: v,\n app: r._a,\n pinia: r,\n options: a\n }));\n Object.keys(u || {}).forEach((O) => v._customProperties.add(O)), W(v, u);\n } else\n W(v, i.run(() => l({\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}\".`), T && s && t.hydrate && t.hydrate(v.$state, T), h = !0, g = !0, v;\n}\n// @__NO_SIDE_EFFECTS__\nfunction tt(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 = we();\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\" && K && K._testing ? null : i) || (c ? te(Oe, null) : null), i && ge(i), process.env.NODE_ENV !== \"production\" && !K)\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 = K, i._s.has(n) || (o ? Ne(n, e, r, i) : De(n, r, i), process.env.NODE_ENV !== \"production\" && (s._pinia = i));\n const h = i._s.get(n);\n if (process.env.NODE_ENV !== \"production\" && a) {\n const g = \"__hot:\" + n, w = o ? Ne(g, e, r, i, !0) : De(g, W({}, r), i, !0);\n a._hotUpdate(w), delete i.state.value[g], i._s.delete(g);\n }\n if (process.env.NODE_ENV !== \"production\" && Q) {\n const g = Fe();\n if (g && g.proxy && // avoid adding stores that are just built for hot module replacement\n !a) {\n const w = g.proxy, R = \"_pStores\" in w ? w._pStores : w._pStores = {};\n R[n] = h;\n }\n }\n return h;\n }\n return s.$id = n, s;\n}\nfunction We(n) {\n const e = Le(n), t = {};\n for (const r in e) {\n const o = e[r];\n o.effect ? t[r] = // ...\n B({\n get: () => n[r],\n set(s) {\n n[r] = s;\n }\n }) : (re(o) || ye(o)) && (t[r] = // ---\n se(n, r));\n }\n return t;\n}\nconst rt = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst nt = Object.prototype.toString, ot = (n) => nt.call(n) === \"[object Object]\", Ue = () => {\n};\nfunction st(...n) {\n if (n.length !== 1) return se(...n);\n const e = n[0];\n return typeof e == \"function\" ? Me(Ge(() => ({\n get: e,\n set: Ue\n }))) : M(e);\n}\nfunction it(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 ze = (n) => n();\nfunction at(n = ze, e = {}) {\n const { initialState: t = \"active\" } = e, r = st(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: Me(r),\n pause: o,\n resume: s,\n eventFilter: i\n };\n}\nfunction be(n) {\n return Array.isArray(n) ? n : [n];\n}\nfunction ct(n) {\n return Fe();\n}\nfunction lt(n, e, t = {}) {\n const { eventFilter: r = ze, ...o } = t;\n return H(n, it(r, e), o);\n}\nfunction ut(n, e, t = {}) {\n const { eventFilter: r, initialState: o = \"active\", ...s } = t, { eventFilter: i, pause: a, resume: c, isActive: h } = at(r, { initialState: o });\n return {\n stop: lt(n, e, {\n ...s,\n eventFilter: i\n }),\n pause: a,\n resume: c,\n isActive: h\n };\n}\nconst ft = ut;\nfunction dt(n, e = !0, t) {\n ct() ? Ve(n, t) : e ? n() : le(n);\n}\nfunction pt(n, e, t) {\n return H(n, e, {\n ...t,\n immediate: !0\n });\n}\nfunction ne(n, e, t) {\n return H(n, (o, s, i) => {\n o && e(o, s, i);\n }, {\n ...t,\n once: !1\n });\n}\nconst Z = rt ? window : void 0;\nfunction ht(n) {\n var e;\n const t = q(n);\n return (e = t?.$el) !== null && e !== void 0 ? e : t;\n}\nfunction X(...n) {\n const e = (r, o, s, i) => (r.addEventListener(o, s, i), () => r.removeEventListener(o, s, i)), t = B(() => {\n const r = be(q(n[0])).filter((o) => o != null);\n return r.every((o) => typeof o != \"string\") ? r : void 0;\n });\n return pt(() => {\n var r, o;\n return [\n (r = (o = t.value) === null || o === void 0 ? void 0 : o.map((s) => ht(s))) !== null && r !== void 0 ? r : [Z].filter((s) => s != null),\n be(q(t.value ? n[1] : n[0])),\n be(Ye(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 h = ot(i) ? { ...i } : i, g = r.flatMap((w) => o.flatMap((R) => s.map(($) => e(w, R, $, h))));\n c(() => {\n g.forEach((w) => w());\n });\n }, { flush: \"post\" });\n}\nconst fe = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {}, de = \"__vueuse_ssr_handlers__\", gt = /* @__PURE__ */ vt();\nfunction vt() {\n return de in fe || (fe[de] = fe[de] || {}), fe[de];\n}\nfunction yt(n, e) {\n return gt[n] || e;\n}\nfunction mt(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 bt = {\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}, Te = \"vueuse-storage\";\nfunction St(n, e, t, r = {}) {\n var o;\n const { flush: s = \"pre\", deep: i = !0, listenToStorageChanges: a = !0, writeDefaults: c = !0, mergeDefaults: h = !1, shallow: g, window: w = Z, eventFilter: R, onError: $ = (f) => {\n console.error(f);\n }, initOnMounted: T } = r, L = (g ? xe : M)(e), P = B(() => q(n));\n if (!t) try {\n t = yt(\"getDefaultStorage\", () => Z?.localStorage)();\n } catch (f) {\n $(f);\n }\n if (!t) return L;\n const I = q(e), N = mt(I), S = (o = r.serializer) !== null && o !== void 0 ? o : bt[N], { pause: D, resume: E } = ft(L, (f) => l(f), {\n flush: s,\n deep: i,\n eventFilter: R\n });\n H(P, () => O(), { flush: s });\n let _ = !1;\n const v = (f) => {\n T && !_ || O(f);\n }, x = (f) => {\n T && !_ || m(f);\n };\n w && a && (t instanceof Storage ? X(w, \"storage\", v, { passive: !0 }) : X(w, Te, x)), T ? dt(() => {\n _ = !0, O();\n }) : O();\n function V(f, b) {\n if (w) {\n const A = {\n key: P.value,\n oldValue: f,\n newValue: b,\n storageArea: t\n };\n w.dispatchEvent(t instanceof Storage ? new StorageEvent(\"storage\", A) : new CustomEvent(Te, { detail: A }));\n }\n }\n function l(f) {\n try {\n const b = t.getItem(P.value);\n if (f == null)\n V(b, null), t.removeItem(P.value);\n else {\n const A = S.write(f);\n b !== A && (t.setItem(P.value, A), V(b, A));\n }\n } catch (b) {\n $(b);\n }\n }\n function u(f) {\n const b = f ? f.newValue : t.getItem(P.value);\n if (b == null)\n return c && I != null && t.setItem(P.value, S.write(I)), I;\n if (!f && h) {\n const A = S.read(b);\n return typeof h == \"function\" ? h(A, I) : N === \"object\" && !Array.isArray(A) ? {\n ...I,\n ...A\n } : A;\n } else return typeof b != \"string\" ? b : S.read(b);\n }\n function O(f) {\n if (!(f && f.storageArea !== t)) {\n if (f && f.key == null) {\n L.value = I;\n return;\n }\n if (!(f && f.key !== P.value)) {\n D();\n try {\n const b = S.write(L.value);\n (f === void 0 || f?.newValue !== b) && (L.value = u(f));\n } catch (b) {\n $(b);\n } finally {\n f ? le(E) : E();\n }\n }\n }\n }\n function m(f) {\n O(f.detail);\n }\n return L;\n}\nfunction wt(n, e, t = {}) {\n const { window: r = Z } = t;\n return St(n, e, r?.localStorage, t);\n}\nconst Et = {\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 Ot(n = {}) {\n const { reactive: e = !1, target: t = Z, aliasMap: r = Et, passive: o = !0, onEventFired: s = Ue } = n, i = Ee(/* @__PURE__ */ new Set()), a = {\n toJSON() {\n return {};\n },\n current: i\n }, c = e ? Ee(a) : a, h = /* @__PURE__ */ new Set(), g = /* @__PURE__ */ new Map([\n [\"Meta\", h],\n [\"Shift\", /* @__PURE__ */ new Set()],\n [\"Alt\", /* @__PURE__ */ new Set()]\n ]), w = /* @__PURE__ */ new Set();\n function R(N, S) {\n N in c && (e ? c[N] = S : c[N].value = S);\n }\n function $() {\n i.clear();\n for (const N of w) R(N, !1);\n }\n function T(N, S, D) {\n if (!(!N || typeof S.getModifierState != \"function\")) {\n for (const [E, _] of g) if (S.getModifierState(E)) {\n D.forEach((v) => _.add(v));\n break;\n }\n }\n }\n function L(N, S) {\n if (N) return;\n const D = `${S[0].toUpperCase()}${S.slice(1)}`, E = g.get(D);\n if (![\"shift\", \"alt\"].includes(S) || !E) return;\n const _ = Array.from(E), v = _.indexOf(S);\n _.forEach((x, V) => {\n V >= v && (i.delete(x), R(x, !1));\n }), E.clear();\n }\n function P(N, S) {\n var D, E;\n const _ = (D = N.key) === null || D === void 0 ? void 0 : D.toLowerCase(), v = [(E = N.code) === null || E === void 0 ? void 0 : E.toLowerCase(), _].filter(Boolean);\n if (_ !== \"\") {\n _ && (S ? i.add(_) : i.delete(_));\n for (const x of v)\n w.add(x), R(x, S);\n T(S, N, [...i, ...v]), L(S, _), _ === \"meta\" && !S && (h.forEach((x) => {\n i.delete(x), R(x, !1);\n }), h.clear());\n }\n }\n X(t, \"keydown\", (N) => (P(N, !0), s(N)), { passive: o }), X(t, \"keyup\", (N) => (P(N, !1), s(N)), { passive: o }), X(\"blur\", $, { passive: o }), X(\"focus\", $, { passive: o });\n const I = new Proxy(c, { get(N, S, D) {\n if (typeof S != \"string\") return Reflect.get(N, S, D);\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] = B(() => _.map((v) => q(I[v])).every(Boolean));\n } else c[S] = xe(!1);\n const E = Reflect.get(N, S, D);\n return e ? q(E) : E;\n } });\n return I;\n}\nfunction Se() {\n return typeof crypto < \"u\" && crypto.randomUUID ? crypto.randomUUID() : `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n}\nfunction pe(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 Rt(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 ue = /* @__PURE__ */ tt(\"hst-operation-log\", () => {\n const n = M({\n maxOperations: 100,\n enableCrossTabSync: !0,\n autoSyncInterval: 3e4,\n enablePersistence: !1,\n persistenceKeyPrefix: \"stonecrop-ops\"\n }), e = M([]), t = M(-1), r = M(Se()), o = M(!1), s = M([]), i = M(null), a = B(() => t.value < 0 ? !1 : e.value[t.value]?.reversible ?? !1), c = B(() => t.value < e.value.length - 1), h = B(() => {\n let d = 0;\n for (let p = t.value; p >= 0 && e.value[p]?.reversible; p--)\n d++;\n return d;\n }), g = B(() => e.value.length - 1 - t.value), w = B(() => ({\n canUndo: a.value,\n canRedo: c.value,\n undoCount: h.value,\n redoCount: g.value,\n currentIndex: t.value\n }));\n function R(d) {\n n.value = { ...n.value, ...d }, n.value.enablePersistence && (C(), k()), n.value.enableCrossTabSync && u();\n }\n function $(d, p = \"user\") {\n const y = {\n ...d,\n id: Se(),\n timestamp: /* @__PURE__ */ new Date(),\n source: p,\n userId: n.value.userId\n };\n if (n.value.operationFilter && !n.value.operationFilter(y))\n return y.id;\n if (o.value)\n return s.value.push(y), y.id;\n if (t.value < e.value.length - 1 && (e.value = e.value.slice(0, t.value + 1)), e.value.push(y), t.value++, n.value.maxOperations && e.value.length > n.value.maxOperations) {\n const F = e.value.length - n.value.maxOperations;\n e.value = e.value.slice(F), t.value -= F;\n }\n return n.value.enableCrossTabSync && O(y), y.id;\n }\n function T() {\n o.value = !0, s.value = [], i.value = Se();\n }\n function L(d) {\n if (!o.value || s.value.length === 0)\n return o.value = !1, s.value = [], i.value = null, null;\n const p = i.value, y = s.value.every((U) => U.reversible), F = {\n id: p,\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: y,\n irreversibleReason: y ? void 0 : \"Contains irreversible operations\",\n childOperationIds: s.value.map((U) => U.id),\n metadata: { description: d }\n };\n s.value.forEach((U) => {\n U.parentOperationId = p;\n }), e.value.push(...s.value, F), t.value = e.value.length - 1, n.value.enableCrossTabSync && m(s.value, F);\n const z = p;\n return o.value = !1, s.value = [], i.value = null, z;\n }\n function P() {\n o.value = !1, s.value = [], i.value = null;\n }\n function I(d) {\n if (!a.value) return !1;\n const p = e.value[t.value];\n if (!p.reversible)\n return typeof console < \"u\" && p.irreversibleReason && console.warn(\"Cannot undo irreversible operation:\", p.irreversibleReason), !1;\n try {\n if (p.type === \"batch\" && p.childOperationIds)\n for (let y = p.childOperationIds.length - 1; y >= 0; y--) {\n const F = p.childOperationIds[y], z = e.value.find((U) => U.id === F);\n z && S(z, d);\n }\n else\n S(p, d);\n return t.value--, n.value.enableCrossTabSync && f(p), !0;\n } catch (y) {\n return typeof console < \"u\" && console.error(\"Undo failed:\", y), !1;\n }\n }\n function N(d) {\n if (!c.value) return !1;\n const p = e.value[t.value + 1];\n try {\n if (p.type === \"batch\" && p.childOperationIds)\n for (const y of p.childOperationIds) {\n const F = e.value.find((z) => z.id === y);\n F && D(F, d);\n }\n else\n D(p, d);\n return t.value++, n.value.enableCrossTabSync && b(p), !0;\n } catch (y) {\n return typeof console < \"u\" && console.error(\"Redo failed:\", y), !1;\n }\n }\n function S(d, p) {\n (d.type === \"set\" || d.type === \"delete\") && p && typeof p.set == \"function\" && p.set(d.path, d.beforeValue, \"undo\");\n }\n function D(d, p) {\n (d.type === \"set\" || d.type === \"delete\") && p && typeof p.set == \"function\" && p.set(d.path, d.afterValue, \"redo\");\n }\n function E() {\n const d = e.value.filter((y) => y.reversible).length, p = e.value.map((y) => y.timestamp);\n return {\n operations: [...e.value],\n currentIndex: t.value,\n totalOperations: e.value.length,\n reversibleOperations: d,\n irreversibleOperations: e.value.length - d,\n oldestOperation: p.length > 0 ? new Date(Math.min(...p.map((y) => y.getTime()))) : void 0,\n newestOperation: p.length > 0 ? new Date(Math.max(...p.map((y) => y.getTime()))) : void 0\n };\n }\n function _() {\n e.value = [], t.value = -1;\n }\n function v(d, p) {\n return e.value.filter((y) => y.doctype === d && (p === void 0 || y.recordId === p));\n }\n function x(d, p) {\n const y = e.value.find((F) => F.id === d);\n y && (y.reversible = !1, y.irreversibleReason = p);\n }\n function V(d, p, y, F = \"success\", z) {\n const U = {\n type: \"action\",\n path: y && y.length > 0 ? `${d}.${y[0]}` : d,\n fieldname: \"\",\n beforeValue: null,\n afterValue: null,\n doctype: d,\n recordId: y && y.length > 0 ? y[0] : void 0,\n reversible: !1,\n // Actions are typically not reversible\n actionName: p,\n actionRecordIds: y,\n actionResult: F,\n actionError: z\n };\n return $(U);\n }\n let l = null;\n function u() {\n typeof window > \"u\" || !window.BroadcastChannel || (l = new BroadcastChannel(\"stonecrop-operation-log\"), l.addEventListener(\"message\", (d) => {\n const p = d.data;\n if (!p || typeof p != \"object\") return;\n const y = Rt(p);\n y.clientId !== r.value && (y.type === \"operation\" && y.operation ? (e.value.push({ ...y.operation, source: \"sync\" }), t.value = e.value.length - 1) : y.type === \"operation\" && y.operations && (e.value.push(...y.operations.map((F) => ({ ...F, source: \"sync\" }))), t.value = e.value.length - 1));\n }));\n }\n function O(d) {\n if (!l) return;\n const p = {\n type: \"operation\",\n operation: d,\n clientId: r.value,\n timestamp: /* @__PURE__ */ new Date()\n };\n l.postMessage(pe(p));\n }\n function m(d, p) {\n if (!l) return;\n const y = {\n type: \"operation\",\n operations: [...d, p],\n clientId: r.value,\n timestamp: /* @__PURE__ */ new Date()\n };\n l.postMessage(pe(y));\n }\n function f(d) {\n if (!l) return;\n const p = {\n type: \"undo\",\n operation: d,\n clientId: r.value,\n timestamp: /* @__PURE__ */ new Date()\n };\n l.postMessage(pe(p));\n }\n function b(d) {\n if (!l) return;\n const p = {\n type: \"redo\",\n operation: d,\n clientId: r.value,\n timestamp: /* @__PURE__ */ new Date()\n };\n l.postMessage(pe(p));\n }\n const A = wt(\"stonecrop-ops-operations\", null, {\n serializer: {\n read: (d) => {\n try {\n return JSON.parse(d);\n } catch {\n return null;\n }\n },\n write: (d) => d ? JSON.stringify(d) : \"\"\n }\n });\n function C() {\n if (!(typeof window > \"u\"))\n try {\n const d = A.value;\n d && Array.isArray(d.operations) && (e.value = d.operations.map((p) => ({\n ...p,\n timestamp: new Date(p.timestamp)\n })), t.value = d.currentIndex ?? -1);\n } catch (d) {\n typeof console < \"u\" && console.error(\"Failed to load operations from persistence:\", d);\n }\n }\n function j() {\n if (!(typeof window > \"u\"))\n try {\n A.value = {\n operations: e.value.map((d) => ({\n ...d,\n timestamp: d.timestamp.toISOString()\n })),\n currentIndex: t.value\n };\n } catch (d) {\n typeof console < \"u\" && console.error(\"Failed to save operations to persistence:\", d);\n }\n }\n function k() {\n H(\n [e, t],\n () => {\n n.value.enablePersistence && j();\n },\n { deep: !0 }\n );\n }\n return {\n // State\n operations: e,\n currentIndex: t,\n config: n,\n clientId: r,\n undoRedoState: w,\n // Computed\n canUndo: a,\n canRedo: c,\n undoCount: h,\n redoCount: g,\n // Methods\n configure: R,\n addOperation: $,\n startBatch: T,\n commitBatch: L,\n cancelBatch: P,\n undo: I,\n redo: N,\n clear: _,\n getOperationsFor: v,\n getSnapshot: E,\n markIrreversible: x,\n logAction: V\n };\n});\nclass ae {\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 (ae._root)\n return ae._root;\n ae._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, h = !1, g;\n const w = this.getFieldRollback(r, o), R = t.enableRollback ?? w ?? this.options.enableRollback;\n R && e.store && (g = this.captureSnapshot(e));\n for (const P of s)\n try {\n const I = await this.executeAction(P, e, t.timeout);\n if (a.push(I), !I.success) {\n c = !0;\n break;\n }\n } catch (I) {\n const S = {\n success: !1,\n error: I instanceof Error ? I : new Error(String(I)),\n executionTime: 0,\n action: P\n };\n a.push(S), c = !0;\n break;\n }\n if (R && c && g && e.store)\n try {\n this.restoreSnapshot(e, g), h = !0;\n } catch (P) {\n console.error(\"[FieldTriggers] Rollback failed:\", P);\n }\n const $ = performance.now() - i, T = a.filter((P) => !P.success);\n if (T.length > 0 && this.options.errorHandler)\n for (const P of T)\n try {\n this.options.errorHandler(P.error, e, P.action);\n } catch (I) {\n console.error(\"[FieldTriggers] Error in global error handler:\", I);\n }\n return {\n path: e.path,\n actionResults: a,\n totalExecutionTime: $,\n allSucceeded: a.every((P) => P.success),\n stoppedOnError: c,\n rolledBack: h,\n snapshot: this.options.debug && R ? 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 h = await this.executeTransitionAction(c, e, t.timeout);\n if (i.push(h), !h.success)\n break;\n } catch (h) {\n const w = {\n success: !1,\n error: h instanceof Error ? h : new Error(String(h)),\n executionTime: 0,\n action: c,\n transition: o\n };\n i.push(w);\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 (h) {\n console.error(\"[FieldTriggers] Error in global error handler:\", h);\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 J(n) {\n return new ae(n);\n}\nfunction Tt(n, e) {\n J().registerAction(n, e);\n}\nfunction Ct(n, e) {\n J().registerTransitionAction(n, e);\n}\nfunction kt(n, e, t) {\n J().setFieldRollback(n, e, t);\n}\nasync function Ft(n, e, t) {\n const r = J(), 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 Lt(n, e) {\n if (n)\n try {\n ue().markIrreversible(n, e);\n } catch {\n }\n}\nfunction Ce() {\n try {\n return ue();\n } catch {\n return null;\n }\n}\nclass ee {\n static instance;\n /**\n * Gets the singleton instance of HST\n * @returns The HST singleton instance\n */\n static getInstance() {\n return ee.instance || (ee.instance = new ee()), ee.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 ve {\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 = ee.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 h = String(a);\n return i.set(h, 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 ve(r, s, t, this.rootNode, this.parentDoctype) : new ve(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 = Ce();\n if (i && typeof i.addOperation == \"function\") {\n const a = o.split(\".\"), c = this.doctype === \"StonecropStore\" && a.length >= 1 ? a[0] : this.doctype, h = a.length >= 2 ? a[1] : void 0, g = a.slice(2).join(\".\") || a[a.length - 1], R = t === void 0 && s !== void 0 ? \"delete\" : \"set\";\n i.addOperation(\n {\n type: R,\n path: o,\n fieldname: g,\n beforeValue: s,\n afterValue: t,\n doctype: c,\n recordId: h,\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 = J(), 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 = Ce();\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 = J(), 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 h = {\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(h);\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 h = c.constructor.name;\n i = typeof h == \"string\" ? h : 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 parsePath(e) {\n return e ? e.split(\".\").filter((t) => t.length > 0) : [];\n }\n}\nfunction Nt(n, e, t) {\n return new ve(n, e, \"\", null, t);\n}\nclass He {\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 = ue(), 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 = Nt(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\", h;\n try {\n s && s.length > 0 && s.forEach((g) => {\n try {\n new Function(\"args\", g)(r);\n } catch (w) {\n throw c = \"failure\", h = w instanceof Error ? w.message : \"Unknown error\", w;\n }\n });\n } catch {\n } finally {\n a.logAction(e.doctype, t, i, c, h);\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 Vt(n) {\n n || (n = {});\n const e = n.registry || te(\"$registry\"), t = te(\"$stonecrop\"), r = M(), o = M(), s = M({}), i = M(), a = M(), c = M([]), h = M(-1), g = B(() => r.value?.getOperationLogStore().canUndo ?? !1), w = B(() => r.value?.getOperationLogStore().canRedo ?? !1), R = B(() => r.value?.getOperationLogStore().undoCount ?? 0), $ = B(() => r.value?.getOperationLogStore().redoCount ?? 0), T = B(\n () => r.value?.getOperationLogStore().undoRedoState ?? {\n canUndo: !1,\n canRedo: !1,\n undoCount: 0,\n redoCount: 0,\n currentIndex: -1\n }\n ), L = (m) => r.value?.getOperationLogStore().undo(m) ?? !1, P = (m) => r.value?.getOperationLogStore().redo(m) ?? !1, I = () => {\n r.value?.getOperationLogStore().startBatch();\n }, N = (m) => r.value?.getOperationLogStore().commitBatch(m) ?? null, S = () => {\n r.value?.getOperationLogStore().cancelBatch();\n }, D = () => {\n r.value?.getOperationLogStore().clear();\n }, E = (m, f) => r.value?.getOperationLogStore().getOperationsFor(m, f) ?? [], _ = () => r.value?.getOperationLogStore().getSnapshot() ?? {\n operations: [],\n currentIndex: -1,\n totalOperations: 0,\n reversibleOperations: 0,\n irreversibleOperations: 0\n }, v = (m, f) => {\n r.value?.getOperationLogStore().markIrreversible(m, f);\n }, x = (m, f, b, A = \"success\", C) => r.value?.getOperationLogStore().logAction(m, f, b, A, C) ?? \"\", V = (m) => {\n r.value?.getOperationLogStore().configure(m);\n };\n Ve(async () => {\n if (e) {\n r.value = t || new He(e);\n try {\n const m = r.value.getOperationLogStore(), f = We(m);\n c.value = f.operations.value, h.value = f.currentIndex.value, H(\n () => f.operations.value,\n (b) => {\n c.value = b;\n }\n ), H(\n () => f.currentIndex.value,\n (b) => {\n h.value = b;\n }\n );\n } catch {\n }\n if (!n.doctype && e.router) {\n const m = e.router.currentRoute.value;\n if (!m.path) return;\n const f = m.path.split(\"/\").filter((A) => A.length > 0), b = f[1]?.toLowerCase();\n if (f.length > 0) {\n const A = {\n path: m.path,\n segments: f\n }, C = await e.getMeta?.(A);\n if (C) {\n if (e.addDoctype(C), r.value.setup(C), i.value = C, a.value = b, o.value = r.value.getStore(), b && b !== \"new\") {\n const j = r.value.getRecordById(C, b);\n if (j)\n s.value = j.get(\"\") || {};\n else\n try {\n await r.value.getRecord(C, b);\n const k = r.value.getRecordById(C, b);\n k && (s.value = k.get(\"\") || {});\n } catch {\n s.value = he(C);\n }\n } else\n s.value = he(C);\n o.value && ke(C, b || \"new\", s, o.value), r.value.runAction(C, \"load\", b ? [b] : void 0);\n }\n }\n }\n if (n.doctype) {\n o.value = r.value.getStore();\n const m = n.doctype, f = n.recordId;\n if (f && f !== \"new\") {\n const b = r.value.getRecordById(m, f);\n if (b)\n s.value = b.get(\"\") || {};\n else\n try {\n await r.value.getRecord(m, f);\n const A = r.value.getRecordById(m, f);\n A && (s.value = A.get(\"\") || {});\n } catch {\n s.value = he(m);\n }\n } else\n s.value = he(m);\n o.value && ke(m, f || \"new\", s, o.value);\n }\n }\n });\n const l = (m, f) => {\n const b = n.doctype || i.value;\n if (!b) return \"\";\n const A = f || n.recordId || a.value || \"new\";\n return `${b.slug}.${A}.${m}`;\n }, u = (m) => {\n const f = n.doctype || i.value;\n if (!(!o.value || !r.value || !f))\n try {\n const b = m.path.split(\".\");\n if (b.length >= 2) {\n const j = b[0], k = b[1];\n if (o.value.has(`${j}.${k}`) || r.value.addRecord(f, k, { ...s.value }), b.length > 3) {\n const d = `${j}.${k}`, p = b.slice(2);\n let y = d;\n for (let F = 0; F < p.length - 1; F++)\n if (y += `.${p[F]}`, !o.value.has(y)) {\n const z = p[F + 1], U = !isNaN(Number(z));\n o.value.set(y, U ? [] : {});\n }\n }\n }\n o.value.set(m.path, m.value);\n const A = m.fieldname.split(\".\"), C = { ...s.value };\n A.length === 1 ? C[A[0]] = m.value : Pt(C, A, m.value), s.value = C;\n } catch {\n }\n };\n (n.doctype || e?.router) && (_e(\"hstPathProvider\", l), _e(\"hstChangeHandler\", u));\n const O = {\n operations: c,\n currentIndex: h,\n undoRedoState: T,\n canUndo: g,\n canRedo: w,\n undoCount: R,\n redoCount: $,\n undo: L,\n redo: P,\n startBatch: I,\n commitBatch: N,\n cancelBatch: S,\n clear: D,\n getOperationsFor: E,\n getSnapshot: _,\n markIrreversible: v,\n logAction: x,\n configure: V\n };\n return n.doctype ? {\n stonecrop: r,\n operationLog: O,\n provideHSTPath: l,\n handleHSTChange: u,\n hstStore: o,\n formData: s\n } : !n.doctype && e?.router ? {\n stonecrop: r,\n operationLog: O,\n provideHSTPath: l,\n handleHSTChange: u,\n hstStore: o,\n formData: s\n } : {\n stonecrop: r,\n operationLog: O\n };\n}\nfunction he(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 ke(n, e, t, r) {\n H(\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 Pt(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 qe(n) {\n const t = te(\"$operationLogStore\", void 0) || ue();\n n && t.configure(n);\n const { operations: r, currentIndex: o, undoRedoState: s, canUndo: i, canRedo: a, undoCount: c, redoCount: h } = We(t);\n function g(E) {\n return t.undo(E);\n }\n function w(E) {\n return t.redo(E);\n }\n function R() {\n t.startBatch();\n }\n function $(E) {\n return t.commitBatch(E);\n }\n function T() {\n t.cancelBatch();\n }\n function L() {\n t.clear();\n }\n function P(E, _) {\n return t.getOperationsFor(E, _);\n }\n function I() {\n return t.getSnapshot();\n }\n function N(E, _) {\n t.markIrreversible(E, _);\n }\n function S(E, _, v, x = \"success\", V) {\n return t.logAction(E, _, v, x, V);\n }\n function D(E) {\n t.configure(E);\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: h,\n // Methods\n undo: g,\n redo: w,\n startBatch: R,\n commitBatch: $,\n cancelBatch: T,\n clear: L,\n getOperationsFor: P,\n getSnapshot: I,\n markIrreversible: N,\n logAction: S,\n configure: D\n };\n}\nfunction Mt(n, e = !0) {\n if (!e) return;\n const { undo: t, redo: r, canUndo: o, canRedo: s } = qe(), i = Ot();\n ne(i[\"Ctrl+Z\"], () => {\n o.value && t(n);\n }), ne(i[\"Meta+Z\"], () => {\n o.value && t(n);\n }), ne(i[\"Ctrl+Shift+Z\"], () => {\n s.value && r(n);\n }), ne(i[\"Meta+Shift+Z\"], () => {\n s.value && r(n);\n }), ne(i[\"Ctrl+Y\"], () => {\n s.value && r(n);\n });\n}\nasync function xt(n, e) {\n const { startBatch: t, commitBatch: r, cancelBatch: o } = qe();\n t();\n try {\n return await n(), r(e);\n } catch (s) {\n throw o(), s;\n }\n}\nclass Bt {\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 ce {\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 (ce._root)\n return ce._root;\n ce._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 = J();\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 // 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 _t(n, e, t) {\n await le();\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 ce(o, e?.getMeta);\n n.provide(\"$registry\", s), n.config.globalProperties.$registry = s;\n const i = new He(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 = ue(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 && _t(s, i, e.onRouterInitialized);\n }\n};\nvar At = /* @__PURE__ */ ((n) => (n.ERROR = \"error\", n.WARNING = \"warning\", n.INFO = \"info\", n))(At || {});\nclass $t {\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, h = 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: h\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 [h, g] of Object.entries(c.on))\n if (typeof g == \"string\")\n s.add(g);\n else if (g && typeof g == \"object\") {\n const w = \"target\" in g ? g.target : void 0;\n typeof w == \"string\" ? s.add(w) : Array.isArray(w) && w.forEach((R) => {\n typeof R == \"string\" && s.add(R);\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 = J();\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 It(n, e) {\n return new $t({\n registry: n,\n ...e\n });\n}\nfunction Wt(n, e, t, r, o) {\n return It(t).validate(n, e, r, o);\n}\nexport {\n Bt as DoctypeMeta,\n ee as HST,\n ce as Registry,\n $t as SchemaValidator,\n He as Stonecrop,\n At as ValidationSeverity,\n Nt as createHST,\n It as createValidator,\n jt as default,\n J as getGlobalTriggerEngine,\n Lt as markOperationIrreversible,\n Tt as registerGlobalAction,\n Ct as registerTransitionAction,\n kt as setFieldRollback,\n Ft as triggerTransition,\n qe as useOperationLog,\n ue as useOperationLogStore,\n Vt as useStonecrop,\n Mt as useUndoRedoShortcuts,\n Wt as validateSchema,\n xt as withBatch\n};\n//# sourceMappingURL=stonecrop.js.map\n","import { defineComponent as C, mergeModels as z, useModel as q, createElementBlock as b, openBlock as g, createElementVNode as c, withDirectives as E, toDisplayString as M, vModelCheckbox as Oe, vShow as U, resolveComponent as Pe, createBlock as le, withCtx as Fe, useTemplateRef as xe, vModelText as H, watch as P, getCurrentScope as De, onScopeDispose as Ee, toRef as Re, readonly as Me, ref as x, customRef as He, computed as T, watchEffect as ae, toValue as w, unref as S, shallowRef as G, reactive as Be, normalizeClass as X, withKeys as F, Fragment as j, renderList as Y, withModifiers as Ie, onMounted as se, onBeforeUnmount as qe, getCurrentInstance as Ue, nextTick as We, resolveDynamicComponent as Ne, mergeProps as je, renderSlot as Ye, createTextVNode as Ae, createCommentVNode as re, createVNode as Ke } from \"vue\";\nimport './assets/index.css';const ze = { class: \"aform_form-element\" }, Ge = [\"for\"], Je = { class: \"aform_checkbox-container aform_input-field\" }, Qe = [\"id\", \"readonly\", \"required\"], Xe = [\"innerHTML\"], Ze = /* @__PURE__ */ C({\n __name: \"ACheckbox\",\n props: /* @__PURE__ */ z({\n schema: {},\n label: {},\n mask: {},\n required: { type: Boolean },\n readOnly: { type: Boolean },\n uuid: {},\n validation: { default: () => ({ errorMessage: \"&nbsp;\" }) }\n }, {\n modelValue: {},\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = q(e, \"modelValue\");\n return (n, o) => (g(), b(\"div\", ze, [\n c(\"label\", {\n class: \"aform_field-label\",\n for: e.uuid\n }, M(e.label), 9, Ge),\n c(\"span\", Je, [\n E(c(\"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, Qe), [\n [Oe, t.value]\n ])\n ]),\n E(c(\"p\", {\n class: \"aform_error\",\n innerHTML: e.validation.errorMessage\n }, null, 8, Xe), [\n [U, e.validation.errorMessage]\n ])\n ]));\n }\n}), L = (e, t) => {\n const n = e.__vccOpts || e;\n for (const [o, a] of t)\n n[o] = a;\n return n;\n}, et = /* @__PURE__ */ L(Ze, [[\"__scopeId\", \"data-v-f13fd4d6\"]]), tt = /* @__PURE__ */ C({\n __name: \"AComboBox\",\n props: [\"event\", \"cellData\", \"tableID\"],\n setup(e) {\n return (t, n) => {\n const o = Pe(\"ATableModal\");\n return g(), le(o, {\n event: e.event,\n \"cell-data\": e.cellData,\n class: \"amodal\"\n }, {\n default: Fe(() => [...n[0] || (n[0] = [\n c(\"div\", null, [\n c(\"input\", { type: \"text\" }),\n c(\"input\", { type: \"text\" }),\n c(\"input\", { type: \"text\" })\n ], -1)\n ])]),\n _: 1\n }, 8, [\"event\", \"cell-data\"]);\n };\n }\n}), nt = [\"id\", \"disabled\", \"required\"], ot = [\"for\"], lt = [\"innerHTML\"], at = /* @__PURE__ */ C({\n __name: \"ADate\",\n props: /* @__PURE__ */ z({\n schema: {},\n label: { default: \"Date\" },\n mask: {},\n required: { type: Boolean },\n readOnly: { type: Boolean },\n uuid: {},\n validation: { default: () => ({ errorMessage: \"&nbsp;\" }) }\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 = q(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 = xe(\"date\"), o = () => {\n n.value && \"showPicker\" in HTMLInputElement.prototype && n.value.showPicker();\n };\n return (a, s) => (g(), b(\"div\", null, [\n E(c(\"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, nt), [\n [H, t.value]\n ]),\n c(\"label\", { for: e.uuid }, M(e.label), 9, ot),\n E(c(\"p\", {\n innerHTML: e.validation.errorMessage\n }, null, 8, lt), [\n [U, e.validation.errorMessage]\n ])\n ]));\n }\n}), st = /* @__PURE__ */ L(at, [[\"__scopeId\", \"data-v-a15ed922\"]]);\nfunction Te(e, t) {\n return De() ? (Ee(e, t), !0) : !1;\n}\n// @__NO_SIDE_EFFECTS__\nfunction fe() {\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 Te(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 Ce = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst rt = Object.prototype.toString, it = (e) => rt.call(e) === \"[object Object]\", N = () => {\n}, ut = (e, t) => Object.prototype.hasOwnProperty.call(e, t);\nfunction ct(...e) {\n if (e.length !== 1) return Re(...e);\n const t = e[0];\n return typeof t == \"function\" ? Me(He(() => ({\n get: t,\n set: N\n }))) : x(t);\n}\nfunction Z(e) {\n return Array.isArray(e) ? e : [e];\n}\nfunction dt(e, t, n) {\n return P(e, t, {\n ...n,\n immediate: !0\n });\n}\nconst $e = Ce ? window : void 0, ft = Ce ? window.document : void 0;\nfunction R(e) {\n var t;\n const n = w(e);\n return (t = n?.$el) !== null && t !== void 0 ? t : n;\n}\nfunction ee(...e) {\n const t = (o, a, s, l) => (o.addEventListener(a, s, l), () => o.removeEventListener(a, s, l)), n = T(() => {\n const o = Z(w(e[0])).filter((a) => a != null);\n return o.every((a) => typeof a != \"string\") ? o : void 0;\n });\n return dt(() => {\n var o, a;\n return [\n (o = (a = n.value) === null || a === void 0 ? void 0 : a.map((s) => R(s))) !== null && o !== void 0 ? o : [$e].filter((s) => s != null),\n Z(w(n.value ? e[1] : e[0])),\n Z(S(n.value ? e[2] : e[1])),\n w(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 = it(l) ? { ...l } : l, v = o.flatMap((m) => a.flatMap((d) => s.map((p) => t(m, d, p, u))));\n i(() => {\n v.forEach((m) => m());\n });\n }, { flush: \"post\" });\n}\nfunction me(e, t, n = {}) {\n const { window: o = $e, ignore: a = [], capture: s = !0, detectIframe: l = !1, controls: r = !1 } = n;\n if (!o) return r ? {\n stop: N,\n cancel: N,\n trigger: N\n } : N;\n let i = !0;\n const u = (f) => w(a).some((h) => {\n if (typeof h == \"string\") return Array.from(o.document.querySelectorAll(h)).some((D) => D === f.target || f.composedPath().includes(D));\n {\n const D = R(h);\n return D && (f.target === D || f.composedPath().includes(D));\n }\n });\n function v(f) {\n const h = w(f);\n return h && h.$.subTree.shapeFlag === 16;\n }\n function m(f, h) {\n const D = w(f), y = D.$.subTree && D.$.subTree.children;\n return y == null || !Array.isArray(y) ? !1 : y.some((k) => k.el === h.target || h.composedPath().includes(k.el));\n }\n const d = (f) => {\n const h = R(e);\n if (f.target != null && !(!(h instanceof Element) && v(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 I = [\n ee(o, \"click\", (f) => {\n p || (p = !0, setTimeout(() => {\n p = !1;\n }, 0), d(f));\n }, {\n passive: !0,\n capture: s\n }),\n ee(o, \"pointerdown\", (f) => {\n const h = R(e);\n i = !u(f) && !!(h && !f.composedPath().includes(h));\n }, { passive: !0 }),\n l && ee(o, \"blur\", (f) => {\n setTimeout(() => {\n var h;\n const D = R(e);\n ((h = o.document.activeElement) === null || h === void 0 ? void 0 : h.tagName) === \"IFRAME\" && !D?.contains(o.document.activeElement) && t(f);\n }, 0);\n }, { passive: !0 })\n ].filter(Boolean), A = () => I.forEach((f) => f());\n return r ? {\n stop: A,\n cancel: () => {\n i = !1;\n },\n trigger: (f) => {\n i = !0, d(f), i = !1;\n }\n } : A;\n}\nconst mt = {\n multiple: !0,\n accept: \"*\",\n reset: !1,\n directory: !1\n};\nfunction vt(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 pt(e = {}) {\n const { document: t = ft } = e, n = x(vt(e.initialFiles)), { on: o, trigger: a } = /* @__PURE__ */ fe(), { on: s, trigger: l } = /* @__PURE__ */ fe(), r = T(() => {\n var m;\n const d = (m = R(e.input)) !== null && m !== void 0 ? m : t ? t.createElement(\"input\") : void 0;\n return d && (d.type = \"file\", d.onchange = (p) => {\n n.value = p.target.files, a(n.value);\n }, d.oncancel = () => {\n l();\n }), d;\n }), i = () => {\n n.value = null, r.value && r.value.value && (r.value.value = \"\", a(null));\n }, u = (m) => {\n const d = r.value;\n d && (d.multiple = w(m.multiple), d.accept = w(m.accept), d.webkitdirectory = w(m.directory), ut(m, \"capture\") && (d.capture = w(m.capture)));\n }, v = (m) => {\n const d = r.value;\n if (!d) return;\n const p = {\n ...mt,\n ...e,\n ...m\n };\n u(p), w(p.reset) && i(), d.click();\n };\n return ae(() => {\n u(e);\n }), {\n files: Me(n),\n open: v,\n reset: i,\n onCancel: s,\n onChange: o\n };\n}\nfunction te(e) {\n return typeof Window < \"u\" && e instanceof Window ? e.document.documentElement : typeof Document < \"u\" && e instanceof Document ? e.documentElement : e;\n}\nconst ne = /* @__PURE__ */ new WeakMap();\nfunction ht(e, t = !1) {\n const n = G(t);\n let o = \"\";\n P(ct(e), (l) => {\n const r = te(w(l));\n if (r) {\n const i = r;\n if (ne.get(i) || ne.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 = te(w(e));\n !l || n.value || (l.style.overflow = \"hidden\", n.value = !0);\n }, s = () => {\n const l = te(w(e));\n !l || !n.value || (l.style.overflow = o, ne.delete(l), n.value = !1);\n };\n return Te(s), T({\n get() {\n return n.value;\n },\n set(l) {\n l ? a() : s();\n }\n });\n}\nconst oe = /* @__PURE__ */ new WeakMap(), gt = {\n mounted(e, t) {\n const n = !t.modifiers.bubble;\n let o;\n if (typeof t.value == \"function\") o = me(e, t.value, { capture: n });\n else {\n const [a, s] = t.value;\n o = me(e, a, Object.assign({ capture: n }, s));\n }\n oe.set(e, o);\n },\n unmounted(e) {\n const t = oe.get(e);\n t && typeof t == \"function\" ? t() : t?.stop(), oe.delete(e);\n }\n};\nfunction yt() {\n let e = !1;\n const t = G(!1);\n return (n, o) => {\n if (t.value = o.value, e) return;\n e = !0;\n const a = ht(n, o.value);\n P(t, (s) => a.value = s);\n };\n}\nyt();\nconst bt = { class: \"input-wrapper\" }, wt = {\n id: \"autocomplete-results\",\n class: \"autocomplete-results\"\n}, kt = {\n key: 0,\n class: \"loading autocomplete-result\"\n}, xt = [\"onClick\"], Dt = /* @__PURE__ */ C({\n __name: \"ADropdown\",\n props: /* @__PURE__ */ z({\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 = q(e, \"modelValue\"), n = Be({\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 d = await e.filterFunction(t.value || \"\");\n n.results = d || [];\n } catch {\n n.results = [];\n } finally {\n e.isAsync && (n.loading = !1);\n }\n } else\n i();\n }, s = (d) => {\n t.value = d, r(d);\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 = (d) => {\n n.activeItemIndex = null, n.open = !1, e.items?.includes(d || t.value || \"\") || (t.value = \"\");\n }, i = () => {\n t.value ? n.results = e.items?.filter((d) => d.toLowerCase().includes((t.value ?? \"\").toLowerCase())) : n.results = e.items;\n }, u = () => {\n const d = n.results?.length || 0;\n if (n.activeItemIndex != null) {\n const p = isNaN(n.activeItemIndex) ? 0 : n.activeItemIndex;\n n.activeItemIndex = (p + 1) % d;\n } else\n n.activeItemIndex = 0;\n }, v = () => {\n const d = 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 = d - 1;\n }, m = () => {\n if (n.results) {\n const d = n.activeItemIndex || 0, p = n.results[d];\n s(p);\n }\n n.activeItemIndex = 0;\n };\n return (d, p) => E((g(), b(\"div\", {\n class: X([\"autocomplete\", { isOpen: n.open }])\n }, [\n c(\"div\", bt, [\n E(c(\"input\", {\n \"onUpdate:modelValue\": p[0] || (p[0] = (I) => t.value = I),\n type: \"text\",\n onInput: a,\n onFocus: l,\n onKeydown: [\n F(u, [\"down\"]),\n F(v, [\"up\"]),\n F(m, [\"enter\"]),\n F(o, [\"esc\"]),\n F(o, [\"tab\"])\n ]\n }, null, 544), [\n [H, t.value]\n ]),\n E(c(\"ul\", wt, [\n n.loading ? (g(), b(\"li\", kt, \"Loading results...\")) : (g(!0), b(j, { key: 1 }, Y(n.results, (I, A) => (g(), b(\"li\", {\n key: I,\n class: X([\"autocomplete-result\", { \"is-active\": A === n.activeItemIndex }]),\n onClick: Ie((f) => s(I), [\"stop\"])\n }, M(I), 11, xt))), 128))\n ], 512), [\n [U, n.open]\n ]),\n c(\"label\", null, M(e.label), 1)\n ])\n ], 2)), [\n [S(gt), o]\n ]);\n }\n}), Et = /* @__PURE__ */ L(Dt, [[\"__scopeId\", \"data-v-31a6db8c\"]]);\nfunction Se(e, t) {\n return De() ? (Ee(e, t), !0) : !1;\n}\nconst Mt = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nconst It = (e) => e != null, At = Object.prototype.toString, Tt = (e) => At.call(e) === \"[object Object]\", Ct = () => {\n};\nfunction Q(e) {\n return Array.isArray(e) ? e : [e];\n}\nfunction $t(e, t, n) {\n return P(e, t, {\n ...n,\n immediate: !0\n });\n}\nconst W = Mt ? window : void 0;\nfunction B(e) {\n var t;\n const n = w(e);\n return (t = n?.$el) !== null && t !== void 0 ? t : n;\n}\nfunction K(...e) {\n const t = (o, a, s, l) => (o.addEventListener(a, s, l), () => o.removeEventListener(a, s, l)), n = T(() => {\n const o = Q(w(e[0])).filter((a) => a != null);\n return o.every((a) => typeof a != \"string\") ? o : void 0;\n });\n return $t(() => {\n var o, a;\n return [\n (o = (a = n.value) === null || a === void 0 ? void 0 : a.map((s) => B(s))) !== null && o !== void 0 ? o : [W].filter((s) => s != null),\n Q(w(n.value ? e[1] : e[0])),\n Q(S(n.value ? e[2] : e[1])),\n w(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 = Tt(l) ? { ...l } : l, v = o.flatMap((m) => a.flatMap((d) => s.map((p) => t(m, d, p, u))));\n i(() => {\n v.forEach((m) => m());\n });\n }, { flush: \"post\" });\n}\n// @__NO_SIDE_EFFECTS__\nfunction St() {\n const e = G(!1), t = Ue();\n return t && se(() => {\n e.value = !0;\n }, t), e;\n}\n// @__NO_SIDE_EFFECTS__\nfunction Lt(e) {\n const t = /* @__PURE__ */ St();\n return T(() => (t.value, !!e()));\n}\nfunction _t(e, t, n = {}) {\n const { window: o = W, ...a } = n;\n let s;\n const l = /* @__PURE__ */ Lt(() => o && \"MutationObserver\" in o), r = () => {\n s && (s.disconnect(), s = void 0);\n }, i = P(T(() => {\n const m = Q(w(e)).map(B).filter(It);\n return new Set(m);\n }), (m) => {\n r(), l.value && m.size && (s = new MutationObserver(t), m.forEach((d) => s.observe(d, a)));\n }, {\n immediate: !0,\n flush: \"post\"\n }), u = () => s?.takeRecords(), v = () => {\n i(), r();\n };\n return Se(v), {\n isSupported: l,\n stop: v,\n takeRecords: u\n };\n}\nfunction Vt(e, t, n = {}) {\n const { window: o = W, document: a = o?.document, flush: s = \"sync\" } = n;\n if (!o || !a) return Ct;\n let l;\n const r = (v) => {\n l?.(), l = v;\n }, i = ae(() => {\n const v = B(e);\n if (v) {\n const { stop: m } = _t(a, (d) => {\n d.map((p) => [...p.removedNodes]).flat().some((p) => p === v || p.contains(v)) && t(d);\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 Se(u), u;\n}\n// @__NO_SIDE_EFFECTS__\nfunction Ot(e = {}) {\n var t;\n const { window: n = W, 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 v; u?.shadowRoot; ) u = u == null || (v = u.shadowRoot) === null || v === void 0 ? void 0 : v.activeElement;\n return u;\n }, r = G(), i = () => {\n r.value = l();\n };\n if (n) {\n const u = {\n capture: !0,\n passive: !0\n };\n K(n, \"blur\", (v) => {\n v.relatedTarget === null && i();\n }, u), K(n, \"focus\", i, u);\n }\n return a && Vt(r, i, { document: s }), i(), r;\n}\nconst Pt = \"focusin\", Ft = \"focusout\", Rt = \":focus-within\";\nfunction Ht(e, t = {}) {\n const { window: n = W } = t, o = T(() => B(e)), a = G(!1), s = T(() => a.value);\n if (!n || !(/* @__PURE__ */ Ot(t)).value) return { focused: s };\n const l = { passive: !0 };\n return K(o, Pt, () => a.value = !0, l), K(o, Ft, () => {\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, Rt)) !== null && r !== void 0 ? r : !1;\n }, l), { focused: s };\n}\nfunction Bt(e, { window: t = W, scrollTarget: n } = {}) {\n const o = x(!1), a = () => {\n if (!t) return;\n const s = t.document, l = B(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 P(\n () => B(e),\n () => a(),\n { immediate: !0, flush: \"post\" }\n ), t && K(n || t, \"scroll\", a, {\n capture: !1,\n passive: !0\n }), o;\n}\nconst _ = (e) => {\n let t = Bt(e).value;\n return t = t && e.offsetHeight > 0, t;\n}, V = (e) => e.tabIndex >= 0, ve = (e) => {\n const t = e.target;\n return ie(t);\n}, ie = (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 && (!V(t) || !_(t)) ? ie(t) : t;\n}, qt = (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 && (!V(n) || !_(n)) ? ue(n) : n;\n}, pe = (e) => {\n const t = e.target;\n return ue(t);\n}, ue = (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 && (!V(t) || !_(t)) ? ue(t) : t;\n}, Ut = (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 && (!V(n) || !_(n)) ? ie(n) : n;\n}, he = (e) => {\n const t = e.target;\n return ce(t);\n}, ce = (e) => {\n let t;\n return e.previousElementSibling ? t = e.previousElementSibling : t = e.parentElement?.previousElementSibling?.lastElementChild, t && (!V(t) || !_(t)) ? ce(t) : t;\n}, ge = (e) => {\n const t = e.target;\n return de(t);\n}, de = (e) => {\n let t;\n return e.nextElementSibling ? t = e.nextElementSibling : t = e.parentElement?.nextElementSibling?.firstElementChild, t && (!V(t) || !_(t)) ? de(t) : t;\n}, ye = (e) => {\n const t = e.target.parentElement?.firstElementChild;\n return t && (!V(t) || !_(t)) ? de(t) : t;\n}, be = (e) => {\n const t = e.target.parentElement?.lastElementChild;\n return t && (!V(t) || !_(t)) ? ce(t) : t;\n}, J = [\"alt\", \"control\", \"shift\", \"meta\"], Wt = {\n ArrowUp: \"up\",\n ArrowDown: \"down\",\n ArrowLeft: \"left\",\n ArrowRight: \"right\"\n}, Le = {\n \"keydown.up\": (e) => {\n const t = ve(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.down\": (e) => {\n const t = pe(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.left\": (e) => {\n const t = he(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.right\": (e) => {\n const t = ge(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.control.up\": (e) => {\n const t = qt(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.down\": (e) => {\n const t = Ut(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.left\": (e) => {\n const t = ye(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.right\": (e) => {\n const t = be(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.end\": (e) => {\n const t = be(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 = pe(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 = ve(e);\n t && t.focus();\n }\n },\n \"keydown.home\": (e) => {\n const t = ye(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.tab\": (e) => {\n const t = ge(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.shift.tab\": (e) => {\n const t = he(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n }\n};\nfunction Nt(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) => V(u) && _(u))), i;\n }, a = (l) => (r) => {\n const i = Wt[r.key] || r.key.toLowerCase();\n if (J.includes(i)) return;\n const u = l.handlers || Le;\n for (const v of Object.keys(u)) {\n const [m, ...d] = v.split(\".\");\n if (m === \"keydown\" && d.includes(i)) {\n const p = u[v], I = d.filter((f) => J.includes(f)), A = J.some((f) => {\n const h = f.charAt(0).toUpperCase() + f.slice(1);\n return r.getModifierState(h);\n });\n if (I.length > 0) {\n if (A) {\n for (const f of J)\n if (d.includes(f)) {\n const h = f.charAt(0).toUpperCase() + f.slice(1);\n r.getModifierState(h) && p(r);\n }\n }\n } else\n A || p(r);\n }\n }\n }, s = [];\n se(() => {\n for (const l of e) {\n const r = t(l), i = o(l), u = a(l), v = r ? [r] : i;\n for (const m of v) {\n const { focused: d } = Ht(x(m)), p = P(d, (I) => {\n I ? m.addEventListener(\"keydown\", u) : m.removeEventListener(\"keydown\", u);\n });\n s.push(p);\n }\n }\n }), qe(() => {\n for (const l of s)\n l();\n });\n}\nconst jt = {\n ref: \"datepicker\",\n class: \"adatepicker\",\n tabindex: \"0\"\n}, Yt = {\n colspan: \"5\",\n tabindex: -1\n}, Kt = [\"onClick\", \"onKeydown\"], zt = 6, we = 7, Gt = /* @__PURE__ */ C({\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 = q(e, \"modelValue\"), o = x(new Date(n.value)), a = x(o.value.getMonth()), s = x(o.value.getFullYear()), l = x([]), r = xe(\"datepicker\");\n se(async () => {\n i(), await We();\n const y = document.getElementsByClassName(\"selectedDate\");\n if (y.length > 0)\n y[0].focus();\n else {\n const k = document.getElementsByClassName(\"todaysDate\");\n k.length > 0 && k[0].focus();\n }\n });\n const i = () => {\n l.value = [];\n const y = new Date(s.value, a.value, 1), k = y.getDay(), $ = y.setDate(y.getDate() - k);\n for (const O of Array(43).keys())\n l.value.push($ + O * 864e5);\n };\n P([a, s], i);\n const u = () => s.value -= 1, v = () => s.value += 1, m = () => {\n a.value == 0 ? (a.value = 11, u()) : a.value -= 1;\n }, d = () => {\n a.value == 11 ? (a.value = 0, v()) : a.value += 1;\n }, p = (y) => {\n const k = /* @__PURE__ */ new Date();\n if (a.value === k.getMonth())\n return k.toDateString() === new Date(y).toDateString();\n }, I = (y) => new Date(y).toDateString() === new Date(o.value).toDateString(), A = (y, k) => (y - 1) * we + k, f = (y, k) => l.value[A(y, k)], h = (y) => {\n n.value = o.value = new Date(l.value[y]);\n }, D = T(() => new Date(s.value, a.value, 1).toLocaleDateString(void 0, {\n year: \"numeric\",\n month: \"long\"\n }));\n return Nt([\n {\n parent: r,\n selectors: \"td\",\n handlers: {\n ...Le,\n \"keydown.pageup\": m,\n \"keydown.shift.pageup\": u,\n \"keydown.pagedown\": d,\n \"keydown.shift.pagedown\": v,\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 }), (y, k) => (g(), b(\"div\", jt, [\n c(\"table\", null, [\n c(\"tbody\", null, [\n c(\"tr\", null, [\n c(\"td\", {\n id: \"previous-month-btn\",\n tabindex: -1,\n onClick: m\n }, \"<\"),\n c(\"th\", Yt, M(D.value), 1),\n c(\"td\", {\n id: \"next-month-btn\",\n tabindex: -1,\n onClick: d\n }, \">\")\n ]),\n k[0] || (k[0] = c(\"tr\", { class: \"days-header\" }, [\n c(\"td\", null, \"M\"),\n c(\"td\", null, \"T\"),\n c(\"td\", null, \"W\"),\n c(\"td\", null, \"T\"),\n c(\"td\", null, \"F\"),\n c(\"td\", null, \"S\"),\n c(\"td\", null, \"S\")\n ], -1)),\n (g(), b(j, null, Y(zt, ($) => c(\"tr\", { key: $ }, [\n (g(), b(j, null, Y(we, (O) => c(\"td\", {\n ref_for: !0,\n ref: \"celldate\",\n key: A($, O),\n contenteditable: !1,\n spellcheck: !1,\n tabindex: 0,\n class: X({\n todaysDate: p(f($, O)),\n selectedDate: I(f($, O))\n }),\n onClick: Ie((Ve) => h(A($, O)), [\"prevent\", \"stop\"]),\n onKeydown: F((Ve) => h(A($, O)), [\"enter\"])\n }, M(new Date(f($, O)).getDate()), 43, Kt)), 64))\n ])), 64))\n ])\n ])\n ], 512));\n }\n}), Jt = /* @__PURE__ */ L(Gt, [[\"__scopeId\", \"data-v-056d2b5e\"]]), Qt = /* @__PURE__ */ C({\n __name: \"CollapseButton\",\n props: {\n collapsed: { type: Boolean }\n },\n setup(e) {\n return (t, n) => (g(), b(\"button\", {\n class: X([\"collapse-button\", e.collapsed ? \"rotated\" : \"unrotated\"])\n }, \"×\", 2));\n }\n}), Xt = /* @__PURE__ */ L(Qt, [[\"__scopeId\", \"data-v-6f1c1b45\"]]), Zt = { class: \"aform\" }, en = /* @__PURE__ */ C({\n __name: \"AForm\",\n props: {\n modelValue: {},\n data: {},\n readOnly: { type: Boolean }\n },\n emits: [\"update:modelValue\"],\n setup(e, { emit: t }) {\n const n = t, o = x(e.data || {});\n ae(() => {\n e.data && (o.value = e.data, e.modelValue.forEach((l) => {\n l.fieldname && e.data[l.fieldname] !== void 0 && (l.value = e.data[l.fieldname]);\n }));\n });\n const a = (l) => {\n let r = {};\n for (const [i, u] of Object.entries(l))\n [\"component\", \"fieldtype\"].includes(i) || (r[i] = u), i === \"rows\" && u && u.length === 0 && (r.rows = o.value[l.fieldname]);\n return r;\n }, s = T({\n get: () => e.modelValue.map((l, r) => T({\n get() {\n return l.value;\n },\n set: (i) => {\n e.modelValue[r].value = i, n(\"update:modelValue\", e.modelValue);\n }\n })),\n set: () => {\n }\n });\n return (l, r) => (g(), b(\"form\", Zt, [\n (g(!0), b(j, null, Y(e.modelValue, (i, u) => (g(), le(Ne(i.component), je({\n key: u,\n modelValue: s.value[u].value,\n \"onUpdate:modelValue\": (v) => s.value[u].value = v,\n schema: i,\n data: o.value[i.fieldname],\n readOnly: e.readOnly\n }, { ref_for: !0 }, a(i)), null, 16, [\"modelValue\", \"onUpdate:modelValue\", \"schema\", \"data\", \"readOnly\"]))), 128))\n ]));\n }\n}), _e = /* @__PURE__ */ L(en, [[\"__scopeId\", \"data-v-5336a410\"]]), tn = /* @__PURE__ */ C({\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 = x(!1), o = x(e.data || []), a = x(e.schema), s = (l) => {\n l.preventDefault(), e.collapsible && (n.value = !n.value);\n };\n return t({ collapsed: n }), (l, r) => (g(), b(\"fieldset\", null, [\n c(\"legend\", {\n onClick: s,\n onSubmit: s\n }, [\n Ae(M(e.label) + \" \", 1),\n e.collapsible ? (g(), le(Xt, {\n key: 0,\n collapsed: n.value\n }, null, 8, [\"collapsed\"])) : re(\"\", !0)\n ], 32),\n Ye(l.$slots, \"default\", { collapsed: n.value }, () => [\n E(Ke(_e, {\n modelValue: a.value,\n \"onUpdate:modelValue\": r[0] || (r[0] = (i) => a.value = i),\n data: o.value\n }, null, 8, [\"modelValue\", \"data\"]), [\n [U, !n.value]\n ])\n ], !0)\n ]));\n }\n}), nn = /* @__PURE__ */ L(tn, [[\"__scopeId\", \"data-v-40b2a95d\"]]), on = { class: \"aform_form-element aform_file-attach aform__grid--full\" }, ln = {\n key: 0,\n class: \"aform_file-attach-feedback\"\n}, an = [\"disabled\"], sn = /* @__PURE__ */ C({\n __name: \"AFileAttach\",\n props: {\n label: {}\n },\n setup(e) {\n const { files: t, open: n, reset: o, onChange: a } = pt(), s = T(() => `${t.value.length} ${t.value.length === 1 ? \"file\" : \"files\"}`);\n return a((l) => l), (l, r) => (g(), b(\"div\", on, [\n S(t) ? (g(), b(\"div\", ln, [\n c(\"p\", null, [\n r[2] || (r[2] = Ae(\" You have selected: \", -1)),\n c(\"b\", null, M(s.value), 1)\n ]),\n (g(!0), b(j, null, Y(S(t), (i) => (g(), b(\"li\", {\n key: i.name\n }, M(i.name), 1))), 128))\n ])) : re(\"\", !0),\n c(\"button\", {\n type: \"button\",\n class: \"aform_form-btn\",\n onClick: r[0] || (r[0] = (i) => S(n)())\n }, M(e.label), 1),\n c(\"button\", {\n type: \"button\",\n disabled: !S(t),\n class: \"aform_form-btn\",\n onClick: r[1] || (r[1] = (i) => S(o)())\n }, \"Reset\", 8, an)\n ]));\n }\n}), rn = /* @__PURE__ */ L(sn, [[\"__scopeId\", \"data-v-b700734f\"]]), un = { class: \"aform_form-element\" }, cn = [\"id\", \"disabled\", \"required\"], dn = [\"for\"], fn = [\"innerHTML\"], mn = /* @__PURE__ */ C({\n __name: \"ANumericInput\",\n props: /* @__PURE__ */ z({\n schema: {},\n label: {},\n mask: {},\n required: { type: Boolean },\n readOnly: { type: Boolean },\n uuid: {},\n validation: { default: () => ({ errorMessage: \"&nbsp;\" }) }\n }, {\n modelValue: {},\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = q(e, \"modelValue\");\n return (n, o) => (g(), b(\"div\", un, [\n E(c(\"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, cn), [\n [H, t.value]\n ]),\n c(\"label\", {\n class: \"aform_field-label\",\n for: e.uuid\n }, M(e.label), 9, dn),\n E(c(\"p\", {\n class: \"aform_error\",\n innerHTML: e.validation.errorMessage\n }, null, 8, fn), [\n [U, e.validation.errorMessage]\n ])\n ]));\n }\n}), ke = {\n date: \"##/##/####\",\n datetime: \"####/##/## ##:##\",\n time: \"##:##\",\n fulltime: \"##:##:##\",\n phone: \"(###) ### - ####\",\n card: \"#### #### #### ####\"\n};\nfunction vn(e) {\n try {\n return Function(`\"use strict\";return (${e})`)();\n } catch {\n }\n}\nfunction pn(e) {\n let t = e.value;\n if (t) {\n const n = vn(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 && ke[o] && (t = ke[o]);\n }\n return t;\n}\nfunction hn(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 gn(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 yn(e, t) {\n const n = pn(t);\n if (!n) return;\n const o = \"#\", a = e.value, s = hn(a, o);\n if (s) {\n const l = gn(s, n, o);\n t.instance?.maskFilled && (t.instance.maskFilled = !l.includes(o)), e.value = l;\n } else\n e.value = n;\n}\nconst bn = { class: \"aform_form-element\" }, wn = [\"id\", \"disabled\", \"maxlength\", \"required\"], kn = [\"for\"], xn = [\"innerHTML\"], Dn = /* @__PURE__ */ C({\n __name: \"ATextInput\",\n props: /* @__PURE__ */ z({\n schema: {},\n label: {},\n mask: {},\n required: { type: Boolean },\n readOnly: { type: Boolean },\n uuid: {},\n validation: { default: () => ({ errorMessage: \"&nbsp;\" }) }\n }, {\n modelValue: {},\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n const t = x(!0), n = q(e, \"modelValue\");\n return (o, a) => (g(), b(\"div\", bn, [\n E(c(\"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, wn), [\n [H, n.value],\n [S(yn), e.mask]\n ]),\n c(\"label\", {\n class: \"aform_field-label\",\n for: e.uuid\n }, M(e.label), 9, kn),\n E(c(\"p\", {\n class: \"aform_error\",\n innerHTML: e.validation.errorMessage\n }, null, 8, xn), [\n [U, e.validation.errorMessage]\n ])\n ]));\n }\n}), En = { class: \"login-container\" }, Mn = { class: \"account-container\" }, In = { class: \"account-header\" }, An = { id: \"account-title\" }, Tn = { id: \"account-subtitle\" }, Cn = { class: \"login-form-container\" }, $n = { class: \"login-form-email aform_form-element\" }, Sn = [\"disabled\"], Ln = { class: \"login-form-password aform_form-element\" }, _n = [\"disabled\"], Vn = [\"disabled\"], On = {\n key: 0,\n class: \"material-symbols-outlined loading-icon\"\n}, Pn = /* @__PURE__ */ C({\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 = x(\"\"), a = x(\"\"), s = x(!1), l = x(!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) => (g(), b(\"div\", En, [\n c(\"div\", null, [\n c(\"div\", Mn, [\n c(\"div\", In, [\n c(\"h1\", An, M(e.headerTitle), 1),\n c(\"p\", Tn, M(e.headerSubtitle), 1)\n ]),\n c(\"form\", { onSubmit: r }, [\n c(\"div\", Cn, [\n c(\"div\", $n, [\n u[2] || (u[2] = c(\"label\", {\n id: \"login-email\",\n for: \"email\",\n class: \"aform_field-label\"\n }, \"Email\", -1)),\n E(c(\"input\", {\n id: \"email\",\n \"onUpdate:modelValue\": u[0] || (u[0] = (v) => o.value = v),\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, Sn), [\n [H, o.value]\n ])\n ]),\n c(\"div\", Ln, [\n u[3] || (u[3] = c(\"label\", {\n id: \"login-password\",\n for: \"password\",\n class: \"aform_field-label\"\n }, \"Password\", -1)),\n E(c(\"input\", {\n id: \"password\",\n \"onUpdate:modelValue\": u[1] || (u[1] = (v) => a.value = v),\n class: \"aform_input-field\",\n name: \"password\",\n type: \"password\",\n disabled: s.value\n }, null, 8, _n), [\n [H, a.value]\n ])\n ]),\n c(\"button\", {\n class: \"btn\",\n disabled: s.value || !o.value || !a.value,\n onClick: r\n }, [\n s.value ? (g(), b(\"span\", On, \"progress_activity\")) : re(\"\", !0),\n u[4] || (u[4] = c(\"span\", { id: \"login-form-button\" }, \"Login\", -1))\n ], 8, Vn)\n ])\n ], 32),\n u[5] || (u[5] = c(\"button\", { class: \"btn\" }, [\n c(\"span\", { id: \"forgot-password-button\" }, \"Forgot password?\")\n ], -1))\n ])\n ])\n ]));\n }\n}), Rn = /* @__PURE__ */ L(Pn, [[\"__scopeId\", \"data-v-d9ffd0a7\"]]);\nfunction Hn(e) {\n e.component(\"ACheckbox\", et), e.component(\"ACombobox\", tt), e.component(\"ADate\", st), e.component(\"ADropdown\", Et), e.component(\"ADatePicker\", Jt), e.component(\"AFieldset\", nn), e.component(\"AFileAttach\", rn), e.component(\"AForm\", _e), e.component(\"ANumericInput\", mn), e.component(\"ATextInput\", Dn);\n}\nexport {\n et as ACheckbox,\n tt as AComboBox,\n st as ADate,\n Jt as ADatePicker,\n Et as ADropdown,\n nn as AFieldset,\n rn as AFileAttach,\n _e as AForm,\n mn as ANumericInput,\n Dn as ATextInput,\n Rn as Login,\n Hn 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","Q","K","ge","n","Oe","G","ie","Be","r","o","re","ye","je","Ae","Ke","Ze","Y","Qe","$e","me","Re","Xe","et","W","Ie","De","i","a","c","h","g","Pe","M","w","R","oe","B","$","Ne","l","v","T","L","P","I","u","O","le","N","m","S","D","f","b","A","k","C","E","_","H","Ee","V","Je","se","Le","tt","we","te","Fe","We","rt","nt","ot","Ue","st","Me","Ge","it","ze","at","be","ct","lt","ut","ft","dt","Ve","pt","Z","ht","q","X","Ye","fe","de","gt","vt","yt","mt","bt","Te","St","xe","x","wt","Se","pe","Rt","ue","d","p","F","U","z","j","ae","J","Ce","ee","ve","t","Nt","He","s","Vt","he","ke","Pt","_e","ne","Zt","en","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":";;;;;;;;AAyEA,UAAMA,IAAOC,GAKPC,IAAiBC,EAA6B,EAAE,GAEhDC,IAASD,EAAI,EAAK,GAClBE,IAAYF,EAAY,EAAE,GAC1BG,IAAQH,EAAI,EAAK,GACjBI,IAAeJ,EAAI,EAAK;AAE9B,IAAAK,GAAU,MAAM;AACf,MAAAC,EAAA;AAAA,IACD,CAAC;AAED,UAAMA,IAAiB,MAAM;AAC5B,MAAAP,EAAe,QAAQ,CAAA;AAAA,IACxB,GAEMQ,IAAU,MAAM;AACrB,MAAAJ,EAAM,QAAQ,IACdD,EAAU,QAAQ,WAAW,MAAM;AAClC,QAAIC,EAAM,UACTF,EAAO,QAAQ;AAAA,MAEjB,GAAG,GAAG;AAAA,IACP,GAEMO,IAAe,MAAM;AAC1B,MAAAL,EAAM,QAAQ,IACdC,EAAa,QAAQ,IACrB,aAAaF,EAAU,KAAK,GAC5BD,EAAO,QAAQ;AAAA,IAChB,GAEMQ,IAAiB,CAACC,MAAkB;AACzC,YAAMC,IAAe,CAACZ,EAAe,MAAMW,CAAK;AAChD,MAAAJ,EAAA,GACIK,MACHZ,EAAe,MAAMW,CAAK,IAAI;AAAA,IAEhC,GAEME,IAAc,CAACC,GAAkDC,MAAkB;AAExF,MAAAjB,EAAK,eAAeiB,GAAOD,CAAM;AAAA,IAClC;2BAvHCE,EA+DM,OAAA;AAAA,MA9DJ,OAAKC,GAAA,CAAA,EAAA,YAAgBf,EAAA,OAAM,sBAAwBG,EAAA,MAAA,GAC9C,qBAAqB,CAAA;AAAA,MAC1B,aAAWG;AAAA,MACX,cAAYC;AAAA,IAAA;MACbS,EAgCM,OAhCNC,IAgCM;AAAA,QA/BLD,EA8BM,OAAA;AAAA,UA9BD,IAAG;AAAA,UAAW,SAAKE,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAEhB,EAAA,QAAY,CAAIA,EAAA;AAAA,QAAA;UACzCa,EAaM,OAAA;AAAA,YAZL,IAAG;AAAA,YACH,OAAM;AAAA,YACN,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,eAAY;AAAA,YACZ,GAAE;AAAA,YACF,GAAE;AAAA,YACF,SAAQ;AAAA,YACR,aAAU;AAAA,YACV,OAAM;AAAA,YACN,QAAO;AAAA,UAAA;YACPA,EAAyD,WAAA,EAAhD,QAAO,wCAAsC;AAAA,UAAA;UAGvDA,EAaM,OAAA;AAAA,YAZL,IAAG;AAAA,YACH,OAAM;AAAA,YACN,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,eAAY;AAAA,YACZ,GAAE;AAAA,YACF,GAAE;AAAA,YACF,SAAQ;AAAA,YACR,aAAU;AAAA,YACV,OAAM;AAAA,YACN,QAAO;AAAA,UAAA;YACPA,EAAyD,WAAA,EAAhD,QAAO,wCAAsC;AAAA,UAAA;;;sBAIzDA,EAAsC,OAAA,EAAjC,OAAA,EAAA,gBAAA,OAAA,EAAA,GAA0B,MAAA,EAAA;AAAA,OAC/BI,EAAA,EAAA,GAAAN,EAuBMO,IAAA,MAAAC,GAvBqBC,EAAA,UAAQ,CAAtBC,GAAIf,YAAjBK,EAuBM,OAAA;AAAA,QAvBgC,KAAKU,EAAG;AAAA,QAAO,OAAM;AAAA,MAAA;QAEnDA,EAAG,QAAI,iBADdV,EAMS,UAAA;AAAA;UAJP,UAAUU,EAAG;AAAA,UACd,OAAM;AAAA,UACL,SAAK,CAAAL,MAAER,EAAYa,EAAG,QAAQA,EAAG,KAAK;AAAA,QAAA,GACpCC,EAAAD,EAAG,KAAK,GAAA,GAAAE,EAAA;QAEDF,EAAG,QAAI,mBAAlBV,EAcM,OAAAa,IAAA;AAAA,UAbLX,EAAqF,UAAA;AAAA,YAA7E,OAAM;AAAA,YAAkB,SAAK,CAAAG,MAAEX,EAAeC,CAAK;AAAA,UAAA,GAAMgB,EAAAD,EAAG,KAAK,GAAA,GAAAI,EAAA;AAAA,UACzEC,GAAAb,EAWM,OAXNc,IAWM;AAAA,YAVLd,EASM,OATNe,IASM;AAAA,eARLX,EAAA,EAAA,GAAAN,EAOMO,aAP2BG,EAAG,SAAO,CAA9BQ,GAAMC,YAAnBnB,EAOM,OAAA;AAAA,gBAPwC,KAAKkB,EAAK;AAAA,cAAA;gBACzCA,EAAK,UAAM,aAAzBlB,EAES,UAAA;AAAA;kBAF0B,OAAM;AAAA,kBAAiB,SAAK,CAAAK,MAAER,EAAYqB,EAAK,QAAQA,EAAK,KAAK;AAAA,gBAAA,GAChGP,EAAAO,EAAK,KAAK,GAAA,GAAAE,EAAA,KAEAF,EAAK,QAAI,aAAvBlB,EAEC,KAAA;AAAA;kBAFiC,MAAMkB,EAAK;AAAA,gBAAA;kBAC3ChB,EAAuD,UAAvDmB,IAAuDV,EAAtBO,EAAK,KAAK,GAAA,CAAA;AAAA,gBAAA;;;;YAPnC,CAAAI,IAAAtC,EAAA,MAAeW,CAAK,CAAA;AAAA,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACYrC,UAAMb,IAAOC,GAKPwC,IAAQtC,EAAI,EAAE,GACduC,IAAgBvC,EAAI,CAAC,GACrBwC,IAAWC,GAAe,OAAO,GAEjCC,IAAUC,EAAS,MACnBL,EAAM,QACKd,EAAA,OAAOc,EAAM,KAAK,EACnB,MAAM,GAAGd,EAAA,UAAU,IAFT,CAAA,CAGzB;AAGD,IAAAoB;AAAA,MACC,MAAMpB,EAAA;AAAA,MACN,OAAMvB,MAAU;AACf,QAAIA,MACHqC,EAAM,QAAQ,IACdC,EAAc,QAAQ,GACtB,MAAMM,GAAA,GACJL,EAAS,OAA4B,MAAA;AAAA,MAEzC;AAAA,IAAA,GAIDI,EAAMF,GAAS,MAAM;AACpB,MAAAH,EAAc,QAAQ;AAAA,IACvB,CAAC;AAED,UAAMO,IAAa,MAAM;AACxB,MAAAjD,EAAK,OAAO;AAAA,IACb,GAEMkD,IAAgB,CAACC,MAAqB;AAC3C,cAAQA,EAAE,KAAA;AAAA,QACT,KAAK;AACJ,UAAAF,EAAA;AACA;AAAA,QACD,KAAK;AACJ,UAAAE,EAAE,eAAA,GACEN,EAAQ,MAAM,WACjBH,EAAc,SAASA,EAAc,QAAQ,KAAKG,EAAQ,MAAM;AAEjE;AAAA,QACD,KAAK;AACJ,UAAAM,EAAE,eAAA,GACEN,EAAQ,MAAM,WACjBH,EAAc,SAASA,EAAc,QAAQ,IAAIG,EAAQ,MAAM,UAAUA,EAAQ,MAAM;AAExF;AAAA,QACD,KAAK;AACJ,UAAIA,EAAQ,MAAM,UAAUH,EAAc,SAAS,KAClDU,EAAaP,EAAQ,MAAMH,EAAc,KAAK,CAAC;AAEhD;AAAA,MAAA;AAAA,IAEH,GAEMU,IAAe,CAACC,MAAc;AACnC,MAAArD,EAAK,UAAUqD,CAAM,GACrBJ,EAAA;AAAA,IACD;2BA9HCK,GAqCWC,IAAA,EArCD,IAAG,UAAM;AAAA,MAClBC,GAmCaC,IAAA,EAnCD,MAAK,UAAM;AAAA,oBACtB,MAiCM;AAAA,UAjCK9B,EAAA,eAAXT,EAiCM,OAAA;AAAA;YAjCa,OAAM;AAAA,YAA2B,SAAO+B;AAAA,UAAA;YAC1D7B,EA+BM,OAAA;AAAA,cA/BD,OAAM;AAAA,cAAmB,4BAAD,MAAA;AAAA,cAAA,GAAW,CAAA,MAAA,CAAA;AAAA,YAAA;cACvCA,EASM,OATNC,IASM;AAAA,mBARLD,EAO4B,SAAA;AAAA,kBAN3B,KAAI;AAAA,gEACKqB,EAAK,QAAAlB;AAAA,kBACd,MAAK;AAAA,kBACL,OAAM;AAAA,kBACL,aAAaI,EAAA;AAAA,kBACd,WAAA;AAAA,kBACC,WAASuB;AAAA,gBAAA;uBALDT,EAAA,KAAK;AAAA,gBAAA;;cAQLI,EAAA,MAAQ,UAAnBrB,KAAAN,EAeM,OAfNa,IAeM;AAAA,iBAdLP,EAAA,EAAA,GAAAN,EAaMO,IAAA,MAAAC,GAZqBmB,EAAA,OAAO,CAAzBQ,GAAQxC,YADjBK,EAaM,OAAA;AAAA,kBAXJ,KAAKL;AAAA,kBACN,OAAKM,GAAA,CAAC,0BAAwB,EAAA,UACVN,MAAU6B,EAAA,MAAA,CAAa,CAAA;AAAA,kBAC1C,SAAK,CAAAnB,MAAE6B,EAAaC,CAAM;AAAA,kBAC1B,aAAS,CAAA9B,MAAEmB,EAAA,QAAgB7B;AAAA,gBAAA;kBAC5BO,EAEM,OAFNc,IAEM;AAAA,oBADLwB,GAAsCC,EAAA,QAAA,SAAA,EAAlB,QAAAN,GAAc;AAAA,kBAAA;kBAEnCjC,EAEM,OAFNe,IAEM;AAAA,oBADLuB,GAAwCC,EAAA,QAAA,WAAA,EAAlB,QAAAN,GAAc;AAAA,kBAAA;;oBAIvBZ,EAAA,SAAK,CAAKI,EAAA,MAAQ,UAAlCrB,EAAA,GAAAN,EAEM,OAFNoB,IAEM;AAAA,gBADLoB,GAA8DC,uBAA9D,MAA8D;AAAA,qBAA3C,4BAAuB9B,EAAGY,EAAA,KAAK,IAAG,MAAE,CAAA;AAAA,gBAAA;;;;;;;;;IChCvDmB,KAAI,OAAO,SAAS;AAC1B,IAAIC;AACJ,MAAMC,KAAK,CAACC,MAAMF,KAAIE;AACtB,QAAQ,IAAI;AACZ,MAAMC,KAAK,QAAQ,IAAI,aAAa,eAA+B,uBAAO,OAAO;AAAA;AAAA,EAE/D,uBAAM;AAAA;AAExB,SAASC,GAAEF,GAAG;AACZ,SAAOA,KAAK,OAAOA,KAAK,YAAY,OAAO,UAAU,SAAS,KAAKA,CAAC,MAAM,qBAAqB,OAAOA,EAAE,UAAU;AACpH;AACA,IAAIG;AAAA,CACH,SAASH,GAAG;AACX,EAAAA,EAAE,SAAS,UAAUA,EAAE,cAAc,gBAAgBA,EAAE,gBAAgB;AACzE,GAAGG,OAAOA,KAAK,CAAA,EAAG;AAClB,SAASC,GAAGJ,GAAG,GAAG;AAChB,aAAW,KAAK,GAAG;AACjB,UAAMK,IAAI,EAAE,CAAC;AACb,QAAI,EAAE,KAAKL;AACT;AACF,UAAMM,IAAIN,EAAE,CAAC;AACb,IAAAE,GAAEI,CAAC,KAAKJ,GAAEG,CAAC,KAAK,CAACE,GAAGF,CAAC,KAAK,CAACG,GAAGH,CAAC,IAAIL,EAAE,CAAC,IAAII,GAAGE,GAAGD,CAAC,IAAIL,EAAE,CAAC,IAAIK;AAAA,EAC9D;AACA,SAAOL;AACT;AACA,MAAMS,KAAK,MAAM;AACjB;AACA,SAASC,GAAGV,GAAG,GAAG,GAAGK,IAAII,IAAI;AAC3B,EAAAT,EAAE,IAAI,CAAC;AACP,QAAMM,IAAI,MAAM;AACd,IAAAN,EAAE,OAAO,CAAC,KAAKK,EAAC;AAAA,EAClB;AACA,SAAO,CAAC,KAAKM,GAAE,KAAMC,GAAGN,CAAC,GAAGA;AAC9B;AACA,SAASO,GAAEb,MAAM,GAAG;AAClB,EAAAA,EAAE,QAAQ,CAAC,MAAM;AACf,MAAE,GAAG,CAAC;AAAA,EACR,CAAC;AACH;AACA,MAAMc,KAAK,CAACd,MAAMA,EAAC,GAAIe,KAAqB,uBAAM,GAAIC,KAAqB,uBAAM;AACjF,SAASC,GAAGjB,GAAG,GAAG;AAChB,EAAAA,aAAa,OAAO,aAAa,MAAM,EAAE,QAAQ,CAAC,GAAGK,MAAML,EAAE,IAAIK,GAAG,CAAC,CAAC,IAAIL,aAAa,OAAO,aAAa,OAAO,EAAE,QAAQA,EAAE,KAAKA,CAAC;AACpI,aAAW,KAAK,GAAG;AACjB,QAAI,CAAC,EAAE,eAAe,CAAC;AACrB;AACF,UAAMK,IAAI,EAAE,CAAC,GAAGC,IAAIN,EAAE,CAAC;AACvB,IAAAE,GAAEI,CAAC,KAAKJ,GAAEG,CAAC,KAAKL,EAAE,eAAe,CAAC,KAAK,CAACO,GAAGF,CAAC,KAAK,CAACG,GAAGH,CAAC,IAAIL,EAAE,CAAC,IAAIiB,GAAGX,GAAGD,CAAC,IAAIL,EAAE,CAAC,IAAIK;AAAA,EACrF;AACA,SAAOL;AACT;AACA,MAAMkB,KAAK,QAAQ,IAAI,aAAa,eAA+B,uBAAO,qBAAqB;AAAA;AAAA,EAE7E,uBAAM;AAAA;AAExB,SAASC,GAAGnB,GAAG;AACb,SAAO,CAACE,GAAEF,CAAC,KAAK,CAAC,OAAO,UAAU,eAAe,KAAKA,GAAGkB,EAAE;AAC7D;AACA,MAAM,EAAE,QAAQE,EAAC,IAAK;AACtB,SAASC,GAAGrB,GAAG;AACb,SAAO,CAAC,EAAEO,GAAGP,CAAC,KAAKA,EAAE;AACvB;AACA,SAASsB,GAAGtB,GAAG,GAAG,GAAGK,GAAG;AACtB,QAAM,EAAE,OAAOC,GAAG,SAAS,GAAG,SAASiB,MAAM,GAAGC,IAAI,EAAE,MAAM,MAAMxB,CAAC;AACnE,MAAIyB;AACJ,WAASC,IAAI;AACX,KAACF,MAAM,QAAQ,IAAI,aAAa,gBAAgB,CAACnB,OAAO,EAAE,MAAM,MAAML,CAAC,IAAIM,IAAIA,EAAC,IAAK;AACrF,UAAMqB,IAAI,QAAQ,IAAI,aAAa,gBAAgBtB;AAAA;AAAA,MAEjDuB,GAAGC,EAAEvB,IAAIA,EAAC,IAAK,CAAA,CAAE,EAAE,KAAK;AAAA,QACtBsB,GAAG,EAAE,MAAM,MAAM5B,CAAC,CAAC;AACvB,WAAOoB,EAAEO,GAAG,GAAG,OAAO,KAAKJ,KAAK,CAAA,CAAE,EAAE,OAAO,CAACO,GAAGC,OAAO,QAAQ,IAAI,aAAa,gBAAgBA,KAAKJ,KAAK,QAAQ,KAAK,uGAAuGI,CAAC,eAAe/B,CAAC,IAAI,GAAG8B,EAAEC,CAAC,IAAIC,GAAGC,EAAE,MAAM;AACrQ,MAAAlC,GAAG,CAAC;AACJ,YAAMmC,IAAI,EAAE,GAAG,IAAIlC,CAAC;AACpB,aAAOuB,EAAEQ,CAAC,EAAE,KAAKG,GAAGA,CAAC;AAAA,IACvB,CAAC,CAAC,GAAGJ,IAAI,CAAA,CAAE,CAAC;AAAA,EACd;AACA,SAAOL,IAAIU,GAAGnC,GAAG0B,GAAG,GAAG,GAAGrB,GAAG,EAAE,GAAGoB;AACpC;AACA,SAASU,GAAGnC,GAAG,GAAG,IAAI,CAAA,GAAIK,GAAGC,GAAG,GAAG;AACjC,MAAIiB;AACJ,QAAMC,IAAIJ,EAAE,EAAE,SAAS,CAAA,EAAE,GAAI,CAAC;AAC9B,MAAI,QAAQ,IAAI,aAAa,gBAAgB,CAACf,EAAE,GAAG;AACjD,UAAM,IAAI,MAAM,iBAAiB;AACnC,QAAMoB,IAAI,EAAE,MAAM,GAAE;AACpB,UAAQ,IAAI,aAAa,iBAAiBA,EAAE,YAAY,CAACW,MAAM;AAC7D,IAAAV,IAAIQ,IAAIE,IAAIV,KAAK,MAAM,CAACW,EAAE,iBAAiB,MAAM,QAAQH,CAAC,IAAIA,EAAE,KAAKE,CAAC,IAAI,QAAQ,MAAM,kFAAkF;AAAA,EAC5K;AACA,MAAIV,GAAGC,GAAGG,IAAoB,oBAAI,IAAG,GAAIC,IAAoB,oBAAI,IAAG,GAAIG;AACxE,QAAMI,IAAIjC,EAAE,MAAM,MAAML,CAAC;AACzB,GAAC,KAAK,CAACsC,MAAM,QAAQ,IAAI,aAAa,gBAAgB,CAAChC,OAAOD,EAAE,MAAM,MAAML,CAAC,IAAI,CAAA;AACjF,QAAMuC,IAAIV,EAAE,EAAE;AACd,MAAIW;AACJ,WAASC,EAAEL,GAAG;AACZ,QAAIM;AACJ,IAAAhB,IAAIC,IAAI,IAAI,QAAQ,IAAI,aAAa,iBAAiBO,IAAI,CAAA,IAAK,OAAOE,KAAK,cAAcA,EAAE/B,EAAE,MAAM,MAAML,CAAC,CAAC,GAAG0C,IAAI;AAAA,MAChH,MAAMvC,GAAG;AAAA,MACT,SAASH;AAAA,MACT,QAAQkC;AAAA,IACd,MAAUjB,GAAGZ,EAAE,MAAM,MAAML,CAAC,GAAGoC,CAAC,GAAGM,IAAI;AAAA,MACjC,MAAMvC,GAAG;AAAA,MACT,SAASiC;AAAA,MACT,SAASpC;AAAA,MACT,QAAQkC;AAAA,IACd;AACI,UAAMS,IAAIH,IAAoB,uBAAM;AACpCI,IAAAA,GAAE,EAAG,KAAK,MAAM;AACd,MAAAJ,MAAMG,MAAMjB,IAAI;AAAA,IAClB,CAAC,GAAGC,IAAI,IAAId,GAAEiB,GAAGY,GAAGrC,EAAE,MAAM,MAAML,CAAC,CAAC;AAAA,EACtC;AACA,QAAM6C,IAAI,IAAI,WAAW;AACvB,UAAM,EAAE,OAAOH,MAAM,GAAGC,IAAID,IAAIA,EAAC,IAAK,CAAA;AACtC,SAAK,OAAO,CAACI,MAAM;AACjB,MAAA1B,EAAE0B,GAAGH,CAAC;AAAA,IACR,CAAC;AAAA,EACH;AAAA;AAAA,IAEE,QAAQ,IAAI,aAAa,eAAe,MAAM;AAC5C,YAAM,IAAI,MAAM,cAAc3C,CAAC,oEAAoE;AAAA,IACrG,IAAIS;AAAA;AAEN,WAASsC,IAAI;AACX,IAAAxB,EAAE,KAAI,GAAIO,EAAE,MAAK,GAAIC,EAAE,MAAK,GAAI1B,EAAE,GAAG,OAAOL,CAAC;AAAA,EAC/C;AACA,QAAMgD,IAAI,CAACZ,GAAGM,IAAI,OAAO;AACvB,QAAI3B,MAAMqB;AACR,aAAOA,EAAEpB,EAAE,IAAI0B,GAAGN;AACpB,UAAMO,IAAI,WAAW;AACnB,MAAA5C,GAAGM,CAAC;AACJ,YAAMyC,IAAI,MAAM,KAAK,SAAS,GAAGG,IAAoB,oBAAI,IAAG,GAAIC,IAAoB,oBAAI,IAAG;AAC3F,eAASC,EAAEC,GAAG;AACZ,QAAAH,EAAE,IAAIG,CAAC;AAAA,MACT;AACA,eAASC,EAAED,GAAG;AACZ,QAAAF,EAAE,IAAIE,CAAC;AAAA,MACT;AACA,MAAAvC,GAAEkB,GAAG;AAAA,QACH,MAAMe;AAAA,QACN,MAAMH,EAAE3B,EAAE;AAAA,QACV,OAAOqB;AAAA,QACP,OAAOc;AAAA,QACP,SAASE;AAAA,MACjB,CAAO;AACD,UAAI;AACJ,UAAI;AACF,YAAIjB,EAAE,MAAM,QAAQ,KAAK,QAAQpC,IAAI,OAAOqC,GAAGS,CAAC;AAAA,MAClD,SAASM,GAAG;AACV,cAAMvC,GAAEqC,GAAGE,CAAC,GAAGA;AAAA,MACjB;AACA,aAAO,aAAa,UAAU,EAAE,KAAK,CAACA,OAAOvC,GAAEoC,GAAGG,CAAC,GAAGA,EAAE,EAAE,MAAM,CAACA,OAAOvC,GAAEqC,GAAGE,CAAC,GAAG,QAAQ,OAAOA,CAAC,EAAE,KAAKvC,GAAEoC,GAAG,CAAC,GAAG;AAAA,IACnH;AACA,WAAON,EAAE5B,EAAE,IAAI,IAAI4B,EAAE3B,EAAE,IAAI0B,GAAGC;AAAA,EAChC,GAAGW,IAAoBtB,gBAAAA,GAAG;AAAA,IACxB,SAAS,CAAA;AAAA,IACT,SAAS,CAAA;AAAA,IACT,OAAO,CAAA;AAAA,IACP,UAAUO;AAAA,EACd,CAAG,GAAGgB,IAAI;AAAA,IACN,IAAIlD;AAAA;AAAA,IAEJ,KAAKL;AAAA,IACL,WAAWU,GAAG,KAAK,MAAMqB,CAAC;AAAA,IAC1B,QAAQU;AAAA,IACR,QAAQI;AAAA,IACR,WAAWT,GAAGM,IAAI,IAAI;AACpB,YAAMC,IAAIjC,GAAGoB,GAAGM,GAAGM,EAAE,UAAU,MAAMI,EAAC,CAAE,GAAGA,IAAIvB,EAAE,IAAI,MAAMiC,EAAE,MAAMnD,EAAE,MAAM,MAAML,CAAC,GAAG,CAACiD,MAAM;AAC1F,SAACP,EAAE,UAAU,SAASf,IAAID,MAAMU,EAAE;AAAA,UAChC,SAASpC;AAAA,UACT,MAAMG,GAAG;AAAA,UACT,QAAQ+B;AAAA,QAClB,GAAWe,CAAC;AAAA,MACN,GAAG7B,EAAE,CAAA,GAAIK,GAAGiB,CAAC,CAAC,CAAC;AACf,aAAOC;AAAA,IACT;AAAA,IACA,UAAUI;AAAA,EACd,GAAKV,IAAIoB,GAAG,QAAQ,IAAI,aAAa,gBAAgB,QAAQ,IAAI,aAAa,gBAAgB,QAAQ,IAAI,aAAa,UAAU5D,KAAIuB;AAAA,IACjI;AAAA,MACE,aAAakC;AAAA,MACb,mBAAmBtB,GAAmB,oBAAI,IAAG,CAAE;AAAA;AAAA,IAErD;AAAA,IACIuB;AAAA;AAAA;AAAA,EAGJ,IAAMA,CAAC;AACL,EAAAlD,EAAE,GAAG,IAAIL,GAAGqC,CAAC;AACb,QAAMqB,KAAKrD,EAAE,MAAMA,EAAE,GAAG,kBAAkBS,IAAI,MAAMT,EAAE,GAAG,IAAI,OAAOkB,IAAIoC,GAAE,GAAI,IAAI,MAAM,EAAE,EAAE,QAAQX,GAAG,CAAC,CAAC,CAAC;AAC1G,aAAWZ,KAAKsB,GAAG;AACjB,UAAMhB,IAAIgB,EAAEtB,CAAC;AACb,QAAI7B,GAAGmC,CAAC,KAAK,CAACrB,GAAGqB,CAAC,KAAKlC,GAAGkC,CAAC;AACzB,cAAQ,IAAI,aAAa,gBAAgBpC,IAAIiC,EAAE,MAAMH,CAAC,IAAIwB,GAAGF,GAAGtB,CAAC,IAAI,MAAME,KAAKnB,GAAGuB,CAAC,MAAMnC,GAAGmC,CAAC,IAAIA,EAAE,QAAQJ,EAAEF,CAAC,IAAInB,GAAGyB,GAAGJ,EAAEF,CAAC,CAAC,IAAI/B,EAAE,MAAM,MAAML,CAAC,EAAEoC,CAAC,IAAIM,IAAI,QAAQ,IAAI,aAAa,gBAAgBY,EAAE,MAAM,KAAKlB,CAAC;AAAA,aAC3M,OAAOM,KAAK,YAAY;AAC/B,YAAMC,IAAI,QAAQ,IAAI,aAAa,gBAAgBrC,IAAIoC,IAAIM,EAAEN,GAAGN,CAAC;AACjE,MAAAsB,EAAEtB,CAAC,IAAIO,GAAG,QAAQ,IAAI,aAAa,iBAAiBW,EAAE,QAAQlB,CAAC,IAAIM,IAAIlB,EAAE,QAAQY,CAAC,IAAIM;AAAA,IACxF,MAAO,SAAQ,IAAI,aAAa,gBAAgBrB,GAAGqB,CAAC,MAAMY,EAAE,QAAQlB,CAAC,IAAI;AAAA;AAAA,MAEvE,EAAE,QAAQA,CAAC;AAAA,QACTM,GAAG7C,OAAM6D,EAAE;AAAA,KACdA,EAAE,WAAW1B,GAAG,CAAA,CAAE,IAAI,KAAKI,CAAC;AAAA,EAC/B;AACA,MAAIhB,EAAEiB,GAAGqB,CAAC,GAAGtC,EAAEyC,GAAGxB,CAAC,GAAGqB,CAAC,GAAG,OAAO,eAAerB,GAAG,UAAU;AAAA,IAC3D,KAAK,MAAM,QAAQ,IAAI,aAAa,gBAAgB/B,IAAIiC,EAAE,QAAQlC,EAAE,MAAM,MAAML,CAAC;AAAA,IACjF,KAAK,CAACoC,MAAM;AACV,UAAI,QAAQ,IAAI,aAAa,gBAAgB9B;AAC3C,cAAM,IAAI,MAAM,qBAAqB;AACvC,MAAAmC,EAAE,CAACC,MAAM;AACP,QAAAtB,EAAEsB,GAAGN,CAAC;AAAA,MACR,CAAC;AAAA,IACH;AAAA,EACJ,CAAG,GAAG,QAAQ,IAAI,aAAa,iBAAiBC,EAAE,aAAaL,GAAG,CAACI,MAAM;AACrE,IAAAC,EAAE,eAAe,IAAID,EAAE,YAAY,MAAM,QAAQ,CAACM,MAAM;AACtD,UAAIA,KAAKL,EAAE,QAAQ;AACjB,cAAMM,IAAIP,EAAE,OAAOM,CAAC,GAAGI,IAAIT,EAAE,OAAOK,CAAC;AACrC,eAAOC,KAAK,YAAYzC,GAAEyC,CAAC,KAAKzC,GAAE4C,CAAC,IAAI1C,GAAGuC,GAAGG,CAAC,IAAIV,EAAE,OAAOM,CAAC,IAAII;AAAA,MAClE;AACA,MAAAT,EAAEK,CAAC,IAAIkB,GAAGxB,EAAE,QAAQM,CAAC;AAAA,IACvB,CAAC,GAAG,OAAO,KAAKL,EAAE,MAAM,EAAE,QAAQ,CAACK,MAAM;AACvC,MAAAA,KAAKN,EAAE,UAAU,OAAOC,EAAEK,CAAC;AAAA,IAC7B,CAAC,GAAGhB,IAAI,IAAIC,IAAI,IAAItB,EAAE,MAAM,MAAML,CAAC,IAAI4D,GAAGxB,EAAE,aAAa,UAAU,GAAGT,IAAI,IAAIiB,KAAK,KAAK,MAAM;AAC5F,MAAAlB,IAAI;AAAA,IACN,CAAC;AACD,eAAWgB,KAAKN,EAAE,YAAY,SAAS;AACrC,YAAMO,IAAIP,EAAEM,CAAC;AACb,MAAAL,EAAEK,CAAC;AAAA,MACHM,EAAEL,GAAGD,CAAC;AAAA,IACR;AACA,eAAWA,KAAKN,EAAE,YAAY,SAAS;AACrC,YAAMO,IAAIP,EAAE,YAAY,QAAQM,CAAC,GAAGI,IAAI;AAAA;AAAA,QAEtCb,EAAE,OAAOlC,GAAGM,CAAC,GAAGsC,EAAE,KAAKN,GAAGA,CAAC,EAAE;AAAA,UAC3BM;AACJ,MAAAN,EAAEK,CAAC;AAAA,MACHI;AAAA,IACF;AACA,WAAO,KAAKT,EAAE,YAAY,OAAO,EAAE,QAAQ,CAACK,MAAM;AAChD,MAAAA,KAAKN,EAAE,YAAY,WAAW,OAAOC,EAAEK,CAAC;AAAA,IAC1C,CAAC,GAAG,OAAO,KAAKL,EAAE,YAAY,OAAO,EAAE,QAAQ,CAACK,MAAM;AACpD,MAAAA,KAAKN,EAAE,YAAY,WAAW,OAAOC,EAAEK,CAAC;AAAA,IAC1C,CAAC,GAAGL,EAAE,cAAcD,EAAE,aAAaC,EAAE,WAAWD,EAAE,UAAUC,EAAE,eAAe;AAAA,EAC/E,CAAC,IAAI,QAAQ,IAAI,aAAa,gBAAgB,QAAQ,IAAI,aAAa,UAAUxC,IAAG;AAClF,UAAMuC,IAAI;AAAA,MACR,UAAU;AAAA,MACV,cAAc;AAAA;AAAA,MAEd,YAAY;AAAA,IAClB;AACI,KAAC,MAAM,eAAe,YAAY,mBAAmB,EAAE,QAAQ,CAACM,MAAM;AACpE,aAAO,eAAeL,GAAGK,GAAGtB,EAAE,EAAE,OAAOiB,EAAEK,CAAC,EAAC,GAAIN,CAAC,CAAC;AAAA,IACnD,CAAC;AAAA,EACH;AACA,SAAO/B,EAAE,GAAG,QAAQ,CAAC+B,MAAM;AACzB,QAAI,QAAQ,IAAI,aAAa,gBAAgB,QAAQ,IAAI,aAAa,UAAUvC,IAAG;AACjF,YAAM6C,IAAInB,EAAE,IAAI,MAAMa,EAAE;AAAA,QACtB,OAAOC;AAAA,QACP,KAAKhC,EAAE;AAAA,QACP,OAAOA;AAAA,QACP,SAASmB;AAAA,MACjB,CAAO,CAAC;AACF,aAAO,KAAKkB,KAAK,CAAA,CAAE,EAAE,QAAQ,CAACC,MAAMN,EAAE,kBAAkB,IAAIM,CAAC,CAAC,GAAGvB,EAAEiB,GAAGK,CAAC;AAAA,IACzE;AACE,MAAAtB,EAAEiB,GAAGd,EAAE,IAAI,MAAMa,EAAE;AAAA,QACjB,OAAOC;AAAA,QACP,KAAKhC,EAAE;AAAA,QACP,OAAOA;AAAA,QACP,SAASmB;AAAA,MACjB,CAAO,CAAC,CAAC;AAAA,EACP,CAAC,GAAG,QAAQ,IAAI,aAAa,gBAAgBa,EAAE,UAAU,OAAOA,EAAE,UAAU,YAAY,OAAOA,EAAE,OAAO,eAAe,cAAc,CAACA,EAAE,OAAO,YAAY,SAAQ,EAAG,SAAS,eAAe,KAAK,QAAQ,KAAK;AAAA;AAAA,kBAEhMA,EAAE,GAAG,IAAI,GAAGC,KAAK,KAAK,EAAE,WAAW,EAAE,QAAQD,EAAE,QAAQC,CAAC,GAAGZ,IAAI,IAAIC,IAAI,IAAIU;AAC7F;AAAA;AAEA,SAASyB,GAAG9D,GAAG,GAAG,GAAG;AACnB,MAAIK;AACJ,QAAMC,IAAI,OAAO,KAAK;AACtB,EAAAD,IAAIC,IAAI,IAAI;AACZ,WAAS,EAAEiB,GAAGC,GAAG;AACf,UAAMC,IAAIsC,GAAE;AACZ,QAAIxC;AAAA;AAAA,KAEH,QAAQ,IAAI,aAAa,UAAUzB,MAAKA,GAAE,WAAW,OAAOyB,OAAOE,IAAIuC,GAAG/D,IAAI,IAAI,IAAI,OAAOsB,KAAKxB,GAAGwB,CAAC,GAAG,QAAQ,IAAI,aAAa,gBAAgB,CAACzB;AAClJ,YAAM,IAAI,MAAM;AAAA;AAAA,8BAEQ;AAC1B,IAAAyB,IAAIzB,IAAGyB,EAAE,GAAG,IAAIvB,CAAC,MAAMM,IAAI6B,GAAGnC,GAAG,GAAGK,GAAGkB,CAAC,IAAID,GAAGtB,GAAGK,GAAGkB,CAAC,GAAG,QAAQ,IAAI,aAAa,iBAAiB,EAAE,SAASA;AAC9G,UAAMG,IAAIH,EAAE,GAAG,IAAIvB,CAAC;AACpB,QAAI,QAAQ,IAAI,aAAa,gBAAgBwB,GAAG;AAC9C,YAAMG,IAAI,WAAW3B,GAAG8B,IAAIxB,IAAI6B,GAAGR,GAAG,GAAGtB,GAAGkB,GAAG,EAAE,IAAID,GAAGK,GAAGP,EAAE,CAAA,GAAIf,CAAC,GAAGkB,GAAG,EAAE;AAC1E,MAAAC,EAAE,WAAWM,CAAC,GAAG,OAAOP,EAAE,MAAM,MAAMI,CAAC,GAAGJ,EAAE,GAAG,OAAOI,CAAC;AAAA,IACzD;AACA,QAAI,QAAQ,IAAI,aAAa,gBAAgB9B,IAAG;AAC9C,YAAM8B,IAAIsC,GAAE;AACZ,UAAItC,KAAKA,EAAE;AAAA,MACX,CAACH,GAAG;AACF,cAAMM,IAAIH,EAAE,OAAOI,IAAI,cAAcD,IAAIA,EAAE,WAAWA,EAAE,WAAW,CAAA;AACnE,QAAAC,EAAE/B,CAAC,IAAI0B;AAAA,MACT;AAAA,IACF;AACA,WAAOA;AAAA,EACT;AACA,SAAO,EAAE,MAAM1B,GAAG;AACpB;AACA,SAASkE,GAAGlE,GAAG;AACb,QAAM,IAAI6D,GAAG7D,CAAC,GAAG,IAAI,CAAA;AACrB,aAAWK,KAAK,GAAG;AACjB,UAAMC,IAAI,EAAED,CAAC;AACb,IAAAC,EAAE,SAAS,EAAED,CAAC;AAAA,IACd4B,EAAE;AAAA,MACA,KAAK,MAAMjC,EAAEK,CAAC;AAAA,MACd,IAAI,GAAG;AACL,QAAAL,EAAEK,CAAC,IAAI;AAAA,MACT;AAAA,IACN,CAAK,KAAKE,GAAGD,CAAC,KAAKE,GAAGF,CAAC,OAAO,EAAED,CAAC;AAAA,IAC7BuD,GAAG5D,GAAGK,CAAC;AAAA,EACT;AACA,SAAO;AACT;AACA,MAAM8D,KAAK,OAAO,SAAS,OAAO,OAAO,WAAW;AACpD,OAAO,oBAAoB,OAAO,sBAAsB;AACxD,MAAMC,KAAK,OAAO,UAAU,UAAUC,KAAK,CAACrE,MAAMoE,GAAG,KAAKpE,CAAC,MAAM,mBAAmBsE,KAAK,MAAM;AAC/F;AACA,SAASC,MAAMvE,GAAG;AAChB,MAAIA,EAAE,WAAW,EAAG,QAAO4D,GAAG,GAAG5D,CAAC;AAClC,QAAM,IAAIA,EAAE,CAAC;AACb,SAAO,OAAO,KAAK,aAAawE,GAAGC,GAAG,OAAO;AAAA,IAC3C,KAAK;AAAA,IACL,KAAKH;AAAA,EACT,EAAI,CAAC,IAAIzC,EAAE,CAAC;AACZ;AACA,SAAS6C,GAAG1E,GAAG,GAAG;AAChB,WAAS,KAAKK,GAAG;AACf,WAAO,IAAI,QAAQ,CAACC,GAAG,MAAM;AAC3B,cAAQ,QAAQN,EAAE,MAAM,EAAE,MAAM,MAAMK,CAAC,GAAG;AAAA,QACxC,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,MAAMA;AAAA,MACd,CAAO,CAAC,EAAE,KAAKC,CAAC,EAAE,MAAM,CAAC;AAAA,IACrB,CAAC;AAAA,EACH;AACA,SAAO;AACT;AACA,MAAMqE,KAAK,CAAC3E,MAAMA,EAAC;AACnB,SAAS4E,GAAG5E,IAAI2E,IAAI,IAAI,CAAA,GAAI;AAC1B,QAAM,EAAE,cAAc,IAAI,SAAQ,IAAK,GAAGtE,IAAIkE,GAAG,MAAM,QAAQ;AAC/D,WAASjE,IAAI;AACX,IAAAD,EAAE,QAAQ;AAAA,EACZ;AACA,WAAS,IAAI;AACX,IAAAA,EAAE,QAAQ;AAAA,EACZ;AACA,QAAMkB,IAAI,IAAIC,MAAM;AAClB,IAAAnB,EAAE,SAASL,EAAE,GAAGwB,CAAC;AAAA,EACnB;AACA,SAAO;AAAA,IACL,UAAUgD,GAAGnE,CAAC;AAAA,IACd,OAAOC;AAAA,IACP,QAAQ;AAAA,IACR,aAAaiB;AAAA,EACjB;AACA;AACA,SAASsD,GAAG7E,GAAG;AACb,SAAO,MAAM,QAAQA,CAAC,IAAIA,IAAI,CAACA,CAAC;AAClC;AACA,SAAS8E,GAAG9E,GAAG;AACb,SAAOiE,GAAE;AACX;AACA,SAASc,GAAG/E,GAAG,GAAG,IAAI,CAAA,GAAI;AACxB,QAAM,EAAE,aAAaK,IAAIsE,IAAI,GAAGrE,EAAC,IAAK;AACtC,SAAOkD,EAAExD,GAAG0E,GAAGrE,GAAG,CAAC,GAAGC,CAAC;AACzB;AACA,SAAS0E,GAAGhF,GAAG,GAAG,IAAI,CAAA,GAAI;AACxB,QAAM,EAAE,aAAaK,GAAG,cAAcC,IAAI,UAAU,GAAG,EAAC,IAAK,GAAG,EAAE,aAAaiB,GAAG,OAAOC,GAAG,QAAQC,GAAG,UAAUC,MAAMkD,GAAGvE,GAAG,EAAE,cAAcC,EAAC,CAAE;AAChJ,SAAO;AAAA,IACL,MAAMyE,GAAG/E,GAAG,GAAG;AAAA,MACb,GAAG;AAAA,MACH,aAAauB;AAAA,IACnB,CAAK;AAAA,IACD,OAAOC;AAAA,IACP,QAAQC;AAAA,IACR,UAAUC;AAAA,EACd;AACA;AACA,MAAMuD,KAAKD;AACX,SAASE,GAAGlF,GAAG,IAAI,IAAI,GAAG;AACxB8E,EAAAA,GAAE,IAAKK,GAAGnF,GAAG,CAAC,IAAI,IAAIA,EAAC,IAAK4C,GAAG5C,CAAC;AAClC;AACA,SAASoF,GAAGpF,GAAG,GAAG,GAAG;AACnB,SAAOwD,EAAExD,GAAG,GAAG;AAAA,IACb,GAAG;AAAA,IACH,WAAW;AAAA,EACf,CAAG;AACH;AASA,MAAMqF,KAAIlB,KAAK,SAAS;AACxB,SAASmB,GAAGtF,GAAG;AACb,MAAI;AACJ,QAAM,IAAIuF,GAAEvF,CAAC;AACb,UAAQ,IAAI,GAAG,SAAS,QAAQ,MAAM,SAAS,IAAI;AACrD;AACA,SAASwF,MAAKxF,GAAG;AACf,QAAM,IAAI,CAACK,GAAGC,GAAG,GAAGiB,OAAOlB,EAAE,iBAAiBC,GAAG,GAAGiB,CAAC,GAAG,MAAMlB,EAAE,oBAAoBC,GAAG,GAAGiB,CAAC,IAAI,IAAIU,EAAE,MAAM;AACzG,UAAM5B,IAAIwE,GAAGU,GAAEvF,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAACM,MAAMA,KAAK,IAAI;AAC7C,WAAOD,EAAE,MAAM,CAACC,MAAM,OAAOA,KAAK,QAAQ,IAAID,IAAI;AAAA,EACpD,CAAC;AACD,SAAO+E,GAAG,MAAM;AACd,QAAI/E,GAAGC;AACP,WAAO;AAAA,OACJD,KAAKC,IAAI,EAAE,WAAW,QAAQA,MAAM,SAAS,SAASA,EAAE,IAAI,CAAC,MAAMgF,GAAG,CAAC,CAAC,OAAO,QAAQjF,MAAM,SAASA,IAAI,CAACgF,EAAC,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;AAAA,MACtIR,GAAGU,GAAE,EAAE,QAAQvF,EAAE,CAAC,IAAIA,EAAE,CAAC,CAAC,CAAC;AAAA,MAC3B6E,GAAGY,GAAG,EAAE,QAAQzF,EAAE,CAAC,IAAIA,EAAE,CAAC,CAAC,CAAC;AAAA,MAC5BuF,GAAE,EAAE,QAAQvF,EAAE,CAAC,IAAIA,EAAE,CAAC,CAAC;AAAA,IAC7B;AAAA,EACE,GAAG,CAAC,CAACK,GAAGC,GAAG,GAAGiB,CAAC,GAAGC,GAAGC,MAAM;AACzB,QAAI,CAACpB,GAAG,UAAU,CAACC,GAAG,UAAU,CAAC,GAAG,OAAQ;AAC5C,UAAMoB,IAAI2C,GAAG9C,CAAC,IAAI,EAAE,GAAGA,MAAMA,GAAGI,IAAItB,EAAE,QAAQ,CAACyB,MAAMxB,EAAE,QAAQ,CAACyB,MAAM,EAAE,IAAI,CAACG,MAAM,EAAEJ,GAAGC,GAAGG,GAAGR,CAAC,CAAC,CAAC,CAAC;AAClG,IAAAD,EAAE,MAAM;AACN,MAAAE,EAAE,QAAQ,CAACG,MAAMA,EAAC,CAAE;AAAA,IACtB,CAAC;AAAA,EACH,GAAG,EAAE,OAAO,QAAQ;AACtB;AACA,MAAM4D,KAAK,OAAO,aAAa,MAAM,aAAa,OAAO,SAAS,MAAM,SAAS,OAAO,SAAS,MAAM,SAAS,OAAO,OAAO,MAAM,OAAO,CAAA,GAAIC,KAAK,2BAA2BC,KAAqB,gBAAAC,GAAE;AACtM,SAASA,KAAK;AACZ,SAAOF,MAAMD,OAAOA,GAAGC,EAAE,IAAID,GAAGC,EAAE,KAAK,CAAA,IAAKD,GAAGC,EAAE;AACnD;AACA,SAASG,GAAG9F,GAAG,GAAG;AAChB,SAAO4F,GAAG5F,CAAC,KAAK;AAClB;AACA,SAAS+F,GAAG/F,GAAG;AACb,SAAOA,KAAK,OAAO,QAAQA,aAAa,MAAM,QAAQA,aAAa,MAAM,QAAQA,aAAa,OAAO,SAAS,OAAOA,KAAK,YAAY,YAAY,OAAOA,KAAK,WAAW,WAAW,OAAOA,KAAK,WAAW,WAAW,OAAO,MAAMA,CAAC,IAAI,QAAQ;AAClP;AACA,MAAMgG,KAAK;AAAA,EACT,SAAS;AAAA,IACP,MAAM,CAAChG,MAAMA,MAAM;AAAA,IACnB,OAAO,CAACA,MAAM,OAAOA,CAAC;AAAA,EAC1B;AAAA,EACE,QAAQ;AAAA,IACN,MAAM,CAACA,MAAM,KAAK,MAAMA,CAAC;AAAA,IACzB,OAAO,CAACA,MAAM,KAAK,UAAUA,CAAC;AAAA,EAClC;AAAA,EACE,QAAQ;AAAA,IACN,MAAM,CAACA,MAAM,OAAO,WAAWA,CAAC;AAAA,IAChC,OAAO,CAACA,MAAM,OAAOA,CAAC;AAAA,EAC1B;AAAA,EACE,KAAK;AAAA,IACH,MAAM,CAACA,MAAMA;AAAA,IACb,OAAO,CAACA,MAAM,OAAOA,CAAC;AAAA,EAC1B;AAAA,EACE,QAAQ;AAAA,IACN,MAAM,CAACA,MAAMA;AAAA,IACb,OAAO,CAACA,MAAM,OAAOA,CAAC;AAAA,EAC1B;AAAA,EACE,KAAK;AAAA,IACH,MAAM,CAACA,MAAM,IAAI,IAAI,KAAK,MAAMA,CAAC,CAAC;AAAA,IAClC,OAAO,CAACA,MAAM,KAAK,UAAU,MAAM,KAAKA,EAAE,SAAS,CAAC;AAAA,EACxD;AAAA,EACE,KAAK;AAAA,IACH,MAAM,CAACA,MAAM,IAAI,IAAI,KAAK,MAAMA,CAAC,CAAC;AAAA,IAClC,OAAO,CAACA,MAAM,KAAK,UAAU,MAAM,KAAKA,CAAC,CAAC;AAAA,EAC9C;AAAA,EACE,MAAM;AAAA,IACJ,MAAM,CAACA,MAAM,IAAI,KAAKA,CAAC;AAAA,IACvB,OAAO,CAACA,MAAMA,EAAE,YAAW;AAAA,EAC/B;AACA,GAAGiG,KAAK;AACR,SAASC,GAAGlG,GAAG,GAAG,GAAGK,IAAI,CAAA,GAAI;AAC3B,MAAIC;AACJ,QAAM,EAAE,OAAO,IAAI,OAAO,MAAMiB,IAAI,IAAI,wBAAwBC,IAAI,IAAI,eAAeC,IAAI,IAAI,eAAeC,IAAI,IAAI,SAASC,GAAG,QAAQG,IAAIuD,IAAG,aAAatD,GAAG,SAASG,IAAI,CAACe,MAAM;AACnL,YAAQ,MAAMA,CAAC;AAAA,EACjB,GAAG,eAAeX,EAAC,IAAKjC,GAAGkC,KAAKZ,IAAIwE,KAAKtE,GAAG,CAAC,GAAGW,IAAIP,EAAE,MAAMsD,GAAEvF,CAAC,CAAC;AAChE,MAAI,CAAC,EAAG,KAAI;AACV,QAAI8F,GAAG,qBAAqB,MAAMT,IAAG,YAAY,EAAC;AAAA,EACpD,SAASpC,GAAG;AACV,IAAAf,EAAEe,CAAC;AAAA,EACL;AACA,MAAI,CAAC,EAAG,QAAOV;AACf,QAAME,IAAI8C,GAAE,CAAC,GAAG1C,IAAIkD,GAAGtD,CAAC,GAAGM,KAAKzC,IAAID,EAAE,gBAAgB,QAAQC,MAAM,SAASA,IAAI0F,GAAGnD,CAAC,GAAG,EAAE,OAAOG,GAAG,QAAQM,EAAC,IAAK2B,GAAG1C,GAAG,CAACU,MAAMb,EAAEa,CAAC,GAAG;AAAA,IACnI,OAAO;AAAA,IACP,MAAM1B;AAAA,IACN,aAAaQ;AAAA,EACjB,CAAG;AACDyB,EAAAA,EAAEhB,GAAG,MAAMG,EAAC,GAAI,EAAE,OAAO,GAAG;AAC5B,MAAIY,IAAI;AACR,QAAMlB,IAAI,CAACY,MAAM;AACf,IAAAX,KAAK,CAACiB,KAAKZ,EAAEM,CAAC;AAAA,EAChB,GAAGmD,IAAI,CAACnD,MAAM;AACZ,IAAAX,KAAK,CAACiB,KAAKT,EAAEG,CAAC;AAAA,EAChB;AACA,EAAAnB,KAAKN,MAAM,aAAa,UAAUgE,GAAE1D,GAAG,WAAWO,GAAG,EAAE,SAAS,IAAI,IAAImD,GAAE1D,GAAGmE,IAAIG,CAAC,IAAI9D,IAAI4C,GAAG,MAAM;AACjG,IAAA3B,IAAI,IAAIZ,EAAC;AAAA,EACX,CAAC,IAAIA,EAAC;AACN,WAASe,EAAET,GAAGC,GAAG;AACf,QAAIpB,GAAG;AACL,YAAMqB,IAAI;AAAA,QACR,KAAKX,EAAE;AAAA,QACP,UAAUS;AAAA,QACV,UAAUC;AAAA,QACV,aAAa;AAAA,MACrB;AACM,MAAApB,EAAE,cAAc,aAAa,UAAU,IAAI,aAAa,WAAWqB,CAAC,IAAI,IAAI,YAAY8C,IAAI,EAAE,QAAQ9C,EAAC,CAAE,CAAC;AAAA,IAC5G;AAAA,EACF;AACA,WAASf,EAAEa,GAAG;AACZ,QAAI;AACF,YAAMC,IAAI,EAAE,QAAQV,EAAE,KAAK;AAC3B,UAAIS,KAAK;AACP,QAAAS,EAAER,GAAG,IAAI,GAAG,EAAE,WAAWV,EAAE,KAAK;AAAA,WAC7B;AACH,cAAMW,IAAIJ,EAAE,MAAME,CAAC;AACnB,QAAAC,MAAMC,MAAM,EAAE,QAAQX,EAAE,OAAOW,CAAC,GAAGO,EAAER,GAAGC,CAAC;AAAA,MAC3C;AAAA,IACF,SAASD,GAAG;AACV,MAAAhB,EAAEgB,CAAC;AAAA,IACL;AAAA,EACF;AACA,WAASR,EAAEO,GAAG;AACZ,UAAMC,IAAID,IAAIA,EAAE,WAAW,EAAE,QAAQT,EAAE,KAAK;AAC5C,QAAIU,KAAK;AACP,aAAOzB,KAAKgB,KAAK,QAAQ,EAAE,QAAQD,EAAE,OAAOO,EAAE,MAAMN,CAAC,CAAC,GAAGA;AAC3D,QAAI,CAACQ,KAAKvB,GAAG;AACX,YAAMyB,IAAIJ,EAAE,KAAKG,CAAC;AAClB,aAAO,OAAOxB,KAAK,aAAaA,EAAEyB,GAAGV,CAAC,IAAII,MAAM,YAAY,CAAC,MAAM,QAAQM,CAAC,IAAI;AAAA,QAC9E,GAAGV;AAAA,QACH,GAAGU;AAAA,MACX,IAAUA;AAAA,IACN,MAAO,QAAO,OAAOD,KAAK,WAAWA,IAAIH,EAAE,KAAKG,CAAC;AAAA,EACnD;AACA,WAASP,EAAEM,GAAG;AACZ,QAAI,EAAEA,KAAKA,EAAE,gBAAgB,IAAI;AAC/B,UAAIA,KAAKA,EAAE,OAAO,MAAM;AACtB,QAAAV,EAAE,QAAQE;AACV;AAAA,MACF;AACA,UAAI,EAAEQ,KAAKA,EAAE,QAAQT,EAAE,QAAQ;AAC7B,QAAAQ,EAAC;AACD,YAAI;AACF,gBAAME,IAAIH,EAAE,MAAMR,EAAE,KAAK;AACzB,WAACU,MAAM,UAAUA,GAAG,aAAaC,OAAOX,EAAE,QAAQG,EAAEO,CAAC;AAAA,QACvD,SAASC,GAAG;AACV,UAAAhB,EAAEgB,CAAC;AAAA,QACL,UAAC;AACC,UAAAD,IAAIL,GAAGU,CAAC,IAAIA,EAAC;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAASR,EAAEG,GAAG;AACZ,IAAAN,EAAEM,EAAE,MAAM;AAAA,EACZ;AACA,SAAOV;AACT;AACA,SAAS8D,GAAGrG,GAAG,GAAG,IAAI,CAAA,GAAI;AACxB,QAAM,EAAE,QAAQK,IAAIgF,GAAC,IAAK;AAC1B,SAAOa,GAAGlG,GAAG,GAAGK,GAAG,cAAc,CAAC;AACpC;AAsEA,SAASiG,KAAK;AACZ,SAAO,OAAO,SAAS,OAAO,OAAO,aAAa,OAAO,WAAU,IAAK,GAAG,KAAK,IAAG,CAAE,IAAI,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,UAAU,GAAG,CAAC,CAAC;AACrI;AACA,SAASC,GAAGvG,GAAG;AACb,QAAM,IAAI;AAAA,IACR,MAAMA,EAAE;AAAA,IACR,UAAUA,EAAE;AAAA,IACZ,WAAWA,EAAE,UAAU,YAAW;AAAA,EACtC;AACE,SAAOA,EAAE,cAAc,EAAE,YAAY;AAAA,IACnC,GAAGA,EAAE;AAAA,IACL,WAAWA,EAAE,UAAU,UAAU,YAAW;AAAA,EAChD,IAAMA,EAAE,eAAe,EAAE,aAAaA,EAAE,WAAW,IAAI,CAAC,OAAO;AAAA,IAC3D,GAAG;AAAA,IACH,WAAW,EAAE,UAAU,YAAW;AAAA,EACtC,EAAI,IAAI;AACR;AACA,SAASwG,GAAGxG,GAAG;AACb,QAAM,IAAI;AAAA,IACR,MAAMA,EAAE;AAAA,IACR,UAAUA,EAAE;AAAA,IACZ,WAAW,IAAI,KAAKA,EAAE,SAAS;AAAA,EACnC;AACE,SAAOA,EAAE,cAAc,EAAE,YAAY;AAAA,IACnC,GAAGA,EAAE;AAAA,IACL,WAAW,IAAI,KAAKA,EAAE,UAAU,SAAS;AAAA,EAC7C,IAAMA,EAAE,eAAe,EAAE,aAAaA,EAAE,WAAW,IAAI,CAAC,OAAO;AAAA,IAC3D,GAAG;AAAA,IACH,WAAW,IAAI,KAAK,EAAE,SAAS;AAAA,EACnC,EAAI,IAAI;AACR;AACA,MAAMyG,KAAqB,gBAAA3C,GAAG,qBAAqB,MAAM;AACvD,QAAM9D,IAAI6B,EAAE;AAAA,IACV,eAAe;AAAA,IACf,oBAAoB;AAAA,IACpB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,sBAAsB;AAAA,EAC1B,CAAG,GAAG,IAAIA,EAAE,CAAA,CAAE,GAAG,IAAIA,EAAE,EAAE,GAAGxB,IAAIwB,EAAEyE,GAAE,CAAE,GAAGhG,IAAIuB,EAAE,EAAE,GAAG,IAAIA,EAAE,CAAA,CAAE,GAAGN,IAAIM,EAAE,IAAI,GAAGL,IAAIS,EAAE,MAAM,EAAE,QAAQ,IAAI,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,cAAc,EAAE,GAAGR,IAAIQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC,GAAGP,IAAIO,EAAE,MAAM;AACnM,QAAIyE,IAAI;AACR,aAASC,IAAI,EAAE,OAAOA,KAAK,KAAK,EAAE,MAAMA,CAAC,GAAG,YAAYA;AACtD,MAAAD;AACF,WAAOA;AAAA,EACT,CAAC,GAAG/E,IAAIM,EAAE,MAAM,EAAE,MAAM,SAAS,IAAI,EAAE,KAAK,GAAGH,IAAIG,EAAE,OAAO;AAAA,IAC1D,SAAST,EAAE;AAAA,IACX,SAASC,EAAE;AAAA,IACX,WAAWC,EAAE;AAAA,IACb,WAAWC,EAAE;AAAA,IACb,cAAc,EAAE;AAAA,EACpB,EAAI;AACF,WAASI,EAAE2E,GAAG;AACZ,IAAA1G,EAAE,QAAQ,EAAE,GAAGA,EAAE,OAAO,GAAG0G,EAAC,GAAI1G,EAAE,MAAM,sBAAsBqD,EAAC,GAAID,EAAC,IAAKpD,EAAE,MAAM,sBAAsB0C,EAAC;AAAA,EAC1G;AACA,WAASR,EAAEwE,GAAGC,IAAI,QAAQ;AACxB,UAAM,IAAI;AAAA,MACR,GAAGD;AAAA,MACH,IAAIJ,GAAE;AAAA,MACN,WAA2B,oBAAI,KAAI;AAAA,MACnC,QAAQK;AAAA,MACR,QAAQ3G,EAAE,MAAM;AAAA,IACtB;AACI,QAAIA,EAAE,MAAM,mBAAmB,CAACA,EAAE,MAAM,gBAAgB,CAAC;AACvD,aAAO,EAAE;AACX,QAAIM,EAAE;AACJ,aAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE;AAC5B,QAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,MAAM,EAAE,QAAQ,EAAE,MAAM,MAAM,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,SAASN,EAAE,MAAM,iBAAiB,EAAE,MAAM,SAASA,EAAE,MAAM,eAAe;AAC1K,YAAM4G,IAAI,EAAE,MAAM,SAAS5G,EAAE,MAAM;AACnC,QAAE,QAAQ,EAAE,MAAM,MAAM4G,CAAC,GAAG,EAAE,SAASA;AAAA,IACzC;AACA,WAAO5G,EAAE,MAAM,sBAAsB2C,EAAE,CAAC,GAAG,EAAE;AAAA,EAC/C;AACA,WAASL,IAAI;AACX,IAAAhC,EAAE,QAAQ,IAAI,EAAE,QAAQ,IAAIiB,EAAE,QAAQ+E,GAAE;AAAA,EAC1C;AACA,WAAS/D,EAAEmE,GAAG;AACZ,QAAI,CAACpG,EAAE,SAAS,EAAE,MAAM,WAAW;AACjC,aAAOA,EAAE,QAAQ,IAAI,EAAE,QAAQ,CAAA,GAAIiB,EAAE,QAAQ,MAAM;AACrD,UAAMoF,IAAIpF,EAAE,OAAO,IAAI,EAAE,MAAM,MAAM,CAACsF,MAAMA,EAAE,UAAU,GAAGD,IAAI;AAAA,MAC7D,IAAID;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA;AAAA,MAEN,WAAW;AAAA,MACX,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,SAAS,EAAE,MAAM,CAAC,GAAG,WAAW;AAAA,MAChC,WAA2B,oBAAI,KAAI;AAAA,MACnC,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,oBAAoB,IAAI,SAAS;AAAA,MACjC,mBAAmB,EAAE,MAAM,IAAI,CAACE,MAAMA,EAAE,EAAE;AAAA,MAC1C,UAAU,EAAE,aAAaH,EAAC;AAAA,IAChC;AACI,MAAE,MAAM,QAAQ,CAACG,MAAM;AACrB,MAAAA,EAAE,oBAAoBF;AAAA,IACxB,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,EAAE,OAAOC,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,SAAS,GAAG5G,EAAE,MAAM,sBAAsB8C,EAAE,EAAE,OAAO8D,CAAC;AACzG,UAAME,IAAIH;AACV,WAAOrG,EAAE,QAAQ,IAAI,EAAE,QAAQ,CAAA,GAAIiB,EAAE,QAAQ,MAAMuF;AAAA,EACrD;AACA,WAAStE,IAAI;AACX,IAAAlC,EAAE,QAAQ,IAAI,EAAE,QAAQ,IAAIiB,EAAE,QAAQ;AAAA,EACxC;AACA,WAASkB,EAAEiE,GAAG;AACZ,QAAI,CAAClF,EAAE,MAAO,QAAO;AACrB,UAAMmF,IAAI,EAAE,MAAM,EAAE,KAAK;AACzB,QAAI,CAACA,EAAE;AACL,aAAO,OAAO,UAAU,OAAOA,EAAE,sBAAsB,QAAQ,KAAK,uCAAuCA,EAAE,kBAAkB,GAAG;AACpI,QAAI;AACF,UAAIA,EAAE,SAAS,WAAWA,EAAE;AAC1B,iBAAS,IAAIA,EAAE,kBAAkB,SAAS,GAAG,KAAK,GAAG,KAAK;AACxD,gBAAMC,IAAID,EAAE,kBAAkB,CAAC,GAAGG,IAAI,EAAE,MAAM,KAAK,CAACD,MAAMA,EAAE,OAAOD,CAAC;AACpE,UAAAE,KAAK/D,EAAE+D,GAAGJ,CAAC;AAAA,QACb;AAAA;AAEA,QAAA3D,EAAE4D,GAAGD,CAAC;AACR,aAAO,EAAE,SAAS1G,EAAE,MAAM,sBAAsBiD,EAAE0D,CAAC,GAAG;AAAA,IACxD,SAAS,GAAG;AACV,aAAO,OAAO,UAAU,OAAO,QAAQ,MAAM,gBAAgB,CAAC,GAAG;AAAA,IACnE;AAAA,EACF;AACA,WAAS9D,EAAE6D,GAAG;AACZ,QAAI,CAACjF,EAAE,MAAO,QAAO;AACrB,UAAMkF,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC7B,QAAI;AACF,UAAIA,EAAE,SAAS,WAAWA,EAAE;AAC1B,mBAAW,KAAKA,EAAE,mBAAmB;AACnC,gBAAMC,IAAI,EAAE,MAAM,KAAK,CAACE,MAAMA,EAAE,OAAO,CAAC;AACxC,UAAAF,KAAK5D,EAAE4D,GAAGF,CAAC;AAAA,QACb;AAAA;AAEA,QAAA1D,EAAE2D,GAAGD,CAAC;AACR,aAAO,EAAE,SAAS1G,EAAE,MAAM,sBAAsBkD,EAAEyD,CAAC,GAAG;AAAA,IACxD,SAAS,GAAG;AACV,aAAO,OAAO,UAAU,OAAO,QAAQ,MAAM,gBAAgB,CAAC,GAAG;AAAA,IACnE;AAAA,EACF;AACA,WAAS5D,EAAE2D,GAAGC,GAAG;AACf,KAACD,EAAE,SAAS,SAASA,EAAE,SAAS,aAAaC,KAAK,OAAOA,EAAE,OAAO,cAAcA,EAAE,IAAID,EAAE,MAAMA,EAAE,aAAa,MAAM;AAAA,EACrH;AACA,WAAS1D,EAAE0D,GAAGC,GAAG;AACf,KAACD,EAAE,SAAS,SAASA,EAAE,SAAS,aAAaC,KAAK,OAAOA,EAAE,OAAO,cAAcA,EAAE,IAAID,EAAE,MAAMA,EAAE,YAAY,MAAM;AAAA,EACpH;AACA,WAASpD,IAAI;AACX,UAAMoD,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQC,IAAI,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,SAAS;AACxF,WAAO;AAAA,MACL,YAAY,CAAC,GAAG,EAAE,KAAK;AAAA,MACvB,cAAc,EAAE;AAAA,MAChB,iBAAiB,EAAE,MAAM;AAAA,MACzB,sBAAsBD;AAAA,MACtB,wBAAwB,EAAE,MAAM,SAASA;AAAA,MACzC,iBAAiBC,EAAE,SAAS,IAAI,IAAI,KAAK,KAAK,IAAI,GAAGA,EAAE,IAAI,CAAC,MAAM,EAAE,QAAO,CAAE,CAAC,CAAC,IAAI;AAAA,MACnF,iBAAiBA,EAAE,SAAS,IAAI,IAAI,KAAK,KAAK,IAAI,GAAGA,EAAE,IAAI,CAAC,MAAM,EAAE,QAAO,CAAE,CAAC,CAAC,IAAI;AAAA,IACzF;AAAA,EACE;AACA,WAASpD,IAAI;AACX,MAAE,QAAQ,CAAA,GAAI,EAAE,QAAQ;AAAA,EAC1B;AACA,WAASlB,EAAEqE,GAAGC,GAAG;AACf,WAAO,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,YAAYD,MAAMC,MAAM,UAAU,EAAE,aAAaA,EAAE;AAAA,EACpF;AACA,WAASP,EAAEM,GAAGC,GAAG;AACf,UAAM,IAAI,EAAE,MAAM,KAAK,CAACC,MAAMA,EAAE,OAAOF,CAAC;AACxC,UAAM,EAAE,aAAa,IAAI,EAAE,qBAAqBC;AAAA,EAClD;AACA,WAASjD,EAAEgD,GAAGC,GAAG,GAAGC,IAAI,WAAWE,GAAG;AACpC,UAAMD,IAAI;AAAA,MACR,MAAM;AAAA,MACN,MAAM,KAAK,EAAE,SAAS,IAAI,GAAGH,CAAC,IAAI,EAAE,CAAC,CAAC,KAAKA;AAAA,MAC3C,WAAW;AAAA,MACX,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,SAASA;AAAA,MACT,UAAU,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,IAAI;AAAA,MACrC,YAAY;AAAA;AAAA,MAEZ,YAAYC;AAAA,MACZ,iBAAiB;AAAA,MACjB,cAAcC;AAAA,MACd,aAAaE;AAAA,IACnB;AACI,WAAO5E,EAAE2E,CAAC;AAAA,EACZ;AACA,MAAIzE,IAAI;AACR,WAASM,IAAI;AACX,WAAO,SAAS,OAAO,CAAC,OAAO,qBAAqBN,IAAI,IAAI,iBAAiB,yBAAyB,GAAGA,EAAE,iBAAiB,WAAW,CAACsE,MAAM;AAC5I,YAAMC,IAAID,EAAE;AACZ,UAAI,CAACC,KAAK,OAAOA,KAAK,SAAU;AAChC,YAAM,IAAIH,GAAGG,CAAC;AACd,QAAE,aAAatG,EAAE,UAAU,EAAE,SAAS,eAAe,EAAE,aAAa,EAAE,MAAM,KAAK,EAAE,GAAG,EAAE,WAAW,QAAQ,OAAM,CAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,SAAS,KAAK,EAAE,SAAS,eAAe,EAAE,eAAe,EAAE,MAAM,KAAK,GAAG,EAAE,WAAW,IAAI,CAACuG,OAAO,EAAE,GAAGA,GAAG,QAAQ,OAAM,EAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,SAAS;AAAA,IACpS,CAAC;AAAA,EACH;AACA,WAASjE,EAAE+D,GAAG;AACZ,QAAI,CAACtE,EAAG;AACR,UAAMuE,IAAI;AAAA,MACR,MAAM;AAAA,MACN,WAAWD;AAAA,MACX,UAAUrG,EAAE;AAAA,MACZ,WAA2B,oBAAI,KAAI;AAAA,IACzC;AACI,IAAA+B,EAAE,YAAYmE,GAAGI,CAAC,CAAC;AAAA,EACrB;AACA,WAAS7D,EAAE4D,GAAGC,GAAG;AACf,QAAI,CAACvE,EAAG;AACR,UAAM,IAAI;AAAA,MACR,MAAM;AAAA,MACN,YAAY,CAAC,GAAGsE,GAAGC,CAAC;AAAA,MACpB,UAAUtG,EAAE;AAAA,MACZ,WAA2B,oBAAI,KAAI;AAAA,IACzC;AACI,IAAA+B,EAAE,YAAYmE,GAAG,CAAC,CAAC;AAAA,EACrB;AACA,WAAStD,EAAEyD,GAAG;AACZ,QAAI,CAACtE,EAAG;AACR,UAAMuE,IAAI;AAAA,MACR,MAAM;AAAA,MACN,WAAWD;AAAA,MACX,UAAUrG,EAAE;AAAA,MACZ,WAA2B,oBAAI,KAAI;AAAA,IACzC;AACI,IAAA+B,EAAE,YAAYmE,GAAGI,CAAC,CAAC;AAAA,EACrB;AACA,WAASzD,EAAEwD,GAAG;AACZ,QAAI,CAACtE,EAAG;AACR,UAAMuE,IAAI;AAAA,MACR,MAAM;AAAA,MACN,WAAWD;AAAA,MACX,UAAUrG,EAAE;AAAA,MACZ,WAA2B,oBAAI,KAAI;AAAA,IACzC;AACI,IAAA+B,EAAE,YAAYmE,GAAGI,CAAC,CAAC;AAAA,EACrB;AACA,QAAMxD,IAAIkD,GAAG,4BAA4B,MAAM;AAAA,IAC7C,YAAY;AAAA,MACV,MAAM,CAACK,MAAM;AACX,YAAI;AACF,iBAAO,KAAK,MAAMA,CAAC;AAAA,QACrB,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,OAAO,CAACA,MAAMA,IAAI,KAAK,UAAUA,CAAC,IAAI;AAAA,IAC5C;AAAA,EACA,CAAG;AACD,WAASrD,IAAI;AACX,QAAI,EAAE,OAAO,SAAS;AACpB,UAAI;AACF,cAAMqD,IAAIvD,EAAE;AACZ,QAAAuD,KAAK,MAAM,QAAQA,EAAE,UAAU,MAAM,EAAE,QAAQA,EAAE,WAAW,IAAI,CAACC,OAAO;AAAA,UACtE,GAAGA;AAAA,UACH,WAAW,IAAI,KAAKA,EAAE,SAAS;AAAA,QACzC,EAAU,GAAG,EAAE,QAAQD,EAAE,gBAAgB;AAAA,MACnC,SAASA,GAAG;AACV,eAAO,UAAU,OAAO,QAAQ,MAAM,+CAA+CA,CAAC;AAAA,MACxF;AAAA,EACJ;AACA,WAASK,IAAI;AACX,QAAI,EAAE,OAAO,SAAS;AACpB,UAAI;AACF,QAAA5D,EAAE,QAAQ;AAAA,UACR,YAAY,EAAE,MAAM,IAAI,CAACuD,OAAO;AAAA,YAC9B,GAAGA;AAAA,YACH,WAAWA,EAAE,UAAU,YAAW;AAAA,UAC9C,EAAY;AAAA,UACF,cAAc,EAAE;AAAA,QAC1B;AAAA,MACM,SAASA,GAAG;AACV,eAAO,UAAU,OAAO,QAAQ,MAAM,6CAA6CA,CAAC;AAAA,MACtF;AAAA,EACJ;AACA,WAAStD,IAAI;AACXI,IAAAA;AAAAA,MACE,CAAC,GAAG,CAAC;AAAA,MACL,MAAM;AACJ,QAAAxD,EAAE,MAAM,qBAAqB+G,EAAC;AAAA,MAChC;AAAA,MACA,EAAE,MAAM,GAAE;AAAA,IAChB;AAAA,EACE;AACA,SAAO;AAAA;AAAA,IAEL,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,QAAQ/G;AAAA,IACR,UAAUK;AAAA,IACV,eAAeyB;AAAA;AAAA,IAEf,SAASN;AAAA,IACT,SAASC;AAAA,IACT,WAAWC;AAAA,IACX,WAAWC;AAAA;AAAA,IAEX,WAAWI;AAAA,IACX,cAAcG;AAAA,IACd,YAAYI;AAAA,IACZ,aAAaC;AAAA,IACb,aAAaC;AAAA,IACb,MAAMC;AAAA,IACN,MAAMI;AAAA,IACN,OAAOU;AAAA,IACP,kBAAkBlB;AAAA,IAClB,aAAaiB;AAAA,IACb,kBAAkB8C;AAAA,IAClB,WAAW1C;AAAA,EACf;AACA,CAAC;AACD,MAAMsD,GAAG;AAAA;AAAA;AAAA;AAAA,EAIP,OAAO;AAAA,EACP;AAAA,EACA,iBAAiC,oBAAI,IAAG;AAAA;AAAA,EAExC,qBAAqC,oBAAI,IAAG;AAAA;AAAA,EAE5C,sBAAsC,oBAAI,IAAG;AAAA;AAAA,EAE7C,gBAAgC,oBAAI,IAAG;AAAA;AAAA,EAEvC,0BAA0C,oBAAI,IAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjD,YAAY,IAAI,IAAI;AAClB,QAAIA,GAAG;AACL,aAAOA,GAAG;AACZ,IAAAA,GAAG,QAAQ,MAAM,KAAK,UAAU;AAAA,MAC9B,gBAAgB,EAAE,kBAAkB;AAAA,MACpC,OAAO,EAAE,SAAS;AAAA,MAClB,gBAAgB,EAAE,kBAAkB;AAAA,MACpC,cAAc,EAAE;AAAA,IACtB;AAAA,EACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,GAAG,GAAG;AACnB,SAAK,cAAc,IAAI,GAAG,CAAC;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,yBAAyB,GAAG,GAAG;AAC7B,SAAK,wBAAwB,IAAI,GAAG,CAAC;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiB,GAAG,GAAG3G,GAAG;AACxB,SAAK,oBAAoB,IAAI,CAAC,KAAK,KAAK,oBAAoB,IAAI,GAAmB,oBAAI,IAAG,CAAE,GAAG,KAAK,oBAAoB,IAAI,CAAC,EAAE,IAAI,GAAGA,CAAC;AAAA,EACzI;AAAA;AAAA;AAAA;AAAA,EAIA,iBAAiB,GAAG,GAAG;AACrB,WAAO,KAAK,oBAAoB,IAAI,CAAC,GAAG,IAAI,CAAC;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,uBAAuB,GAAG,GAAG;AAC3B,QAAI,CAAC,EAAG;AACR,UAAMA,IAAoB,oBAAI,IAAG,GAAIC,IAAoB,oBAAI,IAAG;AAChE,QAAI,OAAO,EAAE,YAAY;AACvB,QAAE,SAAQ,EAAG,QAAQ,CAAC,CAAC,GAAGiB,CAAC,MAAM;AAC/B,aAAK,iBAAiB,GAAGA,GAAGlB,GAAGC,CAAC;AAAA,MAClC,CAAC;AAAA,aACM,aAAa;AACpB,iBAAW,CAAC,GAAGiB,CAAC,KAAK;AACnB,aAAK,iBAAiB,GAAGA,GAAGlB,GAAGC,CAAC;AAAA,QAC/B,MAAK,OAAO,KAAK,YAAY,OAAO,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAGiB,CAAC,MAAM;AACtE,WAAK,iBAAiB,GAAGA,GAAGlB,GAAGC,CAAC;AAAA,IAClC,CAAC;AACD,SAAK,eAAe,IAAI,GAAGD,CAAC,GAAG,KAAK,mBAAmB,IAAI,GAAGC,CAAC;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAiB,GAAG,GAAGD,GAAGC,GAAG;AAC3B,SAAK,gBAAgB,CAAC,IAAIA,EAAE,IAAI,GAAG,CAAC,IAAID,EAAE,IAAI,GAAG,CAAC;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,GAAG;AACjB,WAAO,eAAe,KAAK,CAAC,KAAK,EAAE,SAAS;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,qBAAqB,GAAG,IAAI,IAAI;AACpC,UAAM,EAAE,SAASA,GAAG,WAAWC,EAAC,IAAK,GAAG,IAAI,KAAK,kBAAkBD,GAAGC,CAAC;AACvE,QAAI,EAAE,WAAW;AACf,aAAO;AAAA,QACL,MAAM,EAAE;AAAA,QACR,eAAe,CAAA;AAAA,QACf,oBAAoB;AAAA,QACpB,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,YAAY;AAAA,MACpB;AACI,UAAMiB,IAAI,YAAY,IAAG,GAAIC,IAAI,CAAA;AACjC,QAAIC,IAAI,IAAIC,IAAI,IAAIC;AACpB,UAAMG,IAAI,KAAK,iBAAiBzB,GAAGC,CAAC,GAAGyB,IAAI,EAAE,kBAAkBD,KAAK,KAAK,QAAQ;AACjF,IAAAC,KAAK,EAAE,UAAUJ,IAAI,KAAK,gBAAgB,CAAC;AAC3C,eAAWa,KAAK;AACd,UAAI;AACF,cAAMC,IAAI,MAAM,KAAK,cAAcD,GAAG,GAAG,EAAE,OAAO;AAClD,YAAIhB,EAAE,KAAKiB,CAAC,GAAG,CAACA,EAAE,SAAS;AACzB,UAAAhB,IAAI;AACJ;AAAA,QACF;AAAA,MACF,SAASgB,GAAG;AACV,cAAMM,IAAI;AAAA,UACR,SAAS;AAAA,UACT,OAAON,aAAa,QAAQA,IAAI,IAAI,MAAM,OAAOA,CAAC,CAAC;AAAA,UACnD,eAAe;AAAA,UACf,QAAQD;AAAA,QAClB;AACQ,QAAAhB,EAAE,KAAKuB,CAAC,GAAGtB,IAAI;AACf;AAAA,MACF;AACF,QAAIM,KAAKN,KAAKE,KAAK,EAAE;AACnB,UAAI;AACF,aAAK,gBAAgB,GAAGA,CAAC,GAAGD,IAAI;AAAA,MAClC,SAASc,GAAG;AACV,gBAAQ,MAAM,oCAAoCA,CAAC;AAAA,MACrD;AACF,UAAMN,IAAI,YAAY,IAAG,IAAKX,GAAGe,IAAId,EAAE,OAAO,CAACgB,MAAM,CAACA,EAAE,OAAO;AAC/D,QAAIF,EAAE,SAAS,KAAK,KAAK,QAAQ;AAC/B,iBAAWE,KAAKF;AACd,YAAI;AACF,eAAK,QAAQ,aAAaE,EAAE,OAAO,GAAGA,EAAE,MAAM;AAAA,QAChD,SAASC,GAAG;AACV,kBAAQ,MAAM,kDAAkDA,CAAC;AAAA,QACnE;AACJ,WAAO;AAAA,MACL,MAAM,EAAE;AAAA,MACR,eAAejB;AAAA,MACf,oBAAoBU;AAAA,MACpB,cAAcV,EAAE,MAAM,CAACgB,MAAMA,EAAE,OAAO;AAAA,MACtC,gBAAgBf;AAAA,MAChB,YAAYC;AAAA,MACZ,UAAU,KAAK,QAAQ,SAASK,IAAIJ,IAAI;AAAA;AAAA,IAE9C;AAAA,EACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,yBAAyB,GAAG,IAAI,IAAI;AACxC,UAAM,EAAE,SAAStB,GAAG,YAAYC,EAAC,IAAK,GAAG,IAAI,KAAK,sBAAsBD,GAAGC,CAAC;AAC5E,QAAI,EAAE,WAAW;AACf,aAAO,CAAA;AACT,UAAMiB,IAAI,CAAA;AACV,eAAWE,KAAK;AACd,UAAI;AACF,cAAMC,IAAI,MAAM,KAAK,wBAAwBD,GAAG,GAAG,EAAE,OAAO;AAC5D,YAAIF,EAAE,KAAKG,CAAC,GAAG,CAACA,EAAE;AAChB;AAAA,MACJ,SAASA,GAAG;AACV,cAAMI,IAAI;AAAA,UACR,SAAS;AAAA,UACT,OAAOJ,aAAa,QAAQA,IAAI,IAAI,MAAM,OAAOA,CAAC,CAAC;AAAA,UACnD,eAAe;AAAA,UACf,QAAQD;AAAA,UACR,YAAYnB;AAAA,QACtB;AACQ,QAAAiB,EAAE,KAAKO,CAAC;AACR;AAAA,MACF;AACF,UAAMN,IAAID,EAAE,OAAO,CAACE,MAAM,CAACA,EAAE,OAAO;AACpC,QAAID,EAAE,SAAS,KAAK,KAAK,QAAQ;AAC/B,iBAAWC,KAAKD;AACd,YAAI;AACF,eAAK,QAAQ,aAAaC,EAAE,OAAO,GAAGA,EAAE,MAAM;AAAA,QAChD,SAASC,GAAG;AACV,kBAAQ,MAAM,kDAAkDA,CAAC;AAAA,QACnE;AACJ,WAAOH;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,sBAAsB,GAAG,GAAG;AAC1B,UAAMlB,IAAI,KAAK,mBAAmB,IAAI,CAAC;AACvC,WAAOA,IAAIA,EAAE,IAAI,CAAC,KAAK,CAAA,IAAK,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,wBAAwB,GAAG,GAAGA,GAAG;AACrC,UAAMC,IAAI,YAAY,IAAG,GAAI,IAAID,KAAK,KAAK,QAAQ;AACnD,QAAI;AACF,UAAIkB,IAAI,KAAK,wBAAwB,IAAI,CAAC;AAC1C,UAAI,CAACA,GAAG;AACN,cAAM,IAAI,KAAK,cAAc,IAAI,CAAC;AAClC,cAAMA,IAAI;AAAA,MACZ;AACA,UAAI,CAACA;AACH,cAAM,IAAI,MAAM,sBAAsB,CAAC,yBAAyB;AAClE,aAAO,MAAM,KAAK,mBAAmBA,GAAG,GAAG,CAAC,GAAG;AAAA,QAC7C,SAAS;AAAA,QACT,eAAe,YAAY,IAAG,IAAKjB;AAAA,QACnC,QAAQ;AAAA,QACR,YAAY,EAAE;AAAA,MACtB;AAAA,IACI,SAASiB,GAAG;AACV,YAAMC,IAAI,YAAY,IAAG,IAAKlB;AAC9B,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAOiB,aAAa,QAAQA,IAAI,IAAI,MAAM,OAAOA,CAAC,CAAC;AAAA,QACnD,eAAeC;AAAA,QACf,QAAQ;AAAA,QACR,YAAY,EAAE;AAAA,MACtB;AAAA,IACI;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,GAAG,GAAG;AACtB,UAAMnB,IAAI,KAAK,eAAe,IAAI,CAAC;AACnC,QAAI,CAACA,EAAG,QAAO,CAAA;AACf,UAAMC,IAAI,CAAA;AACV,eAAW,CAAC,GAAGiB,CAAC,KAAKlB;AACnB,WAAK,kBAAkB,GAAG,CAAC,KAAKC,EAAE,KAAK,GAAGiB,CAAC;AAC7C,WAAOjB;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,kBAAkB,GAAG,GAAG;AACtB,WAAO,MAAM,IAAI,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,kBAAkB,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,KAAK,kBAAkB,GAAG,CAAC,IAAI;AAAA,EAC1H;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,GAAG,GAAG;AACtB,UAAMD,IAAI,EAAE,MAAM,GAAG,GAAGC,IAAI,EAAE,MAAM,GAAG;AACvC,QAAID,EAAE,WAAWC,EAAE;AACjB,aAAO;AACT,aAAS,IAAI,GAAG,IAAID,EAAE,QAAQ,KAAK;AACjC,YAAMkB,IAAIlB,EAAE,CAAC,GAAGmB,IAAIlB,EAAE,CAAC;AACvB,UAAIiB,MAAM,OAAOA,MAAMC;AACrB,eAAO;AAAA,IACX;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,cAAc,GAAG,GAAGnB,GAAG;AAC3B,UAAMC,IAAI,YAAY,IAAG,GAAI,IAAID,KAAK,KAAK,QAAQ;AACnD,QAAI;AACF,YAAMkB,IAAI,KAAK,cAAc,IAAI,CAAC;AAClC,UAAI,CAACA;AACH,cAAM,IAAI,MAAM,WAAW,CAAC,yBAAyB;AACvD,aAAO,MAAM,KAAK,mBAAmBA,GAAG,GAAG,CAAC,GAAG;AAAA,QAC7C,SAAS;AAAA,QACT,eAAe,YAAY,IAAG,IAAKjB;AAAA,QACnC,QAAQ;AAAA,MAChB;AAAA,IACI,SAASiB,GAAG;AACV,YAAMC,IAAI,YAAY,IAAG,IAAKlB;AAC9B,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAOiB,aAAa,QAAQA,IAAI,IAAI,MAAM,OAAOA,CAAC,CAAC;AAAA,QACnD,eAAeC;AAAA,QACf,QAAQ;AAAA,MAChB;AAAA,IACI;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,mBAAmB,GAAG,GAAGnB,GAAG;AAChC,WAAO,IAAI,QAAQ,CAACC,GAAG,MAAM;AAC3B,YAAMiB,IAAI,WAAW,MAAM;AACzB,UAAE,IAAI,MAAM,wBAAwBlB,CAAC,IAAI,CAAC;AAAA,MAC5C,GAAGA,CAAC;AACJ,cAAQ,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAACmB,MAAM;AAChC,qBAAaD,CAAC,GAAGjB,EAAEkB,CAAC;AAAA,MACtB,CAAC,EAAE,MAAM,CAACA,MAAM;AACd,qBAAaD,CAAC,GAAG,EAAEC,CAAC;AAAA,MACtB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,GAAG;AACjB,QAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE;AACjC,UAAI;AACF,cAAM,IAAI,GAAG,EAAE,OAAO,IAAI,EAAE,QAAQ,IAAInB,IAAI,EAAE,MAAM,IAAI,CAAC;AACzD,eAAO,CAACA,KAAK,OAAOA,KAAK,WAAW,SAAS,KAAK,MAAM,KAAK,UAAUA,CAAC,CAAC;AAAA,MAC3E,SAAS,GAAG;AACV,aAAK,QAAQ,SAAS,QAAQ,KAAK,+CAA+C,CAAC;AACnF;AAAA,MACF;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,GAAG,GAAG;AACpB,QAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC;AAC9C,UAAI;AACF,cAAMA,IAAI,GAAG,EAAE,OAAO,IAAI,EAAE,QAAQ;AACpC,UAAE,MAAM,IAAIA,GAAG,CAAC,GAAG,KAAK,QAAQ,SAAS,QAAQ,IAAI,+BAA+BA,CAAC,oBAAoB;AAAA,MAC3G,SAASA,GAAG;AACV,cAAM,QAAQ,MAAM,+CAA+CA,CAAC,GAAGA;AAAA,MACzE;AAAA,EACJ;AACF;AACA,SAAS4G,GAAEjH,GAAG;AACZ,SAAO,IAAIgH,GAAGhH,CAAC;AACjB;AAkCA,SAASkH,KAAK;AACZ,MAAI;AACF,WAAOT,GAAE;AAAA,EACX,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AACA,MAAMU,GAAG;AAAA,EACP,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKP,OAAO,cAAc;AACnB,WAAOA,GAAG,aAAaA,GAAG,WAAW,IAAIA,GAAE,IAAKA,GAAG;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc;AACZ,QAAI,OAAO,aAAa,KAAK;AAC3B,YAAM,IAAI,WAAW,UAAU;AAC/B,UAAI;AACF,eAAO;AAAA,IACX;AACA,QAAI,OAAO,SAAS,KAAK;AACvB,YAAM,IAAI,OAAO,UAAU;AAC3B,UAAI;AACF,eAAO;AAAA,IACX;AACA,QAAI,OAAO,SAAS,OAAO,QAAQ;AACjC,YAAM,IAAI,OAAO,UAAU;AAC3B,UAAI;AACF,eAAO;AAAA,IACX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,GAAG;AAChB,UAAM,IAAI,KAAK,YAAW;AAC1B,QAAI,KAAK,OAAO,KAAK,YAAY,cAAc;AAC7C,aAAO,EAAE,SAAS,CAAC;AAAA,EACvB;AACF;AACA,MAAMC,GAAG;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,GAAG,GAAG/G,IAAI,IAAIC,IAAI,MAAM,GAAG;AACrC,WAAO,KAAK,SAAS,GAAG,KAAK,aAAaD,GAAG,KAAK,WAAWC,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,gBAAgB,GAAG,KAAK,MAAM6G,GAAG,YAAW,GAAI,IAAI,MAAM,MAAM;AAAA,MAC7J,IAAI5F,GAAGC,GAAG;AACR,YAAIA,KAAKD,EAAG,QAAOA,EAAEC,CAAC;AACtB,cAAMC,IAAI,OAAOD,CAAC;AAClB,eAAOD,EAAE,QAAQE,CAAC;AAAA,MACpB;AAAA,MACA,IAAIF,GAAGC,GAAGC,GAAG;AACX,cAAMC,IAAI,OAAOF,CAAC;AAClB,eAAOD,EAAE,IAAIG,GAAGD,CAAC,GAAG;AAAA,MACtB;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,IAAI,GAAG;AACL,WAAO,KAAK,aAAa,CAAC;AAAA,EAC5B;AAAA;AAAA,EAEA,QAAQ,GAAG;AACT,UAAM,IAAI,KAAK,YAAY,CAAC,GAAGpB,IAAI,KAAK,aAAa,CAAC,GAAGC,IAAI,EAAE,MAAM,GAAG;AACxE,QAAI,IAAI,KAAK;AACb,WAAO,KAAK,YAAY,oBAAoBA,EAAE,UAAU,MAAM,IAAIA,EAAE,CAAC,IAAI,OAAOD,KAAK,YAAYA,MAAM,QAAQ,CAAC,KAAK,YAAYA,CAAC,IAAI,IAAI+G,GAAG/G,GAAG,GAAG,GAAG,KAAK,UAAU,KAAK,aAAa,IAAI,IAAI+G,GAAG/G,GAAG,GAAG,GAAG,KAAK,UAAU,KAAK,aAAa;AAAA,EAC9O;AAAA,EACA,IAAI,GAAG,GAAGA,IAAI,QAAQ;AACpB,UAAMC,IAAI,KAAK,YAAY,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAC/D,QAAID,MAAM,UAAUA,MAAM,QAAQ;AAChC,YAAMkB,IAAI2F,GAAE;AACZ,UAAI3F,KAAK,OAAOA,EAAE,gBAAgB,YAAY;AAC5C,cAAMC,IAAIlB,EAAE,MAAM,GAAG,GAAGmB,IAAI,KAAK,YAAY,oBAAoBD,EAAE,UAAU,IAAIA,EAAE,CAAC,IAAI,KAAK,SAASE,IAAIF,EAAE,UAAU,IAAIA,EAAE,CAAC,IAAI,QAAQG,IAAIH,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,KAAKA,EAAEA,EAAE,SAAS,CAAC,GAAGO,IAAI,MAAM,UAAU,MAAM,SAAS,WAAW;AACpO,QAAAR,EAAE;AAAA,UACA;AAAA,YACE,MAAMQ;AAAA,YACN,MAAMzB;AAAA,YACN,WAAWqB;AAAA,YACX,aAAa;AAAA,YACb,YAAY;AAAA,YACZ,SAASF;AAAA,YACT,UAAUC;AAAA,YACV,YAAY;AAAA;AAAA,UAExB;AAAA,UACUrB;AAAA,QACV;AAAA,MACM;AAAA,IACF;AACA,SAAK,YAAY,GAAG,CAAC,GAAG,KAAK,oBAAoBC,GAAG,GAAG,CAAC;AAAA,EAC1D;AAAA,EACA,IAAI,GAAG;AACL,QAAI;AACF,UAAI,MAAM;AACR,eAAO;AACT,YAAM,IAAI,KAAK,UAAU,CAAC;AAC1B,UAAID,IAAI,KAAK;AACb,eAASC,IAAI,GAAGA,IAAI,EAAE,QAAQA,KAAK;AACjC,cAAM,IAAI,EAAEA,CAAC;AACb,YAAID,KAAK;AACP,iBAAO;AACT,YAAIC,MAAM,EAAE,SAAS;AACnB,iBAAO,KAAK,YAAYD,CAAC,IAAIA,EAAE,IAAI,CAAC,IAAI,KAAK,aAAaA,CAAC,KAAKA,EAAE,UAAU,KAAKA,EAAE,UAAU,KAAKA;AACpG,QAAAA,IAAI,KAAK,YAAYA,GAAG,CAAC;AAAA,MAC3B;AACA,aAAO;AAAA,IACT,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EAEA,YAAY;AACV,QAAI,CAAC,KAAK,WAAY,QAAO;AAC7B,UAAMgH,IAAI,KAAK,WAAW,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG;AAC1D,WAAOA,MAAM,KAAK,KAAK,WAAW,KAAK,SAAS,QAAQA,CAAC;AAAA,EAC3D;AAAA,EACA,UAAU;AACR,WAAO,KAAK;AAAA,EACd;AAAA,EACA,UAAU;AACR,WAAO,KAAK;AAAA,EACd;AAAA,EACA,WAAW;AACT,WAAO,KAAK,aAAa,KAAK,WAAW,MAAM,GAAG,EAAE,SAAS;AAAA,EAC/D;AAAA,EACA,iBAAiB;AACf,WAAO,KAAK,aAAa,KAAK,WAAW,MAAM,GAAG,IAAI,CAAA;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,kBAAkB,GAAG,GAAG;AAC5B,UAAMhH,IAAI4G,MAAK3G,IAAI,KAAK,WAAW,MAAM,GAAG;AAC5C,QAAI,IAAI,KAAK,SAASiB;AACtB,SAAK,YAAY,oBAAoBjB,EAAE,UAAU,MAAM,IAAIA,EAAE,CAAC,IAAIA,EAAE,UAAU,MAAMiB,IAAIjB,EAAE,CAAC;AAC3F,UAAMkB,IAAI;AAAA,MACR,MAAM,KAAK;AAAA,MACX,WAAW;AAAA;AAAA,MAEX,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,SAAS;AAAA,MACT,UAAUD;AAAA,MACV,WAA2B,oBAAI,KAAI;AAAA,MACnC,OAAO,KAAK,YAAY;AAAA,MACxB,YAAY;AAAA,MACZ,cAAc,GAAG;AAAA,MACjB,aAAa,GAAG;AAAA,MAChB,YAAY,GAAG;AAAA,IACrB,GAAOE,IAAIyF,GAAE;AACT,WAAOzF,KAAK,OAAOA,EAAE,gBAAgB,cAAcA,EAAE;AAAA,MACnD;AAAA,QACE,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,QACX,WAAW;AAAA,QACX,aAAa,GAAG;AAAA,QAChB,YAAY,GAAG;AAAA,QACf,SAAS;AAAA,QACT,UAAUF;AAAA,QACV,YAAY;AAAA;AAAA,QAEZ,UAAU;AAAA,UACR,YAAY;AAAA,UACZ,cAAc,GAAG;AAAA,UACjB,aAAa,GAAG;AAAA,UAChB,YAAY,GAAG;AAAA,QACzB;AAAA,MACA;AAAA,MACM;AAAA,IACN,GAAO,MAAMlB,EAAE,yBAAyBmB,CAAC;AAAA,EACvC;AAAA;AAAA,EAEA,YAAY,GAAG;AACb,WAAO,MAAM,KAAK,KAAK,aAAa,KAAK,aAAa,GAAG,KAAK,UAAU,IAAI,CAAC,KAAK;AAAA,EACpF;AAAA,EACA,aAAa,GAAG;AACd,QAAI,MAAM;AACR,aAAO,KAAK;AACd,UAAM,IAAI,KAAK,UAAU,CAAC;AAC1B,QAAInB,IAAI,KAAK;AACb,eAAWC,KAAK,GAAG;AACjB,UAAID,KAAK;AACP;AACF,MAAAA,IAAI,KAAK,YAAYA,GAAGC,CAAC;AAAA,IAC3B;AACA,WAAOD;AAAA,EACT;AAAA,EACA,YAAY,GAAG,GAAG;AAChB,QAAI,MAAM;AACR,YAAM,IAAI,MAAM,gCAAgC;AAClD,UAAMA,IAAI,KAAK,UAAU,CAAC,GAAGC,IAAID,EAAE,IAAG;AACtC,QAAI,IAAI,KAAK;AACb,eAAWkB,KAAKlB;AACd,UAAI,IAAI,KAAK,YAAY,GAAGkB,CAAC,GAAG,KAAK;AACnC,cAAM,IAAI,MAAM,+CAA+C,CAAC,EAAE;AACtE,SAAK,YAAY,GAAGjB,GAAG,CAAC;AAAA,EAC1B;AAAA,EACA,YAAY,GAAG,GAAG;AAChB,WAAO,KAAK,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;AAAA,EAC3H;AAAA,EACA,YAAY,GAAG,GAAGD,GAAG;AACnB,QAAI,KAAK,YAAY,CAAC;AACpB,YAAM,IAAI,MAAM,iFAAiF;AACnG,QAAI,KAAK,aAAa,CAAC,GAAG;AACxB,QAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,GAAGA,GAAG,IAAI,EAAE,CAAC,IAAIA;AACzC;AAAA,IACF;AACA,MAAE,CAAC,IAAIA;AAAA,EACT;AAAA,EACA,MAAM,oBAAoB,GAAG,GAAGA,GAAG;AACjC,QAAI;AACF,UAAI,CAAC,KAAK,OAAO,KAAK;AACpB;AACF,YAAMC,IAAI,EAAE,MAAM,GAAG;AACrB,UAAIA,EAAE,SAAS;AACb;AACF,YAAM,IAAI2G,GAAC,GAAI1F,IAAIjB,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,KAAKA,EAAEA,EAAE,SAAS,CAAC;AACzD,UAAIkB,IAAI,KAAK;AACb,WAAK,YAAY,oBAAoBlB,EAAE,UAAU,MAAMkB,IAAIlB,EAAE,CAAC;AAC9D,UAAImB;AACJ,MAAAnB,EAAE,UAAU,MAAMmB,IAAInB,EAAE,CAAC;AACzB,YAAMoB,IAAI;AAAA,QACR,MAAM;AAAA,QACN,WAAWH;AAAA,QACX,aAAa;AAAA,QACb,YAAYlB;AAAA,QACZ,WAAW;AAAA,QACX,SAASmB;AAAA,QACT,UAAUC;AAAA,QACV,WAA2B,oBAAI,KAAI;AAAA,QACnC,OAAO,KAAK,YAAY;AAAA;AAAA,MAEhC;AACM,YAAM,EAAE,qBAAqBC,CAAC;AAAA,IAChC,SAASpB,GAAG;AACV,MAAAA,aAAa,SAAS,QAAQ,KAAK,wBAAwBA,EAAE,OAAO;AAAA,IACtE;AAAA,EACF;AAAA,EACA,cAAc,GAAG;AACf,WAAO,KAAK,OAAO,KAAK,YAAY,oBAAoB,KAAK,EAAE,mBAAmB;AAAA,EACpF;AAAA,EACA,aAAa,GAAG;AACd,WAAO,KAAK,OAAO,KAAK,aAAa,YAAY,KAAK,YAAY,KAAK,SAAS;AAAA,EAClF;AAAA,EACA,YAAY,GAAG;AACb,QAAI,CAAC,KAAK,OAAO,KAAK;AACpB,aAAO;AACT,UAAM,IAAI,SAAS,KAAK,OAAO,EAAE,OAAO,YAAYD,IAAI,SAAS,KAAK,OAAO,EAAE,OAAO,YAAYC,IAAI,SAAS,KAAK,OAAO,EAAE,OAAO,YAAY,IAAI,eAAe,KAAK,UAAU,KAAK,WAAW,KAAK,aAAa,KAAK,eAAe,KAAK,oBAAoB,KAAK,WAAW,KAAK,WAAW,KAAK,UAAU,KAAK,KAAKD;AAC1T,QAAIkB;AACJ,QAAI;AACF,YAAME,IAAI;AACV,UAAI,iBAAiBA,KAAKA,EAAE,eAAe,OAAOA,EAAE,eAAe,YAAY,UAAUA,EAAE,aAAa;AACtG,cAAMC,IAAID,EAAE,YAAY;AACxB,QAAAF,IAAI,OAAOG,KAAK,WAAWA,IAAI;AAAA,MACjC;AAAA,IACF,QAAQ;AACN,MAAAH,IAAI;AAAA,IACN;AACA,UAAMC,IAAID,MAAMA,EAAE,SAAS,KAAK,KAAKA,EAAE,SAAS,MAAM,KAAKA,EAAE,SAAS,KAAK,KAAKA,EAAE,SAAS,OAAO,KAAKA,EAAE,SAAS,KAAK,OAAO,KAAKlB;AACnI,WAAO,CAAC,EAAE,KAAKA,KAAKC,KAAK,KAAK,KAAKD,KAAKmB;AAAA,EAC1C;AAAA,EACA,YAAY,GAAG;AACb,WAAO,KAAK,QAAQ,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,aAAa,OAAO,KAAK,cAAc,OAAO,KAAK,YAAY,OAAO,KAAK;AAAA,EAC7J;AAAA,EACA,UAAU,GAAG;AACX,WAAO,IAAI,EAAE,MAAM,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAA;AAAA,EACxD;AACF;AACA,SAAS8F,GAAGtH,GAAG,GAAG,GAAG;AACnB,SAAO,IAAIoH,GAAGpH,GAAG,GAAG,IAAI,MAAM,CAAC;AACjC;AACA,MAAMuH,GAAG;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY,GAAG,GAAG;AAChB,SAAK,WAAW,GAAG,KAAK,sBAAsB,GAAG,KAAK,mBAAkB,GAAI,KAAK,kBAAiB;AAAA,EACpG;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAuB;AACrB,WAAO,KAAK,uBAAuB,KAAK,qBAAqBd,GAAE,GAAI,KAAK,uBAAuB,KAAK,mBAAmB,UAAU,KAAK,mBAAmB,IAAI,KAAK;AAAA,EACpK;AAAA;AAAA;AAAA;AAAA,EAIA,qBAAqB;AACnB,UAAM,IAAI,CAAA;AACV,WAAO,KAAK,KAAK,SAAS,QAAQ,EAAE,QAAQ,CAAC,MAAM;AACjD,QAAE,CAAC,IAAI,CAAA;AAAA,IACT,CAAC,GAAG,KAAK,WAAWa,GAAG,GAAG,gBAAgB;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAIA,oBAAoB;AAClB,UAAM,IAAI,KAAK,SAAS,WAAW,KAAK,KAAK,QAAQ;AACrD,SAAK,SAAS,aAAa,CAAC,MAAM;AAChC,QAAE,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,IAAI,KAAK,KAAK,SAAS,IAAI,EAAE,MAAM,CAAA,CAAE;AAAA,IACjE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ,GAAG;AACT,UAAM,IAAI,OAAO,KAAK,WAAW,IAAI,EAAE;AACvC,WAAO,KAAK,oBAAoB,CAAC,GAAG,KAAK,SAAS,QAAQ,CAAC;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,GAAG,GAAGjH,GAAG;AACjB,UAAMC,IAAI,OAAO,KAAK,WAAW,IAAI,EAAE;AACvC,SAAK,oBAAoBA,CAAC,GAAG,KAAK,SAAS,IAAI,GAAGA,CAAC,IAAI,CAAC,IAAID,CAAC;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,cAAc,GAAG,GAAG;AAClB,UAAMA,IAAI,OAAO,KAAK,WAAW,IAAI,EAAE;AACvC,QAAI,KAAK,oBAAoBA,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,IAAI,GAAGA,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,SAAS,IAAI,GAAGA,CAAC,IAAI,CAAC,EAAE,MAAM;AACvG,aAAO,KAAK,SAAS,QAAQ,GAAGA,CAAC,IAAI,CAAC,EAAE;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa,GAAG,GAAG;AACjB,UAAMA,IAAI,OAAO,KAAK,WAAW,IAAI,EAAE;AACvC,SAAK,oBAAoBA,CAAC,GAAG,KAAK,SAAS,IAAI,GAAGA,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,SAAS,IAAI,GAAGA,CAAC,IAAI,CAAC,IAAI,MAAM;AAAA,EACtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa,GAAG;AACd,UAAM,IAAI,OAAO,KAAK,WAAW,IAAI,EAAE;AACvC,SAAK,oBAAoB,CAAC;AAC1B,UAAMA,IAAI,KAAK,SAAS,IAAI,CAAC;AAC7B,WAAO,CAACA,KAAK,OAAOA,KAAK,WAAW,CAAA,IAAK,OAAO,KAAKA,CAAC,EAAE,OAAO,CAACC,MAAMD,EAAEC,CAAC,MAAM,MAAM;AAAA,EACvF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,GAAG;AACd,UAAM,IAAI,OAAO,KAAK,WAAW,IAAI,EAAE;AACvC,SAAK,oBAAoB,CAAC,GAAG,KAAK,aAAa,CAAC,EAAE,QAAQ,CAACA,MAAM;AAC/D,WAAK,SAAS,IAAI,GAAG,CAAC,IAAIA,CAAC,IAAI,MAAM;AAAA,IACvC,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,GAAG;AACP,SAAK,oBAAoB,EAAE,IAAI;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,UAAU,GAAG,GAAGD,GAAG;AACjB,UAAMmH,IAAI,KAAK,SAAS,SAAS,EAAE,IAAI,GAAG,SAAS,IAAI,CAAC,GAAGjG,IAAI,MAAM,QAAQlB,CAAC,IAAIA,EAAE,OAAO,CAACsB,MAAM,OAAOA,KAAK,QAAQ,IAAI,QAAQH,IAAI,KAAK,qBAAoB;AAC/J,QAAI,IAAI,WAAWE;AACnB,QAAI;AACF,MAAA8F,KAAKA,EAAE,SAAS,KAAKA,EAAE,QAAQ,CAAC7F,MAAM;AACpC,YAAI;AACF,cAAI,SAAS,QAAQA,CAAC,EAAEtB,CAAC;AAAA,QAC3B,SAASyB,GAAG;AACV,gBAAM,IAAI,WAAWJ,IAAII,aAAa,QAAQA,EAAE,UAAU,iBAAiBA;AAAA,QAC7E;AAAA,MACF,CAAC;AAAA,IACH,QAAQ;AAAA,IACR,UAAC;AACC,MAAAN,EAAE,UAAU,EAAE,SAAS,GAAGD,GAAG,GAAGG,CAAC;AAAA,IACnC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,GAAG;AAClB,KAAC,OAAO,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,KAAI,GAAI,QAAQ,CAACpB,MAAM;AACxD,MAAAA,EAAE,MAAM,KAAK,UAAU,GAAGA,EAAE,IAAIA,CAAC;AAAA,IACnC,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAU,GAAG,GAAG;AACpB,UAAMA,IAAI,OAAO,MAAM,MAAM,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,KAAI;AACrD,SAAK,UAAU,GAAG,GAAGA,CAAC;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB,GAAG;AACrB,SAAK,SAAS,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,EAAE;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAQ,GAAG;AACf,QAAI,CAAC,KAAK,SAAS;AACjB,YAAM,IAAI,MAAM,0CAA0C;AAC5D,WAAO,MAAM,KAAK,SAAS,QAAQ,CAAC;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW;AACT,WAAO,KAAK;AAAA,EACd;AACF;AACA,SAASmH,GAAGzH,GAAG;AACb,EAAAA,MAAMA,IAAI;AACV,QAAM,IAAIA,EAAE,YAAYgE,GAAG,WAAW,GAAG,IAAIA,GAAG,YAAY,GAAG3D,IAAIwB,EAAC,GAAIvB,IAAIuB,EAAC,GAAI,IAAIA,EAAE,CAAA,CAAE,GAAGN,IAAIM,EAAC,GAAIL,IAAIK,EAAC,GAAIJ,IAAII,EAAE,CAAA,CAAE,GAAGH,IAAIG,EAAE,EAAE,GAAGF,IAAIM,EAAE,MAAM5B,EAAE,OAAO,qBAAoB,EAAG,WAAW,EAAE,GAAGyB,IAAIG,EAAE,MAAM5B,EAAE,OAAO,qBAAoB,EAAG,WAAW,EAAE,GAAG0B,IAAIE,EAAE,MAAM5B,EAAE,OAAO,qBAAoB,EAAG,aAAa,CAAC,GAAG6B,IAAID,EAAE,MAAM5B,EAAE,OAAO,qBAAoB,EAAG,aAAa,CAAC,GAAGiC,IAAIL;AAAAA,IACxX,MAAM5B,EAAE,OAAO,qBAAoB,EAAG,iBAAiB;AAAA,MACrD,SAAS;AAAA,MACT,SAAS;AAAA,MACT,WAAW;AAAA,MACX,WAAW;AAAA,MACX,cAAc;AAAA,IACpB;AAAA,EACA,GAAKkC,IAAI,CAACO,MAAMzC,EAAE,OAAO,uBAAuB,KAAKyC,CAAC,KAAK,IAAIN,IAAI,CAACM,MAAMzC,EAAE,OAAO,qBAAoB,EAAG,KAAKyC,CAAC,KAAK,IAAIL,IAAI,MAAM;AAC/H,IAAApC,EAAE,OAAO,qBAAoB,EAAG,WAAU;AAAA,EAC5C,GAAGwC,IAAI,CAACC,MAAMzC,EAAE,OAAO,qBAAoB,EAAG,YAAYyC,CAAC,KAAK,MAAMC,IAAI,MAAM;AAC9E,IAAA1C,EAAE,OAAO,qBAAoB,EAAG,YAAW;AAAA,EAC7C,GAAG2C,IAAI,MAAM;AACX,IAAA3C,EAAE,OAAO,qBAAoB,EAAG,MAAK;AAAA,EACvC,GAAGiD,IAAI,CAACR,GAAGG,MAAM5C,EAAE,OAAO,qBAAoB,EAAG,iBAAiByC,GAAGG,CAAC,KAAK,CAAA,GAAIM,IAAI,MAAMlD,EAAE,OAAO,uBAAuB,iBAAiB;AAAA,IACxI,YAAY,CAAA;AAAA,IACZ,cAAc;AAAA,IACd,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,wBAAwB;AAAA,EAC5B,GAAKgC,IAAI,CAACS,GAAGG,MAAM;AACf,IAAA5C,EAAE,OAAO,qBAAoB,EAAG,iBAAiByC,GAAGG,CAAC;AAAA,EACvD,GAAGmD,IAAI,CAACtD,GAAGG,GAAGC,GAAGC,IAAI,WAAWE,MAAMhD,EAAE,OAAO,qBAAoB,EAAG,UAAUyC,GAAGG,GAAGC,GAAGC,GAAGE,CAAC,KAAK,IAAIK,IAAI,CAACZ,MAAM;AAC/G,IAAAzC,EAAE,OAAO,uBAAuB,UAAUyC,CAAC;AAAA,EAC7C;AACAqC,EAAAA,GAAG,YAAY;AACb,QAAI,GAAG;AACL,MAAA9E,EAAE,QAAQ,KAAK,IAAIkH,GAAG,CAAC;AACvB,UAAI;AACF,cAAMzE,IAAIzC,EAAE,MAAM,qBAAoB,GAAI4C,IAAIiB,GAAGpB,CAAC;AAClD,QAAArB,EAAE,QAAQwB,EAAE,WAAW,OAAOvB,EAAE,QAAQuB,EAAE,aAAa,OAAOO;AAAAA,UAC5D,MAAMP,EAAE,WAAW;AAAA,UACnB,CAACC,MAAM;AACL,YAAAzB,EAAE,QAAQyB;AAAA,UACZ;AAAA,QACV,GAAWM;AAAAA,UACD,MAAMP,EAAE,aAAa;AAAA,UACrB,CAACC,MAAM;AACL,YAAAxB,EAAE,QAAQwB;AAAA,UACZ;AAAA,QACV;AAAA,MACM,QAAQ;AAAA,MACR;AACA,UAAI,CAAClD,EAAE,WAAW,EAAE,QAAQ;AAC1B,cAAM8C,IAAI,EAAE,OAAO,aAAa;AAChC,YAAI,CAACA,EAAE,KAAM;AACb,cAAMG,IAAIH,EAAE,KAAK,MAAM,GAAG,EAAE,OAAO,CAACK,MAAMA,EAAE,SAAS,CAAC,GAAGD,IAAID,EAAE,CAAC,GAAG,YAAW;AAC9E,YAAIA,EAAE,SAAS,GAAG;AAChB,gBAAME,IAAI;AAAA,YACR,MAAML,EAAE;AAAA,YACR,UAAUG;AAAA,UACtB,GAAaI,IAAI,MAAM,EAAE,UAAUF,CAAC;AAC1B,cAAIE,GAAG;AACL,gBAAI,EAAE,WAAWA,CAAC,GAAGhD,EAAE,MAAM,MAAMgD,CAAC,GAAG9B,EAAE,QAAQ8B,GAAG7B,EAAE,QAAQ0B,GAAG5C,EAAE,QAAQD,EAAE,MAAM,SAAQ,GAAI6C,KAAKA,MAAM,OAAO;AAC/G,oBAAM6D,IAAI1G,EAAE,MAAM,cAAcgD,GAAGH,CAAC;AACpC,kBAAI6D;AACF,kBAAE,QAAQA,EAAE,IAAI,EAAE,KAAK,CAAA;AAAA;AAEvB,oBAAI;AACF,wBAAM1G,EAAE,MAAM,UAAUgD,GAAGH,CAAC;AAC5B,wBAAME,IAAI/C,EAAE,MAAM,cAAcgD,GAAGH,CAAC;AACpC,kBAAAE,MAAM,EAAE,QAAQA,EAAE,IAAI,EAAE,KAAK;gBAC/B,QAAQ;AACN,oBAAE,QAAQsE,GAAGrE,CAAC;AAAA,gBAChB;AAAA,YACJ;AACE,gBAAE,QAAQqE,GAAGrE,CAAC;AAChB,YAAA/C,EAAE,SAASqH,GAAGtE,GAAGH,KAAK,OAAO,GAAG5C,EAAE,KAAK,GAAGD,EAAE,MAAM,UAAUgD,GAAG,QAAQH,IAAI,CAACA,CAAC,IAAI,MAAM;AAAA,UACzF;AAAA,QACF;AAAA,MACF;AACA,UAAIlD,EAAE,SAAS;AACb,QAAAM,EAAE,QAAQD,EAAE,MAAM,SAAQ;AAC1B,cAAMyC,IAAI9C,EAAE,SAASiD,IAAIjD,EAAE;AAC3B,YAAIiD,KAAKA,MAAM,OAAO;AACpB,gBAAMC,IAAI7C,EAAE,MAAM,cAAcyC,GAAGG,CAAC;AACpC,cAAIC;AACF,cAAE,QAAQA,EAAE,IAAI,EAAE,KAAK,CAAA;AAAA;AAEvB,gBAAI;AACF,oBAAM7C,EAAE,MAAM,UAAUyC,GAAGG,CAAC;AAC5B,oBAAME,IAAI9C,EAAE,MAAM,cAAcyC,GAAGG,CAAC;AACpC,cAAAE,MAAM,EAAE,QAAQA,EAAE,IAAI,EAAE,KAAK;YAC/B,QAAQ;AACN,gBAAE,QAAQuE,GAAG5E,CAAC;AAAA,YAChB;AAAA,QACJ;AACE,YAAE,QAAQ4E,GAAG5E,CAAC;AAChB,QAAAxC,EAAE,SAASqH,GAAG7E,GAAGG,KAAK,OAAO,GAAG3C,EAAE,KAAK;AAAA,MACzC;AAAA,IACF;AAAA,EACF,CAAC;AACD,QAAM8B,IAAI,CAACU,GAAGG,MAAM;AAClB,UAAMC,IAAIlD,EAAE,WAAWuB,EAAE;AACzB,QAAI,CAAC2B,EAAG,QAAO;AACf,UAAMC,IAAIF,KAAKjD,EAAE,YAAYwB,EAAE,SAAS;AACxC,WAAO,GAAG0B,EAAE,IAAI,IAAIC,CAAC,IAAIL,CAAC;AAAA,EAC5B,GAAGJ,IAAI,CAACI,MAAM;AACZ,UAAMG,IAAIjD,EAAE,WAAWuB,EAAE;AACzB,QAAI,EAAE,CAACjB,EAAE,SAAS,CAACD,EAAE,SAAS,CAAC4C;AAC7B,UAAI;AACF,cAAMC,IAAIJ,EAAE,KAAK,MAAM,GAAG;AAC1B,YAAII,EAAE,UAAU,GAAG;AACjB,gBAAM6D,IAAI7D,EAAE,CAAC,GAAGE,IAAIF,EAAE,CAAC;AACvB,cAAI5C,EAAE,MAAM,IAAI,GAAGyG,CAAC,IAAI3D,CAAC,EAAE,KAAK/C,EAAE,MAAM,UAAU4C,GAAGG,GAAG,EAAE,GAAG,EAAE,MAAK,CAAE,GAAGF,EAAE,SAAS,GAAG;AACrF,kBAAMwD,IAAI,GAAGK,CAAC,IAAI3D,CAAC,IAAIuD,IAAIzD,EAAE,MAAM,CAAC;AACpC,gBAAI,IAAIwD;AACR,qBAASE,IAAI,GAAGA,IAAID,EAAE,SAAS,GAAGC;AAChC,kBAAI,KAAK,IAAID,EAAEC,CAAC,CAAC,IAAI,CAACtG,EAAE,MAAM,IAAI,CAAC,GAAG;AACpC,sBAAMwG,IAAIH,EAAEC,IAAI,CAAC,GAAGC,IAAI,CAAC,MAAM,OAAOC,CAAC,CAAC;AACxC,gBAAAxG,EAAE,MAAM,IAAI,GAAGuG,IAAI,CAAA,IAAK,EAAE;AAAA,cAC5B;AAAA,UACJ;AAAA,QACF;AACA,QAAAvG,EAAE,MAAM,IAAIwC,EAAE,MAAMA,EAAE,KAAK;AAC3B,cAAMK,IAAIL,EAAE,UAAU,MAAM,GAAG,GAAGO,IAAI,EAAE,GAAG,EAAE,MAAK;AAClD,QAAAF,EAAE,WAAW,IAAIE,EAAEF,EAAE,CAAC,CAAC,IAAIL,EAAE,QAAQ8E,GAAGvE,GAAGF,GAAGL,EAAE,KAAK,GAAG,EAAE,QAAQO;AAAA,MACpE,QAAQ;AAAA,MACR;AAAA,EACJ;AACA,GAACrD,EAAE,WAAW,GAAG,YAAY6H,GAAG,mBAAmBzF,CAAC,GAAGyF,GAAG,oBAAoBnF,CAAC;AAC/E,QAAMC,IAAI;AAAA,IACR,YAAYlB;AAAA,IACZ,cAAcC;AAAA,IACd,eAAeY;AAAA,IACf,SAASX;AAAA,IACT,SAASG;AAAA,IACT,WAAWC;AAAA,IACX,WAAWG;AAAA,IACX,MAAMK;AAAA,IACN,MAAMC;AAAA,IACN,YAAYC;AAAA,IACZ,aAAaI;AAAA,IACb,aAAaE;AAAA,IACb,OAAOC;AAAA,IACP,kBAAkBM;AAAA,IAClB,aAAaC;AAAA,IACb,kBAAkBlB;AAAA,IAClB,WAAW+D;AAAA,IACX,WAAW1C;AAAA,EACf;AACE,SAAO1D,EAAE,UAAU;AAAA,IACjB,WAAWK;AAAA,IACX,cAAcsC;AAAA,IACd,gBAAgBP;AAAA,IAChB,iBAAiBM;AAAA,IACjB,UAAUpC;AAAA,IACV,UAAU;AAAA,EACd,IAAM,CAACN,EAAE,WAAW,GAAG,SAAS;AAAA,IAC5B,WAAWK;AAAA,IACX,cAAcsC;AAAA,IACd,gBAAgBP;AAAA,IAChB,iBAAiBM;AAAA,IACjB,UAAUpC;AAAA,IACV,UAAU;AAAA,EACd,IAAM;AAAA,IACF,WAAWD;AAAA,IACX,cAAcsC;AAAA,EAClB;AACA;AACA,SAAS+E,GAAG1H,GAAG;AACb,QAAM,IAAI,CAAA;AACV,SAAOA,EAAE,UAAUA,EAAE,OAAO,QAAQ,CAAC,MAAM;AACzC,YAAQ,eAAe,IAAI,EAAE,YAAY,QAAM;AAAA,MAC7C,KAAK;AAAA,MACL,KAAK;AACH,UAAE,EAAE,SAAS,IAAI;AACjB;AAAA,MACF,KAAK;AACH,UAAE,EAAE,SAAS,IAAI;AACjB;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,UAAE,EAAE,SAAS,IAAI;AACjB;AAAA,MACF,KAAK;AACH,UAAE,EAAE,SAAS,IAAI,CAAA;AACjB;AAAA,MACF,KAAK;AACH,UAAE,EAAE,SAAS,IAAI,CAAA;AACjB;AAAA,MACF;AACE,UAAE,EAAE,SAAS,IAAI;AAAA,IACzB;AAAA,EACE,CAAC,GAAG;AACN;AACA,SAAS2H,GAAG3H,GAAG,GAAG,GAAGK,GAAG;AACtBmD,EAAAA;AAAAA,IACE;AAAA,IACA,CAAClD,MAAM;AACL,YAAM,IAAI,GAAGN,EAAE,IAAI,IAAI,CAAC;AACxB,aAAO,KAAKM,CAAC,EAAE,QAAQ,CAACiB,MAAM;AAC5B,cAAMC,IAAI,GAAG,CAAC,IAAID,CAAC;AACnB,YAAI;AACF,UAAAlB,EAAE,IAAImB,GAAGlB,EAAEiB,CAAC,CAAC;AAAA,QACf,QAAQ;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,EAAE,MAAM,GAAE;AAAA,EACd;AACA;AACA,SAASqG,GAAG5H,GAAG,GAAG,GAAG;AACnB,MAAIK,IAAIL;AACR,WAAS,IAAI,GAAG,IAAI,EAAE,SAAS,GAAG,KAAK;AACrC,UAAMuB,IAAI,EAAE,CAAC;AACb,KAAC,EAAEA,KAAKlB,MAAM,OAAOA,EAAEkB,CAAC,KAAK,cAAclB,EAAEkB,CAAC,IAAI,MAAM,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA,IAAKlB,IAAIA,EAAEkB,CAAC;AAAA,EAC/F;AACA,QAAMjB,IAAI,EAAE,EAAE,SAAS,CAAC;AACxB,EAAAD,EAAEC,CAAC,IAAI;AACT;ACn7DiC,MA0C7BiC,KAAI,CAACnD,GAAGiI,MAAM;AAChB,QAAMrH,IAAIZ,EAAE,aAAaA;AACzB,aAAW,CAACkB,GAAGkB,CAAC,KAAK6F;AACnB,IAAArH,EAAEM,CAAC,IAAIkB;AACT,SAAOxB;AACT;AAmEA,SAASiG,GAAG7G,GAAGiI,GAAG;AAChB,SAAO/F,GAAE,KAAMmC,GAAGrE,GAAGiI,CAAC,GAAG,MAAM;AACjC;AAoBA,OAAO,oBAAoB,OAAO,sBAAsB;AACnD,MAA+ExE,KAAI,MAAM;AAC9F;AACA,SAASiC,MAAM1F,GAAG;AAChB,MAAIA,EAAE,WAAW,EAAG,QAAO6B,GAAG,GAAG7B,CAAC;AAClC,QAAMiI,IAAIjI,EAAE,CAAC;AACb,SAAO,OAAOiI,KAAK,aAAa7C,GAAG+C,GAAG,OAAO;AAAA,IAC3C,KAAKF;AAAA,IACL,KAAKxE;AAAA,EACT,EAAI,CAAC,IAAIuD,EAAEiB,CAAC;AACZ;AAqJA,SAASrD,GAAG5E,GAAG;AACb,SAAO,OAAO,SAAS,OAAOA,aAAa,SAASA,EAAE,SAAS,kBAAkB,OAAO,WAAW,OAAOA,aAAa,WAAWA,EAAE,kBAAkBA;AACxJ;AACA,MAAM0I,KAAqB,oBAAI,QAAO;AACtC,SAASxC,GAAGlG,GAAGiI,IAAI,IAAI;AACrB,QAAMrH,IAAIE,GAAEmH,CAAC;AACb,MAAI/G,IAAI;AACRkC,EAAAA,EAAEsC,GAAG1F,CAAC,GAAG,CAACgD,MAAM;AACd,UAAM/B,IAAI2D,GAAGlC,GAAEM,CAAC,CAAC;AACjB,QAAI/B,GAAG;AACL,YAAM,IAAIA;AACV,UAAIyH,GAAG,IAAI,CAAC,KAAKA,GAAG,IAAI,GAAG,EAAE,MAAM,QAAQ,GAAG,EAAE,MAAM,aAAa,aAAaxH,IAAI,EAAE,MAAM,WAAW,EAAE,MAAM,aAAa,SAAU,QAAON,EAAE,QAAQ;AACvJ,UAAIA,EAAE,MAAO,QAAO,EAAE,MAAM,WAAW;AAAA,IACzC;AAAA,EACF,GAAG,EAAE,WAAW,IAAI;AACpB,QAAMwB,IAAI,MAAM;AACd,UAAMY,IAAI4B,GAAGlC,GAAE1C,CAAC,CAAC;AACjB,KAACgD,KAAKpC,EAAE,UAAUoC,EAAE,MAAM,WAAW,UAAUpC,EAAE,QAAQ;AAAA,EAC3D,GAAG,IAAI,MAAM;AACX,UAAMoC,IAAI4B,GAAGlC,GAAE1C,CAAC,CAAC;AACjB,KAACgD,KAAK,CAACpC,EAAE,UAAUoC,EAAE,MAAM,WAAW9B,GAAGwH,GAAG,OAAO1F,CAAC,GAAGpC,EAAE,QAAQ;AAAA,EACnE;AACA,SAAOiG,GAAG,CAAC,GAAG3D,EAAE;AAAA,IACd,MAAM;AACJ,aAAOtC,EAAE;AAAA,IACX;AAAA,IACA,IAAIoC,GAAG;AACL,MAAAA,IAAIZ,EAAC,IAAK,EAAC;AAAA,IACb;AAAA,EACJ,CAAG;AACH;AAiBA,SAASsE,KAAK;AACZ,MAAI1G,IAAI;AACR,QAAMiI,IAAInH,GAAE,EAAE;AACd,SAAO,CAACF,GAAGM,MAAM;AACf,QAAI+G,EAAE,QAAQ/G,EAAE,OAAOlB,EAAG;AAC1B,IAAAA,IAAI;AACJ,UAAMoC,IAAI8D,GAAGtF,GAAGM,EAAE,KAAK;AACvBkC,IAAAA,EAAE6E,GAAG,CAAC,MAAM7F,EAAE,QAAQ,CAAC;AAAA,EACzB;AACF;AACAsE,GAAE;AA0GF,OAAO,oBAAoB,OAAO,sBAAsB;AAgXnD,MAsH+DiC,KAAK,EAAE,OAAO,QAAO,GAAIC,KAAqB3E,gBAAAA,GAAE;AAAA,EAClH,QAAQ;AAAA,EACR,OAAO;AAAA,IACL,YAAY,CAAA;AAAA,IACZ,MAAM,CAAA;AAAA,IACN,UAAU,EAAE,MAAM,QAAO;AAAA,EAC7B;AAAA,EACE,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAMjE,GAAG,EAAE,MAAMiI,EAAC,GAAI;AACpB,UAAMrH,IAAIqH,GAAG/G,IAAI8F,EAAEhH,EAAE,QAAQ,EAAE;AAC/B4H,IAAAA,GAAG,MAAM;AACP,MAAA5H,EAAE,SAASkB,EAAE,QAAQlB,EAAE,MAAMA,EAAE,WAAW,QAAQ,CAACgD,MAAM;AACvD,QAAAA,EAAE,aAAahD,EAAE,KAAKgD,EAAE,SAAS,MAAM,WAAWA,EAAE,QAAQhD,EAAE,KAAKgD,EAAE,SAAS;AAAA,MAChF,CAAC;AAAA,IACH,CAAC;AACD,UAAMZ,IAAI,CAACY,MAAM;AACf,UAAI/B,IAAI,CAAA;AACR,iBAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ+B,CAAC;AACnC,SAAC,aAAa,WAAW,EAAE,SAAS,CAAC,MAAM/B,EAAE,CAAC,IAAI,IAAI,MAAM,UAAU,KAAK,EAAE,WAAW,MAAMA,EAAE,OAAOC,EAAE,MAAM8B,EAAE,SAAS;AAC5H,aAAO/B;AAAA,IACT,GAAG,IAAIiC,EAAE;AAAA,MACP,KAAK,MAAMlD,EAAE,WAAW,IAAI,CAACgD,GAAG/B,MAAMiC,EAAE;AAAA,QACtC,MAAM;AACJ,iBAAOF,EAAE;AAAA,QACX;AAAA,QACA,KAAK,CAAC,MAAM;AACV,UAAAhD,EAAE,WAAWiB,CAAC,EAAE,QAAQ,GAAGL,EAAE,qBAAqBZ,EAAE,UAAU;AAAA,QAChE;AAAA,MACR,CAAO,CAAC;AAAA,MACF,KAAK,MAAM;AAAA,MACX;AAAA,IACN,CAAK;AACD,WAAO,CAACgD,GAAG/B,OAAOsB,EAAC,GAAIuB,EAAE,QAAQ6E,IAAI;AAAA,OAClCpG,EAAE,EAAE,GAAGuB,EAAE6D,IAAG,MAAMlG,GAAEzB,EAAE,YAAY,CAAC,GAAG,OAAOuC,EAAC,GAAIiB,GAAGT,GAAG,EAAE,SAAS,GAAG1B,GAAG;AAAA,QACxE,KAAK;AAAA,QACL,YAAY,EAAE,MAAM,CAAC,EAAE;AAAA,QACvB,uBAAuB,CAAC4B,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQA;AAAA,QACjD,QAAQ;AAAA,QACR,MAAM/B,EAAE,MAAM,EAAE,SAAS;AAAA,QACzB,UAAUlB,EAAE;AAAA,MACpB,GAAS,EAAE,SAAS,GAAE,GAAIoC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,uBAAuB,UAAU,QAAQ,UAAU,CAAC,EAAE,GAAG,GAAG;AAAA,IACtH,CAAK;AAAA,EACH;AACF,CAAC,GAAGqG,KAAqB,gBAAAtF,GAAEyF,IAAI,CAAC,CAAC,aAAa,iBAAiB,CAAC,CAAC;;;;;;AC55BjE,UAAMC,IAAsB7L,EAAI,EAAI,GAC9B8L,IAAgB9L,EAAI,EAAK,GACzB+L,IAAa/L,EAAI,EAAE,GACnBwC,IAAWC,GAAiC,aAAa,GAEzDuJ,IAAoBrJ,EAAS,MAC3BkJ,EAAoB,QAAQ,cAAc,SACjD,GAEKI,IAAoB,MAAM;AAC/B,MAAAJ,EAAoB,QAAQ,CAACA,EAAoB;AAAA,IAClD,GAEMK,IAAe,YAAY;AAChC,MAAAJ,EAAc,QAAQ,CAACA,EAAc,OACrC,MAAMjJ,GAAS,MAAM;AACpB,QAAAL,EAAS,OAAO,MAAA;AAAA,MACjB,CAAC;AAAA,IACF,GAEM2J,IAAoB,CAACC,MAA8B;AACxD,MAAAA,EAAM,eAAA,GACNA,EAAM,gBAAA;AAAA,IACP,GAEMC,IAAe,OAAOD,MAAsC;AACjE,MAAAA,EAAM,eAAA,GACNA,EAAM,gBAAA,GACN,MAAMF,EAAA;AAAA,IACP,GAEMI,IAAe,MAA6C;AAAA,IAElE;;;kBAhGCvL,EAuDS,UAAA,MAAA;AAAA,QAtDRE,EAqDK,MArDLC,IAqDK;AAAA,UApDJD,EAEK,MAAA;AAAA,YAFD,OAAM;AAAA,YAAmB,SAAOgL;AAAA,YAAoB,cAAeA,GAAiB,CAAA,OAAA,CAAA;AAAA,UAAA;YACvFhL,EAA2D,KAA3DU,IAA2D;AAAA,cAA3CV,EAAuC,OAAA;AAAA,gBAAjC,UAAO+K,EAAA,KAAiB;AAAA,cAAA,GAAE,KAAC,CAAA;AAAA,YAAA;;UAElD/K,EAWK,MAAA;AAAA,YAVJ,OAAM;AAAA,YACL,qBAAkB4K,EAAA,QAAmB,UAAA,QAAA;AAAA,YACrC,SAAOS;AAAA,YACP,cAAeA,GAAY,CAAA,OAAA,CAAA;AAAA,UAAA;YAC5BjJ,GAKckJ,GAAA;AAAA,cALD,IAAG;AAAA,cAAI,UAAS;AAAA,YAAA;0BAC5B,MAGM,CAAA,GAAApL,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,gBAHNF,EAGM,OAAA;AAAA,kBAHD,OAAM;AAAA,kBAAO,cAAW;AAAA,kBAAO,SAAQ;AAAA,kBAAY,MAAK;AAAA,kBAAO,QAAO;AAAA,kBAAe,gBAAa;AAAA,gBAAA;kBACtGA,EAA0B,QAAA,EAApB,GAAE,iBAAe;AAAA,kBACvBA,EAAyB,QAAA,EAAnB,GAAE,gBAAc;AAAA,gBAAA;;;;;UAIzBA,EA8BK,MAAA;AAAA,YA7BH,2CAAwC6K,EAAA,MAAA,CAAa,CAAA;AAAA,YACrD,qBAAkBD,EAAA,QAAmB,UAAA,QAAA;AAAA,UAAA;YACtC5K,EA0BI,KA1BJW,IA0BI;AAAA,uBAzBHb,EAaM,OAAA;AAAA,gBAXL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,cAAW;AAAA,gBACX,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,gBAAa;AAAA,gBACZ,SAAOmL;AAAA,gBACP,cAAeA,GAAY,CAAA,OAAA,CAAA;AAAA,cAAA;gBAC5BjL,EAAgC,UAAA;AAAA,kBAAxB,IAAG;AAAA,kBAAK,IAAG;AAAA,kBAAK,GAAE;AAAA,gBAAA;gBAC1BA,EAA8B,QAAA,EAAxB,GAAE,oBAAA,GAAmB,MAAA,EAAA;AAAA,cAAA;sBAXlB6K,EAAA,KAAa;AAAA,cAAA;iBAavB7K,EAUkC,SAAA;AAAA,gBARjC,KAAI;AAAA,8DACK8K,EAAU,QAAA3K;AAAA,gBACnB,MAAK;AAAA,gBACL,aAAY;AAAA,gBACX,4BAAD,MAAA;AAAA,gBAAA,GAAW,CAAA,MAAA,CAAA;AAAA,gBACV,SAAKD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAE+K,EAAkB/K,CAAM;AAAA,gBAC/B,QAAID,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAEiL,EAAajL,CAAM;AAAA,gBACzB,WAAO;AAAA,kBAAQD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAqL,GAAA,CAAApL,MAAAiL,EAAajL,CAAM,GAAA,CAAA,OAAA,CAAA;AAAA,qBAClB8K,GAAY,CAAA,QAAA,CAAA;AAAA,gBAAA;AAAA;qBATrBJ,EAAA,KAAa;AAAA,qBAEZC,EAAA,KAAU;AAAA,cAAA;;;kBAUtBhL,EAKKO,IAAA,MAAAC,GAJiBC,EAAA,aAAW,CAAzBiL,YADR1L,EAKK,MAAA;AAAA,YAHH,KAAK0L,EAAW;AAAA,YAChB,qBAAkBZ,EAAA,QAAmB,UAAA,QAAA;AAAA,UAAA;YACtCxI,GAAoFkJ,GAAA;AAAA,cAAvE,UAAS;AAAA,cAAK,IAAIE,EAAW;AAAA,YAAA;0BAAK,MAAsB;AAAA,gBAAnBC,GAAAhL,EAAA+K,EAAW,KAAK,GAAA,CAAA;AAAA,cAAA;;;;;;;;;;;;;;;;;;;;ACTtE,UAAM,EAAE,WAAAE,EAAA,IAAcC,GAAA,GAGhBC,IAAU7M,EAAI,EAAK,GACnB8M,IAAS9M,EAAI,EAAK,GAClB+M,IAAqB/M,EAAI,EAAK,GAK9BgN,IAAkBrK,EAA8B;AAAA,MACrD,MAAM;AACL,YAAI,CAACgK,EAAU,SAAS,CAACM,EAAe,SAAS,CAACC,EAAgB;AACjE,iBAAO,CAAA;AAGR,YAAI;AAEH,iBADeP,EAAU,MAAM,cAAcM,EAAe,OAAOC,EAAgB,KAAK,GACzE,IAAI,EAAE,KAAK,CAAA;AAAA,QAC3B,QAAQ;AACP,iBAAO,CAAA;AAAA,QACR;AAAA,MACD;AAAA,MACA,IAAIC,GAA8B;AACjC,YAAI,GAACR,EAAU,SAAS,CAACM,EAAe,SAAS,CAACC,EAAgB;AAIlE,cAAI;AAEH,kBAAME,IAAWT,EAAU,MAAM,SAAA;AACjC,uBAAW,CAACU,GAAWC,CAAK,KAAK,OAAO,QAAQH,CAAO,GAAG;AACzD,oBAAMI,IAAY,GAAGN,EAAe,KAAK,IAAIC,EAAgB,KAAK,IAAIG,CAAS;AAC/E,cAAAD,EAAS,IAAIG,GAAWD,CAAK;AAAA,YAC9B;AAAA,UACD,SAASE,GAAO;AAEf,oBAAQ,KAAK,sBAAsBA,CAAK;AAAA,UACzC;AAAA,MACD;AAAA,IAAA,CACA,GAKKC,IAAQ9K,EAAS,MAAM+K,GAAMf,EAAU,OAAO,SAAS,QAAQ,YAAY,CAAC,GAC5EgB,IAAShL,EAAS,MAAMgK,EAAU,OAAO,SAAS,MAAM,GACxDM,IAAiBtK,EAAS,MAAM;AACrC,UAAI,CAAC8K,EAAM,MAAO,QAAO;AAGzB,UAAIA,EAAM,MAAM,MAAM;AACrB,eAAOA,EAAM,MAAM,KAAK;AAIzB,UAAIA,EAAM,MAAM,OAAO;AACtB,eAAOA,EAAM,MAAM,OAAO;AAI3B,YAAMG,IAAYH,EAAM,MAAM,OAAO;AACrC,aAAIG,KAAaA,EAAU,SAAS,IAC5BA,EAAU,CAAC,IAGZ;AAAA,IACR,CAAC,GAGKC,IAAelL,EAAS,MAAM;AACnC,UAAI,CAAC8K,EAAM,MAAO,QAAO;AAGzB,UAAIA,EAAM,MAAM,MAAM;AACrB,eAAOA,EAAM,MAAM,KAAK;AAIzB,UAAIA,EAAM,MAAM,OAAO;AACtB,eAAOA,EAAM,MAAM,OAAO;AAI3B,YAAMG,IAAYH,EAAM,MAAM,OAAO;AACrC,aAAIG,KAAaA,EAAU,SAAS,IAC5BA,EAAU,CAAC,IAGZ;AAAA,IACR,CAAC,GAEKV,IAAkBvK,EAAS,MAAM;AACtC,UAAI,CAAC8K,EAAM,MAAO,QAAO;AAGzB,UAAIA,EAAM,MAAM,OAAO;AACtB,eAAOA,EAAM,MAAM,OAAO;AAI3B,YAAMG,IAAYH,EAAM,MAAM,OAAO;AACrC,aAAIG,KAAaA,EAAU,SAAS,IAC5BA,EAAU,CAAC,IAGZ;AAAA,IACR,CAAC,GACKE,IAAcnL,EAAS,MAAMuK,EAAgB,OAAO,WAAW,MAAM,CAAC,GAGtEa,IAAcpL,EAAS,MAAM;AAMlC,UALI,CAAC8K,EAAM,SAKPA,EAAM,MAAM,SAAS,UAAUA,EAAM,MAAM,SAAS;AACvD,eAAO;AAIR,UAAIA,EAAM,MAAM,QAAQA,EAAM,MAAM,SAAS,aAAa;AACzD,cAAMO,IAAYP,EAAM,MAAM;AAC9B,YAAIO,EAAU,SAAS,MAAM,KAAKP,EAAM,MAAM,OAAO;AACpD,iBAAO;AACR,YAAWO,EAAU,SAAS,MAAM,KAAKP,EAAM,MAAM,OAAO;AAC3D,iBAAO;AAAA,MAET;AAGA,YAAMG,IAAYH,EAAM,MAAM,OAAO;AACrC,aAAIG,KAAaA,EAAU,SAAS,IACtBA,EAAU,WAAW,IAAI,YAAY,WAI5C;AAAA,IACR,CAAC,GAIKK,IAA0B,MAAM;AACrC,UAAI,CAACtB,EAAU,SAAS,CAACM,EAAe,SAAS,CAACC,EAAgB;AACjE,eAAO,CAAA;AAGR,UAAI;AAEH,cAAMgB,IADWvB,EAAU,MAAM,SACX,SAASM,EAAe,KAAK;AAEnD,YAAI,CAACiB,GAAM,UAAU;AACpB,iBAAO,CAAA;AAKR,cAAMC,IAAeL,EAAY,QAAQ,aAAa,WAChDM,IAAcF,EAAK,SAAS,OAAOC,CAAY;AAErD,eAAKC,GAAa,KAKE,OAAO,KAAKA,EAAY,EAAE,EAGX,IAAI,CAAAC,MAAc;AACpD,gBAAMC,KAAcF,EAAY,KAAKC,CAAU,GACzCE,IAAkB,OAAOD,MAAgB,WAAWA,KAAc,WAElEE,KAAW,YAAY;AAC5B,kBAAMC,KAAO9B,EAAU,OAAO,cAAcM,EAAe,OAAOC,EAAgB,KAAK;AACvF,gBAAIuB,IAAM;AACT,oBAAMC,KAAa1B,EAAgB,SAAS,CAAA;AAC5C,oBAAMyB,GAAK,kBAAkBJ,GAAY;AAAA,gBACxC,cAAAF;AAAA,gBACA,aAAaI;AAAA,gBACb,YAAYG;AAAA,cAAA,CACZ;AAAA,YACF;AAAA,UACD;AAOA,iBALgB;AAAA,YACf,OAAO,GAAGL,CAAU,OAAOE,CAAe;AAAA,YAC1C,QAAQC;AAAA,UAAA;AAAA,QAIV,CAAC,IA7BO,CAAA;AAAA,MAgCT,SAAShB,GAAO;AAEf,uBAAQ,KAAK,wCAAwCA,CAAK,GACnD,CAAA;AAAA,MACR;AAAA,IACD,GAGMmB,IAAiBhM,EAA2B,MAAM;AACvD,YAAMiM,IAA6B,CAAA;AAEnC,cAAQb,EAAY,OAAA;AAAA,QACnB,KAAK;AACJ,UAAAa,EAAS,KAAK;AAAA,YACb,MAAM;AAAA,YACN,OAAO;AAAA,YACP,QAAQ,MAAM;AAEb,qBAAO,SAAS,OAAA;AAAA,YACjB;AAAA,UAAA,CACA;AACD;AAAA,QACD,KAAK;AACJ,UAAAA,EAAS;AAAA,YACR;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,QAAQ,MAAA;AAAM,gBAAKC,EAAA;AAAA;AAAA,YAAgB;AAAA,YAEpC;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,QAAQ,MAAM;AAEb,uBAAO,SAAS,OAAA;AAAA,cACjB;AAAA,YAAA;AAAA,UACD;AAED;AAAA,QACD,KAAK,UAAU;AAEd,gBAAMC,IAAoBb,EAAA;AAC1B,UAAIa,EAAkB,SAAS,KAC9BF,EAAS,KAAK;AAAA,YACb,MAAM;AAAA,YACN,OAAO;AAAA,YACP,SAASE;AAAA,UAAA,CACT;AAEF;AAAA,QACD;AAAA,MAAA;AAGD,aAAOF;AAAA,IACR,CAAC,GAEKG,IAAwBpM,EAAS,MAAM;AAC5C,YAAMqM,IAA+C,CAAA;AAErD,aAAIjB,EAAY,UAAU,aAAaF,EAAa,QACnDmB,EAAY;AAAA,QACX,EAAE,OAAO,QAAQ,IAAI,IAAA;AAAA,QACrB,EAAE,OAAOC,EAAkBpB,EAAa,KAAK,GAAG,IAAI,IAAIA,EAAa,KAAK,GAAA;AAAA,MAAG,IAEpEE,EAAY,UAAU,YAAYF,EAAa,SACzDmB,EAAY;AAAA,QACX,EAAE,OAAO,QAAQ,IAAI,IAAA;AAAA,QACrB,EAAE,OAAOC,EAAkBpB,EAAa,KAAK,GAAG,IAAI,IAAIA,EAAa,KAAK,GAAA;AAAA,QAC1E,EAAE,OAAOC,EAAY,QAAQ,eAAe,eAAe,IAAIL,EAAM,OAAO,YAAY,GAAA;AAAA,MAAG,GAItFuB;AAAA,IACR,CAAC,GASKE,IAAiB,CAAC5M,MAA6B;AACpD,YAAM6M,IAAsB;AAAA,QAC3B;AAAA,UACC,OAAO;AAAA,UACP,aAAa;AAAA,UACb,QAAQ,MAAA;AAAM,YAAKxB,EAAO,OAAO,KAAK,GAAG;AAAA;AAAA,QAAA;AAAA,QAE1C;AAAA,UACC,OAAO;AAAA,UACP,aAAa;AAAA,UACb,QAAQ,MAAOZ,EAAmB,QAAQ,CAACA,EAAmB;AAAA,QAAA;AAAA,MAC/D;AA4BD,aAxBIc,EAAa,UAChBsB,EAAS,KAAK;AAAA,QACb,OAAO,QAAQF,EAAkBpB,EAAa,KAAK,CAAC;AAAA,QACpD,aAAa,eAAeA,EAAa,KAAK;AAAA,QAC9C,QAAQ,MAAA;AAAM,UAAKF,EAAO,OAAO,KAAK,IAAIE,EAAa,KAAK,EAAE;AAAA;AAAA,MAAA,CAC9D,GAEDsB,EAAS,KAAK;AAAA,QACb,OAAO,cAAcF,EAAkBpB,EAAa,KAAK,CAAC;AAAA,QAC1D,aAAa,gBAAgBA,EAAa,KAAK;AAAA,QAC/C,QAAQ,MAAA;AAAM,UAAKgB,EAAA;AAAA;AAAA,MAAgB,CACnC,IAIFrN,EAAA,kBAAkB,QAAQ,CAAA4N,MAAW;AACpC,QAAAD,EAAS,KAAK;AAAA,UACb,OAAO,QAAQF,EAAkBG,CAAO,CAAC;AAAA,UACzC,aAAa,eAAeA,CAAO;AAAA,UACnC,QAAQ,MAAA;AAAM,YAAKzB,EAAO,OAAO,KAAK,IAAIyB,CAAO,EAAE;AAAA;AAAA,QAAA,CACnD;AAAA,MACF,CAAC,GAGI9M,IAEE6M,EAAS;AAAA,QACf,OACCE,EAAI,MAAM,YAAA,EAAc,SAAS/M,EAAM,YAAA,CAAa,KACpD+M,EAAI,YAAY,YAAA,EAAc,SAAS/M,EAAM,aAAa;AAAA,MAAA,IALzC6M;AAAA,IAOpB,GAEMG,IAAiB,CAACC,MAAqB;AAC5C,MAAAA,EAAQ,OAAA,GACRxC,EAAmB,QAAQ;AAAA,IAC5B,GAGMkC,IAAoB,CAACG,MACnBA,EACL,MAAM,GAAG,EACT,IAAI,CAAAI,MAAQA,EAAK,OAAO,CAAC,EAAE,YAAA,IAAgBA,EAAK,MAAM,CAAC,CAAC,EACxD,KAAK,GAAG,GAGLC,IAAiB,CAACL,MAClBzC,EAAU,QACGA,EAAU,MAAM,aAAayC,CAAO,EACrC,SAFY,GAKxBM,IAAoB,OAAON,MAAoB;AACpD,YAAMzB,EAAO,OAAO,KAAK,IAAIyB,CAAO,EAAE;AAAA,IACvC,GAEMO,IAAa,OAAOC,MAAqB;AAC9C,YAAMjC,EAAO,OAAO,KAAK,IAAIE,EAAa,KAAK,IAAI+B,CAAQ,EAAE;AAAA,IAC9D,GAEMf,IAAkB,YAAY;AACnC,YAAMgB,IAAQ,OAAO,KAAK,IAAA,CAAK;AAC/B,YAAMlC,EAAO,OAAO,KAAK,IAAIE,EAAa,KAAK,IAAIgC,CAAK,EAAE;AAAA,IAC3D,GAGMC,IAAsB,CAACV,MAAoB;AAChD,UAAKzC,EAAU;AAIf,YAAI;AACH,UAAAA,EAAU,MAAM,QAAQyC,CAAO;AAAA,QAChC,QAAgB;AAAA,QAEhB;AAAA,IACD,GAGMW,IAAoB,MAAqB;AAC9C,UAAI,CAACvO,EAAA,kBAAkB,eAAe,CAAA;AAEtC,YAAMwO,IAAOxO,EAAA,kBAAkB,IAAI,CAAA4N,OAAY;AAAA,QAC9C,IAAIA;AAAA,QACJ,SAAAA;AAAA,QACA,cAAcH,EAAkBG,CAAO;AAAA,QACvC,cAAcK,EAAeL,CAAO;AAAA,QACpC,SAAS;AAAA,MAAA,EACR;AAEF,aAAO;AAAA,QACN;AAAA,UACC,WAAW;AAAA,UACX,WAAW;AAAA,UACX,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA;AAAA,QAMR;AAAA,UACC,WAAW;AAAA,UACX,WAAW;AAAA,UACX,SAAS;AAAA,YACR;AAAA,cACC,OAAO;AAAA,cACP,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO;AAAA,cACP,MAAM;AAAA,cACN,OAAO;AAAA,YAAA;AAAA,YAER;AAAA,cACC,OAAO;AAAA,cACP,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO;AAAA,cACP,MAAM;AAAA,cACN,OAAO;AAAA,YAAA;AAAA,YAER;AAAA,cACC,OAAO;AAAA,cACP,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO;AAAA,cACP,MAAM;AAAA,cACN,OAAO;AAAA,YAAA;AAAA,YAER;AAAA,cACC,OAAO;AAAA,cACP,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO;AAAA,cACP,MAAM;AAAA,cACN,OAAO;AAAA,YAAA;AAAA,UACR;AAAA,UAED,QAAQ;AAAA,YACP,MAAM;AAAA,YACN,WAAW;AAAA,UAAA;AAAA,UAEZ,MAAAY;AAAA,QAAA;AAAA,MACD;AAAA,IAEF,GAEMC,IAAmB,MAAqB;AAC7C,UAAI,CAAChD,EAAe,MAAO,QAAO,CAAA;AAClC,UAAI,CAACN,EAAU,MAAO,QAAO,CAAA;AAE7B,YAAMuD,IAAUC,EAAA,GACVC,IAAUC,EAAA;AAGhB,UAAID,EAAQ,WAAW;AACtB,eAAO;AAAA,UACN;AAAA,YACC,WAAW;AAAA,YACX,WAAW;AAAA,YACX,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,+BAKoBnB,EAAkBpB,EAAa,SAASZ,EAAe,KAAK,CAAC;AAAA;AAAA,YAEhFgC,EAAkBpB,EAAa,SAASZ,EAAe,KAAK,CAAC;AAAA;AAAA;AAAA,UAAA;AAAA,UAItE;AAAA,YACC,WAAW;AAAA,YACX,WAAW;AAAA,YACX,OAAO;AAAA;AAAA,mBAEQgC,EAAkBpB,EAAa,SAASZ,EAAe,KAAK,CAAC;AAAA;AAAA;AAAA,UAAA;AAAA,QAG7E;AAIF,YAAM+C,IAAOE,EAAQ,IAAI,CAACI,OAAiB;AAAA,QAC1C,GAAGA;AAAA;AAAA,QAEH,IAAIA,EAAO,MAAM;AAAA,QACjB,SAAS;AAAA,MAAA,EACR;AAEF,aAAO;AAAA,QACN;AAAA,UACC,WAAW;AAAA,UACX,WAAW;AAAA,UACX,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,8BAKoBrB,EAAkBpB,EAAa,SAASZ,EAAe,KAAK,CAAC;AAAA;AAAA,WAEhFgC,EAAkBpB,EAAa,SAASZ,EAAe,KAAK,CAAC;AAAA;AAAA;AAAA,QAAA;AAAA,QAItE;AAAA,UACC,WAAW;AAAA,UACX,WAAW;AAAA,UACX,OAAO;AAAA;AAAA;AAAA,YAGEgC,EAAkBpB,EAAa,SAASZ,EAAe,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,QAAA;AAAA,QAKvE,GAAIiD,EAAQ,WAAW,IACpB;AAAA,UACA;AAAA,YACC,WAAW;AAAA,YACX,WAAW;AAAA,YACX,OAAO;AAAA;AAAA,gBAEGrC,EAAa,SAASZ,EAAe,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA;AAAA,QAMrD,IAEA;AAAA,UACA;AAAA,YACC,WAAW;AAAA,YACX,WAAW;AAAA,YACX,SAAS;AAAA,cACR,GAAGmD,EAAQ,IAAI,CAAAG,OAAQ;AAAA,gBACtB,OAAOA,EAAI;AAAA,gBACX,MAAMA,EAAI;AAAA,gBACV,WAAWA,EAAI;AAAA,gBACf,OAAO;AAAA,gBACP,MAAM;AAAA,gBACN,OAAO;AAAA,cAAA,EACN;AAAA,cACF;AAAA,gBACC,OAAO;AAAA,gBACP,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,OAAO;AAAA,gBACP,MAAM;AAAA,gBACN,OAAO;AAAA,cAAA;AAAA,YACR;AAAA,YAED,QAAQ;AAAA,cACP,MAAM;AAAA,cACN,WAAW;AAAA,YAAA;AAAA,YAEZ,MAAAP;AAAA,UAAA;AAAA,QACD;AAAA,MACA;AAAA,IAEL,GAEMQ,IAAsB,MAAqB;AAChD,UAAI,CAACvD,EAAe,MAAO,QAAO,CAAA;AAClC,UAAI,CAACN,EAAU,MAAO,QAAO,CAAA;AAE7B,UAAI;AAEH,cAAMuB,IADWvB,EAAU,OAAO,UACX,SAASM,EAAe,KAAK;AAEpD,YAAI,CAACiB,GAAM;AAEV,iBAAO;AAAA,YACN;AAAA,cACC,WAAW;AAAA,cACX,WAAW;AAAA,cACX,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKQL,EAAa,SAASZ,EAAe,KAAK,KAAKgC;AAAA,gBAC7DpB,EAAa,SAASZ,EAAe;AAAA,cAAA,CACrC;AAAA;AAAA,gCAE0Ba,EAAY,QAAQ,eAAeZ,EAAgB,KAAK;AAAA;AAAA,aAGhFY,EAAY,QACT,OAAOmB,EAAkBpB,EAAa,SAASZ,EAAe,KAAK,CAAC,KACpE,QAAQgC,EAAkBpB,EAAa,SAASZ,EAAe,KAAK,CAAC,EACzE;AAAA;AAAA;AAAA,YAAA;AAAA,YAIH;AAAA,cACC,WAAW;AAAA,cACX,WAAW;AAAA,cACX,OAAO;AAAA;AAAA,oBAEQgC,EAAkBpB,EAAa,SAASZ,EAAe,KAAK,CAAC;AAAA;AAAA;AAAA,YAAA;AAAA,UAG7E;AAIF,cAAMwD,IAAc,aAAavC,EAAK,SAASA,EAAK,OAAO,YAAYA,EAAK,QACtEwC,IAAgBC,EAAA;AAEtB,eAAO;AAAA,UACN;AAAA,YACC,WAAW;AAAA,YACX,WAAW;AAAA,YACX,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKQ9C,EAAa,SAASZ,EAAe,KAAK,KAAKgC;AAAA,cAC7DpB,EAAa,SAASZ,EAAe;AAAA,YAAA,CACrC;AAAA;AAAA,+BAE0Ba,EAAY,QAAQ,eAAeZ,EAAgB,KAAK;AAAA;AAAA;AAAA,SAI/EY,EAAY,QACT,OAAOmB,EAAkBpB,EAAa,SAASZ,EAAe,KAAK,CAAC,KACpE,QAAQgC,EAAkBpB,EAAa,SAASZ,EAAe,KAAK,CAAC,EACzE;AAAA;AAAA;AAAA;AAAA,UAAA;AAAA,UAKJ;AAAA,YACC,WAAW;AAAA,YACX,WAAW;AAAA,YACX,OAAO;AAAA;AAAA,uDAE4CH,EAAO,QAAQ,aAAa,EAAE;AAAA,SAC5EA,EAAO,QAAQ,cAAc,MAAM;AAAA;AAAA;AAAA,QAGnCgB,EAAY,QAA4E,KAApE,iEAAsE;AAAA;AAAA;AAAA,UAAA;AAAA,UAIhG,GAAG2C,EAAY,IAAI,CAAAG,OAAU;AAAA,YAC5B,GAAGA;AAAA;AAAA,YAEH,OAAOF,EAAcE,EAAM,SAAS,KAAK;AAAA,UAAA,EACxC;AAAA,QAAA;AAAA,MAEJ,QAAgB;AACf,eAAO;AAAA,UACN;AAAA,YACC,WAAW;AAAA,YACX,WAAW;AAAA,YACX,OAAO;AAAA;AAAA,0CAE+B3B,EAAkBpB,EAAa,SAASZ,EAAe,KAAK,CAAC;AAAA;AAAA;AAAA,UAAA;AAAA,QAGpG;AAAA,MAEF;AAAA,IACD,GAGMkD,IAAa,MAAM;AACxB,UAAI,CAACxD,EAAU,SAAS,CAACM,EAAe;AACvC,eAAO,CAAA;AAIR,YAAM4D,IADclE,EAAU,MAAM,QAAQM,EAAe,KAAK,GAC/B,IAAI,EAAE;AAEvC,aAAI4D,KAAe,OAAOA,KAAgB,YAAY,CAAC,MAAM,QAAQA,CAAW,IACxE,OAAO,OAAOA,CAAkC,IAGjD,CAAA;AAAA,IACR,GAEMR,IAAa,MAAM;AACxB,UAAI,CAAC1D,EAAU,SAAS,CAACM,EAAe,cAAc,CAAA;AAEtD,UAAI;AAEH,cAAMiB,IADWvB,EAAU,MAAM,SACX,SAASM,EAAe,KAAK;AAEnD,YAAIiB,GAAM;AAET,kBADoB,aAAaA,EAAK,SAASA,EAAK,OAAO,YAAYA,EAAK,QACzD,IAAI,CAAA0C,OAAU;AAAA,YAChC,WAAWA,EAAM;AAAA,YACjB,OAAQ,WAAWA,KAASA,EAAM,SAAUA,EAAM;AAAA,YAClD,WAAY,eAAeA,KAASA,EAAM,aAAc;AAAA,UAAA,EACvD;AAAA,MAEJ,QAAgB;AAAA,MAEhB;AAEA,aAAO,CAAA;AAAA,IACR,GAEMD,IAAmB,MACpB,CAAChE,EAAU,SAAS,CAACM,EAAe,SAASa,EAAY,QAAc,CAAA,IAE5DnB,EAAU,MAAM,cAAcM,EAAe,OAAOC,EAAgB,KAAK,GACzE,IAAI,EAAE,KAAK,CAAA,GAIrB4D,IAAoBnO,EAAwB,MAAM;AACvD,cAAQoL,EAAY,OAAA;AAAA,QACnB,KAAK;AACJ,iBAAOgC,EAAA;AAAA,QACR,KAAK;AACJ,iBAAOE,EAAA;AAAA,QACR,KAAK;AACJ,iBAAOO,EAAA;AAAA,QACR;AACC,iBAAO,CAAA;AAAA,MAAC;AAAA,IAEX,CAAC,GAGKO,IAAiB/Q,EAAmB,EAAE;AAG5C,IAAA4C;AAAA,MACCkO;AAAA,MACA,CAAAE,MAAa;AACZ,QAAAD,EAAe,QAAQ,CAAC,GAAGC,CAAS;AAAA,MACrC;AAAA,MACA,EAAE,WAAW,IAAM,MAAM,GAAA;AAAA,IAAK,GAI/BpO;AAAA,MACCmO;AAAA,MACA,CAAAC,MAAa;AACZ,YAAI,GAACrE,EAAU,SAAS,CAACM,EAAe,SAAS,CAACC,EAAgB,SAASY,EAAY;AAIvF,cAAI;AACH,kBAAMV,IAAWT,EAAU,MAAM,SAAA;AAGjC,YAAAqE,EAAU,QAAQ,CAAAJ,MAAS;AAE1B,kBACCA,EAAM,aACN,WAAWA,KACX,CAAC,CAAC,UAAU,WAAW,WAAW,OAAO,EAAE,SAASA,EAAM,SAAS,GAClE;AACD,sBAAMrD,IAAY,GAAGN,EAAe,KAAK,IAAIC,EAAgB,KAAK,IAAI0D,EAAM,SAAS;AAIrF,iBAHqBxD,EAAS,IAAIG,CAAS,IAAIH,EAAS,IAAIG,CAAS,IAAI,YAGpDqD,EAAM,SAC1BxD,EAAS,IAAIG,GAAWqD,EAAM,KAAK;AAAA,cAErC;AAAA,YACD,CAAC;AAAA,UACF,SAASpD,GAAO;AAEf,oBAAQ,KAAK,2BAA2BA,CAAK;AAAA,UAC9C;AAAA,MACD;AAAA,MACA,EAAE,MAAM,GAAA;AAAA,IAAK;AAId,UAAMyD,IAAa,YAAY;AAE9B,UAAKtE,EAAU,OAEf;AAAA,QAAAG,EAAO,QAAQ;AAEf,YAAI;AACH,gBAAMoE,IAAWlE,EAAgB,SAAS,CAAA;AAE1C,cAAIc,EAAY,OAAO;AACtB,kBAAM+B,IAAQ,UAAU,KAAK,IAAA,CAAK,IAC5BnB,IAAa,EAAE,IAAImB,GAAO,GAAGqB,EAAA;AAEnC,YAAAvE,EAAU,MAAM,UAAUM,EAAe,OAAO4C,GAAOnB,CAAU;AAGjE,kBAAMD,IAAO9B,EAAU,MAAM,cAAcM,EAAe,OAAO4C,CAAK;AACtE,YAAIpB,KACH,MAAMA,EAAK,kBAAkB,QAAQ;AAAA,cACpC,cAAc;AAAA,cACd,aAAa;AAAA,cACb,YAAYC;AAAA,YAAA,CACZ,GAGF,MAAMf,EAAO,OAAO,QAAQ,IAAIE,EAAa,KAAK,IAAIgC,CAAK,EAAE;AAAA,UAC9D,OAAO;AACN,kBAAMnB,IAAa,EAAE,IAAIxB,EAAgB,OAAO,GAAGgE,EAAA;AACnD,YAAAvE,EAAU,MAAM,UAAUM,EAAe,OAAOC,EAAgB,OAAOwB,CAAU;AAGjF,kBAAMD,IAAO9B,EAAU,MAAM,cAAcM,EAAe,OAAOC,EAAgB,KAAK;AACtF,YAAIuB,KACH,MAAMA,EAAK,kBAAkB,QAAQ;AAAA,cACpC,cAAc;AAAA,cACd,aAAa;AAAA,cACb,YAAYC;AAAA,YAAA,CACZ;AAAA,UAEH;AAAA,QACD,QAAgB;AAAA,QAEhB,UAAA;AACC,UAAA5B,EAAO,QAAQ;AAAA,QAChB;AAAA;AAAA,IACD,GAEMqE,IAAe,YAAY;AAChC,UAAIrD,EAAY;AAGf,cAAMH,EAAO,OAAO,KAAK,IAAIE,EAAa,KAAK,EAAE;AAAA,WAC3C;AAEN,YAAIlB,EAAU,OAAO;AACpB,gBAAM8B,IAAO9B,EAAU,MAAM,cAAcM,EAAe,OAAOC,EAAgB,KAAK;AACtF,UAAIuB,KACH,MAAMA,EAAK,kBAAkB,UAAU;AAAA,YACtC,cAAc;AAAA,YACd,aAAa;AAAA,UAAA,CACb;AAAA,QAEH;AAEA,QAAA2C,EAAA;AAAA,MACD;AAAA,IACD,GAEMC,IAAoB,CAACvQ,GAAeD,MAAqD;AAE9F,MAAIA,KACEA,EAAA;AAAA,IAEP,GAEMyQ,IAAe,OAAO1B,MAAsB;AACjD,UAAI,CAACjD,EAAU,MAAO;AAEtB,YAAM4E,IAAiB3B,KAAY1C,EAAgB;AACnD,UAAKqE,KAED,QAAQ,8CAA8C,GAAG;AAE5D,cAAM9C,IAAO9B,EAAU,MAAM,cAAcM,EAAe,OAAOsE,CAAc;AAC/E,QAAI9C,KACH,MAAMA,EAAK,kBAAkB,UAAU;AAAA,UACtC,cAAc;AAAA,UACd,aAAa;AAAA,QAAA,CACb,GAGF9B,EAAU,MAAM,aAAaM,EAAe,OAAOsE,CAAc,GAE7DxD,EAAY,UAAU,YACzB,MAAMJ,EAAO,OAAO,KAAK,IAAIE,EAAa,KAAK,EAAE;AAAA,MAEnD;AAAA,IACD,GAGMjN,IAAc,OAAOwL,MAAiB;AAC3C,YAAMoF,IAASpF,EAAM,QACfvL,IAAS2Q,EAAO,aAAa,aAAa;AAEhD,UAAI3Q;AACH,gBAAQA,GAAA;AAAA,UACP,KAAK;AACJ,kBAAMgO,EAAA;AACN;AAAA,UACD,KAAK;AACJ,kBAAMoC,EAAA;AACN;AAAA,UACD,KAAK;AACJ,kBAAME,EAAA;AACN;AAAA,UACD,KAAK;AACJ,kBAAMG,EAAA;AACN;AAAA,QAAA;AAKH,YAAMG,IAAOD,EAAO,QAAQ,QAAQ;AACpC,UAAIC,GAAM;AACT,cAAMC,IAAWD,EAAK,aAAa,KAAA,GAC7BE,KAAMF,EAAK,QAAQ,IAAI;AAE7B,YAAIC,MAAa,kBAAkBC,IAAK;AAEvC,gBAAMC,IAAQD,GAAI,iBAAiB,IAAI;AACvC,cAAIC,EAAM,SAAS,GAAG;AAErB,kBAAMxC,IADcwC,EAAM,CAAC,EACC,aAAa,KAAA;AACzC,YAAIxC,KACH,MAAMM,EAAkBN,CAAO;AAAA,UAEjC;AAAA,QACD,WAAWsC,GAAU,SAAS,MAAM,KAAKC,IAAK;AAE7C,gBAAMC,IAAQD,GAAI,iBAAiB,IAAI;AACvC,cAAIC,EAAM,SAAS,GAAG;AAErB,kBAAMhC,IADSgC,EAAM,CAAC,EACE,aAAa,KAAA;AACrC,YAAIhC,KACH,MAAMD,EAAWC,CAAQ;AAAA,UAE3B;AAAA,QACD,WAAW8B,GAAU,SAAS,QAAQ,KAAKC,IAAK;AAE/C,gBAAMC,IAAQD,GAAI,iBAAiB,IAAI;AACvC,cAAIC,EAAM,SAAS,GAAG;AAErB,kBAAMhC,IADSgC,EAAM,CAAC,EACE,aAAa,KAAA;AACrC,YAAIhC,KACH,MAAM0B,EAAa1B,CAAQ;AAAA,UAE7B;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAGA,IAAAhN;AAAA,MACC,CAACmL,GAAad,GAAgBC,CAAe;AAAA,MAC7C,MAAM;AACL,QAAIa,EAAY,UAAU,YACzBqD,EAAA;AAAA,MAEF;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK,GAInBxO;AAAA,MACC+J;AAAA,MACA,CAAAkF,MAAgB;AAAA,MAKhB;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK,GAInBjP;AAAA,MACC,CAACmL,GAAad,GAAgBN,CAAS;AAAA,MACvC,CAAC,CAACmF,GAAM1C,GAAS2C,CAAiB,MAAM;AACvC,QAAID,MAAS,aAAa1C,KAAW2C,KAEpCjC,EAAoBV,CAAO;AAAA,MAE7B;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK;AAGnB,UAAMgC,IAAiB,MAAM;AAC5B,UAAI,GAACzE,EAAU,SAAS,CAACM,EAAe,QAExC;AAAA,QAAAJ,EAAQ,QAAQ;AAEhB,YAAI;AACH,UAAKiB,EAAY,SAGhBnB,EAAU,MAAM,cAAcM,EAAe,OAAOC,EAAgB,KAAK;AAAA,QAG3E,SAASM,GAAO;AAEf,kBAAQ,KAAK,8BAA8BA,CAAK;AAAA,QACjD,UAAA;AACC,UAAAX,EAAQ,QAAQ;AAAA,QACjB;AAAA;AAAA,IACD;AAYA,WAAAmF,GAAQ,kBATe;AAAA,MACtB,mBAAAtC;AAAA,MACA,YAAAC;AAAA,MACA,iBAAAd;AAAA,MACA,YAAAoC;AAAA,MACA,cAAAE;AAAA,MACA,cAAAG;AAAA,IAAA,CAGuC,GAGxCjR,GAAU,MAAM;AAEf,MAAKwC,GAAS,MAAM;AACnB,QAAIkL,EAAY,UAAU,aAAad,EAAe,SAASN,EAAU,SACxEmD,EAAoB7C,EAAe,KAAK;AAAA,MAE1C,CAAC;AAKD,YAAMlK,IAAgB,CAACqJ,MAAyB;AAE/C,SAAKA,EAAM,WAAWA,EAAM,YAAYA,EAAM,QAAQ,QACrDA,EAAM,eAAA,GACNW,EAAmB,QAAQ,KAGxBX,EAAM,QAAQ,YAAYW,EAAmB,UAChDA,EAAmB,QAAQ;AAAA,MAE7B;AAEA,sBAAS,iBAAiB,WAAWhK,CAAa,GAG3C,MAAM;AACZ,iBAAS,oBAAoB,WAAWA,CAAa;AAAA,MACtD;AAAA,IACD,CAAC,mBA7iCAhC,EA4BM,OAAA;AAAA,MA5BD,OAAM;AAAA,MAAW,SAAOH;AAAA,IAAA;MAE5ByC,GAA0E4O,IAAA;AAAA,QAA9D,UAAUtD,EAAA;AAAA,QAAiB,eAAc0C;AAAA,MAAA;MAGxCN,EAAA,MAAe,SAAM,UAAlC5N,GAA2F+O,GAAAC,EAAA,GAAA;AAAA;oBAA1CpB,EAAA;AAAA,sDAAAA,EAAc,QAAA3P;AAAA,QAAG,MAAM4L,EAAA;AAAA,MAAA,uCACvDkF,GAAAvF,CAAA,KACjBtL,KAAAN,EAEM,OAFNY,IAEM;AAAA,QADLV,EAAwC,KAAA,MAArC,aAAQS,EAAGqM,EAAA,KAAW,IAAG,YAAQ,CAAA;AAAA,MAAA,OAFrC1M,KAAAN,EAAkF,OAAlFG,IAAkF,CAAA,GAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,QAAtCF,EAAgC,WAA7B,6BAAyB,EAAA;AAAA,MAAA;MAMxEoC,GAAiD+O,IAAA,EAAtC,aAAarD,EAAA,MAAA,GAAqB,MAAA,GAAA,CAAA,aAAA,CAAA;AAAA,MAG7C1L,GAYiBgP,IAAA;AAAA,QAXf,WAAStF,EAAA;AAAA,QACT,QAAQmC;AAAA,QACT,aAAY;AAAA,QACX,UAAQI;AAAA,QACR,gCAAOvC,EAAA,QAAkB;AAAA,MAAA;QACf,OAAKuF,GACf,CAAkB,EADC,QAAApP,QAAM;AAAA,UACtBwJ,GAAAhL,EAAAwB,EAAO,KAAK,GAAA,CAAA;AAAA,QAAA;QAEL,SAAOoP,GACjB,CAAwB,EADH,QAAApP,QAAM;AAAA,UACxBwJ,GAAAhL,EAAAwB,EAAO,WAAW,GAAA,CAAA;AAAA,QAAA;;;;;ICfnBqP,KAAiB;AAAA,EACtB,SAAS,CAACC,MAAa;AACtB,IAAAA,EAAI,UAAU,aAAaP,EAAS,GACpCO,EAAI,UAAU,kBAAkBH,EAAc,GAC9CG,EAAI,UAAU,WAAWC,EAAO,GAChCD,EAAI,UAAU,YAAYJ,EAAQ;AAAA,EACnC;AACD;"}
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: \"&nbsp;\" }) }\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: \"&nbsp;\" }) }\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: \"&nbsp;\" }) }\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: \"&nbsp;\" }) }\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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"}