@dialpad/dialtone 9.116.0 → 9.117.1

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 (130) hide show
  1. package/dist/css/dialtone-default-theme.css +4 -4
  2. package/dist/css/dialtone-default-theme.min.css +1 -1
  3. package/dist/css/dialtone-docs.json +1 -1
  4. package/dist/css/tokens/tokens-base-dark.css +1 -1
  5. package/dist/css/tokens/tokens-base-deca-dark.css +1 -1
  6. package/dist/css/tokens/tokens-base-deca-light.css +1 -1
  7. package/dist/css/tokens/tokens-base-light.css +1 -1
  8. package/dist/css/tokens/tokens-debug-base.css +1 -1
  9. package/dist/css/tokens/tokens-debug-dp.css +3 -3
  10. package/dist/css/tokens/tokens-deca-dark.css +3 -3
  11. package/dist/css/tokens/tokens-deca-light.css +3 -3
  12. package/dist/css/tokens/tokens-dp-dark.css +3 -3
  13. package/dist/css/tokens/tokens-dp-light.css +3 -3
  14. package/dist/css/tokens/tokens-expressive-dark.css +3 -3
  15. package/dist/css/tokens/tokens-expressive-light.css +3 -3
  16. package/dist/css/tokens/tokens-expressive-sm-dark.css +3 -3
  17. package/dist/css/tokens/tokens-expressive-sm-light.css +3 -3
  18. package/dist/css/tokens/tokens-tmo-dark.css +3 -3
  19. package/dist/css/tokens/tokens-tmo-light.css +3 -3
  20. package/dist/css/tokens-docs.json +1 -1
  21. package/dist/tokens/css/tokens-base-dark.css +1 -1
  22. package/dist/tokens/css/tokens-base-deca-dark.css +1 -1
  23. package/dist/tokens/css/tokens-base-deca-light.css +1 -1
  24. package/dist/tokens/css/tokens-base-light.css +1 -1
  25. package/dist/tokens/css/tokens-debug-base.css +1 -1
  26. package/dist/tokens/css/tokens-debug-dp.css +3 -3
  27. package/dist/tokens/css/tokens-deca-dark.css +3 -3
  28. package/dist/tokens/css/tokens-deca-light.css +3 -3
  29. package/dist/tokens/css/tokens-dp-dark.css +3 -3
  30. package/dist/tokens/css/tokens-dp-light.css +3 -3
  31. package/dist/tokens/css/tokens-expressive-dark.css +3 -3
  32. package/dist/tokens/css/tokens-expressive-light.css +3 -3
  33. package/dist/tokens/css/tokens-expressive-sm-dark.css +3 -3
  34. package/dist/tokens/css/tokens-expressive-sm-light.css +3 -3
  35. package/dist/tokens/css/tokens-tmo-dark.css +3 -3
  36. package/dist/tokens/css/tokens-tmo-light.css +3 -3
  37. package/dist/tokens/doc.json +27262 -27262
  38. package/dist/tokens/less/tokens-base-dark.less +1 -1
  39. package/dist/tokens/less/tokens-base-deca-dark.less +1 -1
  40. package/dist/tokens/less/tokens-base-deca-light.less +1 -1
  41. package/dist/tokens/less/tokens-base-light.less +1 -1
  42. package/dist/tokens/less/tokens-deca-dark.less +3 -3
  43. package/dist/tokens/less/tokens-deca-light.less +3 -3
  44. package/dist/tokens/less/tokens-dp-dark.less +3 -3
  45. package/dist/tokens/less/tokens-dp-light.less +3 -3
  46. package/dist/tokens/less/tokens-expressive-dark.less +3 -3
  47. package/dist/tokens/less/tokens-expressive-light.less +3 -3
  48. package/dist/tokens/less/tokens-expressive-sm-dark.less +3 -3
  49. package/dist/tokens/less/tokens-expressive-sm-light.less +3 -3
  50. package/dist/tokens/less/tokens-tmo-dark.less +3 -3
  51. package/dist/tokens/less/tokens-tmo-light.less +3 -3
  52. package/dist/tokens/themes/chunks/tokens-base-dark-CKvoqrK2.js +1 -0
  53. package/dist/tokens/themes/chunks/tokens-base-dark-CLL9Sz8C.js +4 -0
  54. package/dist/tokens/themes/chunks/tokens-base-light-C7afXvK5.js +4 -0
  55. package/dist/tokens/themes/chunks/tokens-base-light-DgGeYJGp.js +1 -0
  56. package/dist/tokens/themes/debug.cjs +1 -1
  57. package/dist/tokens/themes/debug.js +1 -1
  58. package/dist/tokens/themes/dp-dark.cjs +1 -1
  59. package/dist/tokens/themes/dp-dark.js +2 -2
  60. package/dist/tokens/themes/dp-deca-dark.cjs +1 -1
  61. package/dist/tokens/themes/dp-deca-dark.js +1 -1
  62. package/dist/tokens/themes/dp-deca-light.cjs +1 -1
  63. package/dist/tokens/themes/dp-deca-light.js +1 -1
  64. package/dist/tokens/themes/dp-light.cjs +1 -1
  65. package/dist/tokens/themes/dp-light.js +2 -2
  66. package/dist/tokens/themes/expressive-dark.cjs +1 -1
  67. package/dist/tokens/themes/expressive-dark.js +2 -2
  68. package/dist/tokens/themes/expressive-light.cjs +1 -1
  69. package/dist/tokens/themes/expressive-light.js +2 -2
  70. package/dist/tokens/themes/expressive-sm-dark.cjs +1 -1
  71. package/dist/tokens/themes/expressive-sm-dark.js +2 -2
  72. package/dist/tokens/themes/expressive-sm-light.cjs +1 -1
  73. package/dist/tokens/themes/expressive-sm-light.js +2 -2
  74. package/dist/tokens/themes/tmo-dark.cjs +1 -1
  75. package/dist/tokens/themes/tmo-dark.js +2 -2
  76. package/dist/tokens/themes/tmo-light.cjs +1 -1
  77. package/dist/tokens/themes/tmo-light.js +2 -2
  78. package/dist/tokens/tokens-base-dark.json +1 -1
  79. package/dist/tokens/tokens-base-deca-dark.json +1 -1
  80. package/dist/tokens/tokens-base-deca-light.json +1 -1
  81. package/dist/tokens/tokens-base-light.json +1 -1
  82. package/dist/tokens/tokens-deca-dark.json +3 -3
  83. package/dist/tokens/tokens-deca-light.json +3 -3
  84. package/dist/tokens/tokens-dp-dark.json +3 -3
  85. package/dist/tokens/tokens-dp-light.json +3 -3
  86. package/dist/tokens/tokens-expressive-dark.json +3 -3
  87. package/dist/tokens/tokens-expressive-light.json +3 -3
  88. package/dist/tokens/tokens-expressive-sm-dark.json +3 -3
  89. package/dist/tokens/tokens-expressive-sm-light.json +3 -3
  90. package/dist/tokens/tokens-tmo-dark.json +3 -3
  91. package/dist/tokens/tokens-tmo-light.json +3 -3
  92. package/dist/vue2/component-documentation.json +1 -1
  93. package/dist/vue2/lib/editor/editor.cjs +1 -1
  94. package/dist/vue2/lib/editor/editor.cjs.map +1 -1
  95. package/dist/vue2/lib/editor/editor.js +6 -6
  96. package/dist/vue2/lib/editor/editor.js.map +1 -1
  97. package/dist/vue2/lib/rich-text-editor/rich-text-editor.cjs +3 -3
  98. package/dist/vue2/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
  99. package/dist/vue2/lib/rich-text-editor/rich-text-editor.js +183 -166
  100. package/dist/vue2/lib/rich-text-editor/rich-text-editor.js.map +1 -1
  101. package/dist/vue2/localization/index.cjs +5 -1
  102. package/dist/vue2/localization/index.cjs.map +1 -1
  103. package/dist/vue2/localization/index.js +4865 -21
  104. package/dist/vue2/localization/index.js.map +1 -1
  105. package/dist/vue2/node_modules/@tiptap/vue-2.cjs.map +1 -1
  106. package/dist/vue2/node_modules/@tiptap/vue-2.js.map +1 -1
  107. package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts +18 -0
  108. package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  109. package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  110. package/dist/vue3/component-documentation.json +1 -1
  111. package/dist/vue3/lib/editor/editor.cjs +1 -1
  112. package/dist/vue3/lib/editor/editor.cjs.map +1 -1
  113. package/dist/vue3/lib/editor/editor.js +15 -13
  114. package/dist/vue3/lib/editor/editor.js.map +1 -1
  115. package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs +3 -3
  116. package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
  117. package/dist/vue3/lib/rich-text-editor/rich-text-editor.js +181 -164
  118. package/dist/vue3/lib/rich-text-editor/rich-text-editor.js.map +1 -1
  119. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts +18 -0
  120. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  121. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  122. package/package.json +3 -4
  123. package/dist/tokens/themes/chunks/tokens-base-dark-B42c8NRe.js +0 -1
  124. package/dist/tokens/themes/chunks/tokens-base-dark-D3XlzClW.js +0 -4
  125. package/dist/tokens/themes/chunks/tokens-base-light-5p3ZOPKU.js +0 -1
  126. package/dist/tokens/themes/chunks/tokens-base-light-C_G4p7UU.js +0 -4
  127. package/dist/vue2/node_modules/@dialpad/i18n-vue2.cjs +0 -6
  128. package/dist/vue2/node_modules/@dialpad/i18n-vue2.cjs.map +0 -1
  129. package/dist/vue2/node_modules/@dialpad/i18n-vue2.js +0 -4906
  130. package/dist/vue2/node_modules/@dialpad/i18n-vue2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","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=\"(el) => { buttonRefMap[getButtonRef(buttonGroup.key, button.selector)] = el }\"\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 :visually-hidden-close=\"true\"\n :visually-hidden-close-label=\"'Close link input popover'\"\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=\"(el) => { buttonRefMap[getButtonRef('custom', 'link')] = el }\"\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 v-if=\"showAddLink.setLinkTitle.length > 0\"\n >\n {{ showAddLink.setLinkTitle }}\n </span>\n <dt-input\n v-model=\"linkInput\"\n :input-aria-label=\"showAddLink.setLinkInputAriaLabel\"\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 :aria-label=\"removeLinkButton.ariaLabel\"\n data-qa=\"dt-recipe-editor-remove-link-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n @click=\"removeLink\"\n >\n {{ removeLinkButton.label }}\n </dt-button>\n <dt-button\n :aria-label=\"cancelSetLinkButton.ariaLabel\"\n data-qa=\"dt-recipe-editor-set-link-cancel-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n @click=\"closeLinkInput\"\n >\n {{ cancelSetLinkButton.label }}\n </dt-button>\n <dt-button\n :aria-label=\"confirmSetLinkButton.ariaLabel\"\n data-qa=\"dt-recipe-editor-set-link-confirm-btn\"\n size=\"sm\"\n @click=\"setLink\"\n >\n {{ confirmSetLinkButton.label }}\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-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 DtIconLightningBolt,\n DtIconLink2,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconQuote,\n DtIconStrikethrough,\n DtIconUnderline,\n} from '@dialpad/dialtone-icons/vue3';\nimport { ref } from 'vue';\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 DtIconLightningBolt,\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 * Confirm set link button defaults.\n */\n confirmSetLinkButton: {\n type: Object,\n default: () => ({ label: 'Confirm', ariaLabel: 'Confirm set link' }),\n },\n\n /**\n * Remove link button defaults.\n */\n removeLinkButton: {\n type: Object,\n default: () => ({ label: 'Remove', ariaLabel: 'Remove link' }),\n },\n\n /**\n * Cancel set link button defaults.\n */\n cancelSetLinkButton: {\n type: Object,\n default: () => ({ label: 'Cancel', ariaLabel: 'Cancel set link' }),\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 setLinkTitle: 'Add a link',\n setLinkInputAriaLabel: 'Input field to add link',\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 buttonRefMap: ref({}),\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: 'Quick reply',\n selector: 'quickReplies',\n icon: DtIconLightningBolt,\n dataQA: 'dt-recipe-editor-quick-replies-btn',\n tooltipMessage: 'Quick Reply',\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: 'Bold',\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: 'Italics',\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: 'Underline',\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: 'Strike',\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: 'Align Left',\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: 'Align Center',\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: 'Align Right',\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: 'Align Justify',\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: 'Bullet List',\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: 'Ordered List',\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: 'Quote',\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: 'Code',\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: 'Image',\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: 'Link',\n onClick: this.openLinkInput,\n };\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 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.buttonRefMap[this.orderedRefs[this.currentButtonRefIndex]];\n const index = (this.currentButtonRefIndex + shiftAmount) % this.orderedRefs.length;\n this.currentButtonRefIndex = index >= 0 ? index : this.orderedRefs.length + index;\n const currentRef = this.buttonRefMap[this.orderedRefs[this.currentButtonRefIndex]];\n previousRef.$el.blur();\n currentRef.$el.focus();\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtRichTextEditor","DtButton","DtPopover","DtStack","DtInput","DtTooltip","DtIconLightningBolt","DtIconBold","DtIconItalic","DtIconUnderline","DtIconStrikethrough","DtIconListBullet","DtIconListOrdered","DtIconAlignLeft","DtIconAlignCenter","DtIconAlignRight","DtIconAlignJustify","DtIconQuote","DtIconCodeBlock","DtIconLink2","DtIconImage","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","ref","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","index","currentRef","_createElementVNode","_hoisted_2","_createElementBlock","_mergeProps","$options","_ctx","_cache","$event","_createVNode","_component_dt_stack","_withCtx","_openBlock","_Fragment","_renderList","buttonGroup","_createBlock","_component_dt_tooltip","_component_dt_button","el","$data","_withKeys","_withModifiers","_resolveDynamicComponent","_createTextVNode","_toDisplayString","_hoisted_1","_component_dt_popover","$props","_hoisted_3","_createCommentVNode","_component_dt_input","_normalizeStyle","_component_dt_rich_text_editor"],"mappings":"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"}
1
+ {"version":3,"file":"editor.js","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=\"(el) => { buttonRefMap[getButtonRef(buttonGroup.key, button.selector)] = el }\"\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 :visually-hidden-close=\"true\"\n :visually-hidden-close-label=\"'Close link input popover'\"\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=\"(el) => { buttonRefMap[getButtonRef('custom', 'link')] = el }\"\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 v-if=\"showAddLink.setLinkTitle.length > 0\"\n >\n {{ showAddLink.setLinkTitle }}\n </span>\n <dt-input\n v-model=\"linkInput\"\n :input-aria-label=\"showAddLink.setLinkInputAriaLabel\"\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 :aria-label=\"removeLinkButton.ariaLabel\"\n data-qa=\"dt-recipe-editor-remove-link-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n @click=\"removeLink\"\n >\n {{ removeLinkButton.label }}\n </dt-button>\n <dt-button\n :aria-label=\"cancelSetLinkButton.ariaLabel\"\n data-qa=\"dt-recipe-editor-set-link-cancel-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n @click=\"closeLinkInput\"\n >\n {{ cancelSetLinkButton.label }}\n </dt-button>\n <dt-button\n :aria-label=\"confirmSetLinkButton.ariaLabel\"\n data-qa=\"dt-recipe-editor-set-link-confirm-btn\"\n size=\"sm\"\n @click=\"setLink\"\n >\n {{ confirmSetLinkButton.label }}\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 { ref } from 'vue';\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 * Confirm set link button defaults.\n */\n confirmSetLinkButton: {\n type: Object,\n default: () => ({ label: 'Confirm', ariaLabel: 'Confirm set link' }),\n },\n\n /**\n * Remove link button defaults.\n */\n removeLinkButton: {\n type: Object,\n default: () => ({ label: 'Remove', ariaLabel: 'Remove link' }),\n },\n\n /**\n * Cancel set link button defaults.\n */\n cancelSetLinkButton: {\n type: Object,\n default: () => ({ label: 'Cancel', ariaLabel: 'Cancel set link' }),\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 setLinkTitle: 'Add a link',\n setLinkInputAriaLabel: 'Input field to add link',\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 buttonRefMap: ref({}),\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: 'Quick reply',\n selector: 'quickReplies',\n icon: DtIconQuickReply,\n dataQA: 'dt-recipe-editor-quick-replies-btn',\n tooltipMessage: 'Quick Reply',\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: 'Bold',\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: 'Italics',\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: 'Underline',\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: 'Strike',\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: 'Align Left',\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: 'Align Center',\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: 'Align Right',\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: 'Align Justify',\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: 'Bullet List',\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: 'Ordered List',\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: 'Quote',\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: 'Code',\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: 'Image',\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: 'Link',\n onClick: this.openLinkInput,\n };\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 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.buttonRefMap[this.orderedRefs[this.currentButtonRefIndex]];\n const index = (this.currentButtonRefIndex + shiftAmount) % this.orderedRefs.length;\n this.currentButtonRefIndex = index >= 0 ? index : this.orderedRefs.length + index;\n const currentRef = this.buttonRefMap[this.orderedRefs[this.currentButtonRefIndex]];\n previousRef.$el.blur();\n currentRef.$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","ref","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","index","currentRef","_createElementVNode","_hoisted_2","_createElementBlock","_mergeProps","$options","_ctx","_cache","$event","_createVNode","_component_dt_stack","_withCtx","_openBlock","_Fragment","_renderList","buttonGroup","_createBlock","_component_dt_tooltip","_component_dt_button","el","$data","_withKeys","_withModifiers","_resolveDynamicComponent","_createTextVNode","_toDisplayString","_hoisted_1","_component_dt_popover","$props","_hoisted_3","_createCommentVNode","_component_dt_input","_normalizeStyle","_component_dt_rich_text_editor"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("../../node_modules/@tiptap/vue-3.cjs"),u=require("@tiptap/core"),M=require("@tiptap/extension-blockquote"),j=require("@tiptap/extension-code-block"),q=require("@tiptap/extension-code"),A=require("@tiptap/extension-document"),P=require("@tiptap/extension-hard-break"),$=require("@tiptap/extension-paragraph"),N=require("@tiptap/extension-placeholder"),H=require("@tiptap/extension-bold"),K=require("@tiptap/extension-bullet-list"),U=require("@tiptap/extension-italic"),W=require("@tiptap/extension-link"),z=require("@tiptap/extension-list-item"),F=require("@tiptap/extension-ordered-list"),X=require("@tiptap/extension-strike"),J=require("@tiptap/extension-underline"),Y=require("@tiptap/extension-text"),G=require("@tiptap/extension-text-align"),Q=require("@tiptap/extension-history"),g=require("@tiptap/pm/state"),Z=require("@tiptap/suggestion"),I=require("regex-combined-emojis"),o=require("vue"),h=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),D=require("../emoji/emoji.cjs"),f=require("../../common/emoji/index.cjs"),ee=require("@dialpad/dialtone-emojis"),te=require("../list-item/list-item.cjs"),C=require("../stack/stack.cjs"),x=require("tippy.js"),k=require("../../common/utils/index.cjs"),ne=require("@tiptap/extension-image"),R=require("@tiptap/extension-mention"),O=require("../link/link.cjs"),b=require("./rich-text-editor-constants.cjs"),oe=require("../avatar/avatar.cjs"),re=require("@dialpad/dialtone-icons/vue3/hash"),ie=require("@dialpad/dialtone-icons/vue3/lock"),se=require("deep-equal"),ae=require("../button/button.cjs"),ce={compatConfig:{MODE:3},name:"EmojiComponent",components:{NodeViewWrapper:d.NodeViewWrapper,DtEmoji:D.default},props:d.nodeViewProps};function le(e,t,r,n,i,s){const a=o.resolveComponent("dt-emoji"),c=o.resolveComponent("node-view-wrapper");return o.openBlock(),o.createBlock(c,{class:"d-d-inline-block d-va-bottom d-lh0"},{default:o.withCtx(()=>[o.createVNode(a,{size:"500",code:e.node.attrs.code},null,8,["code"])]),_:1})}const de=h._(ce,[["render",le]]),ue={compatConfig:{MODE:3},name:"SuggestionList",components:{DtListItem:te.default},props:{items:{type:Array,required:!0},command:{type:Function,required:!0},itemComponent:{type:Object,required:!0},itemType:{type:String,required:!0}},data(){return{selectedIndex:0}},watch:{items(){this.selectedIndex=0}},methods:{onKeyDown({event:e}){return e.key==="ArrowUp"?(this.upHandler(),!0):e.key==="ArrowDown"?(this.downHandler(),!0):e.key==="Enter"||e.key==="Tab"?(this.selectHandler(),!0):!1},upHandler(){this.selectedIndex=(this.selectedIndex+this.items.length-1)%this.items.length,this.scrollActiveElementIntoView()},downHandler(){this.selectedIndex=(this.selectedIndex+1)%this.items.length,this.scrollActiveElementIntoView()},async scrollActiveElementIntoView(){await this.$nextTick();const e=this.$refs.suggestionList.querySelector(".d-list-item--highlighted");e&&e.scrollIntoView({behaviour:"smooth",block:"center"})},selectHandler(){this.selectItem(this.selectedIndex)},selectItem(e){const t=this.items[e];switch(this.itemType){case"emoji":this.command(t);return;case"mention":this.command({name:t.name,id:t.id,avatarSrc:t.avatarSrc});break;case"channel":this.command({name:t.name,id:t.id});break;case"slash-command":this.command({command:t.command});break}}}},me={class:"d-popover__dialog d-suggestion-list__container"},he={ref:"suggestionList",class:"d-suggestion-list"};function pe(e,t,r,n,i,s){const a=o.resolveComponent("dt-list-item");return o.openBlock(),o.createElementBlock("div",me,[o.withDirectives(o.createElementVNode("ul",he,[(o.openBlock(!0),o.createElementBlock(o.Fragment,null,o.renderList(r.items,(c,l)=>(o.openBlock(),o.createBlock(a,{key:c.id,class:o.normalizeClass(["d-suggestion-list__item",{"d-list-item--highlighted":l===i.selectedIndex}]),"navigation-type":"arrow-keys",onClick:m=>s.selectItem(l),onKeydown:o.withModifiers(s.onKeyDown,["prevent"])},{default:o.withCtx(()=>[(o.openBlock(),o.createBlock(o.resolveDynamicComponent(r.itemComponent),{item:c},null,8,["item"]))]),_:2},1032,["class","onClick","onKeydown"]))),128))],512),[[o.vShow,r.items.length]])])}const E=h._(ue,[["render",pe]]),fe={compatConfig:{MODE:3},name:"EmojiSuggestion",components:{DtEmoji:D.default,DtStack:C.default},props:{item:{type:Object,required:!0}}};function ge(e,t,r,n,i,s){const a=o.resolveComponent("dt-emoji"),c=o.resolveComponent("dt-stack");return o.openBlock(),o.createBlock(c,{direction:"row",gap:"400"},{default:o.withCtx(()=>[o.createVNode(a,{size:"200",code:r.item.code},null,8,["code"]),o.createTextVNode(" "+o.toDisplayString(r.item.code),1)]),_:1})}const _e=h._(fe,[["render",ge]]),S={name:"hideOnEsc",defaultValue:!0,fn({hide:e}){function t(r){r.keyCode===27&&e()}return{onShow(){document.addEventListener("keydown",t)},onHide(){document.removeEventListener("keydown",t)}}}},ke=20,we={items:({query:e})=>{if(e.length<2)return[];const t=Object.values(ee.emojisIndexed);return e=e.toLowerCase(),t.filter(n=>[n.name,n.shortname.replaceAll(":",""),...n.keywords].some(i=>i.startsWith(e))).splice(0,ke).map(n=>({code:n.shortname}))},command:({editor:e,range:t,props:r})=>{var s,a;const n=e.view.state.selection.$to.nodeAfter;((s=n==null?void 0:n.text)==null?void 0:s.startsWith(" "))&&(t.to+=1),e.chain().focus().insertContentAt(t,[{type:"emoji",attrs:r}]).run(),(a=window.getSelection())==null||a.collapseToEnd()},render:()=>{let e,t,r=!1;return{onStart:n=>{e=new d.VueRenderer(E,{props:{itemComponent:o.markRaw(_e),itemType:"emoji",...n},editor:n.editor}),n.clientRect&&(t=x("body",{getReferenceClientRect:n.clientRect,appendTo:()=>document.body,content:e.element,showOnCreate:!1,onShow:()=>{r=!0},onHidden:()=>{r=!1},interactive:!0,trigger:"manual",placement:"top-start",zIndex:650,plugins:[S]}),n.items.length>0&&(t==null||t[0].show()))},onUpdate(n){e==null||e.updateProps(n),n.items.length>0?t==null||t[0].show():t==null||t[0].hide(),t==null||t[0].setProps({getReferenceClientRect:n.clientRect})},onKeyDown(n){var i;if(r)return(i=e==null?void 0:e.ref)==null?void 0:i.onKeyDown(n)},onExit(){t==null||t[0].destroy(),t=null,e==null||e.destroy(),e=null}}}},ye=/(:\w+:)$/,be=new RegExp(I.emojiPattern+"$"),Ce=e=>{if(e&&f.codeToEmojiData(e[0]))return{text:e[2]||e[0]}},xe=e=>[...e.matchAll(f.emojiShortCodeRegex)].filter(r=>f.codeToEmojiData(r[0])).map(r=>({index:r.index,text:r[0],match:r})),Ee=u.Node.create({name:"emoji",addOptions(){return{HTMLAttributes:{}}},group:"inline",inline:!0,selectable:!1,atom:!0,addNodeView(){return d.VueNodeViewRenderer(de)},addAttributes(){return{code:{default:null}}},parseHTML(){return[{tag:"emoji-component"}]},renderText({node:e}){return f.stringToUnicode(f.codeToEmojiData(e.attrs.code).unicode_output)},renderHTML({HTMLAttributes:e}){return["emoji-component",u.mergeAttributes(this.options.HTMLAttributes,e)]},addInputRules(){return[new u.InputRule({find:e=>{const t=e.match(ye)||e.match(be);if(t)return Ce(t)},handler:({state:e,range:t,match:r,commands:n,chain:i,can:s})=>{const{tr:a}=e,c=t.from,l=t.to;a.replaceWith(c,l,this.type.create({code:r[0]}))}})]},addPasteRules(){return[u.nodePasteRule({find:xe,type:this.type,getAttributes(e){return{code:e[0]}}}),u.nodePasteRule({find:f.emojiRegex,type:this.type,getAttributes(e){return{code:e[0]}}})]},addProseMirrorPlugins(){return[Z({char:":",pluginKey:new g.PluginKey("emoji"),editor:this.editor,...this.options.suggestion,...we})]},addKeyboardShortcuts(){return{Backspace:()=>this.editor.commands.command(({tr:e,state:t})=>{let r=!1;const{selection:n}=t,{empty:i,anchor:s}=n;return i?(t.doc.nodesBetween(s-1,s,(a,c)=>{if(a.type.name===this.name)return r=!0,e.insertText("",c,c+a.nodeSize),!1}),r):!1})}}});function Se(e,t,r=()=>!0){const n=[];t.lastIndex=0;let i;for(;i=t.exec(e);)r(e,i)&&n.push(i);return n}function Te(e,t){return!["#","@"].includes(e.charAt(t.index))&&!["#","@"].includes(e.charAt(t.index-1))}function ve(e){const t=new RegExp("(?:"+[`[!?.,:;'"]`,"(?:&|&amp;)(?:lt|gt|quot|apos|raquo|laquo|rsaquo|lsaquo);)+$"].join("|"),"g");return e.replace(t,"")}function Re(e,t){const r=e.slice(0,t+1).search(/\S+\s*$/),n=e.slice(t).search(/\s/);if(n<0){const i=e.slice(r);return{text:i,from:r,to:r+i.length}}return{text:e.slice(r,n+t),from:r,to:n+t}}function v(e,t,r,n){const i=Re(e,t);if(n.lastIndex=0,!n.test(i.text))return i;const s=r==="left"?i.from-1:i.to+1;return s<=0||s>=e.length||s===t?i:v(e,s,r,n)}function Be(e,t,r,n){const i=Math.max(e.from-1,0),s=Math.min(e.to+1,t.content.size),a=u.getMarksBetween(i,s,t);for(const c of a)c.mark.type===n&&r.removeMark(c.from,c.to,n)}const B=k.getPhoneNumberRegex(1,15);function L(e,t,r,n,i,s){if(!e)return;let a=r-t-1;a=a<0?0:a;const c=n-t,l=v(e,a,"left",B),m=v(e,c,"right",B),p=e.slice(l.from,m.to);Se(p,k.linkRegex,Te).forEach(T=>{const _=ve(T[0]),y=t+l.from+T.index+1,V=y+_.length;i.addMark(y,V,s.create())})}function Le(e){let t=!1;return new g.Plugin({key:new g.PluginKey("autolink"),appendTransaction:(r,n,i)=>{const s=r.some(p=>p.docChanged)&&!n.doc.eq(i.doc);if(t&&!s)return;const{tr:a}=i,{textContent:c}=i.doc;t||L(c,0,0,c.length,a,e.type),t=!0;const l=u.combineTransactionSteps(n.doc,[...r]);return u.getChangedRanges(l).forEach(({oldRange:p,newRange:w})=>{Be(w,i.doc,a,e.type),u.findChildrenInRange(i.doc,w,_=>_.isTextblock).forEach(({node:_,pos:y})=>{L(_.textContent,y,p.from,w.to,a,e.type)})}),a}})}const $e={class:"d-link d-c-text d-d-inline-block d-wb-break-all",rel:"noopener noreferrer nofollow"},Ie=u.Mark.create({name:"CustomLink",renderHTML({HTMLAttributes:e}){return["a",u.mergeAttributes(this.options.HTMLAttributes,e,$e)]},renderText({node:e}){return e.attrs.text},addProseMirrorPlugins(){return[Le({type:this.type})]}}),De=ne.extend({name:"ConfigurableImage",addAttributes(){return{src:{default:""},alt:{default:void 0},title:{default:void 0},width:{default:void 0},height:{default:void 0},style:{default:void 0}}}}).configure({inline:!0,allowBase64:!0}),Oe=$.extend({parseHTML(){return[{tag:"div"}]},renderHTML({HTMLAttributes:e}){return["div",u.mergeAttributes(this.options.HTMLAttributes,e),0]}}),Ve={compatConfig:{MODE:3},name:"MentionComponent",components:{NodeViewWrapper:d.NodeViewWrapper,DtLink:O.default},props:d.nodeViewProps,computed:{text(){return"@"+this.$props.node.attrs.name}}};function Me(e,t,r,n,i,s){const a=o.resolveComponent("dt-link"),c=o.resolveComponent("node-view-wrapper");return o.openBlock(),o.createBlock(c,{class:"d-d-inline-block"},{default:o.withCtx(()=>[o.createVNode(a,{kind:"mention"},{default:o.withCtx(()=>[o.createTextVNode(o.toDisplayString(s.text),1)]),_:1})]),_:1})}const je=h._(Ve,[["render",Me]]),qe=R.extend({addNodeView(){return d.VueNodeViewRenderer(je)},parseHTML(){return[{tag:"mention-component"}]},addAttributes(){return{name:{default:""},avatarSrc:{default:""},id:{default:""}}},renderText({node:e}){return`@${e.attrs.id}`},renderHTML({HTMLAttributes:e}){return["mention-component",u.mergeAttributes(this.options.HTMLAttributes,e)]}}).configure({suggestion:{char:"@",pluginKey:new g.PluginKey("mentionSuggestion")}}),Ae={compatConfig:{MODE:3},name:"ChannelComponent",components:{NodeViewWrapper:d.NodeViewWrapper,DtLink:O.default},props:d.nodeViewProps,computed:{text(){return"#"+this.$props.node.attrs.name}}};function Pe(e,t,r,n,i,s){const a=o.resolveComponent("dt-link"),c=o.resolveComponent("node-view-wrapper");return o.openBlock(),o.createBlock(c,{class:"d-d-inline-block"},{default:o.withCtx(()=>[o.createVNode(a,{kind:"mention"},{default:o.withCtx(()=>[o.createTextVNode(o.toDisplayString(s.text),1)]),_:1})]),_:1})}const Ne=h._(Ae,[["render",Pe]]),He=R.extend({name:"channel",addNodeView(){return d.VueNodeViewRenderer(Ne)},parseHTML(){return[{tag:"channel-component"}]},addAttributes(){return{name:{default:""},id:{default:""},locked:{default:!1}}},renderText({node:e}){return`#${e.attrs.id}`},renderHTML({HTMLAttributes:e}){return["channel-component",u.mergeAttributes(this.options.HTMLAttributes,e)]}}).configure({suggestion:{char:"#",pluginKey:new g.PluginKey("channelSuggestion")}}),Ke={compatConfig:{MODE:3},name:"SlashCommandsComponent",components:{NodeViewWrapper:d.NodeViewWrapper},props:d.nodeViewProps,emits:["selected-command"],computed:{text(){return"/"+this.$props.node.attrs.command}},created(){this.$parent.$emit("selected-command",this.$props.node.attrs.command)}};function Ue(e,t,r,n,i,s){const a=o.resolveComponent("node-view-wrapper");return o.openBlock(),o.createBlock(a,{class:"d-d-inline-block"},{default:o.withCtx(()=>[o.createTextVNode(o.toDisplayString(s.text),1)]),_:1})}const We=h._(Ke,[["render",Ue]]),ze=(e,t)=>[...e.matchAll(t)].map(n=>{let i=n[2];return i.endsWith(" ")||(i+=" "),{index:n.index,text:i,match:n}}),Fe=R.extend({name:"slash-commands",group:"inline",inline:!0,addNodeView(){return d.VueNodeViewRenderer(We)},parseHTML(){return[{tag:"command-component"}]},addAttributes(){return{command:{default:""},parametersExample:{default:""},description:{default:""}}},renderText({node:e}){return`/${e.attrs.command}`},renderHTML({HTMLAttributes:e}){return["command-component",u.mergeAttributes(this.options.HTMLAttributes,e)]},addInputRules(){var r;const e=(r=this.options.suggestion)==null?void 0:r.items({query:""}).map(n=>n.command),t=new RegExp(`^((?:\\/)(${e.join("|")})) $`);return[u.nodeInputRule({find:t,type:this.type,getAttributes(n){return{command:n[2]}}})]},addPasteRules(){var r;const e=(r=this.options.suggestion)==null?void 0:r.items({query:""}).map(n=>n.command),t=new RegExp(`^((?:\\/)(${e.join("|")})) ?$`,"g");return[u.nodePasteRule({find:n=>ze(n,t),type:this.type,getAttributes(n){return{command:n[0].trim()}}})]}}).configure({suggestion:{char:"/",pluginKey:new g.PluginKey("slashCommandSuggestion")}}),Xe={compatConfig:{MODE:3},name:"MentionSuggestion",components:{DtAvatar:oe.default,DtStack:C.default},props:{item:{type:Object,required:!0}},computed:{name(){return this.item.name},avatarSrc(){return this.item.avatarSrc}}},Je={class:"d-mention-suggestion__name"};function Ye(e,t,r,n,i,s){const a=o.resolveComponent("dt-avatar"),c=o.resolveComponent("dt-stack");return o.openBlock(),o.createBlock(c,{direction:"row",gap:"400"},{default:o.withCtx(()=>[o.createVNode(a,{"full-name":s.name,"image-src":s.avatarSrc,"image-alt":s.name,size:"xs"},null,8,["full-name","image-src","image-alt"]),o.createElementVNode("span",Je,o.toDisplayString(s.name),1)]),_:1})}const Ge=h._(Xe,[["render",Ye]]),Qe={allowSpaces:!0,render:()=>{let e,t,r=!1;return{onStart:n=>{e=new d.VueRenderer(E,{props:{itemComponent:o.markRaw(Ge),itemType:"mention",...n},editor:n.editor}),n.clientRect&&(t=x("body",{getReferenceClientRect:n.clientRect,appendTo:()=>document.body,content:e.element,showOnCreate:!1,onShow:()=>{r=!0},onHidden:()=>{r=!1},interactive:!0,trigger:"manual",placement:"top-start",zIndex:650,plugins:[S]}),n.items.length>0&&(t==null||t[0].show()))},onUpdate(n){e==null||e.updateProps(n),n.items.length>0?t==null||t[0].show():t==null||t[0].hide(),n.clientRect&&(t==null||t[0].setProps({getReferenceClientRect:n.clientRect}))},onKeyDown(n){var i;if(r)return(i=e==null?void 0:e.ref)==null?void 0:i.onKeyDown(n)},onExit(){t==null||t[0].destroy(),t=null,e==null||e.destroy(),e=null}}}},Ze={compatConfig:{MODE:3},name:"ChannelSuggestion",components:{DtStack:C.default,DtIconHash:re,DtIconLock:ie},props:{item:{type:Object,required:!0}},computed:{name(){return this.item.name}}};function et(e,t,r,n,i,s){const a=o.resolveComponent("dt-icon-hash"),c=o.resolveComponent("dt-icon-lock"),l=o.resolveComponent("dt-stack");return o.openBlock(),o.createBlock(l,{direction:"row",gap:"400"},{default:o.withCtx(()=>[r.item.locked?(o.openBlock(),o.createBlock(c,{key:1,size:"300"})):(o.openBlock(),o.createBlock(a,{key:0,size:"300"})),o.createElementVNode("span",null,o.toDisplayString(s.name),1)]),_:1})}const tt=h._(Ze,[["render",et]]),nt={allowSpaces:!0,render:()=>{let e,t,r=!1;return{onStart:n=>{e=new d.VueRenderer(E,{props:{itemComponent:o.markRaw(tt),itemType:"channel",...n},editor:n.editor}),n.clientRect&&(t=x("body",{getReferenceClientRect:n.clientRect,appendTo:()=>document.body,content:e.element,showOnCreate:!1,onShow:()=>{r=!0},onHidden:()=>{r=!1},interactive:!0,trigger:"manual",placement:"top-start",zIndex:650,plugins:[S]}),n.items.length>0&&(t==null||t[0].show()))},onUpdate(n){e==null||e.updateProps(n),n.items.length>0?t==null||t[0].show():t==null||t[0].hide(),n.clientRect&&(t==null||t[0].setProps({getReferenceClientRect:n.clientRect}))},onKeyDown(n){var i;if(r)return(i=e==null?void 0:e.ref)==null?void 0:i.onKeyDown(n)},onExit(){t==null||t[0].destroy(),t=null,e==null||e.destroy(),e=null}}}},ot={compatConfig:{MODE:3},name:"SlashCommandSuggestion",props:{item:{type:Object,required:!0}},computed:{command(){return this.item.command},description(){return this.item.description},parametersExample(){return this.item.parametersExample}}},rt={class:"d-body--md-compact"},it={key:0},st={class:"d-body--sm d-fc-tertiary"};function at(e,t,r,n,i,s){return o.openBlock(),o.createElementBlock("div",null,[o.createElementVNode("div",rt,[o.createElementVNode("span",null,"/"+o.toDisplayString(s.command),1),s.parametersExample?(o.openBlock(),o.createElementBlock("span",it,o.toDisplayString(s.parametersExample),1)):o.createCommentVNode("",!0)]),o.createElementVNode("div",st,o.toDisplayString(s.description),1)])}const ct=h._(ot,[["render",at]]),lt={allowSpaces:!0,startOfLine:!0,render:()=>{let e,t,r=!1;return{onStart:n=>{e=new d.VueRenderer(E,{parent:void 0,props:{itemComponent:o.markRaw(ct),itemType:"slash-command",...n},editor:n.editor}),n.clientRect&&(t=x("body",{getReferenceClientRect:n.clientRect,appendTo:()=>document.body,content:e.element,showOnCreate:!1,onShow:()=>{r=!0},onHidden:()=>{r=!1},interactive:!0,trigger:"manual",placement:"top-start",zIndex:650,plugins:[S]}),n.items.length>0&&(t==null||t[0].show()))},onUpdate(n){e==null||e.updateProps(n),n.items.length>0?t==null||t[0].show():t==null||t[0].hide(),n.clientRect&&(t==null||t[0].setProps({getReferenceClientRect:n.clientRect}))},onKeyDown(n){var i;if(r)return(i=e==null?void 0:e.ref)==null?void 0:i.onKeyDown(n)},onExit(){t==null||t[0].destroy(),t=null,e==null||e.destroy(),e=null}}}},dt={compatConfig:{MODE:3},name:"DtRichTextEditor",components:{EditorContent:d.EditorContent,BubbleMenu:d.BubbleMenu,DtButton:ae.default,DtStack:C.default},props:{modelValue:{type:[Object,String],default:""},editable:{type:Boolean,default:!0},preventTyping:{type:Boolean,default:!1},allowLineBreaks:{type:Boolean,default:!1},inputAriaLabel:{type:String,required:!0},inputClass:{type:String,default:""},autoFocus:{type:[Boolean,String,Number],default:!1,validator(e){return typeof e=="string"?b.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(e):!0}},outputFormat:{type:String,default:"html",validator(e){return b.RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(e)}},placeholder:{type:String,default:""},link:{type:[Boolean,Object],default:!1},customLink:{type:[Boolean,Object],default:!1},mentionSuggestion:{type:Object,default:null},channelSuggestion:{type:Object,default:null},slashCommandSuggestion:{type:Object,default:null},allowBlockquote:{type:Boolean,default:!0},allowBold:{type:Boolean,default:!0},allowBulletList:{type:Boolean,default:!0},allowItalic:{type:Boolean,default:!0},allowStrike:{type:Boolean,default:!0},allowUnderline:{type:Boolean,default:!0},allowCode:{type:Boolean,default:!0},allowCodeblock:{type:Boolean,default:!0},allowInlineImages:{type:Boolean,default:!1},additionalExtensions:{type:Array,default:()=>[]},hideLinkBubbleMenu:{type:Boolean,default:!1},useDivTags:{type:Boolean,default:!1}},emits:["input","json-input","html-input","text-input","update:modelValue","blur","focus","enter","edit-link","selected"],data(){return{editor:null,tippyOptions:{appendTo:()=>{var e;return(e=k.returnFirstEl(this.$refs.editor.$el).getRootNode())==null?void 0:e.querySelector("body")},placement:"top-start"}}},computed:{attrs(){return{...this.$attrs,onInput:()=>{},onFocus:()=>{},onBlur:()=>{}}},extensions(){const e=[A,Y,Q,P];e.push(this.useDivTags?Oe:$),this.allowBlockquote&&e.push(M),this.allowBold&&e.push(H),this.allowBulletList&&(e.push(K),e.push(z.extend({renderText({node:n}){return n.textContent}})),e.push(F)),this.allowItalic&&e.push(U),this.allowStrike&&e.push(X),this.allowUnderline&&e.push(J),this.placeholder&&e.push(N.configure({placeholder:this.placeholder}));const t=this,r=u.Extension.create({addKeyboardShortcuts(){return{"Shift-Enter":({editor:n})=>t.allowLineBreaks?!1:(n.commands.first(({commands:i})=>[()=>i.newlineInCode(),()=>t.allowBulletList&&i.splitListItem("listItem"),()=>i.createParagraphNear(),()=>i.liftEmptyBlock(),()=>i.splitBlock()]),!0),Enter:()=>t.allowLineBreaks?!1:(t.$emit("enter"),!0)}}});if(e.push(r),this.link&&e.push(W.extend({inclusive:!1}).configure({HTMLAttributes:{class:"d-link d-wb-break-all"},openOnClick:!1,autolink:!0,protocols:b.RICH_TEXT_EDITOR_SUPPORTED_LINK_PROTOCOLS})),this.customLink&&e.push(this.getExtension(Ie,this.customLink)),this.mentionSuggestion){const n={...this.mentionSuggestion,...Qe};e.push(qe.configure({suggestion:n}))}if(this.channelSuggestion){const n={...this.channelSuggestion,...nt};e.push(He.configure({suggestion:n}))}if(this.slashCommandSuggestion){const n={...this.slashCommandSuggestion,...lt};e.push(Fe.configure({suggestion:n}))}return e.push(Ee),e.push(G.configure({types:["paragraph"],defaultAlignment:"left"})),this.allowCode&&e.push(q),this.allowCodeblock&&e.push(j.extend({renderText({node:n}){return`\`\`\`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("../../node_modules/@tiptap/vue-3.cjs"),u=require("@tiptap/core"),q=require("@tiptap/extension-blockquote"),M=require("@tiptap/extension-code-block"),j=require("@tiptap/extension-code"),A=require("@tiptap/extension-document"),P=require("@tiptap/extension-hard-break"),$=require("@tiptap/extension-paragraph"),N=require("@tiptap/extension-placeholder"),H=require("@tiptap/extension-bold"),K=require("@tiptap/extension-bullet-list"),F=require("@tiptap/extension-italic"),U=require("@tiptap/extension-link"),W=require("@tiptap/extension-list-item"),z=require("@tiptap/extension-ordered-list"),X=require("@tiptap/extension-strike"),J=require("@tiptap/extension-underline"),Y=require("@tiptap/extension-text"),G=require("@tiptap/extension-text-align"),Q=require("@tiptap/extension-history"),Z=require("@tiptap/extension-text-style"),ee=require("@tiptap/extension-color"),te=require("@tiptap/extension-font-family"),g=require("@tiptap/pm/state"),ne=require("@tiptap/suggestion"),I=require("regex-combined-emojis"),o=require("vue"),h=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),D=require("../emoji/emoji.cjs"),f=require("../../common/emoji/index.cjs"),oe=require("@dialpad/dialtone-emojis"),re=require("../list-item/list-item.cjs"),b=require("../stack/stack.cjs"),x=require("tippy.js"),k=require("../../common/utils/index.cjs"),ie=require("@tiptap/extension-image"),R=require("@tiptap/extension-mention"),O=require("../link/link.cjs"),C=require("./rich-text-editor-constants.cjs"),se=require("../avatar/avatar.cjs"),ae=require("@dialpad/dialtone-icons/vue3/hash"),le=require("@dialpad/dialtone-icons/vue3/lock"),ce=require("deep-equal"),de=require("../button/button.cjs"),ue={compatConfig:{MODE:3},name:"EmojiComponent",components:{NodeViewWrapper:d.NodeViewWrapper,DtEmoji:D.default},props:d.nodeViewProps};function me(e,t,r,n,i,s){const a=o.resolveComponent("dt-emoji"),l=o.resolveComponent("node-view-wrapper");return o.openBlock(),o.createBlock(l,{class:"d-d-inline-block d-va-bottom d-lh0"},{default:o.withCtx(()=>[o.createVNode(a,{size:"500",code:e.node.attrs.code},null,8,["code"])]),_:1})}const he=h._(ue,[["render",me]]),pe={compatConfig:{MODE:3},name:"SuggestionList",components:{DtListItem:re.default},props:{items:{type:Array,required:!0},command:{type:Function,required:!0},itemComponent:{type:Object,required:!0},itemType:{type:String,required:!0}},data(){return{selectedIndex:0}},watch:{items(){this.selectedIndex=0}},methods:{onKeyDown({event:e}){return e.key==="ArrowUp"?(this.upHandler(),!0):e.key==="ArrowDown"?(this.downHandler(),!0):e.key==="Enter"||e.key==="Tab"?(this.selectHandler(),!0):!1},upHandler(){this.selectedIndex=(this.selectedIndex+this.items.length-1)%this.items.length,this.scrollActiveElementIntoView()},downHandler(){this.selectedIndex=(this.selectedIndex+1)%this.items.length,this.scrollActiveElementIntoView()},async scrollActiveElementIntoView(){await this.$nextTick();const e=this.$refs.suggestionList.querySelector(".d-list-item--highlighted");e&&e.scrollIntoView({behaviour:"smooth",block:"center"})},selectHandler(){this.selectItem(this.selectedIndex)},selectItem(e){const t=this.items[e];switch(this.itemType){case"emoji":this.command(t);return;case"mention":this.command({name:t.name,id:t.id,avatarSrc:t.avatarSrc});break;case"channel":this.command({name:t.name,id:t.id});break;case"slash-command":this.command({command:t.command});break}}}},fe={class:"d-popover__dialog d-suggestion-list__container"},ge={ref:"suggestionList",class:"d-suggestion-list"};function _e(e,t,r,n,i,s){const a=o.resolveComponent("dt-list-item");return o.openBlock(),o.createElementBlock("div",fe,[o.withDirectives(o.createElementVNode("ul",ge,[(o.openBlock(!0),o.createElementBlock(o.Fragment,null,o.renderList(r.items,(l,c)=>(o.openBlock(),o.createBlock(a,{key:l.id,class:o.normalizeClass(["d-suggestion-list__item",{"d-list-item--highlighted":c===i.selectedIndex}]),"navigation-type":"arrow-keys",onClick:m=>s.selectItem(c),onKeydown:o.withModifiers(s.onKeyDown,["prevent"])},{default:o.withCtx(()=>[(o.openBlock(),o.createBlock(o.resolveDynamicComponent(r.itemComponent),{item:l},null,8,["item"]))]),_:2},1032,["class","onClick","onKeydown"]))),128))],512),[[o.vShow,r.items.length]])])}const E=h._(pe,[["render",_e]]),ke={compatConfig:{MODE:3},name:"EmojiSuggestion",components:{DtEmoji:D.default,DtStack:b.default},props:{item:{type:Object,required:!0}}};function we(e,t,r,n,i,s){const a=o.resolveComponent("dt-emoji"),l=o.resolveComponent("dt-stack");return o.openBlock(),o.createBlock(l,{direction:"row",gap:"400"},{default:o.withCtx(()=>[o.createVNode(a,{size:"200",code:r.item.code},null,8,["code"]),o.createTextVNode(" "+o.toDisplayString(r.item.code),1)]),_:1})}const ye=h._(ke,[["render",we]]),S={name:"hideOnEsc",defaultValue:!0,fn({hide:e}){function t(r){r.keyCode===27&&e()}return{onShow(){document.addEventListener("keydown",t)},onHide(){document.removeEventListener("keydown",t)}}}},Ce=20,be={items:({query:e})=>{if(e.length<2)return[];const t=Object.values(oe.emojisIndexed);return e=e.toLowerCase(),t.filter(n=>[n.name,n.shortname.replaceAll(":",""),...n.keywords].some(i=>i.startsWith(e))).splice(0,Ce).map(n=>({code:n.shortname}))},command:({editor:e,range:t,props:r})=>{var s,a;const n=e.view.state.selection.$to.nodeAfter;((s=n==null?void 0:n.text)==null?void 0:s.startsWith(" "))&&(t.to+=1),e.chain().focus().insertContentAt(t,[{type:"emoji",attrs:r}]).run(),(a=window.getSelection())==null||a.collapseToEnd()},render:()=>{let e,t,r=!1;return{onStart:n=>{e=new d.VueRenderer(E,{props:{itemComponent:o.markRaw(ye),itemType:"emoji",...n},editor:n.editor}),n.clientRect&&(t=x("body",{getReferenceClientRect:n.clientRect,appendTo:()=>document.body,content:e.element,showOnCreate:!1,onShow:()=>{r=!0},onHidden:()=>{r=!1},interactive:!0,trigger:"manual",placement:"top-start",zIndex:650,plugins:[S]}),n.items.length>0&&(t==null||t[0].show()))},onUpdate(n){e==null||e.updateProps(n),n.items.length>0?t==null||t[0].show():t==null||t[0].hide(),t==null||t[0].setProps({getReferenceClientRect:n.clientRect})},onKeyDown(n){var i;if(r)return(i=e==null?void 0:e.ref)==null?void 0:i.onKeyDown(n)},onExit(){t==null||t[0].destroy(),t=null,e==null||e.destroy(),e=null}}}},xe=/(:\w+:)$/,Ee=new RegExp(I.emojiPattern+"$"),Se=e=>{if(e&&f.codeToEmojiData(e[0]))return{text:e[2]||e[0]}},Te=e=>[...e.matchAll(f.emojiShortCodeRegex)].filter(r=>f.codeToEmojiData(r[0])).map(r=>({index:r.index,text:r[0],match:r})),ve=u.Node.create({name:"emoji",addOptions(){return{HTMLAttributes:{}}},group:"inline",inline:!0,selectable:!1,atom:!0,addNodeView(){return d.VueNodeViewRenderer(he)},addAttributes(){return{code:{default:null}}},parseHTML(){return[{tag:"emoji-component"}]},renderText({node:e}){return f.stringToUnicode(f.codeToEmojiData(e.attrs.code).unicode_output)},renderHTML({HTMLAttributes:e}){return["emoji-component",u.mergeAttributes(this.options.HTMLAttributes,e)]},addInputRules(){return[new u.InputRule({find:e=>{const t=e.match(xe)||e.match(Ee);if(t)return Se(t)},handler:({state:e,range:t,match:r,commands:n,chain:i,can:s})=>{const{tr:a}=e,l=t.from,c=t.to;a.replaceWith(l,c,this.type.create({code:r[0]}))}})]},addPasteRules(){return[u.nodePasteRule({find:Te,type:this.type,getAttributes(e){return{code:e[0]}}}),u.nodePasteRule({find:f.emojiRegex,type:this.type,getAttributes(e){return{code:e[0]}}})]},addProseMirrorPlugins(){return[ne({char:":",pluginKey:new g.PluginKey("emoji"),editor:this.editor,...this.options.suggestion,...be})]},addKeyboardShortcuts(){return{Backspace:()=>this.editor.commands.command(({tr:e,state:t})=>{let r=!1;const{selection:n}=t,{empty:i,anchor:s}=n;return i?(t.doc.nodesBetween(s-1,s,(a,l)=>{if(a.type.name===this.name)return r=!0,e.insertText("",l,l+a.nodeSize),!1}),r):!1})}}});function Re(e,t,r=()=>!0){const n=[];t.lastIndex=0;let i;for(;i=t.exec(e);)r(e,i)&&n.push(i);return n}function Be(e,t){return!["#","@"].includes(e.charAt(t.index))&&!["#","@"].includes(e.charAt(t.index-1))}function Le(e){const t=new RegExp("(?:"+[`[!?.,:;'"]`,"(?:&|&amp;)(?:lt|gt|quot|apos|raquo|laquo|rsaquo|lsaquo);)+$"].join("|"),"g");return e.replace(t,"")}function $e(e,t){const r=e.slice(0,t+1).search(/\S+\s*$/),n=e.slice(t).search(/\s/);if(n<0){const i=e.slice(r);return{text:i,from:r,to:r+i.length}}return{text:e.slice(r,n+t),from:r,to:n+t}}function v(e,t,r,n){const i=$e(e,t);if(n.lastIndex=0,!n.test(i.text))return i;const s=r==="left"?i.from-1:i.to+1;return s<=0||s>=e.length||s===t?i:v(e,s,r,n)}function Ie(e,t,r,n){const i=Math.max(e.from-1,0),s=Math.min(e.to+1,t.content.size),a=u.getMarksBetween(i,s,t);for(const l of a)l.mark.type===n&&r.removeMark(l.from,l.to,n)}const B=k.getPhoneNumberRegex(1,15);function L(e,t,r,n,i,s){if(!e)return;let a=r-t-1;a=a<0?0:a;const l=n-t,c=v(e,a,"left",B),m=v(e,l,"right",B),p=e.slice(c.from,m.to);Re(p,k.linkRegex,Be).forEach(T=>{const _=Le(T[0]),y=t+c.from+T.index+1,V=y+_.length;i.addMark(y,V,s.create())})}function De(e){let t=!1;return new g.Plugin({key:new g.PluginKey("autolink"),appendTransaction:(r,n,i)=>{const s=r.some(p=>p.docChanged)&&!n.doc.eq(i.doc);if(t&&!s)return;const{tr:a}=i,{textContent:l}=i.doc;t||L(l,0,0,l.length,a,e.type),t=!0;const c=u.combineTransactionSteps(n.doc,[...r]);return u.getChangedRanges(c).forEach(({oldRange:p,newRange:w})=>{Ie(w,i.doc,a,e.type),u.findChildrenInRange(i.doc,w,_=>_.isTextblock).forEach(({node:_,pos:y})=>{L(_.textContent,y,p.from,w.to,a,e.type)})}),a}})}const Oe={class:"d-link d-c-text d-d-inline-block d-wb-break-all",rel:"noopener noreferrer nofollow"},Ve=u.Mark.create({name:"CustomLink",renderHTML({HTMLAttributes:e}){return["a",u.mergeAttributes(this.options.HTMLAttributes,e,Oe)]},renderText({node:e}){return e.attrs.text},addProseMirrorPlugins(){return[De({type:this.type})]}}),qe=ie.extend({name:"ConfigurableImage",addAttributes(){return{src:{default:""},alt:{default:void 0},title:{default:void 0},width:{default:void 0},height:{default:void 0},style:{default:void 0}}}}).configure({inline:!0,allowBase64:!0}),Me=$.extend({parseHTML(){return[{tag:"div"}]},renderHTML({HTMLAttributes:e}){return["div",u.mergeAttributes(this.options.HTMLAttributes,e),0]}}),je={compatConfig:{MODE:3},name:"MentionComponent",components:{NodeViewWrapper:d.NodeViewWrapper,DtLink:O.default},props:d.nodeViewProps,computed:{text(){return"@"+this.$props.node.attrs.name}}};function Ae(e,t,r,n,i,s){const a=o.resolveComponent("dt-link"),l=o.resolveComponent("node-view-wrapper");return o.openBlock(),o.createBlock(l,{class:"d-d-inline-block"},{default:o.withCtx(()=>[o.createVNode(a,{kind:"mention"},{default:o.withCtx(()=>[o.createTextVNode(o.toDisplayString(s.text),1)]),_:1})]),_:1})}const Pe=h._(je,[["render",Ae]]),Ne=R.extend({addNodeView(){return d.VueNodeViewRenderer(Pe)},parseHTML(){return[{tag:"mention-component"}]},addAttributes(){return{name:{default:""},avatarSrc:{default:""},id:{default:""}}},renderText({node:e}){return`@${e.attrs.id}`},renderHTML({HTMLAttributes:e}){return["mention-component",u.mergeAttributes(this.options.HTMLAttributes,e)]}}).configure({suggestion:{char:"@",pluginKey:new g.PluginKey("mentionSuggestion")}}),He={compatConfig:{MODE:3},name:"ChannelComponent",components:{NodeViewWrapper:d.NodeViewWrapper,DtLink:O.default},props:d.nodeViewProps,computed:{text(){return"#"+this.$props.node.attrs.name}}};function Ke(e,t,r,n,i,s){const a=o.resolveComponent("dt-link"),l=o.resolveComponent("node-view-wrapper");return o.openBlock(),o.createBlock(l,{class:"d-d-inline-block"},{default:o.withCtx(()=>[o.createVNode(a,{kind:"mention"},{default:o.withCtx(()=>[o.createTextVNode(o.toDisplayString(s.text),1)]),_:1})]),_:1})}const Fe=h._(He,[["render",Ke]]),Ue=R.extend({name:"channel",addNodeView(){return d.VueNodeViewRenderer(Fe)},parseHTML(){return[{tag:"channel-component"}]},addAttributes(){return{name:{default:""},id:{default:""},locked:{default:!1}}},renderText({node:e}){return`#${e.attrs.id}`},renderHTML({HTMLAttributes:e}){return["channel-component",u.mergeAttributes(this.options.HTMLAttributes,e)]}}).configure({suggestion:{char:"#",pluginKey:new g.PluginKey("channelSuggestion")}}),We={compatConfig:{MODE:3},name:"SlashCommandsComponent",components:{NodeViewWrapper:d.NodeViewWrapper},props:d.nodeViewProps,emits:["selected-command"],computed:{text(){return"/"+this.$props.node.attrs.command}},created(){this.$parent.$emit("selected-command",this.$props.node.attrs.command)}};function ze(e,t,r,n,i,s){const a=o.resolveComponent("node-view-wrapper");return o.openBlock(),o.createBlock(a,{class:"d-d-inline-block"},{default:o.withCtx(()=>[o.createTextVNode(o.toDisplayString(s.text),1)]),_:1})}const Xe=h._(We,[["render",ze]]),Je=(e,t)=>[...e.matchAll(t)].map(n=>{let i=n[2];return i.endsWith(" ")||(i+=" "),{index:n.index,text:i,match:n}}),Ye=R.extend({name:"slash-commands",group:"inline",inline:!0,addNodeView(){return d.VueNodeViewRenderer(Xe)},parseHTML(){return[{tag:"command-component"}]},addAttributes(){return{command:{default:""},parametersExample:{default:""},description:{default:""}}},renderText({node:e}){return`/${e.attrs.command}`},renderHTML({HTMLAttributes:e}){return["command-component",u.mergeAttributes(this.options.HTMLAttributes,e)]},addInputRules(){var r;const e=(r=this.options.suggestion)==null?void 0:r.items({query:""}).map(n=>n.command),t=new RegExp(`^((?:\\/)(${e.join("|")})) $`);return[u.nodeInputRule({find:t,type:this.type,getAttributes(n){return{command:n[2]}}})]},addPasteRules(){var r;const e=(r=this.options.suggestion)==null?void 0:r.items({query:""}).map(n=>n.command),t=new RegExp(`^((?:\\/)(${e.join("|")})) ?$`,"g");return[u.nodePasteRule({find:n=>Je(n,t),type:this.type,getAttributes(n){return{command:n[0].trim()}}})]}}).configure({suggestion:{char:"/",pluginKey:new g.PluginKey("slashCommandSuggestion")}}),Ge={compatConfig:{MODE:3},name:"MentionSuggestion",components:{DtAvatar:se.default,DtStack:b.default},props:{item:{type:Object,required:!0}},computed:{name(){return this.item.name},avatarSrc(){return this.item.avatarSrc}}},Qe={class:"d-mention-suggestion__name"};function Ze(e,t,r,n,i,s){const a=o.resolveComponent("dt-avatar"),l=o.resolveComponent("dt-stack");return o.openBlock(),o.createBlock(l,{direction:"row",gap:"400"},{default:o.withCtx(()=>[o.createVNode(a,{"full-name":s.name,"image-src":s.avatarSrc,"image-alt":s.name,size:"xs"},null,8,["full-name","image-src","image-alt"]),o.createElementVNode("span",Qe,o.toDisplayString(s.name),1)]),_:1})}const et=h._(Ge,[["render",Ze]]),tt={allowSpaces:!0,render:()=>{let e,t,r=!1;return{onStart:n=>{e=new d.VueRenderer(E,{props:{itemComponent:o.markRaw(et),itemType:"mention",...n},editor:n.editor}),n.clientRect&&(t=x("body",{getReferenceClientRect:n.clientRect,appendTo:()=>document.body,content:e.element,showOnCreate:!1,onShow:()=>{r=!0},onHidden:()=>{r=!1},interactive:!0,trigger:"manual",placement:"top-start",zIndex:650,plugins:[S]}),n.items.length>0&&(t==null||t[0].show()))},onUpdate(n){e==null||e.updateProps(n),n.items.length>0?t==null||t[0].show():t==null||t[0].hide(),n.clientRect&&(t==null||t[0].setProps({getReferenceClientRect:n.clientRect}))},onKeyDown(n){var i;if(r)return(i=e==null?void 0:e.ref)==null?void 0:i.onKeyDown(n)},onExit(){t==null||t[0].destroy(),t=null,e==null||e.destroy(),e=null}}}},nt={compatConfig:{MODE:3},name:"ChannelSuggestion",components:{DtStack:b.default,DtIconHash:ae,DtIconLock:le},props:{item:{type:Object,required:!0}},computed:{name(){return this.item.name}}};function ot(e,t,r,n,i,s){const a=o.resolveComponent("dt-icon-hash"),l=o.resolveComponent("dt-icon-lock"),c=o.resolveComponent("dt-stack");return o.openBlock(),o.createBlock(c,{direction:"row",gap:"400"},{default:o.withCtx(()=>[r.item.locked?(o.openBlock(),o.createBlock(l,{key:1,size:"300"})):(o.openBlock(),o.createBlock(a,{key:0,size:"300"})),o.createElementVNode("span",null,o.toDisplayString(s.name),1)]),_:1})}const rt=h._(nt,[["render",ot]]),it={allowSpaces:!0,render:()=>{let e,t,r=!1;return{onStart:n=>{e=new d.VueRenderer(E,{props:{itemComponent:o.markRaw(rt),itemType:"channel",...n},editor:n.editor}),n.clientRect&&(t=x("body",{getReferenceClientRect:n.clientRect,appendTo:()=>document.body,content:e.element,showOnCreate:!1,onShow:()=>{r=!0},onHidden:()=>{r=!1},interactive:!0,trigger:"manual",placement:"top-start",zIndex:650,plugins:[S]}),n.items.length>0&&(t==null||t[0].show()))},onUpdate(n){e==null||e.updateProps(n),n.items.length>0?t==null||t[0].show():t==null||t[0].hide(),n.clientRect&&(t==null||t[0].setProps({getReferenceClientRect:n.clientRect}))},onKeyDown(n){var i;if(r)return(i=e==null?void 0:e.ref)==null?void 0:i.onKeyDown(n)},onExit(){t==null||t[0].destroy(),t=null,e==null||e.destroy(),e=null}}}},st={compatConfig:{MODE:3},name:"SlashCommandSuggestion",props:{item:{type:Object,required:!0}},computed:{command(){return this.item.command},description(){return this.item.description},parametersExample(){return this.item.parametersExample}}},at={class:"d-body--md-compact"},lt={key:0},ct={class:"d-body--sm d-fc-tertiary"};function dt(e,t,r,n,i,s){return o.openBlock(),o.createElementBlock("div",null,[o.createElementVNode("div",at,[o.createElementVNode("span",null,"/"+o.toDisplayString(s.command),1),s.parametersExample?(o.openBlock(),o.createElementBlock("span",lt,o.toDisplayString(s.parametersExample),1)):o.createCommentVNode("",!0)]),o.createElementVNode("div",ct,o.toDisplayString(s.description),1)])}const ut=h._(st,[["render",dt]]),mt={allowSpaces:!0,startOfLine:!0,render:()=>{let e,t,r=!1;return{onStart:n=>{e=new d.VueRenderer(E,{parent:void 0,props:{itemComponent:o.markRaw(ut),itemType:"slash-command",...n},editor:n.editor}),n.clientRect&&(t=x("body",{getReferenceClientRect:n.clientRect,appendTo:()=>document.body,content:e.element,showOnCreate:!1,onShow:()=>{r=!0},onHidden:()=>{r=!1},interactive:!0,trigger:"manual",placement:"top-start",zIndex:650,plugins:[S]}),n.items.length>0&&(t==null||t[0].show()))},onUpdate(n){e==null||e.updateProps(n),n.items.length>0?t==null||t[0].show():t==null||t[0].hide(),n.clientRect&&(t==null||t[0].setProps({getReferenceClientRect:n.clientRect}))},onKeyDown(n){var i;if(r)return(i=e==null?void 0:e.ref)==null?void 0:i.onKeyDown(n)},onExit(){t==null||t[0].destroy(),t=null,e==null||e.destroy(),e=null}}}},ht={compatConfig:{MODE:3},name:"DtRichTextEditor",components:{EditorContent:d.EditorContent,BubbleMenu:d.BubbleMenu,DtButton:de.default,DtStack:b.default},props:{modelValue:{type:[Object,String],default:""},editable:{type:Boolean,default:!0},preventTyping:{type:Boolean,default:!1},allowLineBreaks:{type:Boolean,default:!1},inputAriaLabel:{type:String,required:!0},inputClass:{type:String,default:""},autoFocus:{type:[Boolean,String,Number],default:!1,validator(e){return typeof e=="string"?C.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(e):!0}},outputFormat:{type:String,default:"html",validator(e){return C.RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(e)}},placeholder:{type:String,default:""},link:{type:[Boolean,Object],default:!1},customLink:{type:[Boolean,Object],default:!1},mentionSuggestion:{type:Object,default:null},channelSuggestion:{type:Object,default:null},slashCommandSuggestion:{type:Object,default:null},allowBlockquote:{type:Boolean,default:!0},allowBold:{type:Boolean,default:!0},allowBulletList:{type:Boolean,default:!0},allowItalic:{type:Boolean,default:!0},allowStrike:{type:Boolean,default:!0},allowUnderline:{type:Boolean,default:!0},allowCode:{type:Boolean,default:!0},allowCodeblock:{type:Boolean,default:!0},allowInlineImages:{type:Boolean,default:!1},allowFontColor:{type:Boolean,default:!1},allowFontFamily:{type:Boolean,default:!1},additionalExtensions:{type:Array,default:()=>[]},hideLinkBubbleMenu:{type:Boolean,default:!1},useDivTags:{type:Boolean,default:!1}},emits:["input","json-input","html-input","text-input","update:modelValue","blur","focus","enter","edit-link","selected"],data(){return{editor:null,tippyOptions:{appendTo:()=>{var e;return(e=k.returnFirstEl(this.$refs.editor.$el).getRootNode())==null?void 0:e.querySelector("body")},placement:"top-start"}}},computed:{attrs(){return{...this.$attrs,onInput:()=>{},onFocus:()=>{},onBlur:()=>{}}},extensions(){const e=[A,Y,Q,P];e.push(this.useDivTags?Me:$),this.allowBlockquote&&e.push(q),this.allowBold&&e.push(H),this.allowBulletList&&(e.push(K),e.push(W.extend({renderText({node:n}){return n.textContent}})),e.push(z)),this.allowItalic&&e.push(F),this.allowStrike&&e.push(X),this.allowUnderline&&e.push(J),this.placeholder&&e.push(N.configure({placeholder:this.placeholder}));const t=this,r=u.Extension.create({addKeyboardShortcuts(){return{"Shift-Enter":({editor:n})=>t.allowLineBreaks?!1:(n.commands.first(({commands:i})=>[()=>i.newlineInCode(),()=>t.allowBulletList&&i.splitListItem("listItem"),()=>i.createParagraphNear(),()=>i.liftEmptyBlock(),()=>i.splitBlock()]),!0),Enter:()=>t.allowLineBreaks?!1:(t.$emit("enter"),!0)}}});if(e.push(r),this.link&&e.push(U.extend({inclusive:!1}).configure({HTMLAttributes:{class:"d-link d-wb-break-all"},openOnClick:!1,autolink:!0,protocols:C.RICH_TEXT_EDITOR_SUPPORTED_LINK_PROTOCOLS})),this.customLink&&e.push(this.getExtension(Ve,this.customLink)),this.mentionSuggestion){const n={...this.mentionSuggestion,...tt};e.push(Ne.configure({suggestion:n}))}if(this.channelSuggestion){const n={...this.channelSuggestion,...it};e.push(Ue.configure({suggestion:n}))}if(this.slashCommandSuggestion){const n={...this.slashCommandSuggestion,...mt};e.push(Ye.configure({suggestion:n}))}return e.push(ve),e.push(G.configure({types:["paragraph"],defaultAlignment:"left"})),this.allowCode&&e.push(j),this.allowCodeblock&&e.push(M.extend({renderText({node:n}){return`\`\`\`
2
2
  ${n.textContent}
3
- \`\`\``}}).configure({HTMLAttributes:{class:"d-rich-text-editor__code-block"}})),this.allowInlineImages&&e.push(De),this.additionalExtensions.length&&e.push(...this.additionalExtensions),e},inputAttrs(){const e={"aria-label":this.inputAriaLabel,"aria-multiline":!0,role:"textbox"};return this.editable||(e["aria-readonly"]=!0),e}},watch:{editable(e){this.editor.setEditable(e),this.updateEditorAttributes({"aria-readonly":!e})},inputClass(e){this.updateEditorAttributes({class:e})},inputAriaLabel(e){this.updateEditorAttributes({"aria-label":e})},extensions(){this.destroyEditor(),this.createEditor()},modelValue(e){this.processValue(e)}},created(){this.createEditor()},beforeUnmount(){this.destroyEditor()},mounted(){k.warnIfUnmounted(k.returnFirstEl(this.$el),this.$options.name),this.processValue(this.modelValue,!1)},methods:{createEditor(){this.editor=new d.Editor({autofocus:this.autoFocus,content:this.modelValue,editable:this.editable,extensions:this.extensions,editorProps:{attributes:{...this.inputAttrs,class:this.inputClass},handlePaste:(e,t)=>{if(!this.link&&!this.customLink){const r=/^https?:\/\//;if(!(t!=null&&t.clipboardData))return!1;const n=t.clipboardData.getData("text");if(!r.test(n)||!t.clipboardData.getData("text/html"))return!1;const i=n.replace(/\n/g,"<br>").replace(/ {2}/g,"&nbsp;&nbsp;");return this.editor.chain().focus().insertContent(i).run(),!0}return!1},transformPastedHTML(e){return e.replace(/(<\/\w+>)((<br \/>)+)/g,"$2$3$1")}}}),this.addEditorListeners()},bubbleMenuShouldShow({editor:e,view:t,state:r,oldState:n,from:i,to:s}){return e.isActive("link")},getSelectedLinkText(e){var c,l,m;const{view:t,state:r}=e,{from:n,to:i}=t.state.selection,s=r.doc.textBetween(n,i,""),a=this.editor.state.doc.nodeAt(n);return a&&((m=(l=(c=a.marks)==null?void 0:c.at(0))==null?void 0:l.type)==null?void 0:m.name)==="link"?a.textContent:s},editLink(){const e=this.getSelectedLinkText(this.editor),t={href:this.editor.getAttributes("link").href,text:e};this.$emit("edit-link",t)},removeLink(){var e,t,r,n;(n=(r=(t=(e=this.editor)==null?void 0:e.chain())==null?void 0:t.focus())==null?void 0:r.unsetLink())==null||n.run()},openLink(){var t,r;(r=(t=this.editor)==null?void 0:t.chain())==null||r.focus();const e=this.editor.getAttributes("link").href;window.open(e,"_blank")},setLink(e,t,r,n=b.RICH_TEXT_EDITOR_SUPPORTED_LINK_PROTOCOLS,i){var c,l,m;if(!e){this.removeLink();return}n.find(p=>p.test(e))||(e=`${i}${e}`),this.editor.chain().focus().extendMarkRange("link").run();const a=(m=(l=(c=this.editor)==null?void 0:c.view)==null?void 0:l.state)==null?void 0:m.selection;this.editor.chain().focus().insertContent(t).setTextSelection({from:a.from,to:a.from+t.length}).setLink({href:e,class:r.class}).run()},processValue(e,t=!0){const r=this.getOutput();if(!(t&&se(e,r))){if(typeof e=="string"&&this.outputFormat==="text"){const n=new RegExp(`(${I.emojiPattern})`,"g");e=e==null?void 0:e.replace(n,'<emoji-component code="$1"></emoji-component>')}this.editor.commands.setContent(e,!1)}},destroyEditor(){this.editor.destroy()},triggerInputChangeEvents(){const e=this.getOutput();this.$emit("input",e),this.$emit("update:modelValue",e);const t=this.editor.getJSON();this.$emit("json-input",t);const r=this.editor.getHTML();this.$emit("html-input",r);const n=this.editor.getText({blockSeparator:`
3
+ \`\`\``}}).configure({HTMLAttributes:{class:"d-rich-text-editor__code-block"}})),this.allowInlineImages&&e.push(qe),(this.allowFontFamily||this.allowFontColor)&&(e.push(Z),this.allowFontColor&&e.push(ee),this.allowFontFamily&&e.push(te)),this.additionalExtensions.length&&e.push(...this.additionalExtensions),e},inputAttrs(){const e={"aria-label":this.inputAriaLabel,"aria-multiline":!0,role:"textbox"};return this.editable||(e["aria-readonly"]=!0),e}},watch:{editable(e){this.editor.setEditable(e),this.updateEditorAttributes({"aria-readonly":!e})},inputClass(e){this.updateEditorAttributes({class:e})},inputAriaLabel(e){this.updateEditorAttributes({"aria-label":e})},extensions(){this.destroyEditor(),this.createEditor()},modelValue(e){this.processValue(e)}},created(){this.createEditor()},beforeUnmount(){this.destroyEditor()},mounted(){k.warnIfUnmounted(k.returnFirstEl(this.$el),this.$options.name),this.processValue(this.modelValue,!1)},methods:{createEditor(){this.editor=new d.Editor({autofocus:this.autoFocus,content:this.modelValue,editable:this.editable,extensions:this.extensions,editorProps:{attributes:{...this.inputAttrs,class:this.inputClass},handlePaste:(e,t)=>{if(!this.link&&!this.customLink){const r=/^https?:\/\//;if(!(t!=null&&t.clipboardData))return!1;const n=t.clipboardData.getData("text");if(!r.test(n)||!t.clipboardData.getData("text/html"))return!1;const i=n.replace(/\n/g,"<br>").replace(/ {2}/g,"&nbsp;&nbsp;");return this.editor.chain().focus().insertContent(i).run(),!0}return!1},transformPastedHTML(e){return e.replace(/(<\/\w+>)((<br \/>)+)/g,"$2$3$1")}}}),this.addEditorListeners()},bubbleMenuShouldShow({editor:e,view:t,state:r,oldState:n,from:i,to:s}){return e.isActive("link")},getSelectedLinkText(e){var l,c,m;const{view:t,state:r}=e,{from:n,to:i}=t.state.selection,s=r.doc.textBetween(n,i,""),a=this.editor.state.doc.nodeAt(n);return a&&((m=(c=(l=a.marks)==null?void 0:l.at(0))==null?void 0:c.type)==null?void 0:m.name)==="link"?a.textContent:s},editLink(){const e=this.getSelectedLinkText(this.editor),t={href:this.editor.getAttributes("link").href,text:e};this.$emit("edit-link",t)},removeLink(){var e,t,r,n;(n=(r=(t=(e=this.editor)==null?void 0:e.chain())==null?void 0:t.focus())==null?void 0:r.unsetLink())==null||n.run()},openLink(){var t,r;(r=(t=this.editor)==null?void 0:t.chain())==null||r.focus();const e=this.editor.getAttributes("link").href;window.open(e,"_blank")},setLink(e,t,r,n=C.RICH_TEXT_EDITOR_SUPPORTED_LINK_PROTOCOLS,i){var l,c,m;if(!e){this.removeLink();return}n.find(p=>p.test(e))||(e=`${i}${e}`),this.editor.chain().focus().extendMarkRange("link").run();const a=(m=(c=(l=this.editor)==null?void 0:l.view)==null?void 0:c.state)==null?void 0:m.selection;this.editor.chain().focus().insertContent(t).setTextSelection({from:a.from,to:a.from+t.length}).setLink({href:e,class:r.class}).run()},processValue(e,t=!0){const r=this.getOutput();if(!(t&&ce(e,r))){if(typeof e=="string"&&this.outputFormat==="text"){const n=new RegExp(`(${I.emojiPattern})`,"g");e=e==null?void 0:e.replace(n,'<emoji-component code="$1"></emoji-component>')}this.editor.commands.setContent(e,!1)}},destroyEditor(){this.editor.destroy()},triggerInputChangeEvents(){const e=this.getOutput();this.$emit("input",e),this.$emit("update:modelValue",e);const t=this.editor.getJSON();this.$emit("json-input",t);const r=this.editor.getHTML();this.$emit("html-input",r);const n=this.editor.getText({blockSeparator:`
4
4
  `});this.$emit("text-input",n)},addEditorListeners(){this.editor.on("create",()=>{this.triggerInputChangeEvents()}),this.editor.on("update",()=>{var e,t;if(this.preventTyping&&((t=(e=this.editor.view)==null?void 0:e.input)==null?void 0:t.lastKeyCode)!==8){this.editor.commands.setContent(this.value,!1);return}this.triggerInputChangeEvents()}),this.editor.on("selectionUpdate",({editor:e})=>{this.$emit("selected",this.getSelectedLinkText(e))}),this.editor.on("focus",({event:e})=>{this.$emit("focus",e)}),this.editor.on("blur",({event:e})=>{this.$emit("blur",e)})},getOutput(){switch(this.outputFormat){case"json":return this.editor.getJSON();case"html":return this.editor.getHTML();case"text":default:return this.editor.getText({blockSeparator:`
5
- `})}},getExtension(e,t){var r;return typeof t=="boolean"?e:(r=e.configure)==null?void 0:r.call(e,t)},updateEditorAttributes(e){this.editor.setOptions({editorProps:{attributes:{...this.inputAttrs,class:this.inputClass,...e}}})},focusEditor(){this.editor.commands.focus()}}},ut={class:"d-popover__dialog"};function mt(e,t,r,n,i,s){const a=o.resolveComponent("dt-button"),c=o.resolveComponent("dt-stack"),l=o.resolveComponent("bubble-menu"),m=o.resolveComponent("editor-content");return o.openBlock(),o.createElementBlock("div",null,[i.editor&&r.link&&!r.hideLinkBubbleMenu?(o.openBlock(),o.createBlock(l,{key:0,editor:i.editor,"should-show":s.bubbleMenuShouldShow,"tippy-options":i.tippyOptions,style:{visibility:"visible"}},{default:o.withCtx(()=>[o.createElementVNode("div",ut,[o.createVNode(c,{direction:"row",class:"d-rich-text-editor-bubble-menu__button-stack",gap:"0"},{default:o.withCtx(()=>[o.createVNode(a,{kind:"muted",importance:"clear",onClick:s.editLink},{default:o.withCtx(()=>[o.createTextVNode(" Edit ")]),_:1},8,["onClick"]),o.createVNode(a,{kind:"muted",importance:"clear",onClick:s.openLink},{default:o.withCtx(()=>[o.createTextVNode(" Open link ")]),_:1},8,["onClick"]),o.createVNode(a,{kind:"danger",importance:"clear",onClick:s.removeLink},{default:o.withCtx(()=>[o.createTextVNode(" Remove ")]),_:1},8,["onClick"])]),_:1})])]),_:1},8,["editor","should-show","tippy-options"])):o.createCommentVNode("",!0),o.createVNode(m,o.mergeProps({ref:"editor",editor:i.editor,class:"d-rich-text-editor","data-qa":"dt-rich-text-editor"},s.attrs),null,16,["editor"])])}const ht=h._(dt,[["render",mt]]);exports.default=ht;
5
+ `})}},getExtension(e,t){var r;return typeof t=="boolean"?e:(r=e.configure)==null?void 0:r.call(e,t)},updateEditorAttributes(e){this.editor.setOptions({editorProps:{attributes:{...this.inputAttrs,class:this.inputClass,...e}}})},focusEditor(){this.editor.commands.focus()}}},pt={class:"d-popover__dialog"};function ft(e,t,r,n,i,s){const a=o.resolveComponent("dt-button"),l=o.resolveComponent("dt-stack"),c=o.resolveComponent("bubble-menu"),m=o.resolveComponent("editor-content");return o.openBlock(),o.createElementBlock("div",null,[i.editor&&r.link&&!r.hideLinkBubbleMenu?(o.openBlock(),o.createBlock(c,{key:0,editor:i.editor,"should-show":s.bubbleMenuShouldShow,"tippy-options":i.tippyOptions,style:{visibility:"visible"}},{default:o.withCtx(()=>[o.createElementVNode("div",pt,[o.createVNode(l,{direction:"row",class:"d-rich-text-editor-bubble-menu__button-stack",gap:"0"},{default:o.withCtx(()=>[o.createVNode(a,{kind:"muted",importance:"clear",onClick:s.editLink},{default:o.withCtx(()=>[o.createTextVNode(" Edit ")]),_:1},8,["onClick"]),o.createVNode(a,{kind:"muted",importance:"clear",onClick:s.openLink},{default:o.withCtx(()=>[o.createTextVNode(" Open link ")]),_:1},8,["onClick"]),o.createVNode(a,{kind:"danger",importance:"clear",onClick:s.removeLink},{default:o.withCtx(()=>[o.createTextVNode(" Remove ")]),_:1},8,["onClick"])]),_:1})])]),_:1},8,["editor","should-show","tippy-options"])):o.createCommentVNode("",!0),o.createVNode(m,o.mergeProps({ref:"editor",editor:i.editor,class:"d-rich-text-editor","data-qa":"dt-rich-text-editor"},s.attrs),null,16,["editor"])])}const gt=h._(ht,[["render",ft]]);exports.default=gt;
6
6
  //# sourceMappingURL=rich-text-editor.cjs.map