@dialpad/dialtone 9.158.0 → 9.160.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 (166) hide show
  1. package/dist/css/dialtone-default-theme.css +20 -1
  2. package/dist/css/dialtone-default-theme.min.css +1 -1
  3. package/dist/css/dialtone-docs.json +1 -1
  4. package/dist/css/dialtone.css +20 -1
  5. package/dist/css/dialtone.min.css +1 -1
  6. package/dist/tokens/doc.json +84323 -84323
  7. package/dist/vue3/common/test-utils/node-traversal.cjs +2 -0
  8. package/dist/vue3/common/test-utils/node-traversal.cjs.map +1 -0
  9. package/dist/vue3/common/test-utils/node-traversal.js +54 -0
  10. package/dist/vue3/common/test-utils/node-traversal.js.map +1 -0
  11. package/dist/vue3/component-documentation.json +1 -1
  12. package/dist/vue3/dialtone-vue.cjs +1 -1
  13. package/dist/vue3/dialtone-vue.js +155 -153
  14. package/dist/vue3/dialtone-vue.js.map +1 -1
  15. package/dist/vue3/lib/button/button.cjs +1 -1
  16. package/dist/vue3/lib/button/button.cjs.map +1 -1
  17. package/dist/vue3/lib/button/button.js +146 -81
  18. package/dist/vue3/lib/button/button.js.map +1 -1
  19. package/dist/vue3/lib/datepicker/datepicker.cjs +1 -1
  20. package/dist/vue3/lib/datepicker/datepicker.cjs.map +1 -1
  21. package/dist/vue3/lib/datepicker/datepicker.js +306 -242
  22. package/dist/vue3/lib/datepicker/datepicker.js.map +1 -1
  23. package/dist/vue3/lib/datepicker/utils.cjs +1 -1
  24. package/dist/vue3/lib/datepicker/utils.cjs.map +1 -1
  25. package/dist/vue3/lib/datepicker/utils.js +40 -40
  26. package/dist/vue3/lib/datepicker/utils.js.map +1 -1
  27. package/dist/vue3/lib/dropdown/dropdown-separator.cjs +1 -1
  28. package/dist/vue3/lib/editor/editor.cjs +1 -1
  29. package/dist/vue3/lib/editor/editor.cjs.map +1 -1
  30. package/dist/vue3/lib/editor/editor.js +284 -148
  31. package/dist/vue3/lib/editor/editor.js.map +1 -1
  32. package/dist/vue3/lib/general-row/index.cjs +1 -1
  33. package/dist/vue3/lib/general-row/index.js +6 -4
  34. package/dist/vue3/lib/general-row/index.js.map +1 -1
  35. package/dist/vue3/lib/link/link.cjs +1 -1
  36. package/dist/vue3/lib/link/link.cjs.map +1 -1
  37. package/dist/vue3/lib/link/link.js +58 -18
  38. package/dist/vue3/lib/link/link.js.map +1 -1
  39. package/dist/vue3/lib/list-item-group/list-item-group.cjs +1 -1
  40. package/dist/vue3/lib/list-item-group/list-item-group.js +5 -5
  41. package/dist/vue3/lib/message-input/message-input.cjs +1 -1
  42. package/dist/vue3/lib/message-input/message-input.cjs.map +1 -1
  43. package/dist/vue3/lib/message-input/message-input.js +9 -7
  44. package/dist/vue3/lib/message-input/message-input.js.map +1 -1
  45. package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs +4 -4
  46. package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
  47. package/dist/vue3/lib/rich-text-editor/rich-text-editor.js +466 -283
  48. package/dist/vue3/lib/rich-text-editor/rich-text-editor.js.map +1 -1
  49. package/dist/vue3/lib/tooltip-directive/tooltip.cjs +1 -1
  50. package/dist/vue3/lib/tooltip-directive/tooltip.cjs.map +1 -1
  51. package/dist/vue3/lib/tooltip-directive/tooltip.js +69 -67
  52. package/dist/vue3/lib/tooltip-directive/tooltip.js.map +1 -1
  53. package/dist/vue3/localization/en-US.cjs +6 -0
  54. package/dist/vue3/localization/en-US.cjs.map +1 -1
  55. package/dist/vue3/localization/en-US.js +6 -0
  56. package/dist/vue3/localization/en-US.js.map +1 -1
  57. package/dist/vue3/types/common/sr_only_close_button.vue.d.ts +68 -1
  58. package/dist/vue3/types/common/test_utils/node_traversal.d.ts +10 -0
  59. package/dist/vue3/types/common/test_utils/node_traversal.d.ts.map +1 -0
  60. package/dist/vue3/types/components/banner/banner.vue.d.ts +136 -2
  61. package/dist/vue3/types/components/banner/banner.vue.d.ts.map +1 -1
  62. package/dist/vue3/types/components/breadcrumbs/breadcrumb_item.vue.d.ts +39 -1
  63. package/dist/vue3/types/components/breadcrumbs/breadcrumb_item.vue.d.ts.map +1 -1
  64. package/dist/vue3/types/components/breadcrumbs/breadcrumbs.vue.d.ts +39 -1
  65. package/dist/vue3/types/components/button/button.vue.d.ts +68 -1
  66. package/dist/vue3/types/components/button/button.vue.d.ts.map +1 -1
  67. package/dist/vue3/types/components/chip/chip.vue.d.ts +68 -1
  68. package/dist/vue3/types/components/chip/chip.vue.d.ts.map +1 -1
  69. package/dist/vue3/types/components/collapsible/collapsible.vue.d.ts +68 -1
  70. package/dist/vue3/types/components/collapsible/collapsible.vue.d.ts.map +1 -1
  71. package/dist/vue3/types/components/datepicker/composables/useMonthYearPicker.d.ts +4 -0
  72. package/dist/vue3/types/components/datepicker/composables/useMonthYearPicker.d.ts.map +1 -1
  73. package/dist/vue3/types/components/datepicker/datepicker.vue.d.ts +8 -0
  74. package/dist/vue3/types/components/datepicker/datepicker.vue.d.ts.map +1 -1
  75. package/dist/vue3/types/components/datepicker/modules/month-year-picker.vue.d.ts +4 -0
  76. package/dist/vue3/types/components/datepicker/modules/month-year-picker.vue.d.ts.map +1 -1
  77. package/dist/vue3/types/components/datepicker/utils.d.ts +1 -1
  78. package/dist/vue3/types/components/datepicker/utils.d.ts.map +1 -1
  79. package/dist/vue3/types/components/dropdown/dropdown.vue.d.ts +136 -2
  80. package/dist/vue3/types/components/dropdown/dropdown.vue.d.ts.map +1 -1
  81. package/dist/vue3/types/components/hovercard/hovercard.vue.d.ts +272 -4
  82. package/dist/vue3/types/components/hovercard/hovercard.vue.d.ts.map +1 -1
  83. package/dist/vue3/types/components/image_viewer/image_viewer.vue.d.ts +136 -2
  84. package/dist/vue3/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
  85. package/dist/vue3/types/components/link/link.vue.d.ts +39 -1
  86. package/dist/vue3/types/components/link/link.vue.d.ts.map +1 -1
  87. package/dist/vue3/types/components/modal/modal.vue.d.ts +136 -2
  88. package/dist/vue3/types/components/modal/modal.vue.d.ts.map +1 -1
  89. package/dist/vue3/types/components/notice/notice.vue.d.ts +136 -2
  90. package/dist/vue3/types/components/notice/notice.vue.d.ts.map +1 -1
  91. package/dist/vue3/types/components/notice/notice_action.vue.d.ts +136 -2
  92. package/dist/vue3/types/components/notice/notice_action.vue.d.ts.map +1 -1
  93. package/dist/vue3/types/components/pagination/pagination.vue.d.ts +68 -1
  94. package/dist/vue3/types/components/pagination/pagination.vue.d.ts.map +1 -1
  95. package/dist/vue3/types/components/popover/popover.vue.d.ts +136 -2
  96. package/dist/vue3/types/components/popover/popover.vue.d.ts.map +1 -1
  97. package/dist/vue3/types/components/popover/popover_header_footer.vue.d.ts +68 -1
  98. package/dist/vue3/types/components/popover/popover_header_footer.vue.d.ts.map +1 -1
  99. package/dist/vue3/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts +39 -1
  100. package/dist/vue3/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts.map +1 -1
  101. package/dist/vue3/types/components/rich_text_editor/extensions/mentions/MentionComponent.vue.d.ts +39 -1
  102. package/dist/vue3/types/components/rich_text_editor/extensions/variable/VariableComponent.vue.d.ts +1804 -0
  103. package/dist/vue3/types/components/rich_text_editor/extensions/variable/VariableComponent.vue.d.ts.map +1 -0
  104. package/dist/vue3/types/components/rich_text_editor/extensions/variable/index.d.ts +3 -0
  105. package/dist/vue3/types/components/rich_text_editor/extensions/variable/index.d.ts.map +1 -0
  106. package/dist/vue3/types/components/rich_text_editor/extensions/variable/variable.d.ts +3 -0
  107. package/dist/vue3/types/components/rich_text_editor/extensions/variable/variable.d.ts.map +1 -0
  108. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts +87 -1
  109. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  110. package/dist/vue3/types/components/split_button/split_button-alpha.vue.d.ts +68 -1
  111. package/dist/vue3/types/components/split_button/split_button-omega.vue.d.ts +68 -1
  112. package/dist/vue3/types/components/split_button/split_button-omega.vue.d.ts.map +1 -1
  113. package/dist/vue3/types/components/split_button/split_button.vue.d.ts +272 -4
  114. package/dist/vue3/types/components/split_button/split_button.vue.d.ts.map +1 -1
  115. package/dist/vue3/types/components/tab/tab.vue.d.ts +68 -1
  116. package/dist/vue3/types/components/toast/layouts/toast_layout_alternate.vue.d.ts +136 -2
  117. package/dist/vue3/types/components/toast/layouts/toast_layout_alternate.vue.d.ts.map +1 -1
  118. package/dist/vue3/types/components/toast/layouts/toast_layout_default.vue.d.ts +136 -2
  119. package/dist/vue3/types/components/toast/layouts/toast_layout_default.vue.d.ts.map +1 -1
  120. package/dist/vue3/types/components/toast/toast.vue.d.ts +544 -8
  121. package/dist/vue3/types/components/toast/toast.vue.d.ts.map +1 -1
  122. package/dist/vue3/types/directives/tooltip_directive/tooltip.d.ts.map +1 -1
  123. package/dist/vue3/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts +68 -1
  124. package/dist/vue3/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts.map +1 -1
  125. package/dist/vue3/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +272 -4
  126. package/dist/vue3/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts.map +1 -1
  127. package/dist/vue3/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +272 -4
  128. package/dist/vue3/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts.map +1 -1
  129. package/dist/vue3/types/recipes/cards/ivr_node/ivr_node.vue.d.ts +204 -3
  130. package/dist/vue3/types/recipes/cards/ivr_node/ivr_node.vue.d.ts.map +1 -1
  131. package/dist/vue3/types/recipes/chips/grouped_chip/grouped_chip.vue.d.ts +68 -1
  132. package/dist/vue3/types/recipes/chips/grouped_chip/grouped_chip.vue.d.ts.map +1 -1
  133. package/dist/vue3/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +136 -2
  134. package/dist/vue3/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts.map +1 -1
  135. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts +272 -4
  136. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts.map +1 -1
  137. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts +204 -3
  138. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts.map +1 -1
  139. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts +664 -4
  140. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  141. package/dist/vue3/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +68 -1
  142. package/dist/vue3/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts.map +1 -1
  143. package/dist/vue3/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts +68 -1
  144. package/dist/vue3/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts.map +1 -1
  145. package/dist/vue3/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts +68 -1
  146. package/dist/vue3/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts.map +1 -1
  147. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts +631 -9
  148. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  149. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_button.vue.d.ts +68 -1
  150. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_button.vue.d.ts.map +1 -1
  151. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts +272 -4
  152. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts.map +1 -1
  153. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +68 -1
  154. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts.map +1 -1
  155. package/dist/vue3/types/recipes/header/settings_menu_button/settings_menu_button.vue.d.ts +68 -1
  156. package/dist/vue3/types/recipes/header/settings_menu_button/settings_menu_button.vue.d.ts.map +1 -1
  157. package/dist/vue3/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +68 -1
  158. package/dist/vue3/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts.map +1 -1
  159. package/dist/vue3/types/recipes/leftbar/contact_row/contact_row.vue.d.ts +68 -1
  160. package/dist/vue3/types/recipes/leftbar/contact_row/contact_row.vue.d.ts.map +1 -1
  161. package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts +68 -1
  162. package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
  163. package/dist/vue3/types/recipes/leftbar/general_row/index.d.ts +1 -0
  164. package/dist/vue3/types/recipes/leftbar/group_row/group_row.vue.d.ts +68 -1
  165. package/dist/vue3/types/recipes/leftbar/group_row/group_row.vue.d.ts.map +1 -1
  166. package/package.json +4 -4
@@ -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 :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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"}
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=\"variableButton.showBtn\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-popover\n padding=\"small\"\n navigation-type=\"arrow-keys\"\n :modal=\"false\"\n placement=\"bottom-start\"\n >\n <template #anchor=\"{ attrs }\">\n <dt-tooltip\n :message=\"variableButton.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n v-bind=\"attrs\"\n kind=\"muted\"\n size=\"xs\"\n importance=\"clear\"\n :aria-label=\"variableButton.tooltipMessage\"\n :data-qa=\"variableButton.dataQA\"\n label-class=\"d-jc-flex-start\"\n >\n <template #icon>\n <component\n :is=\"variableButton.icon\"\n size=\"200\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n <template #content=\"{ close }\">\n <dt-input\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 <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=\"menuitem\"\n navigation-type=\"arrow-keys\"\n @click=\"\n insertVariable(category.name, item);\n close();\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 </template>\n </dt-popover>\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 :allow-variable=\"true\"\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 :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 {DtListItem} from '@/components/list_item/index.js';\nimport {DtDropdownSeparator} from '@/components/dropdown/index.js';\nimport {DtListItemGroup} from '@/components/list_item_group/index.js';\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 DtIconBraces,\n DtIconSearch,\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 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 DtIconBraces,\n DtIconSearch,\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 * 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 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 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 variableButton() {\n return {\n showBtn: this.showVariableButton,\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 },\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 filteredCategories() {\n return this.variableCategories.filter(\n (category) => this.getFilteredItemsForCategory(category).length,\n );\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 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 }).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 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 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};\n</script>\n"],"names":["_sfc_main","DtListItemGroup","DtDropdownSeparator","DtListItem","DtRichTextEditor","DtButton","DtPopover","DtStack","DtInput","DtTooltip","DtIconQuickReply","DtIconBold","DtIconItalic","DtIconUnderline","DtIconStrikethrough","DtIconListBullet","DtIconListOrdered","DtIconAlignLeft","DtIconAlignCenter","DtIconAlignRight","DtIconAlignJustify","DtIconQuote","DtIconCodeBlock","DtIconLink2","DtIconImage","DtIconBraces","DtIconSearch","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","DialtoneLocalization","RICH_TEXT_EDITOR_OUTPUT_FORMATS","acc","category","refs","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","categoryName","variableData","imageUrl","messageContent","position","input","key","selector","refKey","shiftAmount","previousRef","previousActionBarBtn","index","currentRef","currentActionBarBtn","searchValue","item","_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","_withCtx","attrs","close","_component_dt_input","$data","iconSize","_component_dt_icon_search","_component_dt_list_item_group","_component_dt_list_item","_createTextVNode","_component_dt_dropdown_separator","$props","_component_dt_rich_text_editor"],"mappings":"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"}