{"version":3,"file":"editor.cjs","names":[],"sources":["../../../recipes/conversation_view/editor/editor.vue"],"sourcesContent":["<template>\n  <div\n    ref=\"editorRoot\"\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        <template v-for=\"button in buttonGroup.buttonGroup\">\n          <!-- Font Style Popover -->\n          <editor-toolbar-popover-button\n            v-if=\"button.buttonType === 'popover' && button.selector === 'fontStyle'\"\n            :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n            :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n            :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n            :tooltip-message=\"button.tooltipMessage\"\n            :data-qa=\"button.dataQA\"\n            :popover-data-qa=\"'dt-recipe-editor-font-style-input-popover'\"\n            :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n            :icon=\"button.icon\"\n            @shift-focus-right=\"shiftActionBarFocusRight\"\n            @shift-focus-left=\"shiftActionBarFocusLeft\"\n          >\n            <template #content=\"{ close }\">\n              <dt-combobox\n                label=\"\"\n                :label-visible=\"false\"\n                :show-list=\"true\"\n                :click-on-select=\"true\"\n                @escape=\"close()\"\n              >\n                <template #input=\"{ inputProps }\">\n                  <dt-input\n                    v-bind=\"inputProps\"\n                    v-model=\"fontStyleSearch\"\n                    root-class=\"d-p8 d-pb4 d-w216\"\n                    type=\"search\"\n                    :placeholder=\"i18n.$t('DIALTONE_EDITOR_FONT_STYLE_SEARCH_PLACEHOLDER')\"\n                    size=\"sm\"\n                    role=\"menuitem\"\n                  >\n                    <template #leftIcon=\"{ iconSize }\">\n                      <dt-icon-search :size=\"iconSize\" />\n                    </template>\n                  </dt-input>\n                </template>\n                <template #list=\"{ listProps }\">\n                  <ul\n                    v-bind=\"listProps\"\n                  >\n                    <dt-list-item\n                      v-for=\"fontStyle in filteredFontStyles\"\n                      :key=\"fontStyle.name\"\n                      :selected=\"isCurrentFontFamily(fontStyle.value)\"\n                      :style=\"{ fontFamily: fontStyle.value || 'inherit' }\"\n                      role=\"option\"\n                      navigation-type=\"arrow-keys\"\n                      @click=\"\n                        close(focusEditor);\n                        onFontStyleSelect(fontStyle.value)\n                      \"\n                    >\n                      {{ fontStyle.name }}\n                    </dt-list-item>\n                  </ul>\n                </template>\n              </dt-combobox>\n            </template>\n          </editor-toolbar-popover-button>\n\n          <!-- Font Size Dropdown -->\n          <editor-toolbar-dropdown-button\n            v-else-if=\"button.buttonType === 'popover' && button.selector === 'fontSize'\"\n            :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n            :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n            :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n            :tooltip-message=\"button.tooltipMessage\"\n            :data-qa=\"button.dataQA\"\n            :dropdown-data-qa=\"'dt-recipe-editor-font-size-input-popover'\"\n            :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n            :icon=\"button.icon\"\n            @shift-focus-right=\"shiftActionBarFocusRight\"\n            @shift-focus-left=\"shiftActionBarFocusLeft\"\n          >\n            <template #list=\"{ close }\">\n              <dt-list-item\n                v-for=\"fontSize in fontSizes\"\n                :key=\"fontSize.name\"\n                :selected=\"isCurrentFontSize(fontSize.value)\"\n                role=\"menuitem\"\n                navigation-type=\"arrow-keys\"\n                @click=\"\n                  close(focusEditor);\n                  onFontSizeSelect(fontSize.value, $event)\n                \"\n              >\n                <span :style=\"{ fontSize: fontSize.value }\">{{ fontSize.name }}</span>\n              </dt-list-item>\n            </template>\n          </editor-toolbar-dropdown-button>\n\n          <!-- Font Color Button -->\n          <dt-button\n            v-else-if=\"button.buttonType === 'custom' && button.selector === 'fontColor'\"\n            :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n            :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n            v-dt-tooltip=\"{\n              message: button.tooltipMessage,\n              placement: 'top',\n              externalAnchorElement: $refs[getButtonRef(buttonGroup.key, button.selector)]?.$el, \n            }\"\n            kind=\"muted\"\n            importance=\"clear\"\n            size=\"xs\"\n            :active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n            :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n            :aria-label=\"button.tooltipMessage\"\n            :data-qa=\"button.dataQA\"\n            @keydown.right.stop=\"shiftActionBarFocusRight\"\n            @keydown.left.stop=\"shiftActionBarFocusLeft\"\n            @click=\"button.onClick()\"\n          >\n            <template #icon>\n              <component\n                :is=\"button.icon\"\n                size=\"200\"\n                :style=\"!isDefaultFontColor ? { color: currentFontColor } : {}\"\n              />\n              <dt-input\n                :value=\"currentFontColor\"\n                root-class=\"d-w0 d-h0 d-of-hidden\"\n                input-class=\"colorPickerInput d-w0 d-h0 d-p0 d-bar0\"\n                input-wrapper-class=\"d-w0 d-h0 d-ba-none\"\n                size=\"sm\"\n                type=\"color\"\n                @input=\"onColorPickerInput\"\n                @click.stop\n              />\n            </template>\n          </dt-button>\n\n          <!-- Variable Popover -->\n          <editor-toolbar-popover-button\n            v-else-if=\"button.buttonType === 'popover' && button.selector === 'variable'\"\n            :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n            :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n            :is-active=\"false\"\n            :tooltip-message=\"button.tooltipMessage\"\n            :data-qa=\"button.dataQA\"\n            :popover-data-qa=\"'dt-recipe-editor-variable-popover'\"\n            :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n            :icon=\"button.icon\"\n            @shift-focus-right=\"shiftActionBarFocusRight\"\n            @shift-focus-left=\"shiftActionBarFocusLeft\"\n          >\n            <template #content=\"{ close }\">\n              <dt-combobox\n                label=\"\"\n                :label-visible=\"false\"\n                :show-list=\"true\"\n                :click-on-select=\"true\"\n                @escape=\"close()\"\n              >\n                <template #input=\"{ inputProps }\">\n                  <dt-input\n                    v-bind=\"inputProps\"\n                    v-model=\"variableSearchValue\"\n                    root-class=\"d-p8 d-pb4 d-w264\"\n                    type=\"search\"\n                    :placeholder=\"i18n.$t('DIALTONE_EDITOR_VARIABLE_POPOVER_SEARCH_PLACEHOLDER')\"\n                    size=\"md\"\n                    role=\"menuitem\"\n                  >\n                    <template #leftIcon=\"{ iconSize }\">\n                      <dt-icon-search :size=\"iconSize\" />\n                    </template>\n                  </dt-input>\n                </template>\n                <template #list=\"{ listProps }\">\n                  <div v-bind=\"listProps\">\n                    <dt-list-item-group\n                      v-for=\"(category, index) in filteredCategories\"\n                      :key=\"category.name\"\n                      :heading=\"category.name\"\n                      heading-class=\"d-headline--sm-compact d-p8\"\n                    >\n                      <dt-list-item\n                        v-for=\"item in getFilteredItemsForCategory(category)\"\n                        :key=\"category.name + item.name\"\n                        role=\"option\"\n                        navigation-type=\"arrow-keys\"\n                        @click=\"\n                          insertVariable(category.name, item);\n                          close(focusEditor);\n                        \"\n                      >\n                        {{ item.name }}\n                      </dt-list-item>\n                      <dt-dropdown-separator\n                        v-if=\"index < filteredCategories.length - 1\"\n                      />\n                    </dt-list-item-group>\n                  </div>\n                </template>\n              </dt-combobox>\n            </template>\n          </editor-toolbar-popover-button>\n\n          <!-- Regular Toolbar Button -->\n          <editor-toolbar-button\n            v-else-if=\"button.buttonType === 'button'\"\n            :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n            :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n            :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n            :tooltip-message=\"button.tooltipMessage\"\n            :data-qa=\"button.dataQA\"\n            :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n            :icon=\"button.icon\"\n            :label=\"button.label\"\n            :on-click=\"button.onClick\"\n            @shift-focus-right=\"shiftActionBarFocusRight\"\n            @shift-focus-left=\"shiftActionBarFocusLeft\"\n          />\n        </template>\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', { 'd-recipe-editor__content-image-resize': allowImageResize }]\"\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        :allow-variable=\"true\"\n        :allow-font-size=\"showFontSizeButton\"\n        :allow-background-color=\"allowBackgroundColor\"\n        :allow-line-height=\"allowLineHeight\"\n        :variable-items=\"flattenedVariableItems\"\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        :preserve-whitespace=\"preserveWhitespace\"\n        :use-div-tags=\"useDivTags\"\n        :allow-tables=\"allowTables\"\n        :allow-image-resize=\"allowImageResize\"\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        @selected=\"onSelected\"\n      />\n    </div>\n  </div>\n</template>\n\n<script>\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  EDITOR_DEFAULT_FONT_COLOR,\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 { DtListItem } from '@/components/list_item';\nimport { DtCombobox } from '@/components/combobox';\n\nimport { DtDropdownSeparator } from '@/components/dropdown/index.js';\nimport { DtListItemGroup } from '@/components/list_item_group/index.js';\nimport EditorToolbarButton from './EditorToolbarButton.vue';\nimport EditorToolbarDropdownButton from './EditorToolbarDropdownButton.vue';\nimport EditorToolbarPopoverButton from './EditorToolbarPopoverButton.vue';\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  DtIconType,\n  DtIconBraces,\n  DtIconSearch,\n  DtIconChevronDown,\n  DtIconFontSize,\n  DtIconStopFilled,\n} from '@dialpad/dialtone-icons/vue3';\nimport { DialtoneLocalization } from '@/localization';\n\nexport default {\n  compatConfig: { MODE: 3 },\n  name: 'DtRecipeEditor',\n\n  components: {\n    DtListItemGroup,\n    DtDropdownSeparator,\n    DtListItem,\n    DtRichTextEditor,\n    DtButton,\n    DtPopover,\n    DtStack,\n    DtInput,\n    DtTooltip,\n    DtCombobox,\n    EditorToolbarButton,\n    EditorToolbarDropdownButton,\n    EditorToolbarPopoverButton,\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    DtIconSearch,\n    DtIconType,\n    DtIconBraces,\n    DtIconChevronDown,\n    DtIconFontSize,\n    DtIconStopFilled,\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 button to add a variable\n     */\n    showVariableButton: {\n      type: Boolean,\n      default: false,\n    },\n\n    /**\n     * Variable categories to display when variable button is clicked\n     */\n    variableCategories: {\n      type: Array,\n      default: () => [],\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     * Show font style button.\n     */\n    showFontStyleButton: {\n      type: Boolean,\n      default: false,\n    },\n\n    /**\n     * Show font size button.\n     */\n    showFontSizeButton: {\n      type: Boolean,\n      default: false,\n    },\n\n    /**\n     * Show font color button.\n     */\n    showFontColorButton: {\n      type: Boolean,\n      default: false,\n    },\n\n    /**\n     * Available font styles for the font style dropdown.\n     */\n    fontStyles: {\n      type: Array,\n      default: () => [\n        { name: 'Arial', value: null }, // arial is the default font\n        { name: 'Georgia', value: 'Georgia' },\n        { name: 'Helvetica', value: 'Helvetica' },\n        { name: 'Verdana', value: 'Verdana'},\n        { name: 'Times New Roman', value: 'Times New Roman' },\n      ],\n    },\n\n    fontSizes : {\n      type: Array,\n      default: () => [\n        { name: 'Small', value: '12px'},\n        { name: 'Normal', value: '15px'},\n        { name: 'Large', value: '24px'},\n        { name: 'Huge', value: '36px'},\n      ],\n    },\n\n    /**\n     * Whether the input allows background color to be introduced in the text.\n     */\n    allowBackgroundColor: {\n      type: Boolean,\n      default: false,\n    },\n\n    /**\n     * Whether the input allows line height to be introduced in the text.\n     */\n    allowLineHeight: {\n      type: Boolean,\n      default: false,\n    },\n\n    /**\n     * Controls how whitespace is handled when parsing HTML content.\n     * - 'full': All whitespace is preserved\n     * - true: Whitespace in inline content is preserved, whitespace-only nodes between blocks are removed\n     * - false: Standard HTML whitespace collapsing\n     * @values full, true, false\n     */\n    preserveWhitespace: {\n      type: [Boolean, String],\n      default: 'full',\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     * Allow Tables to be used in to the editor\n     */\n    allowTables: {\n      type: Boolean,\n      default: false,\n    },\n\n    /**\n     * Allow image resizing\n     */\n    allowImageResize: {\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      currentFontColor: undefined,\n      showLinkInput: false,\n      fontStyleSearch: '',\n      linkInput: '',\n      currentButtonRefIndex: 0,\n      variableSearchValue: '',\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    flattenedVariableItems () {\n      if (!this.variableCategories) return [];\n      return this.variableCategories.reduce((acc, category) => {\n        return acc.concat(category.items || []);\n      }, []);\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          buttonType: 'button',\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.showFontStyleButton,\n          buttonType: 'popover',\n          selector: 'fontStyle',\n          icon: DtIconType,\n          dataQA: 'dt-recipe-editor-font-style-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_STYLE_BUTTON_LABEL'),\n        },\n        {\n          showBtn: this.showFontSizeButton,\n          buttonType: 'popover',\n          selector: 'fontSize',\n          icon: DtIconFontSize,\n          dataQA: 'dt-recipe-editor-font-size-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_SIZE_BUTTON_LABEL'),\n        },\n        {\n          showBtn: this.showFontColorButton,\n          buttonType: 'custom',\n          selector: 'fontColor',\n          icon: DtIconStopFilled,\n          dataQA: 'dt-recipe-editor-font-color-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_COLOR_BUTTON_LABEL'),\n          onClick: this.onColorPickerButtonClick,\n        },\n        {\n          showBtn: this.showBoldButton,\n          buttonType: 'button',\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          buttonType: 'button',\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          buttonType: 'button',\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          buttonType: 'button',\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          buttonType: 'button',\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          buttonType: 'button',\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          buttonType: 'button',\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          buttonType: 'button',\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          buttonType: 'button',\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          buttonType: 'button',\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          buttonType: 'button',\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          buttonType: 'button',\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          buttonType: 'button',\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        {\n          showBtn: this.showVariableButton,\n          buttonType: 'popover',\n          selector: 'variable',\n          icon: DtIconBraces,\n          dataQA: 'dt-recipe-editor-variable-btn',\n          tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_VARIABLE_BUTTON_LABEL'),\n        },\n      ].filter(button => button.showBtn);\n    },\n\n    linkButton () {\n      return {\n        showBtn: this.showAddLink.showAddLinkButton,\n        buttonType: 'custom',\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    filteredFontStyles () {\n      const searchValue = this.fontStyleSearch.toLowerCase();\n      return this.fontStyles.filter((item) =>\n        item.name.toLowerCase().includes(searchValue),\n      );\n    },\n\n    filteredCategories() {\n      return this.variableCategories.filter(\n        (category) => this.getFilteredItemsForCategory(category).length,\n      );\n    },\n\n    colorPickerInput() {\n      return this.$refs.editorRoot?.querySelector('.colorPickerInput');\n    },\n\n    isDefaultFontColor() {\n      return this.currentFontColor === EDITOR_DEFAULT_FONT_COLOR;\n    },\n\n    actionBarBtn () {\n      const ref = this.$refs[this.orderedRefs[this.currentButtonRefIndex]][0]?.$refs?.buttonRef // get nested ref\n        || this.$refs[this.orderedRefs[this.currentButtonRefIndex]];\n      return Array.isArray(ref) ? ref[0] : ref;\n    },\n\n  },\n\n  watch: {\n    modelValue (newValue) {\n      this.internalInputValue = newValue;\n    },\n  },\n\n  methods: {\n    removeClassStyleAttrs,\n    addClassStyleAttrs,\n\n    focusEditor () {\n      this.$refs.richTextEditor?.editor?.commands.focus();\n    },\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    insertVariable (categoryName, variableData) {\n      // Insert a variable using the custom command from the Variable extension\n      this.$refs.richTextEditor?.editor.chain().focus().insertVariable({\n        id: variableData.id,\n        placeholder: variableData.placeholder || '',\n        altText: '',\n        enableAltText: variableData.enableAltText,\n      }).run();\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    onSelected() {\n      this.updateFontColorInput();\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 previousActionBarBtn = this.actionBarBtn;\n      const index = (this.currentButtonRefIndex + shiftAmount) % this.orderedRefs.length;\n      this.currentButtonRefIndex = index >= 0 ? index : this.orderedRefs.length + index;\n      const currentActionBarBtn = this.actionBarBtn;\n\n      previousActionBarBtn.$el.blur();\n      currentActionBarBtn.$el.focus();\n    },\n\n    onFontStyleSelect (fontFamily) {\n      if (fontFamily) {\n        this.$refs.richTextEditor?.editor?.chain().focus().setFontFamily(fontFamily).run();\n      } else {\n        this.$refs.richTextEditor?.editor?.chain().focus().unsetFontFamily().run();\n      }\n      this.$refs.richTextEditor?.editor?.commands.focus();\n    },\n\n    isCurrentFontFamily (fontFamily) {\n      if (!fontFamily) {\n        return !this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.fontFamily;\n      }\n      return this.$refs.richTextEditor?.editor?.isActive('textStyle', { fontFamily });\n    },\n\n    onFontSizeSelect (fontSize) {\n      this.$refs.richTextEditor?.editor?.chain().focus().setFontSize(fontSize).run();\n      this.$refs.richTextEditor?.editor?.commands.focus();\n    },\n\n    isCurrentFontSize (fontSize) {\n      if (!fontSize) {\n        return !this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.fontSize;\n      }\n      return this.$refs.richTextEditor?.editor?.isActive('textStyle', { fontSize });\n    },\n\n    getFilteredItemsForCategory(category) {\n      const searchValue = this.variableSearchValue.toLowerCase();\n      if (category.name.toLowerCase().includes(searchValue)) {\n        return category.items;\n      }\n      return category.items.filter((item) =>\n        item.name.toLowerCase().includes(searchValue),\n      );\n    },\n\n    updateFontColorInput() {\n      this.currentFontColor = this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.color || EDITOR_DEFAULT_FONT_COLOR;\n    },\n\n    onColorPickerButtonClick () {\n      this.colorPickerInput?.click();\n    },\n\n    onColorPickerInput (fontColor) {\n      this.$refs.richTextEditor?.editor?.chain().focus().setColor(fontColor).run();\n      this.$refs.richTextEditor?.editor?.commands.focus();\n      this.updateFontColorInput();\n    },\n  },\n};\n</script>\n\n<style>\n/* Image resizing classes - only active when allowImageResize is true */\n\n/* Image border */\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-wrapper] {\n  outline: 1px solid var(--dt-color-chart-info-selected);\n  line-height: 0 !important;\n}\n\n/* Corner handles */\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle] {\n  position: absolute;\n  background: var(--dt-color-chart-info-selected);\n  z-index: 10;\n}\n\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-left'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-right'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-left'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-right'] {\n  width: 8px;\n  height: 8px;\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-left'] {\n  cursor: nwse-resize;\n  transform: translate(-50%, -50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-right'] {\n  cursor: nesw-resize;\n  transform: translate(50%, -50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-left'] {\n  cursor: nesw-resize;\n  transform: translate(-50%, 50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-right'] {\n  cursor: nwse-resize;\n  transform: translate(50%, 50%);\n}\n</style>\n"],"mappings":"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"}