@dialpad/dialtone 9.156.1 → 9.158.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/css/dialtone-default-theme.css +7 -0
  2. package/dist/css/dialtone-default-theme.min.css +1 -1
  3. package/dist/css/dialtone.css +7 -0
  4. package/dist/css/dialtone.min.css +1 -1
  5. package/dist/tokens/doc.json +76215 -76215
  6. package/dist/vue3/common/dates/index.js +4 -4
  7. package/dist/vue3/common/utils/index.js +3 -3
  8. package/dist/vue3/component-documentation.json +1 -1
  9. package/dist/vue3/dialtone-vue.cjs +1 -1
  10. package/dist/vue3/dialtone-vue.js +349 -349
  11. package/dist/vue3/lib/attachment-carousel/attachment-carousel.js +1 -1
  12. package/dist/vue3/lib/avatar/avatar.js +10 -10
  13. package/dist/vue3/lib/badge/badge.js +5 -5
  14. package/dist/vue3/lib/banner/banner.js +1 -1
  15. package/dist/vue3/lib/breadcrumbs/breadcrumb-item.js +2 -2
  16. package/dist/vue3/lib/breadcrumbs/breadcrumbs.js +1 -1
  17. package/dist/vue3/lib/button/button.js +14 -14
  18. package/dist/vue3/lib/button-group/button-group.js +2 -2
  19. package/dist/vue3/lib/button-group/buttons-decorator.js +2 -2
  20. package/dist/vue3/lib/callbar-button/callbar-button.js +2 -2
  21. package/dist/vue3/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.cjs +1 -1
  22. package/dist/vue3/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js +9 -9
  23. package/dist/vue3/lib/callbar-button-with-popover/callbar-button-with-popover.cjs +1 -1
  24. package/dist/vue3/lib/callbar-button-with-popover/callbar-button-with-popover.js +9 -9
  25. package/dist/vue3/lib/callbox/callbox.js +1 -1
  26. package/dist/vue3/lib/card/card.js +4 -4
  27. package/dist/vue3/lib/checkbox/checkbox.js +5 -5
  28. package/dist/vue3/lib/checkbox-group/checkboxes-decorator.js +1 -1
  29. package/dist/vue3/lib/chip/chip.js +7 -7
  30. package/dist/vue3/lib/codeblock/codeblock.js +2 -2
  31. package/dist/vue3/lib/collapsible/collapsible-lazy-show.js +3 -3
  32. package/dist/vue3/lib/collapsible/collapsible.js +8 -8
  33. package/dist/vue3/lib/combobox/combobox-empty-list.js +2 -2
  34. package/dist/vue3/lib/combobox/combobox-loading-list.js +3 -3
  35. package/dist/vue3/lib/combobox/combobox.cjs +1 -1
  36. package/dist/vue3/lib/combobox/combobox.js +8 -8
  37. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.js +1 -1
  38. package/dist/vue3/lib/combobox-with-popover/combobox-with-popover.cjs +1 -1
  39. package/dist/vue3/lib/combobox-with-popover/combobox-with-popover.js +10 -10
  40. package/dist/vue3/lib/contact-centers-row/contact-centers-row.js +7 -7
  41. package/dist/vue3/lib/contact-info/contact-info.js +1 -1
  42. package/dist/vue3/lib/contact-row/contact-row.js +1 -1
  43. package/dist/vue3/lib/datepicker/datepicker.js +1 -1
  44. package/dist/vue3/lib/datepicker/utils.js +4 -4
  45. package/dist/vue3/lib/description-list/description-list.js +3 -3
  46. package/dist/vue3/lib/dropdown/dropdown-list.js +4 -4
  47. package/dist/vue3/lib/dropdown/dropdown-separator.js +2 -2
  48. package/dist/vue3/lib/dropdown/dropdown.js +2 -2
  49. package/dist/vue3/lib/editor/editor.cjs +1 -1
  50. package/dist/vue3/lib/editor/editor.cjs.map +1 -1
  51. package/dist/vue3/lib/editor/editor.js +59 -51
  52. package/dist/vue3/lib/editor/editor.js.map +1 -1
  53. package/dist/vue3/lib/emoji/emoji.js +2 -2
  54. package/dist/vue3/lib/emoji-picker/emoji-picker.js +1 -1
  55. package/dist/vue3/lib/emoji-row/emoji-row.js +6 -6
  56. package/dist/vue3/lib/empty-state/empty-state.js +7 -7
  57. package/dist/vue3/lib/feed-item-pill/feed-item-pill.js +1 -1
  58. package/dist/vue3/lib/feed-item-row/feed-item-row.js +15 -15
  59. package/dist/vue3/lib/general-row/general-row.js +13 -13
  60. package/dist/vue3/lib/general-row/leftbar-general-row-icon.js +5 -5
  61. package/dist/vue3/lib/group-row/group-row.js +2 -2
  62. package/dist/vue3/lib/grouped-chip/grouped-chip.js +14 -14
  63. package/dist/vue3/lib/hovercard/hovercard.js +2 -2
  64. package/dist/vue3/lib/icon/icon.js +3 -3
  65. package/dist/vue3/lib/illustration/illustration.js +3 -3
  66. package/dist/vue3/lib/image-viewer/image-viewer.js +12 -12
  67. package/dist/vue3/lib/input/input.js +10 -10
  68. package/dist/vue3/lib/input-group/input-group.js +8 -8
  69. package/dist/vue3/lib/item-layout/item-layout.js +13 -13
  70. package/dist/vue3/lib/ivr-node/ivr-node.js +9 -9
  71. package/dist/vue3/lib/keyboard-shortcut/keyboard-shortcut.js +3 -3
  72. package/dist/vue3/lib/lazy-show/lazy-show.js +2 -2
  73. package/dist/vue3/lib/link/link.js +2 -2
  74. package/dist/vue3/lib/list-item/list-item.js +3 -3
  75. package/dist/vue3/lib/list-item-group/list-item-group.js +5 -5
  76. package/dist/vue3/lib/loader/loader.js +2 -2
  77. package/dist/vue3/lib/message-input/message-input-button.js +5 -5
  78. package/dist/vue3/lib/message-input/message-input-link.js +2 -2
  79. package/dist/vue3/lib/message-input/message-input-topbar.js +2 -2
  80. package/dist/vue3/lib/message-input/message-input.js +1 -1
  81. package/dist/vue3/lib/modal/modal.js +1 -1
  82. package/dist/vue3/lib/motion-text/motion-text.js +5 -5
  83. package/dist/vue3/lib/notice/notice-action.js +1 -1
  84. package/dist/vue3/lib/notice/notice-content.js +6 -6
  85. package/dist/vue3/lib/notice/notice-icon.js +4 -4
  86. package/dist/vue3/lib/notice/notice.js +1 -1
  87. package/dist/vue3/lib/pagination/pagination.js +1 -1
  88. package/dist/vue3/lib/popover/popover-constants.js +3 -3
  89. package/dist/vue3/lib/popover/popover-header-footer.js +6 -6
  90. package/dist/vue3/lib/popover/popover.js +7 -7
  91. package/dist/vue3/lib/presence/presence.js +4 -4
  92. package/dist/vue3/lib/radio/radio.js +10 -10
  93. package/dist/vue3/lib/radio-group/radios-decorator.js +1 -1
  94. package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs +4 -4
  95. package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
  96. package/dist/vue3/lib/rich-text-editor/rich-text-editor.js +161 -149
  97. package/dist/vue3/lib/rich-text-editor/rich-text-editor.js.map +1 -1
  98. package/dist/vue3/lib/root-layout/root-layout.js +3 -3
  99. package/dist/vue3/lib/scroller/scroller.js +1 -1
  100. package/dist/vue3/lib/select-menu/select-menu.js +12 -12
  101. package/dist/vue3/lib/settings-menu-button/settings-menu-button.js +3 -3
  102. package/dist/vue3/lib/skeleton/skeleton-list-item.js +2 -2
  103. package/dist/vue3/lib/skeleton/skeleton-paragraph.js +1 -1
  104. package/dist/vue3/lib/skeleton/skeleton-shape.js +2 -2
  105. package/dist/vue3/lib/skeleton/skeleton-text.js +4 -4
  106. package/dist/vue3/lib/skeleton/skeleton.js +1 -1
  107. package/dist/vue3/lib/split-button/split-button-alpha.js +2 -2
  108. package/dist/vue3/lib/split-button/split-button-omega.js +2 -2
  109. package/dist/vue3/lib/split-button/split-button.js +13 -13
  110. package/dist/vue3/lib/stack/stack.js +2 -2
  111. package/dist/vue3/lib/stack/utils.js +5 -5
  112. package/dist/vue3/lib/stack/validators.js +7 -7
  113. package/dist/vue3/lib/tab/tab-group.js +2 -2
  114. package/dist/vue3/lib/tab/tab-panel.js +2 -2
  115. package/dist/vue3/lib/tab/tab.js +2 -2
  116. package/dist/vue3/lib/time-pill/time-pill.js +2 -2
  117. package/dist/vue3/lib/toast/toast.js +1 -1
  118. package/dist/vue3/lib/toggle/toggle.js +7 -7
  119. package/dist/vue3/lib/tooltip/tooltip.js +5 -5
  120. package/dist/vue3/lib/top-banner-info/top-banner-info.js +2 -2
  121. package/dist/vue3/lib/unread-pill/unread-pill.js +1 -1
  122. package/dist/vue3/lib/validation-messages/validation-messages.js +6 -6
  123. package/dist/vue3/node_modules/@tiptap/vue-3.cjs.map +1 -1
  124. package/dist/vue3/node_modules/@tiptap/vue-3.js.map +1 -1
  125. package/dist/vue3/shared/sr_only_close_button.js +2 -2
  126. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts +9 -0
  127. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  128. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts +18 -0
  129. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  130. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts +9 -0
  131. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  132. package/package.json +9 -15
@@ -1 +1 @@
1
- {"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","_hoisted_1","_createElementBlock","_mergeProps","$options","_ctx","_cache","$event","_createVNode","_component_dt_stack","_Fragment","_renderList","buttonGroup","_createBlock","_openBlock","_component_dt_tooltip","_component_dt_button","_resolveDynamicComponent","_toDisplayString","_createElementVNode","_component_dt_popover","$data","_component_dt_input","$props","_createTextVNode","_component_dt_rich_text_editor"],"mappings":"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"}
1
+ {"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 :allow-tables=\"allowTables\"\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 * Allow Tables to be used in to the editor\n */\n allowTables: {\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","_hoisted_1","_createElementBlock","_mergeProps","$options","_ctx","_cache","$event","_createVNode","_component_dt_stack","_Fragment","_renderList","buttonGroup","_createBlock","_openBlock","_component_dt_tooltip","_component_dt_button","_resolveDynamicComponent","_toDisplayString","_createElementVNode","_component_dt_popover","$data","_component_dt_input","$props","_createTextVNode","_component_dt_rich_text_editor"],"mappings":"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"}
@@ -2,13 +2,13 @@ import { EDITOR_SUPPORTED_LINK_PROTOCOLS as z, EDITOR_DEFAULT_LINK_PREFIX as J }
2
2
  import { addClassStyleAttrs as j, removeClassStyleAttrs as H } from "../../common/utils/index.js";
3
3
  import { DtIconImage as w, DtIconLink2 as O, DtIconCodeBlock as D, DtIconQuote as R, DtIconAlignJustify as x, DtIconAlignRight as y, DtIconAlignCenter as C, DtIconAlignLeft as b, DtIconListOrdered as N, DtIconListBullet as S, DtIconStrikethrough as U, DtIconUnderline as F, DtIconItalic as v, DtIconBold as Q, DtIconQuickReply as M } from "@dialpad/dialtone-icons/vue3";
4
4
  import { DialtoneLocalization as Y } from "../../localization/index.js";
5
- import { resolveComponent as h, createElementBlock as A, openBlock as c, mergeProps as f, createVNode as a, createElementVNode as L, withCtx as u, createBlock as p, createCommentVNode as X, Fragment as q, renderList as V, withKeys as g, withModifiers as B, createTextVNode as _, toDisplayString as k, resolveDynamicComponent as K, normalizeStyle as W } from "vue";
5
+ import { resolveComponent as h, openBlock as c, createElementBlock as A, mergeProps as f, createVNode as a, withCtx as u, Fragment as q, renderList as V, createBlock as B, withKeys as g, withModifiers as p, createTextVNode as L, toDisplayString as k, resolveDynamicComponent as K, createElementVNode as _, createCommentVNode as X, normalizeStyle as W } from "vue";
6
6
  import { _ as Z } from "../../_plugin-vue_export-helper-CHgC5LLL.js";
7
7
  import tt from "../tooltip/tooltip.js";
8
8
  import et from "../input/input.js";
9
9
  import it from "../stack/stack.js";
10
- import nt from "../popover/popover.js";
11
- import ot from "../button/button.js";
10
+ import ot from "../popover/popover.js";
11
+ import nt from "../button/button.js";
12
12
  import rt from "../rich-text-editor/rich-text-editor.js";
13
13
  import { RICH_TEXT_EDITOR_OUTPUT_FORMATS as st, RICH_TEXT_EDITOR_AUTOFOCUS_TYPES as lt } from "../rich-text-editor/rich-text-editor-constants.js";
14
14
  const ut = {
@@ -16,8 +16,8 @@ const ut = {
16
16
  name: "DtRecipeEditor",
17
17
  components: {
18
18
  DtRichTextEditor: rt,
19
- DtButton: ot,
20
- DtPopover: nt,
19
+ DtButton: nt,
20
+ DtPopover: ot,
21
21
  DtStack: it,
22
22
  DtInput: et,
23
23
  DtTooltip: tt,
@@ -225,6 +225,13 @@ const ut = {
225
225
  useDivTags: {
226
226
  type: Boolean,
227
227
  default: !1
228
+ },
229
+ /**
230
+ * Allow Tables to be used in to the editor
231
+ */
232
+ allowTables: {
233
+ type: Boolean,
234
+ default: !1
228
235
  }
229
236
  },
230
237
  emits: [
@@ -301,9 +308,9 @@ const ut = {
301
308
  return this.showListItemsButton || this.showOrderedListButton;
302
309
  },
303
310
  orderedRefs() {
304
- const t = this.buttonGroups.reduce((function(e, n) {
305
- return n.buttonGroup.forEach((o) => {
306
- e.push(this.getButtonRef(n.key, o.selector));
311
+ const t = this.buttonGroups.reduce((function(e, o) {
312
+ return o.buttonGroup.forEach((n) => {
313
+ e.push(this.getButtonRef(o.key, n.selector));
307
314
  }, this), e;
308
315
  }).bind(this), []);
309
316
  return t.push(this.getButtonRef("custom", "link")), t;
@@ -490,8 +497,8 @@ const ut = {
490
497
  t == null || t.stopPropagation();
491
498
  },
492
499
  removeLink() {
493
- var t, e, n, o, r;
494
- (r = (o = (n = (e = (t = this.$refs.richTextEditor) == null ? void 0 : t.editor) == null ? void 0 : e.chain()) == null ? void 0 : n.focus()) == null ? void 0 : o.unsetLink()) == null || r.run(), this.closeLinkInput();
500
+ var t, e, o, n, r;
501
+ (r = (n = (o = (e = (t = this.$refs.richTextEditor) == null ? void 0 : t.editor) == null ? void 0 : e.chain()) == null ? void 0 : o.focus()) == null ? void 0 : n.unsetLink()) == null || r.run(), this.closeLinkInput();
495
502
  },
496
503
  setLink(t) {
497
504
  var r, i, d;
@@ -501,9 +508,9 @@ const ut = {
501
508
  return;
502
509
  }
503
510
  z.find((T) => T.test(this.linkInput)) || (this.linkInput = `${J}${this.linkInput}`);
504
- const o = (d = (i = e == null ? void 0 : e.view) == null ? void 0 : i.state) == null ? void 0 : d.selection;
505
- o.anchor === o.head ? e.chain().focus().insertContentAt(
506
- o.anchor,
511
+ const n = (d = (i = e == null ? void 0 : e.view) == null ? void 0 : i.state) == null ? void 0 : d.selection;
512
+ n.anchor === n.head ? e.chain().focus().insertContentAt(
513
+ n.anchor,
507
514
  `<a class="${this.linkOptions.class}" href=${this.linkInput}>${this.linkInput}</a>`
508
515
  ).run() : e.chain().focus().extendMarkRange("link").setLink({ href: this.linkInput, class: this.linkOptions.class }).run(), this.closeLinkInput();
509
516
  },
@@ -511,10 +518,10 @@ const ut = {
511
518
  this.showLinkInput = !0;
512
519
  },
513
520
  updateInput(t) {
514
- var e, n, o;
521
+ var e, o, n;
515
522
  if (!t)
516
523
  return this.closeLinkInput();
517
- this.linkInput = (o = (n = (e = this.$refs.richTextEditor) == null ? void 0 : e.editor) == null ? void 0 : n.getAttributes("link")) == null ? void 0 : o.href;
524
+ this.linkInput = (n = (o = (e = this.$refs.richTextEditor) == null ? void 0 : e.editor) == null ? void 0 : o.getAttributes("link")) == null ? void 0 : n.href;
518
525
  },
519
526
  closeLinkInput() {
520
527
  var t;
@@ -537,9 +544,9 @@ const ut = {
537
544
  (t = this.$refs.richTextEditor) == null || t.editor.chain().focus().toggleStrike().run();
538
545
  },
539
546
  onTextAlign(t) {
540
- var e, n, o, r;
541
- if ((n = (e = this.$refs.richTextEditor) == null ? void 0 : e.editor) != null && n.isActive({ textAlign: t }))
542
- return (o = this.$refs.richTextEditor) == null ? void 0 : o.editor.chain().focus().unsetTextAlign().run();
547
+ var e, o, n, r;
548
+ if ((o = (e = this.$refs.richTextEditor) == null ? void 0 : e.editor) != null && o.isActive({ textAlign: t }))
549
+ return (n = this.$refs.richTextEditor) == null ? void 0 : n.editor.chain().focus().unsetTextAlign().run();
543
550
  (r = this.$refs.richTextEditor) == null || r.editor.chain().focus().setTextAlign(t).run();
544
551
  },
545
552
  onBulletListToggle() {
@@ -609,14 +616,14 @@ const ut = {
609
616
  this.shiftButtonRefIndex(-1);
610
617
  },
611
618
  shiftButtonRefIndex(t) {
612
- const e = this.$refs[this.orderedRefs[this.currentButtonRefIndex]], n = Array.isArray(e) ? e[0] : e, o = (this.currentButtonRefIndex + t) % this.orderedRefs.length;
613
- this.currentButtonRefIndex = o >= 0 ? o : this.orderedRefs.length + o;
619
+ const e = this.$refs[this.orderedRefs[this.currentButtonRefIndex]], o = Array.isArray(e) ? e[0] : e, n = (this.currentButtonRefIndex + t) % this.orderedRefs.length;
620
+ this.currentButtonRefIndex = n >= 0 ? n : this.orderedRefs.length + n;
614
621
  const r = this.$refs[this.orderedRefs[this.currentButtonRefIndex]], i = Array.isArray(r) ? r[0] : r;
615
- n.$el.blur(), i.$el.focus();
622
+ o.$el.blur(), i.$el.focus();
616
623
  }
617
624
  }
618
625
  }, at = { class: "d-recipe-editor__popover-content" };
619
- function ct(t, e, n, o, r, i) {
626
+ function ct(t, e, o, n, r, i) {
620
627
  const d = h("dt-button"), T = h("dt-tooltip"), I = h("dt-stack"), P = h("dt-input"), G = h("dt-popover"), $ = h("dt-rich-text-editor");
621
628
  return c(), A("div", f({ class: "d-recipe-editor" }, i.addClassStyleAttrs(t.$attrs), {
622
629
  "data-qa": "dt-recipe-editor",
@@ -629,13 +636,13 @@ function ct(t, e, n, o, r, i) {
629
636
  gap: "450"
630
637
  }, {
631
638
  default: u(() => [
632
- (c(!0), A(q, null, V(i.buttonGroups, (s) => (c(), p(I, {
639
+ (c(!0), A(q, null, V(i.buttonGroups, (s) => (c(), B(I, {
633
640
  key: s.key,
634
641
  direction: "row",
635
642
  gap: "300"
636
643
  }, {
637
644
  default: u(() => [
638
- (c(!0), A(q, null, V(s.buttonGroup, (l) => (c(), p(T, {
645
+ (c(!0), A(q, null, V(s.buttonGroup, (l) => (c(), B(T, {
639
646
  key: i.getButtonKey(s.key, l.selector),
640
647
  message: l.tooltipMessage,
641
648
  placement: "top"
@@ -655,15 +662,15 @@ function ct(t, e, n, o, r, i) {
655
662
  size: "xs",
656
663
  onClick: (dt) => l.onClick(),
657
664
  onKeydown: [
658
- g(B(i.shiftActionBarFocusRight, ["stop"]), ["right"]),
659
- g(B(i.shiftActionBarFocusLeft, ["stop"]), ["left"])
665
+ g(p(i.shiftActionBarFocusRight, ["stop"]), ["right"]),
666
+ g(p(i.shiftActionBarFocusLeft, ["stop"]), ["left"])
660
667
  ]
661
668
  }, {
662
669
  icon: u(() => [
663
- (c(), p(K(l.icon), { size: "200" }))
670
+ (c(), B(K(l.icon), { size: "200" }))
664
671
  ]),
665
672
  default: u(() => [
666
- _(" " + k(l == null ? void 0 : l.label), 1)
673
+ L(" " + k(l == null ? void 0 : l.label), 1)
667
674
  ]),
668
675
  _: 2
669
676
  }, 1032, ["active", "aria-label", "data-qa", "tabindex", "onClick", "onKeydown"])
@@ -671,11 +678,11 @@ function ct(t, e, n, o, r, i) {
671
678
  }),
672
679
  _: 2
673
680
  }, 1032, ["message"]))), 128)),
674
- e[5] || (e[5] = L("div", { class: "d-recipe-editor__button-group-divider" }, null, -1))
681
+ e[5] || (e[5] = _("div", { class: "d-recipe-editor__button-group-divider" }, null, -1))
675
682
  ]),
676
683
  _: 2
677
684
  }, 1024))), 128)),
678
- i.linkButton.showBtn ? (c(), p(I, {
685
+ i.linkButton.showBtn ? (c(), B(I, {
679
686
  key: 0,
680
687
  direction: "row",
681
688
  gap: "300"
@@ -689,12 +696,12 @@ function ct(t, e, n, o, r, i) {
689
696
  placement: "bottom-start",
690
697
  onClick: [
691
698
  i.onInputFocus,
692
- B(i.onInputFocus, ["stop"])
699
+ p(i.onInputFocus, ["stop"])
693
700
  ],
694
701
  onOpened: i.updateInput
695
702
  }, {
696
703
  anchor: u(() => [
697
- (c(), p(T, {
704
+ (c(), B(T, {
698
705
  key: i.linkButton.key,
699
706
  message: i.linkButton.tooltipMessage,
700
707
  placement: "top"
@@ -713,12 +720,12 @@ function ct(t, e, n, o, r, i) {
713
720
  size: "xs",
714
721
  onClick: e[0] || (e[0] = (m) => i.linkButton.onClick()),
715
722
  onKeydown: [
716
- g(B(i.shiftActionBarFocusRight, ["stop"]), ["right"]),
717
- g(B(i.shiftActionBarFocusLeft, ["stop"]), ["left"])
723
+ g(p(i.shiftActionBarFocusRight, ["stop"]), ["right"]),
724
+ g(p(i.shiftActionBarFocusLeft, ["stop"]), ["left"])
718
725
  ]
719
726
  }, {
720
727
  icon: u(() => [
721
- (c(), p(K(i.linkButton.icon), { size: "200" }))
728
+ (c(), B(K(i.linkButton.icon), { size: "200" }))
722
729
  ]),
723
730
  _: 1
724
731
  }, 8, ["active", "aria-label", "data-qa", "tabindex", "onKeydown"])
@@ -728,18 +735,18 @@ function ct(t, e, n, o, r, i) {
728
735
  }, 8, ["message"]))
729
736
  ]),
730
737
  content: u(() => [
731
- L("div", at, [
732
- L("span", null, k(i.showAddLinkButtonLabels.title), 1),
738
+ _("div", at, [
739
+ _("span", null, k(i.showAddLinkButtonLabels.title), 1),
733
740
  a(P, {
734
741
  modelValue: r.linkInput,
735
742
  "onUpdate:modelValue": e[1] || (e[1] = (s) => r.linkInput = s),
736
743
  "input-aria-label": i.showAddLinkButtonLabels["aria-label"],
737
- placeholder: n.setLinkPlaceholder,
744
+ placeholder: o.setLinkPlaceholder,
738
745
  "data-qa": "dt-recipe-editor-link-input",
739
746
  "input-wrapper-class": "d-recipe-editor-link__input-wrapper",
740
747
  onClick: [
741
748
  i.onInputFocus,
742
- B(i.onInputFocus, ["stop"])
749
+ p(i.onInputFocus, ["stop"])
743
750
  ],
744
751
  onFocus: i.onInputFocus,
745
752
  onKeydown: g(i.setLink, ["enter"])
@@ -760,7 +767,7 @@ function ct(t, e, n, o, r, i) {
760
767
  size: "sm"
761
768
  }, i.removeLinkButtonLabels, { onClick: i.removeLink }), {
762
769
  default: u(() => [
763
- _(k(i.removeLinkButtonLabels.title), 1)
770
+ L(k(i.removeLinkButtonLabels.title), 1)
764
771
  ]),
765
772
  _: 1
766
773
  }, 16, ["onClick"]),
@@ -771,7 +778,7 @@ function ct(t, e, n, o, r, i) {
771
778
  size: "sm"
772
779
  }, i.cancelSetLinkButtonLabels, { onClick: i.closeLinkInput }), {
773
780
  default: u(() => [
774
- _(k(i.cancelSetLinkButtonLabels.title), 1)
781
+ L(k(i.cancelSetLinkButtonLabels.title), 1)
775
782
  ]),
776
783
  _: 1
777
784
  }, 16, ["onClick"]),
@@ -780,7 +787,7 @@ function ct(t, e, n, o, r, i) {
780
787
  size: "sm"
781
788
  }, i.confirmSetLinkButtonLabels, { onClick: i.setLink }), {
782
789
  default: u(() => [
783
- _(k(i.confirmSetLinkButtonLabels.title), 1)
790
+ L(k(i.confirmSetLinkButtonLabels.title), 1)
784
791
  ]),
785
792
  _: 1
786
793
  }, 16, ["onClick"])
@@ -796,8 +803,8 @@ function ct(t, e, n, o, r, i) {
796
803
  ]),
797
804
  _: 1
798
805
  }),
799
- L("div", {
800
- style: W({ "max-height": n.maxHeight }),
806
+ _("div", {
807
+ style: W({ "max-height": o.maxHeight }),
801
808
  class: "d-recipe-editor__content"
802
809
  }, [
803
810
  a($, f({
@@ -809,21 +816,22 @@ function ct(t, e, n, o, r, i) {
809
816
  "allow-inline-images": !0,
810
817
  "allow-line-breaks": !0,
811
818
  "hide-link-bubble-menu": !0,
812
- "auto-focus": n.autoFocus,
813
- editable: n.editable,
814
- "input-aria-label": n.inputAriaLabel,
815
- "input-class": `d-recipe-editor__content-input ${n.inputClass}`,
819
+ "auto-focus": o.autoFocus,
820
+ editable: o.editable,
821
+ "input-aria-label": o.inputAriaLabel,
822
+ "input-class": `d-recipe-editor__content-input ${o.inputClass}`,
816
823
  link: !0,
817
824
  "output-format": i.htmlOutputFormat,
818
- placeholder: n.placeholder,
819
- "use-div-tags": n.useDivTags,
825
+ placeholder: o.placeholder,
826
+ "use-div-tags": o.useDivTags,
827
+ "allow-tables": o.allowTables,
820
828
  "data-qa": "dt-rich-text-editor"
821
829
  }, i.removeClassStyleAttrs(t.$attrs), {
822
830
  onTextInput: i.onTextInput,
823
831
  onBlur: i.onBlur,
824
832
  onFocus: i.onFocus,
825
833
  onInput: e[3] || (e[3] = (s) => i.onInput(s))
826
- }), null, 16, ["modelValue", "auto-focus", "editable", "input-aria-label", "input-class", "output-format", "placeholder", "use-div-tags", "onTextInput", "onBlur", "onFocus"])
834
+ }), null, 16, ["modelValue", "auto-focus", "editable", "input-aria-label", "input-class", "output-format", "placeholder", "use-div-tags", "allow-tables", "onTextInput", "onBlur", "onFocus"])
827
835
  ], 4)
828
836
  ], 16);
829
837
  }