aboutsummaryrefslogtreecommitdiffstats
path: root/dist/6318-6318.js.map
blob: f7690859b35848cdbca7cce662f5154ec7c4a69e (plain)
1
{"version":3,"file":"6318-6318.js?v=6ddf32e38096b6251432","mappings":"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","sources":["webpack:///nextcloud/node_modules/tributejs/dist/tribute.esm.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcRichContenteditable.mjs","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/chunks/referencePickerModal-6bc8f6b9.mjs","webpack:///nextcloud/node_modules/string-length/index.js"],"sourcesContent":["if (!Array.prototype.find) {\n    Array.prototype.find = function(predicate) {\n        if (this === null) {\n            throw new TypeError('Array.prototype.find called on null or undefined')\n        }\n        if (typeof predicate !== 'function') {\n            throw new TypeError('predicate must be a function')\n        }\n        var list = Object(this);\n        var length = list.length >>> 0;\n        var thisArg = arguments[1];\n        var value;\n\n        for (var i = 0; i < length; i++) {\n            value = list[i];\n            if (predicate.call(thisArg, value, i, list)) {\n                return value\n            }\n        }\n        return undefined\n    };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n  function CustomEvent$1(event, params) {\n    params = params || {\n      bubbles: false,\n      cancelable: false,\n      detail: undefined\n    };\n    var evt = document.createEvent('CustomEvent');\n    evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n    return evt\n  }\n\n if (typeof window.Event !== 'undefined') {\n   CustomEvent$1.prototype = window.Event.prototype;\n }\n\n  window.CustomEvent = CustomEvent$1;\n}\n\nclass TributeEvents {\n  constructor(tribute) {\n    this.tribute = tribute;\n    this.tribute.events = this;\n  }\n\n  static keys() {\n    return [\n      {\n        key: 9,\n        value: \"TAB\"\n      },\n      {\n        key: 8,\n        value: \"DELETE\"\n      },\n      {\n        key: 13,\n        value: \"ENTER\"\n      },\n      {\n        key: 27,\n        value: \"ESCAPE\"\n      },\n      {\n        key: 32,\n        value: \"SPACE\"\n      },\n      {\n        key: 38,\n        value: \"UP\"\n      },\n      {\n        key: 40,\n        value: \"DOWN\"\n      }\n    ];\n  }\n\n  bind(element) {\n    element.boundKeydown = this.keydown.bind(element, this);\n    element.boundKeyup = this.keyup.bind(element, this);\n    element.boundInput = this.input.bind(element, this);\n\n    element.addEventListener(\"keydown\", element.boundKeydown, false);\n    element.addEventListener(\"keyup\", element.boundKeyup, false);\n    element.addEventListener(\"input\", element.boundInput, false);\n  }\n\n  unbind(element) {\n    element.removeEventListener(\"keydown\", element.boundKeydown, false);\n    element.removeEventListener(\"keyup\", element.boundKeyup, false);\n    element.removeEventListener(\"input\", element.boundInput, false);\n\n    delete element.boundKeydown;\n    delete element.boundKeyup;\n    delete element.boundInput;\n  }\n\n  keydown(instance, event) {\n    if (instance.shouldDeactivate(event)) {\n      instance.tribute.isActive = false;\n      instance.tribute.hideMenu();\n    }\n\n    let element = this;\n    instance.commandEvent = false;\n\n    TributeEvents.keys().forEach(o => {\n      if (o.key === event.keyCode) {\n        instance.commandEvent = true;\n        instance.callbacks()[o.value.toLowerCase()](event, element);\n      }\n    });\n  }\n\n  input(instance, event) {\n    instance.inputEvent = true;\n    instance.keyup.call(this, instance, event);\n  }\n\n  click(instance, event) {\n    let tribute = instance.tribute;\n    if (tribute.menu && tribute.menu.contains(event.target)) {\n      let li = event.target;\n      event.preventDefault();\n      event.stopPropagation();\n      while (li.nodeName.toLowerCase() !== \"li\") {\n        li = li.parentNode;\n        if (!li || li === tribute.menu) {\n          throw new Error(\"cannot find the <li> container for the click\");\n        }\n      }\n      tribute.selectItemAtIndex(li.getAttribute(\"data-index\"), event);\n      tribute.hideMenu();\n\n      // TODO: should fire with externalTrigger and target is outside of menu\n    } else if (tribute.current.element && !tribute.current.externalTrigger) {\n      tribute.current.externalTrigger = false;\n      setTimeout(() => tribute.hideMenu());\n    }\n  }\n\n  keyup(instance, event) {\n    if (instance.inputEvent) {\n      instance.inputEvent = false;\n    }\n    instance.updateSelection(this);\n\n    if (event.keyCode === 27) return;\n\n    if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n      instance.tribute.hasTrailingSpace = false;\n      instance.commandEvent = true;\n      instance.callbacks()[\"space\"](event, this);\n      return;\n    }\n\n    if (!instance.tribute.isActive) {\n      if (instance.tribute.autocompleteMode) {\n        instance.callbacks().triggerChar(event, this, \"\");\n      } else {\n        let keyCode = instance.getKeyCode(instance, this, event);\n\n        if (isNaN(keyCode) || !keyCode) return;\n\n        let trigger = instance.tribute.triggers().find(trigger => {\n          return trigger.charCodeAt(0) === keyCode;\n        });\n\n        if (typeof trigger !== \"undefined\") {\n          instance.callbacks().triggerChar(event, this, trigger);\n        }\n      }\n    }\n\n    if (\n      instance.tribute.current.mentionText.length <\n      instance.tribute.current.collection.menuShowMinLength\n    ) {\n      return;\n    }\n\n    if (\n      ((instance.tribute.current.trigger ||\n        instance.tribute.autocompleteMode) &&\n        instance.commandEvent === false) ||\n      (instance.tribute.isActive && event.keyCode === 8)\n    ) {\n      instance.tribute.showMenuFor(this, true);\n    }\n  }\n\n  shouldDeactivate(event) {\n    if (!this.tribute.isActive) return false;\n\n    if (this.tribute.current.mentionText.length === 0) {\n      let eventKeyPressed = false;\n      TributeEvents.keys().forEach(o => {\n        if (event.keyCode === o.key) eventKeyPressed = true;\n      });\n\n      return !eventKeyPressed;\n    }\n\n    return false;\n  }\n\n  getKeyCode(instance, el, event) {\n    let tribute = instance.tribute;\n    let info = tribute.range.getTriggerInfo(\n      false,\n      tribute.hasTrailingSpace,\n      true,\n      tribute.allowSpaces,\n      tribute.autocompleteMode\n    );\n\n    if (info) {\n      return info.mentionTriggerChar.charCodeAt(0);\n    } else {\n      return false;\n    }\n  }\n\n  updateSelection(el) {\n    this.tribute.current.element = el;\n    let info = this.tribute.range.getTriggerInfo(\n      false,\n      this.tribute.hasTrailingSpace,\n      true,\n      this.tribute.allowSpaces,\n      this.tribute.autocompleteMode\n    );\n\n    if (info) {\n      this.tribute.current.selectedPath = info.mentionSelectedPath;\n      this.tribute.current.mentionText = info.mentionText;\n      this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n    }\n  }\n\n  callbacks() {\n    return {\n      triggerChar: (e, el, trigger) => {\n        let tribute = this.tribute;\n        tribute.current.trigger = trigger;\n\n        let collectionItem = tribute.collection.find(item => {\n          return item.trigger === trigger;\n        });\n\n        tribute.current.collection = collectionItem;\n\n        if (\n          tribute.current.mentionText.length >=\n            tribute.current.collection.menuShowMinLength &&\n          tribute.inputEvent\n        ) {\n          tribute.showMenuFor(el, true);\n        }\n      },\n      enter: (e, el) => {\n        // choose selection\n        if (this.tribute.isActive && this.tribute.current.filteredItems) {\n          e.preventDefault();\n          e.stopPropagation();\n          setTimeout(() => {\n            this.tribute.selectItemAtIndex(this.tribute.menuSelected, e);\n            this.tribute.hideMenu();\n          }, 0);\n        }\n      },\n      escape: (e, el) => {\n        if (this.tribute.isActive) {\n          e.preventDefault();\n          e.stopPropagation();\n          this.tribute.isActive = false;\n          this.tribute.hideMenu();\n        }\n      },\n      tab: (e, el) => {\n        // choose first match\n        this.callbacks().enter(e, el);\n      },\n      space: (e, el) => {\n        if (this.tribute.isActive) {\n          if (this.tribute.spaceSelectsMatch) {\n            this.callbacks().enter(e, el);\n          } else if (!this.tribute.allowSpaces) {\n            e.stopPropagation();\n            setTimeout(() => {\n              this.tribute.hideMenu();\n              this.tribute.isActive = false;\n            }, 0);\n          }\n        }\n      },\n      up: (e, el) => {\n        // navigate up ul\n        if (this.tribute.isActive && this.tribute.current.filteredItems) {\n          e.preventDefault();\n          e.stopPropagation();\n          let count = this.tribute.current.filteredItems.length,\n            selected = this.tribute.menuSelected;\n\n          if (count > selected && selected > 0) {\n            this.tribute.menuSelected--;\n            this.setActiveLi();\n          } else if (selected === 0) {\n            this.tribute.menuSelected = count - 1;\n            this.setActiveLi();\n            this.tribute.menu.scrollTop = this.tribute.menu.scrollHeight;\n          }\n        }\n      },\n      down: (e, el) => {\n        // navigate down ul\n        if (this.tribute.isActive && this.tribute.current.filteredItems) {\n          e.preventDefault();\n          e.stopPropagation();\n          let count = this.tribute.current.filteredItems.length - 1,\n            selected = this.tribute.menuSelected;\n\n          if (count > selected) {\n            this.tribute.menuSelected++;\n            this.setActiveLi();\n          } else if (count === selected) {\n            this.tribute.menuSelected = 0;\n            this.setActiveLi();\n            this.tribute.menu.scrollTop = 0;\n          }\n        }\n      },\n      delete: (e, el) => {\n        if (\n          this.tribute.isActive &&\n          this.tribute.current.mentionText.length < 1\n        ) {\n          this.tribute.hideMenu();\n        } else if (this.tribute.isActive) {\n          this.tribute.showMenuFor(el);\n        }\n      }\n    };\n  }\n\n  setActiveLi(index) {\n    let lis = this.tribute.menu.querySelectorAll(\"li\"),\n      length = lis.length >>> 0;\n\n    if (index) this.tribute.menuSelected = parseInt(index);\n\n    for (let i = 0; i < length; i++) {\n      let li = lis[i];\n      if (i === this.tribute.menuSelected) {\n        li.classList.add(this.tribute.current.collection.selectClass);\n\n        let liClientRect = li.getBoundingClientRect();\n        let menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n        if (liClientRect.bottom > menuClientRect.bottom) {\n          let scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n          this.tribute.menu.scrollTop += scrollDistance;\n        } else if (liClientRect.top < menuClientRect.top) {\n          let scrollDistance = menuClientRect.top - liClientRect.top;\n          this.tribute.menu.scrollTop -= scrollDistance;\n        }\n      } else {\n        li.classList.remove(this.tribute.current.collection.selectClass);\n      }\n    }\n  }\n\n  getFullHeight(elem, includeMargin) {\n    let height = elem.getBoundingClientRect().height;\n\n    if (includeMargin) {\n      let style = elem.currentStyle || window.getComputedStyle(elem);\n      return (\n        height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n      );\n    }\n\n    return height;\n  }\n}\n\nclass TributeMenuEvents {\n  constructor(tribute) {\n    this.tribute = tribute;\n    this.tribute.menuEvents = this;\n    this.menu = this.tribute.menu;\n  }\n\n  bind(menu) {\n    this.menuClickEvent = this.tribute.events.click.bind(null, this);\n    this.menuContainerScrollEvent = this.debounce(\n      () => {\n        if (this.tribute.isActive) {\n          this.tribute.showMenuFor(this.tribute.current.element, false);\n        }\n      },\n      300,\n      false\n    );\n    this.windowResizeEvent = this.debounce(\n      () => {\n        if (this.tribute.isActive) {\n          this.tribute.range.positionMenuAtCaret(true);\n        }\n      },\n      300,\n      false\n    );\n\n    // fixes IE11 issues with mousedown\n    this.tribute.range\n      .getDocument()\n      .addEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n    this.tribute.range\n      .getDocument()\n      .addEventListener(\"mousedown\", this.menuClickEvent, false);\n    window.addEventListener(\"resize\", this.windowResizeEvent);\n\n    if (this.menuContainer) {\n      this.menuContainer.addEventListener(\n        \"scroll\",\n        this.menuContainerScrollEvent,\n        false\n      );\n    } else {\n      window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n    }\n  }\n\n  unbind(menu) {\n    this.tribute.range\n      .getDocument()\n      .removeEventListener(\"mousedown\", this.menuClickEvent, false);\n    this.tribute.range\n      .getDocument()\n      .removeEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n    window.removeEventListener(\"resize\", this.windowResizeEvent);\n\n    if (this.menuContainer) {\n      this.menuContainer.removeEventListener(\n        \"scroll\",\n        this.menuContainerScrollEvent,\n        false\n      );\n    } else {\n      window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n    }\n  }\n\n  debounce(func, wait, immediate) {\n    var timeout;\n    return () => {\n      var context = this,\n        args = arguments;\n      var later = () => {\n        timeout = null;\n        if (!immediate) func.apply(context, args);\n      };\n      var callNow = immediate && !timeout;\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n      if (callNow) func.apply(context, args);\n    };\n  }\n}\n\n// Thanks to https://github.com/jeff-collins/ment.io\n\nclass TributeRange {\n    constructor(tribute) {\n        this.tribute = tribute;\n        this.tribute.range = this;\n    }\n\n    getDocument() {\n        let iframe;\n        if (this.tribute.current.collection) {\n            iframe = this.tribute.current.collection.iframe;\n        }\n\n        if (!iframe) {\n            return document\n        }\n\n        return iframe.contentWindow.document\n    }\n\n    positionMenuAtCaret(scrollTo) {\n        let context = this.tribute.current,\n            coordinates;\n\n        let info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n        if (typeof info !== 'undefined') {\n\n            if(!this.tribute.positionMenu){\n                this.tribute.menu.style.cssText = `display: block;`;\n                return\n            }\n\n            if (!this.isContentEditable(context.element)) {\n                coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,\n                    info.mentionPosition);\n            }\n            else {\n                coordinates = this.getContentEditableCaretPosition(info.mentionPosition);\n            }\n\n            this.tribute.menu.style.cssText = `top: ${coordinates.top}px;\n                                     left: ${coordinates.left}px;\n                                     right: ${coordinates.right}px;\n                                     bottom: ${coordinates.bottom}px;\n                                     position: absolute;\n                                     display: block;`;\n\n            if (coordinates.left === 'auto') {\n                this.tribute.menu.style.left = 'auto';\n            }\n\n            if (coordinates.top === 'auto') {\n                this.tribute.menu.style.top = 'auto';\n            }\n\n            if (scrollTo) this.scrollIntoView();\n\n            window.setTimeout(() => {\n                let menuDimensions = {\n                   width: this.tribute.menu.offsetWidth,\n                   height: this.tribute.menu.offsetHeight\n                };\n                let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n                let menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right);\n                let menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom);\n                if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n                    this.tribute.menu.style.cssText = 'display: none';\n                    this.positionMenuAtCaret(scrollTo);\n                }\n            }, 0);\n\n        } else {\n            this.tribute.menu.style.cssText = 'display: none';\n        }\n    }\n\n    get menuContainerIsBody() {\n        return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n    }\n\n\n    selectElement(targetElement, path, offset) {\n        let range;\n        let elem = targetElement;\n\n        if (path) {\n            for (var i = 0; i < path.length; i++) {\n                elem = elem.childNodes[path[i]];\n                if (elem === undefined) {\n                    return\n                }\n                while (elem.length < offset) {\n                    offset -= elem.length;\n                    elem = elem.nextSibling;\n                }\n                if (elem.childNodes.length === 0 && !elem.length) {\n                    elem = elem.previousSibling;\n                }\n            }\n        }\n        let sel = this.getWindowSelection();\n\n        range = this.getDocument().createRange();\n        range.setStart(elem, offset);\n        range.setEnd(elem, offset);\n        range.collapse(true);\n\n        try {\n            sel.removeAllRanges();\n        } catch (error) {}\n\n        sel.addRange(range);\n        targetElement.focus();\n    }\n\n    replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n        let info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n        if (info !== undefined) {\n            let context = this.tribute.current;\n            let replaceEvent = new CustomEvent('tribute-replaced', {\n                detail: {\n                    item: item,\n                    instance: context,\n                    context: info,\n                    event: originalEvent,\n                }\n            });\n\n            if (!this.isContentEditable(context.element)) {\n                let myField = this.tribute.current.element;\n                let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n                    ? this.tribute.replaceTextSuffix\n                    : ' ';\n                text += textSuffix;\n                let startPos = info.mentionPosition;\n                let endPos = info.mentionPosition + info.mentionText.length + textSuffix.length;\n                if (!this.tribute.autocompleteMode) {\n                    endPos += info.mentionTriggerChar.length - 1;\n                }\n                myField.value = myField.value.substring(0, startPos) + text +\n                    myField.value.substring(endPos, myField.value.length);\n                myField.selectionStart = startPos + text.length;\n                myField.selectionEnd = startPos + text.length;\n            } else {\n                // add a space to the end of the pasted text\n                let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n                    ? this.tribute.replaceTextSuffix\n                    : '\\xA0';\n                text += textSuffix;\n                let endPos = info.mentionPosition + info.mentionText.length;\n                if (!this.tribute.autocompleteMode) {\n                    endPos += info.mentionTriggerChar.length;\n                }\n                this.pasteHtml(text, info.mentionPosition, endPos);\n            }\n\n            context.element.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n            context.element.dispatchEvent(replaceEvent);\n        }\n    }\n\n    pasteHtml(html, startPos, endPos) {\n        let range, sel;\n        sel = this.getWindowSelection();\n        range = this.getDocument().createRange();\n        range.setStart(sel.anchorNode, startPos);\n        range.setEnd(sel.anchorNode, endPos);\n        range.deleteContents();\n\n        let el = this.getDocument().createElement('div');\n        el.innerHTML = html;\n        let frag = this.getDocument().createDocumentFragment(),\n            node, lastNode;\n        while ((node = el.firstChild)) {\n            lastNode = frag.appendChild(node);\n        }\n        range.insertNode(frag);\n\n        // Preserve the selection\n        if (lastNode) {\n            range = range.cloneRange();\n            range.setStartAfter(lastNode);\n            range.collapse(true);\n            sel.removeAllRanges();\n            sel.addRange(range);\n        }\n    }\n\n    getWindowSelection() {\n        if (this.tribute.collection.iframe) {\n            return this.tribute.collection.iframe.contentWindow.getSelection()\n        }\n\n        return window.getSelection()\n    }\n\n    getNodePositionInParent(element) {\n        if (element.parentNode === null) {\n            return 0\n        }\n\n        for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n            let node = element.parentNode.childNodes[i];\n\n            if (node === element) {\n                return i\n            }\n        }\n    }\n\n    getContentEditableSelectedPath(ctx) {\n        let sel = this.getWindowSelection();\n        let selected = sel.anchorNode;\n        let path = [];\n        let offset;\n\n        if (selected != null) {\n            let i;\n            let ce = selected.contentEditable;\n            while (selected !== null && ce !== 'true') {\n                i = this.getNodePositionInParent(selected);\n                path.push(i);\n                selected = selected.parentNode;\n                if (selected !== null) {\n                    ce = selected.contentEditable;\n                }\n            }\n            path.reverse();\n\n            // getRangeAt may not exist, need alternative\n            offset = sel.getRangeAt(0).startOffset;\n\n            return {\n                selected: selected,\n                path: path,\n                offset: offset\n            }\n        }\n    }\n\n    getTextPrecedingCurrentSelection() {\n        let context = this.tribute.current,\n            text = '';\n\n        if (!this.isContentEditable(context.element)) {\n            let textComponent = this.tribute.current.element;\n            if (textComponent) {\n                let startPos = textComponent.selectionStart;\n                if (textComponent.value && startPos >= 0) {\n                    text = textComponent.value.substring(0, startPos);\n                }\n            }\n\n        } else {\n            let selectedElem = this.getWindowSelection().anchorNode;\n\n            if (selectedElem != null) {\n                let workingNodeContent = selectedElem.textContent;\n                let selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset;\n\n                if (workingNodeContent && selectStartOffset >= 0) {\n                    text = workingNodeContent.substring(0, selectStartOffset);\n                }\n            }\n        }\n\n        return text\n    }\n\n    getLastWordInText(text) {\n        text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n        let wordsArray = text.split(/\\s+/);\n        let worldsCount = wordsArray.length - 1;\n        return wordsArray[worldsCount].trim()\n    }\n\n    getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n        let ctx = this.tribute.current;\n        let selected, path, offset;\n\n        if (!this.isContentEditable(ctx.element)) {\n            selected = this.tribute.current.element;\n        } else {\n            let selectionInfo = this.getContentEditableSelectedPath(ctx);\n\n            if (selectionInfo) {\n                selected = selectionInfo.selected;\n                path = selectionInfo.path;\n                offset = selectionInfo.offset;\n            }\n        }\n\n        let effectiveRange = this.getTextPrecedingCurrentSelection();\n        let lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange);\n\n        if (isAutocomplete) {\n            return {\n                mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n                mentionText: lastWordOfEffectiveRange,\n                mentionSelectedElement: selected,\n                mentionSelectedPath: path,\n                mentionSelectedOffset: offset\n            }\n        }\n\n        if (effectiveRange !== undefined && effectiveRange !== null) {\n            let mostRecentTriggerCharPos = -1;\n            let triggerChar;\n\n            this.tribute.collection.forEach(config => {\n                let c = config.trigger;\n                let idx = config.requireLeadingSpace ?\n                    this.lastIndexWithLeadingSpace(effectiveRange, c) :\n                    effectiveRange.lastIndexOf(c);\n\n                if (idx > mostRecentTriggerCharPos) {\n                    mostRecentTriggerCharPos = idx;\n                    triggerChar = c;\n                    requireLeadingSpace = config.requireLeadingSpace;\n                }\n            });\n\n            if (mostRecentTriggerCharPos >= 0 &&\n                (\n                    mostRecentTriggerCharPos === 0 ||\n                    !requireLeadingSpace ||\n                    /[\\xA0\\s]/g.test(\n                        effectiveRange.substring(\n                            mostRecentTriggerCharPos - 1,\n                            mostRecentTriggerCharPos)\n                    )\n                )\n            ) {\n                let currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + triggerChar.length,\n                    effectiveRange.length);\n\n                triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + triggerChar.length);\n                let firstSnippetChar = currentTriggerSnippet.substring(0, 1);\n                let leadingSpace = currentTriggerSnippet.length > 0 &&\n                    (\n                        firstSnippetChar === ' ' ||\n                        firstSnippetChar === '\\xA0'\n                    );\n                if (hasTrailingSpace) {\n                    currentTriggerSnippet = currentTriggerSnippet.trim();\n                }\n\n                let regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n\n                this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n                if (!leadingSpace && (menuAlreadyActive || !(regex.test(currentTriggerSnippet)))) {\n                    return {\n                        mentionPosition: mostRecentTriggerCharPos,\n                        mentionText: currentTriggerSnippet,\n                        mentionSelectedElement: selected,\n                        mentionSelectedPath: path,\n                        mentionSelectedOffset: offset,\n                        mentionTriggerChar: triggerChar\n                    }\n                }\n            }\n        }\n    }\n\n    lastIndexWithLeadingSpace (str, trigger) {\n        let reversedStr = str.split('').reverse().join('');\n        let index = -1;\n\n        for (let cidx = 0, len = str.length; cidx < len; cidx++) {\n            let firstChar = cidx === str.length - 1;\n            let leadingSpace = /\\s/.test(reversedStr[cidx + 1]);\n\n            let match = true;\n            for (let triggerIdx = trigger.length - 1; triggerIdx >= 0; triggerIdx--) {\n              if (trigger[triggerIdx] !== reversedStr[cidx-triggerIdx]) {\n                match = false;\n                break\n              }\n            }\n\n            if (match && (firstChar || leadingSpace)) {\n                index = str.length - 1 - cidx;\n                break\n            }\n        }\n\n        return index\n    }\n\n    isContentEditable(element) {\n        return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA'\n    }\n\n    isMenuOffScreen(coordinates, menuDimensions) {\n        let windowWidth = window.innerWidth;\n        let windowHeight = window.innerHeight;\n        let doc = document.documentElement;\n        let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n        let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n        let menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height;\n        let menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width;\n        let menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height;\n        let menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width;\n\n        return {\n            top: menuTop < Math.floor(windowTop),\n            right: menuRight > Math.ceil(windowLeft + windowWidth),\n            bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n            left: menuLeft < Math.floor(windowLeft)\n        }\n    }\n\n    getMenuDimensions() {\n        // Width of the menu depends of its contents and position\n        // We must check what its width would be without any obstruction\n        // This way, we can achieve good positioning for flipping the menu\n        let dimensions = {\n            width: null,\n            height: null\n        };\n\n        this.tribute.menu.style.cssText = `top: 0px;\n                                 left: 0px;\n                                 position: fixed;\n                                 display: block;\n                                 visibility; hidden;`;\n       dimensions.width = this.tribute.menu.offsetWidth;\n       dimensions.height = this.tribute.menu.offsetHeight;\n\n       this.tribute.menu.style.cssText = `display: none;`;\n\n       return dimensions\n    }\n\n    getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n        let properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX',\n            'overflowY', 'borderTopWidth', 'borderRightWidth',\n            'borderBottomWidth', 'borderLeftWidth', 'paddingTop',\n            'paddingRight', 'paddingBottom', 'paddingLeft',\n            'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch',\n            'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily',\n            'textAlign', 'textTransform', 'textIndent',\n            'textDecoration', 'letterSpacing', 'wordSpacing'\n        ];\n\n        let isFirefox = (window.mozInnerScreenX !== null);\n\n        let div = this.getDocument().createElement('div');\n        div.id = 'input-textarea-caret-position-mirror-div';\n        this.getDocument().body.appendChild(div);\n\n        let style = div.style;\n        let computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;\n\n        style.whiteSpace = 'pre-wrap';\n        if (element.nodeName !== 'INPUT') {\n            style.wordWrap = 'break-word';\n        }\n\n        // position off-screen\n        style.position = 'absolute';\n        style.visibility = 'hidden';\n\n        // transfer the element's properties to the div\n        properties.forEach(prop => {\n            style[prop] = computed[prop];\n        });\n\n        if (isFirefox) {\n            style.width = `${(parseInt(computed.width) - 2)}px`;\n            if (element.scrollHeight > parseInt(computed.height))\n                style.overflowY = 'scroll';\n        } else {\n            style.overflow = 'hidden';\n        }\n\n        div.textContent = element.value.substring(0, position);\n\n        if (element.nodeName === 'INPUT') {\n            div.textContent = div.textContent.replace(/\\s/g, ' ');\n        }\n\n        let span = this.getDocument().createElement('span');\n        span.textContent = element.value.substring(position) || '.';\n        div.appendChild(span);\n\n        let rect = element.getBoundingClientRect();\n        let doc = document.documentElement;\n        let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n        let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n        let top = 0;\n        let left = 0;\n        if (this.menuContainerIsBody) {\n          top = rect.top;\n          left = rect.left;\n        }\n\n        let coordinates = {\n            top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n            left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n        };\n\n        let windowWidth = window.innerWidth;\n        let windowHeight = window.innerHeight;\n\n        let menuDimensions = this.getMenuDimensions();\n        let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n        if (menuIsOffScreen.right) {\n            coordinates.right = windowWidth - coordinates.left;\n            coordinates.left = 'auto';\n        }\n\n        let parentHeight = this.tribute.menuContainer\n            ? this.tribute.menuContainer.offsetHeight\n            : this.getDocument().body.offsetHeight;\n\n        if (menuIsOffScreen.bottom) {\n            let parentRect = this.tribute.menuContainer\n                ? this.tribute.menuContainer.getBoundingClientRect()\n                : this.getDocument().body.getBoundingClientRect();\n            let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n            coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop);\n            coordinates.top = 'auto';\n        }\n\n        menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n        if (menuIsOffScreen.left) {\n            coordinates.left = windowWidth > menuDimensions.width\n                ? windowLeft + windowWidth - menuDimensions.width\n                : windowLeft;\n            delete coordinates.right;\n        }\n        if (menuIsOffScreen.top) {\n            coordinates.top = windowHeight > menuDimensions.height\n                ? windowTop + windowHeight - menuDimensions.height\n                : windowTop;\n            delete coordinates.bottom;\n        }\n\n        this.getDocument().body.removeChild(div);\n        return coordinates\n    }\n\n    getContentEditableCaretPosition(selectedNodePosition) {\n        let range;\n        let sel = this.getWindowSelection();\n\n        range = this.getDocument().createRange();\n        range.setStart(sel.anchorNode, selectedNodePosition);\n        range.setEnd(sel.anchorNode, selectedNodePosition);\n\n        range.collapse(false);\n\n        let rect = range.getBoundingClientRect();\n        let doc = document.documentElement;\n        let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n        let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n        let left = rect.left;\n        let top = rect.top;\n\n        let coordinates = {\n            left: left + windowLeft,\n            top: top + rect.height + windowTop\n        };\n        let windowWidth = window.innerWidth;\n        let windowHeight = window.innerHeight;\n\n        let menuDimensions = this.getMenuDimensions();\n        let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n        if (menuIsOffScreen.right) {\n            coordinates.left = 'auto';\n            coordinates.right = windowWidth - rect.left - windowLeft;\n        }\n\n        let parentHeight = this.tribute.menuContainer\n            ? this.tribute.menuContainer.offsetHeight\n            : this.getDocument().body.offsetHeight;\n\n        if (menuIsOffScreen.bottom) {\n            let parentRect = this.tribute.menuContainer\n                ? this.tribute.menuContainer.getBoundingClientRect()\n                : this.getDocument().body.getBoundingClientRect();\n            let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n            coordinates.top = 'auto';\n            coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top);\n        }\n\n        menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n        if (menuIsOffScreen.left) {\n            coordinates.left = windowWidth > menuDimensions.width\n                ? windowLeft + windowWidth - menuDimensions.width\n                : windowLeft;\n            delete coordinates.right;\n        }\n        if (menuIsOffScreen.top) {\n            coordinates.top = windowHeight > menuDimensions.height\n                ? windowTop + windowHeight - menuDimensions.height\n                : windowTop;\n            delete coordinates.bottom;\n        }\n\n        if (!this.menuContainerIsBody) {\n            coordinates.left = coordinates.left ? coordinates.left - this.tribute.menuContainer.offsetLeft : coordinates.left;\n            coordinates.top = coordinates.top ? coordinates.top - this.tribute.menuContainer.offsetTop : coordinates.top;\n        }\n\n        return coordinates\n    }\n\n    scrollIntoView(elem) {\n        let reasonableBuffer = 20,\n            clientRect;\n        let maxScrollDisplacement = 100;\n        let e = this.menu;\n\n        if (typeof e === 'undefined') return;\n\n        while (clientRect === undefined || clientRect.height === 0) {\n            clientRect = e.getBoundingClientRect();\n\n            if (clientRect.height === 0) {\n                e = e.childNodes[0];\n                if (e === undefined || !e.getBoundingClientRect) {\n                    return\n                }\n            }\n        }\n\n        let elemTop = clientRect.top;\n        let elemBottom = elemTop + clientRect.height;\n\n        if (elemTop < 0) {\n            window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer);\n        } else if (elemBottom > window.innerHeight) {\n            let maxY = window.pageYOffset + clientRect.top - reasonableBuffer;\n\n            if (maxY - window.pageYOffset > maxScrollDisplacement) {\n                maxY = window.pageYOffset + maxScrollDisplacement;\n            }\n\n            let targetY = window.pageYOffset - (window.innerHeight - elemBottom);\n\n            if (targetY > maxY) {\n                targetY = maxY;\n            }\n\n            window.scrollTo(0, targetY);\n        }\n    }\n}\n\n// Thanks to https://github.com/mattyork/fuzzy\nclass TributeSearch {\n    constructor(tribute) {\n        this.tribute = tribute;\n        this.tribute.search = this;\n    }\n\n    simpleFilter(pattern, array) {\n        return array.filter(string => {\n            return this.test(pattern, string)\n        })\n    }\n\n    test(pattern, string) {\n        return this.match(pattern, string) !== null\n    }\n\n    match(pattern, string, opts) {\n        opts = opts || {};\n        let len = string.length,\n            pre = opts.pre || '',\n            post = opts.post || '',\n            compareString = opts.caseSensitive && string || string.toLowerCase();\n\n        if (opts.skip) {\n            return {rendered: string, score: 0}\n        }\n\n        pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n\n        let patternCache = this.traverse(compareString, pattern, 0, 0, []);\n        if (!patternCache) {\n            return null\n        }\n        return {\n            rendered: this.render(string, patternCache.cache, pre, post),\n            score: patternCache.score\n        }\n    }\n\n    traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n        // if the pattern search at end\n        if (pattern.length === patternIndex) {\n\n            // calculate score and copy the cache containing the indices where it's found\n            return {\n                score: this.calculateScore(patternCache),\n                cache: patternCache.slice()\n            }\n        }\n\n        // if string at end or remaining pattern > remaining string\n        if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n            return undefined\n        }\n\n        let c = pattern[patternIndex];\n        let index = string.indexOf(c, stringIndex);\n        let best, temp;\n\n        while (index > -1) {\n            patternCache.push(index);\n            temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache);\n            patternCache.pop();\n\n            // if downstream traversal failed, return best answer so far\n            if (!temp) {\n                return best\n            }\n\n            if (!best || best.score < temp.score) {\n                best = temp;\n            }\n\n            index = string.indexOf(c, index + 1);\n        }\n\n        return best\n    }\n\n    calculateScore(patternCache) {\n        let score = 0;\n        let temp = 1;\n\n        patternCache.forEach((index, i) => {\n            if (i > 0) {\n                if (patternCache[i - 1] + 1 === index) {\n                    temp += temp + 1;\n                }\n                else {\n                    temp = 1;\n                }\n            }\n\n            score += temp;\n        });\n\n        return score\n    }\n\n    render(string, indices, pre, post) {\n        var rendered = string.substring(0, indices[0]);\n\n        indices.forEach((index, i) => {\n            rendered += pre + string[index] + post +\n                string.substring(index + 1, (indices[i + 1]) ? indices[i + 1] : string.length);\n        });\n\n        return rendered\n    }\n\n    filter(pattern, arr, opts) {\n        opts = opts || {};\n        return arr\n            .reduce((prev, element, idx, arr) => {\n                let str = element;\n\n                if (opts.extract) {\n                    str = opts.extract(element);\n\n                    if (!str) { // take care of undefineds / nulls / etc.\n                        str = '';\n                    }\n                }\n\n                let rendered = this.match(pattern, str, opts);\n\n                if (rendered != null) {\n                    prev[prev.length] = {\n                        string: rendered.rendered,\n                        score: rendered.score,\n                        index: idx,\n                        original: element\n                    };\n                }\n\n                return prev\n            }, [])\n\n        .sort((a, b) => {\n            let compare = b.score - a.score;\n            if (compare) return compare\n            return a.index - b.index\n        })\n    }\n}\n\nclass Tribute {\n  constructor({\n    values = null,\n    iframe = null,\n    selectClass = \"highlight\",\n    containerClass = \"tribute-container\",\n    itemClass = \"\",\n    trigger = \"@\",\n    autocompleteMode = false,\n    selectTemplate = null,\n    menuItemTemplate = null,\n    lookup = \"key\",\n    fillAttr = \"value\",\n    collection = null,\n    menuContainer = null,\n    noMatchTemplate = null,\n    requireLeadingSpace = true,\n    allowSpaces = false,\n    replaceTextSuffix = null,\n    positionMenu = true,\n    spaceSelectsMatch = false,\n    searchOpts = {},\n    menuItemLimit = null,\n    menuShowMinLength = 0\n  }) {\n    this.autocompleteMode = autocompleteMode;\n    this.menuSelected = 0;\n    this.current = {};\n    this.inputEvent = false;\n    this.isActive = false;\n    this.menuContainer = menuContainer;\n    this.allowSpaces = allowSpaces;\n    this.replaceTextSuffix = replaceTextSuffix;\n    this.positionMenu = positionMenu;\n    this.hasTrailingSpace = false;\n    this.spaceSelectsMatch = spaceSelectsMatch;\n\n    if (this.autocompleteMode) {\n      trigger = \"\";\n      allowSpaces = false;\n    }\n\n    if (values) {\n      this.collection = [\n        {\n          // symbol that starts the lookup\n          trigger: trigger,\n\n          // is it wrapped in an iframe\n          iframe: iframe,\n\n          // class applied to selected item\n          selectClass: selectClass,\n\n          // class applied to the Container\n          containerClass: containerClass,\n\n          // class applied to each item\n          itemClass: itemClass,\n\n          // function called on select that retuns the content to insert\n          selectTemplate: (\n            selectTemplate || Tribute.defaultSelectTemplate\n          ).bind(this),\n\n          // function called that returns content for an item\n          menuItemTemplate: (\n            menuItemTemplate || Tribute.defaultMenuItemTemplate\n          ).bind(this),\n\n          // function called when menu is empty, disables hiding of menu.\n          noMatchTemplate: (t => {\n            if (typeof t === \"string\") {\n              if (t.trim() === \"\") return null;\n              return t;\n            }\n            if (typeof t === \"function\") {\n              return t.bind(this);\n            }\n\n            return (\n              noMatchTemplate ||\n              function() {\n                return \"<li>No Match Found!</li>\";\n              }.bind(this)\n            );\n          })(noMatchTemplate),\n\n          // column to search against in the object\n          lookup: lookup,\n\n          // column that contains the content to insert by default\n          fillAttr: fillAttr,\n\n          // array of objects or a function returning an array of objects\n          values: values,\n\n          requireLeadingSpace: requireLeadingSpace,\n\n          searchOpts: searchOpts,\n\n          menuItemLimit: menuItemLimit,\n\n          menuShowMinLength: menuShowMinLength\n        }\n      ];\n    } else if (collection) {\n      if (this.autocompleteMode)\n        console.warn(\n          \"Tribute in autocomplete mode does not work for collections\"\n        );\n      this.collection = collection.map(item => {\n        return {\n          trigger: item.trigger || trigger,\n          iframe: item.iframe || iframe,\n          selectClass: item.selectClass || selectClass,\n          containerClass: item.containerClass || containerClass,\n          itemClass: item.itemClass || itemClass,\n          selectTemplate: (\n            item.selectTemplate || Tribute.defaultSelectTemplate\n          ).bind(this),\n          menuItemTemplate: (\n            item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n          ).bind(this),\n          // function called when menu is empty, disables hiding of menu.\n          noMatchTemplate: (t => {\n            if (typeof t === \"string\") {\n              if (t.trim() === \"\") return null;\n              return t;\n            }\n            if (typeof t === \"function\") {\n              return t.bind(this);\n            }\n\n            return (\n              noMatchTemplate ||\n              function() {\n                return \"<li>No Match Found!</li>\";\n              }.bind(this)\n            );\n          })(noMatchTemplate),\n          lookup: item.lookup || lookup,\n          fillAttr: item.fillAttr || fillAttr,\n          values: item.values,\n          requireLeadingSpace: item.requireLeadingSpace,\n          searchOpts: item.searchOpts || searchOpts,\n          menuItemLimit: item.menuItemLimit || menuItemLimit,\n          menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n        };\n      });\n    } else {\n      throw new Error(\"[Tribute] No collection specified.\");\n    }\n\n    new TributeRange(this);\n    new TributeEvents(this);\n    new TributeMenuEvents(this);\n    new TributeSearch(this);\n  }\n\n  get isActive() {\n    return this._isActive;\n  }\n\n  set isActive(val) {\n    if (this._isActive != val) {\n      this._isActive = val;\n      if (this.current.element) {\n        let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n        this.current.element.dispatchEvent(noMatchEvent);\n      }\n    }\n  }\n\n  static defaultSelectTemplate(item) {\n    if (typeof item === \"undefined\")\n      return `${this.current.collection.trigger}${this.current.mentionText}`;\n    if (this.range.isContentEditable(this.current.element)) {\n      return (\n        '<span class=\"tribute-mention\">' +\n        (this.current.collection.trigger +\n          item.original[this.current.collection.fillAttr]) +\n        \"</span>\"\n      );\n    }\n\n    return (\n      this.current.collection.trigger +\n      item.original[this.current.collection.fillAttr]\n    );\n  }\n\n  static defaultMenuItemTemplate(matchItem) {\n    return matchItem.string;\n  }\n\n  static inputTypes() {\n    return [\"TEXTAREA\", \"INPUT\"];\n  }\n\n  triggers() {\n    return this.collection.map(config => {\n      return config.trigger;\n    });\n  }\n\n  attach(el) {\n    if (!el) {\n      throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n    }\n\n    // Check if it is a jQuery collection\n    if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n      el = el.get();\n    }\n\n    // Is el an Array/Array-like object?\n    if (\n      el.constructor === NodeList ||\n      el.constructor === HTMLCollection ||\n      el.constructor === Array\n    ) {\n      let length = el.length;\n      for (var i = 0; i < length; ++i) {\n        this._attach(el[i]);\n      }\n    } else {\n      this._attach(el);\n    }\n  }\n\n  _attach(el) {\n    if (el.hasAttribute(\"data-tribute\")) {\n      console.warn(\"Tribute was already bound to \" + el.nodeName);\n    }\n\n    this.ensureEditable(el);\n    this.events.bind(el);\n    el.setAttribute(\"data-tribute\", true);\n  }\n\n  ensureEditable(element) {\n    if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n      if (element.contentEditable) {\n        element.contentEditable = true;\n      } else {\n        throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n      }\n    }\n  }\n\n  createMenu(containerClass) {\n    let wrapper = this.range.getDocument().createElement(\"div\"),\n      ul = this.range.getDocument().createElement(\"ul\");\n    wrapper.className = containerClass;\n    wrapper.appendChild(ul);\n\n    if (this.menuContainer) {\n      return this.menuContainer.appendChild(wrapper);\n    }\n\n    return this.range.getDocument().body.appendChild(wrapper);\n  }\n\n  showMenuFor(element, scrollTo) {\n    // Only proceed if menu isn't already shown for the current element & mentionText\n    if (\n      this.isActive &&\n      this.current.element === element &&\n      this.current.mentionText === this.currentMentionTextSnapshot\n    ) {\n      return;\n    }\n    this.currentMentionTextSnapshot = this.current.mentionText;\n\n    // create the menu if it doesn't exist.\n    if (!this.menu) {\n      this.menu = this.createMenu(this.current.collection.containerClass);\n      element.tributeMenu = this.menu;\n      this.menuEvents.bind(this.menu);\n    }\n\n    this.isActive = true;\n    this.menuSelected = 0;\n\n    if (!this.current.mentionText) {\n      this.current.mentionText = \"\";\n    }\n\n    const processValues = values => {\n      // Tribute may not be active any more by the time the value callback returns\n      if (!this.isActive) {\n        return;\n      }\n\n      let items = this.search.filter(this.current.mentionText, values, {\n        pre: this.current.collection.searchOpts.pre || \"<span>\",\n        post: this.current.collection.searchOpts.post || \"</span>\",\n        skip: this.current.collection.searchOpts.skip,\n        extract: el => {\n          if (typeof this.current.collection.lookup === \"string\") {\n            return el[this.current.collection.lookup];\n          } else if (typeof this.current.collection.lookup === \"function\") {\n            return this.current.collection.lookup(el, this.current.mentionText);\n          } else {\n            throw new Error(\n              \"Invalid lookup attribute, lookup must be string or function.\"\n            );\n          }\n        }\n      });\n\n      if (this.current.collection.menuItemLimit) {\n        items = items.slice(0, this.current.collection.menuItemLimit);\n      }\n\n      this.current.filteredItems = items;\n\n      let ul = this.menu.querySelector(\"ul\");\n\n      this.range.positionMenuAtCaret(scrollTo);\n\n      if (!items.length) {\n        let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n          detail: this.menu\n        });\n        this.current.element.dispatchEvent(noMatchEvent);\n        if (\n          (typeof this.current.collection.noMatchTemplate === \"function\" &&\n            !this.current.collection.noMatchTemplate()) ||\n          !this.current.collection.noMatchTemplate\n        ) {\n          this.hideMenu();\n        } else {\n          typeof this.current.collection.noMatchTemplate === \"function\"\n            ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n            : (ul.innerHTML = this.current.collection.noMatchTemplate);\n        }\n\n        return;\n      }\n\n      ul.innerHTML = \"\";\n      let fragment = this.range.getDocument().createDocumentFragment();\n\n      items.forEach((item, index) => {\n        let li = this.range.getDocument().createElement(\"li\");\n        li.setAttribute(\"data-index\", index);\n        li.className = this.current.collection.itemClass;\n        li.addEventListener(\"mousemove\", e => {\n          let [li, index] = this._findLiTarget(e.target);\n          if (e.movementY !== 0) {\n            this.events.setActiveLi(index);\n          }\n        });\n        if (this.menuSelected === index) {\n          li.classList.add(this.current.collection.selectClass);\n        }\n        li.innerHTML = this.current.collection.menuItemTemplate(item);\n        fragment.appendChild(li);\n      });\n      ul.appendChild(fragment);\n    };\n\n    if (typeof this.current.collection.values === \"function\") {\n      this.current.collection.values(this.current.mentionText, processValues);\n    } else {\n      processValues(this.current.collection.values);\n    }\n  }\n\n  _findLiTarget(el) {\n    if (!el) return [];\n    const index = el.getAttribute(\"data-index\");\n    return !index ? this._findLiTarget(el.parentNode) : [el, index];\n  }\n\n  showMenuForCollection(element, collectionIndex) {\n    if (element !== document.activeElement) {\n      this.placeCaretAtEnd(element);\n    }\n\n    this.current.collection = this.collection[collectionIndex || 0];\n    this.current.externalTrigger = true;\n    this.current.element = element;\n\n    if (element.isContentEditable)\n      this.insertTextAtCursor(this.current.collection.trigger);\n    else this.insertAtCaret(element, this.current.collection.trigger);\n\n    this.showMenuFor(element);\n  }\n\n  // TODO: make sure this works for inputs/textareas\n  placeCaretAtEnd(el) {\n    el.focus();\n    if (\n      typeof window.getSelection != \"undefined\" &&\n      typeof document.createRange != \"undefined\"\n    ) {\n      var range = document.createRange();\n      range.selectNodeContents(el);\n      range.collapse(false);\n      var sel = window.getSelection();\n      sel.removeAllRanges();\n      sel.addRange(range);\n    } else if (typeof document.body.createTextRange != \"undefined\") {\n      var textRange = document.body.createTextRange();\n      textRange.moveToElementText(el);\n      textRange.collapse(false);\n      textRange.select();\n    }\n  }\n\n  // for contenteditable\n  insertTextAtCursor(text) {\n    var sel, range;\n    sel = window.getSelection();\n    range = sel.getRangeAt(0);\n    range.deleteContents();\n    var textNode = document.createTextNode(text);\n    range.insertNode(textNode);\n    range.selectNodeContents(textNode);\n    range.collapse(false);\n    sel.removeAllRanges();\n    sel.addRange(range);\n  }\n\n  // for regular inputs\n  insertAtCaret(textarea, text) {\n    var scrollPos = textarea.scrollTop;\n    var caretPos = textarea.selectionStart;\n\n    var front = textarea.value.substring(0, caretPos);\n    var back = textarea.value.substring(\n      textarea.selectionEnd,\n      textarea.value.length\n    );\n    textarea.value = front + text + back;\n    caretPos = caretPos + text.length;\n    textarea.selectionStart = caretPos;\n    textarea.selectionEnd = caretPos;\n    textarea.focus();\n    textarea.scrollTop = scrollPos;\n  }\n\n  hideMenu() {\n    if (this.menu) {\n      this.menu.style.cssText = \"display: none;\";\n      this.isActive = false;\n      this.menuSelected = 0;\n      this.current = {};\n    }\n  }\n\n  selectItemAtIndex(index, originalEvent) {\n    index = parseInt(index);\n    if (typeof index !== \"number\" || isNaN(index)) return;\n    let item = this.current.filteredItems[index];\n    let content = this.current.collection.selectTemplate(item);\n    if (content !== null) this.replaceText(content, originalEvent, item);\n  }\n\n  replaceText(content, originalEvent, item) {\n    this.range.replaceTriggerText(content, true, true, originalEvent, item);\n  }\n\n  _append(collection, newValues, replace) {\n    if (typeof collection.values === \"function\") {\n      throw new Error(\"Unable to append to values, as it is a function.\");\n    } else if (!replace) {\n      collection.values = collection.values.concat(newValues);\n    } else {\n      collection.values = newValues;\n    }\n  }\n\n  append(collectionIndex, newValues, replace) {\n    let index = parseInt(collectionIndex);\n    if (typeof index !== \"number\")\n      throw new Error(\"please provide an index for the collection to update.\");\n\n    let collection = this.collection[index];\n\n    this._append(collection, newValues, replace);\n  }\n\n  appendCurrent(newValues, replace) {\n    if (this.isActive) {\n      this._append(this.current.collection, newValues, replace);\n    } else {\n      throw new Error(\n        \"No active state. Please use append instead and pass an index.\"\n      );\n    }\n  }\n\n  detach(el) {\n    if (!el) {\n      throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n    }\n\n    // Check if it is a jQuery collection\n    if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n      el = el.get();\n    }\n\n    // Is el an Array/Array-like object?\n    if (\n      el.constructor === NodeList ||\n      el.constructor === HTMLCollection ||\n      el.constructor === Array\n    ) {\n      let length = el.length;\n      for (var i = 0; i < length; ++i) {\n        this._detach(el[i]);\n      }\n    } else {\n      this._detach(el);\n    }\n  }\n\n  _detach(el) {\n    this.events.unbind(el);\n    if (el.tributeMenu) {\n      this.menuEvents.unbind(el.tributeMenu);\n    }\n\n    setTimeout(() => {\n      el.removeAttribute(\"data-tribute\");\n      this.isActive = false;\n      if (el.tributeMenu) {\n        el.tributeMenu.remove();\n      }\n    });\n  }\n}\n\n/**\n * Tribute.js\n * Native ES6 JavaScript @mention Plugin\n **/\n\nexport default Tribute;\n","import \"../assets/index-d9ae9479.css\";\nimport { r as c } from \"../chunks/index-5f2a5f57.mjs\";\nimport { N as rt } from \"../chunks/index-5f2a5f57.mjs\";\nimport { generateUrl as p } from \"@nextcloud/router\";\nimport { n as u } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nimport { t as o } from \"../chunks/l10n-f692947e.mjs\";\nimport \"../Directives/Tooltip.mjs\";\nimport { emojiAddRecent as m, emojiSearch as d } from \"../Functions/emoji.mjs\";\nimport { n as h, j as f } from \"../chunks/referencePickerModal-6bc8f6b9.mjs\";\nimport \"@nextcloud/axios\";\nimport \"unist-util-visit\";\nimport \"unist-builder\";\nimport \"unified\";\nimport \"remark-parse\";\nimport \"remark-breaks\";\nimport \"remark-rehype\";\nimport \"rehype-react\";\nimport \"rehype-external-links\";\nimport \"./NcEmptyContent.mjs\";\nimport \"./NcSelect.mjs\";\nimport \"./NcLoadingIcon.mjs\";\nimport \"./NcTextField.mjs\";\nimport \"./NcButton.mjs\";\nimport \"./NcModal.mjs\";\nimport \"@nextcloud/event-bus\";\nimport l from \"tributejs/dist/tribute.esm.js\";\nimport _ from \"debounce\";\nimport g from \"string-length\";\nimport { VTooltip as b } from \"floating-vue\";\nconst y = {\n  name: \"NcAutoCompleteResult\",\n  props: {\n    title: {\n      type: String,\n      required: !0\n    },\n    subline: {\n      type: String,\n      default: null\n    },\n    id: {\n      type: String,\n      default: null\n    },\n    icon: {\n      type: String,\n      required: !0\n    },\n    iconUrl: {\n      type: String,\n      default: null\n    },\n    source: {\n      type: String,\n      required: !0\n    },\n    status: {\n      type: [Object, Array],\n      default: () => ({})\n    }\n  },\n  computed: {\n    avatarUrl() {\n      return this.iconUrl ? this.iconUrl : this.id && this.source === \"users\" ? this.getAvatarUrl(this.id, 44) : null;\n    },\n    haveStatus() {\n      var e, t, n;\n      return ((e = this.status) == null ? void 0 : e.icon) || ((t = this.status) == null ? void 0 : t.status) && ((n = this.status) == null ? void 0 : n.status) !== \"offline\";\n    }\n  },\n  methods: {\n    getAvatarUrl(e, t) {\n      return p(\"/avatar/{user}/{size}\", {\n        user: e,\n        size: t\n      });\n    }\n  }\n};\nvar C = function() {\n  var t = this, n = t._self._c;\n  return n(\"div\", { staticClass: \"autocomplete-result\" }, [n(\"div\", { staticClass: \"autocomplete-result__icon\", class: [t.icon, `autocomplete-result__icon--${t.avatarUrl ? \"with-avatar\" : \"\"}`], style: t.avatarUrl ? { backgroundImage: `url(${t.avatarUrl})` } : null }, [t.haveStatus ? n(\"div\", { staticClass: \"autocomplete-result__status\", class: [`autocomplete-result__status--${t.status && t.status.icon ? \"icon\" : t.status.status}`] }, [t._v(\" \" + t._s(t.status && t.status.icon || \"\") + \" \")]) : t._e()]), n(\"span\", { staticClass: \"autocomplete-result__content\" }, [n(\"span\", { staticClass: \"autocomplete-result__title\", attrs: { title: t.title } }, [t._v(\" \" + t._s(t.title) + \" \")]), t.subline ? n(\"span\", { staticClass: \"autocomplete-result__subline\" }, [t._v(\" \" + t._s(t.subline) + \" \")]) : t._e()])]);\n}, v = [], k = /* @__PURE__ */ u(\n  y,\n  C,\n  v,\n  !1,\n  null,\n  \"25cf09d8\",\n  null,\n  null\n);\nconst x = k.exports;\nconst T = {\n  name: \"NcRichContenteditable\",\n  directives: {\n    tooltip: b\n  },\n  mixins: [c],\n  props: {\n    value: {\n      type: String,\n      default: \"\",\n      required: !0\n    },\n    placeholder: {\n      type: String,\n      default: o(\"Write a message …\")\n    },\n    autoComplete: {\n      type: Function,\n      default: () => []\n    },\n    menuContainer: {\n      type: Element,\n      default: () => document.body\n    },\n    /**\n     * Make the contenteditable looks like a textarea or not.\n     * Default looks like a single-line input.\n     * This also handle the default enter/shift+enter behaviour.\n     * if multiline, enter = newline; otherwise enter = submit\n     * shift+enter always add a new line. ctrl+enter always submits\n     */\n    multiline: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * Is the content editable ?\n     */\n    contenteditable: {\n      type: Boolean,\n      default: !0\n    },\n    /**\n     * Disable the editing and show specific disabled design\n     */\n    disabled: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * Max allowed length\n     */\n    maxlength: {\n      type: Number,\n      default: null\n    },\n    /**\n     * Enable or disable emoji autocompletion\n     */\n    emojiAutocomplete: {\n      type: Boolean,\n      default: !0\n    },\n    /**\n     * Enable or disable link autocompletion\n     */\n    linkAutocomplete: {\n      type: Boolean,\n      default: !0\n    }\n  },\n  emits: [\n    \"submit\",\n    \"paste\",\n    \"update:value\",\n    \"smart-picker-submit\"\n  ],\n  data() {\n    return {\n      textSmiles: [],\n      tribute: null,\n      autocompleteOptions: {\n        // Allow spaces in the middle of mentions\n        allowSpaces: !0,\n        fillAttr: \"id\",\n        // Search against id and title (display name)\n        lookup: (e) => `${e.id} ${e.title}`,\n        // Where to inject the menu popup\n        menuContainer: this.menuContainer,\n        // Popup mention autocompletion templates\n        menuItemTemplate: (e) => this.renderComponentHtml(e.original, x),\n        // Hide if no results\n        noMatchTemplate: () => '<span class=\"hidden\"></span>',\n        // Inner display of mentions\n        selectTemplate: (e) => {\n          var t;\n          return this.genSelectTemplate((t = e == null ? void 0 : e.original) == null ? void 0 : t.id);\n        },\n        // Autocompletion results\n        values: this.debouncedAutoComplete\n      },\n      emojiOptions: {\n        trigger: \":\",\n        // Don't use the tribute search function at all\n        // We pass search results as values (see below)\n        lookup: (e, t) => t,\n        // Where to inject the menu popup\n        menuContainer: this.menuContainer,\n        // Popup mention autocompletion templates\n        menuItemTemplate: (e) => this.textSmiles.includes(e.original) ? e.original : `<span class=\"tribute-container-emoji__item__emoji\">${e.original.native}</span> :${e.original.short_name}`,\n        // Hide if no results\n        noMatchTemplate: () => o(\"No emoji found\"),\n        // Display raw emoji along with its name\n        selectTemplate: (e) => this.textSmiles.includes(e.original) ? e.original : (m(e.original), e.original.native),\n        // Pass the search results as values\n        values: (e, t) => {\n          const n = d(e);\n          this.textSmiles.includes(\":\" + e) && n.unshift(\":\" + e), t(n);\n        },\n        // Class added to the menu container\n        containerClass: \"tribute-container-emoji\",\n        // Class added to each list item\n        itemClass: \"tribute-container-emoji__item\"\n      },\n      linkOptions: {\n        trigger: \"/\",\n        // Don't use the tribute search function at all\n        // We pass search results as values (see below)\n        lookup: (e, t) => t,\n        // Where to inject the menu popup\n        menuContainer: this.menuContainer,\n        // Popup mention autocompletion templates\n        menuItemTemplate: (e) => `<img class=\"tribute-container-link__item__icon\" src=\"${e.original.icon_url}\"> <span class=\"tribute-container-link__item__title\">${e.original.title}</span>`,\n        // Hide if no results\n        noMatchTemplate: () => o(\"No link provider found\"),\n        selectTemplate: this.getLink,\n        // Pass the search results as values\n        values: (e, t) => t(h(e)),\n        // Class added to the menu container\n        containerClass: \"tribute-container-link\",\n        // Class added to each list item\n        itemClass: \"tribute-container-link__item\"\n      },\n      // Represent the raw untrimmed text of the contenteditable\n      // serves no other purpose than to check whether the\n      // content is empty or not\n      localValue: this.value,\n      // Is in text composition session in IME\n      isComposing: !1\n    };\n  },\n  computed: {\n    /**\n     * Is the current trimmed value empty?\n     *\n     * @return {boolean}\n     */\n    isEmptyValue() {\n      return !this.localValue || this.localValue && this.localValue.trim() === \"\";\n    },\n    /**\n     * Is this Firefox? 🙄\n     *\n     * @return {boolean}\n     */\n    isFF() {\n      return !!navigator.userAgent.match(/firefox/i);\n    },\n    /**\n     * Is the current value over maxlength?\n     *\n     * @return {boolean}\n     */\n    isOverMaxlength() {\n      return this.isEmptyValue || !this.maxlength ? !1 : g(this.localValue) > this.maxlength;\n    },\n    /**\n     * Tooltip to show if characters count is over limit\n     *\n     * @return {string}\n     */\n    tooltipString() {\n      return this.isOverMaxlength ? {\n        content: o(\"Message limit of {count} characters reached\", { count: this.maxlength }),\n        shown: !0,\n        trigger: \"manual\"\n      } : null;\n    },\n    /**\n     * Edit is only allowed when contenteditableis true and disabled is false\n     *\n     * @return {boolean}\n     */\n    canEdit() {\n      return this.contenteditable && !this.disabled;\n    },\n    /**\n     * Proxied native event handlers without custom event handlers\n     *\n     * @return {Record<string, Function>}\n     */\n    listeners() {\n      const e = { ...this.$listeners };\n      return delete e.paste, e;\n    }\n  },\n  watch: {\n    /**\n     * If the parent value change, we compare the plain text rendering\n     * If it's different, we render everything and update the main content\n     */\n    value() {\n      const e = this.$refs.contenteditable.innerHTML;\n      this.value.trim() !== this.parseContent(e).trim() && this.updateContent(this.value);\n    }\n  },\n  mounted() {\n    const e = [\"d\", \"D\", \"p\", \"P\", \"s\", \"S\", \"x\", \"X\", \")\", \"(\", \"|\", \"/\"];\n    this.textSmiles = [], e.forEach((t) => {\n      this.textSmiles.push(\":\" + t), this.textSmiles.push(\":-\" + t);\n    }), this.autocompleteTribute = new l(this.autocompleteOptions), this.autocompleteTribute.attach(this.$el), this.emojiAutocomplete && (this.emojiTribute = new l(this.emojiOptions), this.emojiTribute.attach(this.$el)), this.linkAutocomplete && (this.linkTribute = new l(this.linkOptions), this.linkTribute.attach(this.$el)), this.updateContent(this.value), this.$refs.contenteditable.contentEditable = this.canEdit;\n  },\n  beforeDestroy() {\n    this.autocompleteTribute && this.autocompleteTribute.detach(this.$el), this.emojiTribute && this.emojiTribute.detach(this.$el), this.linkTribute && this.linkTribute.detach(this.$el);\n  },\n  methods: {\n    /**\n     * Focus the richContenteditable\n     *\n     * @public\n     */\n    focus() {\n      this.$refs.contenteditable.focus();\n    },\n    getLink(e) {\n      return f(e.original.id).then((t) => {\n        const n = document.getElementById(\"tmp-smart-picker-result-node\"), i = {\n          result: t,\n          insertText: !0\n        };\n        if (this.$emit(\"smart-picker-submit\", i), i.insertText) {\n          const s = document.createTextNode(t);\n          n.replaceWith(s), this.setCursorAfter(s), this.updateValue(this.$refs.contenteditable.innerHTML);\n        } else\n          n.remove();\n      }).catch((t) => {\n        console.debug(\"Smart picker promise rejected:\", t);\n        const n = document.getElementById(\"tmp-smart-picker-result-node\");\n        this.setCursorAfter(n), n.remove();\n      }), '<span id=\"tmp-smart-picker-result-node\"></span>';\n    },\n    setCursorAfter(e) {\n      const t = document.createRange();\n      t.setEndAfter(e), t.collapse();\n      const n = window.getSelection();\n      n.removeAllRanges(), n.addRange(t);\n    },\n    /**\n     * Re-emit the input event to the parent\n     *\n     * @param {Event} event the input event\n     */\n    onInput(e) {\n      this.updateValue(e.target.innerHTML);\n    },\n    /**\n     * When pasting, sanitize the content, extract text\n     * and render it again\n     *\n     * @param {Event} event the paste event\n     * @fires Event paste the original paste event\n     */\n    onPaste(e) {\n      if (!this.canEdit)\n        return;\n      e.preventDefault();\n      const t = e.clipboardData;\n      if (this.$emit(\"paste\", e), t.files.length !== 0 || !Object.values(t.items).find((a) => a == null ? void 0 : a.type.startsWith(\"text\")))\n        return;\n      const n = t.getData(\"text\"), i = window.getSelection();\n      if (!i.rangeCount) {\n        this.updateValue(n);\n        return;\n      }\n      const s = i.getRangeAt(0);\n      i.deleteFromDocument(), s.insertNode(document.createTextNode(n));\n      const r = document.createRange();\n      r.setStart(e.target, s.endOffset), r.collapse(!0), i.removeAllRanges(), i.addRange(r), this.updateValue(this.$refs.contenteditable.innerHTML);\n    },\n    /**\n     * Update the value text from the provided html\n     *\n     * @param {string} htmlOrText the html content (or raw text with @mentions)\n     */\n    updateValue(e) {\n      const t = this.parseContent(e);\n      this.localValue = t, this.$emit(\"update:value\", t);\n    },\n    /**\n     * Update content and local value\n     *\n     * @param {string} value the message value\n     */\n    updateContent(e) {\n      const t = this.renderContent(e);\n      this.$refs.contenteditable.innerHTML = t, this.localValue = e;\n    },\n    /**\n     * Because FF have a decade old bug preventing contenteditable=false\n     * to properly be deleted on backspace, we have to hack 👀\n     * https://stackoverflow.com/a/59383394/3885878\n     * https://stackoverflow.com/a/30574622\n     *\n     * @param {Event} event the delete keydown event\n     */\n    onDelete(e) {\n      if (!this.isFF || !window.getSelection || !this.canEdit)\n        return;\n      const t = window.getSelection(), n = e.target;\n      if (!t.isCollapsed || !t.rangeCount)\n        return;\n      const i = t.getRangeAt(t.rangeCount - 1);\n      if (i.commonAncestorContainer.nodeType === 3 && i.startOffset > 0)\n        return;\n      const s = document.createRange();\n      if (t.anchorNode !== n)\n        s.selectNodeContents(n), s.setEndBefore(t.anchorNode);\n      else if (t.anchorOffset > 0)\n        s.setEnd(n, t.anchorOffset);\n      else\n        return;\n      s.setStart(n, s.endOffset - 1);\n      const r = s.cloneContents().lastChild;\n      r && r.contentEditable === \"false\" && (s.deleteContents(), e.preventDefault());\n    },\n    /**\n     * Enter key pressed. Submits if not multiline\n     *\n     * @param {Event} event the keydown event\n     */\n    onEnter(e) {\n      this.multiline || this.isOverMaxlength || this.autocompleteTribute.isActive || this.emojiTribute.isActive || this.linkTribute.isActive || this.isComposing || (e.preventDefault(), e.stopPropagation(), this.$emit(\"submit\", e));\n    },\n    /**\n     * Ctrl + Enter key pressed is used to submit\n     *\n     * @param {Event} event the keydown event\n     */\n    onCtrlEnter(e) {\n      this.isOverMaxlength || this.$emit(\"submit\", e);\n    },\n    /**\n     * Debounce the autocomplete function\n     */\n    debouncedAutoComplete: _(async function(e, t) {\n      this.autoComplete(e, t);\n    }, 100),\n    onKeyUp(e) {\n      e.stopImmediatePropagation();\n    }\n  }\n};\nvar S = function() {\n  var t = this, n = t._self._c;\n  return n(\"div\", t._g({ directives: [{ name: \"tooltip\", rawName: \"v-tooltip\", value: t.tooltipString, expression: \"tooltipString\" }], ref: \"contenteditable\", staticClass: \"rich-contenteditable__input\", class: {\n    \"rich-contenteditable__input--empty\": t.isEmptyValue,\n    \"rich-contenteditable__input--multiline\": t.multiline,\n    \"rich-contenteditable__input--overflow\": t.isOverMaxlength,\n    \"rich-contenteditable__input--disabled\": t.disabled\n  }, attrs: { contenteditable: t.canEdit, placeholder: t.placeholder, \"aria-placeholder\": t.placeholder, \"aria-multiline\": \"true\", role: \"textbox\" }, on: { input: t.onInput, compositionstart: function(i) {\n    t.isComposing = !0;\n  }, compositionend: function(i) {\n    t.isComposing = !1;\n  }, keydown: [function(i) {\n    return !i.type.indexOf(\"key\") && t._k(i.keyCode, \"delete\", [8, 46], i.key, [\"Backspace\", \"Delete\", \"Del\"]) ? null : t.onDelete.apply(null, arguments);\n  }, function(i) {\n    return !i.type.indexOf(\"key\") && t._k(i.keyCode, \"enter\", 13, i.key, \"Enter\") || i.ctrlKey || i.shiftKey || i.altKey || i.metaKey ? null : t.onEnter.apply(null, arguments);\n  }, function(i) {\n    return !i.type.indexOf(\"key\") && t._k(i.keyCode, \"enter\", 13, i.key, \"Enter\") || !i.ctrlKey || i.shiftKey || i.altKey || i.metaKey ? null : (i.stopPropagation(), i.preventDefault(), t.onCtrlEnter.apply(null, arguments));\n  }], paste: t.onPaste, \"!keyup\": function(i) {\n    return i.stopPropagation(), i.preventDefault(), t.onKeyUp.apply(null, arguments);\n  } } }, t.listeners));\n}, A = [], E = /* @__PURE__ */ u(\n  T,\n  S,\n  A,\n  !1,\n  null,\n  \"599f92d5\",\n  null,\n  null\n);\nconst it = E.exports;\nexport {\n  x as NcAutoCompleteResult,\n  rt as NcMentionBubble,\n  it as default\n};\n","import \"../assets/referencePickerModal-3a127978.css\";\nimport { n as c } from \"./_plugin-vue2_normalizer-71e2aa87.mjs\";\nimport { t as n } from \"./l10n-f692947e.mjs\";\nimport p from \"@nextcloud/axios\";\nimport { loadState as C } from \"@nextcloud/initial-state\";\nimport { imagePath as L, generateOcsUrl as _ } from \"@nextcloud/router\";\nimport m from \"../Components/NcEmptyContent.mjs\";\nimport { N as P } from \"./index-20a9ace9.mjs\";\nimport w from \"../Components/NcSelect.mjs\";\nimport N from \"../Components/NcLoadingIcon.mjs\";\nimport E from \"../Components/NcTextField.mjs\";\nimport { D as I } from \"./DotsHorizontal-0ee7d901.mjs\";\nimport O from \"../Components/NcButton.mjs\";\nimport B from \"../Components/NcModal.mjs\";\nimport { emit as M } from \"@nextcloud/event-bus\";\nimport { A as V } from \"./ArrowLeft-3779ba88.mjs\";\nimport { C as W } from \"./Close-271f72e2.mjs\";\nimport q from \"vue\";\nwindow._vue_richtext_widgets || (window._vue_richtext_widgets = {});\nconst T = (t) => !!window._vue_richtext_widgets[t], j = (t, e, r = (s) => {\n}) => {\n  if (window._vue_richtext_widgets[t]) {\n    console.error(\"Widget for id \" + t + \" already registered\");\n    return;\n  }\n  window._vue_richtext_widgets[t] = {\n    id: t,\n    callback: e,\n    onDestroy: r\n  };\n}, z = (t, { richObjectType: e, richObject: r, accessible: s }) => {\n  if (e !== \"open-graph\") {\n    if (!window._vue_richtext_widgets[e]) {\n      console.error(\"Widget for rich object type \" + e + \" not registered\");\n      return;\n    }\n    window._vue_richtext_widgets[e].callback(t, { richObjectType: e, richObject: r, accessible: s });\n  }\n}, D = (t, e) => {\n  t !== \"open-graph\" && window._vue_richtext_widgets[t] && window._vue_richtext_widgets[t].onDestroy(e);\n};\nwindow._registerWidget = j;\nconst A = {\n  name: \"NcReferenceWidget\",\n  props: {\n    reference: {\n      type: Object,\n      required: !0\n    }\n  },\n  data() {\n    return {\n      compact: 3\n    };\n  },\n  computed: {\n    hasCustomWidget() {\n      return T(this.reference.richObjectType);\n    },\n    noAccess() {\n      return this.reference && !this.reference.accessible;\n    },\n    descriptionStyle() {\n      if (this.compact === 0)\n        return {\n          display: \"none\"\n        };\n      const t = this.compact < 4 ? this.compact : 3;\n      return {\n        lineClamp: t,\n        webkitLineClamp: t\n      };\n    },\n    compactLink() {\n      const t = this.reference.openGraphObject.link;\n      return t ? t.startsWith(\"https://\") ? t.substring(8) : t.startsWith(\"http://\") ? t.substring(7) : t : \"\";\n    }\n  },\n  mounted() {\n    this.renderWidget(), this.observer = new ResizeObserver((t) => {\n      t[0].contentRect.width < 450 ? this.compact = 0 : t[0].contentRect.width < 550 ? this.compact = 1 : t[0].contentRect.width < 650 ? this.compact = 2 : this.compact = 3;\n    }), this.observer.observe(this.$el);\n  },\n  beforeDestroy() {\n    this.observer.disconnect(), D(this.reference.richObjectType, this.$el);\n  },\n  methods: {\n    renderWidget() {\n      var t;\n      this.$refs.customWidget && (this.$refs.customWidget.innerHTML = \"\"), ((t = this == null ? void 0 : this.reference) == null ? void 0 : t.richObjectType) !== \"open-graph\" && this.$nextTick(() => {\n        z(this.$refs.customWidget, this.reference);\n      });\n    }\n  }\n};\nvar F = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", [e.reference && e.hasCustomWidget ? r(\"div\", { staticClass: \"widget-custom\" }, [r(\"div\", { ref: \"customWidget\" })]) : !e.noAccess && e.reference && e.reference.openGraphObject && !e.hasCustomWidget ? r(\"a\", { staticClass: \"widget-default\", attrs: { href: e.reference.openGraphObject.link, rel: \"noopener noreferrer\", target: \"_blank\" } }, [e.reference.openGraphObject.thumb ? r(\"img\", { staticClass: \"widget-default--image\", attrs: { src: e.reference.openGraphObject.thumb } }) : e._e(), r(\"div\", { staticClass: \"widget-default--details\" }, [r(\"p\", { staticClass: \"widget-default--name\" }, [e._v(e._s(e.reference.openGraphObject.name))]), r(\"p\", { staticClass: \"widget-default--description\", style: e.descriptionStyle }, [e._v(e._s(e.reference.openGraphObject.description))]), r(\"p\", { staticClass: \"widget-default--link\" }, [e._v(e._s(e.compactLink))])])]) : e._e()]);\n}, U = [], Q = /* @__PURE__ */ c(\n  A,\n  F,\n  U,\n  !1,\n  null,\n  \"b1c5a80f\",\n  null,\n  null\n);\nconst G = Q.exports;\nwindow._vue_richtext_custom_picker_elements || (window._vue_richtext_custom_picker_elements = {});\nclass nt {\n  /**\n   * @param {HTMLElement} element The HTML element\n   * @param {object} object The object\n   */\n  constructor(e, r) {\n    this.element = e, this.object = r;\n  }\n}\nconst h = (t) => !!window._vue_richtext_custom_picker_elements[t], H = (t) => {\n  var r;\n  const e = (r = window._vue_richtext_custom_picker_elements[t]) == null ? void 0 : r.size;\n  return [\"small\", \"normal\", \"large\", \"full\"].includes(e) ? e : null;\n}, Z = (t, e, r = (i) => {\n}, s = \"large\") => {\n  if (window._vue_richtext_custom_picker_elements[t]) {\n    console.error(\"Custom reference picker element for id \" + t + \" already registered\");\n    return;\n  }\n  window._vue_richtext_custom_picker_elements[t] = {\n    id: t,\n    callback: e,\n    onDestroy: r,\n    size: s\n  };\n}, J = (t, { providerId: e, accessible: r }) => {\n  if (!window._vue_richtext_custom_picker_elements[e]) {\n    console.error(\"Custom reference picker element for reference provider ID \" + e + \" not registered\");\n    return;\n  }\n  return window._vue_richtext_custom_picker_elements[e].callback(t, { providerId: e, accessible: r });\n}, K = (t, e, r) => {\n  window._vue_richtext_custom_picker_elements[t] && window._vue_richtext_custom_picker_elements[t].onDestroy(e, r);\n};\nwindow._registerCustomPickerElement = Z;\nconst X = {\n  name: \"NcCustomPickerElement\",\n  props: {\n    /**\n     * The reference provider\n     */\n    provider: {\n      type: Object,\n      required: !0\n    }\n  },\n  emits: [\n    \"cancel\",\n    \"submit\"\n  ],\n  data() {\n    return {\n      isRegistered: h(this.provider.id),\n      renderResult: null\n    };\n  },\n  mounted() {\n    this.isRegistered && this.renderElement();\n  },\n  beforeDestroy() {\n    this.isRegistered && K(this.provider.id, this.$el, this.renderResult);\n  },\n  methods: {\n    renderElement() {\n      this.$refs.domElement && (this.$refs.domElement.innerHTML = \"\");\n      const t = J(this.$refs.domElement, { providerId: this.provider.id, accessible: !1 });\n      Promise.resolve(t).then((e) => {\n        var r, s;\n        this.renderResult = e, (r = this.renderResult.object) != null && r._isVue && ((s = this.renderResult.object) != null && s.$on) && (this.renderResult.object.$on(\"submit\", this.onSubmit), this.renderResult.object.$on(\"cancel\", this.onCancel)), this.renderResult.element.addEventListener(\"submit\", (i) => {\n          this.onSubmit(i.detail);\n        }), this.renderResult.element.addEventListener(\"cancel\", this.onCancel);\n      });\n    },\n    onSubmit(t) {\n      this.$emit(\"submit\", t);\n    },\n    onCancel() {\n      this.$emit(\"cancel\");\n    }\n  }\n};\nvar Y = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", { ref: \"domElement\" });\n}, ee = [], te = /* @__PURE__ */ c(\n  X,\n  Y,\n  ee,\n  !1,\n  null,\n  \"cf695ff9\",\n  null,\n  null\n);\nconst re = te.exports, b = \"any-link\", S = {\n  id: b,\n  title: n(\"Any link\"),\n  icon_url: L(\"core\", \"filetypes/link.svg\")\n};\nwindow._vue_richtext_reference_providers || (window._vue_richtext_reference_providers = C(\"core\", \"reference-provider-list\", []));\nwindow._vue_richtext_reference_provider_timestamps || (window._vue_richtext_reference_provider_timestamps = C(\"core\", \"reference-provider-timestamps\", {}));\nfunction se(t) {\n  return t === b ? S : R().find((e) => e.id === t);\n}\nfunction R() {\n  return window._vue_richtext_reference_providers.filter((t) => {\n    const e = !!t.search_providers_ids && t.search_providers_ids.length > 0 || h(t.id);\n    return e || console.debug(\"[smart picker]\", t.id, \"reference provider is discoverable but does not have any related search provider or custom picker component registered\"), e;\n  });\n}\nfunction ie(t) {\n  const e = window._vue_richtext_reference_provider_timestamps;\n  return t.sort((r, s) => r.order === s.order ? 0 : r.order > s.order ? 1 : -1).sort((r, s) => {\n    const i = e[r.id], o = e[s.id];\n    return i === o ? 0 : o === void 0 ? -1 : i === void 0 ? 1 : i > o ? -1 : 1;\n  });\n}\nfunction ne(t, e = null) {\n  const r = R(), s = t.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\"), i = new RegExp(s, \"i\"), l = ie(r).filter((a) => a.title.match(i)), u = e ? l.slice(0, e) : l;\n  return (t === \"\" || u.length === 0) && u.push(S), u;\n}\nfunction oe(t) {\n  const e = Math.floor(Date.now() / 1e3), r = {\n    timestamp: e\n  }, s = _(\"references/provider/{providerId}\", { providerId: t });\n  p.put(s, r).then((i) => {\n    window._vue_richtext_reference_provider_timestamps[t] = e;\n  });\n}\nlet y = 0;\nfunction x(t, e) {\n  return function() {\n    const r = this, s = arguments;\n    clearTimeout(y), y = setTimeout(function() {\n      t.apply(r, s);\n    }, e || 0);\n  };\n}\nfunction f(t) {\n  try {\n    return !!new URL(t);\n  } catch {\n    return !1;\n  }\n}\nconst ce = {\n  name: \"LinkVariantIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nvar le = function() {\n  var e = this, r = e._self._c;\n  return r(\"span\", e._b({ staticClass: \"material-design-icon link-variant-icon\", attrs: { \"aria-hidden\": !e.title, \"aria-label\": e.title, role: \"img\" }, on: { click: function(s) {\n    return e.$emit(\"click\", s);\n  } } }, \"span\", e.$attrs, !1), [r(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { fill: e.fillColor, width: e.size, height: e.size, viewBox: \"0 0 24 24\" } }, [r(\"path\", { attrs: { d: \"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\" } }, [e.title ? r(\"title\", [e._v(e._s(e.title))]) : e._e()])])]);\n}, ae = [], ue = /* @__PURE__ */ c(\n  ce,\n  le,\n  ae,\n  !1,\n  null,\n  null,\n  null,\n  null\n);\nconst v = ue.exports;\nconst de = {\n  name: \"NcProviderList\",\n  components: {\n    NcSelect: w,\n    NcHighlight: P,\n    NcEmptyContent: m,\n    LinkVariantIcon: v\n  },\n  emits: [\n    \"select-provider\",\n    \"submit\"\n  ],\n  data() {\n    return {\n      selectedProvider: null,\n      query: \"\",\n      multiselectPlaceholder: n(\"Select provider\"),\n      providerIconAlt: n(\"Provider icon\")\n    };\n  },\n  computed: {\n    options() {\n      const t = [];\n      return this.query !== \"\" && f(this.query) && t.push({\n        id: this.query,\n        title: this.query,\n        isLink: !0\n      }), t.push(...ne(this.query)), t;\n    }\n  },\n  methods: {\n    focus() {\n      setTimeout(() => {\n        var t, e, r;\n        (r = (e = (t = this.$refs[\"provider-select\"]) == null ? void 0 : t.$el) == null ? void 0 : e.querySelector(\"#provider-select-input\")) == null || r.focus();\n      }, 300);\n    },\n    onProviderSelected(t) {\n      t !== null && (t.isLink ? this.$emit(\"submit\", t.title) : this.$emit(\"select-provider\", t), this.selectedProvider = null);\n    },\n    onSearch(t, e) {\n      this.query = t;\n    }\n  }\n};\nvar he = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", { staticClass: \"provider-list\" }, [r(\"NcSelect\", { ref: \"provider-select\", staticClass: \"provider-list--select\", attrs: { \"input-id\": \"provider-select-input\", label: \"title\", placeholder: e.multiselectPlaceholder, options: e.options, \"append-to-body\": !1, \"clear-search-on-select\": !0, \"clear-search-on-blur\": () => !1, filterable: !1 }, on: { search: e.onSearch, input: e.onProviderSelected }, scopedSlots: e._u([{ key: \"option\", fn: function(s) {\n    return [s.isLink ? r(\"div\", { staticClass: \"provider\" }, [r(\"LinkVariantIcon\", { staticClass: \"link-icon\", attrs: { size: 20 } }), r(\"span\", [e._v(e._s(s.title))])], 1) : r(\"div\", { staticClass: \"provider\" }, [r(\"img\", { staticClass: \"provider-icon\", attrs: { src: s.icon_url, alt: e.providerIconAlt } }), r(\"NcHighlight\", { staticClass: \"option-text\", attrs: { search: e.query, text: s.title } })], 1)];\n  } }]), model: { value: e.selectedProvider, callback: function(s) {\n    e.selectedProvider = s;\n  }, expression: \"selectedProvider\" } }), r(\"NcEmptyContent\", { staticClass: \"provider-list--empty-content\", scopedSlots: e._u([{ key: \"icon\", fn: function() {\n    return [r(\"LinkVariantIcon\")];\n  }, proxy: !0 }]) })], 1);\n}, _e = [], pe = /* @__PURE__ */ c(\n  de,\n  he,\n  _e,\n  !1,\n  null,\n  \"9d850ea5\",\n  null,\n  null\n);\nconst me = pe.exports;\nconst fe = {\n  name: \"NcRawLinkInput\",\n  components: {\n    LinkVariantIcon: v,\n    NcEmptyContent: m,\n    NcLoadingIcon: N,\n    NcReferenceWidget: G,\n    NcTextField: E\n  },\n  props: {\n    /**\n     * The reference provider\n     */\n    provider: {\n      type: Object,\n      required: !0\n    }\n  },\n  emits: [\n    \"submit\"\n  ],\n  data() {\n    return {\n      inputValue: \"\",\n      loading: !1,\n      reference: null,\n      abortController: null,\n      inputPlaceholder: n(\"Enter link\")\n    };\n  },\n  computed: {\n    isLinkValid() {\n      return f(this.inputValue);\n    }\n  },\n  methods: {\n    focus() {\n      var t;\n      (t = this.$refs[\"url-input\"].$el.getElementsByTagName(\"input\")[0]) == null || t.focus();\n    },\n    onSubmit(t) {\n      const e = t.target.value;\n      this.isLinkValid && this.$emit(\"submit\", e);\n    },\n    onClear() {\n      this.inputValue = \"\", this.reference = null;\n    },\n    onInput() {\n      this.reference = null, this.abortController && this.abortController.abort(), this.isLinkValid && x(() => {\n        this.updateReference();\n      }, 500)();\n    },\n    updateReference() {\n      this.loading = !0, this.abortController = new AbortController(), p.get(_(\"references/resolve\", 2) + \"?reference=\" + encodeURIComponent(this.inputValue), {\n        signal: this.abortController.signal\n      }).then((t) => {\n        this.reference = t.data.ocs.data.references[this.inputValue];\n      }).catch((t) => {\n        console.error(t);\n      }).then(() => {\n        this.loading = !1;\n      });\n    }\n  }\n};\nvar ve = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", { staticClass: \"raw-link\" }, [r(\"div\", { staticClass: \"input-wrapper\" }, [r(\"NcTextField\", { ref: \"url-input\", attrs: { value: e.inputValue, \"show-trailing-button\": e.inputValue !== \"\", label: e.inputPlaceholder }, on: { \"update:value\": [function(s) {\n    e.inputValue = s;\n  }, e.onInput], \"trailing-button-click\": e.onClear }, nativeOn: { keyup: function(s) {\n    return !s.type.indexOf(\"key\") && e._k(s.keyCode, \"enter\", 13, s.key, \"Enter\") ? null : e.onSubmit.apply(null, arguments);\n  } } }, [e.loading ? r(\"NcLoadingIcon\", { attrs: { size: 16 } }) : r(\"LinkVariantIcon\", { attrs: { size: 16 } })], 1)], 1), e.reference !== null ? r(\"NcReferenceWidget\", { staticClass: \"reference-widget\", attrs: { reference: e.reference } }) : r(\"NcEmptyContent\", { staticClass: \"raw-link--empty-content\", scopedSlots: e._u([{ key: \"icon\", fn: function() {\n    return [e.provider.icon_url ? r(\"img\", { staticClass: \"provider-icon\", attrs: { src: e.provider.icon_url } }) : r(\"LinkVariantIcon\")];\n  }, proxy: !0 }]) })], 1);\n}, ge = [], ye = /* @__PURE__ */ c(\n  fe,\n  ve,\n  ge,\n  !1,\n  null,\n  \"d0ba247a\",\n  null,\n  null\n);\nconst ke = ye.exports;\nconst Ce = {\n  name: \"NcSearchResult\",\n  components: {\n    NcHighlight: P\n  },\n  props: {\n    /**\n     * Unified search result entry\n     */\n    entry: {\n      type: Object,\n      required: !0\n    },\n    /**\n     * The query that led to getting this result\n     * Used to highlight the entry text\n     */\n    query: {\n      type: String,\n      required: !0\n    }\n  }\n};\nvar Pe = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", { staticClass: \"result\" }, [e.entry.icon ? r(\"div\", { staticClass: \"result--icon-class\", class: { [e.entry.icon]: !0, rounded: e.entry.rounded } }) : r(\"img\", { staticClass: \"result--image\", class: { rounded: e.entry.rounded }, attrs: { src: e.entry.thumbnailUrl } }), r(\"div\", { staticClass: \"result--content\" }, [r(\"span\", { staticClass: \"result--content--name\" }, [r(\"NcHighlight\", { attrs: { search: e.query, text: e.entry.title } })], 1), r(\"span\", { staticClass: \"result--content--subline\" }, [r(\"NcHighlight\", { attrs: { search: e.query, text: e.entry.subline } })], 1)])]);\n}, we = [], be = /* @__PURE__ */ c(\n  Ce,\n  Pe,\n  we,\n  !1,\n  null,\n  \"7a394a58\",\n  null,\n  null\n);\nconst Se = be.exports;\nconst k = 5, Re = {\n  name: \"NcSearch\",\n  components: {\n    LinkVariantIcon: v,\n    DotsHorizontalIcon: I,\n    NcEmptyContent: m,\n    NcSelect: w,\n    NcSearchResult: Se\n  },\n  props: {\n    /**\n     * The selected reference provider\n     */\n    provider: {\n      type: Object,\n      required: !0\n    },\n    showEmptyContent: {\n      type: Boolean,\n      default: !0\n    },\n    searchPlaceholder: {\n      type: String,\n      default: null\n    }\n  },\n  emits: [\n    \"submit\"\n  ],\n  data() {\n    return {\n      searchQuery: \"\",\n      selectedResult: null,\n      resultsBySearchProvider: {},\n      searching: !1,\n      searchingMoreOf: null,\n      abortController: null,\n      noOptionsText: n(\"Start typing to search\"),\n      providerIconAlt: n(\"Provider icon\")\n    };\n  },\n  computed: {\n    mySearchPlaceholder() {\n      return this.searchPlaceholder || n(\"Search\");\n    },\n    searchProviderIds() {\n      return this.provider.search_providers_ids;\n    },\n    options() {\n      if (this.searchQuery === \"\")\n        return [];\n      const t = [];\n      return f(this.searchQuery) && t.push(this.rawLinkEntry), t.push(...this.formattedSearchResults), t;\n    },\n    rawLinkEntry() {\n      return {\n        id: \"rawLinkEntry\",\n        resourceUrl: this.searchQuery,\n        isRawLink: !0\n      };\n    },\n    formattedSearchResults() {\n      const t = [];\n      return this.searchProviderIds.forEach((e) => {\n        if (this.resultsBySearchProvider[e].entries.length > 0) {\n          (this.searchProviderIds.length > 1 || this.resultsBySearchProvider[e].entries.length > 1) && t.push({\n            id: \"groupTitle-\" + e,\n            name: this.resultsBySearchProvider[e].name,\n            isCustomGroupTitle: !0,\n            providerId: e\n          });\n          const r = this.resultsBySearchProvider[e].entries.map((s, i) => ({\n            id: \"provider-\" + e + \"-entry-\" + i,\n            ...s\n          }));\n          t.push(...r), this.resultsBySearchProvider[e].isPaginated && t.push({\n            id: \"moreOf-\" + e,\n            name: this.resultsBySearchProvider[e].name,\n            isMore: !0,\n            providerId: e,\n            isLoading: this.searchingMoreOf === e\n          });\n        }\n      }), t;\n    }\n  },\n  mounted() {\n    this.resetResults();\n  },\n  beforeDestroy() {\n    this.cancelSearchRequests();\n  },\n  methods: {\n    t: n,\n    resetResults() {\n      const t = {};\n      this.searchProviderIds.forEach((e) => {\n        t[e] = {\n          entries: []\n        };\n      }), this.resultsBySearchProvider = t;\n    },\n    focus() {\n      setTimeout(() => {\n        var t, e, r;\n        (r = (e = (t = this.$refs[\"search-select\"]) == null ? void 0 : t.$el) == null ? void 0 : e.querySelector(\"#search-select-input\")) == null || r.focus();\n      }, 300);\n    },\n    cancelSearchRequests() {\n      this.abortController && this.abortController.abort();\n    },\n    onSearchInput(t, e) {\n      this.searchQuery = t, x(() => {\n        this.updateSearch();\n      }, 500)();\n    },\n    onSelectResultSelected(t) {\n      t !== null && (t.resourceUrl ? (this.cancelSearchRequests(), this.$emit(\"submit\", t.resourceUrl)) : t.isMore && this.searchMoreOf(t.providerId).then(() => {\n        this.selectedResult = null;\n      }));\n    },\n    searchMoreOf(t) {\n      return this.searchingMoreOf = t, this.cancelSearchRequests(), this.searchProviders(t);\n    },\n    updateSearch() {\n      if (this.cancelSearchRequests(), this.resetResults(), this.searchQuery === \"\") {\n        this.searching = !1;\n        return;\n      }\n      return this.searchProviders();\n    },\n    searchProviders(t = null) {\n      var r, s;\n      this.abortController = new AbortController(), this.searching = !0;\n      const e = t === null ? [...this.searchProviderIds].map((i) => this.searchOneProvider(i)) : [this.searchOneProvider(t, (s = (r = this.resultsBySearchProvider[t]) == null ? void 0 : r.cursor) != null ? s : null)];\n      return Promise.allSettled(e).then((i) => {\n        !!i.find((l) => l.status === \"rejected\" && (l.reason.name === \"CanceledError\" || l.reason.code === \"ERR_CANCELED\")) || (this.searching = !1, this.searchingMoreOf = null);\n      });\n    },\n    searchOneProvider(t, e = null) {\n      const r = e === null ? _(\"search/providers/{providerId}/search?term={term}&limit={limit}\", { providerId: t, term: this.searchQuery, limit: k }) : _(\"search/providers/{providerId}/search?term={term}&limit={limit}&cursor={cursor}\", { providerId: t, term: this.searchQuery, limit: k, cursor: e });\n      return p.get(r, {\n        signal: this.abortController.signal\n      }).then((s) => {\n        const i = s.data.ocs.data;\n        this.resultsBySearchProvider[t].name = i.name, this.resultsBySearchProvider[t].cursor = i.cursor, this.resultsBySearchProvider[t].isPaginated = i.isPaginated, this.resultsBySearchProvider[t].entries.push(...i.entries);\n      });\n    }\n  }\n};\nvar xe = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", { staticClass: \"smart-picker-search\", class: { \"with-empty-content\": e.showEmptyContent } }, [r(\"NcSelect\", { ref: \"search-select\", staticClass: \"smart-picker-search--select\", attrs: { \"input-id\": \"search-select-input\", label: \"name\", placeholder: e.mySearchPlaceholder, options: e.options, \"append-to-body\": !1, \"close-on-select\": !1, \"clear-search-on-select\": !1, \"clear-search-on-blur\": () => !1, \"reset-focus-on-options-change\": !1, filterable: !1, autoscroll: !0, \"reset-on-options-change\": !1, loading: e.searching }, on: { search: e.onSearchInput, input: e.onSelectResultSelected }, scopedSlots: e._u([{ key: \"option\", fn: function(s) {\n    return [s.isRawLink ? r(\"div\", { staticClass: \"custom-option\" }, [r(\"LinkVariantIcon\", { staticClass: \"option-simple-icon\", attrs: { size: 20 } }), r(\"span\", { staticClass: \"option-text\" }, [e._v(\" \" + e._s(e.t(\"Raw link {options}\", { options: s.resourceUrl })) + \" \")])], 1) : s.resourceUrl ? r(\"NcSearchResult\", { staticClass: \"search-result\", attrs: { entry: s, query: e.searchQuery } }) : s.isCustomGroupTitle ? r(\"span\", { staticClass: \"custom-option group-name\" }, [e.provider.icon_url ? r(\"img\", { staticClass: \"provider-icon group-name-icon\", attrs: { src: e.provider.icon_url } }) : e._e(), r(\"span\", { staticClass: \"option-text\" }, [r(\"strong\", [e._v(e._s(s.name))])])]) : s.isMore ? r(\"span\", { class: { \"custom-option\": !0 } }, [s.isLoading ? r(\"span\", { staticClass: \"option-simple-icon icon-loading-small\" }) : r(\"DotsHorizontalIcon\", { staticClass: \"option-simple-icon\", attrs: { size: 20 } }), r(\"span\", { staticClass: \"option-text\" }, [e._v(\" \" + e._s(e.t('Load more \"{options}\"', { options: s.name })) + \" \")])], 1) : e._e()];\n  } }, { key: \"no-options\", fn: function() {\n    return [e._v(\" \" + e._s(e.noOptionsText) + \" \")];\n  }, proxy: !0 }]), model: { value: e.selectedResult, callback: function(s) {\n    e.selectedResult = s;\n  }, expression: \"selectedResult\" } }), e.showEmptyContent ? r(\"NcEmptyContent\", { staticClass: \"smart-picker-search--empty-content\", scopedSlots: e._u([{ key: \"icon\", fn: function() {\n    return [e.provider.icon_url ? r(\"img\", { staticClass: \"provider-icon\", attrs: { alt: e.providerIconAlt, src: e.provider.icon_url } }) : r(\"LinkVariantIcon\")];\n  }, proxy: !0 }], null, !1, 2922132592) }) : e._e()], 1);\n}, $e = [], Le = /* @__PURE__ */ c(\n  Re,\n  xe,\n  $e,\n  !1,\n  null,\n  \"97d196f0\",\n  null,\n  null\n);\nconst Ne = Le.exports;\nconst d = {\n  providerList: 1,\n  standardLinkInput: 2,\n  searchInput: 3,\n  customElement: 4\n}, Ee = {\n  name: \"NcReferencePicker\",\n  components: {\n    NcCustomPickerElement: re,\n    NcProviderList: me,\n    NcRawLinkInput: ke,\n    NcSearch: Ne\n  },\n  props: {\n    /**\n     * Provider to select on creation\n     * Default: null. Show the provider list\n     */\n    initialProvider: {\n      type: Object,\n      default: () => null\n    },\n    /**\n     * Optional width in pixels\n     * Default: 100%\n     */\n    width: {\n      type: Number,\n      default: null\n    },\n    /**\n     * Focus on the provider list select input on creation\n     * Default: true\n     */\n    focusOnCreate: {\n      type: Boolean,\n      default: !0\n    }\n  },\n  emits: [\n    \"cancel\",\n    \"cancel-raw-link\",\n    \"cancel-search\",\n    \"provider-selected\",\n    \"submit\"\n  ],\n  data() {\n    return {\n      MODES: d,\n      selectedProvider: this.initialProvider\n    };\n  },\n  computed: {\n    mode() {\n      return this.selectedProvider === null ? d.providerList : h(this.selectedProvider.id) ? d.customElement : this.selectedProvider.search_providers_ids ? d.searchInput : d.standardLinkInput;\n    },\n    pickerWrapperStyle() {\n      return {\n        width: this.width ? this.width + \"px\" : void 0\n      };\n    }\n  },\n  mounted() {\n    this.focusOnCreate && (this.initialProvider ? setTimeout(() => {\n      var t;\n      (t = this.$refs[\"url-input\"]) == null || t.focus();\n    }, 300) : this.$nextTick(() => {\n      var t;\n      (t = this.$refs[\"provider-list\"]) == null || t.focus();\n    }));\n  },\n  methods: {\n    onEscapePressed() {\n      this.selectedProvider !== null ? this.deselectProvider() : this.cancelProviderSelection();\n    },\n    onProviderSelected(t) {\n      this.selectedProvider = t, this.$emit(\"provider-selected\", t), this.$nextTick(() => {\n        var e;\n        (e = this.$refs[\"url-input\"]) == null || e.focus();\n      });\n    },\n    cancelCustomElement() {\n      this.deselectProvider();\n    },\n    cancelSearch() {\n      var t;\n      this.$emit(\"cancel-search\", (t = this.selectedProvider) == null ? void 0 : t.title), this.deselectProvider();\n    },\n    cancelRawLinkInput() {\n      var t;\n      this.$emit(\"cancel-raw-link\", (t = this.selectedProvider) == null ? void 0 : t.title), this.deselectProvider();\n    },\n    cancelProviderSelection() {\n      this.$emit(\"cancel\");\n    },\n    submitLink(t) {\n      this.selectedProvider !== null && oe(this.selectedProvider.id), this.$emit(\"submit\", t), this.deselectProvider();\n    },\n    deselectProvider() {\n      this.selectedProvider = null, this.$emit(\"provider-selected\", null), setTimeout(() => {\n        var t;\n        (t = this.$refs[\"provider-list\"]) == null || t.focus();\n      }, 300);\n    }\n  }\n};\nvar Ie = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", { staticClass: \"reference-picker\", style: e.pickerWrapperStyle, attrs: { tabindex: \"-1\" }, on: { keydown: function(s) {\n    return !s.type.indexOf(\"key\") && e._k(s.keyCode, \"esc\", 27, s.key, [\"Esc\", \"Escape\"]) ? null : (s.stopPropagation(), s.preventDefault(), e.onEscapePressed.apply(null, arguments));\n  } } }, [e.mode === e.MODES.providerList ? r(\"NcProviderList\", { ref: \"provider-list\", on: { \"select-provider\": e.onProviderSelected, submit: e.submitLink, cancel: e.cancelProviderSelection } }) : e.mode === e.MODES.standardLinkInput ? r(\"NcRawLinkInput\", { ref: \"url-input\", attrs: { provider: e.selectedProvider }, on: { submit: e.submitLink, cancel: e.cancelRawLinkInput } }) : e.mode === e.MODES.searchInput ? r(\"NcSearch\", { ref: \"url-input\", attrs: { provider: e.selectedProvider }, on: { cancel: e.cancelSearch, submit: e.submitLink } }) : e.mode === e.MODES.customElement ? r(\"div\", { staticClass: \"custom-element-wrapper\" }, [r(\"NcCustomPickerElement\", { attrs: { provider: e.selectedProvider }, on: { submit: e.submitLink, cancel: e.cancelCustomElement } })], 1) : e._e()], 1);\n}, Oe = [], Be = /* @__PURE__ */ c(\n  Ee,\n  Ie,\n  Oe,\n  !1,\n  null,\n  \"aa77d0d3\",\n  null,\n  null\n);\nconst Me = Be.exports;\nconst Ve = {\n  name: \"NcReferencePickerModal\",\n  components: {\n    NcReferencePicker: Me,\n    NcModal: B,\n    NcButton: O,\n    ArrowLeftIcon: V,\n    CloseIcon: W\n  },\n  props: {\n    /**\n     * Provider to select on creation\n     * Show the provider list if no initial one is provided\n     */\n    initialProvider: {\n      type: Object,\n      default: () => null\n    },\n    /**\n     * Focus on the input item on create\n     */\n    focusOnCreate: {\n      type: Boolean,\n      default: !0\n    },\n    /**\n     * If true, add the modal content to the Viewer trap elements via the event-bus\n     */\n    isInsideViewer: {\n      type: Boolean,\n      default: !1\n    }\n  },\n  emits: [\n    \"cancel\",\n    \"submit\"\n  ],\n  data() {\n    return {\n      show: !0,\n      selectedProvider: this.initialProvider,\n      backButtonTitle: n(\"Back to provider selection\"),\n      closeButtonTitle: n(\"Close\"),\n      closeButtonLabel: n(\"Close Smart Picker\")\n    };\n  },\n  computed: {\n    isProviderSelected() {\n      return this.selectedProvider !== null;\n    },\n    showBackButton() {\n      return this.initialProvider === null && this.isProviderSelected;\n    },\n    modalSize() {\n      var t;\n      return this.isProviderSelected && h(this.selectedProvider.id) ? (t = H(this.selectedProvider.id)) != null ? t : \"large\" : \"normal\";\n    },\n    showModalName() {\n      return !this.isProviderSelected || !h(this.selectedProvider.id);\n    },\n    modalName() {\n      return this.isProviderSelected ? this.selectedProvider.title : n(\"Smart Picker\");\n    }\n  },\n  mounted() {\n    if (this.isInsideViewer) {\n      const t = this.$refs.modal_content;\n      M(\"viewer:trapElements:changed\", t);\n    }\n  },\n  methods: {\n    onCancel() {\n      this.show = !1, this.$emit(\"cancel\");\n    },\n    onSubmit(t) {\n      this.show = !1, this.$emit(\"submit\", t);\n    },\n    onProviderSelect(t) {\n      this.selectedProvider = t, t === null && this.initialProvider !== null && this.onCancel();\n    },\n    onBackClicked() {\n      this.$refs.referencePicker.deselectProvider();\n    }\n  }\n};\nvar We = function() {\n  var e = this, r = e._self._c;\n  return e.show ? r(\"NcModal\", { staticClass: \"reference-picker-modal\", attrs: { size: e.modalSize, \"can-close\": !1 }, on: { close: e.onCancel } }, [r(\"div\", { ref: \"modal_content\", staticClass: \"reference-picker-modal--content\" }, [e.showBackButton ? r(\"NcButton\", { staticClass: \"back-button\", attrs: { \"aria-label\": e.backButtonTitle, title: e.backButtonTitle }, on: { click: e.onBackClicked }, scopedSlots: e._u([{ key: \"icon\", fn: function() {\n    return [r(\"ArrowLeftIcon\")];\n  }, proxy: !0 }], null, !1, 3001860362) }) : e._e(), r(\"NcButton\", { staticClass: \"close-button\", attrs: { \"aria-label\": e.closeButtonLabel, title: e.closeButtonTitle, type: \"tertiary\" }, on: { click: e.onCancel }, scopedSlots: e._u([{ key: \"icon\", fn: function() {\n    return [r(\"CloseIcon\")];\n  }, proxy: !0 }], null, !1, 2491825086) }), e.showModalName ? r(\"h2\", [e._v(\" \" + e._s(e.modalName) + \" \")]) : e._e(), r(\"NcReferencePicker\", { ref: \"referencePicker\", attrs: { \"initial-provider\": e.initialProvider, \"focus-on-create\": e.focusOnCreate }, on: { \"provider-selected\": e.onProviderSelect, submit: e.onSubmit, cancel: e.onCancel } })], 1)]) : e._e();\n}, qe = [], Te = /* @__PURE__ */ c(\n  Ve,\n  We,\n  qe,\n  !1,\n  null,\n  \"3f1a4ac7\",\n  null,\n  null\n);\nconst je = Te.exports;\nasync function ot(t = null, e = void 0) {\n  return await new Promise((r, s) => {\n    var g;\n    const i = \"referencePickerModal\", o = document.createElement(\"div\");\n    o.id = i, document.body.append(o);\n    const l = t === null ? null : (g = se(t)) != null ? g : null, u = q.extend(je), a = new u({\n      propsData: {\n        initialProvider: l,\n        isInsideViewer: e\n      }\n    }).$mount(o);\n    a.$on(\"cancel\", () => {\n      a.$destroy(), s(new Error(\"User cancellation\"));\n    }), a.$on(\"submit\", ($) => {\n      a.$destroy(), r($);\n    });\n  });\n}\nexport {\n  G as N,\n  Me as a,\n  je as b,\n  Ne as c,\n  z as d,\n  nt as e,\n  Z as f,\n  J as g,\n  h,\n  T as i,\n  ot as j,\n  b as k,\n  se as l,\n  R as m,\n  ne as n,\n  j as r,\n  ie as s\n};\n","import stripAnsi from 'strip-ansi';\nimport charRegex from 'char-regex';\n\nexport default function stringLength(string, {countAnsiEscapeCodes = false} = {}) {\n\tif (string === '') {\n\t\treturn 0;\n\t}\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string === '') {\n\t\treturn 0;\n\t}\n\n\treturn string.match(charRegex()).length;\n}\n"],"names":["Array","prototype","find","predicate","this","TypeError","value","list","Object","length","thisArg","arguments","i","call","window","CustomEvent","CustomEvent$1","event","params","bubbles","cancelable","detail","undefined","evt","document","createEvent","initCustomEvent","Event","TributeEvents","constructor","tribute","events","keys","key","bind","element","boundKeydown","keydown","boundKeyup","keyup","boundInput","input","addEventListener","unbind","removeEventListener","instance","shouldDeactivate","isActive","hideMenu","commandEvent","forEach","o","keyCode","callbacks","toLowerCase","inputEvent","click","menu","contains","target","li","preventDefault","stopPropagation","nodeName","parentNode","Error","selectItemAtIndex","getAttribute","current","externalTrigger","setTimeout","updateSelection","allowSpaces","hasTrailingSpace","autocompleteMode","triggerChar","getKeyCode","isNaN","trigger","triggers","charCodeAt","mentionText","collection","menuShowMinLength","showMenuFor","eventKeyPressed","el","info","range","getTriggerInfo","mentionTriggerChar","selectedPath","mentionSelectedPath","selectedOffset","mentionSelectedOffset","e","collectionItem","item","enter","filteredItems","menuSelected","escape","tab","space","spaceSelectsMatch","up","count","selected","setActiveLi","scrollTop","scrollHeight","down","delete","index","lis","querySelectorAll","parseInt","classList","add","selectClass","liClientRect","getBoundingClientRect","menuClientRect","bottom","scrollDistance","top","remove","getFullHeight","elem","includeMargin","height","style","currentStyle","getComputedStyle","parseFloat","marginTop","marginBottom","TributeMenuEvents","menuEvents","menuClickEvent","menuContainerScrollEvent","debounce","windowResizeEvent","positionMenuAtCaret","getDocument","menuContainer","func","wait","immediate","timeout","context","args","callNow","clearTimeout","apply","TributeRange","iframe","contentWindow","scrollTo","coordinates","positionMenu","cssText","isContentEditable","getContentEditableCaretPosition","mentionPosition","getTextAreaOrInputUnderlinePosition","left","right","scrollIntoView","menuDimensions","width","offsetWidth","offsetHeight","menuIsOffScreen","isMenuOffScreen","menuIsOffScreenHorizontally","innerWidth","menuIsOffScreenVertically","innerHeight","menuContainerIsBody","body","selectElement","targetElement","path","offset","childNodes","nextSibling","previousSibling","sel","getWindowSelection","createRange","setStart","setEnd","collapse","removeAllRanges","error","addRange","focus","replaceTriggerText","text","requireLeadingSpace","originalEvent","replaceEvent","replaceTextSuffix","endPos","pasteHtml","myField","textSuffix","startPos","substring","selectionStart","selectionEnd","dispatchEvent","html","anchorNode","deleteContents","createElement","innerHTML","node","lastNode","frag","createDocumentFragment","firstChild","appendChild","insertNode","cloneRange","setStartAfter","getSelection","getNodePositionInParent","getContentEditableSelectedPath","ctx","ce","contentEditable","push","reverse","getRangeAt","startOffset","getTextPrecedingCurrentSelection","selectedElem","workingNodeContent","textContent","selectStartOffset","textComponent","getLastWordInText","wordsArray","replace","split","trim","menuAlreadyActive","isAutocomplete","selectionInfo","effectiveRange","lastWordOfEffectiveRange","mentionSelectedElement","mostRecentTriggerCharPos","config","c","idx","lastIndexWithLeadingSpace","lastIndexOf","test","currentTriggerSnippet","firstSnippetChar","leadingSpace","regex","str","reversedStr","join","cidx","len","firstChar","match","triggerIdx","windowWidth","windowHeight","doc","documentElement","windowLeft","pageXOffset","scrollLeft","clientLeft","windowTop","pageYOffset","clientTop","menuTop","menuRight","menuBottom","menuLeft","Math","floor","ceil","getMenuDimensions","dimensions","position","flipped","isFirefox","mozInnerScreenX","div","id","computed","whiteSpace","wordWrap","visibility","prop","overflowY","overflow","span","rect","offsetTop","borderTopWidth","fontSize","offsetLeft","borderLeftWidth","parentHeight","scrollStillAvailable","removeChild","selectedNodePosition","clientRect","elemTop","elemBottom","maxY","targetY","TributeSearch","search","simpleFilter","pattern","array","filter","string","opts","pre","post","compareString","caseSensitive","skip","rendered","score","patternCache","traverse","render","cache","stringIndex","patternIndex","calculateScore","slice","best","temp","indexOf","pop","indices","arr","reduce","prev","extract","original","sort","a","b","Tribute","values","containerClass","itemClass","selectTemplate","menuItemTemplate","lookup","fillAttr","noMatchTemplate","searchOpts","menuItemLimit","defaultSelectTemplate","defaultMenuItemTemplate","t","console","warn","map","_isActive","val","noMatchEvent","matchItem","inputTypes","attach","jQuery","get","NodeList","HTMLCollection","_attach","hasAttribute","ensureEditable","setAttribute","createMenu","wrapper","ul","className","currentMentionTextSnapshot","tributeMenu","processValues","items","querySelector","fragment","_findLiTarget","movementY","showMenuForCollection","collectionIndex","activeElement","placeCaretAtEnd","insertTextAtCursor","insertAtCaret","selectNodeContents","createTextRange","textRange","moveToElementText","select","textNode","createTextNode","textarea","scrollPos","caretPos","front","back","content","replaceText","_append","newValues","concat","append","appendCurrent","detach","_detach","removeAttribute","y","name","props","title","type","String","required","subline","default","icon","iconUrl","source","status","avatarUrl","getAvatarUrl","haveStatus","n","methods","user","size","C","_self","_c","staticClass","class","backgroundImage","_v","_s","_e","attrs","v","x","exports","T","directives","tooltip","mixins","placeholder","autoComplete","Function","Element","multiline","Boolean","contenteditable","disabled","maxlength","Number","emojiAutocomplete","linkAutocomplete","emits","data","textSmiles","autocompleteOptions","renderComponentHtml","genSelectTemplate","debouncedAutoComplete","emojiOptions","includes","native","short_name","unshift","linkOptions","icon_url","getLink","localValue","isComposing","isEmptyValue","isFF","navigator","userAgent","isOverMaxlength","tooltipString","shown","canEdit","listeners","$listeners","paste","watch","$refs","parseContent","updateContent","mounted","autocompleteTribute","$el","emojiTribute","linkTribute","beforeDestroy","then","getElementById","result","insertText","$emit","s","replaceWith","setCursorAfter","updateValue","catch","debug","setEndAfter","onInput","onPaste","clipboardData","files","startsWith","getData","rangeCount","deleteFromDocument","r","endOffset","renderContent","onDelete","isCollapsed","commonAncestorContainer","nodeType","setEndBefore","anchorOffset","cloneContents","lastChild","onEnter","onCtrlEnter","async","onKeyUp","stopImmediatePropagation","S","_g","rawName","expression","ref","role","on","compositionstart","compositionend","_k","ctrlKey","shiftKey","altKey","metaKey","A","it","_vue_richtext_widgets","_registerWidget","callback","onDestroy","reference","compact","hasCustomWidget","richObjectType","noAccess","accessible","descriptionStyle","display","lineClamp","webkitLineClamp","compactLink","openGraphObject","link","renderWidget","observer","ResizeObserver","contentRect","observe","disconnect","customWidget","$nextTick","richObject","z","F","href","rel","thumb","src","description","U","G","_vue_richtext_custom_picker_elements","h","_registerCustomPickerElement","X","provider","isRegistered","renderResult","renderElement","domElement","providerId","J","Promise","resolve","object","_isVue","$on","onSubmit","onCancel","Y","ee","re","R","_vue_richtext_reference_providers","search_providers_ids","ne","RegExp","l","_vue_richtext_reference_provider_timestamps","order","ie","u","f","URL","fillColor","le","_b","$attrs","fill","viewBox","d","ae","de","components","NcSelect","NcHighlight","NcEmptyContent","LinkVariantIcon","selectedProvider","query","multiselectPlaceholder","providerIconAlt","options","isLink","onProviderSelected","onSearch","he","label","filterable","scopedSlots","_u","fn","alt","model","proxy","me","fe","NcLoadingIcon","NcReferenceWidget","NcTextField","inputValue","loading","abortController","inputPlaceholder","isLinkValid","getElementsByTagName","onClear","abort","updateReference","AbortController","encodeURIComponent","signal","ocs","references","ve","nativeOn","ge","ke","Ce","entry","Pe","rounded","thumbnailUrl","we","Se","Re","DotsHorizontalIcon","NcSearchResult","showEmptyContent","searchPlaceholder","searchQuery","selectedResult","resultsBySearchProvider","searching","searchingMoreOf","noOptionsText","mySearchPlaceholder","searchProviderIds","rawLinkEntry","formattedSearchResults","resourceUrl","isRawLink","entries","isCustomGroupTitle","isPaginated","isMore","isLoading","resetResults","cancelSearchRequests","onSearchInput","updateSearch","onSelectResultSelected","searchMoreOf","searchProviders","searchOneProvider","cursor","allSettled","reason","code","term","limit","xe","autoscroll","$e","Ne","providerList","standardLinkInput","searchInput","customElement","Ee","NcCustomPickerElement","NcProviderList","NcRawLinkInput","NcSearch","initialProvider","focusOnCreate","MODES","mode","pickerWrapperStyle","onEscapePressed","deselectProvider","cancelProviderSelection","cancelCustomElement","cancelSearch","cancelRawLinkInput","submitLink","Date","now","timestamp","put","oe","Ie","tabindex","submit","cancel","Oe","Ve","NcReferencePicker","NcModal","NcButton","ArrowLeftIcon","CloseIcon","isInsideViewer","show","backButtonTitle","closeButtonTitle","closeButtonLabel","isProviderSelected","showBackButton","modalSize","H","showModalName","modalName","modal_content","onProviderSelect","onBackClicked","referencePicker","We","close","qe","je","ot","g","se","extend","propsData","$mount","$destroy","$","stringLength","countAnsiEscapeCodes"],"sourceRoot":""}