{"version":3,"file":"editor.cjs","sources":["../../../recipes/conversation_view/editor/editor.vue"],"sourcesContent":["<template>\n  <div\n    class=\"d-recipe-editor\"\n    v-bind=\"addClassStyleAttrs($attrs)\"\n    data-qa=\"dt-recipe-editor\"\n    role=\"presentation\"\n    @click=\"$refs.richTextEditor.focusEditor()\"\n  >\n    <!-- Section for the top UI -->\n    <dt-stack\n      class=\"d-recipe-editor__top-bar\"\n      direction=\"row\"\n      gap=\"450\"\n    >\n      <dt-stack\n        v-for=\"buttonGroup in buttonGroups\"\n        :key=\"buttonGroup.key\"\n        direction=\"row\"\n        gap=\"300\"\n      >\n        <dt-tooltip\n          v-for=\"button in buttonGroup.buttonGroup\"\n          :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n          :message=\"button.tooltipMessage\"\n          placement=\"top\"\n        >\n          <template #anchor>\n            <dt-button\n              :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n              :active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n              :aria-label=\"button.tooltipMessage\"\n              :data-qa=\"button.dataQA\"\n              :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n              importance=\"clear\"\n              kind=\"muted\"\n              size=\"xs\"\n              @click=\"button.onClick()\"\n              @keydown.right.stop=\"shiftActionBarFocusRight\"\n              @keydown.left.stop=\"shiftActionBarFocusLeft\"\n            >\n              <template #icon>\n                <component\n                  :is=\"button.icon\"\n                  size=\"200\"\n                />\n              </template>\n              {{ button?.label }}\n            </dt-button>\n          </template>\n        </dt-tooltip>\n        <div class=\"d-recipe-editor__button-group-divider\" />\n      </dt-stack>\n      <dt-stack\n        v-if=\"linkButton.showBtn\"\n        direction=\"row\"\n        gap=\"300\"\n      >\n        <dt-popover\n          :open=\"showLinkInput\"\n          :show-close-button=\"false\"\n          data-qa=\"dt-recipe-editor-link-input-popover\"\n          padding=\"none\"\n          placement=\"bottom-start\"\n          @click=\"onInputFocus\"\n          @opened=\"updateInput\"\n          @click.stop=\"onInputFocus\"\n        >\n          <template #anchor>\n            <dt-tooltip\n              :key=\"linkButton.key\"\n              :message=\"linkButton.tooltipMessage\"\n              placement=\"top\"\n            >\n              <template #anchor>\n                <dt-button\n                  :ref=\"getButtonRef('custom', 'link')\"\n                  :active=\"$refs.richTextEditor?.editor?.isActive(linkButton.selector)\"\n                  :aria-label=\"linkButton.tooltipMessage\"\n                  :data-qa=\"linkButton.dataQA\"\n                  :tabindex=\"canFocus(getButtonRef('custom', 'link')) ? 0 : -1\"\n                  importance=\"clear\"\n                  kind=\"muted\"\n                  size=\"xs\"\n                  @click=\"linkButton.onClick()\"\n                  @keydown.right.stop=\"shiftActionBarFocusRight\"\n                  @keydown.left.stop=\"shiftActionBarFocusLeft\"\n                >\n                  <template #icon>\n                    <component\n                      :is=\"linkButton.icon\"\n                      size=\"200\"\n                    />\n                  </template>\n                </dt-button>\n              </template>\n            </dt-tooltip>\n          </template>\n\n          <template #content>\n            <div class=\"d-recipe-editor__popover-content\">\n              <span>\n                {{ showAddLinkButtonLabels.title }}\n              </span>\n              <dt-input\n                v-model=\"linkInput\"\n                :input-aria-label=\"showAddLinkButtonLabels['aria-label']\"\n                :placeholder=\"setLinkPlaceholder\"\n                data-qa=\"dt-recipe-editor-link-input\"\n                input-wrapper-class=\"d-recipe-editor-link__input-wrapper\"\n                @click=\"onInputFocus\"\n                @focus=\"onInputFocus\"\n                @click.stop=\"onInputFocus\"\n                @keydown.enter=\"setLink\"\n              />\n            </div>\n          </template>\n          <template #footerContent>\n            <dt-stack\n              direction=\"row\"\n              gap=\"300\"\n              class=\"d-recipe-editor__popover-footer\"\n            >\n              <dt-button\n                data-qa=\"dt-recipe-editor-remove-link-btn\"\n                importance=\"clear\"\n                kind=\"muted\"\n                size=\"sm\"\n                v-bind=\"removeLinkButtonLabels\"\n                @click=\"removeLink\"\n              >\n                {{ removeLinkButtonLabels.title }}\n              </dt-button>\n              <dt-button\n                data-qa=\"dt-recipe-editor-set-link-cancel-btn\"\n                importance=\"clear\"\n                kind=\"muted\"\n                size=\"sm\"\n                v-bind=\"cancelSetLinkButtonLabels\"\n                @click=\"closeLinkInput\"\n              >\n                {{ cancelSetLinkButtonLabels.title }}\n              </dt-button>\n              <dt-button\n                data-qa=\"dt-recipe-editor-set-link-confirm-btn\"\n                size=\"sm\"\n                v-bind=\"confirmSetLinkButtonLabels\"\n                @click=\"setLink\"\n              >\n                {{ confirmSetLinkButtonLabels.title }}\n              </dt-button>\n            </dt-stack>\n          </template>\n        </dt-popover>\n      </dt-stack>\n    </dt-stack>\n\n    <!-- Some wrapper to restrict the height and show the scrollbar -->\n    <div\n      :style=\"{ 'max-height': maxHeight }\"\n      class=\"d-recipe-editor__content\"\n    >\n      <dt-rich-text-editor\n        ref=\"richTextEditor\"\n        v-model=\"internalInputValue\"\n        :allow-font-color=\"true\"\n        :allow-font-family=\"true\"\n        :allow-inline-images=\"true\"\n        :allow-line-breaks=\"true\"\n        :hide-link-bubble-menu=\"true\"\n        :auto-focus=\"autoFocus\"\n        :editable=\"editable\"\n        :input-aria-label=\"inputAriaLabel\"\n        :input-class=\"`d-recipe-editor__content-input ${inputClass}`\"\n        :link=\"true\"\n        :output-format=\"htmlOutputFormat\"\n        :placeholder=\"placeholder\"\n        :use-div-tags=\"useDivTags\"\n        data-qa=\"dt-rich-text-editor\"\n        v-bind=\"removeClassStyleAttrs($attrs)\"\n        @text-input=\"onTextInput\"\n        @blur=\"onBlur\"\n        @focus=\"onFocus\"\n        @input=\"onInput($event)\"\n      />\n    </div>\n  </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n  DtRichTextEditor,\n  RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n  RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport {\n  EDITOR_SUPPORTED_LINK_PROTOCOLS,\n  EDITOR_DEFAULT_LINK_PREFIX,\n} from './editor_constants.js';\nimport { removeClassStyleAttrs, addClassStyleAttrs } from '@/common/utils';\nimport { DtButton } from '@/components/button';\nimport { DtPopover } from '@/components/popover';\nimport { DtStack } from '@/components/stack';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport {\n  DtIconAlignCenter,\n  DtIconAlignJustify,\n  DtIconAlignLeft,\n  DtIconAlignRight,\n  DtIconBold,\n  DtIconCodeBlock,\n  DtIconImage,\n  DtIconItalic,\n  DtIconQuickReply,\n  DtIconLink2,\n  DtIconListBullet,\n  DtIconListOrdered,\n  DtIconQuote,\n  DtIconStrikethrough,\n  DtIconUnderline,\n} from '@dialpad/dialtone-icons/vue3';\nimport { DialtoneLocalization } from '@/localization';\n\nexport default {\n  compatConfig: { MODE: 3 },\n  name: 'DtRecipeEditor',\n\n  components: {\n    DtRichTextEditor,\n    DtButton,\n    DtPopover,\n    DtStack,\n    DtInput,\n    DtTooltip,\n    DtIconQuickReply,\n    DtIconBold,\n    DtIconItalic,\n    DtIconUnderline,\n    DtIconStrikethrough,\n    DtIconListBullet,\n    DtIconListOrdered,\n    DtIconAlignLeft,\n    DtIconAlignCenter,\n    DtIconAlignRight,\n    DtIconAlignJustify,\n    DtIconQuote,\n    DtIconCodeBlock,\n    DtIconLink2,\n    DtIconImage,\n  },\n\n  mixins: [],\n\n  inheritAttrs: false,\n\n  props: {\n    /**\n     * Value of the input. The object format should match TipTap's JSON\n     * document structure: https://tiptap.dev/guide/output#option-1-json\n     */\n    modelValue: {\n      type: [Object, String],\n      default: '',\n    },\n\n    /**\n     * Whether the input is editable\n     */\n    editable: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Descriptive label for the input element\n     */\n    inputAriaLabel: {\n      type: String,\n      required: true,\n      default: '',\n    },\n\n    /**\n     * Additional class name for the input element. Only accepts a String value\n     * because this is passed to the editor via options. For multiple classes,\n     * join them into one string, e.g. \"d-p8 d-hmx96\"\n     */\n    inputClass: {\n      type: String,\n      default: '',\n    },\n\n    /**\n     * Whether the input should receive focus after the component has been\n     * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n     * - `start`  Sets the focus to the beginning of the input\n     * - `end`    Sets the focus to the end of the input\n     * - `all`    Selects the whole contents of the input\n     * - `Number` Sets the focus to a specific position in the input\n     * - `true`   Defaults to `start`\n     * - `false`  Disables autofocus\n     * @values true, false, start, end, all, number\n     */\n    autoFocus: {\n      type: [Boolean, String, Number],\n      default: false,\n      validator (autoFocus) {\n        if (typeof autoFocus === 'string') {\n          return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n        }\n        return true;\n      },\n    },\n\n    /**\n     * Placeholder text\n     */\n    placeholder: {\n      type: String,\n      default: '',\n    },\n\n    /**\n     * Content area needs to dynamically adjust height based on the conversation area height.\n     * can be vh|px|rem|em|%\n     */\n    maxHeight: {\n      type: String,\n      default: 'unset',\n    },\n\n    /**\n     * Placeholder text for the set link input field\n     */\n    setLinkPlaceholder: {\n      type: String,\n      default: '',\n    },\n\n    /**\n     * Show button to render text as bold\n     */\n    showBoldButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to render text in italics\n     */\n    showItalicsButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to underline text\n     */\n    showUnderlineButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to strike text\n     */\n    showStrikeButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to render list items\n     */\n    showListItemsButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to render ordered list items\n     */\n    showOrderedListButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to align text to the left\n     */\n    showAlignLeftButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to align text to the center\n     */\n    showAlignCenterButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to align text to the right\n     */\n    showAlignRightButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to justify text\n     */\n    showAlignJustifyButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to add quote format to text\n     */\n    showQuoteButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to add code block\n     */\n    showCodeBlockButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to handle quick replies\n     */\n    showQuickRepliesButton: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Show button to add an inline image\n     */\n    showInlineImageButton: {\n      type: Boolean,\n      default: false,\n    },\n\n    /**\n     * Show add link default config.\n     */\n    showAddLink: {\n      type: Object,\n      default: () => ({\n        showAddLinkButton: true,\n      }),\n    },\n\n    /**\n     * Use div tags instead of paragraph tags to show text\n     */\n    useDivTags: {\n      type: Boolean,\n      default: false,\n    },\n  },\n\n  emits: [\n    /**\n     * Native focus event\n     * @event input\n     * @type {String|JSON}\n     */\n    'focus',\n\n    /**\n     * Native blur event\n     * @event input\n     * @type {String|JSON}\n     */\n    'blur',\n\n    /**\n     * Native input event\n     * @event input\n     * @type {String|JSON}\n     */\n    'input',\n\n    /**\n     * Event fired to sync the modelValue prop with the parent component\n     * @event input\n     * @type {String|JSON}\n     */\n    'update:modelValue',\n\n    /**\n     * Quick replies button\n     * pressed event\n     * @event quick-replies-click\n     */\n    'quick-replies-click',\n\n    /**\n     * Emit when inline image button is clicked\n     * @event inline-image-click\n     */\n    'inline-image-click',\n\n    /**\n     * Emit when text input is changed\n     * @event text-input\n     * @type {String}\n     */\n    'text-input',\n  ],\n\n  data () {\n    return {\n      internalInputValue: this.modelValue, // internal input content\n      hasFocus: false,\n\n      linkOptions: {\n        class: 'd-recipe-editor__link',\n      },\n\n      showLinkInput: false,\n      linkInput: '',\n      currentButtonRefIndex: 0,\n      i18n: new DialtoneLocalization(),\n    };\n  },\n\n  computed: {\n    inputLength () {\n      return this.internalInputValue.length;\n    },\n\n    htmlOutputFormat () {\n      return RICH_TEXT_EDITOR_OUTPUT_FORMATS[2];\n    },\n\n    showingTextFormatButtons () {\n      return this.showBoldButton || this.showItalicsButton || this.showStrikeButton || this.showUnderlineButton;\n    },\n\n    showingAlignmentButtons () {\n      return this.showAlignLeftButton || this.showAlignCenterButton ||\n        this.showAlignRightButton || this.showAlignJustifyButton;\n    },\n\n    showingListButtons () {\n      return this.showListItemsButton || this.showOrderedListButton;\n    },\n\n    orderedRefs () {\n      const refs = this.buttonGroups.reduce(function (acc, buttonData) {\n        buttonData.buttonGroup.forEach(button => {\n          acc.push(this.getButtonRef(buttonData.key, button.selector));\n        }, this);\n        return acc;\n      }.bind(this), []);\n      refs.push(this.getButtonRef('custom', 'link'));\n      return refs;\n    },\n\n    buttonGroups () {\n      const individualButtonStacks = this.individualButtons.map(buttonData => ({\n        key: buttonData.selector,\n        buttonGroup: [buttonData],\n      }));\n      return [\n        { key: 'new', buttonGroup: this.newButtons },\n        { key: 'format', buttonGroup: this.textFormatButtons },\n        { key: 'alignment', buttonGroup: this.alignmentButtons },\n        { key: 'list', buttonGroup: this.listButtons },\n        ...individualButtonStacks,\n      ].filter(buttonGroupData => buttonGroupData.buttonGroup.length > 0);\n    },\n\n    newButtons () {\n      return [\n        {\n          showBtn: this.showQuickRepliesButton,\n          label: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n          selector: 'quickReplies',\n          icon: DtIconQuickReply,\n          dataQA: 'dt-recipe-editor-quick-replies-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n          onClick: this.onQuickRepliesClick,\n        },\n      ].filter(button => button.showBtn);\n    },\n\n    textFormatButtons () {\n      return [\n        {\n          showBtn: this.showBoldButton,\n          selector: 'bold',\n          icon: DtIconBold,\n          dataQA: 'dt-recipe-editor-bold-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BOLD_BUTTON_LABEL'),\n          onClick: this.onBoldTextToggle,\n        },\n        {\n          showBtn: this.showItalicsButton,\n          selector: 'italic',\n          icon: DtIconItalic,\n          dataQA: 'dt-recipe-editor-italics-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ITALICS_BUTTON_LABEL'),\n          onClick: this.onItalicTextToggle,\n        },\n        {\n          showBtn: this.showUnderlineButton,\n          selector: 'underline',\n          icon: DtIconUnderline,\n          dataQA: 'dt-recipe-editor-underline-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_UNDERLINE_BUTTON_LABEL'),\n          onClick: this.onUnderlineTextToggle,\n        },\n        {\n          showBtn: this.showStrikeButton,\n          selector: 'strike',\n          icon: DtIconStrikethrough,\n          dataQA: 'dt-recipe-editor-strike-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_STRIKE_BUTTON_LABEL'),\n          onClick: this.onStrikethroughTextToggle,\n        },\n      ].filter(button => button.showBtn);\n    },\n\n    alignmentButtons () {\n      return [\n        {\n          showBtn: this.showAlignLeftButton,\n          selector: { textAlign: 'left' },\n          icon: DtIconAlignLeft,\n          dataQA: 'dt-recipe-editor-align-left-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_LEFT_BUTTON_LABEL'),\n          onClick: () => this.onTextAlign('left'),\n        },\n        {\n          showBtn: this.showAlignCenterButton,\n          selector: { textAlign: 'center' },\n          icon: DtIconAlignCenter,\n          dataQA: 'dt-recipe-editor-align-center-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_CENTER_BUTTON_LABEL'),\n          onClick: () => this.onTextAlign('center'),\n        },\n        {\n          showBtn: this.showAlignRightButton,\n          selector: { textAlign: 'right' },\n          icon: DtIconAlignRight,\n          dataQA: 'dt-recipe-editor-align-right-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_RIGHT_BUTTON_LABEL'),\n          onClick: () => this.onTextAlign('right'),\n        },\n        {\n          showBtn: this.showAlignJustifyButton,\n          selector: { textAlign: 'justify' },\n          icon: DtIconAlignJustify,\n          dataQA: 'dt-recipe-editor-align-justify-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_JUSTIFY_BUTTON_LABEL'),\n          onClick: () => this.onTextAlign('justify'),\n        },\n      ].filter(button => button.showBtn);\n    },\n\n    listButtons () {\n      return [\n        {\n          showBtn: this.showListItemsButton,\n          selector: 'bulletList',\n          icon: DtIconListBullet,\n          dataQA: 'dt-recipe-editor-list-items-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BULLET_LIST_BUTTON_LABEL'),\n          onClick: this.onBulletListToggle,\n        },\n        {\n          showBtn: this.showOrderedListButton,\n          selector: 'orderedList',\n          icon: DtIconListOrdered,\n          dataQA: 'dt-recipe-editor-ordered-list-items-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ORDERED_LIST_BUTTON_LABEL'),\n          onClick: this.onOrderedListToggle,\n        },\n      ].filter(button => button.showBtn);\n    },\n\n    individualButtons () {\n      return [\n        {\n          showBtn: this.showQuoteButton,\n          selector: 'blockquote',\n          icon: DtIconQuote,\n          dataQA: 'dt-recipe-editor-blockquote-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUOTE_BUTTON_LABEL'),\n          onClick: this.onBlockquoteToggle,\n        },\n        {\n          showBtn: this.showCodeBlockButton,\n          selector: 'codeBlock',\n          icon: DtIconCodeBlock,\n          dataQA: 'dt-recipe-editor-code-block-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_CODE_BUTTON_LABEL'),\n          onClick: this.onCodeBlockToggle,\n        },\n        {\n          showBtn: this.showInlineImageButton,\n          selector: 'image',\n          icon: DtIconImage,\n          dataQA: 'dt-recipe-editor-inline-image-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_IMAGE_BUTTON_LABEL'),\n          // Handle getting image\n          onClick: this.onInsertInlineImageClick,\n        },\n      ].filter(button => button.showBtn);\n    },\n\n    linkButton () {\n      return {\n        showBtn: this.showAddLink.showAddLinkButton,\n        selector: 'link',\n        icon: DtIconLink2,\n        dataQA: 'dt-recipe-editor-add-link-btn',\n        tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_LINK_BUTTON_LABEL'),\n        onClick: this.openLinkInput,\n      };\n    },\n\n    confirmSetLinkButtonLabels () {\n      return this.i18n.$ta('DIALTONE_EDITOR_CONFIRM_SET_LINK_BUTTON');\n    },\n\n    cancelSetLinkButtonLabels () {\n      return this.i18n.$ta('DIALTONE_EDITOR_CANCEL_SET_LINK_BUTTON');\n    },\n\n    removeLinkButtonLabels () {\n      return this.i18n.$ta('DIALTONE_EDITOR_REMOVE_LINK_BUTTON');\n    },\n\n    showAddLinkButtonLabels () {\n      return this.i18n.$ta('DIALTONE_EDITOR_ADD_LINK_BUTTON');\n    },\n  },\n\n  watch: {\n    modelValue (newValue) {\n      this.internalInputValue = newValue;\n    },\n  },\n\n  methods: {\n    removeClassStyleAttrs,\n    addClassStyleAttrs,\n\n    onInputFocus (event) {\n      event?.stopPropagation();\n    },\n\n    removeLink () {\n      this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run();\n      this.closeLinkInput();\n    },\n\n    setLink (event) {\n      const editor = this.$refs.richTextEditor?.editor;\n      event?.preventDefault();\n      event?.stopPropagation();\n\n      if (!this.linkInput) {\n        // If link text is set to empty string,\n        // remove any existing links.\n        this.removeLink();\n        return;\n      }\n\n      // Check if input matches any of the supported link formats\n      const prefix = EDITOR_SUPPORTED_LINK_PROTOCOLS.find(prefixRegex => prefixRegex.test(this.linkInput));\n\n      if (!prefix) {\n        // If no matching pattern is found, prepend default prefix\n        this.linkInput = `${EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`;\n      }\n\n      const selection = editor?.view?.state?.selection;\n\n      if (selection.anchor === selection.head) {\n        // If no text has been selected, manually insert the link text.\n        // Do not rely on link options set through DtRichTextEditor\n        // component, because they clash with these and cause issues.\n        editor\n          .chain()\n          .focus()\n          .insertContentAt(\n            selection.anchor,\n          `<a class=\"${this.linkOptions.class}\" href=${this.linkInput}>${this.linkInput}</a>`,\n          )\n          .run();\n      } else {\n        // Set or edit the link\n        editor\n          .chain()\n          .focus()\n          .extendMarkRange('link')\n          .setLink({ href: this.linkInput, class: this.linkOptions.class })\n          .run();\n      }\n\n      this.closeLinkInput();\n    },\n\n    openLinkInput () {\n      this.showLinkInput = true;\n    },\n\n    updateInput (openedInput) {\n      if (!openedInput) {\n        return this.closeLinkInput();\n      }\n      this.linkInput = this.$refs.richTextEditor?.editor?.getAttributes('link')?.href;\n    },\n\n    closeLinkInput () {\n      this.showLinkInput = false;\n      this.linkInput = '';\n      this.$refs.richTextEditor.editor?.chain().focus();\n    },\n\n    onBoldTextToggle () {\n      this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run();\n    },\n\n    onItalicTextToggle () {\n      this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run();\n    },\n\n    onUnderlineTextToggle () {\n      this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run();\n    },\n\n    onStrikethroughTextToggle () {\n      this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run();\n    },\n\n    onTextAlign (alignment) {\n      if (this.$refs.richTextEditor?.editor?.isActive({ textAlign: alignment })) {\n        // If this alignment type is already set here, unset it\n        return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();\n      }\n      this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(alignment).run();\n    },\n\n    onBulletListToggle () {\n      this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run();\n    },\n\n    onOrderedListToggle () {\n      this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run();\n    },\n\n    onCodeBlockToggle () {\n      this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run();\n    },\n\n    onQuickRepliesClick () {\n      this.$emit('quick-replies-click');\n    },\n\n    onInsertInlineImageClick () {\n      this.$emit('inline-image-click');\n    },\n\n    insertInlineImage (imageUrl) {\n      this.$refs.richTextEditor?.editor.chain().focus().setImage({ src: imageUrl }).run();\n    },\n\n    insertInMessageBody (messageContent) {\n      this.$refs.richTextEditor?.editor.chain().focus().insertContent(messageContent).run();\n    },\n\n    setCursorPosition (position = null) {\n      this.$refs.richTextEditor?.editor.chain().focus(position).run();\n    },\n\n    onBlockquoteToggle () {\n      this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().run();\n    },\n\n    onTextInput (input) {\n      this.$emit('text-input', input);\n    },\n\n    onFocus (event) {\n      this.hasFocus = true;\n      this.$emit('focus', event);\n    },\n\n    onBlur (event) {\n      this.hasFocus = false;\n      this.$emit('blur', event);\n    },\n\n    onInput (event) {\n      this.$emit('input', event);\n      this.$emit('update:modelValue', event);\n    },\n\n    getButtonKey (key, selector) {\n      return `${key}-${JSON.stringify(selector)}`;\n    },\n\n    // Unique Button Ref Key to identify ref\n    getButtonRef (key, selector) {\n      return `${this.getButtonKey(key, selector)}-ref`;\n    },\n\n    /**\n     * Determines if an element in the action bar button list is focusable with tab key\n     * @param {string} refKey - unique identifier for the ref element in DOM\n     */\n    canFocus (refKey) {\n      return refKey === this.orderedRefs[this.currentButtonRefIndex];\n    },\n\n    shiftActionBarFocusRight () {\n      this.shiftButtonRefIndex(1);\n    },\n\n    shiftActionBarFocusLeft () {\n      this.shiftButtonRefIndex(-1);\n    },\n\n    shiftButtonRefIndex (shiftAmount) {\n      const previousRef = this.$refs[this.orderedRefs[this.currentButtonRefIndex]];\n      const previousActionBarBtn = Array.isArray(previousRef) ? previousRef[0] : previousRef;\n      const index = (this.currentButtonRefIndex + shiftAmount) % this.orderedRefs.length;\n      this.currentButtonRefIndex = index >= 0 ? index : this.orderedRefs.length + index;\n      const currentRef = this.$refs[this.orderedRefs[this.currentButtonRefIndex]];\n      const currentActionBarBtn = Array.isArray(currentRef) ? currentRef[0] : currentRef;\n      previousActionBarBtn.$el.blur();\n      currentActionBarBtn.$el.focus();\n    },\n  },\n};\n</script>\n"],"names":["_sfc_main","DtRichTextEditor","DtButton","DtPopover","DtStack","DtInput","DtTooltip","DtIconQuickReply","DtIconBold","DtIconItalic","DtIconUnderline","DtIconStrikethrough","DtIconListBullet","DtIconListOrdered","DtIconAlignLeft","DtIconAlignCenter","DtIconAlignRight","DtIconAlignJustify","DtIconQuote","DtIconCodeBlock","DtIconLink2","DtIconImage","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","DialtoneLocalization","RICH_TEXT_EDITOR_OUTPUT_FORMATS","refs","acc","buttonData","button","individualButtonStacks","buttonGroupData","newValue","removeClassStyleAttrs","addClassStyleAttrs","event","_e","_d","_c","_b","_a","editor","EDITOR_SUPPORTED_LINK_PROTOCOLS","prefixRegex","EDITOR_DEFAULT_LINK_PREFIX","selection","openedInput","alignment","imageUrl","messageContent","position","input","key","selector","refKey","shiftAmount","previousRef","previousActionBarBtn","index","currentRef","currentActionBarBtn","_createElementVNode","_hoisted_2","_createElementBlock","_mergeProps","$options","_ctx","_cache","$event","_createVNode","_component_dt_stack","_withCtx","_openBlock","_Fragment","_renderList","buttonGroup","_createBlock","_component_dt_tooltip","_component_dt_button","_withKeys","_withModifiers","_resolveDynamicComponent","_createTextVNode","_toDisplayString","_hoisted_1","_component_dt_popover","$data","_component_dt_input","$props","_createCommentVNode","_normalizeStyle","_component_dt_rich_text_editor"],"mappings":"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"}