{"version":3,"file":"MenuBar-aZwqxDEv.chunk.mjs","sources":["../node_modules/y-prosemirror/src/plugins/undo-plugin.js","../node_modules/@tiptap/extension-collaboration/dist/index.js","../node_modules/@nextcloud/vue/dist/chunks/NcDialog-DDuqQeT-.mjs","../src/components/Menu/ActionListItem.vue","../src/components/Menu/ActionList.vue","../src/components/Menu/ActionSingle.vue","../src/components/Menu/ToolBarLogic.js","../src/components/Menu/ReadonlyBar.vue","../src/composables/useEditorWidth.ts","../node_modules/@nextcloud/vue/dist/chunks/NcActionCheckbox-D9aQuEYw.mjs","../node_modules/path-normalize/lib/index.js","../src/services/AttachmentResolver.js","../node_modules/@tiptap/extension-node-range/dist/index.js","../node_modules/@tiptap/extension-drag-handle/dist/index.js","../node_modules/@tiptap/extension-drag-handle-vue-2/dist/index.js","../node_modules/vue-material-design-icons/DragVertical.vue","../src/components/Editor/FloatingButtons.vue","../src/components/Editor/ContentContainer.vue","../src/apis/attach.ts","../src/components/Editor/MediaHandler.vue","../src/components/Editor/MainContainer.vue","../src/components/Editor/Wrapper.vue","../src/helpers/platform.js","../src/components/HelpModal.vue","../src/components/Menu/ActionFormattingHelp.vue","../src/components/Menu/CharacterCount.vue","../src/components/Menu/WidthToggle.vue","../src/components/Menu/MenuBar.vue"],"sourcesContent":["import { Plugin } from 'prosemirror-state'\n\nimport { getRelativeSelection } from './sync-plugin.js'\nimport { UndoManager, Item, ContentType, XmlElement, Text } from 'yjs'\nimport { yUndoPluginKey, ySyncPluginKey } from './keys.js'\n\n/**\n * @typedef {Object} UndoPluginState\n * @property {import('yjs').UndoManager} undoManager\n * @property {ReturnType | null} prevSel\n * @property {boolean} hasUndoOps\n * @property {boolean} hasRedoOps\n */\n\n/**\n * Undo the last user action\n *\n * @param {import('prosemirror-state').EditorState} state\n * @return {boolean} whether a change was undone\n */\nexport const undo = state => yUndoPluginKey.getState(state)?.undoManager?.undo() != null\n\n/**\n * Redo the last user action\n *\n * @param {import('prosemirror-state').EditorState} state\n * @return {boolean} whether a change was undone\n */\nexport const redo = state => yUndoPluginKey.getState(state)?.undoManager?.redo() != null\n\n/**\n * Undo the last user action if there are undo operations available\n * @type {import('prosemirror-state').Command}\n */\nexport const undoCommand = (state, dispatch) => dispatch == null ? yUndoPluginKey.getState(state)?.undoManager?.canUndo() : undo(state)\n\n/**\n * Redo the last user action if there are redo operations available\n * @type {import('prosemirror-state').Command}\n */\nexport const redoCommand = (state, dispatch) => dispatch == null ? yUndoPluginKey.getState(state)?.undoManager?.canRedo() : redo(state)\n\nexport const defaultProtectedNodes = new Set(['paragraph'])\n\n/**\n * @param {import('yjs').Item} item\n * @param {Set} protectedNodes\n * @returns {boolean}\n */\nexport const defaultDeleteFilter = (item, protectedNodes) => !(item instanceof Item) ||\n !(item.content instanceof ContentType) ||\n !(item.content.type instanceof Text ||\n (item.content.type instanceof XmlElement && protectedNodes.has(item.content.type.nodeName))) ||\n item.content.type._length === 0\n\n/**\n * @param {object} [options]\n * @param {Set} [options.protectedNodes]\n * @param {any[]} [options.trackedOrigins]\n * @param {import('yjs').UndoManager | null} [options.undoManager]\n */\nexport const yUndoPlugin = ({ protectedNodes = defaultProtectedNodes, trackedOrigins = [], undoManager = null } = {}) => new Plugin({\n key: yUndoPluginKey,\n state: {\n init: (initargs, state) => {\n // TODO: check if plugin order matches and fix\n const ystate = ySyncPluginKey.getState(state)\n const _undoManager = undoManager || new UndoManager(ystate.type, {\n trackedOrigins: new Set([ySyncPluginKey].concat(trackedOrigins)),\n deleteFilter: (item) => defaultDeleteFilter(item, protectedNodes),\n captureTransaction: tr => tr.meta.get('addToHistory') !== false\n })\n return {\n undoManager: _undoManager,\n prevSel: null,\n hasUndoOps: _undoManager.undoStack.length > 0,\n hasRedoOps: _undoManager.redoStack.length > 0\n }\n },\n apply: (tr, val, oldState, state) => {\n const binding = ySyncPluginKey.getState(state).binding\n const undoManager = val.undoManager\n const hasUndoOps = undoManager.undoStack.length > 0\n const hasRedoOps = undoManager.redoStack.length > 0\n if (binding) {\n return {\n undoManager,\n prevSel: getRelativeSelection(binding, oldState),\n hasUndoOps,\n hasRedoOps\n }\n } else {\n if (hasUndoOps !== val.hasUndoOps || hasRedoOps !== val.hasRedoOps) {\n return Object.assign({}, val, {\n hasUndoOps: undoManager.undoStack.length > 0,\n hasRedoOps: undoManager.redoStack.length > 0\n })\n } else { // nothing changed\n return val\n }\n }\n }\n },\n view: view => {\n const ystate = ySyncPluginKey.getState(view.state)\n const undoManager = yUndoPluginKey.getState(view.state).undoManager\n undoManager.on('stack-item-added', ({ stackItem }) => {\n const binding = ystate.binding\n if (binding) {\n stackItem.meta.set(binding, yUndoPluginKey.getState(view.state).prevSel)\n }\n })\n undoManager.on('stack-item-popped', ({ stackItem }) => {\n const binding = ystate.binding\n if (binding) {\n binding.beforeTransactionSelection = stackItem.meta.get(binding) || binding.beforeTransactionSelection\n }\n })\n return {\n destroy: () => {\n undoManager.destroy()\n }\n }\n }\n})\n","import { Extension } from '@tiptap/core';\nimport { Plugin, PluginKey } from '@tiptap/pm/state';\nimport { yUndoPluginKey, undo, redo, yUndoPlugin, ySyncPlugin, yXmlFragmentToProsemirrorJSON, ySyncPluginKey } from 'y-prosemirror';\n\n/**\n * This extension allows you to collaborate with others in real-time.\n * @see https://tiptap.dev/api/extensions/collaboration\n */\nconst Collaboration = Extension.create({\n name: 'collaboration',\n priority: 1000,\n addOptions() {\n return {\n document: null,\n field: 'default',\n fragment: null,\n };\n },\n addStorage() {\n return {\n isDisabled: false,\n };\n },\n onCreate() {\n if (this.editor.extensionManager.extensions.find(extension => extension.name === 'history')) {\n console.warn('[tiptap warn]: \"@tiptap/extension-collaboration\" comes with its own history support and is not compatible with \"@tiptap/extension-history\".');\n }\n },\n addCommands() {\n return {\n undo: () => ({ tr, state, dispatch }) => {\n tr.setMeta('preventDispatch', true);\n const undoManager = yUndoPluginKey.getState(state).undoManager;\n if (undoManager.undoStack.length === 0) {\n return false;\n }\n if (!dispatch) {\n return true;\n }\n return undo(state);\n },\n redo: () => ({ tr, state, dispatch }) => {\n tr.setMeta('preventDispatch', true);\n const undoManager = yUndoPluginKey.getState(state).undoManager;\n if (undoManager.redoStack.length === 0) {\n return false;\n }\n if (!dispatch) {\n return true;\n }\n return redo(state);\n },\n };\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-z': () => this.editor.commands.undo(),\n 'Mod-y': () => this.editor.commands.redo(),\n 'Shift-Mod-z': () => this.editor.commands.redo(),\n };\n },\n addProseMirrorPlugins() {\n var _a;\n const fragment = this.options.fragment\n ? this.options.fragment\n : this.options.document.getXmlFragment(this.options.field);\n // Quick fix until there is an official implementation (thanks to @hamflx).\n // See https://github.com/yjs/y-prosemirror/issues/114 and https://github.com/yjs/y-prosemirror/issues/102\n const yUndoPluginInstance = yUndoPlugin(this.options.yUndoOptions);\n const originalUndoPluginView = yUndoPluginInstance.spec.view;\n yUndoPluginInstance.spec.view = (view) => {\n const { undoManager } = yUndoPluginKey.getState(view.state);\n if (undoManager.restore) {\n undoManager.restore();\n undoManager.restore = () => {\n // noop\n };\n }\n const viewRet = originalUndoPluginView ? originalUndoPluginView(view) : undefined;\n return {\n destroy: () => {\n const hasUndoManSelf = undoManager.trackedOrigins.has(undoManager);\n // eslint-disable-next-line no-underscore-dangle\n const observers = undoManager._observers;\n undoManager.restore = () => {\n if (hasUndoManSelf) {\n undoManager.trackedOrigins.add(undoManager);\n }\n undoManager.doc.on('afterTransaction', undoManager.afterTransactionHandler);\n // eslint-disable-next-line no-underscore-dangle\n undoManager._observers = observers;\n };\n if (viewRet === null || viewRet === void 0 ? void 0 : viewRet.destroy) {\n viewRet.destroy();\n }\n },\n };\n };\n const ySyncPluginOptions = {\n ...this.options.ySyncOptions,\n onFirstRender: this.options.onFirstRender,\n };\n const ySyncPluginInstance = ySyncPlugin(fragment, ySyncPluginOptions);\n if (this.editor.options.enableContentCheck) {\n (_a = fragment.doc) === null || _a === void 0 ? void 0 : _a.on('beforeTransaction', () => {\n try {\n const jsonContent = (yXmlFragmentToProsemirrorJSON(fragment));\n if (jsonContent.content.length === 0) {\n return;\n }\n this.editor.schema.nodeFromJSON(jsonContent).check();\n }\n catch (error) {\n this.editor.emit('contentError', {\n error: error,\n editor: this.editor,\n disableCollaboration: () => {\n var _a;\n (_a = fragment.doc) === null || _a === void 0 ? void 0 : _a.destroy();\n this.storage.isDisabled = true;\n },\n });\n // If the content is invalid, return false to prevent the transaction from being applied\n return false;\n }\n });\n }\n return [\n ySyncPluginInstance,\n yUndoPluginInstance,\n // Only add the filterInvalidContent plugin if content checking is enabled\n this.editor.options.enableContentCheck\n && new Plugin({\n key: new PluginKey('filterInvalidContent'),\n filterTransaction: () => {\n var _a;\n // When collaboration is disabled, prevent any sync transactions from being applied\n if (this.storage.isDisabled) {\n // Destroy the Yjs document to prevent any further sync transactions\n (_a = fragment.doc) === null || _a === void 0 ? void 0 : _a.destroy();\n return true;\n }\n return true;\n },\n }),\n ].filter(Boolean);\n },\n});\n\n/**\n * Checks if a transaction was originated from a Yjs change.\n * @param {Transaction} transaction - The transaction to check.\n * @returns {boolean} - True if the transaction was originated from a Yjs change, false otherwise.\n * @example\n * const transaction = new Transaction(doc)\n * const isOrigin = isChangeOrigin(transaction) // returns false\n */\nfunction isChangeOrigin(transaction) {\n return !!transaction.getMeta(ySyncPluginKey);\n}\n\nexport { Collaboration, Collaboration as default, isChangeOrigin };\n//# sourceMappingURL=index.js.map\n","import '../assets/NcDialog-COuFb47k.css';\nimport { useElementSize } from \"@vueuse/core\";\nimport { defineComponent, ref, computed } from \"vue\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { N as NcDialogButton } from \"./NcDialogButton-P7Ryycqk.mjs\";\nimport NcModal from \"../Components/NcModal.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = defineComponent({\n name: \"NcDialog\",\n components: {\n NcDialogButton,\n NcModal\n },\n props: {\n /** Name of the dialog (the heading) */\n name: {\n type: String,\n required: true\n },\n /** Text of the dialog */\n message: {\n type: String,\n default: \"\"\n },\n /** Additional elements to add to the focus trap */\n additionalTrapElements: {\n type: Array,\n validator: (arr) => {\n return Array.isArray(arr) && arr.every((element) => typeof element === \"string\" || element instanceof HTMLElement);\n },\n default: () => []\n },\n /**\n * The element where to mount the dialog, if `null` is passed the dialog is mounted in place\n *\n * @default 'body'\n */\n container: {\n type: String,\n required: false,\n default: \"body\"\n },\n /**\n * Whether the dialog should be shown\n *\n * @default true\n */\n open: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Size of the underlying NcModal\n *\n * @default 'small'\n * @type {'small'|'normal'|'large'|'full'}\n */\n size: {\n type: String,\n required: false,\n default: \"small\",\n validator: (value) => typeof value === \"string\" && [\"small\", \"normal\", \"large\", \"full\"].includes(value)\n },\n /**\n * Buttons to display\n *\n * @default []\n */\n buttons: {\n type: Array,\n required: false,\n default: () => [],\n validator: (value) => Array.isArray(value) && value.every((element) => typeof element === \"object\")\n },\n /**\n * Do not show the close button for the dialog.\n *\n * @default false\n */\n noClose: {\n type: Boolean,\n default: false\n },\n /**\n * Set to false to no show a close button on the dialog\n *\n * @deprecated - Use `noClose` instead. Will be removed in v9.\n * @default true\n */\n canClose: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Close the dialog if the user clicked outside of the dialog\n * Only relevant if `canClose` is set to true.\n */\n closeOnClickOutside: {\n type: Boolean,\n default: false\n },\n /**\n * Make the dialog wrapper a HTML form element.\n * The buttons will be wrapped within the form so they can be used as submit / reset buttons.\n * Please note that when using the property the `navigation` should not be used.\n */\n isForm: {\n type: Boolean,\n default: false\n },\n /**\n * Declare if hiding the modal should be animated\n *\n * @default false\n */\n outTransition: {\n type: Boolean,\n default: false\n },\n /**\n * Optionally pass additional classes which will be set on the navigation for custom styling\n *\n * @default ''\n * @example\n * ```html\n * \n * \n * \n * ```\n */\n navigationClasses: {\n type: [String, Array, Object],\n required: false,\n default: \"\"\n },\n /**\n * aria-label for the dialog navigation.\n * Use it when you want to provide a more meaningful label than the dialog name.\n *\n * By default, navigation is labeled by the dialog name.\n */\n navigationAriaLabel: {\n type: String,\n required: false,\n default: \"\"\n },\n /**\n * aria-labelledby for the dialog navigation.\n * Use it when you have an implicit navigation label (e.g. a heading).\n *\n * By default, navigation is labeled by the dialog name.\n */\n navigationAriaLabelledby: {\n type: String,\n required: false,\n default: \"\"\n },\n /**\n * Optionally pass additional classes which will be set on the content wrapper for custom styling\n *\n * @default ''\n */\n contentClasses: {\n type: [String, Array, Object],\n required: false,\n default: \"\"\n },\n /**\n * Optionally pass additional classes which will be set on the dialog itself\n * (the default `class` attribute will be set on the modal wrapper)\n *\n * @default ''\n */\n dialogClasses: {\n type: [String, Array, Object],\n required: false,\n default: \"\"\n }\n },\n emits: [\"closing\", \"update:open\", \"submit\"],\n setup(props, { emit, slots }) {\n const wrapper = ref();\n const { width: dialogWidth } = useElementSize(wrapper, { width: 900 });\n const isNavigationCollapsed = computed(() => dialogWidth.value < 876);\n const hasNavigation = computed(() => slots?.navigation !== void 0);\n const navigationId = GenRandomId();\n const navigationAriaLabelAttr = computed(() => props.navigationAriaLabel || void 0);\n const navigationAriaLabelledbyAttr = computed(() => {\n if (props.navigationAriaLabel) {\n return void 0;\n }\n return props.navigationAriaLabelledby || navigationId;\n });\n const dialogElement = ref();\n const dialogTagName = computed(() => props.isForm && !hasNavigation.value ? \"form\" : \"div\");\n const dialogListeners = computed(() => dialogTagName.value === \"form\" ? {\n /**\n * @param {SubmitEvent} event Form submit event\n */\n submit(event) {\n event.preventDefault();\n emit(\"submit\", event);\n },\n /**\n * @param {Event} event Form submit event\n */\n reset(event) {\n event.preventDefault();\n emit(\"reset\", event);\n }\n } : {});\n const showModal = ref(true);\n function handleButtonClose(button, result) {\n if ((button.type === \"submit\" || button.nativeType === \"submit\") && dialogTagName.value === \"form\" && !dialogElement.value.reportValidity()) {\n return;\n }\n handleClosing(result);\n window.setTimeout(() => handleClosed(), 300);\n }\n function handleClosing(result) {\n showModal.value = false;\n emit(\"closing\", result);\n }\n function handleClosed() {\n showModal.value = true;\n emit(\"update:open\", false);\n }\n const modalProps = computed(() => ({\n noClose: props.noClose || !props.canClose,\n container: props.container === void 0 ? \"body\" : props.container,\n // we do not pass the name as we already have the name as the headline\n // name: props.name,\n // But we need to set the correct label id so the dialog is labelled\n labelId: navigationId,\n size: props.size,\n show: props.open && showModal.value,\n outTransition: props.outTransition,\n closeOnClickOutside: props.closeOnClickOutside,\n additionalTrapElements: props.additionalTrapElements\n }));\n return {\n dialogElement,\n dialogListeners,\n dialogTagName,\n handleButtonClose,\n handleClosing,\n handleClosed,\n hasNavigation,\n navigationId,\n navigationAriaLabelAttr,\n navigationAriaLabelledbyAttr,\n isNavigationCollapsed,\n modalProps,\n wrapper\n };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _vm.open ? _c(\"NcModal\", _vm._b({ staticClass: \"dialog__modal\", attrs: { \"enable-slideshow\": false, \"enable-swipe\": false }, on: { \"close\": _vm.handleClosed, \"update:show\": function($event) {\n return _vm.handleClosing();\n } } }, \"NcModal\", _vm.modalProps, false), [_c(\"h2\", { staticClass: \"dialog__name\", attrs: { \"id\": _vm.navigationId }, domProps: { \"textContent\": _vm._s(_vm.name) } }), _c(_vm.dialogTagName, _vm._g({ ref: \"dialogElement\", tag: \"component\", staticClass: \"dialog\", class: _vm.dialogClasses }, _vm.dialogListeners), [_c(\"div\", { ref: \"wrapper\", staticClass: \"dialog__wrapper\", class: { \"dialog__wrapper--collapsed\": _vm.isNavigationCollapsed } }, [_vm.hasNavigation ? _c(\"nav\", { staticClass: \"dialog__navigation\", class: _vm.navigationClasses, attrs: { \"aria-label\": _vm.navigationAriaLabelAttr, \"aria-labelledby\": _vm.navigationAriaLabelledbyAttr } }, [_vm._t(\"navigation\", null, { \"isCollapsed\": _vm.isNavigationCollapsed })], 2) : _vm._e(), _c(\"div\", { staticClass: \"dialog__content\", class: _vm.contentClasses }, [_vm._t(\"default\", function() {\n return [_c(\"p\", { staticClass: \"dialog__text\" }, [_vm._v(\" \" + _vm._s(_vm.message) + \" \")])];\n })], 2)]), _c(\"div\", { staticClass: \"dialog__actions\" }, [_vm._t(\"actions\", function() {\n return _vm._l(_vm.buttons, function(button, idx) {\n return _c(\"NcDialogButton\", _vm._b({ key: idx, on: { \"click\": (_, result) => _vm.handleButtonClose(button, result) } }, \"NcDialogButton\", button, false));\n });\n })], 2)])], 1) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"66c29e13\"\n);\nconst NcDialog = __component__.exports;\nexport {\n NcDialog as N\n};\n//# sourceMappingURL=NcDialog-DDuqQeT-.mjs.map\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n\tdata() {\n\t\treturn {\n\t\t\t/** Current menu entry that has focus */\n\t\t\tactiveMenuEntry: 0,\n\t\t\tentries: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tvisibleEntries() {\n\t\t\treturn this.entries\n\t\t},\n\t},\n\twatch: {\n\t\tvisibleEntries() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tif (\n\t\t\t\t\tthis.activeMenuEntry > this.visibleEntries.length\n\t\t\t\t\t|| this.visibleEntries[this.activeMenuEntry]?.disabled\n\t\t\t\t) {\n\t\t\t\t\tthis.setNextMenuEntry()\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Update the disabled state of an menu entry\n\t\t * @param {string} menuKey The key of the menu entry that changed\n\t\t * @param {boolean} state The new disabled state\n\t\t */\n\t\tdisableMenuEntry(menuKey, state) {\n\t\t\tconst index = this.visibleEntries.findIndex(({ key }) => key === menuKey)\n\t\t\tthis.visibleEntries[index].disabled = state\n\t\t\tif (state === false && this.activeMenuEntry === index) {\n\t\t\t\tthis.$nextTick(() => this.setNextMenuEntry())\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Set the active menu entry to the next one (or reset to first)\n\t\t */\n\t\tsetNextMenuEntry() {\n\t\t\t// refs is not reactive so we must check this every time\n\t\t\tconst modulo =\n\t\t\t\tthis.visibleEntries.length + (this.$refs.remainingEntries ? 1 : 0)\n\n\t\t\tdo {\n\t\t\t\tthis.activeMenuEntry = (this.activeMenuEntry + 1) % modulo\n\t\t\t} while (\n\t\t\t\tthis.activeMenuEntry < this.visibleEntries.length\n\t\t\t\t&& this.visibleEntries[this.activeMenuEntry].disabled\n\t\t\t)\n\t\t},\n\t\t/**\n\t\t * Set the active menu entry to the previous one (or reset to last entry (remaining actions))\n\t\t */\n\t\tsetPreviousMenuEntry() {\n\t\t\t// refs is not reactive so we must check this every time\n\t\t\tconst modulo =\n\t\t\t\tthis.visibleEntries.length + (this.$refs.remainingEntries ? 1 : 0)\n\n\t\t\tdo {\n\t\t\t\tconst index = this.activeMenuEntry - 1\n\t\t\t\tthis.activeMenuEntry = ((index % modulo) + modulo) % modulo // needed as JS does not work with negative modulos\n\t\t\t} while (\n\t\t\t\tthis.activeMenuEntry < this.visibleEntries.length\n\t\t\t\t&& this.visibleEntries[this.activeMenuEntry].disabled\n\t\t\t)\n\t\t},\n\n\t\t/**\n\t\t * Handle navigation in toolbar\n\t\t * @param {KeyboardEvent} event The keyup event\n\t\t */\n\t\thandleToolbarNavigation(event) {\n\t\t\tif (event.key === 'ArrowRight') {\n\t\t\t\tthis.setNextMenuEntry()\n\t\t\t} else if (event.key === 'ArrowLeft') {\n\t\t\t\tthis.setPreviousMenuEntry()\n\t\t\t}\n\n\t\t\tif (this.activeMenuEntry === this.visibleEntries.length) {\n\t\t\t\tthis.$refs.remainingEntries?.focusButton?.()\n\t\t\t} else {\n\t\t\t\t// The ref is in no order (ordered by the time they needed to mount), so we need to order them like they are shown on the menu\n\t\t\t\tconst entries = [...this.$refs.menuEntries].sort(\n\t\t\t\t\t(a, b) =>\n\t\t\t\t\t\tthis.visibleEntries.findIndex(\n\t\t\t\t\t\t\t({ key }) => key === a.$vnode.data.key,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t- this.visibleEntries.findIndex(\n\t\t\t\t\t\t\t({ key }) => key === b.$vnode.data.key,\n\t\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\tentries[this.activeMenuEntry].focusButton()\n\t\t\t}\n\t\t},\n\t},\n})\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/*\n * Handle the state of the full editor width toggle.\n *\n * If the css variable `--text-editor-max-width` is already set\n * for `document.body` it will be left as is and\n * no toggle will be shown in the text ui.\n * This way the collectives app handles it's per document width setting.\n *\n * Otherwise this composable handles the `is_full_width_editor` initial state.\n * It sets the css variable on the document accordingly.\n * The state is stored in a singleton to preserve and reuse it on the next mount.\n * It is persisted in the user settings across page reloads.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { emit, subscribe } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport {\n\tcomputed,\n\tinject,\n\tprovide,\n\treadonly,\n\tref,\n\twatch,\n\ttype InjectionKey,\n\ttype Ref,\n} from 'vue'\n\n// Keep the current value around when leaving the editor and reopening\nlet valueSingleton = loadState('text', 'is_full_width_editor', false)\n\n// This is either the reactive value of the editor width toggle\n// or null if the width has already been set outside of text.\nexport const editorWidthKey = Symbol('text:editor:width') as InjectionKey<\n\tReadonly | null>\n>\n\n/**\n * Detect if other apps (such as collectives) already configured texts max width.\n *\n * Check if document.body has a css variable `--text-editor-max-width` (either set or inherited).\n * Get the value set by text in the documentElement style.\n * If both values are set and match we assume text is handling the width.\n */\nfunction maxWidthSetOutsideOfText() {\n\tconst alreadySet = getComputedStyle(document.body).getPropertyValue(\n\t\t'--text-editor-max-width',\n\t)\n\tconst setByText = document.documentElement.style.getPropertyValue(\n\t\t'--text-editor-max-width',\n\t)\n\treturn Boolean(alreadySet) && alreadySet !== setByText\n}\n\nexport const provideEditorWidth = () => {\n\t// keep style that is already set - for example by collectives\n\tif (maxWidthSetOutsideOfText()) {\n\t\tprovide(editorWidthKey, null)\n\t\treturn { applyEditorWidth: () => {} }\n\t}\n\tconst isFullWidth = ref(valueSingleton)\n\tprovide(editorWidthKey, readonly(isFullWidth))\n\tsubscribe('text:editor:full-width', ({ value }) => {\n\t\tvalueSingleton = value\n\t\tisFullWidth.value = value\n\t})\n\tconst width = computed(() => (isFullWidth.value ? '100%' : '80ch'))\n\tconst applyEditorWidth = () => {\n\t\tdocument.documentElement.style.setProperty(\n\t\t\t'--text-editor-max-width',\n\t\t\twidth.value,\n\t\t)\n\t}\n\twatch(width, applyEditorWidth)\n\treturn { applyEditorWidth }\n}\n\nexport const useEditorWidth = () => {\n\t// This will be null if the width is already configured outside of text.\n\tconst isFullWidth = inject(editorWidthKey)\n\tif (isFullWidth === null) {\n\t\treturn { canToggleWidth: false }\n\t}\n\tconst setFullWidth = (checked: boolean) => {\n\t\taxios.post(generateUrl('/apps/text/settings'), {\n\t\t\tkey: 'is_full_width_editor',\n\t\t\tvalue: checked ? '1' : '0',\n\t\t})\n\t\temit('text:editor:full-width', { value: checked })\n\t}\n\treturn { canToggleWidth: true, isFullWidth, setFullWidth }\n}\n","import '../assets/NcActionCheckbox-C8I_k6NA.css';\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-DqVa7c7G.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcActionCheckbox\",\n mixins: [ActionGlobalMixin],\n inject: {\n isInSemanticMenu: {\n from: \"NcActions:isSemanticMenu\",\n default: false\n }\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n checked: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: void 0\n },\n /**\n * checked state of the the checkbox element\n */\n modelValue: {\n type: Boolean,\n default: false\n },\n /**\n * value of the checkbox input\n */\n value: {\n type: [String, Number],\n default: \"\"\n },\n /**\n * disabled state of the checkbox element\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"change\",\n \"check\",\n \"uncheck\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:checked\",\n /**\n * Emitted when the checkbox state is changed\n *\n * @type {boolean}\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"checked\", \"update:checked\");\n return {\n model\n };\n },\n computed: {\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n },\n /**\n * aria-checked attribute for role=\"menuitemcheckbox\"\n *\n * @return {'true'|'false'|undefined} aria-checked value if needed\n */\n ariaChecked() {\n if (this.isInSemanticMenu) {\n return this.model ? \"true\" : \"false\";\n }\n return void 0;\n }\n },\n methods: {\n checkInput() {\n this.$refs.label.click();\n },\n onChange(event) {\n this.model = this.$refs.checkbox.checked;\n this.$emit(\"change\", event);\n if (this.$refs.checkbox.checked) {\n this.$emit(\"check\");\n } else {\n this.$emit(\"uncheck\");\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"action\", class: { \"action--disabled\": _vm.disabled }, attrs: { \"role\": _vm.isInSemanticMenu && \"presentation\" } }, [_c(\"span\", { staticClass: \"action-checkbox\", attrs: { \"role\": _vm.isInSemanticMenu && \"menuitemcheckbox\", \"aria-checked\": _vm.ariaChecked } }, [_c(\"input\", { ref: \"checkbox\", staticClass: \"checkbox action-checkbox__checkbox\", class: { focusable: _vm.isFocusable }, attrs: { \"id\": _vm.id, \"disabled\": _vm.disabled, \"type\": \"checkbox\" }, domProps: { \"checked\": _vm.model, \"value\": _vm.value }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n return _vm.checkInput.apply(null, arguments);\n }, \"change\": _vm.onChange } }), _c(\"label\", { ref: \"label\", staticClass: \"action-checkbox__label\", attrs: { \"for\": _vm.id } }, [_vm._v(_vm._s(_vm.text))]), _vm._e()], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"73edcb0b\"\n);\nconst NcActionCheckbox = __component__.exports;\nexport {\n NcActionCheckbox as N\n};\n//# sourceMappingURL=NcActionCheckbox-D9aQuEYw.mjs.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n/* eslint-disable max-depth, max-statements, complexity, max-lines-per-function */\nvar SLASH = 47;\nvar DOT = 46;\nvar assertPath = function assertPath(path) {\n var t = _typeof(path);\n if (t !== 'string') {\n throw new TypeError(\"Expected a string, got a \".concat(t));\n }\n};\n\n// this function is directly from node source\nvar posixNormalize = function posixNormalize(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length) {\n code = path.charCodeAt(i);\n } else if (code === SLASH) {\n break;\n } else {\n code = SLASH;\n }\n if (code === SLASH) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== DOT || res.charCodeAt(res.length - 2) !== DOT) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0) {\n res += '/..';\n } else {\n res = '..';\n }\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) {\n res += '/' + path.slice(lastSlash + 1, i);\n } else {\n res = path.slice(lastSlash + 1, i);\n }\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === DOT && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n};\nvar decode = function decode(s) {\n try {\n return decodeURIComponent(s);\n } catch (_unused) {\n return s;\n }\n};\nvar normalize = function normalize(p) {\n assertPath(p);\n var path = p;\n if (path.length === 0) {\n return '.';\n }\n var isAbsolute = path.charCodeAt(0) === SLASH;\n var trailingSeparator = path.charCodeAt(path.length - 1) === SLASH;\n path = decode(path);\n path = posixNormalize(path, !isAbsolute);\n if (path.length === 0 && !isAbsolute) {\n path = '.';\n }\n if (path.length > 0 && trailingSeparator) {\n path += '/';\n }\n if (isAbsolute) {\n return '/' + path;\n }\n return path;\n};\nvar _default = normalize;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport pathNormalize from 'path-normalize'\n\nexport default class AttachmentResolver {\n\t#session\n\t#user\n\t#shareToken\n\t#currentDirectory\n\t#documentId\n\t#initAttachmentListPromise\n\t#attachmentList = []\n\n\tconstructor({ session, user, shareToken, currentDirectory, fileId }) {\n\t\tthis.#session = session\n\t\tthis.#user = user\n\t\tthis.#shareToken = shareToken\n\t\tthis.#currentDirectory = currentDirectory\n\t\tthis.#documentId = fileId ?? session.documentId\n\t\tthis.#initAttachmentListPromise = this.#updateAttachmentList()\n\t}\n\n\tasync #updateAttachmentList() {\n\t\tconst response = await axios.post(generateUrl('/apps/text/attachments'), {\n\t\t\tdocumentId: this.#session?.documentId ?? this.#documentId,\n\t\t\tsessionId: this.#session?.id,\n\t\t\tsessionToken: this.#session?.token,\n\t\t\tshareToken: this.#shareToken,\n\t\t})\n\t\tthis.#attachmentList = response.data\n\t}\n\n\t#findAttachment(fileName) {\n\t\treturn this.#attachmentList.find((a) => a.name === fileName)\n\t}\n\n\t/*\n\t * Resolve a given image/attachment src.\n\t * @param { string } src - the original src in the node.\n\t * @param { bool } fallback - fetch again attachmentsList if not found | defaul = true\n\t */\n\tasync resolve(src, fallback = true) {\n\t\tlet attachment\n\n\t\t// Native attachment\n\t\tconst directoryRegexp = /^\\.attachments\\.\\d+\\//\n\t\tif (src.match(directoryRegexp)) {\n\t\t\tconst imageFileName = decodeURIComponent(\n\t\t\t\tsrc.replace(directoryRegexp, '').split('?')[0],\n\t\t\t)\n\n\t\t\t// Wait until attachment list got fetched (initialized by constructor)\n\t\t\tawait this.#initAttachmentListPromise\n\t\t\tattachment = this.#findAttachment(imageFileName)\n\n\t\t\tif (fallback && !attachment) {\n\t\t\t\t// Update attachments list. Needed if attachments gets added to the session\n\t\t\t\tawait this.#updateAttachmentList()\n\t\t\t\tattachment = this.#findAttachment(imageFileName)\n\t\t\t}\n\n\t\t\tif (attachment) {\n\t\t\t\treturn attachment\n\t\t\t}\n\t\t}\n\n\t\t// Direct URLs\n\t\tif (isDirectUrl(src)) {\n\t\t\treturn {\n\t\t\t\tisImage: true,\n\t\t\t\tname: this.#name(src),\n\t\t\t\tpreviewUrl: src,\n\t\t\t\tfullUrl: src,\n\t\t\t}\n\t\t}\n\n\t\t// Fallback: Return DAV url (e.g. for relative paths to images)\n\t\treturn {\n\t\t\tisImage: true,\n\t\t\tname: this.#name(src),\n\t\t\tpreviewUrl: this.#davUrl(src),\n\t\t\tfullUrl: this.#davUrl(src),\n\t\t}\n\t}\n\n\t#name(src) {\n\t\treturn src.split('/').pop()\n\t}\n\n\t#davUrl(src) {\n\t\tif (this.#user) {\n\t\t\tconst uid = this.#user.uid\n\t\t\tconst encoded = this.#filePath(src)\n\t\t\t\t.split('/')\n\t\t\t\t.map(encodeURIComponent)\n\t\t\t\t.join('/')\n\t\t\treturn generateRemoteUrl(`dav/files/${uid}${encoded}`)\n\t\t}\n\n\t\tconst path = this.#filePath(src).split('/')\n\t\tconst basename = path.pop()\n\t\tconst dirname = path.join('/')\n\n\t\treturn generateUrl('/s/{token}/download?path={dirname}&files={basename}', {\n\t\t\ttoken: this.#shareToken,\n\t\t\tbasename,\n\t\t\tdirname,\n\t\t})\n\t}\n\n\t/**\n\t * Return the relativePath to a file specified in the url\n\t *\n\t * @param {string} src - url to extract path from\n\t */\n\t#relativePath(src) {\n\t\treturn decodeURI(src.split('?')[0])\n\t}\n\n\t#filePath(src) {\n\t\tconst f = [this.#currentDirectory, this.#relativePath(src)].join('/')\n\n\t\treturn pathNormalize(f)\n\t}\n}\n\n/**\n * Check if src is a direct URL.\n * Full URLs only work for images on the same Nextcloud instance (due to CORS restrictions).\n *\n * @param {string} src - the url to check\n */\nfunction isDirectUrl(src) {\n\treturn (\n\t\tsrc.startsWith('http://')\n\t\t|| src.startsWith('https://')\n\t\t|| src.startsWith('data:')\n\t)\n}\n","import { Extension } from '@tiptap/core';\nimport { SelectionRange, Selection, Plugin, PluginKey } from '@tiptap/pm/state';\nimport { DecorationSet, Decoration } from '@tiptap/pm/view';\nimport { NodeRange as NodeRange$1 } from '@tiptap/pm/model';\n\nfunction getNodeRangeDecorations(ranges) {\n if (!ranges.length) {\n return DecorationSet.empty;\n }\n const decorations = [];\n const doc = ranges[0].$from.node(0);\n ranges.forEach(range => {\n const pos = range.$from.pos;\n const node = range.$from.nodeAfter;\n if (!node) {\n return;\n }\n decorations.push(Decoration.node(pos, pos + node.nodeSize, {\n class: 'ProseMirror-selectednoderange',\n }));\n });\n return DecorationSet.create(doc, decorations);\n}\n\nfunction getSelectionRanges($from, $to, depth) {\n const ranges = [];\n const doc = $from.node(0);\n // eslint-disable-next-line\n depth = (typeof depth === 'number' && depth >= 0)\n ? depth\n : $from.sameParent($to)\n ? Math.max(0, $from.sharedDepth($to.pos) - 1)\n : $from.sharedDepth($to.pos);\n const nodeRange = new NodeRange$1($from, $to, depth);\n const offset = nodeRange.depth === 0\n ? 0\n : doc.resolve(nodeRange.start).posAtIndex(0);\n nodeRange.parent.forEach((node, pos) => {\n const from = offset + pos;\n const to = from + node.nodeSize;\n if (from < nodeRange.start || from >= nodeRange.end) {\n return;\n }\n const selectionRange = new SelectionRange(doc.resolve(from), doc.resolve(to));\n ranges.push(selectionRange);\n });\n return ranges;\n}\n\nclass NodeRangeBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new NodeRangeBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n const $anchor = doc.resolve(this.anchor);\n const $head = doc.resolve(this.head);\n return new NodeRangeSelection($anchor, $head);\n }\n}\n\nclass NodeRangeSelection extends Selection {\n constructor($anchor, $head, depth, bias = 1) {\n // if there is only a cursor we can’t calculate a direction of the selection\n // that’s why we adjust the head position by 1 in the desired direction\n const { doc } = $anchor;\n const isCursor = $anchor === $head;\n const isCursorAtEnd = $anchor.pos === doc.content.size && $head.pos === doc.content.size;\n const $correctedHead = isCursor && !isCursorAtEnd\n ? doc.resolve($head.pos + (bias > 0 ? 1 : -1))\n : $head;\n const $correctedAnchor = isCursor && isCursorAtEnd\n ? doc.resolve($anchor.pos - (bias > 0 ? 1 : -1))\n : $anchor;\n const ranges = getSelectionRanges($correctedAnchor.min($correctedHead), $correctedAnchor.max($correctedHead), depth);\n // get the smallest range start position\n // this will become the $anchor\n const $rangeFrom = ($correctedHead.pos >= $anchor.pos)\n ? ranges[0].$from\n : ranges[ranges.length - 1].$to;\n // get the biggest range end position\n // this will become the $head\n const $rangeTo = ($correctedHead.pos >= $anchor.pos)\n ? ranges[ranges.length - 1].$to\n : ranges[0].$from;\n super($rangeFrom, $rangeTo, ranges);\n this.depth = depth;\n }\n // we can safely ignore this TypeScript error: https://github.com/Microsoft/TypeScript/issues/338\n // @ts-ignore\n get $to() {\n return this.ranges[this.ranges.length - 1].$to;\n }\n eq(other) {\n return other instanceof NodeRangeSelection\n && other.$from.pos === this.$from.pos\n && other.$to.pos === this.$to.pos;\n }\n map(doc, mapping) {\n const $anchor = doc.resolve(mapping.map(this.anchor));\n const $head = doc.resolve(mapping.map(this.head));\n return new NodeRangeSelection($anchor, $head);\n }\n toJSON() {\n return {\n type: 'nodeRange',\n anchor: this.anchor,\n head: this.head,\n };\n }\n get isForwards() {\n return this.head >= this.anchor;\n }\n get isBackwards() {\n return !this.isForwards;\n }\n extendBackwards() {\n const { doc } = this.$from;\n if (this.isForwards && this.ranges.length > 1) {\n const ranges = this.ranges.slice(0, -1);\n const $from = ranges[0].$from;\n const $to = ranges[ranges.length - 1].$to;\n return new NodeRangeSelection($from, $to, this.depth);\n }\n const firstRange = this.ranges[0];\n const $from = doc.resolve(Math.max(0, firstRange.$from.pos - 1));\n return new NodeRangeSelection(this.$anchor, $from, this.depth);\n }\n extendForwards() {\n const { doc } = this.$from;\n if (this.isBackwards && this.ranges.length > 1) {\n const ranges = this.ranges.slice(1);\n const $from = ranges[0].$from;\n const $to = ranges[ranges.length - 1].$to;\n return new NodeRangeSelection($to, $from, this.depth);\n }\n const lastRange = this.ranges[this.ranges.length - 1];\n const $to = doc.resolve(Math.min(doc.content.size, lastRange.$to.pos + 1));\n return new NodeRangeSelection(this.$anchor, $to, this.depth);\n }\n static fromJSON(doc, json) {\n return new NodeRangeSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n static create(doc, anchor, head, depth, bias = 1) {\n return new this(doc.resolve(anchor), doc.resolve(head), depth, bias);\n }\n getBookmark() {\n return new NodeRangeBookmark(this.anchor, this.head);\n }\n}\nNodeRangeSelection.prototype.visible = false;\n\nfunction isNodeRangeSelection(value) {\n return value instanceof NodeRangeSelection;\n}\n\nconst NodeRange = Extension.create({\n name: 'nodeRange',\n addOptions() {\n return {\n depth: undefined,\n key: 'Mod',\n };\n },\n addKeyboardShortcuts() {\n return {\n // extend NodeRangeSelection upwards\n 'Shift-ArrowUp': ({ editor }) => {\n const { depth } = this.options;\n const { view, state } = editor;\n const { doc, selection, tr } = state;\n const { anchor, head } = selection;\n if (!isNodeRangeSelection(selection)) {\n const nodeRangeSelection = NodeRangeSelection.create(doc, anchor, head, depth, -1);\n tr.setSelection(nodeRangeSelection);\n view.dispatch(tr);\n return true;\n }\n const nodeRangeSelection = selection.extendBackwards();\n tr.setSelection(nodeRangeSelection);\n view.dispatch(tr);\n return true;\n },\n // extend NodeRangeSelection downwards\n 'Shift-ArrowDown': ({ editor }) => {\n const { depth } = this.options;\n const { view, state } = editor;\n const { doc, selection, tr } = state;\n const { anchor, head } = selection;\n if (!isNodeRangeSelection(selection)) {\n const nodeRangeSelection = NodeRangeSelection.create(doc, anchor, head, depth);\n tr.setSelection(nodeRangeSelection);\n view.dispatch(tr);\n return true;\n }\n const nodeRangeSelection = selection.extendForwards();\n tr.setSelection(nodeRangeSelection);\n view.dispatch(tr);\n return true;\n },\n // add `NodeRangeSelection` to all nodes\n 'Mod-a': ({ editor }) => {\n const { depth } = this.options;\n const { view, state } = editor;\n const { doc, tr } = state;\n const nodeRangeSelection = NodeRangeSelection.create(doc, 0, doc.content.size, depth);\n tr.setSelection(nodeRangeSelection);\n view.dispatch(tr);\n return true;\n },\n };\n },\n onSelectionUpdate() {\n const { selection } = this.editor.state;\n if (isNodeRangeSelection(selection)) {\n this.editor.view.dom.classList.add('ProseMirror-noderangeselection');\n }\n },\n addProseMirrorPlugins() {\n let hideTextSelection = false;\n let activeMouseSelection = false;\n return [\n new Plugin({\n key: new PluginKey('nodeRange'),\n props: {\n attributes: () => {\n if (hideTextSelection) {\n return {\n class: 'ProseMirror-noderangeselection',\n };\n }\n return { class: '' };\n },\n handleDOMEvents: {\n mousedown: (view, event) => {\n const { key } = this.options;\n const isMac = /Mac/.test(navigator.platform);\n const isShift = !!event.shiftKey;\n const isControl = !!event.ctrlKey;\n const isAlt = !!event.altKey;\n const isMeta = !!event.metaKey;\n const isMod = isMac\n ? isMeta\n : isControl;\n if (key === null\n || key === undefined\n || (key === 'Shift' && isShift)\n || (key === 'Control' && isControl)\n || (key === 'Alt' && isAlt)\n || (key === 'Meta' && isMeta)\n || (key === 'Mod' && isMod)) {\n activeMouseSelection = true;\n }\n if (!activeMouseSelection) {\n return false;\n }\n document.addEventListener('mouseup', () => {\n activeMouseSelection = false;\n const { state } = view;\n const { doc, selection, tr } = state;\n const { $anchor, $head } = selection;\n if ($anchor.sameParent($head)) {\n return;\n }\n const nodeRangeSelection = NodeRangeSelection.create(doc, $anchor.pos, $head.pos, this.options.depth);\n tr.setSelection(nodeRangeSelection);\n view.dispatch(tr);\n }, { once: true });\n return false;\n },\n },\n // when selecting some text we want to render some decorations\n // to preview a `NodeRangeSelection`\n decorations: state => {\n const { selection } = state;\n const isNodeRange = isNodeRangeSelection(selection);\n hideTextSelection = false;\n if (!activeMouseSelection) {\n if (!isNodeRange) {\n return null;\n }\n hideTextSelection = true;\n return getNodeRangeDecorations(selection.ranges);\n }\n const { $from, $to } = selection;\n // selection is probably in the same node like a paragraph\n // so we don’t render decorations and show\n // a simple text selection instead\n if (!isNodeRange && $from.sameParent($to)) {\n return null;\n }\n // try to calculate some node ranges\n const nodeRanges = getSelectionRanges($from, $to, this.options.depth);\n if (!nodeRanges.length) {\n return null;\n }\n hideTextSelection = true;\n return getNodeRangeDecorations(nodeRanges);\n },\n },\n }),\n ];\n },\n});\n\nexport { NodeRange, NodeRangeSelection, NodeRange as default, getNodeRangeDecorations, getSelectionRanges, isNodeRangeSelection };\n//# sourceMappingURL=index.js.map\n","import { Extension } from '@tiptap/core';\nimport { isChangeOrigin } from '@tiptap/extension-collaboration';\nimport { PluginKey, Plugin } from '@tiptap/pm/state';\nimport tippy from 'tippy.js';\nimport { ySyncPluginKey, absolutePositionToRelativePosition, relativePositionToAbsolutePosition } from 'y-prosemirror';\nimport { getSelectionRanges, NodeRangeSelection } from '@tiptap/extension-node-range';\n\nfunction getCSSText(element) {\n let value = '';\n const style = getComputedStyle(element);\n for (let i = 0; i < style.length; i += 1) {\n value += `${style[i]}:${style.getPropertyValue(style[i])};`;\n }\n return value;\n}\nfunction cloneElement(node) {\n const clonedNode = node.cloneNode(true);\n const sourceElements = [node, ...Array.from(node.getElementsByTagName('*'))];\n const targetElements = [clonedNode, ...Array.from(clonedNode.getElementsByTagName('*'))];\n sourceElements.forEach((sourceElement, index) => {\n targetElements[index].style.cssText = getCSSText(sourceElement);\n });\n return clonedNode;\n}\n\nconst findElementNextToCoords = (options) => {\n const { x, y, direction, editor, } = options;\n let resultElement = null;\n let resultNode = null;\n let pos = null;\n let currentX = x;\n while (resultNode === null && currentX < window.innerWidth && currentX > 0) {\n const allElements = document.elementsFromPoint(currentX, y);\n const prosemirrorIndex = allElements.findIndex(element => element.classList.contains('ProseMirror'));\n const filteredElements = allElements.slice(0, prosemirrorIndex);\n if (filteredElements.length > 0) {\n const target = filteredElements[0];\n resultElement = target;\n pos = editor.view.posAtDOM(target, 0);\n if (pos >= 0) {\n resultNode = editor.state.doc.nodeAt(Math.max(pos - 1, 0));\n if (resultNode === null || resultNode === void 0 ? void 0 : resultNode.isText) {\n resultNode = editor.state.doc.nodeAt(Math.max(pos - 1, 0));\n }\n if (!resultNode) {\n resultNode = editor.state.doc.nodeAt(Math.max(pos, 0));\n }\n break;\n }\n }\n if (direction === 'left') {\n currentX -= 1;\n }\n else {\n currentX += 1;\n }\n }\n return { resultElement, resultNode, pos: pos !== null && pos !== void 0 ? pos : null };\n};\n\nfunction getComputedStyle$1(node, property) {\n const style = window.getComputedStyle(node);\n return style[property];\n}\n\nfunction minMax(value = 0, min = 0, max = 0) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction getInnerCoords(view, x, y) {\n const paddingLeft = parseInt(getComputedStyle$1(view.dom, 'paddingLeft'), 10);\n const paddingRight = parseInt(getComputedStyle$1(view.dom, 'paddingRight'), 10);\n const borderLeft = parseInt(getComputedStyle$1(view.dom, 'borderLeftWidth'), 10);\n const borderRight = parseInt(getComputedStyle$1(view.dom, 'borderLeftWidth'), 10);\n const bounds = view.dom.getBoundingClientRect();\n const coords = {\n left: minMax(x, bounds.left + paddingLeft + borderLeft, bounds.right - paddingRight - borderRight),\n top: y,\n };\n return coords;\n}\n\nfunction removeNode(node) {\n var _a;\n (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(node);\n}\n\nfunction getDragHandleRanges(event, editor) {\n const { doc } = editor.view.state;\n const result = findElementNextToCoords({\n editor, x: event.clientX, y: event.clientY, direction: 'right',\n });\n if (!result.resultNode || result.pos === null) {\n return [];\n }\n const x = event.clientX;\n // @ts-ignore\n const coords = getInnerCoords(editor.view, x, event.clientY);\n const posAtCoords = editor.view.posAtCoords(coords);\n if (!posAtCoords) {\n return [];\n }\n const { pos } = posAtCoords;\n const nodeAt = doc.resolve(pos).parent;\n if (!nodeAt) {\n return [];\n }\n const $from = doc.resolve(result.pos);\n const $to = doc.resolve(result.pos + 1);\n return getSelectionRanges($from, $to, 0);\n}\nfunction dragHandler(event, editor) {\n const { view } = editor;\n if (!event.dataTransfer) {\n return;\n }\n const { empty, $from, $to } = view.state.selection;\n const dragHandleRanges = getDragHandleRanges(event, editor);\n const selectionRanges = getSelectionRanges($from, $to, 0);\n const isDragHandleWithinSelection = selectionRanges.some(range => {\n return dragHandleRanges.find(dragHandleRange => {\n return dragHandleRange.$from === range.$from\n && dragHandleRange.$to === range.$to;\n });\n });\n const ranges = empty || !isDragHandleWithinSelection\n ? dragHandleRanges\n : selectionRanges;\n if (!ranges.length) {\n return;\n }\n const { tr } = view.state;\n const wrapper = document.createElement('div');\n const from = ranges[0].$from.pos;\n const to = ranges[ranges.length - 1].$to.pos;\n const selection = NodeRangeSelection.create(view.state.doc, from, to);\n const slice = selection.content();\n ranges.forEach(range => {\n const element = view.nodeDOM(range.$from.pos);\n const clonedElement = cloneElement(element);\n wrapper.append(clonedElement);\n });\n wrapper.style.position = 'absolute';\n wrapper.style.top = '-10000px';\n document.body.append(wrapper);\n event.dataTransfer.clearData();\n event.dataTransfer.setDragImage(wrapper, 0, 0);\n // tell ProseMirror the dragged content\n view.dragging = { slice, move: true };\n tr.setSelection(selection);\n view.dispatch(tr);\n // clean up\n document.addEventListener('drop', () => removeNode(wrapper), { once: true });\n}\n\nconst getOuterNodePos = (doc, pos) => {\n const resolvedPos = doc.resolve(pos);\n const { depth } = resolvedPos;\n if (depth === 0) {\n return pos;\n }\n const a = resolvedPos.pos - resolvedPos.parentOffset;\n return a - 1;\n};\nconst getOuterNode = (doc, pos) => {\n const node = doc.nodeAt(pos);\n const resolvedPos = doc.resolve(pos);\n let { depth } = resolvedPos;\n let parent = node;\n while (depth > 0) {\n const currentNode = resolvedPos.node(depth);\n depth -= 1;\n if (depth === 0) {\n parent = currentNode;\n }\n }\n return parent;\n};\n\nconst getRelativePos = (state, absolutePos) => {\n const ystate = ySyncPluginKey.getState(state);\n if (!ystate) {\n return null;\n }\n return absolutePositionToRelativePosition(absolutePos, ystate.type, ystate.binding.mapping);\n};\nconst getAbsolutePos = (state, relativePos) => {\n const ystate = ySyncPluginKey.getState(state);\n if (!ystate) {\n return -1;\n }\n return (relativePositionToAbsolutePosition(ystate.doc, ystate.type, relativePos, ystate.binding.mapping) || 0);\n};\nconst getOuterDomNode = (view, domNode) => {\n let tmpDomNode = domNode;\n // Traverse to top level node.\n while (tmpDomNode && tmpDomNode.parentNode) {\n if (tmpDomNode.parentNode === view.dom) {\n break;\n }\n tmpDomNode = tmpDomNode.parentNode;\n }\n return tmpDomNode;\n};\nconst dragHandlePluginDefaultKey = new PluginKey('dragHandle');\nconst DragHandlePlugin = ({ pluginKey = dragHandlePluginDefaultKey, element, editor, tippyOptions, onNodeChange, }) => {\n const wrapper = document.createElement('div');\n let popup = null;\n let locked = false;\n let currentNode = null;\n let currentNodePos = -1;\n let currentNodeRelPos;\n element.addEventListener('dragstart', e => {\n // Push this to the end of the event cue\n // Fixes bug where incorrect drag pos is returned if drag handle has position: absolute\n // @ts-ignore\n dragHandler(e, editor);\n setTimeout(() => {\n if (element) {\n element.style.pointerEvents = 'none';\n }\n }, 0);\n });\n element.addEventListener('dragend', () => {\n if (element) {\n element.style.pointerEvents = 'auto';\n }\n });\n return new Plugin({\n key: typeof pluginKey === 'string' ? new PluginKey(pluginKey) : pluginKey,\n state: {\n init() {\n return { locked: false };\n },\n apply(tr, value, oldState, state) {\n const isLocked = tr.getMeta('lockDragHandle');\n const hideDragHandle = tr.getMeta('hideDragHandle');\n if (isLocked !== undefined) {\n locked = isLocked;\n }\n if (hideDragHandle && popup) {\n popup.hide();\n locked = false;\n currentNode = null;\n currentNodePos = -1;\n onNodeChange === null || onNodeChange === void 0 ? void 0 : onNodeChange({ editor, node: null, pos: -1 });\n return value;\n }\n // Something has changed and drag handler is visible…\n if (tr.docChanged && currentNodePos !== -1 && element && popup) {\n // Yjs replaces the entire document on every incoming change and needs a special handling.\n // If change comes from another user …\n if (isChangeOrigin(tr)) {\n // https://discuss.yjs.dev/t/y-prosemirror-mapping-a-single-relative-position-when-doc-changes/851/3\n const newPos = getAbsolutePos(state, currentNodeRelPos);\n if (newPos !== currentNodePos) {\n // Set the new position for our current node.\n currentNodePos = newPos;\n // We will get the outer node with data and position in views update method.\n }\n }\n else {\n // … otherwise use ProseMirror mapping to update the position.\n const newPos = tr.mapping.map(currentNodePos);\n if (newPos !== currentNodePos) {\n // TODO: Remove\n // console.log('Position has changed …', { old: currentNodePos, new: newPos }, tr);\n // Set the new position for our current node.\n currentNodePos = newPos;\n // Memorize relative position to retrieve absolute position in case of collaboration\n currentNodeRelPos = getRelativePos(state, currentNodePos);\n // We will get the outer node with data and position in views update method.\n }\n }\n }\n return value;\n },\n },\n view: view => {\n var _a;\n element.draggable = true;\n element.style.pointerEvents = 'auto';\n (_a = editor.view.dom.parentElement) === null || _a === void 0 ? void 0 : _a.appendChild(wrapper);\n wrapper.appendChild(element);\n wrapper.style.pointerEvents = 'none';\n wrapper.style.position = 'absolute';\n wrapper.style.top = '0';\n wrapper.style.left = '0';\n return {\n update(_, oldState) {\n if (!element) {\n return;\n }\n if (!editor.isEditable) {\n popup === null || popup === void 0 ? void 0 : popup.destroy();\n popup = null;\n return;\n }\n if (!popup) {\n popup = tippy(view.dom, {\n getReferenceClientRect: null,\n interactive: true,\n trigger: 'manual',\n placement: 'left-start',\n hideOnClick: false,\n duration: 100,\n popperOptions: {\n modifiers: [\n { name: 'flip', enabled: false },\n {\n name: 'preventOverflow',\n options: {\n rootBoundary: 'document',\n mainAxis: false,\n },\n },\n ],\n },\n ...tippyOptions,\n appendTo: wrapper,\n content: element,\n });\n }\n // Prevent element being draggend while being open.\n if (locked) {\n element.draggable = false;\n }\n else {\n element.draggable = true;\n }\n // Do not close on updates (e.g. changing padding of a section or collaboration events)\n // popup?.hide();\n // Recalculate popup position if doc has changend and drag handler is visible.\n if (view.state.doc.eq(oldState.doc) || currentNodePos === -1) {\n return;\n }\n // Get domNode from (new) position.\n let domNode = view.nodeDOM(currentNodePos);\n // Since old element could have been wrapped, we need to find\n // the outer node and take its position and node data.\n domNode = getOuterDomNode(view, domNode);\n // Skip if domNode is editor dom.\n if (domNode === view.dom) {\n return;\n }\n // We only want `Element`.\n if ((domNode === null || domNode === void 0 ? void 0 : domNode.nodeType) !== 1) {\n return;\n }\n const domNodePos = view.posAtDOM(domNode, 0);\n const outerNode = getOuterNode(editor.state.doc, domNodePos);\n const outerNodePos = getOuterNodePos(editor.state.doc, domNodePos); // TODO: needed?\n currentNode = outerNode;\n currentNodePos = outerNodePos;\n // Memorize relative position to retrieve absolute position in case of collaboration\n currentNodeRelPos = getRelativePos(view.state, currentNodePos);\n // TODO: Remove\n // console.log('View has updated: callback with new data and repositioning of popup …', {\n // domNode,\n // currentNodePos,\n // currentNode,\n // rect: (domNode as Element).getBoundingClientRect(),\n // });\n onNodeChange === null || onNodeChange === void 0 ? void 0 : onNodeChange({ editor, node: currentNode, pos: currentNodePos });\n // Update Tippys getReferenceClientRect since domNode might have changed.\n popup.setProps({\n getReferenceClientRect: () => domNode.getBoundingClientRect(),\n });\n },\n // TODO: Kills even on hot reload\n destroy() {\n popup === null || popup === void 0 ? void 0 : popup.destroy();\n if (element) {\n removeNode(wrapper);\n }\n },\n };\n },\n props: {\n handleDOMEvents: {\n keydown(view) {\n if (popup && popup.state.isVisible && view.hasFocus()) {\n popup.hide();\n return false;\n }\n return false;\n },\n mouseleave(_view, e) {\n // Do not hide open popup on mouseleave.\n if (locked) {\n return false;\n }\n // If e.target is not inside the wrapper, hide.\n if (e.target && !wrapper.contains(e.relatedTarget)) {\n popup === null || popup === void 0 ? void 0 : popup.hide();\n currentNode = null;\n currentNodePos = -1;\n onNodeChange === null || onNodeChange === void 0 ? void 0 : onNodeChange({ editor, node: null, pos: -1 });\n }\n return false;\n },\n mousemove(view, e) {\n // Do not continue if popup is not initialized or open.\n if (!element || !popup || locked) {\n return false;\n }\n const nodeData = findElementNextToCoords({\n x: e.clientX,\n y: e.clientY,\n direction: 'right',\n editor,\n });\n // Skip if there is no node next to coords\n if (!nodeData.resultElement) {\n return false;\n }\n let domNode = nodeData.resultElement;\n domNode = getOuterDomNode(view, domNode);\n // Skip if domNode is editor dom.\n if (domNode === view.dom) {\n return false;\n }\n // We only want `Element`.\n if ((domNode === null || domNode === void 0 ? void 0 : domNode.nodeType) !== 1) {\n return false;\n }\n const domNodePos = view.posAtDOM(domNode, 0);\n const outerNode = getOuterNode(editor.state.doc, domNodePos);\n if (outerNode !== currentNode) {\n const outerNodePos = getOuterNodePos(editor.state.doc, domNodePos);\n currentNode = outerNode;\n currentNodePos = outerNodePos;\n // Memorize relative position to retrieve absolute position in case of collaboration\n currentNodeRelPos = getRelativePos(view.state, currentNodePos);\n // TODO: Remove\n // console.log('Mousemove with changed node / node data …', {\n // domNode,\n // currentNodePos,\n // currentNode,\n // rect: (domNode as Element).getBoundingClientRect(),\n // });\n onNodeChange === null || onNodeChange === void 0 ? void 0 : onNodeChange({ editor, node: currentNode, pos: currentNodePos });\n // Set nodes clientRect.\n popup.setProps({\n getReferenceClientRect: () => domNode.getBoundingClientRect(),\n });\n popup.show();\n }\n return false;\n },\n },\n },\n });\n};\n\nconst DragHandle = Extension.create({\n name: 'dragHandle',\n addOptions() {\n return {\n render() {\n const element = document.createElement('div');\n element.classList.add('drag-handle');\n return element;\n },\n tippyOptions: {},\n locked: false,\n onNodeChange: () => { return null; },\n };\n },\n addCommands() {\n return {\n lockDragHandle: () => ({ editor }) => {\n this.options.locked = true;\n return editor.commands.setMeta('lockDragHandle', this.options.locked);\n },\n unlockDragHandle: () => ({ editor }) => {\n this.options.locked = false;\n return editor.commands.setMeta('lockDragHandle', this.options.locked);\n },\n toggleDragHandle: () => ({ editor }) => {\n this.options.locked = !this.options.locked;\n return editor.commands.setMeta('lockDragHandle', this.options.locked);\n },\n };\n },\n addProseMirrorPlugins() {\n const element = this.options.render();\n return [\n DragHandlePlugin({\n tippyOptions: this.options.tippyOptions,\n element,\n editor: this.editor,\n onNodeChange: this.options.onNodeChange,\n }),\n ];\n },\n});\n\nexport { DragHandle, DragHandlePlugin, DragHandle as default, dragHandlePluginDefaultKey };\n//# sourceMappingURL=index.js.map\n","import { dragHandlePluginDefaultKey, DragHandlePlugin } from '@tiptap/extension-drag-handle';\nimport Vue from 'vue';\n\nconst DragHandle = Vue.extend({\n name: 'DragHandleVue',\n props: {\n pluginKey: {\n type: [String, Object],\n default: () => dragHandlePluginDefaultKey,\n },\n editor: {\n type: Object,\n required: true,\n },\n tippyOptions: {\n type: Object,\n default: () => ({}),\n },\n onNodeChange: {\n type: Function,\n default: null,\n },\n class: {\n type: String,\n default: 'drag-handle',\n },\n },\n mounted() {\n const { editor, pluginKey, onNodeChange, tippyOptions, } = this.$props;\n editor.registerPlugin(DragHandlePlugin({\n editor,\n element: this.$el,\n pluginKey,\n tippyOptions,\n onNodeChange,\n }));\n },\n // eslint-disable-next-line vue/no-deprecated-destroyed-lifecycle\n beforeDestroy() {\n const { pluginKey, editor } = this.$props;\n editor.unregisterPlugin(pluginKey);\n },\n render(h) {\n return h('div', {\n class: this.class,\n }, this.$slots.default);\n },\n});\n\nexport { DragHandle, DragHandle as default };\n//# sourceMappingURL=index.js.map\n","\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { unref, type ShallowRef } from 'vue'\nimport type { Connection } from '../composables/useConnection.js'\n\n/**\n * Upload an attachment to the server.\n * @param connection the active connection.\n * @param file upload this file.\n */\nexport function uploadAttachment(\n\tconnection: ShallowRef | Connection,\n\tfile: string | Blob,\n) {\n\tconst {\n\t\tdocumentId,\n\t\tsessionId,\n\t\tsessionToken,\n\t\tshareToken: token,\n\t} = unref(connection)\n\tconst formData = new FormData()\n\tformData.append('file', file)\n\tconst url = generateUrl(`apps/text/attachment/upload?`)\n\treturn axios.post(url, formData, {\n\t\theaders: { 'Content-Type': 'multipart/form-data' },\n\t\tparams: { documentId, sessionId, sessionToken, token },\n\t})\n}\n\n/**\n * Create a new attachment based on the given template\n * @param connection the active connection\n * @param template create the attachment based on this\n * @param template.app app to create the attachment with\n * @param template.extension extension to use\n */\nexport function createAttachment(\n\tconnection: ShallowRef | Connection,\n\ttemplate: { app: string; extension: string },\n) {\n\tconst { documentId, sessionId, sessionToken } = unref(connection)\n\tconst url = generateUrl(`apps/text/attachment/create`)\n\treturn axios.post(url, {\n\t\tdocumentId,\n\t\tsessionId,\n\t\tsessionToken,\n\t\tfileName: `${template.app}${template.extension}`,\n\t})\n}\n\n/**\n * Create a new attachment based on the given template\n * @param connection the active connection\n * @param filePath path to the file on the server.\n */\nexport function insertAttachmentFile(\n\tconnection: ShallowRef | Connection,\n\tfilePath: string,\n) {\n\tconst { documentId, sessionId, sessionToken } = unref(connection)\n\tconst url = generateUrl(`apps/text/attachment/filepath`)\n\treturn axios.post(url, {\n\t\tdocumentId,\n\t\tsessionId,\n\t\tsessionToken,\n\t\tfilePath,\n\t})\n}\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Check if current platform is a mobile device\n *\n * @return {boolean} whether the platform is a mobile device\n */\nexport function isMobilePlatform() {\n\t// Use client hints if already available\n\tif (navigator?.userAgentData?.mobile !== undefined)\n\t\treturn navigator.userAgentData.mobile\n\n\t// use regex to match userAgent (required for Safari and Firefox in 2022)\n\tconst mobileDevices = [\n\t\t/Android/i,\n\t\t/webOS/i,\n\t\t/iPhone/i,\n\t\t/iPad/i,\n\t\t/iPod/i,\n\t\t/playbook/i,\n\t\t/silk/i,\n\t\t/BlackBerry/i,\n\t\t/Windows Phone/i,\n\t]\n\n\treturn mobileDevices.some((regex) => navigator.userAgent.match(regex))\n}\n","\n\n\n\n\n\n\n","\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n\n\n"],"names":["undo","state","yUndoPluginKey","redo","defaultProtectedNodes","defaultDeleteFilter","item","protectedNodes","Item","ContentType","Text","XmlElement","yUndoPlugin","trackedOrigins","undoManager","Plugin","initargs","ystate","ySyncPluginKey","_undoManager","UndoManager","tr","val","oldState","binding","hasUndoOps","hasRedoOps","getRelativeSelection","view","stackItem","Collaboration","Extension","extension","dispatch","_a","fragment","yUndoPluginInstance","originalUndoPluginView","viewRet","hasUndoManSelf","observers","ySyncPluginOptions","ySyncPluginInstance","ySyncPlugin","jsonContent","yXmlFragmentToProsemirrorJSON","error","PluginKey","isChangeOrigin","transaction","_sfc_main","defineComponent","NcDialogButton","NcModal","arr","element","value","props","emit","slots","wrapper","ref","dialogWidth","useElementSize","isNavigationCollapsed","computed","hasNavigation","navigationId","GenRandomId","navigationAriaLabelAttr","navigationAriaLabelledbyAttr","dialogElement","dialogTagName","dialogListeners","event","showModal","handleButtonClose","button","result","handleClosing","handleClosed","modalProps","_sfc_render","_vm","_c","$event","idx","_","_sfc_staticRenderFns","__component__","normalizeComponent","NcDialog","NextcloudVueNcActionButton","BaseActionEntry","actionEntry","NcActions","NcActionSeparator","ActionListItem","useOutlineStateMixin","useMenuIDMixin","editor","children","child","getIsActive","visible","t","debounce","entry","getActionState","NcButton","ToolBarLogic","menuKey","index","key","modulo","a","b","ActionList","ActionSingle","useIsMobileMixin","isRichWorkspace","useEditorFlags","ReadOnlyEditEntries","OutlineEntries","valueSingleton","loadState","editorWidthKey","maxWidthSetOutsideOfText","alreadySet","setByText","provideEditorWidth","provide","isFullWidth","readonly","subscribe","width","applyEditorWidth","watch","useEditorWidth","inject","checked","axios","generateUrl","ActionGlobalMixin","id","useModelMigration","NcActionCheckbox","exports","_typeof","obj","SLASH","DOT","assertPath","path","posixNormalize","allowAboveRoot","res","lastSegmentLength","lastSlash","dots","code","i","lastSlashIndex","decode","s","normalize","p","isAbsolute","trailingSeparator","_default","module","AttachmentResolver","#session","#user","#shareToken","#currentDirectory","#documentId","#initAttachmentListPromise","#attachmentList","session","user","shareToken","currentDirectory","fileId","#updateAttachmentList","response","#findAttachment","fileName","src","fallback","attachment","directoryRegexp","imageFileName","isDirectUrl","#name","#davUrl","uid","encoded","#filePath","generateRemoteUrl","basename","dirname","#relativePath","f","pathNormalize","getNodeRangeDecorations","ranges","DecorationSet","decorations","doc","range","pos","node","Decoration","getSelectionRanges","$from","$to","depth","nodeRange","NodeRange$1","offset","from","to","selectionRange","SelectionRange","NodeRangeBookmark","anchor","head","mapping","$anchor","$head","NodeRangeSelection","Selection","bias","isCursor","isCursorAtEnd","$correctedHead","$correctedAnchor","$rangeFrom","$rangeTo","other","firstRange","lastRange","json","isNodeRangeSelection","selection","nodeRangeSelection","hideTextSelection","activeMouseSelection","isMac","isShift","isControl","isAlt","isMeta","isMod","isNodeRange","nodeRanges","getCSSText","style","cloneElement","clonedNode","sourceElements","targetElements","sourceElement","findElementNextToCoords","options","x","y","direction","resultElement","resultNode","currentX","allElements","prosemirrorIndex","filteredElements","target","getComputedStyle$1","property","minMax","min","max","getInnerCoords","paddingLeft","paddingRight","borderLeft","borderRight","bounds","removeNode","getDragHandleRanges","coords","posAtCoords","dragHandler","empty","dragHandleRanges","selectionRanges","isDragHandleWithinSelection","dragHandleRange","slice","clonedElement","getOuterNodePos","resolvedPos","getOuterNode","parent","currentNode","getRelativePos","absolutePos","absolutePositionToRelativePosition","getAbsolutePos","relativePos","relativePositionToAbsolutePosition","getOuterDomNode","domNode","tmpDomNode","dragHandlePluginDefaultKey","DragHandlePlugin","pluginKey","tippyOptions","onNodeChange","popup","locked","currentNodePos","currentNodeRelPos","e","isLocked","hideDragHandle","newPos","tippy","domNodePos","outerNode","outerNodePos","_view","nodeData","DragHandle","Vue","h","DragVerticalIcon","PlusIcon","useEditor","schema","n","EditorContent","EditorOutline","FloatingButtons","isMobile","useIsMobile","isRichEditor","uploadAttachment","connection","file","documentId","sessionId","sessionToken","token","unref","formData","url","createAttachment","template","insertAttachmentFile","filePath","getDir","useFileMixin","ACTION_ATTACHMENT_PROMPT","ACTION_CHOOSE_LOCAL_ATTACHMENT","ACTION_CREATE_ATTACHMENT","STATE_UPLOADING","useConnection","files","position","uploadPromises","logger","showError","getCurrentUser","href","name","mimeType","c","alt","MediaHandler","useEditorUpload","OUTLINE_STATE","OUTLINE_ACTIONS","READ_ONLY_ACTIONS","enable","unsubscribe","isMobilePlatform","regex","TRANSLATIONS","MODIFIERS","Help","AlphabeticalVariant","NcActionText","countString","storage","wordCount","charCount","words","chars","canToggleWidth","setFullWidth","ActionFormattingHelp","HelpModal","CharacterCount","WidthToggle","MENU_ID","isPublic","menubar","ReadOnlyDoneEntries","MenuEntries","AssistantMenuEntries","remainingEntries","entries","acc","separatorBefore","separatorAfter","DotsHorizontal","clickableArea","spaceToFill","spacePerSlot"],"mappings":"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","x_google_ignoreList":[0,1,2,9,10,12,13,14,15]}