{"version":3,"file":"utils-hOgVh64u.js","sources":["../../../app/frontend/library/components/layouts/VBackdrop.vue","../../../app/frontend/library/components/labels/VSpan.vue","../../../app/frontend/library/components/dialogs/VLoaderDialog.vue","../../../app/frontend/library/utils/loader.ts","../../../app/frontend/library/components/labels/VHeading.vue","../../../app/frontend/library/components/directives.ts","../../../app/frontend/library/components/dialogs/VDialog.vue","../../../app/frontend/library/components/labels/VParagraph.vue","../../../app/frontend/library/components/dialogs/VSimpleDialog.vue","../../../app/frontend/library/utils/focus.ts","../../../app/frontend/libs/zhyswan-vuedraggable/util/htmlHelper.ts","../../../app/frontend/libs/zhyswan-vuedraggable/util/console.ts","../../../app/frontend/libs/zhyswan-vuedraggable/util/string.ts","../../../app/frontend/libs/zhyswan-vuedraggable/core/sortableEvents.ts","../../../app/frontend/libs/zhyswan-vuedraggable/util/tags.ts","../../../app/frontend/libs/zhyswan-vuedraggable/core/componentBuilderHelper.ts","../../../app/frontend/libs/zhyswan-vuedraggable/core/componentStructure.ts","../../../app/frontend/libs/zhyswan-vuedraggable/core/renderHelper.ts","../../../app/frontend/libs/zhyswan-vuedraggable/vuedraggable.ts","../../../app/frontend/library/components/inputs/components/VSValidation.vue","../../../app/frontend/library/components/inputs/helpers/buffering.ts","../../../app/frontend/library/utils/validations.ts","../../../app/frontend/library/components/inputs/helpers/input.ts","../../../app/frontend/library/components/inputs/helpers/validations.ts","../../../app/frontend/library/components/inputs/VInput.vue","../../../app/frontend/library/components/inputs/helpers/fallthrough.ts","../../../app/frontend/library/components/inputs/VSearch.vue","../../../app/frontend/library/components/dialogs/components/VSContextMenuItem.vue","../../../app/frontend/library/components/dialogs/VContextMenu.vue","../../../app/frontend/library/utils/dialogs.ts","../../../app/frontend/features/_abstract/utils/dom.ts","../../../app/frontend/features/_abstract/utils/scroll.ts","../../../app/frontend/features/utils.ts"],"sourcesContent":["\n","\n\n\n","\n\n","import VLoaderDialog from \"@component-library/dialogs/VLoaderDialog.vue\"\nimport { reactive, type App, type Component } from \"vue\"\nimport { createVueApp } from \"~/features/vue\"\nimport { globalLocalize } from \"./localization\"\nimport type { Icon } from \"@icons/index\"\n\nconst V_LOADER_STATE: {\n // Init\n __app?: App\n\n // Private\n _state: {\n message: string | undefined\n icon: Icon\n loading: boolean\n opaque: boolean\n }\n\n get _app (): App\n\n // Public\n start (options?: { message?: string, icon?: Icon, opaque?: boolean }): void\n stop (): void\n\n set message(message: string)\n set icon(icon: Icon)\n set opaque(opaque: boolean)\n} = {\n _state: reactive({\n message: undefined,\n icon: 'Outline/avvoka',\n opaque: true,\n loading: false\n }),\n stop () {\n this._state.loading = false\n },\n start (options = {}) {\n this._state.message = options.message ?? globalLocalize('component-library.layouts.default_page_loader_message')\n this._state.icon = options.icon ?? 'Outline/avvoka'\n this._state.opaque = options.opaque ?? true\n this._state.loading = true\n\n // Trigger page loader\n this._app\n },\n set message (message: string) {\n this._state.message = message\n },\n set icon (icon: Icon) {\n this._state.icon = icon\n },\n set opaque (opaque: boolean) {\n this._state.opaque = opaque\n },\n get _app () {\n return this.__app ??= (() => {\n const containerElement = document.createElement('div')\n containerElement.id = 'v-loader-container'\n \n // TODO: Temporary workaround for weirdness in the app. Remove when not necessary\n containerElement.setAttribute('class', 'relative z-[1001]')\n \n document.body.appendChild(containerElement)\n \n const element = document.createElement('div')\n \n const instance = createVueApp(VLoaderDialog as Component)\n instance.provide('V:VLoaderDialog:State', V_LOADER_STATE._state)\n instance.mount(element)\n \n containerElement.appendChild(element)\n \n return instance\n })()\n }\n}\n\nexport function useLoader () {\n return V_LOADER_STATE\n}","\n\n\n","import { getUUID } from \"@component-utils/utils\"\nimport { type Directive } from \"vue\"\n\nfunction parse (string: string | null) {\n return string?.split(' ') ?? []\n}\n\nfunction strigify (array: string[]) {\n return array.join(' ')\n}\n\nconst TargetToComponent = {\n dialog: 'VDialog'\n} as const\n\nconst TypeToAttribute = {\n title: 'aria-labelledby',\n description: 'aria-describedby'\n} as const\n\nfunction getTarget (element: Element, target: keyof typeof TargetToComponent) {\n return element.closest(`[data-component-name=\"${TargetToComponent[target]}\"]`)\n}\n\nfunction getTargetAndAttribute (element: Element, targetWithType: `${keyof typeof TargetToComponent}:${keyof typeof TypeToAttribute}`) {\n const [target, type] = targetWithType.split(':', 2) as [keyof typeof TargetToComponent, keyof typeof TypeToAttribute]\n\n return [\n getTarget(element, target),\n TypeToAttribute[type]\n ] satisfies [\n Element | null,\n typeof TypeToAttribute[keyof typeof TypeToAttribute]\n ]\n}\n\n/**\n * Vue3 directive that appends element's ID to the closest specific ancestors aria field\n */\nexport const vA11y: Directive = {\n mounted (element, binding) {\n if (!binding.arg) return\n\n const [target, attribute] = getTargetAndAttribute(element, binding.arg)\n if (!target) return\n\n const list = parse(target.getAttribute(attribute))\n\n list.push(element.id ||= getUUID())\n\n target.setAttribute(attribute, strigify(list))\n },\n unmounted (element, binding) {\n if (!binding.arg) return\n\n const [target, attribute] = getTargetAndAttribute(element, binding.arg)\n if (!target || !element.id) return\n\n const list = parse(target.getAttribute(attribute))\n\n list.splice(list.indexOf(element.id), 1)\n\n target.setAttribute(attribute, strigify(list))\n }\n}","\n\n","\n\n\n","\n","import { Key } from \"@avvoka/shared\"\nimport { computed, onBeforeUnmount, onMounted, ref, watch, watchEffect, type ComputedRef, type Ref } from \"vue\"\n\ntype AnyRef = Ref | ComputedRef\n\nexport function nodeContains (node: Element, what: Element): boolean {\n if (node.contains(what)) return true\n\n const teleportWrappers = node.querySelectorAll('[data-teleported-content-id]')\n return Array.from(teleportWrappers).some((teleportWrapper) => {\n return nodeContains(\n // Bangs are required here\n document.getElementById(teleportWrapper.getAttribute('data-teleported-content-id')!)!,\n what\n )\n })\n}\n\nexport function nodeClosest (node: Element, selector: string): boolean {\n if (node.closest(selector)) return true\n\n const teleport = node.closest('[data-teleported-content]')\n if (!teleport) return false\n\n const teleportWrapper = node.ownerDocument.querySelector(`[data-teleported-content-id=\"${teleport.id}\"]`)\n if (!teleportWrapper) return false\n\n return nodeClosest(teleportWrapper, selector)\n}\n\n/**\n * Helper method that calls callback when a element outside of the specific list is clicked\n * \n * @param watchedRefs Array of Vue3 refs that contain references to html elements\n * @param callback Callback to be called when a click does not target any of the above html elements\n */\nexport function onClickOutsideOf(\n watchedRefs: AnyRef[],\n callback: () => void,\n options: {\n condition?: Ref,\n esc?: boolean\n } = {}\n) {\n const listener = (event: MouseEvent) => {\n const target = event.target as Element | null\n if (!target) return\n\n // If none of the refs contain the target, call callback\n if (!watchedRefs.some((watchedRef) => {\n const value = watchedRef.value\n if (typeof value === 'string') {\n // Value is a selector so we need to check if such selector exists in the tree above\n return nodeClosest(target, value)\n } else if (value) {\n // Value is a HTMLElement and target is contained within\n return nodeContains(value, target)\n } else {\n // Explicitly return false\n return false\n }\n })) {\n callback()\n }\n }\n\n const escListener = (event: KeyboardEvent) => {\n if (event.key as Key === Key.Escape) {\n callback()\n }\n }\n\n const addEventListeners = () => {\n window.addEventListener('click', listener, true)\n window.addEventListener('contextmenu', listener, true)\n\n if (options.esc) {\n window.addEventListener('keydown', escListener, true)\n }\n }\n\n const removeEventListeners = () => {\n window.removeEventListener('click', listener, true)\n window.removeEventListener('contextmenu', listener, true)\n\n if (options.esc) {\n window.removeEventListener('keydown', escListener, true)\n }\n }\n\n if (options.condition) {\n watchEffect(() => {\n if (options.condition!.value) {\n addEventListeners()\n } else {\n removeEventListeners()\n }\n })\n } else {\n onMounted(addEventListeners)\n }\n\n onBeforeUnmount(removeEventListeners)\n}\n\nexport function useFocus (focusImmediately = false) {\n const targetElement = ref()\n const targetElementFocus = () => targetElement.value?.focus()\n\n if (focusImmediately) {\n onMounted(targetElementFocus)\n }\n\n return {\n focusElement: targetElement,\n focus: targetElementFocus\n }\n}\n\nexport function useDeepFocus (focusImmediately = false) {\n const targetElement = ref()\n\n const activeElement = ref(document.activeElement)\n const activeElementUpdate = () => {\n activeElement.value = document.activeElement\n }\n\n // Listeners\n const blurListener = (event: FocusEvent) => {\n if (event.relatedTarget) return\n if (event.target && targetElement.value && targetElement.value.contains(event.target as Element)) return\n activeElementUpdate()\n }\n\n const focusListener = activeElementUpdate\n\n const clickListener = (event: MouseEvent) => {\n const target = event.target as Element | null\n if (!target) return\n\n const element = targetElement.value\n if (!element) return\n\n if (!element.contains(target)) focusLostCallback.value?.()\n }\n\n onMounted(() => {\n const element = targetElement.value\n if (!element) return\n\n element.addEventListener('blur', blurListener, true)\n element.addEventListener('focus', focusListener, true)\n\n window.addEventListener('click', clickListener, true)\n window.addEventListener('contextmenu', clickListener, true)\n })\n\n onBeforeUnmount(() => {\n const element = targetElement.value\n if (!element) return\n\n element.removeEventListener('blur', blurListener, true)\n element.removeEventListener('focus', focusListener, true)\n\n window.removeEventListener('click', clickListener, true)\n window.removeEventListener('contextmenu', clickListener, true)\n })\n\n const inFocus = computed(() => {\n return (targetElement.value && activeElement.value) ? targetElement.value.contains(activeElement.value) : false\n })\n\n const focusLostCallback = ref<() => void>()\n\n onMounted(() => {\n if (focusImmediately) {\n targetElement.value?.focus()\n }\n\n watch(inFocus, (value) => {\n if (value === false && focusLostCallback.value) focusLostCallback.value()\n })\n })\n\n return {\n focusElement: targetElement,\n focusLost: (onFocusLost: () => void) => {\n focusLostCallback.value = onFocusLost\n }\n }\n}","function removeNode(node) {\n if (node.parentElement !== null) {\n node.parentElement.removeChild(node);\n }\n}\n\nfunction insertNodeAt(fatherNode, node, position) {\n const refNode =\n position === 0\n ? fatherNode.children[0]\n : fatherNode.children[position - 1].nextSibling;\n fatherNode.insertBefore(node, refNode);\n}\n\nexport { insertNodeAt, removeNode };\n","function getConsole() {\n if (typeof window !== \"undefined\") {\n return window.console;\n }\n return global.console;\n}\nconst console = getConsole();\n\nexport { console };\n","function cached(fn) {\n const cache = Object.create(null);\n return function cachedFn(str) {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n\nconst regex = /-(\\w)/g;\nconst camelize = cached(str => str.replace(regex, (_, c) => c.toUpperCase()));\n\nexport { camelize };\n","const manageAndEmit = [\"Start\", \"Add\", \"Remove\", \"Update\", \"End\"];\nconst emit = [\"Choose\", \"Unchoose\", \"Sort\", \"Filter\", \"Clone\"];\nconst manage = [\"Move\"];\nconst eventHandlerNames = [manage, manageAndEmit, emit]\n .flatMap(events => events)\n .map(evt => `on${evt}`);\n\nconst events = {\n manage,\n manageAndEmit,\n emit\n};\n\nfunction isReadOnly(eventName) {\n return eventHandlerNames.indexOf(eventName) !== -1;\n}\n\nexport { events, isReadOnly };\n","const tags = [\n \"a\",\n \"abbr\",\n \"address\",\n \"area\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"base\",\n \"bdi\",\n \"bdo\",\n \"blockquote\",\n \"body\",\n \"br\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"embed\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"head\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"html\",\n \"i\",\n \"iframe\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"label\",\n \"legend\",\n \"li\",\n \"link\",\n \"main\",\n \"map\",\n \"mark\",\n \"math\",\n \"menu\",\n \"menuitem\",\n \"meta\",\n \"meter\",\n \"nav\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"param\",\n \"picture\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rb\",\n \"rp\",\n \"rt\",\n \"rtc\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"slot\",\n \"small\",\n \"source\",\n \"span\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"svg\",\n \"table\",\n \"tbody\",\n \"td\",\n \"template\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"track\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n \"wbr\"\n];\n\nfunction isHtmlTag(name) {\n return tags.includes(name);\n}\n\nfunction isTransition(name) {\n return [\"transition-group\", \"TransitionGroup\"].includes(name);\n}\n\nfunction isHtmlAttribute(value) {\n return (\n [\"id\", \"class\", \"role\", \"style\"].includes(value) ||\n value.startsWith(\"data-\") ||\n value.startsWith(\"aria-\") ||\n value.startsWith(\"on\")\n );\n}\n\nexport { isHtmlTag, isHtmlAttribute, isTransition };\n","import { camelize } from \"../util/string\";\nimport { events, isReadOnly } from \"./sortableEvents\";\nimport { isHtmlAttribute } from \"../util/tags\";\n\nfunction project(entries) {\n return entries.reduce((res, [key, value]) => {\n res[key] = value;\n return res;\n }, {});\n}\n\nfunction getComponentAttributes({ $attrs, componentData = {} }) {\n const attributes = project(\n Object.entries($attrs).filter(([key, _]) => isHtmlAttribute(key))\n );\n return {\n ...attributes,\n ...componentData\n };\n}\n\nfunction createSortableOption({ $attrs, callBackBuilder }) {\n const options = project(getValidSortableEntries($attrs));\n Object.entries(callBackBuilder).forEach(([eventType, eventBuilder]) => {\n events[eventType].forEach(event => {\n options[`on${event}`] = eventBuilder(event);\n });\n });\n const draggable = `[data-draggable]${options.draggable || \"\"}`;\n return {\n ...options,\n draggable\n };\n}\n\nfunction getValidSortableEntries(value) {\n return Object.entries(value)\n .filter(([key, _]) => !isHtmlAttribute(key))\n .map(([key, value]) => [camelize(key), value])\n .filter(([key, _]) => !isReadOnly(key));\n}\n\nexport {\n getComponentAttributes,\n createSortableOption,\n getValidSortableEntries\n};\n","const getHtmlElementFromNode = node => {\n const el =\n node.el || (Array.isArray(node.children) && node.children[0].el.parentNode);\n if (!el) {\n console.error(\n \"With transition-group, you need at least 2 layers of html tags inside the template in the slot\"\n );\n }\n return el || {};\n};\n\nconst addContext = (domElement, context) =>\n (domElement.__draggable_context = context);\nconst getContext = domElement => domElement.__draggable_context;\n\nclass ComponentStructure {\n constructor({\n nodes: { header, default: defaultNodes, footer },\n root,\n realList\n }) {\n this.defaultNodes = defaultNodes;\n this.children = [...header, ...defaultNodes, ...footer];\n this.externalComponent = root.externalComponent;\n this.rootTransition = root.transition;\n this.tag = root.tag;\n this.realList = realList;\n }\n\n get _isRootComponent() {\n return this.externalComponent || this.rootTransition;\n }\n\n render(h, attributes) {\n const { tag, children, _isRootComponent } = this;\n const option = !_isRootComponent ? children : { default: () => children };\n return h(tag, attributes, option);\n }\n\n updated() {\n const { defaultNodes, realList } = this;\n defaultNodes.forEach((node, index) => {\n addContext(getHtmlElementFromNode(node), {\n element: realList[index],\n index\n });\n });\n }\n\n getUnderlyingVm(domElement) {\n return getContext(domElement);\n }\n\n getVmIndexFromDomIndex(domIndex, element) {\n const { defaultNodes } = this;\n const { length } = defaultNodes;\n const domChildren = element.children;\n const domElement = domChildren.item(domIndex);\n\n if (domElement === null) {\n return length;\n }\n const context = getContext(domElement);\n if (context) {\n return context.index;\n }\n\n if (length === 0) {\n return 0;\n }\n const firstDomListElement = getHtmlElementFromNode(defaultNodes[0]);\n const indexFirstDomListElement = [...domChildren].findIndex(\n element => element === firstDomListElement\n );\n return domIndex < indexFirstDomListElement ? 0 : length;\n }\n}\n\nexport { ComponentStructure };\n","import { ComponentStructure } from \"./componentStructure\";\nimport { isHtmlTag, isTransition } from \"../util/tags\";\nimport { resolveComponent, TransitionGroup } from \"vue\";\n\nfunction getSlot(slots, key) {\n const slotValue = slots[key];\n return slotValue ? slotValue() : [];\n}\n\nfunction computeNodes({ $slots, realList, getKey }) {\n const normalizedList = realList || [];\n const [header, footer] = [\"header\", \"footer\"].map(name =>\n getSlot($slots, name)\n );\n const { item } = $slots;\n if (!item) {\n throw new Error(\"draggable element must have an item slot\");\n }\n const defaultNodes = normalizedList.flatMap((element, index) =>\n item({ element, index }).map(node => {\n node.key = getKey(element);\n node.props = { ...(node.props || {}), \"data-draggable\": true };\n return node;\n })\n );\n if (defaultNodes.length !== normalizedList.length) {\n throw new Error(\"Item slot must have only one child\");\n }\n return {\n header,\n footer,\n default: defaultNodes\n };\n}\n\nfunction getRootInformation(tag) {\n const transition = isTransition(tag);\n const externalComponent = !isHtmlTag(tag) && !transition;\n return {\n transition,\n externalComponent,\n tag: externalComponent\n ? resolveComponent(tag)\n : transition\n ? TransitionGroup\n : tag\n };\n}\n\nfunction computeComponentStructure({ $slots, tag, realList, getKey }) {\n const nodes = computeNodes({ $slots, realList, getKey });\n const root = getRootInformation(tag);\n return new ComponentStructure({ nodes, root, realList });\n}\n\nexport { computeComponentStructure };\n","import Sortable from \"sortablejs\";\nimport { insertNodeAt, removeNode } from \"./util/htmlHelper\";\nimport { console } from \"./util/console\";\nimport {\n getComponentAttributes,\n createSortableOption,\n getValidSortableEntries\n} from \"./core/componentBuilderHelper\";\nimport { computeComponentStructure } from \"./core/renderHelper\";\nimport { events } from \"./core/sortableEvents\";\nimport { h, defineComponent, nextTick } from \"vue\";\n\nfunction emit(evtName, evtData) {\n nextTick(() => this.$emit(evtName.toLowerCase(), evtData));\n}\n\nfunction manage(evtName) {\n return (evtData, originalElement) => {\n if (this.realList !== null) {\n return this[`onDrag${evtName}`](evtData, originalElement);\n }\n };\n}\n\nfunction manageAndEmit(evtName) {\n const delegateCallBack = manage.call(this, evtName);\n return (evtData, originalElement) => {\n delegateCallBack.call(this, evtData, originalElement);\n emit.call(this, evtName, evtData);\n };\n}\n\nlet draggingElement = null;\n\nconst props = {\n list: {\n type: Array,\n required: false,\n default: null\n },\n modelValue: {\n type: Array,\n required: false,\n default: null\n },\n itemKey: {\n type: [String, Function],\n required: true\n },\n clone: {\n type: Function,\n default: original => {\n return original;\n }\n },\n tag: {\n type: String,\n default: \"div\"\n },\n move: {\n type: Function,\n default: null\n },\n componentData: {\n type: Object,\n required: false,\n default: null\n }\n};\n\nconst emits = [\n \"update:modelValue\",\n \"change\",\n ...[...events.manageAndEmit, ...events.emit].map(evt => evt.toLowerCase())\n];\n\nconst draggableComponent = defineComponent({\n name: \"draggable\",\n\n inheritAttrs: false,\n\n props,\n\n emits,\n\n data() {\n return {\n error: false\n };\n },\n\n render() {\n try {\n this.error = false;\n const { $slots, $attrs, tag, componentData, realList, getKey } = this;\n const componentStructure = computeComponentStructure({\n $slots,\n tag,\n realList,\n getKey\n });\n this.componentStructure = componentStructure;\n const attributes = getComponentAttributes({ $attrs, componentData });\n return componentStructure.render(h, attributes);\n } catch (err) {\n this.error = true;\n return h(\"pre\", { style: { color: \"red\" } }, err.stack);\n }\n },\n\n created() {\n if (this.list !== null && this.modelValue !== null) {\n console.error(\n \"modelValue and list props are mutually exclusive! Please set one or another.\"\n );\n }\n },\n\n mounted() {\n if (this.error) {\n return;\n }\n\n const { $attrs, $el, componentStructure } = this;\n componentStructure.updated();\n\n const sortableOptions = createSortableOption({\n $attrs,\n callBackBuilder: {\n manageAndEmit: event => manageAndEmit.call(this, event),\n emit: event => emit.bind(this, event),\n manage: event => manage.call(this, event)\n }\n });\n const targetDomElement = $el.nodeType === 1 ? $el : $el.parentElement;\n this._sortable = new Sortable(targetDomElement, sortableOptions);\n this.targetDomElement = targetDomElement;\n targetDomElement.__draggable_component__ = this;\n },\n\n updated() {\n this.componentStructure.updated();\n },\n\n beforeUnmount() {\n if (this._sortable !== undefined) this._sortable.destroy();\n },\n\n computed: {\n realList() {\n const { list } = this;\n return list ? list : this.modelValue;\n },\n\n getKey() {\n const { itemKey } = this;\n if (typeof itemKey === \"function\") {\n return itemKey;\n }\n return element => element[itemKey];\n }\n },\n\n watch: {\n $attrs: {\n handler(newOptionValue) {\n const { _sortable } = this;\n if (!_sortable) return;\n getValidSortableEntries(newOptionValue).forEach(([key, value]) => {\n _sortable.option(key, value);\n });\n },\n deep: true\n }\n },\n\n methods: {\n getUnderlyingVm(domElement) {\n return this.componentStructure.getUnderlyingVm(domElement) || null;\n },\n\n getUnderlyingPotencialDraggableComponent(htmElement) {\n //TODO check case where you need to see component children\n return htmElement.__draggable_component__;\n },\n\n emitChanges(evt) {\n nextTick(() => this.$emit(\"change\", evt));\n },\n\n alterList(onList) {\n if (this.list) {\n onList(this.list);\n return;\n }\n const newList = [...this.modelValue];\n onList(newList);\n this.$emit(\"update:modelValue\", newList);\n },\n\n spliceList() {\n // @ts-ignore\n const spliceList = list => list.splice(...arguments);\n this.alterList(spliceList);\n },\n\n updatePosition(oldIndex, newIndex) {\n const updatePosition = list =>\n list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);\n this.alterList(updatePosition);\n },\n\n getRelatedContextFromMoveEvent({ to, related }) {\n const component = this.getUnderlyingPotencialDraggableComponent(to);\n if (!component) {\n return { component };\n }\n const list = component.realList;\n const context = { list, component };\n if (to !== related && list) {\n const destination = component.getUnderlyingVm(related) || {};\n return { ...destination, ...context };\n }\n return context;\n },\n\n getVmIndexFromDomIndex(domIndex) {\n return this.componentStructure.getVmIndexFromDomIndex(\n domIndex,\n this.targetDomElement\n );\n },\n\n onDragStart(evt) {\n this.context = this.getUnderlyingVm(evt.item);\n evt.item._underlying_vm_ = this.clone(this.context.element);\n draggingElement = evt.item;\n },\n\n onDragAdd(evt) {\n const element = evt.item._underlying_vm_;\n if (element === undefined) {\n return;\n }\n removeNode(evt.item);\n const newIndex = this.getVmIndexFromDomIndex(evt.newIndex);\n // @ts-ignore\n this.spliceList(newIndex, 0, element);\n const added = { element, newIndex };\n this.emitChanges({ added });\n },\n\n onDragRemove(evt) {\n insertNodeAt(this.$el, evt.item, evt.oldIndex);\n if (evt.pullMode === \"clone\") {\n removeNode(evt.clone);\n return;\n }\n const { index: oldIndex, element } = this.context;\n // @ts-ignore\n this.spliceList(oldIndex, 1);\n const removed = { element, oldIndex };\n this.emitChanges({ removed });\n },\n\n onDragUpdate(evt) {\n removeNode(evt.item);\n insertNodeAt(evt.from, evt.item, evt.oldIndex);\n const oldIndex = this.context.index;\n const newIndex = this.getVmIndexFromDomIndex(evt.newIndex);\n this.updatePosition(oldIndex, newIndex);\n const moved = { element: this.context.element, oldIndex, newIndex };\n this.emitChanges({ moved });\n },\n\n computeFutureIndex(relatedContext, evt) {\n if (!relatedContext.element) {\n return 0;\n }\n const domChildren = [...evt.to.children].filter(\n el => el.style[\"display\"] !== \"none\"\n );\n const currentDomIndex = domChildren.indexOf(evt.related);\n const currentIndex = relatedContext.component.getVmIndexFromDomIndex(\n currentDomIndex\n );\n const draggedInList = domChildren.indexOf(draggingElement) !== -1;\n return draggedInList || !evt.willInsertAfter\n ? currentIndex\n : currentIndex + 1;\n },\n\n onDragMove(evt, originalEvent) {\n const { move, realList } = this;\n if (!move || !realList) {\n return true;\n }\n\n const relatedContext = this.getRelatedContextFromMoveEvent(evt);\n const futureIndex = this.computeFutureIndex(relatedContext, evt);\n const draggedContext = {\n ...this.context,\n futureIndex\n };\n const sendEvent = {\n ...evt,\n relatedContext,\n draggedContext\n };\n return move(sendEvent, originalEvent);\n },\n\n onDragEnd() {\n draggingElement = null;\n }\n }\n});\n\nexport default draggableComponent;\n","\n","import { ref, watch, type Ref } from \"vue\"\n\nexport function useBuffering (modelValue: Ref, props: { buffered?: boolean }) {\n if (props.buffered) {\n const modelValueInternal = ref(modelValue.value)\n\n watch(modelValue, (value) => modelValueInternal.value = value)\n\n return {\n modelValueInternal,\n updateModelValue: () => {\n modelValue.value = modelValueInternal.value\n }\n }\n } else {\n return {\n modelValueInternal: modelValue,\n updateModelValue: () => {}\n }\n }\n}","import { getObjectEntries, Key } from \"@avvoka/shared\"\n\nexport const enum ValidationErrorSeverity {\n Warning = 'warning',\n Error = 'error'\n}\n\ntype ValidationError = [ValidationErrorSeverity, string]\n\nexport type ValidationResult = ValidationError | undefined | null\n\ntype ValidationFn = (value: TValue) => ValidationResult\n\ntype OneOrArray = T | T[]\n\nconst GENERIC_VALIDATORS = {\n 'generic/not-empty': (v: unknown) => v && (!Array.isArray(v) || v.length > 0) ? null : 'This field cannot be empty'\n} as const\n\ntype Validation = ValidationFn | `${keyof typeof GENERIC_VALIDATORS}@${ValidationErrorSeverity}`\n\nexport type Validator = {\n isValid: (object: TValidatedObject) => boolean,\n isInvalid: (object: TValidatedObject) => boolean\n} & ComposedValidations\n\ntype MemberValidationsNested = {\n [TKey in TValidatedKeys]?: (\n TValidatedObject[TKey] extends Array ? (\n OneOrArray | Validation>\n ) : (\n TValidatedObject[TKey] extends object ? (\n OneOrArray | Validation>\n ) : (\n OneOrArray>\n )\n )\n )\n}\n\ntype MemberValidations = OneOrArray | MemberValidationsNested>\n\ntype ComposedValidations = {\n [TKey in TValidatedKeys]: (\n TValidatedObject[TKey] extends Array ? (\n ComposedValidations | ValidationFn\n ) : (\n TValidatedObject[TKey] extends object ? (\n ComposedValidations | ValidationFn\n ) : (\n ValidationFn\n )\n )\n )\n} & {\n __self: ValidationFn\n}\n\ntype ValidationPath = (string | number | symbol)[]\ntype Entries = { [K in keyof T]: [K, T[K]] }[keyof T][]\n\nexport const createValidator = function () {\n return function (memberValidations: MemberValidations) {\n function composeValidations (memberValidationsRaw: MemberValidations, type: TValidatedObjectType): ComposedValidations\n function composeValidations (memberValidationsRaw: MemberValidations, type: TValidatedObjectType): ValidationFn | ComposedValidations\n function composeValidations (memberValidationsRaw: MemberValidations, type: TValidatedObjectType) {\n const memberValidations = (Array.isArray(memberValidationsRaw) ? memberValidationsRaw : [memberValidationsRaw]) as (MemberValidations | Validation)[]\n\n const memberValidationDirect = memberValidations.filter((validation) => typeof validation !== 'object') as Validation[]\n const memberValidationNested = memberValidations.filter((validation) => typeof validation === 'object') as MemberValidationsNested[]\n\n const memberValidationMethod = (value: T) => memberValidationDirect.reduce((memo: ValidationResult, validation: Validation) => {\n if (memo) return memo\n else if (typeof validation === 'function') return validation(value)\n else {\n const [genericKey, genericSeverity] = validation.split('@', 2) as [keyof typeof GENERIC_VALIDATORS, ValidationErrorSeverity]\n const result = GENERIC_VALIDATORS[genericKey](value) as string | undefined | null\n if (result) {\n return [genericSeverity, result] satisfies ValidationResult\n }\n }\n }, undefined)\n\n if (type === 'root' || memberValidationNested.length > 0) {\n const object = {\n __self: memberValidationMethod\n } as ComposedValidations\n\n for (const validation of memberValidationNested) {\n const entries = getObjectEntries(validation) as [TKeys, MemberValidations][]\n const entriesMapped = entries.map(([property, validation]) => [property, composeValidations(validation, 'property')])\n\n Object.assign(\n object,\n Object.fromEntries(\n entriesMapped\n )\n )\n }\n\n return object\n } else {\n return memberValidationMethod\n }\n }\n \n const composedValidations = composeValidations(memberValidations, 'root')\n\n const validate = (object: T, validations: ComposedValidations, path: ValidationPath = []) => {\n const results: [ValidationPath, ...ValidationError][] = []\n\n for (const [member, memberValidation] of getObjectEntries(validations) as Entries) {\n if (member === '__self') {\n const result = memberValidation(object) as ValidationResult\n if (result) {\n results.push([path, ...result])\n }\n } else {\n const value = object[member]\n \n if (typeof memberValidation === 'function') {\n const result = memberValidation(value) as ValidationResult\n if (result) {\n results.push([[...path, member], ...result])\n }\n } else if (value && typeof value === 'object') {\n if ('__self' in memberValidation) {\n const result = memberValidation['__self'](value)\n if (result) {\n results.push([[...path, member], ...result])\n }\n }\n\n const isArray = Array.isArray(value)\n \n if (isArray) {\n for (let i = 0; i < value.length; i++) {\n results.push(...validate(value[i], memberValidation, [...path, member, i]))\n }\n } else {\n results.push(...validate(value, memberValidation, [...path, member]))\n }\n }\n }\n }\n \n return results\n }\n \n return {\n // Mask composed validations\n validate: (object: TValidatedObject) => validate(object, composedValidations),\n // Shortcut methods\n isValid: (object: TValidatedObject) => validate(object, composedValidations).length === 0,\n isInvalid: (object: TValidatedObject) => validate(object, composedValidations).length > 0,\n // Member validations\n ...composedValidations\n } as const\n }\n}\n\nconst NUMBER_LIKE_CHARACTERS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '.'\n]\n\nconst CONTROL_LIKE_CHARACTERS = [\n Key.Backspace, Key.Delete, Key.ArrowUp, Key.ArrowDown, Key.ArrowLeft, Key.Tab,\n Key.ArrowRight, Key.Enter, Key.NumpadEnter, Key.ShiftLeft, Key.ShiftRight, Key.Escape,\n Key.F1, Key.F2, Key.F3, Key.F4, Key.F5, Key.F6, Key.F7, Key.F8, Key.F9, Key.F10, Key.F11, Key.F12\n]\n\nexport function isNullOrUndefined(value: T | undefined | null): value is undefined | null {\n return typeof value === 'undefined' || value === null\n}\n\nexport function isNumberLikeCharacter(key: string | Key) {\n return NUMBER_LIKE_CHARACTERS.includes(key)\n}\n\nexport function isControlCharacter(key: string | Key) {\n return CONTROL_LIKE_CHARACTERS.includes(key as Key)\n}\n","import { isControlCharacter } from \"@component-utils/validations\"\nimport type { Ref } from \"vue\"\nimport { stopAndPrevent } from \"~/features/_abstract/utils/event\"\n\nexport function handleEvents (props: { readonly?: boolean, disabled?: boolean, whitelist?: string[] }, validationVisible: Ref) {\n const handlePaste = (event: ClipboardEvent) => {\n if (props.readonly || props.disabled) return\n if (!props.whitelist) return\n \n const pastedText = event.clipboardData?.getData('text/plain')\n if (pastedText) {\n if (pastedText.split('').every((character) => props.whitelist?.includes(character))) {\n return\n }\n \n stopAndPrevent(event)\n }\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n validationVisible.value = true\n \n if (props.whitelist) {\n const key = event.key\n if (event.ctrlKey || event.altKey || event.metaKey || isControlCharacter(key) || props.whitelist.includes(key)) {\n return\n }\n \n stopAndPrevent(event)\n }\n } \n\n return {\n handlePaste,\n handleKeyDown\n }\n}\n\n","import { ValidationErrorSeverity, type ValidationResult } from \"@component-utils/validations\";\nimport { computed, ref, watchEffect, type Ref } from \"vue\";\nimport type { ValidationProps } from \"./types\";\nimport { globalLocalize, useLocalize } from \"@component-utils/localization\";\nimport Utils from \"~/features/utils\";\nimport { useErrorToast } from \"@component-utils/toasts\";\nimport PasswordsApi from \"~/api/Users/PasswordsApi\";\nimport useDebounce from \"~/features/_abstract/utils/debounce\";\nimport { resolveAccept, toContentTypes, type Accept } from \"@component-utils/files\";\n\ntype CreateDefaultValidatorResult = (value: T | null | undefined) => ValidationResult\n\nexport function composeValidations(props: ValidationProps, defaultValidator?: CreateDefaultValidatorResult) {\n if (!defaultValidator || !props.validator) return props.validator ?? defaultValidator\n\n if (props.validatorMode === 'force') {\n // Force only user validation\n return props.validator\n } else {\n // Merge validations together\n return (value: T | null | undefined) => props.validator!(value) ?? defaultValidator(value)\n }\n}\n\nexport function useValidation(\n validatorSubject: Ref,\n props: ValidationProps,\n defaultValidator?: CreateDefaultValidatorResult\n) {\n const validator = composeValidations(props, defaultValidator)\n\n const validationVisible = ref(props.validationTrigger === 'immediate')\n\n const validationResult = computed(() => validator && validator(validatorSubject.value) || null)\n const isValid = computed(() => !validationResult.value)\n\n const validationResultForDisplay = computed(() => validationVisible.value && validationResult.value || null)\n const isValidationError = computed(() => validationResultForDisplay.value?.[0] === ValidationErrorSeverity.Error)\n const isValidationWarning = computed(() => validationResultForDisplay.value?.[0] === ValidationErrorSeverity.Warning)\n\n return {\n // For display\n validationVisible,\n validationResult: validationResultForDisplay,\n isValidationError,\n isValidationWarning,\n // For expose, regardless of visibility\n isValid\n }\n}\n\nexport function useComponentValidation(...refs: Ref<{ isValid: boolean }[] | { isValid: boolean } | null>[]) {\n return computed(() => refs.every((ref) => {\n const value = ref.value\n if (value) {\n if (Array.isArray(value)) {\n return value.every((item) => item.isValid)\n } else {\n return value.isValid\n }\n } else {\n return true\n }\n }))\n}\n\nexport function isValidationError(validationResult: Ref) {\n return validationResult.value?.[0] === ValidationErrorSeverity.Error\n}\n\nexport function isValidationWarning(validationResult: Ref) {\n return validationResult.value?.[0] === ValidationErrorSeverity.Warning\n}\n\nexport function usePasswordRequirementsValidation(modelValue: Ref) {\n const localize = useLocalize('component-library.validations.password.requirements')\n\n type ValidationDefinition = { type: string } & ({\n instant: true, method: (password: string) => boolean\n } | {\n instant: false, method: (password: string) => Promise\n })\n\n const validationMethods: ValidationDefinition[] = [\n {\n type: 'min_length',\n instant: true,\n method: (password) => password.length >= 10\n },\n {\n type: 'lowercase',\n instant: true,\n method: (password) => /[a-z]/.test(password)\n },\n {\n type: 'uppercase',\n instant: true,\n method: (password) => /[A-Z]/.test(password)\n },\n {\n type: 'number',\n instant: true,\n method: (password) => /[0-9]/.test(password)\n },\n {\n type: 'special_char',\n instant: true,\n method: (password) => /[!@#$%^&*(),.?\":{}|<>_]/.test(password)\n },\n {\n type: 'not_blacklisted',\n instant: false,\n method: async (password) => {\n if (!password) {\n return false\n }\n\n try {\n const { valid } = await PasswordsApi.validatePassword<{ valid: boolean }>({ data: { password } })\n\n return valid\n } catch (e) {\n useErrorToast(e)\n\n return false\n }\n }\n }\n ]\n\n const debouncedValidationMethods = validationMethods.map((entry, index) => ({\n ...entry,\n setDebounced: entry.instant ? undefined : useDebounce(async () => {\n state.value[index].isValid = await entry.method((modelValue.value || '').trim())\n }, 200)\n }))\n\n const state = ref(validationMethods.map(({ type }) => ({\n isValid: false,\n text: localize(type)\n })))\n\n watchEffect(() => {\n const password = (modelValue.value || '').trim()\n const passwordState = state.value\n\n for (let i = 0; i < debouncedValidationMethods.length; i++) {\n const { method, setDebounced, instant } = debouncedValidationMethods[i]\n\n if (instant) {\n passwordState[i].isValid = method(password)\n } else {\n // Clear isValid so entry doesnt show as valid while we are waiting for request to finish\n passwordState[i].isValid = false\n\n void setDebounced!()\n }\n }\n })\n\n return {\n requirements: state,\n requirementsValid: computed(() => state.value.every((requirement) => requirement.isValid))\n }\n}\n\nexport function validatePasswordRequirements(rawPassword: string | null | undefined) {\n const password = (rawPassword || '').trim()\n const localize = useLocalize('component-library.validations.password.requirements')\n\n return [\n {\n text: localize('min_length'),\n isValid: password.length >= 10\n },\n {\n text: localize('lowercase'),\n isValid: /[a-z]/.test(password)\n },\n {\n text: localize('uppercase'),\n isValid: /[A-Z]/.test(password)\n },\n {\n text: localize('number'),\n isValid: /[0-9]/.test(password)\n },\n {\n text: localize('special_char'),\n isValid: /[!@#$%^&*(),.?\":{}|<>_]/.test(password)\n }\n ]\n}\n\nexport function createDefaultFileValidator(props: { required?: boolean, accept: Accept }): CreateDefaultValidatorResult> {\n return (value: Array | undefined | null) => {\n if (!Array.isArray(value) || value.length === 0) {\n if (props.required) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.generic.empty')]\n }\n\n return null\n }\n\n const validContentTypes = toContentTypes(resolveAccept(props.accept))\n\n for (const file of (value)) {\n // For now ignore already attached file\n if ('path' in file) continue\n\n if (file.size >= 256e6) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.file.size')]\n }\n\n if (validContentTypes.length > 0 && !validContentTypes.includes(file.type as unknown as typeof validContentTypes[number]) && !validContentTypes.includes(file.name.slice(file.name.lastIndexOf('.')) as unknown as typeof validContentTypes[number])) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.file.type')]\n }\n }\n\n return null\n }\n}\n\nexport function createDefaultEmailValidator(props: { required?: boolean }): CreateDefaultValidatorResult {\n return (value: string | undefined | null) => {\n if (!value || !value.trim()) {\n if (props.required) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.email.empty')]\n }\n\n return null\n }\n\n if (!Utils.isEmailValid(value)) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.email.format')]\n }\n\n return null\n }\n}\n\nexport function createDefaultPasswordValidator(props: { required?: boolean, showRequirements?: boolean }): CreateDefaultValidatorResult {\n return (value: string | undefined | null) => {\n if (!value || !value.trim()) {\n if (props.required) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.password.empty')]\n }\n\n return null\n }\n\n if (!props.showRequirements && value.trim().length < 10) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.password.format')]\n }\n\n return null\n }\n}\n\nexport function createDefaultMultiSelectValidator(props: { required?: boolean }): CreateDefaultValidatorResult {\n return (value: T[] | undefined | null) => {\n if (!value || value.length === 0) {\n if (props.required) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.generic.empty')]\n }\n\n return null\n }\n\n return null\n }\n}\n\nexport function createDefaultOTPValidator(props: { required?: boolean }): CreateDefaultValidatorResult {\n return (value: string | undefined | null) => {\n if (!value || !value.trim()) {\n if (props.required) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.generic.empty')]\n }\n\n return null\n }\n\n if (value.length < 6) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.otp.format')]\n }\n\n return null\n }\n}\n\nexport function createDefaultNumberValidator(props: { required?: boolean, min?: number, max?: number }): CreateDefaultValidatorResult {\n return (value: number | undefined | null) => {\n if (!value) {\n if (props.required) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.generic.empty')]\n }\n\n return null\n }\n\n if (typeof props.min === 'number' && value < props.min) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.number.min', { min: props.min })]\n } else if (typeof props.max === 'number' && value > props.max) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.number.max', { max: props.max })]\n }\n\n return null\n }\n}\n\nexport function createDefaultValidator(props: { required?: boolean }): CreateDefaultValidatorResult {\n return (value: T | undefined | null) => {\n if (!value || (typeof value === 'string' && !value.trim())) {\n if (props.required) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.generic.empty')]\n }\n\n return null\n }\n\n return null\n }\n}\n\nexport function createDefaultURLValidator (props: { required?: boolean, domainOnly?: boolean }): CreateDefaultValidatorResult{\n return (value: string | undefined | null) => {\n if (!value || !value.trim()) {\n if (props.required) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.generic.empty')]\n }\n\n return null\n }\n\n try{\n if(props.domainOnly){\n if(value.startsWith(\"http://\") || value.startsWith(\"https://\")) return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.url.domain_protocol')]\n value = `https://${value}`\n }\n \n if(value.includes(\" \")){\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.url.spaces')]\n }\n\n if (!value.startsWith('http://') && !value.startsWith('https://')) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.url.protocol')]\n }\n \n if (value.length > 2048) {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.url.too_long')]\n }\n\n const urlObject = new URL(value)\n const urlParts = urlObject.hostname.split(\".\")\n\n /** URL needs both domain nad TLD */\n if(urlParts.length < 2){\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.url.domain_and_tld')]\n }\n\n /** domain name length validation */\n if(!urlParts[0].length){\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.url.domain')]\n }\n\n /** TLD must have at least 2 characters */\n if(urlParts[1].length < 2){\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.url.invalid_tld')]\n }\n\n }catch {\n return [ValidationErrorSeverity.Error, globalLocalize('component-library.validations.url.invalid')]\n }\n\n\n return null\n }\n}","\n","import { computed, useAttrs } from \"vue\";\n\nexport function useFallthroughProps (props: T) {\n return computed(() => ({\n ...props,\n ...Object.fromEntries(Object.entries(useAttrs()).filter(([name,]) => name.match(/^on[A-Z]/) || name === 'class' || name === 'style'))\n }))\n}","\n\n","\n \n\n","\n\n","import type { App, Component, Reactive } from \"vue\"\nimport { createVueApp } from \"~/features/vue\"\nimport type { ComponentEmits, ComponentProps, V } from \"./types\"\nimport VSimpleDialog from \"@component-library/dialogs/VSimpleDialog.vue\"\nimport VContextMenu from \"@component-library/dialogs/VContextMenu.vue\"\nimport { stopAndPrevent } from \"~/features/_abstract/utils/event\"\n\ntype OnCloseEmitParameters = Parameters['onClose']>>\n\nconst V_DIALOG_STATE: {\n __container?: HTMLElement\n\n // Chaining\n promise: Promise\n\n // HTML container element\n get container(): HTMLElement\n} = {\n promise: Promise.resolve(),\n\n get container() {\n return this.__container ??= (() => {\n let element = document.getElementById('v-dialog-container')\n if (element) return element\n \n element = document.createElement('div')\n element.id = 'v-dialog-container'\n \n // TODO: Temporary workaround for weirdness in the app. Remove when not necessary\n element.setAttribute('class', 'relative z-[1000]')\n \n document.body.appendChild(element)\n \n return element\n })()\n }\n}\n\ntype DialogInstance = {\n _closed?: boolean\n _app?: App\n _element?: Element\n _resolve?: () => void\n\n setup: () => Promise\n close: (resolve?: boolean) => void\n}\n\nfunction createDialogInstance, CloseCallback extends (...params: OnCloseEmitParameters) => void>(\n component: C,\n props: CProps,\n options: {\n callback?: CloseCallback\n immediate?: boolean\n injects?: Record\n }\n): DialogInstance {\n const state: DialogInstance = {\n _closed: false,\n setup () {\n return new Promise((resolve) => {\n if (state._closed) return resolve()\n\n state._resolve = resolve\n state._element = document.createElement('div')\n state._app = createVueApp(component, Object.assign(props, {\n onClose: (...params: Parameters) => {\n state.close(false)\n\n options.callback?.(...params)\n\n resolve()\n }\n }))\n \n if (options.injects) {\n Object.entries(options.injects).forEach(([key, value]) => {\n state._app!.provide(key, value)\n })\n }\n \n state._app.mount(state._element)\n \n V_DIALOG_STATE.container.appendChild(state._element)\n })\n },\n close (resolve = true) {\n this._app?.unmount()\n this._element?.remove()\n\n this._closed = true\n\n if (resolve) {\n this._resolve?.()\n }\n }\n }\n\n return state\n}\n\n/**\n * Function that queues and displays dialogs on the page\n *\n * @template C - The type of the Vue component\n * @template CProps - The type of the props for the Vue component\n * @template CloseCallback - The type of the callback function for the dialog close event\n *\n * @param {C} component - A Vue 3 component that uses VDialog component and implements the 'close' emit\n * @param {CProps} [props=Object.create(null)] - Props that will be forwarded to the dialog component when mounted\n * @param {Object} [options={}] - Options object that modify the behavior or the consequences of the dialog\n * @param {CloseCallback} [options.callback] - A callback function that will be called when the dialog closes\n * @param {boolean} [options.immediate=false] - If true, the dialog is displayed immediately\n */\nexport function useDialog, CloseCallback extends (...params: OnCloseEmitParameters) => void>(\n component: C,\n props: CProps,\n options: {\n callback?: CloseCallback\n immediate?: boolean\n injects?: Record\n } = {}\n) {\n const state = createDialogInstance(component, props, options)\n\n if (options.immediate) {\n void state.setup()\n } else {\n V_DIALOG_STATE.promise = V_DIALOG_STATE.promise.then(() => state.setup())\n }\n\n return state as { close: () => void }\n}\n\nexport function useSimpleDialog<\n CProps extends ComponentProps,\n CloseCallback extends (...params: OnCloseEmitParameters) => void\n>(\n props: CProps,\n options: {\n callback?: CloseCallback\n onAccept?: () => void\n onReject?: () => void\n immediate?: boolean\n injects?: Record\n } = {}\n) {\n return useDialog(\n VSimpleDialog,\n props,\n {\n ...options,\n callback: (decision) => {\n options.callback?.(decision)\n\n if (decision) {\n options.onAccept?.()\n } else {\n options.onReject?.()\n }\n }\n }\n )\n}\n\nexport function useContextMenu (event: MouseEvent, items: Reactive[]>, context: T) {\n return new Promise((resolve) => {\n const element = document.createElement('div')\n\n const instance = createVueApp(VContextMenu as Component, {\n items,\n context,\n position: {\n left: event.x,\n top: event.y\n },\n onClose: () => {\n instance.unmount()\n element.remove()\n\n resolve()\n }\n })\n \n instance.mount(element)\n \n V_DIALOG_STATE.container.appendChild(element)\n })\n}\n\ntype UseFilePickerProps = {\n accept: string | string[]\n callback: (...files: File[]) => void\n // Optionals\n multiple?: boolean\n}\n\nexport function useFilePicker (props: UseFilePickerProps) {\n const input = document.createElement('input')\n input.type = 'file'\n input.multiple = props.multiple || false\n input.accept = typeof props.accept === 'string' ? props.accept : props.accept.join(',')\n input.setAttribute('class', 'hidden')\n\n document.body.appendChild(input)\n\n input.addEventListener('change', (event) => {\n stopAndPrevent(event)\n \n const target = event.target as HTMLInputElement\n const files = Array.from(target.files as FileList)\n \n props.callback(...files)\n }, { once: true })\n\n input.click()\n input.remove()\n}","import { isRef, type Ref } from 'vue'\n\nexport function offset(el: Element) {\n if (el === window) {\n return { top: 0, left: 0 }\n }\n const { top, left } = el.getBoundingClientRect()\n return { top, left }\n}\n\nexport function style(el: Element, property) {\n return window.getComputedStyle(el).getPropertyValue(property)\n}\n\nexport function height(el: Element) {\n return el === window ? window.innerHeight : el.getBoundingClientRect().height\n}\n\nexport function width(el: Element) {\n return el === window ? window.innerWidth : el.getBoundingClientRect().width\n}\n\nexport function css(element: Element, css: Record) {\n const style = element.style\n\n for (const prop in css) {\n style[prop] = css[prop]\n }\n}\n\nexport function cssBatch(elements: Element[], style: Record) {\n elements.forEach((el) => css(el, style))\n}\n\nexport function ready(fn?: VoidFunction) {\n if (typeof fn !== 'function') {\n return\n }\n\n if (document.readyState !== 'loading') {\n return fn()\n }\n\n document.addEventListener('DOMContentLoaded', fn, false)\n}\n\n// internal\nexport function getElement(\n el?: Element | null | string | Ref\n): Element | undefined {\n if (el == null) {\n return undefined\n }\n\n if (typeof el === 'string') {\n try {\n return document.querySelector(el) || undefined\n } catch (err) {\n return undefined\n }\n }\n\n const target = isRef(el) ? el.value : el\n\n if (target) {\n return target.$el || target\n }\n}\n\n// internal\nexport function childHasFocus(\n el?: Element | null,\n focusedEl: Element | null = null\n) {\n if (el == null || el.contains(focusedEl) === true) {\n return true\n }\n\n for (\n let next = el.nextElementSibling;\n next !== null;\n next = next.nextElementSibling\n ) {\n if (next.contains(focusedEl)) {\n return true\n }\n }\n\n return false\n}\n\nexport function getElementByIdStrict(id: string, document: Document = window.document): T | never {\n const element = document.getElementById(id)\n if (element == null) {\n throw new Error(`Cannot find element with id '${id}'`)\n } else {\n return element as T\n }\n}\n\nexport default {\n offset,\n style,\n height,\n width,\n css,\n cssBatch,\n ready\n}\n","import { css, getElement } from './dom.js'\n\nconst scrollTargets = [\n null,\n typeof document !== 'undefined' ? document : null,\n typeof document !== 'undefined' ? document.body : null,\n typeof document !== 'undefined' ? document.scrollingElement : null,\n typeof document !== 'undefined' ? document.documentElement : null,\n]\n\nexport function getScrollTarget(\n el?: Element | null,\n targetEl: Element | null = null\n) {\n let target = getElement(targetEl)\n\n if (target === undefined) {\n if (el == null) {\n return window\n }\n\n target = el.closest('.scroll,.scroll-y,.overflow-auto')!\n }\n\n return scrollTargets.includes(target) ? window : target\n}\n\nexport function getScrollHeight(el: Element | Window) {\n return (el === window ? document.body : el).scrollHeight\n}\n\nexport function getScrollWidth(el: Element | Window) {\n return (el === window ? document.body : el).scrollWidth\n}\n\nexport function getVerticalScrollPosition(scrollTarget: Element | Window) {\n return scrollTarget === window\n ? window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n : scrollTarget.scrollTop\n}\n\nexport function getHorizontalScrollPosition(scrollTarget: Element | Window) {\n return scrollTarget === window\n ? window.pageXOffset || window.scrollX || document.body.scrollLeft || 0\n : scrollTarget.scrollLeft\n}\n\nexport function animVerticalScrollTo(scrollEl: HTMLElement, offset: number, duration = 0, prevTime: number = performance.now(), opts?: {onUpdate?: VoidFunction, onDone?: VoidFunction}) {\n const pos = getVerticalScrollPosition(scrollEl)\n\n if (duration <= 0) {\n if (pos !== offset) {\n setScroll(scrollEl, offset)\n opts?.onUpdate?.()\n }\n opts?.onDone?.()\n return\n }\n\n requestAnimationFrame((nowTime) => {\n const frameTime = nowTime - prevTime\n const newPos =\n pos + ((offset - pos) / Math.max(frameTime, duration)) * frameTime\n setScroll(scrollEl, newPos)\n opts?.onUpdate?.()\n if (newPos !== offset) {\n animVerticalScrollTo(scrollEl, offset, duration - frameTime, nowTime, opts)\n } else {\n opts?.onDone?.()\n }\n })\n}\n\nexport function animHorizontalScrollTo(\n el: Element | Window,\n to,\n duration = 0 /* , prevTime */\n) {\n const prevTime = arguments[3] === undefined ? performance.now() : arguments[3]\n const pos = getHorizontalScrollPosition(el)\n\n if (duration <= 0) {\n if (pos !== to) {\n setHorizontalScroll(el, to)\n }\n return\n }\n\n requestAnimationFrame((nowTime) => {\n const frameTime = nowTime - prevTime\n const newPos =\n pos + ((to - pos) / Math.max(frameTime, duration)) * frameTime\n setHorizontalScroll(el, newPos)\n if (newPos !== to) {\n animHorizontalScrollTo(el, to, duration - frameTime, nowTime)\n }\n })\n}\n\nfunction setScroll(scrollTarget: Element | Window, offset: number) {\n if (scrollTarget === window) {\n window.scrollTo(\n window.pageXOffset || window.scrollX || document.body.scrollLeft || 0,\n offset\n )\n return\n }\n scrollTarget.scrollTop = offset\n}\n\nfunction setHorizontalScroll(scrollTarget: Element | Window, offset: number) {\n if (scrollTarget === window) {\n window.scrollTo(\n offset,\n window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n )\n return\n }\n scrollTarget.scrollLeft = offset\n}\n\nexport function setVerticalScrollPosition(\n scrollTarget: Element | Window,\n offset: number,\n duration: number\n) {\n if (duration) {\n animVerticalScrollTo(scrollTarget, offset, duration)\n return\n }\n setScroll(scrollTarget, offset)\n}\n\nexport function setHorizontalScrollPosition(\n scrollTarget: Element | Window,\n offset: number,\n duration: number\n) {\n if (duration) {\n animHorizontalScrollTo(scrollTarget, offset, duration)\n return\n }\n setHorizontalScroll(scrollTarget, offset)\n}\n\nlet size: undefined | number\nexport function getScrollbarWidth() {\n if (size !== undefined) {\n return size\n }\n\n const inner = document.createElement('p'),\n outer = document.createElement('div')\n\n css(inner, {\n width: '100%',\n height: '200px'\n })\n css(outer, {\n position: 'absolute',\n top: '0px',\n left: '0px',\n visibility: 'hidden',\n width: '200px',\n height: '150px',\n overflow: 'hidden'\n })\n\n outer.appendChild(inner)\n\n document.body.appendChild(outer)\n\n const w1 = inner.offsetWidth\n outer.style.overflow = 'scroll'\n let w2 = inner.offsetWidth\n\n if (w1 === w2) {\n w2 = outer.clientWidth\n }\n\n outer.remove()\n size = w1 - w2\n\n return size\n}\n\nexport function hasScrollbar(el: Element, onY = true) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n return onY\n ? el.scrollHeight > el.clientHeight &&\n (el.classList.contains('scroll') ||\n el.classList.contains('overflow-auto') ||\n ['auto', 'scroll'].includes(\n window.getComputedStyle(el)['overflow-y']\n ))\n : el.scrollWidth > el.clientWidth &&\n (el.classList.contains('scroll') ||\n el.classList.contains('overflow-auto') ||\n ['auto', 'scroll'].includes(\n window.getComputedStyle(el)['overflow-x']\n ))\n}\n\nexport default {\n getScrollTarget,\n\n getScrollHeight,\n getScrollWidth,\n\n getVerticalScrollPosition,\n getHorizontalScrollPosition,\n\n animVerticalScrollTo,\n animHorizontalScrollTo,\n\n setVerticalScrollPosition,\n setHorizontalScrollPosition,\n\n getScrollbarWidth,\n hasScrollbar\n}\n","import { ascendantNode, Delta, hasAttributes, isDelete, isInsert, isRetain, type InsertAttributes, type InsertOp, type Op } from '@avvoka/editor'\nimport { BitArray, clone, Source } from '@avvoka/shared'\nimport { useSimpleDialog } from '@component-utils/dialogs'\nimport Axios from 'axios'\nimport { getActivePinia } from 'pinia'\nimport { animVerticalScrollTo } from './_abstract/utils/scroll'\nimport { getCurrentDocumentId, useDocumentStore } from '~/stores/generic/document.store'\n\nexport default class Utils {\n public static get axios() {\n Axios.defaults.headers.common['X-CSRF-Token'] = Utils.CSRFToken\n Axios.interceptors.response.use(\n function (response) {\n window.localStorage.avvokaLastRequest = Date.now()\n return response\n },\n function (error) {\n window.localStorage.avvokaLastRequest = Date.now()\n return Promise.reject(error)\n }\n )\n return Axios\n }\n\n // User::VALID_EMAIL_REGEX_PATTERN\n public static isEmailValid(email: string | null | undefined) {\n return email && /^[a-zA-Z0-9.!$%‘*+/=?^_`{|}~-]+@\\w+([\\.-]?\\w+)*(\\.\\w{2,})+$/.test(email)\n }\n\n public static isURLValid(url: string | null | undefined) {\n return (\n url &&\n /([a-zA-Z][\\-+.a-zA-Z\\d]*):(?:((?:[\\-_.!~*'()a-zA-Z\\d;?:@&=+$,]|%[a-fA-F\\d]{2})(?:[\\-_.!~*'()a-zA-Z\\d;\\/?:@&=+$,\\[\\]]|%[a-fA-F\\d]{2})*)|(?:(?:\\/\\/(?:(?:(?:((?:[\\-_.!~*'()a-zA-Z\\d;:&=+$,]|%[a-fA-F\\d]{2})*)@)?(?:((?:(?:[a-zA-Z0-9\\-.]|%\\h\\h)+|\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\[(?:(?:[a-fA-F\\d]{1,4}:)*(?:[a-fA-F\\d]{1,4}|\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})|(?:(?:[a-fA-F\\d]{1,4}:)*[a-fA-F\\d]{1,4})?::(?:(?:[a-fA-F\\d]{1,4}:)*(?:[a-fA-F\\d]{1,4}|\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}))?)\\]))(?::(\\d*))?))?|((?:[\\-_.!~*'()a-zA-Z\\d$,;:@&=+]|%[a-fA-F\\d]{2})+))|(?!\\/\\/))(\\/(?:[\\-_.!~*'()a-zA-Z\\d:@&=+$,]|%[a-fA-F\\d]{2})*(?:;(?:[\\-_.!~*'()a-zA-Z\\d:@&=+$,]|%[a-fA-F\\d]{2})*)*(?:\\/(?:[\\-_.!~*'()a-zA-Z\\d:@&=+$,]|%[a-fA-F\\d]{2})*(?:;(?:[\\-_.!~*'()a-zA-Z\\d:@&=+$,]|%[a-fA-F\\d]{2})*)*)*)?)(?:\\?((?:[\\-_.!~*'()a-zA-Z\\d;\\/?:@&=+$,\\[\\]]|%[a-fA-F\\d]{2})*))?)(?:\\#((?:[\\-_.!~*'()a-zA-Z\\d;\\/?:@&=+$,\\[\\]]|%[a-fA-F\\d]{2})*))?/i.test(\n url\n )\n )\n }\n\n public static DIVIDER_TOKEN = '#='\n\n public static get CSRFToken() {\n return document.getElementsByName('csrf-token')?.[0]?.getAttribute('content') as string\n }\n\n public static removeNonBreakingSpaces(str: string) {\n return str.replace(/\\u200B/g, '').replace(/​/g, '')\n }\n\n public static fileIcon(fileType: string) {\n switch (fileType) {\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n case 'application/msword':\n case 'text/plain':\n return 'description'\n case 'application/vnd.ms-excel':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n case 'application/vnd.ms-excel.template.macroEnabled.12':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.template':\n case 'application/vnd.ms-excel.sheet.macroEnabled.12':\n return 'backup_table'\n case 'application/pdf':\n return 'picture_as_pdf'\n case 'application/zip':\n return 'folder_zip'\n case 'application/vnd.ms-powerpoint':\n case 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n return 'slide_library'\n case 'application/vnd.ms-outlook':\n case 'message/rfc822':\n return 'mail'\n default:\n if (fileType?.startsWith('image')) {\n return 'image'\n }\n return 'draft'\n }\n }\n\n public static copyText(text: string) {\n const element = document.createElement('textarea')\n element.value = text\n document.body.appendChild(element)\n element.select()\n document.execCommand('copy')\n document.body.removeChild(element)\n window.getSelection()?.removeAllRanges()\n }\n\n /**\n * Deep copy an object\n * @deprecated Use clone from '@avvoka/shared' instead\n * @param value\n */\n public static deepCopy(value: T): T {\n return clone(value)\n }\n\n public static highlightNode(node: Node, flashDelay: number) {\n ;(node as HTMLElement).style.setProperty('--flashing-interval', flashDelay + 'ms')\n setTimeout(() => {\n ;(node as HTMLElement).classList.toggle(`fade-out-highlight`, true)\n setTimeout(() => (node as HTMLElement).classList.toggle(`fade-out-highlight`, false), flashDelay)\n })\n }\n\n public static scrollNodeIntoView(\n node: HTMLElement,\n scroll: HTMLElement = ascendantNode(node, (node) => node.nodeName === 'AVV-CONTAINER' || node === window) as HTMLElement,\n duration = 500,\n opts?: { onUpdate?: VoidFunction; onDone?: VoidFunction }\n ) {\n animVerticalScrollTo(scroll, node.getBoundingClientRect().top + scroll.scrollTop - scroll.getBoundingClientRect().top, duration, undefined, opts)\n }\n\n public static notANumber(arg: unknown): boolean {\n return typeof arg !== 'number' || isNaN(arg)\n }\n\n public static stringifyValues(object: T): Stringified {\n if (object === null || object === undefined) {\n return object as Stringified;\n } else if (object instanceof Array) {\n return object.map((value) => Utils.stringifyValues(value) as unknown) as Stringified;\n } else {\n return String(object) as Stringified;\n }\n }\n}\n\ntype Stringified = T extends null | undefined\n ? T\n : T extends Array\n ? Array>\n : string;\n\nexport const initializeAfter = (body: VoidFunction, interval: number, stopCondition: () => boolean) => {\n const intervalId = setInterval(() => {\n if (stopCondition()) {\n clearInterval(intervalId)\n body()\n }\n }, interval)\n}\nif (typeof window !== 'undefined') {\n window.initializeAfter = initializeAfter\n}\n\ndeclare global {\n interface Window {\n initializeAfter: (body: VoidFunction, interval: number, stopCondition: () => boolean) => void\n }\n}\n\n/**\n * Calculates the character and word count from an array of operations (`ops`).\n * It processes each operation to extract text content, handling different types of inserts such as strings, formulas, and tabs.\n * The function returns an object containing the total number of characters and words.\n *\n * @param {Op[]} ops - An array of operations, where each operation can contain different types of inserts (e.g., strings, formulas, tabs).\n * @returns {{ words: number, chars: number }} An object with two properties:\n * - `chars`: The total number of characters in the processed content.\n * - `words`: The total number of words in the processed content.\n */\nexport const getCharAndWordCount = (ops: Op[]): { words: number; chars: number } => {\n const flatContent = ops\n .map((op) => {\n if (isInsert(op) && (!hasAttributes(op) || (hasAttributes(op) && !op.attributes.delete))) {\n if (typeof op.insert === 'string') {\n return op.insert\n } else if (op.insert.formula) {\n // mappings to make char count align with that of Word\n const charMappings = {\n pm: '±',\n mp: '∓',\n pi: 'π',\n dotsc: '…',\n infty: '∞',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n lt: '<',\n gt: '>',\n prod: '∏',\n sum: '∑',\n sqrt: '',\n '{': '',\n '}': '',\n '\\\\^': ''\n }\n\n let cleanedFormula = op.insert.formula['data-value']\n for (const [mapping, replacement] of Object.entries(charMappings)) {\n const regex = new RegExp(mapping, 'g')\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n cleanedFormula = String(cleanedFormula).replace(regex, replacement)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n return String(cleanedFormula).replace(/\\\\/g, '').replace(/ /g, '')\n } else if (op.insert.avvTab) {\n // count each tab as 1 character\n return ' '\n } else {\n return ''\n }\n }\n return null\n })\n .join('')\n\n const chars = flatContent.replace(/\\n/g, '').length\n const words = flatContent.length && flatContent.trim() ? flatContent.trim().split(/\\s+/).length : 0\n\n return { chars, words }\n}\n\n/**\n * Handles character autoreplacement.\n * \n * @returns A promise that resolves to void.\n */\nexport const handleCharacterAutoreplacement = async (): Promise => {\n const store = useDocumentStore(getActivePinia())\n await store.hydrateById(getCurrentDocumentId(), ['validations'])\n\n const { enabled, rules } = store.validations.character_autoreplacement\n\n const madeReplacements: Map = new Map()\n\n const isOpValidForReplacement = (op: Op) => {\n const isStringInsert = isInsert(op) && typeof op.insert === 'string'\n const isNotDeleteInsert = !(hasAttributes(op) && op.attributes.delete)\n return isStringInsert && isNotDeleteInsert\n }\n\n const applyReplacements = (op: InsertOp): string => {\n const originalText = op.insert as string\n let modifiedText = originalText\n\n rules.forEach((rule) => {\n const searchValue = rule.from\n const replaceValue = rule.to\n const newText = modifiedText.replaceAll(searchValue, replaceValue)\n\n if (newText !== modifiedText) {\n if (!madeReplacements.has(searchValue)) {\n madeReplacements.set(searchValue, replaceValue)\n }\n }\n\n modifiedText = newText\n })\n\n return modifiedText\n }\n\n return new Promise((resolve) => {\n if (!enabled || !rules?.length) {\n resolve()\n return\n }\n\n const editor = EditorFactory.get('draft').get()\n const ops = editor.getDelta().ops\n\n if (!ops.length) {\n resolve()\n return\n }\n\n const updateDelta = new Delta()\n\n ops.forEach((op) => {\n if (isOpValidForReplacement(op)) {\n const finalReplacement = applyReplacements(op as InsertOp)\n updateDelta.insert(finalReplacement, (op as InsertOp).attributes as InsertAttributes)\n } else if (isRetain(op)) {\n updateDelta.retain(op.retain, op.attributes)\n } else if (isDelete(op)) {\n updateDelta.delete(op.delete)\n } else {\n updateDelta.insert(op.insert, op.attributes)\n }\n })\n\n editor.scroll.clear()\n editor.update(updateDelta, new BitArray().set(Source.TRACKING_CHANGES))\n\n if (!madeReplacements.size) {\n resolve()\n return\n }\n\n const replacementsString = Array.from(madeReplacements.entries())\n .map(([from, to]) => `[${from} -> ${to}]`)\n .join(', ')\n\n useSimpleDialog({\n message: localizeText('template.info_messages.replaced_characters', { replacements: replacementsString }),\n buttons: ['ok'],\n }, {\n callback: () => resolve()\n })\n })\n}\n"],"names":["props","__props","computedClass","computed","styles","color","convertColorToCSSColorVariable","role","state","inject","reactive","V_LOADER_STATE","options","globalLocalize","message","icon","opaque","containerElement","element","instance","createVueApp","VLoaderDialog","useLoader","computedLevelClass","computedName","parse","string","strigify","array","TargetToComponent","TypeToAttribute","getTarget","target","getTargetAndAttribute","targetWithType","type","vA11y","binding","attribute","list","getUUID","emit","__emit","slots","_useSlots","computedLayout","loaded","ref","onBeforeMount","onMounted","loader","e","useErrorToast","localize","useLocalize","buttons","button","PREDEFINED_BUTTONS","nodeContains","node","what","teleportWrappers","teleportWrapper","nodeClosest","selector","teleport","onClickOutsideOf","watchedRefs","callback","listener","event","watchedRef","value","escListener","Key","addEventListeners","removeEventListeners","watchEffect","onBeforeUnmount","useFocus","focusImmediately","targetElement","targetElementFocus","_a","removeNode","insertNodeAt","fatherNode","position","refNode","getConsole","console","cached","fn","cache","str","regex","camelize","_","c","manageAndEmit","manage","eventHandlerNames","events","evt","isReadOnly","eventName","tags","isHtmlTag","name","isTransition","isHtmlAttribute","project","entries","res","key","getComponentAttributes","$attrs","componentData","createSortableOption","callBackBuilder","getValidSortableEntries","eventType","eventBuilder","draggable","getHtmlElementFromNode","el","addContext","domElement","context","getContext","ComponentStructure","header","defaultNodes","footer","root","realList","h","attributes","tag","children","_isRootComponent","index","domIndex","length","domChildren","firstDomListElement","indexFirstDomListElement","getSlot","slotValue","computeNodes","$slots","getKey","normalizedList","item","getRootInformation","transition","externalComponent","resolveComponent","TransitionGroup","computeComponentStructure","nodes","evtName","evtData","nextTick","originalElement","delegateCallBack","draggingElement","original","emits","draggableComponent","defineComponent","componentStructure","err","$el","sortableOptions","targetDomElement","Sortable","itemKey","newOptionValue","_sortable","htmElement","onList","newList","spliceList","oldIndex","newIndex","updatePosition","to","related","component","added","removed","moved","relatedContext","currentDomIndex","currentIndex","originalEvent","move","futureIndex","draggedContext","sendEvent","computedClasses","useBuffering","modelValue","modelValueInternal","watch","ValidationErrorSeverity","GENERIC_VALIDATORS","v","createValidator","memberValidations","composeValidations","memberValidationsRaw","memberValidationDirect","validation","memberValidationNested","memberValidationMethod","memo","genericKey","genericSeverity","result","object","entriesMapped","getObjectEntries","property","composedValidations","validate","validations","path","results","member","memberValidation","i","NUMBER_LIKE_CHARACTERS","CONTROL_LIKE_CHARACTERS","isNullOrUndefined","isNumberLikeCharacter","isControlCharacter","handleEvents","validationVisible","pastedText","character","stopAndPrevent","defaultValidator","useValidation","validatorSubject","validator","validationResult","isValid","validationResultForDisplay","isValidationError","isValidationWarning","useComponentValidation","refs","usePasswordRequirementsValidation","validationMethods","password","valid","PasswordsApi","debouncedValidationMethods","entry","useDebounce","passwordState","method","setDebounced","instant","requirement","createDefaultFileValidator","validContentTypes","toContentTypes","resolveAccept","file","createDefaultEmailValidator","Utils","createDefaultPasswordValidator","createDefaultMultiSelectValidator","createDefaultOTPValidator","createDefaultNumberValidator","createDefaultValidator","createDefaultURLValidator","urlParts","useSlots","id","useElementId","descriptionId","useDescriptionElementId","_useModel","updateModelValue","modelValueInternalLength","computedInputClass","computedWrapperClass","focus","focusElement","handleKeyDown","handlePaste","__expose","useFallthroughProps","useAttrs","iconPosition","inputProps","inputElement","useTemplateRef","tagName","isCheckbox","isDisabled","computedAttributes","onCheckboxClick","getItemValue","computedListeners","getListeners","submenuIndex","items","toRef","flatItems","recomputeFlatItems","useManualTracking","getFilteredCollection","item1","item2","windowSize","menuWidth","menuHeight","windowWidth","windowHeight","containerHeight","containerWidth","left","right","top","bottom","submenuItems","getSubmenuPosition","rect","V_DIALOG_STATE","createDialogInstance","resolve","params","_b","_c","useDialog","useSimpleDialog","VSimpleDialog","decision","useContextMenu","VContextMenu","useFilePicker","input","files","css","style","prop","getElement","isRef","childHasFocus","focusedEl","next","getElementByIdStrict","document","scrollTargets","getScrollTarget","targetEl","getVerticalScrollPosition","scrollTarget","animVerticalScrollTo","scrollEl","offset","duration","prevTime","opts","pos","setScroll","nowTime","frameTime","newPos","size","getScrollbarWidth","inner","outer","w1","w2","_Utils","Axios","response","error","email","url","fileType","text","clone","flashDelay","scroll","ascendantNode","arg","__publicField","initializeAfter","body","interval","stopCondition","intervalId","getCharAndWordCount","ops","flatContent","op","isInsert","hasAttributes","charMappings","cleanedFormula","mapping","replacement","chars","words","handleCharacterAutoreplacement","store","useDocumentStore","getActivePinia","getCurrentDocumentId","enabled","rules","madeReplacements","isOpValidForReplacement","isStringInsert","isNotDeleteInsert","applyReplacements","modifiedText","rule","searchValue","replaceValue","newText","editor","updateDelta","Delta","finalReplacement","isRetain","isDelete","BitArray","Source","replacementsString","from"],"mappings":"umEAYA,MAAMA,EAAQC,EASRC,EAAgBC,EAAS,KAAO,CAEpC,iBAAkBH,EAAM,OACxB,+BAAgC,CAACA,EAAM,MAAA,EACvC,mZCLF,MAAMA,EAAQC,EAeRC,EAAgBC,EAAS,IAAM,CACnC,MAAMC,EAAS,CAAC,EAEhB,OAAIJ,EAAM,MAAMI,EAAO,KAAK,QAAQJ,EAAM,IAAI,EAAE,EAC5CA,EAAM,MAAaI,EAAA,KAAK,WAAW,EACnCJ,EAAM,UAAiBI,EAAA,KAAK,eAAe,EAC3CJ,EAAM,QAAeI,EAAA,KAAK,QAAQ,EAE/BA,EAAO,KAAK,GAAG,CAAA,CACvB,EAEKC,EAAQF,EAAS,IAAMG,GAA+BN,EAAM,MAAO,GAAG,CAAC,EAEvEO,EAAOJ,EAAS,IAChBH,EAAM,KAAa,SACdA,EAAM,OAAe,WAClB,MACb,sQC7BD,MAAMQ,EAAQC,GAKX,wBAAyBC,GAAS,CAAE,QAAS,OAAW,KAAM,iBAAkB,OAAQ,GAAM,QAAS,EAAO,CAAA,CAAC,6aCtB5GC,GAqBF,CACF,OAAQD,GAAS,CACf,QAAS,OACT,KAAM,iBACN,OAAQ,GACR,QAAS,EAAA,CACV,EACD,MAAQ,CACN,KAAK,OAAO,QAAU,EACxB,EACA,MAAOE,EAAU,GAAI,CACnB,KAAK,OAAO,QAAUA,EAAQ,SAAWC,EAAe,uDAAuD,EAC1G,KAAA,OAAO,KAAOD,EAAQ,MAAQ,iBAC9B,KAAA,OAAO,OAASA,EAAQ,QAAU,GACvC,KAAK,OAAO,QAAU,GAGjB,KAAA,IACP,EACA,IAAI,QAASE,EAAiB,CAC5B,KAAK,OAAO,QAAUA,CACxB,EACA,IAAI,KAAMC,EAAY,CACpB,KAAK,OAAO,KAAOA,CACrB,EACA,IAAI,OAAQC,EAAiB,CAC3B,KAAK,OAAO,OAASA,CACvB,EACA,IAAI,MAAQ,CACH,OAAA,KAAK,QAAL,KAAK,OAAW,IAAM,CACrB,MAAAC,EAAmB,SAAS,cAAc,KAAK,EACrDA,EAAiB,GAAK,qBAGLA,EAAA,aAAa,QAAS,mBAAmB,EAEjD,SAAA,KAAK,YAAYA,CAAgB,EAEpC,MAAAC,EAAU,SAAS,cAAc,KAAK,EAEtCC,EAAWC,GAAaC,EAA0B,EAC/C,OAAAF,EAAA,QAAQ,wBAAyBR,GAAe,MAAM,EAC/DQ,EAAS,MAAMD,CAAO,EAEtBD,EAAiB,YAAYC,CAAO,EAE7BC,CAAA,GACN,EAAA,CAEP,EAEO,SAASG,IAAa,CACpB,OAAAX,EACT,mKC/DA,MAAMX,EAAQC,EAcRsB,EAAqBpB,EAAS,KAAO,CACzC,EAAG,wBACH,EAAG,sBACH,EAAG,qBACH,EAAG,qBACH,EAAG,oBACH,EAAG,mBAAA,GACHH,EAAM,KAAK,CAAE,EAETE,EAAgBC,EAAS,KAAO,CACpC,CAACoB,EAAmB,KAAK,EAAG,GAC5B,YAAavB,EAAM,KACnB,cAAeA,EAAM,OACrB,gBAAiB,CAACA,EAAM,QAAU,CAACA,EAAM,QAAA,EACzC,EAEIwB,EAAerB,EAAS,IAAM,IAAIH,EAAM,KAAK,EAAE,EAE/CK,EAAQF,EAAS,IAAMG,GAA+BN,EAAM,MAAO,GAAG,CAAC,yNC9C7E,SAASyB,GAAOC,EAAuB,CACrC,OAAOA,GAAA,YAAAA,EAAQ,MAAM,OAAQ,CAAC,CAChC,CAEA,SAASC,GAAUC,EAAiB,CAC3B,OAAAA,EAAM,KAAK,GAAG,CACvB,CAEA,MAAMC,GAAoB,CACxB,OAAQ,SACV,EAEMC,GAAkB,CACtB,MAAO,kBACP,YAAa,kBACf,EAEA,SAASC,GAAWb,EAAkBc,EAAwC,CAC5E,OAAOd,EAAQ,QAAQ,yBAAyBW,GAAkBG,CAAM,CAAC,IAAI,CAC/E,CAEA,SAASC,GAAuBf,EAAkBgB,EAAqF,CACrI,KAAM,CAACF,EAAQG,CAAI,EAAID,EAAe,MAAM,IAAK,CAAC,EAE3C,MAAA,CACLH,GAAUb,EAASc,CAAM,EACzBF,GAAgBK,CAAI,CACtB,CAIF,CAKO,MAAMC,GAAoH,CAC/H,QAASlB,EAASmB,EAAS,CACrB,GAAA,CAACA,EAAQ,IAAK,OAElB,KAAM,CAACL,EAAQM,CAAS,EAAIL,GAAsBf,EAASmB,EAAQ,GAAG,EACtE,GAAI,CAACL,EAAQ,OAEb,MAAMO,EAAOd,GAAMO,EAAO,aAAaM,CAAS,CAAC,EAEjDC,EAAK,KAAKrB,EAAQ,KAARA,EAAQ,GAAOsB,GAAA,EAAS,EAElCR,EAAO,aAAaM,EAAWX,GAASY,CAAI,CAAC,CAC/C,EACA,UAAWrB,EAASmB,EAAS,CACvB,GAAA,CAACA,EAAQ,IAAK,OAElB,KAAM,CAACL,EAAQM,CAAS,EAAIL,GAAsBf,EAASmB,EAAQ,GAAG,EACtE,GAAI,CAACL,GAAU,CAACd,EAAQ,GAAI,OAE5B,MAAMqB,EAAOd,GAAMO,EAAO,aAAaM,CAAS,CAAC,EAEjDC,EAAK,OAAOA,EAAK,QAAQrB,EAAQ,EAAE,EAAG,CAAC,EAEvCc,EAAO,aAAaM,EAAWX,GAASY,CAAI,CAAC,CAAA,CAEjD,6iBChBA,MAAMvC,EAAQC,EA2BRwC,EAAOC,EAIPC,EAAQC,GAAA,EAMRC,EAAiB1C,EAAS,KACvB,CACL,SAAUH,EAAM,MAChB,MAAOA,EAAM,MACb,UAAWA,EAAM,WAAaA,EAAM,OACpC,OAAQA,EAAM,MAChB,EACD,EAEK8C,EAASC,EAAI,CAAC/C,EAAM,IAAI,EAE9B,OAAAgD,GAAc,IAAM,CAElB,SAAS,KAAK,MAAM,CAAA,CACrB,EAEDC,EAAU,SAAY,CACpB,GAAIjD,EAAM,KAAM,CACd,MAAMkD,EAAS5B,GAAU,EACrB,GAAA,CACK4B,EAAA,MAAM,CAAE,OAAQ,GAAO,QAASlD,EAAM,YAAa,KAAMA,EAAM,QAAA,CAAU,EAEhF,MAAMA,EAAM,KAAK,EAEjB8C,EAAO,MAAQ,SACRK,EAAG,CACVC,GAAcD,CAAC,EAEfV,EAAK,OAAO,CAAA,QACZ,CACAS,EAAO,KAAK,CAAA,CACd,CACF,CACD,4qCCvGD,MAAMlD,EAAQC,EAaRC,EAAgBC,EAAS,KAAO,CACpC,gCAAiCH,EAAM,MACvC,gCAAiCA,EAAM,QACvC,kCAAmC,CAACA,EAAM,SAAW,CAACA,EAAM,KAAA,EAC5D,EAEIK,EAAQF,EAAS,IAAMG,GAA+BN,EAAM,MAAO,GAAG,CAAC,gWCdvE,MAAAqD,EAAWC,GAAY,2BAA2B,EAMlDtD,EAAQC,EAcRwC,EAAOC,EAIPa,EAAUpD,EAAS,IAAMH,EAAM,QAAQ,IAAKwD,GAAW,OAAOA,GAAW,SAAWC,EAAmBD,CAAM,EAAIA,CAAM,CAAC,EAExHC,EAA4D,CAChE,MAAS,CACP,MAAO,GACP,MAAOJ,EAAS,qBAAqB,EACrC,QAAS,WACT,MAAO,WACT,EACA,SAAY,CACV,MAAO,GACP,MAAOA,EAAS,wBAAwB,EACxC,QAAS,YACT,MAAO,SACT,EACA,GAAM,CACJ,MAAO,GACP,MAAOA,EAAS,kBAAkB,EAClC,QAAS,YACT,MAAO,SACT,EACA,QAAW,CACT,MAAO,GACP,MAAOA,EAAS,uBAAuB,EACvC,QAAS,YACT,MAAO,SACT,EACA,OAAU,CACR,MAAO,GACP,MAAOA,EAAS,sBAAsB,EACtC,QAAS,WACT,MAAO,WAAA,CAEX,wcCxEgB,SAAAK,GAAcC,EAAeC,EAAwB,CACnE,GAAID,EAAK,SAASC,CAAI,EAAU,MAAA,GAE1B,MAAAC,EAAmBF,EAAK,iBAAiB,8BAA8B,EAC7E,OAAO,MAAM,KAAKE,CAAgB,EAAE,KAAMC,GACjCJ,GAEL,SAAS,eAAeI,EAAgB,aAAa,4BAA4B,CAAE,EACnFF,CACF,CACD,CACH,CAEgB,SAAAG,GAAaJ,EAAeK,EAA2B,CACrE,GAAIL,EAAK,QAAQK,CAAQ,EAAU,MAAA,GAE7B,MAAAC,EAAWN,EAAK,QAAQ,2BAA2B,EACrD,GAAA,CAACM,EAAiB,MAAA,GAEtB,MAAMH,EAAkBH,EAAK,cAAc,cAAc,gCAAgCM,EAAS,EAAE,IAAI,EACpG,OAACH,EAEEC,GAAYD,EAAiBE,CAAQ,EAFf,EAG/B,CAQO,SAASE,GACdC,EACAC,EACAxD,EAGI,CAAA,EACJ,CACM,MAAAyD,EAAYC,GAAsB,CACtC,MAAMtC,EAASsC,EAAM,OAChBtC,IAGAmC,EAAY,KAAMI,GAAe,CACpC,MAAMC,EAAQD,EAAW,MACrB,OAAA,OAAOC,GAAU,SAEZT,GAAY/B,EAAQwC,CAAK,EACvBA,EAEFd,GAAac,EAAOxC,CAAM,EAG1B,EACT,CACD,GACUoC,EAAA,EAEb,EAEMK,EAAeH,GAAyB,CACxCA,EAAM,MAAeI,EAAI,QAClBN,EAAA,CAEb,EAEMO,EAAoB,IAAM,CACvB,OAAA,iBAAiB,QAASN,EAAU,EAAI,EACxC,OAAA,iBAAiB,cAAeA,EAAU,EAAI,EAEjDzD,EAAQ,KACH,OAAA,iBAAiB,UAAW6D,EAAa,EAAI,CAExD,EAEMG,EAAuB,IAAM,CAC1B,OAAA,oBAAoB,QAASP,EAAU,EAAI,EAC3C,OAAA,oBAAoB,cAAeA,EAAU,EAAI,EAEpDzD,EAAQ,KACH,OAAA,oBAAoB,UAAW6D,EAAa,EAAI,CAE3D,EAEI7D,EAAQ,UACViE,GAAY,IAAM,CACZjE,EAAQ,UAAW,MACH+D,EAAA,EAEGC,EAAA,CACvB,CACD,EAED3B,EAAU0B,CAAiB,EAG7BG,GAAgBF,CAAoB,CACtC,CAEgB,SAAAG,GAAUC,EAAmB,GAAO,CAClD,MAAMC,EAAgBlC,EAAiB,EACjCmC,EAAqB,IAAA,OAAM,OAAAC,EAAAF,EAAc,QAAd,YAAAE,EAAqB,SAEtD,OAAIH,GACF/B,EAAUiC,CAAkB,EAGvB,CACL,aAAcD,EACd,MAAOC,CACT,CACF,CCrHA,SAASE,EAAWzB,EAAM,CACpBA,EAAK,gBAAkB,MACpBA,EAAA,cAAc,YAAYA,CAAI,CAEvC,CAEA,SAAS0B,GAAaC,EAAY3B,EAAM4B,EAAU,CAC1C,MAAAC,EACJD,IAAa,EACTD,EAAW,SAAS,CAAC,EACrBA,EAAW,SAASC,EAAW,CAAC,EAAE,YAC7BD,EAAA,aAAa3B,EAAM6B,CAAO,CACvC,CCZA,SAASC,IAAa,CAChB,OAAA,OAAO,OAAW,IACb,OAAO,QAET,OAAO,OAChB,CACA,MAAMC,GAAUD,GAAW,ECN3B,SAASE,GAAOC,EAAI,CACZ,MAAAC,EAAe,OAAA,OAAO,IAAI,EACzB,OAAA,SAAkBC,EAAK,CAE5B,OADYD,EAAMC,CAAG,IACND,EAAMC,CAAG,EAAIF,EAAGE,CAAG,EACpC,CACF,CAEA,MAAMC,GAAQ,SACRC,GAAWL,GAAcG,GAAAA,EAAI,QAAQC,GAAO,CAACE,EAAGC,IAAMA,EAAE,YAAa,CAAA,CAAC,ECTtEC,GAAgB,CAAC,QAAS,MAAO,SAAU,SAAU,KAAK,EAC1D1D,GAAO,CAAC,SAAU,WAAY,OAAQ,SAAU,OAAO,EACvD2D,GAAS,CAAC,MAAM,EAChBC,GAAoB,CAACD,GAAQD,GAAe1D,EAAI,EACnD,QAAQ6D,GAAUA,CAAM,EACxB,IAAWC,GAAA,KAAKA,CAAG,EAAE,EAElBD,GAAS,CAAA,OACbF,GAAA,cACAD,GACA1D,KAAAA,EACF,EAEA,SAAS+D,GAAWC,EAAW,CACtB,OAAAJ,GAAkB,QAAQI,CAAS,IAAM,EAClD,CCfA,MAAMC,GAAO,CACX,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,OACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,KACA,MACA,OACA,IACA,OACA,SACA,UACA,SACA,OACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,QACA,KACA,QACA,IACA,KACA,MACA,QACA,KACF,EAEA,SAASC,GAAUC,EAAM,CAChB,OAAAF,GAAK,SAASE,CAAI,CAC3B,CAEA,SAASC,GAAaD,EAAM,CAC1B,MAAO,CAAC,mBAAoB,iBAAiB,EAAE,SAASA,CAAI,CAC9D,CAEA,SAASE,GAAgBtC,EAAO,CAC9B,MACE,CAAC,KAAM,QAAS,OAAQ,OAAO,EAAE,SAASA,CAAK,GAC/CA,EAAM,WAAW,OAAO,GACxBA,EAAM,WAAW,OAAO,GACxBA,EAAM,WAAW,IAAI,CAEzB,CCnIA,SAASuC,GAAQC,EAAS,CACxB,OAAOA,EAAQ,OAAO,CAACC,EAAK,CAACC,EAAK1C,CAAK,KACrCyC,EAAIC,CAAG,EAAI1C,EACJyC,GACN,EAAE,CA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"}