@dialpad/dialtone 9.131.1 → 9.132.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 (74) hide show
  1. package/dist/css/dialtone-default-theme.css +1783 -5185
  2. package/dist/css/dialtone-default-theme.min.css +1 -1
  3. package/dist/css/dialtone-docs.json +1 -1
  4. package/dist/css/dialtone.css +622 -1999
  5. package/dist/css/dialtone.min.css +1 -1
  6. package/dist/tokens/doc.json +38398 -38398
  7. package/dist/vue2/common/emoji/index.cjs +1 -1
  8. package/dist/vue2/common/emoji/index.cjs.map +1 -1
  9. package/dist/vue2/common/emoji/index.js +25 -17
  10. package/dist/vue2/common/emoji/index.js.map +1 -1
  11. package/dist/vue2/component-documentation.json +1 -1
  12. package/dist/vue2/lib/chip/chip.cjs +1 -1
  13. package/dist/vue2/lib/chip/chip.cjs.map +1 -1
  14. package/dist/vue2/lib/chip/chip.js +17 -7
  15. package/dist/vue2/lib/chip/chip.js.map +1 -1
  16. package/dist/vue2/lib/combobox-multi-select/combobox-multi-select.cjs +1 -1
  17. package/dist/vue2/lib/combobox-multi-select/combobox-multi-select.cjs.map +1 -1
  18. package/dist/vue2/lib/combobox-multi-select/combobox-multi-select.js +43 -27
  19. package/dist/vue2/lib/combobox-multi-select/combobox-multi-select.js.map +1 -1
  20. package/dist/vue2/lib/emoji/emoji.cjs +1 -1
  21. package/dist/vue2/lib/emoji/emoji.cjs.map +1 -1
  22. package/dist/vue2/lib/emoji/emoji.js +16 -16
  23. package/dist/vue2/lib/emoji/emoji.js.map +1 -1
  24. package/dist/vue2/lib/message-input/message-input.cjs +1 -1
  25. package/dist/vue2/lib/message-input/message-input.cjs.map +1 -1
  26. package/dist/vue2/lib/message-input/message-input.js +14 -7
  27. package/dist/vue2/lib/message-input/message-input.js.map +1 -1
  28. package/dist/vue2/lib/rich-text-editor/rich-text-editor.cjs +7 -7
  29. package/dist/vue2/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
  30. package/dist/vue2/lib/rich-text-editor/rich-text-editor.js +387 -402
  31. package/dist/vue2/lib/rich-text-editor/rich-text-editor.js.map +1 -1
  32. package/dist/vue2/types/common/emoji/index.d.ts.map +1 -1
  33. package/dist/vue2/types/components/chip/chip.vue.d.ts +2 -1
  34. package/dist/vue2/types/components/chip/chip.vue.d.ts.map +1 -1
  35. package/dist/vue2/types/components/rich_text_editor/extensions/emoji/emoji.d.ts.map +1 -1
  36. package/dist/vue2/types/components/rich_text_editor/extensions/emoji/suggestion.d.ts +1 -1
  37. package/dist/vue2/types/components/rich_text_editor/extensions/emoji/suggestion.d.ts.map +1 -1
  38. package/dist/vue2/types/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.d.ts +1 -1
  39. package/dist/vue2/types/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.d.ts.map +1 -1
  40. package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts +1 -1
  41. package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  42. package/dist/vue3/common/emoji/index.cjs +1 -1
  43. package/dist/vue3/common/emoji/index.cjs.map +1 -1
  44. package/dist/vue3/common/emoji/index.js +39 -33
  45. package/dist/vue3/common/emoji/index.js.map +1 -1
  46. package/dist/vue3/component-documentation.json +1 -1
  47. package/dist/vue3/lib/chip/chip.cjs +1 -1
  48. package/dist/vue3/lib/chip/chip.cjs.map +1 -1
  49. package/dist/vue3/lib/chip/chip.js +40 -30
  50. package/dist/vue3/lib/chip/chip.js.map +1 -1
  51. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.cjs +1 -1
  52. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.cjs.map +1 -1
  53. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.js +25 -11
  54. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.js.map +1 -1
  55. package/dist/vue3/lib/emoji/emoji.cjs +1 -1
  56. package/dist/vue3/lib/emoji/emoji.cjs.map +1 -1
  57. package/dist/vue3/lib/emoji/emoji.js +17 -17
  58. package/dist/vue3/lib/emoji/emoji.js.map +1 -1
  59. package/dist/vue3/lib/message-input/message-input.cjs +1 -1
  60. package/dist/vue3/lib/message-input/message-input.cjs.map +1 -1
  61. package/dist/vue3/lib/message-input/message-input.js +59 -51
  62. package/dist/vue3/lib/message-input/message-input.js.map +1 -1
  63. package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs +3 -3
  64. package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
  65. package/dist/vue3/lib/rich-text-editor/rich-text-editor.js +125 -119
  66. package/dist/vue3/lib/rich-text-editor/rich-text-editor.js.map +1 -1
  67. package/dist/vue3/types/common/emoji/index.d.ts.map +1 -1
  68. package/dist/vue3/types/components/chip/chip.vue.d.ts +3 -1
  69. package/dist/vue3/types/components/chip/chip.vue.d.ts.map +1 -1
  70. package/dist/vue3/types/components/rich_text_editor/extensions/emoji/suggestion.d.ts +1 -1
  71. package/dist/vue3/types/components/rich_text_editor/extensions/emoji/suggestion.d.ts.map +1 -1
  72. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts +2 -1
  73. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  74. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"message-input.js","sources":["../../../recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue","../../../recipes/conversation_view/message_input/extensions/meeting_pill/meeting_pill.js","../../../recipes/conversation_view/message_input/message_input.vue"],"sourcesContent":["<template>\n <node-view-wrapper class=\"d-recipe-message-input-meeting-pill\">\n <dt-item-layout\n class=\"d-recipe-message-input-meeting-pill__layout\"\n unstyled\n >\n <template #left>\n <div class=\"d-recipe-message-input-meeting-pill__icon\">\n <dt-icon-video\n size=\"400\"\n />\n </div>\n </template>\n {{ node.attrs.text }}\n <template #right>\n <div class=\"d-recipe-message-input-meeting-pill__close\">\n <dt-button\n circle\n importance=\"clear\"\n size=\"xs\"\n :aria-label=\"closeButtonTitle\"\n :title=\"closeButtonTitle\"\n @click=\"close\"\n >\n <template #icon>\n <dt-icon-close\n size=\"300\"\n />\n </template>\n </dt-button>\n </div>\n </template>\n </dt-item-layout>\n </node-view-wrapper>\n</template>\n\n<script>\nimport { NodeViewWrapper, nodeViewProps } from '@tiptap/vue-3';\nimport { DtItemLayout } from '@/components/item_layout';\nimport { DtIconClose, DtIconVideo } from '@dialpad/dialtone-icons/vue3';\nimport { DtButton } from '@/components/button';\nimport { DialtoneLocalization } from '@/localization';\n\nexport default {\n name: 'MeetingPill',\n\n components: {\n NodeViewWrapper,\n DtItemLayout,\n DtIconClose,\n DtButton,\n DtIconVideo,\n },\n\n props: nodeViewProps,\n\n emits: ['meeting-pill-close'],\n\n data () {\n return {\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n closeButtonTitle () {\n return this.i18n.$t('DIALTONE_CLOSE_BUTTON');\n },\n },\n\n methods: {\n close (e) {\n // Get the callback from extension storage\n const onCloseCallback = this.editor?.storage?.meetingPill?.onClose;\n\n if (onCloseCallback && typeof onCloseCallback === 'function') {\n onCloseCallback(e);\n }\n },\n },\n};\n</script>\n","import { mergeAttributes, Node } from '@tiptap/core';\nimport { VueNodeViewRenderer } from '@tiptap/vue-3';\nimport MeetingPill from './MeetingPill.vue';\n\nexport default Node.create({\n name: 'meetingPill',\n\n atom: true,\n group: 'inline',\n inline: true,\n\n addOptions () {\n return {\n onClose: () => {},\n };\n },\n\n addStorage () {\n return {\n onClose: this.options.onClose,\n };\n },\n\n addNodeView () {\n return VueNodeViewRenderer(MeetingPill);\n },\n\n addAttributes () {\n return {\n text: {\n default: 'Please pass in \"text\" attribute',\n },\n };\n },\n\n parseHTML () {\n return [\n {\n tag: 'meeting-pill',\n },\n ];\n },\n\n renderText () {\n return '/dpm';\n },\n\n renderHTML ({ HTMLAttributes }) {\n return ['meeting-pill', mergeAttributes(HTMLAttributes)];\n },\n});\n","<!-- eslint-disable max-lines -->\n<template>\n <div\n data-qa=\"dt-recipe-message-input\"\n role=\"presentation\"\n class=\"d-recipe-message-input\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n @dragover.prevent\n @drop.prevent=\"onDrop\"\n @paste=\"onPaste\"\n @mousedown=\"onMousedown\"\n >\n <!-- @slot Renders above the input, but still within the borders. -->\n <slot name=\"top\" />\n\n <!-- set key to selectedText to force update. otherwise this component may not reflect the active selection -->\n <dt-recipe-message-input-topbar\n v-if=\"richText\"\n :key=\"selectedText\"\n :bold-button-options=\"boldButtonOptions\"\n :italic-button-options=\"italicButtonOptions\"\n :strike-button-options=\"strikeButtonOptions\"\n :bullet-list-button-options=\"bulletListButtonOptions\"\n :ordered-list-button-options=\"orderedListButtonOptions\"\n :block-quote-button-options=\"blockQuoteButtonOptions\"\n :code-button-options=\"codeButtonOptions\"\n :code-block-button-options=\"codeBlockButtonOptions\"\n :is-selection-active=\"isSelectionActive\"\n @click=\"handleTopbarClick\"\n >\n <template #link>\n <dt-recipe-message-input-link\n ref=\"link\"\n :open=\"linkDialogOpen\"\n :link-button-options=\"linkButtonOptions\"\n :is-selection-active=\"isSelectionActive\"\n @opened=\"linkDialogOpened\"\n @set-link=\"setLink\"\n @remove-link=\"removeLink\"\n />\n </template>\n </dt-recipe-message-input-topbar>\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n v-dt-scrollbar\n class=\"d-recipe-message-input__editor-wrapper\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :allow-blockquote=\"richText\"\n :allow-bold=\"richText\"\n :allow-bullet-list=\"richText\"\n :allow-code=\"richText\"\n :allow-codeblock=\"richText\"\n :allow-italic=\"richText\"\n :allow-strike=\"richText\"\n :allow-underline=\"richText\"\n :paste-rich-text=\"richText\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"inputClass\"\n :output-format=\"outputFormat\"\n :auto-focus=\"autoFocus\"\n :link=\"richText\"\n :placeholder=\"placeholder\"\n :prevent-typing=\"preventTyping\"\n :mention-suggestion=\"mentionSuggestion\"\n :channel-suggestion=\"channelSuggestion\"\n :slash-command-suggestion=\"slashCommandSuggestion\"\n :additional-extensions=\"additionalExtensions\"\n :hide-link-bubble-menu=\"hideLinkBubbleMenu\"\n v-bind=\"removeClassStyleAttrs($attrs)\"\n @input=\"onInput\"\n @text-input=\"onTextInput\"\n @enter=\"onSend\"\n @selected=\"selectedText = $event\"\n @selected-command=\"$emit('selected-command', $event)\"\n @edit-link=\"initLinkDialog\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n />\n </div>\n <!-- @slot Slot for attachment carousel -->\n <slot name=\"middle\" />\n <!-- Section for the bottom UI -->\n <section class=\"d-recipe-message-input__bottom-section\">\n <!-- Left content -->\n <div class=\"d-recipe-message-input__bottom-section-left\">\n <dt-stack\n gap=\"200\"\n direction=\"row\"\n >\n <dt-button\n v-if=\"showImagePicker\"\n v-dt-tooltip:top-start=\"imagePickerButtonLabel\"\n data-qa=\"dt-recipe-message-input-image-btn\"\n size=\"sm\"\n class=\"d-recipe-message-input__button\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"imagePickerButtonLabel\"\n @click=\"onSelectImage\"\n @mouseenter=\"imagePickerFocus = true\"\n @mouseleave=\"imagePickerFocus = false\"\n @focus=\"imagePickerFocus = true\"\n @blur=\"imagePickerFocus = false\"\n >\n <template #icon>\n <dt-icon-image size=\"300\" />\n </template>\n </dt-button>\n <dt-input\n ref=\"messageInputImageUpload\"\n data-qa=\"dt-recipe-message-input-image-input\"\n accept=\"image/*, video/*\"\n type=\"file\"\n class=\"d-recipe-message-input__image-input\"\n multiple\n hidden\n @input=\"onImageUpload\"\n />\n <dt-popover\n v-if=\"showEmojiPicker\"\n open.sync=\"emojiPickerOpened\"\n data-qa=\"dt-recipe-message-input-emoji-picker-popover\"\n initial-focus-element=\"#searchInput\"\n padding=\"none\"\n >\n <template #anchor=\"{ attrs }\">\n <dt-button\n v-dt-tooltip=\"emojiPickerButtonLabel\"\n v-bind=\"attrs\"\n data-qa=\"dt-recipe-message-input-emoji-picker-btn\"\n size=\"sm\"\n class=\"d-recipe-message-input__button\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"emojiPickerButtonLabel\"\n @click=\"toggleEmojiPicker\"\n @mouseenter=\"emojiPickerFocus = true\"\n @mouseleave=\"emojiPickerFocus = false\"\n @focus=\"emojiPickerFocus = true\"\n @blur=\"emojiPickerFocus = false\"\n >\n <template #icon>\n <dt-icon-very-satisfied\n v-if=\"emojiPickerHovered\"\n size=\"300\"\n />\n <dt-icon-satisfied\n v-else\n size=\"300\"\n />\n </template>\n </dt-button>\n </template>\n <template #content=\"{ close }\">\n <dt-emoji-picker\n v-bind=\"emojiPickerProps\"\n @add-emoji=\"$emit('add-emoji')\"\n @skin-tone=\"onSkinTone\"\n @selected-emoji=\"(emoji) => onSelectEmoji(emoji, close)\"\n />\n </template>\n </dt-popover>\n <!-- @slot Slot for emojiGiphy picker -->\n <slot name=\"emojiGiphyPicker\" />\n <!-- @slot Slot to add extra action icons next to default ones -->\n <slot name=\"customActionIcons\" />\n </dt-stack>\n </div>\n <!-- Right content -->\n <div class=\"d-recipe-message-input__bottom-section-right\">\n <dt-stack\n direction=\"row\"\n gap=\"300\"\n >\n <!-- @slot Slot for sms count -->\n <div class=\"d-recipe-message-input__sms-count\">\n <slot name=\"smsCount\" />\n </div>\n\n <!-- Optionally displayed remaining character counter -->\n <dt-tooltip\n v-if=\"Boolean(showCharacterLimit)\"\n class=\"d-recipe-message-input__remaining-char-tooltip\"\n placement=\"top-end\"\n :enabled=\"characterLimitTooltipEnabled\"\n :message=\"showCharacterLimit.message\"\n :offset=\"[10, 8]\"\n >\n <template #anchor>\n <p\n v-show=\"displayCharacterLimitWarning\"\n class=\"d-recipe-message-input__remaining-char\"\n data-qa=\"dt-recipe-message-input-character-limit\"\n >\n {{ showCharacterLimit.count - inputLength }}\n </p>\n </template>\n </dt-tooltip>\n\n <!-- Cancel button for edit mode -->\n <dt-button\n v-if=\"showCancel\"\n v-dt-tooltip=\"cancelButtonLabel\"\n data-qa=\"dt-recipe-message-input-cancel-button\"\n class=\"d-recipe-message-input__button d-recipe-message-input__cancel-button\"\n size=\"sm\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"cancelButtonLabel\"\n @click=\"onCancel\"\n >\n <p>{{ cancelButtonLabel }}</p>\n </dt-button>\n\n <!-- @slot Slot for sendButton picker -->\n <slot name=\"sendButton\">\n <!-- Send button -->\n <!-- Right positioned UI - send button -->\n <dt-button\n v-if=\"showSend\"\n v-dt-tooltip:top-end=\"sendButtonLabel\"\n data-qa=\"dt-recipe-message-input-send-btn\"\n size=\"sm\"\n kind=\"default\"\n importance=\"primary\"\n :class=\"[\n 'd-recipe-message-input__button d-recipe-message-input__send-button',\n {\n 'd-recipe-message-input__send-button--disabled': isSendDisabled,\n 'd-btn--icon-only': showSendIcon,\n },\n ]\"\n :aria-label=\"sendButtonLabel\"\n :aria-disabled=\"isSendDisabled\"\n @click=\"onSend\"\n >\n <template\n v-if=\"showSendIcon\"\n #icon\n >\n <!-- @slot Slot for send button icon -->\n <slot\n name=\"sendIcon\"\n :icon-size=\"sendIconSize\"\n >\n <dt-icon-send :size=\"sendIconSize\" />\n </slot>\n </template>\n <template v-if=\"showSend.text\">\n <p>{{ showSend.text }}</p>\n </template>\n </dt-button>\n </slot>\n </dt-stack>\n </div>\n </section>\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 lastActiveNodes from './last_active_nodes';\nimport { removeClassStyleAttrs, returnFirstEl, addClassStyleAttrs } from '@/common/utils';\nimport MeetingPill from './extensions/meeting_pill/meeting_pill';\nimport { DtButton } from '@/components/button';\nimport { DtEmojiPicker } from '@/components/emoji_picker';\nimport { DtPopover } from '@/components/popover';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtStack } from '@/components/stack';\nimport {\n DtIconImage, DtIconVerySatisfied, DtIconSatisfied, DtIconSend,\n} from '@dialpad/dialtone-icons/vue3';\nimport DtRecipeMessageInputTopbar from './message_input_topbar.vue';\nimport DtRecipeMessageInputLink from './message_input_link.vue';\nimport { DialtoneLocalization } from '@/localization';\n\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n} from '../editor/editor_constants.js';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeMessageInput',\n\n components: {\n DtButton,\n DtEmojiPicker,\n DtInput,\n DtPopover,\n DtRecipeMessageInputTopbar,\n DtRecipeMessageInputLink,\n DtRichTextEditor,\n DtTooltip,\n DtStack,\n DtIconImage,\n DtIconVerySatisfied,\n DtIconSatisfied,\n DtIconSend,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Displays all the buttons for rich text formatting above the message input, and enables it within the editor.\n * Rich text formatting for the purposes of this component is defined as:\n *\n * bold, italic, strikethrough, lists, blockquotes, inline code tags, and code blocks.\n *\n * If you are sending a message to a phone rather than a Dialpad to Dialpad message, you should have this as false.\n */\n richText: {\n type: Boolean,\n default: true,\n },\n\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 * Prevents the user from typing any further. Deleting text will still work.\n */\n preventTyping: {\n type: Boolean,\n default: false,\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 * The output format that the editor uses when emitting the \"@input\" event.\n * One of `text`, `json`, `html`. See https://tiptap.dev/guide/output for\n * examples.\n * @values text, json, html\n */\n outputFormat: {\n type: String,\n default: 'json',\n validator (outputFormat) {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(outputFormat);\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Disable Send Button\n */\n disableSend: {\n type: Boolean,\n default: false,\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 // Emoji picker props\n showEmojiPicker: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Props to pass into the emoji picker.\n */\n emojiPickerProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Enable character Limit warning\n */\n showCharacterLimit: {\n type: [Boolean, Object],\n default: () => ({ count: 1500, warning: 500, message: '' }),\n },\n\n showImagePicker: {\n type: [Boolean, Object],\n default: () => ({}),\n },\n\n /**\n * Send button defaults.\n * TODO (Dialtone 10):\n * - Change to `showSendButton`, boolean only.\n */\n showSend: {\n type: [Boolean, Object],\n default: () => ({}),\n },\n\n /**\n * TODO (Dialtone 10):\n * - Add a prop `iconOnly` default: true to control if localized send button text should be shown\n */\n\n /**\n * Cancel button defaults.\n * TODO (Dialtone 10): Change to `showCancelButton`, boolean only.\n */\n showCancel: {\n type: [Boolean, Object],\n default: () => ({}),\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the contacts for suggestion.\n * items({ query }) => { return [ContactObject]; }\n * ContactObject format:\n * { name: string, avatarSrc: string, id: string }\n *\n * When null, it does not add the plugin.\n */\n mentionSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the channels for suggestion.\n * items({ query }) => { return [ChannelObject]; }\n * ChannelObject format:\n * { name: string, id: string, locked: boolean }\n *\n * When null, it does not add the plugin. Setting locked to true will display a lock rather than hash.\n */\n channelSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the slash commands for suggestion.\n * items({ query }) => { return [SlashCommandObject]; }\n * SlashCommandObject format:\n * { command: string, description: string, parametersExample?: string }\n * The \"parametersExample\" parameter is optional, and describes an example\n * of the parameters that command can take.\n *\n * When null, it does not add the plugin.\n */\n slashCommandSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * descriptive text fields for the bold button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n boldButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + B',\n }),\n },\n\n /**\n * descriptive text fields for the italic button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n italicButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + I',\n }),\n },\n\n /**\n * descriptive text fields for the strikethrough button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n strikeButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + Shift + S',\n }),\n },\n\n /**\n * descriptive text fields for the link button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n linkButtonOptions: {\n type: Object,\n default: () => ({\n // TODO: implement mod k\n keyboardShortcutText: 'Mod + K',\n linkPlaceholder: 'e.g. https://www.dialpad.com',\n }),\n },\n\n /**\n * descriptive text fields for the bullet list button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n bulletListButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + Shift + 8',\n }),\n },\n\n /**\n * descriptive text fields for the ordered list button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n orderedListButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + Shift + 7',\n }),\n },\n\n /**\n * descriptive text fields for the italic button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n blockQuoteButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + Shift + B',\n }),\n },\n\n /**\n * descriptive text fields for the code button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n codeButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + E',\n }),\n },\n\n /**\n * descriptive text fields for the code block button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n codeBlockButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + Alt + C',\n }),\n },\n },\n\n emits: [\n /**\n * Fires when send button is clicked\n *\n * @event submit\n * @type {String}\n */\n 'submit',\n\n /**\n * Fires when media is selected from image button\n *\n * @event select-media\n * @type {Array}\n */\n 'select-media',\n\n /**\n * Fires when media is dropped into the message input\n *\n * @event add-media\n * @type {Array}\n */\n 'add-media',\n\n /**\n * Fires when media is pasted into the message input\n *\n * @event paste-media\n * @type {Array}\n */\n 'paste-media',\n\n /**\n * Fires when cancel button is pressed (only on edit mode)\n *\n * @event cancel\n * @type {Boolean}\n */\n 'cancel',\n\n /**\n * Fires when skin tone is selected from the emoji picker\n *\n * @event skin-tone\n * @type {String}\n */\n 'skin-tone',\n\n /**\n * Fires when emoji is selected from the emoji picker\n *\n * @event selected-emoji\n * @type {String}\n */\n 'selected-emoji',\n\n /**\n * Fires when a slash command is selected\n *\n * @event selected-command\n * @type {String}\n */\n 'selected-command',\n\n /**\n * Fires when meeting pill is closed\n *\n * @event meeting-pill-close\n * @type {String}\n */\n 'meeting-pill-close',\n\n /**\n * Event to sync the value with the parent\n * @event update:modelValue\n * @type {String|JSON}\n */\n 'update:modelValue',\n\n /**\n * Emitted when input changes, returns text content only\n * @event text-input\n * @type {String}\n */\n 'text-input',\n\n /**\n * Emitted when the 'Add emoji' button is clicked\n * @event add-emoji\n * @type {Boolean}\n */\n 'add-emoji',\n ],\n\n data () {\n return {\n // If an ordered list is nested within an unordered list, we only want to show the currently selected list as\n // active. This function performs the logic to determine the farthest active node from the root.\n lastActiveNodes,\n additionalExtensions: [\n MeetingPill.configure({\n onClose: (event) => {\n this.$emit('meeting-pill-close', event);\n },\n }),\n ],\n\n internalInputValue: this.modelValue, // internal input content\n imagePickerFocus: false,\n emojiPickerFocus: false,\n emojiPickerOpened: false,\n isFocused: false,\n linkOptions: {\n class: 'd-link d-c-text d-d-inline-block',\n },\n\n linkDialogOpen: false,\n selectedText: '',\n text: '',\n hideLinkBubbleMenu: false,\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n showSendIcon () {\n return !this.showSend.text;\n },\n\n inputLength () {\n return this.text.length;\n },\n\n displayCharacterLimitWarning () {\n return (\n Boolean(this.showCharacterLimit) &&\n this.showCharacterLimit.count - this.inputLength <=\n this.showCharacterLimit.warning\n );\n },\n\n characterLimitTooltipEnabled () {\n return (\n this.showCharacterLimit.message &&\n this.showCharacterLimit.count - this.inputLength < 0\n );\n },\n\n isSendDisabled () {\n return (\n this.disableSend ||\n (this.showCharacterLimit &&\n this.inputLength > this.showCharacterLimit.count)\n );\n },\n\n emojiPickerHovered () {\n return this.emojiPickerFocus || this.emojiPickerOpened;\n },\n\n sendIconSize () {\n return '300';\n },\n\n sendButtonLabel () {\n return this.i18n.$t('DIALTONE_MESSAGE_INPUT_SEND_BUTTON_ARIA_LABEL');\n },\n\n imagePickerButtonLabel () {\n return this.i18n.$t('DIALTONE_MESSAGE_INPUT_IMAGE_PICKER_BUTTON_ARIA_LABEL');\n },\n\n emojiPickerButtonLabel () {\n return this.i18n.$t('DIALTONE_MESSAGE_INPUT_EMOJI_PICKER_BUTTON_ARIA_LABEL');\n },\n\n cancelButtonLabel () {\n return this.i18n.$t('DIALTONE_MESSAGE_INPUT_CANCEL_BUTTON_ARIA_LABEL');\n },\n },\n\n watch: {\n modelValue (newValue) {\n this.internalInputValue = newValue;\n },\n\n emojiPickerOpened (newValue) {\n if (!newValue) {\n this.$refs.richTextEditor?.focusEditor();\n }\n },\n },\n\n created () {\n if (this.modelValue && this.outputFormat === 'text') {\n this.internalInputValue = this.modelValue.replace(/\\n/g, '<br>');\n } else {\n this.internalInputValue = this.modelValue;\n }\n },\n\n methods: {\n removeClassStyleAttrs,\n addClassStyleAttrs,\n\n linkDialogOpened (value) {\n this.linkDialogOpen = value;\n if (value === true) {\n this.initLinkDialog();\n } else {\n this.hideLinkBubbleMenu = false;\n this.$refs.richTextEditor?.focusEditor();\n }\n },\n\n handleTopbarClick (type) {\n const editor = this.$refs.richTextEditor?.editor;\n // Key is the name returned in the event, value is the name of the TipTap command function to run.\n const typeToCommandMap = {\n bold: () => editor?.chain().focus().toggleBold().run(),\n italic: () => editor?.chain().focus().toggleItalic().run(),\n strike: () => editor?.chain().focus().toggleStrike().run(),\n bulletList: () => editor?.chain().focus().toggleBulletList().run(),\n orderedList: () => editor?.chain().focus().toggleOrderedList().run(),\n blockquote: () => editor?.chain().focus().toggleBlockquote().run(),\n code: () => editor?.chain().focus().toggleCode().run(),\n codeBlock: () => editor?.chain().focus().toggleCodeBlock().run(),\n };\n\n if (editor && typeToCommandMap[type]) {\n typeToCommandMap[type]();\n }\n },\n\n // Checks if the node currently selected is active ex/ the bold button is active if the selected text is bold\n // eslint-disable-next-line complexity\n isSelectionActive (type) {\n if (['bulletList', 'orderedList'].includes(type)) {\n return this.lastActiveNodes(this.$refs.richTextEditor?.editor?.state, [{ type: 'bulletList' }, { type: 'orderedList' }]).includes(type) && this.isFocused;\n }\n return this.$refs.richTextEditor?.editor?.isActive(type) && this.isFocused;\n },\n\n initLinkDialog () {\n this.$refs.link.setInitialValues(this.selectedText, this.$refs.richTextEditor?.editor?.getAttributes('link')?.href);\n this.hideLinkBubbleMenu = true;\n this.linkDialogOpen = true;\n },\n\n removeLink () {\n this.$refs.richTextEditor?.removeLink();\n this.linkDialogOpen = false;\n },\n\n setLink (linkText, linkInput) {\n this.$refs.richTextEditor.setLink(\n linkInput, linkText, this.linkOptions, EDITOR_SUPPORTED_LINK_PROTOCOLS, EDITOR_DEFAULT_LINK_PREFIX,\n );\n this.linkDialogOpen = false;\n },\n\n // Mousedown instead of click because it fires before the blur event.\n onMousedown (e) {\n const isWithinInput = returnFirstEl(this.$refs.richTextEditor.$el)\n .querySelector('.tiptap')\n .contains(e.target);\n\n // If the click is not within the tiptap rich text editor input itself, but still within the wrapping div,\n // focus the editor.\n if (!isWithinInput) {\n // Prevent default prevents blurring the rich text editor input when it is already focused.\n e.preventDefault();\n this.$refs.richTextEditor.focusEditor();\n }\n },\n\n onDrop (e) {\n const dt = e.dataTransfer;\n const files = Array.from(dt.files);\n this.$emit('add-media', files);\n },\n\n onPaste (e) {\n if (e.clipboardData.files.length) {\n e.stopPropagation();\n e.preventDefault();\n const files = [...e.clipboardData.files];\n this.$emit('paste-media', files);\n }\n },\n\n onSkinTone (skinTone) {\n this.$emit('skin-tone', skinTone);\n },\n\n onSelectEmoji (emoji, close) {\n if (!emoji) {\n return;\n }\n\n if (!emoji.shift_key) {\n close();\n }\n\n // Insert emoji into the editor\n this.$refs.richTextEditor.editor.commands.insertContent({\n type: 'emoji',\n attrs: {\n code: emoji.shortname,\n },\n });\n this.$emit('selected-emoji', emoji);\n },\n\n onSelectImage () {\n this.$refs.messageInputImageUpload.$refs.input.click();\n },\n\n onImageUpload () {\n this.$emit(\n 'select-media',\n this.$refs.messageInputImageUpload.$refs.input.files,\n );\n },\n\n toggleEmojiPicker () {\n this.emojiPickerOpened = !this.emojiPickerOpened;\n },\n\n onSend () {\n if (this.isSendDisabled) {\n return;\n }\n this.$emit('submit', this.internalInputValue);\n },\n\n onCancel () {\n this.$emit('cancel');\n },\n\n onInput (event) {\n this.$emit('update:modelValue', event);\n },\n\n onTextInput (event) {\n this.text = event;\n this.$emit('text-input', event);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","NodeViewWrapper","DtItemLayout","DtIconClose","DtButton","DtIconVideo","nodeViewProps","DialtoneLocalization","e","onCloseCallback","_c","_b","_a","_hoisted_1","_hoisted_2","_createBlock","_component_node_view_wrapper","_withCtx","_createVNode","_component_dt_item_layout","_createElementVNode","_component_dt_icon_video","_component_dt_button","$options","_component_dt_icon_close","_createTextVNode","_ctx","MeetingPill","Node","VueNodeViewRenderer","HTMLAttributes","mergeAttributes","DtEmojiPicker","DtInput","DtPopover","DtRecipeMessageInputTopbar","DtRecipeMessageInputLink","DtRichTextEditor","DtTooltip","DtStack","DtIconImage","DtIconVerySatisfied","DtIconSatisfied","DtIconSend","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","outputFormat","RICH_TEXT_EDITOR_OUTPUT_FORMATS","lastActiveNodes","event","newValue","removeClassStyleAttrs","addClassStyleAttrs","value","type","editor","typeToCommandMap","_d","linkText","linkInput","EDITOR_SUPPORTED_LINK_PROTOCOLS","EDITOR_DEFAULT_LINK_PREFIX","returnFirstEl","dt","files","skinTone","emoji","close","_hoisted_3","_hoisted_4","_openBlock","_createElementBlock","_mergeProps","_cache","_withModifiers","args","_renderSlot","$props","_component_dt_recipe_message_input_topbar","$data","_component_dt_recipe_message_input_link","_createCommentVNode","_normalizeStyle","_component_dt_rich_text_editor","$event","_component_dt_stack","_component_dt_icon_image","_directive_dt_tooltip","_component_dt_input","_component_dt_popover","attrs","_component_dt_icon_very_satisfied","_component_dt_icon_satisfied","_component_dt_emoji_picker","_component_dt_tooltip","_normalizeClass","_createSlots","_hoisted_5","_toDisplayString","_component_dt_icon_send"],"mappings":"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"}
1
+ {"version":3,"file":"message-input.js","sources":["../../../recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue","../../../recipes/conversation_view/message_input/extensions/meeting_pill/meeting_pill.js","../../../recipes/conversation_view/message_input/message_input.vue"],"sourcesContent":["<template>\n <node-view-wrapper class=\"d-recipe-message-input-meeting-pill\">\n <dt-item-layout\n class=\"d-recipe-message-input-meeting-pill__layout\"\n unstyled\n >\n <template #left>\n <div class=\"d-recipe-message-input-meeting-pill__icon\">\n <dt-icon-video\n size=\"400\"\n />\n </div>\n </template>\n {{ node.attrs.text }}\n <template #right>\n <div class=\"d-recipe-message-input-meeting-pill__close\">\n <dt-button\n circle\n importance=\"clear\"\n size=\"xs\"\n :aria-label=\"closeButtonTitle\"\n :title=\"closeButtonTitle\"\n @click=\"close\"\n >\n <template #icon>\n <dt-icon-close\n size=\"300\"\n />\n </template>\n </dt-button>\n </div>\n </template>\n </dt-item-layout>\n </node-view-wrapper>\n</template>\n\n<script>\nimport { NodeViewWrapper, nodeViewProps } from '@tiptap/vue-3';\nimport { DtItemLayout } from '@/components/item_layout';\nimport { DtIconClose, DtIconVideo } from '@dialpad/dialtone-icons/vue3';\nimport { DtButton } from '@/components/button';\nimport { DialtoneLocalization } from '@/localization';\n\nexport default {\n name: 'MeetingPill',\n\n components: {\n NodeViewWrapper,\n DtItemLayout,\n DtIconClose,\n DtButton,\n DtIconVideo,\n },\n\n props: nodeViewProps,\n\n emits: ['meeting-pill-close'],\n\n data () {\n return {\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n closeButtonTitle () {\n return this.i18n.$t('DIALTONE_CLOSE_BUTTON');\n },\n },\n\n methods: {\n close (e) {\n // Get the callback from extension storage\n const onCloseCallback = this.editor?.storage?.meetingPill?.onClose;\n\n if (onCloseCallback && typeof onCloseCallback === 'function') {\n onCloseCallback(e);\n }\n },\n },\n};\n</script>\n","import { mergeAttributes, Node } from '@tiptap/core';\nimport { VueNodeViewRenderer } from '@tiptap/vue-3';\nimport MeetingPill from './MeetingPill.vue';\n\nexport default Node.create({\n name: 'meetingPill',\n\n atom: true,\n group: 'inline',\n inline: true,\n\n addOptions () {\n return {\n onClose: () => {},\n };\n },\n\n addStorage () {\n return {\n onClose: this.options.onClose,\n };\n },\n\n addNodeView () {\n return VueNodeViewRenderer(MeetingPill);\n },\n\n addAttributes () {\n return {\n text: {\n default: 'Please pass in \"text\" attribute',\n },\n };\n },\n\n parseHTML () {\n return [\n {\n tag: 'meeting-pill',\n },\n ];\n },\n\n renderText () {\n return '/dpm';\n },\n\n renderHTML ({ HTMLAttributes }) {\n return ['meeting-pill', mergeAttributes(HTMLAttributes)];\n },\n});\n","<!-- eslint-disable max-lines -->\n<template>\n <div\n data-qa=\"dt-recipe-message-input\"\n role=\"presentation\"\n class=\"d-recipe-message-input\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n @dragover.prevent\n @drop.prevent=\"onDrop\"\n @paste=\"onPaste\"\n @mousedown=\"onMousedown\"\n >\n <!-- @slot Renders above the input, but still within the borders. -->\n <slot name=\"top\" />\n\n <!-- set key to selectedText to force update. otherwise this component may not reflect the active selection -->\n <dt-recipe-message-input-topbar\n v-if=\"richText\"\n :key=\"selectedText\"\n :bold-button-options=\"boldButtonOptions\"\n :italic-button-options=\"italicButtonOptions\"\n :strike-button-options=\"strikeButtonOptions\"\n :bullet-list-button-options=\"bulletListButtonOptions\"\n :ordered-list-button-options=\"orderedListButtonOptions\"\n :block-quote-button-options=\"blockQuoteButtonOptions\"\n :code-button-options=\"codeButtonOptions\"\n :code-block-button-options=\"codeBlockButtonOptions\"\n :is-selection-active=\"isSelectionActive\"\n @click=\"handleTopbarClick\"\n >\n <template #link>\n <dt-recipe-message-input-link\n ref=\"link\"\n :open=\"linkDialogOpen\"\n :link-button-options=\"linkButtonOptions\"\n :is-selection-active=\"isSelectionActive\"\n @opened=\"linkDialogOpened\"\n @set-link=\"setLink\"\n @remove-link=\"removeLink\"\n />\n </template>\n </dt-recipe-message-input-topbar>\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n v-dt-scrollbar\n class=\"d-recipe-message-input__editor-wrapper\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :allow-blockquote=\"richText\"\n :allow-bold=\"richText\"\n :allow-bullet-list=\"richText\"\n :allow-code=\"richText\"\n :allow-codeblock=\"richText\"\n :allow-italic=\"richText\"\n :allow-strike=\"richText\"\n :allow-underline=\"richText\"\n :paste-rich-text=\"richText\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"inputClass\"\n :output-format=\"outputFormat\"\n :auto-focus=\"autoFocus\"\n :link=\"richText\"\n :placeholder=\"placeholder\"\n :prevent-typing=\"preventTyping\"\n :mention-suggestion=\"mentionSuggestion\"\n :channel-suggestion=\"channelSuggestion\"\n :slash-command-suggestion=\"slashCommandSuggestion\"\n :additional-extensions=\"additionalExtensions\"\n :hide-link-bubble-menu=\"hideLinkBubbleMenu\"\n v-bind=\"removeClassStyleAttrs($attrs)\"\n @input=\"onInput\"\n @text-input=\"onTextInput\"\n @enter=\"onSend\"\n @selected=\"selectedText = $event\"\n @selected-command=\"$emit('selected-command', $event)\"\n @edit-link=\"initLinkDialog\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n />\n </div>\n <!-- @slot Slot for attachment carousel -->\n <slot name=\"middle\" />\n <!-- Section for the bottom UI -->\n <section class=\"d-recipe-message-input__bottom-section\">\n <!-- Left content -->\n <div class=\"d-recipe-message-input__bottom-section-left\">\n <dt-stack\n gap=\"200\"\n direction=\"row\"\n >\n <dt-button\n v-if=\"showImagePicker\"\n v-dt-tooltip:top-start=\"imagePickerButtonLabel\"\n data-qa=\"dt-recipe-message-input-image-btn\"\n size=\"sm\"\n class=\"d-recipe-message-input__button\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"imagePickerButtonLabel\"\n @click=\"onSelectImage\"\n @mouseenter=\"imagePickerFocus = true\"\n @mouseleave=\"imagePickerFocus = false\"\n @focus=\"imagePickerFocus = true\"\n @blur=\"imagePickerFocus = false\"\n >\n <template #icon>\n <dt-icon-image size=\"300\" />\n </template>\n </dt-button>\n <dt-input\n ref=\"messageInputImageUpload\"\n data-qa=\"dt-recipe-message-input-image-input\"\n accept=\"image/*, video/*\"\n type=\"file\"\n class=\"d-recipe-message-input__image-input\"\n multiple\n hidden\n @input=\"onImageUpload\"\n />\n <dt-popover\n v-if=\"showEmojiPicker\"\n open.sync=\"emojiPickerOpened\"\n data-qa=\"dt-recipe-message-input-emoji-picker-popover\"\n initial-focus-element=\"#searchInput\"\n padding=\"none\"\n >\n <template #anchor=\"{ attrs }\">\n <dt-button\n v-dt-tooltip=\"emojiPickerButtonLabel\"\n v-bind=\"attrs\"\n data-qa=\"dt-recipe-message-input-emoji-picker-btn\"\n size=\"sm\"\n class=\"d-recipe-message-input__button\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"emojiPickerButtonLabel\"\n @click=\"toggleEmojiPicker\"\n @mouseenter=\"emojiPickerFocus = true\"\n @mouseleave=\"emojiPickerFocus = false\"\n @focus=\"emojiPickerFocus = true\"\n @blur=\"emojiPickerFocus = false\"\n >\n <template #icon>\n <dt-icon-very-satisfied\n v-if=\"emojiPickerHovered\"\n size=\"300\"\n />\n <dt-icon-satisfied\n v-else\n size=\"300\"\n />\n </template>\n </dt-button>\n </template>\n <template #content=\"{ close }\">\n <dt-emoji-picker\n v-bind=\"emojiPickerProps\"\n @add-emoji=\"$emit('add-emoji')\"\n @skin-tone=\"onSkinTone\"\n @selected-emoji=\"(emoji) => onSelectEmoji(emoji, close)\"\n @scroll-bottom-reached=\"$emit('emoji-scroll-bottom-reached')\"\n />\n </template>\n </dt-popover>\n <!-- @slot Slot for emojiGiphy picker -->\n <slot name=\"emojiGiphyPicker\" />\n <!-- @slot Slot to add extra action icons next to default ones -->\n <slot name=\"customActionIcons\" />\n </dt-stack>\n </div>\n <!-- Right content -->\n <div class=\"d-recipe-message-input__bottom-section-right\">\n <dt-stack\n direction=\"row\"\n gap=\"300\"\n >\n <!-- @slot Slot for sms count -->\n <div class=\"d-recipe-message-input__sms-count\">\n <slot name=\"smsCount\" />\n </div>\n\n <!-- Optionally displayed remaining character counter -->\n <dt-tooltip\n v-if=\"Boolean(showCharacterLimit)\"\n class=\"d-recipe-message-input__remaining-char-tooltip\"\n placement=\"top-end\"\n :enabled=\"characterLimitTooltipEnabled\"\n :message=\"showCharacterLimit.message\"\n :offset=\"[10, 8]\"\n >\n <template #anchor>\n <p\n v-show=\"displayCharacterLimitWarning\"\n class=\"d-recipe-message-input__remaining-char\"\n data-qa=\"dt-recipe-message-input-character-limit\"\n >\n {{ showCharacterLimit.count - inputLength }}\n </p>\n </template>\n </dt-tooltip>\n\n <!-- Cancel button for edit mode -->\n <dt-button\n v-if=\"showCancel\"\n v-dt-tooltip=\"cancelButtonLabel\"\n data-qa=\"dt-recipe-message-input-cancel-button\"\n class=\"d-recipe-message-input__button d-recipe-message-input__cancel-button\"\n size=\"sm\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"cancelButtonLabel\"\n @click=\"onCancel\"\n >\n <p>{{ cancelButtonLabel }}</p>\n </dt-button>\n\n <!-- @slot Slot for sendButton picker -->\n <slot name=\"sendButton\">\n <!-- Send button -->\n <!-- Right positioned UI - send button -->\n <dt-button\n v-if=\"showSend\"\n v-dt-tooltip:top-end=\"sendButtonLabel\"\n data-qa=\"dt-recipe-message-input-send-btn\"\n size=\"sm\"\n kind=\"default\"\n importance=\"primary\"\n :class=\"[\n 'd-recipe-message-input__button d-recipe-message-input__send-button',\n {\n 'd-recipe-message-input__send-button--disabled': isSendDisabled,\n 'd-btn--icon-only': showSendIcon,\n },\n ]\"\n :aria-label=\"sendButtonLabel\"\n :aria-disabled=\"isSendDisabled\"\n @click=\"onSend\"\n >\n <template\n v-if=\"showSendIcon\"\n #icon\n >\n <!-- @slot Slot for send button icon -->\n <slot\n name=\"sendIcon\"\n :icon-size=\"sendIconSize\"\n >\n <dt-icon-send :size=\"sendIconSize\" />\n </slot>\n </template>\n <template v-if=\"showSend.text\">\n <p>{{ showSend.text }}</p>\n </template>\n </dt-button>\n </slot>\n </dt-stack>\n </div>\n </section>\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 lastActiveNodes from './last_active_nodes';\nimport { removeClassStyleAttrs, returnFirstEl, addClassStyleAttrs } from '@/common/utils';\nimport MeetingPill from './extensions/meeting_pill/meeting_pill';\nimport { DtButton } from '@/components/button';\nimport { DtEmojiPicker } from '@/components/emoji_picker';\nimport { DtPopover } from '@/components/popover';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtStack } from '@/components/stack';\nimport {\n DtIconImage, DtIconVerySatisfied, DtIconSatisfied, DtIconSend,\n} from '@dialpad/dialtone-icons/vue3';\nimport DtRecipeMessageInputTopbar from './message_input_topbar.vue';\nimport DtRecipeMessageInputLink from './message_input_link.vue';\nimport { DialtoneLocalization } from '@/localization';\n\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n} from '../editor/editor_constants.js';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeMessageInput',\n\n components: {\n DtButton,\n DtEmojiPicker,\n DtInput,\n DtPopover,\n DtRecipeMessageInputTopbar,\n DtRecipeMessageInputLink,\n DtRichTextEditor,\n DtTooltip,\n DtStack,\n DtIconImage,\n DtIconVerySatisfied,\n DtIconSatisfied,\n DtIconSend,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Displays all the buttons for rich text formatting above the message input, and enables it within the editor.\n * Rich text formatting for the purposes of this component is defined as:\n *\n * bold, italic, strikethrough, lists, blockquotes, inline code tags, and code blocks.\n *\n * If you are sending a message to a phone rather than a Dialpad to Dialpad message, you should have this as false.\n */\n richText: {\n type: Boolean,\n default: true,\n },\n\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 * Prevents the user from typing any further. Deleting text will still work.\n */\n preventTyping: {\n type: Boolean,\n default: false,\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 * The output format that the editor uses when emitting the \"@input\" event.\n * One of `text`, `json`, `html`. See https://tiptap.dev/guide/output for\n * examples.\n * @values text, json, html\n */\n outputFormat: {\n type: String,\n default: 'json',\n validator (outputFormat) {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(outputFormat);\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Disable Send Button\n */\n disableSend: {\n type: Boolean,\n default: false,\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 // Emoji picker props\n showEmojiPicker: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Props to pass into the emoji picker.\n */\n emojiPickerProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Enable character Limit warning\n */\n showCharacterLimit: {\n type: [Boolean, Object],\n default: () => ({ count: 1500, warning: 500, message: '' }),\n },\n\n showImagePicker: {\n type: [Boolean, Object],\n default: () => ({}),\n },\n\n /**\n * Send button defaults.\n * TODO (Dialtone 10):\n * - Change to `showSendButton`, boolean only.\n */\n showSend: {\n type: [Boolean, Object],\n default: () => ({}),\n },\n\n /**\n * TODO (Dialtone 10):\n * - Add a prop `iconOnly` default: true to control if localized send button text should be shown\n */\n\n /**\n * Cancel button defaults.\n * TODO (Dialtone 10): Change to `showCancelButton`, boolean only.\n */\n showCancel: {\n type: [Boolean, Object],\n default: () => ({}),\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the contacts for suggestion.\n * items({ query }) => { return [ContactObject]; }\n * ContactObject format:\n * { name: string, avatarSrc: string, id: string }\n *\n * When null, it does not add the plugin.\n */\n mentionSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the channels for suggestion.\n * items({ query }) => { return [ChannelObject]; }\n * ChannelObject format:\n * { name: string, id: string, locked: boolean }\n *\n * When null, it does not add the plugin. Setting locked to true will display a lock rather than hash.\n */\n channelSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the slash commands for suggestion.\n * items({ query }) => { return [SlashCommandObject]; }\n * SlashCommandObject format:\n * { command: string, description: string, parametersExample?: string }\n * The \"parametersExample\" parameter is optional, and describes an example\n * of the parameters that command can take.\n *\n * When null, it does not add the plugin.\n */\n slashCommandSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * descriptive text fields for the bold button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n boldButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + B',\n }),\n },\n\n /**\n * descriptive text fields for the italic button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n italicButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + I',\n }),\n },\n\n /**\n * descriptive text fields for the strikethrough button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n strikeButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + Shift + S',\n }),\n },\n\n /**\n * descriptive text fields for the link button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n linkButtonOptions: {\n type: Object,\n default: () => ({\n // TODO: implement mod k\n keyboardShortcutText: 'Mod + K',\n linkPlaceholder: 'e.g. https://www.dialpad.com',\n }),\n },\n\n /**\n * descriptive text fields for the bullet list button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n bulletListButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + Shift + 8',\n }),\n },\n\n /**\n * descriptive text fields for the ordered list button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n orderedListButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + Shift + 7',\n }),\n },\n\n /**\n * descriptive text fields for the italic button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n blockQuoteButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + Shift + B',\n }),\n },\n\n /**\n * descriptive text fields for the code button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n codeButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + E',\n }),\n },\n\n /**\n * descriptive text fields for the code block button\n *\n * object format:\n * { keyboardShortcutText: string }\n */\n codeBlockButtonOptions: {\n type: Object,\n default: () => ({\n keyboardShortcutText: 'Mod + Alt + C',\n }),\n },\n },\n\n emits: [\n /**\n * Fires when send button is clicked\n *\n * @event submit\n * @type {String}\n */\n 'submit',\n\n /**\n * Fires when media is selected from image button\n *\n * @event select-media\n * @type {Array}\n */\n 'select-media',\n\n /**\n * Fires when media is dropped into the message input\n *\n * @event add-media\n * @type {Array}\n */\n 'add-media',\n\n /**\n * Fires when media is pasted into the message input\n *\n * @event paste-media\n * @type {Array}\n */\n 'paste-media',\n\n /**\n * Fires when cancel button is pressed (only on edit mode)\n *\n * @event cancel\n * @type {Boolean}\n */\n 'cancel',\n\n /**\n * Fires when skin tone is selected from the emoji picker\n *\n * @event skin-tone\n * @type {String}\n */\n 'skin-tone',\n\n /**\n * Fires when emoji is selected from the emoji picker\n *\n * @event selected-emoji\n * @type {String}\n */\n 'selected-emoji',\n\n /**\n * Fires when a slash command is selected\n *\n * @event selected-command\n * @type {String}\n */\n 'selected-command',\n\n /**\n * Fires when meeting pill is closed\n *\n * @event meeting-pill-close\n * @type {String}\n */\n 'meeting-pill-close',\n\n /**\n * Event to sync the value with the parent\n * @event update:modelValue\n * @type {String|JSON}\n */\n 'update:modelValue',\n\n /**\n * Emitted when input changes, returns text content only\n * @event text-input\n * @type {String}\n */\n 'text-input',\n\n /**\n * Emitted when the 'Add emoji' button is clicked\n * @event add-emoji\n * @type {Boolean}\n */\n 'add-emoji',\n\n /**\n * Emitted when the emoji picker scroll reaches the bottom\n * @event emoji-scroll-bottom-reached\n */\n 'emoji-scroll-bottom-reached',\n ],\n\n data () {\n return {\n // If an ordered list is nested within an unordered list, we only want to show the currently selected list as\n // active. This function performs the logic to determine the farthest active node from the root.\n lastActiveNodes,\n additionalExtensions: [\n MeetingPill.configure({\n onClose: (event) => {\n this.$emit('meeting-pill-close', event);\n },\n }),\n ],\n\n internalInputValue: this.modelValue, // internal input content\n imagePickerFocus: false,\n emojiPickerFocus: false,\n emojiPickerOpened: false,\n isFocused: false,\n linkOptions: {\n class: 'd-link d-c-text d-d-inline-block',\n },\n\n linkDialogOpen: false,\n selectedText: '',\n text: '',\n hideLinkBubbleMenu: false,\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n showSendIcon () {\n return !this.showSend.text;\n },\n\n inputLength () {\n return this.text.length;\n },\n\n displayCharacterLimitWarning () {\n return (\n Boolean(this.showCharacterLimit) &&\n this.showCharacterLimit.count - this.inputLength <=\n this.showCharacterLimit.warning\n );\n },\n\n characterLimitTooltipEnabled () {\n return (\n this.showCharacterLimit.message &&\n this.showCharacterLimit.count - this.inputLength < 0\n );\n },\n\n isSendDisabled () {\n return (\n this.disableSend ||\n (this.showCharacterLimit &&\n this.inputLength > this.showCharacterLimit.count)\n );\n },\n\n emojiPickerHovered () {\n return this.emojiPickerFocus || this.emojiPickerOpened;\n },\n\n sendIconSize () {\n return '300';\n },\n\n sendButtonLabel () {\n return this.i18n.$t('DIALTONE_MESSAGE_INPUT_SEND_BUTTON_ARIA_LABEL');\n },\n\n imagePickerButtonLabel () {\n return this.i18n.$t('DIALTONE_MESSAGE_INPUT_IMAGE_PICKER_BUTTON_ARIA_LABEL');\n },\n\n emojiPickerButtonLabel () {\n return this.i18n.$t('DIALTONE_MESSAGE_INPUT_EMOJI_PICKER_BUTTON_ARIA_LABEL');\n },\n\n cancelButtonLabel () {\n return this.i18n.$t('DIALTONE_MESSAGE_INPUT_CANCEL_BUTTON_ARIA_LABEL');\n },\n },\n\n watch: {\n modelValue (newValue) {\n this.internalInputValue = newValue;\n },\n\n emojiPickerOpened (newValue) {\n if (!newValue) {\n this.$refs.richTextEditor?.focusEditor();\n }\n },\n },\n\n created () {\n if (this.modelValue && this.outputFormat === 'text') {\n this.internalInputValue = this.modelValue.replace(/\\n/g, '<br>');\n } else {\n this.internalInputValue = this.modelValue;\n }\n },\n\n methods: {\n removeClassStyleAttrs,\n addClassStyleAttrs,\n\n linkDialogOpened (value) {\n this.linkDialogOpen = value;\n if (value === true) {\n this.initLinkDialog();\n } else {\n this.hideLinkBubbleMenu = false;\n this.$refs.richTextEditor?.focusEditor();\n }\n },\n\n handleTopbarClick (type) {\n const editor = this.$refs.richTextEditor?.editor;\n // Key is the name returned in the event, value is the name of the TipTap command function to run.\n const typeToCommandMap = {\n bold: () => editor?.chain().focus().toggleBold().run(),\n italic: () => editor?.chain().focus().toggleItalic().run(),\n strike: () => editor?.chain().focus().toggleStrike().run(),\n bulletList: () => editor?.chain().focus().toggleBulletList().run(),\n orderedList: () => editor?.chain().focus().toggleOrderedList().run(),\n blockquote: () => editor?.chain().focus().toggleBlockquote().run(),\n code: () => editor?.chain().focus().toggleCode().run(),\n codeBlock: () => editor?.chain().focus().toggleCodeBlock().run(),\n };\n\n if (editor && typeToCommandMap[type]) {\n typeToCommandMap[type]();\n }\n },\n\n // Checks if the node currently selected is active ex/ the bold button is active if the selected text is bold\n // eslint-disable-next-line complexity\n isSelectionActive (type) {\n if (['bulletList', 'orderedList'].includes(type)) {\n return this.lastActiveNodes(this.$refs.richTextEditor?.editor?.state, [{ type: 'bulletList' }, { type: 'orderedList' }]).includes(type) && this.isFocused;\n }\n return this.$refs.richTextEditor?.editor?.isActive(type) && this.isFocused;\n },\n\n initLinkDialog () {\n this.$refs.link.setInitialValues(this.selectedText, this.$refs.richTextEditor?.editor?.getAttributes('link')?.href);\n this.hideLinkBubbleMenu = true;\n this.linkDialogOpen = true;\n },\n\n removeLink () {\n this.$refs.richTextEditor?.removeLink();\n this.linkDialogOpen = false;\n },\n\n setLink (linkText, linkInput) {\n this.$refs.richTextEditor.setLink(\n linkInput, linkText, this.linkOptions, EDITOR_SUPPORTED_LINK_PROTOCOLS, EDITOR_DEFAULT_LINK_PREFIX,\n );\n this.linkDialogOpen = false;\n },\n\n // Mousedown instead of click because it fires before the blur event.\n onMousedown (e) {\n const isWithinInput = returnFirstEl(this.$refs.richTextEditor.$el)\n .querySelector('.tiptap')\n .contains(e.target);\n\n // If the click is not within the tiptap rich text editor input itself, but still within the wrapping div,\n // focus the editor.\n if (!isWithinInput) {\n // Prevent default prevents blurring the rich text editor input when it is already focused.\n e.preventDefault();\n this.$refs.richTextEditor.focusEditor();\n }\n },\n\n onDrop (e) {\n const dt = e.dataTransfer;\n const files = Array.from(dt.files);\n this.$emit('add-media', files);\n },\n\n onPaste (e) {\n if (e.clipboardData.files.length) {\n e.stopPropagation();\n e.preventDefault();\n const files = [...e.clipboardData.files];\n this.$emit('paste-media', files);\n }\n },\n\n onSkinTone (skinTone) {\n this.$emit('skin-tone', skinTone);\n },\n\n onSelectEmoji (emoji, close) {\n if (!emoji) {\n return;\n }\n\n if (!emoji.shift_key) {\n close();\n }\n\n // Insert emoji into the editor\n this.$refs.richTextEditor.editor.commands.insertContent({\n type: 'emoji',\n attrs: {\n code: emoji.shortname,\n image: emoji.image,\n name: emoji.name,\n },\n });\n this.$emit('selected-emoji', emoji);\n },\n\n onSelectImage () {\n this.$refs.messageInputImageUpload.$refs.input.click();\n },\n\n onImageUpload () {\n this.$emit(\n 'select-media',\n this.$refs.messageInputImageUpload.$refs.input.files,\n );\n },\n\n toggleEmojiPicker () {\n this.emojiPickerOpened = !this.emojiPickerOpened;\n },\n\n onSend () {\n if (this.isSendDisabled) {\n return;\n }\n this.$emit('submit', this.internalInputValue);\n },\n\n onCancel () {\n this.$emit('cancel');\n },\n\n onInput (event) {\n this.$emit('update:modelValue', event);\n },\n\n onTextInput (event) {\n this.text = event;\n this.$emit('text-input', event);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","NodeViewWrapper","DtItemLayout","DtIconClose","DtButton","DtIconVideo","nodeViewProps","DialtoneLocalization","e","onCloseCallback","_c","_b","_a","_hoisted_1","_hoisted_2","_createBlock","_component_node_view_wrapper","_withCtx","_createVNode","_component_dt_item_layout","_createElementVNode","_component_dt_icon_video","_component_dt_button","$options","_component_dt_icon_close","_createTextVNode","_ctx","MeetingPill","Node","VueNodeViewRenderer","HTMLAttributes","mergeAttributes","DtEmojiPicker","DtInput","DtPopover","DtRecipeMessageInputTopbar","DtRecipeMessageInputLink","DtRichTextEditor","DtTooltip","DtStack","DtIconImage","DtIconVerySatisfied","DtIconSatisfied","DtIconSend","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","outputFormat","RICH_TEXT_EDITOR_OUTPUT_FORMATS","lastActiveNodes","event","newValue","removeClassStyleAttrs","addClassStyleAttrs","value","type","editor","typeToCommandMap","_d","linkText","linkInput","EDITOR_SUPPORTED_LINK_PROTOCOLS","EDITOR_DEFAULT_LINK_PREFIX","returnFirstEl","dt","files","skinTone","emoji","close","_hoisted_3","_hoisted_4","_openBlock","_createElementBlock","_mergeProps","_cache","_withModifiers","args","_renderSlot","$props","_component_dt_recipe_message_input_topbar","$data","_component_dt_recipe_message_input_link","_createCommentVNode","_normalizeStyle","_component_dt_rich_text_editor","$event","_component_dt_stack","_component_dt_icon_image","_directive_dt_tooltip","_component_dt_input","_component_dt_popover","attrs","_component_dt_icon_very_satisfied","_component_dt_icon_satisfied","_component_dt_emoji_picker","_component_dt_tooltip","_normalizeClass","_createSlots","_hoisted_5","_toDisplayString","_component_dt_icon_send"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("../../node_modules/@tiptap/vue-3.cjs"),d=require("@tiptap/core"),V=require("@tiptap/extension-blockquote"),M=require("@tiptap/extension-code-block"),A=require("@tiptap/extension-code"),q=require("@tiptap/extension-document"),$=require("@tiptap/extension-hard-break"),D=require("@tiptap/extension-paragraph"),j=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"),O=require("regex-combined-emojis"),o=require("vue"),h=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),I=require("../emoji/emoji.cjs"),f=require("../../common/emoji/index.cjs"),oe=require("@dialpad/dialtone-emojis"),re=require("../list-item/list-item.cjs"),x=require("../stack/stack.cjs"),b=require("tippy.js"),k=require("../../common/utils/index.cjs"),ie=require("@tiptap/extension-image"),v=require("@tiptap/extension-mention"),P=require("../link/link.cjs"),C=require("./rich-text-editor-constants.cjs"),se=require("../avatar/avatar.cjs"),ae=require("@dialpad/dialtone-icons/vue3/hash"),ce=require("@dialpad/dialtone-icons/vue3/lock"),le=require("deep-equal"),de=require("../../localization/index.cjs"),ue=require("../button/button.cjs"),me={compatConfig:{MODE:3},name:"EmojiComponent",components:{NodeViewWrapper:l.NodeViewWrapper,DtEmoji:I.default},props:l.nodeViewProps};function he(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 pe=h._(me,[["render",he]]),fe={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}}}},ge={class:"d-popover__dialog d-suggestion-list__container"},_e={ref:"suggestionList",class:"d-suggestion-list"};function ke(e,t,r,n,i,s){const a=o.resolveComponent("dt-list-item");return o.openBlock(),o.createElementBlock("div",ge,[o.withDirectives(o.createElementVNode("ul",_e,[(o.openBlock(!0),o.createElementBlock(o.Fragment,null,o.renderList(r.items,(c,u)=>(o.openBlock(),o.createBlock(a,{key:c.id,class:o.normalizeClass(["d-suggestion-list__item",{"d-list-item--highlighted":u===i.selectedIndex}]),"navigation-type":"arrow-keys",onClick:m=>s.selectItem(u),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 T=h._(fe,[["render",ke]]),we={compatConfig:{MODE:3},name:"EmojiSuggestion",components:{DtEmoji:I.default,DtStack:x.default},props:{item:{type:Object,required:!0}}};function ye(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 Ce=h._(we,[["render",ye]]),E={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)}}}},xe=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,xe).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 l.VueRenderer(T,{props:{itemComponent:o.markRaw(Ce),itemType:"emoji",...n},editor:n.editor}),n.clientRect&&(t=b("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:[E]}),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}}}},Te=/(:\w+:)$/,Ee=new RegExp(O.emojiPattern+"$"),Se=e=>{if(e&&f.codeToEmojiData(e[0]))return{text:e[2]||e[0]}},Be=e=>[...e.matchAll(f.emojiShortCodeRegex)].filter(r=>f.codeToEmojiData(r[0])).map(r=>({index:r.index,text:r[0],match:r})),ve=d.Node.create({name:"emoji",addOptions(){return{HTMLAttributes:{}}},group:"inline",inline:!0,selectable:!1,atom:!0,addNodeView(){return l.VueNodeViewRenderer(pe)},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",d.mergeAttributes(this.options.HTMLAttributes,e)]},addInputRules(){return[new d.InputRule({find:e=>{const t=e.match(Te)||e.match(Ee);if(t)return Se(t)},handler:({state:e,range:t,match:r})=>{const{tr:n}=e,i=t.from,s=t.to;n.replaceWith(i,s,this.type.create({code:r[0]}))}})]},addPasteRules(){return[d.nodePasteRule({find:Be,type:this.type,getAttributes(e){return{code:e[0]}}}),d.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,c)=>{if(a.type.name===this.name)return r=!0,e.insertText("",c,c+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 Le(e,t){return!["#","@"].includes(e.charAt(t.index))&&!["#","@"].includes(e.charAt(t.index-1))}function De(e){const t=new RegExp("(?:"+[`[!?.,:;'"]`,"(?:&|&amp;)(?:lt|gt|quot|apos|raquo|laquo|rsaquo|lsaquo);)+$"].join("|"),"g");return e.replace(t,"")}function Oe(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 B(e,t,r,n){const i=Oe(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:B(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=d.getMarksBetween(i,s,t);for(const c of a)c.mark.type===n&&r.removeMark(c.from,c.to,n)}const R=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,u=B(e,a,"left",R),m=B(e,c,"right",R),p=e.slice(u.from,m.to);Re(p,k.linkRegex,Le).forEach(S=>{const _=De(S[0]),y=t+u.from+S.index+1,N=y+_.length;i.addMark(y,N,s.create())})}function Pe(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 u=d.combineTransactionSteps(n.doc,[...r]);return d.getChangedRanges(u).forEach(({oldRange:p,newRange:w})=>{Ie(w,i.doc,a,e.type),d.findChildrenInRange(i.doc,w,_=>_.isTextblock).forEach(({node:_,pos:y})=>{L(_.textContent,y,p.from,w.to,a,e.type)})}),a}})}const Ne={class:"d-link d-c-text d-d-inline-block d-wb-break-all",rel:"noopener noreferrer nofollow"},Ve=d.Mark.create({name:"CustomLink",renderHTML({HTMLAttributes:e}){return["a",d.mergeAttributes(this.options.HTMLAttributes,e,Ne)]},renderText({node:e}){return e.attrs.text},addProseMirrorPlugins(){return[Pe({type:this.type})]}}),Me=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}),Ae=D.extend({parseHTML(){return[{tag:"div"}]},renderHTML({HTMLAttributes:e}){return["div",d.mergeAttributes(this.options.HTMLAttributes,e),0]}}),qe={compatConfig:{MODE:3},name:"MentionComponent",components:{NodeViewWrapper:l.NodeViewWrapper,DtLink:P.default},props:l.nodeViewProps,computed:{text(){return"@"+this.$props.node.attrs.name}}};function $e(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._(qe,[["render",$e]]),He=v.extend({addNodeView(){return l.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",d.mergeAttributes(this.options.HTMLAttributes,e)]}}).configure({suggestion:{char:"@",pluginKey:new g.PluginKey("mentionSuggestion")}}),Ke={compatConfig:{MODE:3},name:"ChannelComponent",components:{NodeViewWrapper:l.NodeViewWrapper,DtLink:P.default},props:l.nodeViewProps,computed:{text(){return"#"+this.$props.node.attrs.name}}};function Fe(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 Ue=h._(Ke,[["render",Fe]]),We=v.extend({name:"channel",addNodeView(){return l.VueNodeViewRenderer(Ue)},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",d.mergeAttributes(this.options.HTMLAttributes,e)]}}).configure({suggestion:{char:"#",pluginKey:new g.PluginKey("channelSuggestion")}}),ze={compatConfig:{MODE:3},name:"SlashCommandsComponent",components:{NodeViewWrapper:l.NodeViewWrapper},props:{...l.nodeViewProps},emits:["selected-command"],computed:{text(){return"/"+this.$props.node.attrs.command}},created(){var r,n,i;const e=this.$props.node.attrs.command;this.$emit("selected-command",e);const t=(i=(n=(r=this.editor)==null?void 0:r.storage)==null?void 0:n["slash-commands"])==null?void 0:i.onSelectedCommand;t&&typeof t=="function"&&t(e)}};function Xe(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 Je=h._(ze,[["render",Xe]]),Ye=(e,t)=>[...e.matchAll(t)].map(n=>{let i=n[2];return i.endsWith(" ")||(i+=" "),{index:n.index,text:i,match:n}}),Ge=v.extend({name:"slash-commands",group:"inline",inline:!0,addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),onSelectedCommand:null}},addStorage(){return{onSelectedCommand:this.options.onSelectedCommand}},addNodeView(){return l.VueNodeViewRenderer(Je)},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",d.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[d.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[d.nodePasteRule({find:n=>Ye(n,t),type:this.type,getAttributes(n){return{command:n[0].trim()}}})]}}).configure({suggestion:{char:"/",pluginKey:new g.PluginKey("slashCommandSuggestion")}}),Qe={compatConfig:{MODE:3},name:"MentionSuggestion",components:{DtAvatar:se.default,DtStack:x.default},props:{item:{type:Object,required:!0}},computed:{name(){return this.item.name},avatarSrc(){return this.item.avatarSrc},presence(){return this.item.presence},status(){return this.item.status},presenceText(){return this.item.presenceText},presenceFontColorClass(){return{active:"d-recipe-contact-row--active",busy:"d-recipe-contact-row--busy",away:"d-recipe-contact-row--away",offline:"d-recipe-contact-row--busy"}[this.presence]},showDetails(){return this.item.showDetails}}},Ze={class:"d-mention-suggestion__name"},et={key:1,class:"d-mention-suggestion__divider"},tt={key:2,class:"d-mention-suggestion__status"};function nt(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",class:"d-mention-suggestion__container",gap:"400"},{default:o.withCtx(()=>[o.createVNode(a,{"full-name":s.name,"image-src":s.avatarSrc,"image-alt":s.name,"show-presence":s.showDetails,presence:s.presence,size:"sm"},null,8,["full-name","image-src","image-alt","show-presence","presence"]),o.createVNode(c,{class:"d-mention-suggestion__details-container",gap:"100"},{default:o.withCtx(()=>[o.createElementVNode("span",Ze,o.toDisplayString(s.name),1),s.showDetails?(o.openBlock(),o.createBlock(c,{key:0,direction:"row",gap:"300",class:"d-label--sm-plain"},{default:o.withCtx(()=>[s.presenceText?(o.openBlock(),o.createElementBlock("span",{key:0,class:o.normalizeClass(["d-mention-suggestion__presence",[s.presenceFontColorClass]])},o.toDisplayString(s.presenceText),3)):o.createCommentVNode("",!0),s.status&&s.presenceText?(o.openBlock(),o.createElementBlock("div",et," • ")):o.createCommentVNode("",!0),s.status?(o.openBlock(),o.createElementBlock("div",tt,o.toDisplayString(s.status),1)):o.createCommentVNode("",!0)]),_:1})):o.createCommentVNode("",!0)]),_:1})]),_:1})}const ot=h._(Qe,[["render",nt]]),rt={allowSpaces:!0,render:()=>{let e,t,r=!1;return{onStart:n=>{e=new l.VueRenderer(T,{props:{itemComponent:o.markRaw(ot),itemType:"mention",...n},editor:n.editor}),n.clientRect&&(t=b("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:[E]}),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}}}},it={compatConfig:{MODE:3},name:"ChannelSuggestion",components:{DtStack:x.default,DtIconHash:ae,DtIconLock:ce},props:{item:{type:Object,required:!0}},computed:{name(){return this.item.name}}};function st(e,t,r,n,i,s){const a=o.resolveComponent("dt-icon-hash"),c=o.resolveComponent("dt-icon-lock"),u=o.resolveComponent("dt-stack");return o.openBlock(),o.createBlock(u,{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 at=h._(it,[["render",st]]),ct={allowSpaces:!0,render:()=>{let e,t,r=!1;return{onStart:n=>{e=new l.VueRenderer(T,{props:{itemComponent:o.markRaw(at),itemType:"channel",...n},editor:n.editor}),n.clientRect&&(t=b("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:[E]}),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}}}},lt={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}}},dt={class:"d-body--md-compact"},ut={key:0},mt={class:"d-body--sm d-fc-tertiary"};function ht(e,t,r,n,i,s){return o.openBlock(),o.createElementBlock("div",null,[o.createElementVNode("div",dt,[o.createElementVNode("span",null,"/"+o.toDisplayString(s.command),1),s.parametersExample?(o.openBlock(),o.createElementBlock("span",ut,o.toDisplayString(s.parametersExample),1)):o.createCommentVNode("",!0)]),o.createElementVNode("div",mt,o.toDisplayString(s.description),1)])}const pt=h._(lt,[["render",ht]]),ft={allowSpaces:!0,startOfLine:!0,render:()=>{let e,t,r=!1;return{onStart:n=>{e=new l.VueRenderer(T,{parent:void 0,props:{itemComponent:o.markRaw(pt),itemType:"slash-command",...n},editor:n.editor}),n.clientRect&&(t=b("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:[E]}),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}}}},gt={compatConfig:{MODE:3},name:"DtRichTextEditor",components:{EditorContent:l.EditorContent,BubbleMenu:l.BubbleMenu,DtButton:ue.default,DtStack:x.default},props:{modelValue:{type:[Object,String],default:""},editable:{type:Boolean,default:!0},preventTyping:{type:Boolean,default:!1},pasteRichText:{type:Boolean,default:!0},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","selected-command"],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"},i18n:new de.DialtoneLocalization}},computed:{attrs(){return{...this.$attrs,onInput:()=>{},onFocus:()=>{},onBlur:()=>{}}},extensions(){const e=[q,Y,Q,$];e.push(this.useDivTags?Ae:D),this.allowBold&&e.push(H),this.allowBlockquote&&e.push(V),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(j.configure({placeholder:this.placeholder}));const t=this,r=d.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,addKeyboardShortcuts(){return{"Mod-k":()=>(t.$emit("edit-link"),!0)}}}).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,...rt};e.push(He.configure({suggestion:n}))}if(this.channelSuggestion){const n={...this.channelSuggestion,...ct};e.push(We.configure({suggestion:n}))}if(this.slashCommandSuggestion){const n={...this.slashCommandSuggestion,...ft};e.push(Ge.configure({suggestion:n,onSelectedCommand:i=>{this.$emit("selected-command",i)}}))}return e.push(ve),e.push(G.configure({types:["paragraph"]})),this.allowCode&&e.push(A),this.allowCodeblock&&e.push(M.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"),N=require("@tiptap/extension-blockquote"),V=require("@tiptap/extension-code-block"),M=require("@tiptap/extension-code"),$=require("@tiptap/extension-document"),q=require("@tiptap/extension-hard-break"),D=require("@tiptap/extension-paragraph"),j=require("@tiptap/extension-placeholder"),H=require("@tiptap/extension-bold"),K=require("@tiptap/extension-bullet-list"),W=require("@tiptap/extension-italic"),F=require("@tiptap/extension-link"),U=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"),O=require("regex-combined-emojis"),o=require("vue"),h=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),I=require("../emoji/emoji.cjs"),f=require("../../common/emoji/index.cjs"),oe=require("../list-item/list-item.cjs"),x=require("../stack/stack.cjs"),b=require("tippy.js"),k=require("../../common/utils/index.cjs"),re=require("@tiptap/extension-image"),v=require("@tiptap/extension-mention"),P=require("../link/link.cjs"),C=require("./rich-text-editor-constants.cjs"),ie=require("../avatar/avatar.cjs"),se=require("@dialpad/dialtone-icons/vue3/hash"),ae=require("@dialpad/dialtone-icons/vue3/lock"),ce=require("deep-equal"),le=require("../../localization/index.cjs"),de=require("../button/button.cjs"),ue={compatConfig:{MODE:3},name:"EmojiComponent",components:{NodeViewWrapper:d.NodeViewWrapper,DtEmoji:I.default},props:d.nodeViewProps};function me(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 he=h._(ue,[["render",me]]),pe={compatConfig:{MODE:3},name:"SuggestionList",components:{DtListItem:oe.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,(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._(pe,[["render",_e]]),ke={compatConfig:{MODE:3},name:"EmojiSuggestion",components:{DtEmoji:I.default,DtStack:x.default},props:{item:{type:Object,required:!0}}};function we(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 ye=h._(ke,[["render",we]]),T={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,xe=(e,t,r)=>{var c,l;const n=(c=e.shortname)==null?void 0:c.replaceAll(":",""),i=(l=t.shortname)==null?void 0:l.replaceAll(":",""),s=n.startsWith(r),a=i.startsWith(r);return s&&!a?-1:!s&&a?1:n.localeCompare(i)},be={items:({query:e})=>{if(e.length<2)return[];const t=Object.values(f.getEmojiData());return e=e.toLowerCase(),t.filter(n=>{var i;return[n.name,(i=n.shortname)==null?void 0:i.replaceAll(":",""),...n.keywords||[]].some(s=>s&&s.startsWith(e))}).splice(0,Ce).sort((n,i)=>xe(n,i,e)).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=b("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:[T]}),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}}}},Ee=/(:\w+:)$/,Te=new RegExp(O.emojiPattern+"$"),Se=e=>{if(e&&f.codeToEmojiData(e[0]))return{text:e[2]||e[0]}},Be=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(Ee)||e.match(Te);if(t)return Se(t)},handler:({state:e,range:t,match:r})=>{const{tr:n}=e,i=t.from,s=t.to;n.replaceWith(i,s,this.type.create({code:r[0]}))}})]},addPasteRules(){return[u.nodePasteRule({find:Be,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,c)=>{if(a.type.name===this.name)return r=!0,e.insertText("",c,c+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 Le(e,t){return!["#","@"].includes(e.charAt(t.index))&&!["#","@"].includes(e.charAt(t.index-1))}function De(e){const t=new RegExp("(?:"+[`[!?.,:;'"]`,"(?:&|&amp;)(?:lt|gt|quot|apos|raquo|laquo|rsaquo|lsaquo);)+$"].join("|"),"g");return e.replace(t,"")}function Oe(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 B(e,t,r,n){const i=Oe(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:B(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 c of a)c.mark.type===n&&r.removeMark(c.from,c.to,n)}const R=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=B(e,a,"left",R),m=B(e,c,"right",R),p=e.slice(l.from,m.to);Re(p,k.linkRegex,Le).forEach(S=>{const _=De(S[0]),y=t+l.from+S.index+1,A=y+_.length;i.addMark(y,A,s.create())})}function Pe(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})=>{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 Ae={class:"d-link d-c-text d-d-inline-block d-wb-break-all",rel:"noopener noreferrer nofollow"},Ne=u.Mark.create({name:"CustomLink",renderHTML({HTMLAttributes:e}){return["a",u.mergeAttributes(this.options.HTMLAttributes,e,Ae)]},renderText({node:e}){return e.attrs.text},addProseMirrorPlugins(){return[Pe({type:this.type})]}}),Ve=re.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=D.extend({parseHTML(){return[{tag:"div"}]},renderHTML({HTMLAttributes:e}){return["div",u.mergeAttributes(this.options.HTMLAttributes,e),0]}}),$e={compatConfig:{MODE:3},name:"MentionComponent",components:{NodeViewWrapper:d.NodeViewWrapper,DtLink:P.default},props:d.nodeViewProps,computed:{text(){return"@"+this.$props.node.attrs.name}}};function qe(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._($e,[["render",qe]]),He=v.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")}}),Ke={compatConfig:{MODE:3},name:"ChannelComponent",components:{NodeViewWrapper:d.NodeViewWrapper,DtLink:P.default},props:d.nodeViewProps,computed:{text(){return"#"+this.$props.node.attrs.name}}};function We(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 Fe=h._(Ke,[["render",We]]),Ue=v.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")}}),ze={compatConfig:{MODE:3},name:"SlashCommandsComponent",components:{NodeViewWrapper:d.NodeViewWrapper},props:{...d.nodeViewProps},emits:["selected-command"],computed:{text(){return"/"+this.$props.node.attrs.command}},created(){var r,n,i;const e=this.$props.node.attrs.command;this.$emit("selected-command",e);const t=(i=(n=(r=this.editor)==null?void 0:r.storage)==null?void 0:n["slash-commands"])==null?void 0:i.onSelectedCommand;t&&typeof t=="function"&&t(e)}};function Xe(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 Je=h._(ze,[["render",Xe]]),Ye=(e,t)=>[...e.matchAll(t)].map(n=>{let i=n[2];return i.endsWith(" ")||(i+=" "),{index:n.index,text:i,match:n}}),Ge=v.extend({name:"slash-commands",group:"inline",inline:!0,addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),onSelectedCommand:null}},addStorage(){return{onSelectedCommand:this.options.onSelectedCommand}},addNodeView(){return d.VueNodeViewRenderer(Je)},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=>Ye(n,t),type:this.type,getAttributes(n){return{command:n[0].trim()}}})]}}).configure({suggestion:{char:"/",pluginKey:new g.PluginKey("slashCommandSuggestion")}}),Qe={compatConfig:{MODE:3},name:"MentionSuggestion",components:{DtAvatar:ie.default,DtStack:x.default},props:{item:{type:Object,required:!0}},computed:{name(){return this.item.name},avatarSrc(){return this.item.avatarSrc},presence(){return this.item.presence},status(){return this.item.status},presenceText(){return this.item.presenceText},presenceFontColorClass(){return{active:"d-recipe-contact-row--active",busy:"d-recipe-contact-row--busy",away:"d-recipe-contact-row--away",offline:"d-recipe-contact-row--busy"}[this.presence]},showDetails(){return this.item.showDetails}}},Ze={class:"d-mention-suggestion__name"},et={key:1,class:"d-mention-suggestion__divider"},tt={key:2,class:"d-mention-suggestion__status"};function nt(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",class:"d-mention-suggestion__container",gap:"400"},{default:o.withCtx(()=>[o.createVNode(a,{"full-name":s.name,"image-src":s.avatarSrc,"image-alt":s.name,"show-presence":s.showDetails,presence:s.presence,size:"sm"},null,8,["full-name","image-src","image-alt","show-presence","presence"]),o.createVNode(c,{class:"d-mention-suggestion__details-container",gap:"100"},{default:o.withCtx(()=>[o.createElementVNode("span",Ze,o.toDisplayString(s.name),1),s.showDetails?(o.openBlock(),o.createBlock(c,{key:0,direction:"row",gap:"300",class:"d-label--sm-plain"},{default:o.withCtx(()=>[s.presenceText?(o.openBlock(),o.createElementBlock("span",{key:0,class:o.normalizeClass(["d-mention-suggestion__presence",[s.presenceFontColorClass]])},o.toDisplayString(s.presenceText),3)):o.createCommentVNode("",!0),s.status&&s.presenceText?(o.openBlock(),o.createElementBlock("div",et," • ")):o.createCommentVNode("",!0),s.status?(o.openBlock(),o.createElementBlock("div",tt,o.toDisplayString(s.status),1)):o.createCommentVNode("",!0)]),_:1})):o.createCommentVNode("",!0)]),_:1})]),_:1})}const ot=h._(Qe,[["render",nt]]),rt={allowSpaces:!0,render:()=>{let e,t,r=!1;return{onStart:n=>{e=new d.VueRenderer(E,{props:{itemComponent:o.markRaw(ot),itemType:"mention",...n},editor:n.editor}),n.clientRect&&(t=b("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:[T]}),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}}}},it={compatConfig:{MODE:3},name:"ChannelSuggestion",components:{DtStack:x.default,DtIconHash:se,DtIconLock:ae},props:{item:{type:Object,required:!0}},computed:{name(){return this.item.name}}};function st(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 at=h._(it,[["render",st]]),ct={allowSpaces:!0,render:()=>{let e,t,r=!1;return{onStart:n=>{e=new d.VueRenderer(E,{props:{itemComponent:o.markRaw(at),itemType:"channel",...n},editor:n.editor}),n.clientRect&&(t=b("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:[T]}),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}}}},lt={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}}},dt={class:"d-body--md-compact"},ut={key:0},mt={class:"d-body--sm d-fc-tertiary"};function ht(e,t,r,n,i,s){return o.openBlock(),o.createElementBlock("div",null,[o.createElementVNode("div",dt,[o.createElementVNode("span",null,"/"+o.toDisplayString(s.command),1),s.parametersExample?(o.openBlock(),o.createElementBlock("span",ut,o.toDisplayString(s.parametersExample),1)):o.createCommentVNode("",!0)]),o.createElementVNode("div",mt,o.toDisplayString(s.description),1)])}const pt=h._(lt,[["render",ht]]),ft={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(pt),itemType:"slash-command",...n},editor:n.editor}),n.clientRect&&(t=b("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:[T]}),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}}}},gt={compatConfig:{MODE:3},name:"DtRichTextEditor",components:{EditorContent:d.EditorContent,BubbleMenu:d.BubbleMenu,DtButton:de.default,DtStack:x.default},props:{modelValue:{type:[Object,String],default:""},editable:{type:Boolean,default:!0},preventTyping:{type:Boolean,default:!1},pasteRichText:{type:Boolean,default:!0},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","selected-command"],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"},i18n:new le.DialtoneLocalization}},computed:{attrs(){return{...this.$attrs,onInput:()=>{},onFocus:()=>{},onBlur:()=>{}}},extensions(){const e=[$,Y,Q,q];e.push(this.useDivTags?Me:D),this.allowBold&&e.push(H),this.allowBlockquote&&e.push(N),this.allowBulletList&&(e.push(K),e.push(U.extend({renderText({node:n}){return n.textContent}})),e.push(z)),this.allowItalic&&e.push(W),this.allowStrike&&e.push(X),this.allowUnderline&&e.push(J),this.placeholder&&e.push(j.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(F.extend({inclusive:!1,addKeyboardShortcuts(){return{"Mod-k":()=>(t.$emit("edit-link"),!0)}}}).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(Ne,this.customLink)),this.mentionSuggestion){const n={...this.mentionSuggestion,...rt};e.push(He.configure({suggestion:n}))}if(this.channelSuggestion){const n={...this.channelSuggestion,...ct};e.push(Ue.configure({suggestion:n}))}if(this.slashCommandSuggestion){const n={...this.slashCommandSuggestion,...ft};e.push(Ge.configure({suggestion:n,onSelectedCommand:i=>{this.$emit("selected-command",i)}}))}return e.push(ve),e.push(G.configure({types:["paragraph"]})),this.allowCode&&e.push(M),this.allowCodeblock&&e.push(V.extend({renderText({node:n}){return`\`\`\`
2
2
  ${n.textContent}
3
- \`\`\``}}).configure({HTMLAttributes:{class:"d-rich-text-editor__code-block"}})),this.allowInlineImages&&e.push(Me),(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 l.Editor({autofocus:this.autoFocus,content:this.modelValue,editable:this.editable,extensions:this.extensions,parseOptions:{preserveWhitespace:"full"},editorProps:{attributes:{...this.inputAttrs,class:this.inputClass},handleKeyDown:(e,t)=>{if(!this.preventTyping)return!1;const r=["Backspace"];return!this.allowLineBreaks&&!t.shiftKey&&r.push("Enter"),!r.includes(t.key)},handlePaste:(e,t)=>{const r=t.clipboardData||window.clipboardData,n=r.getData("text/plain"),i=r.getData("text/html");return this.processPasteData(e,n,i)},transformPastedHTML(e){return e.replace(/(<\/\w+>)((<br \/>)+)/g,"$2$3$1")}}}),this.addEditorListeners()},bubbleMenuShouldShow({editor:e}){return e.isActive("link")},getSelectedLinkText(e){var c,u,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=(u=(c=a.marks)==null?void 0:c.at(0))==null?void 0:u.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 c,u,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=(u=(c=this.editor)==null?void 0:c.view)==null?void 0:u.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&&le(e,r))){if(typeof e=="string"&&this.outputFormat==="text"){const n=new RegExp(`(${O.emojiPattern})`,"g");e=e==null?void 0:e.replace(n,'<emoji-component code="$1"></emoji-component>')}this.editor.commands.setContent(e,!1,{preserveWhitespace:"full"})}},destroyEditor(){this.editor.destroy()},insertPlainTextWithHardBreaks(e,t){const{tr:r}=e.state,{from:n,to:i}=e.state.selection;r.deleteRange(n,i);const s=t.split(/\r?\n/);let a=n;for(let c=0;c<s.length;c++)c>0&&(r.insert(a,e.state.schema.nodes.hardBreak.create()),a++),r.insertText(s[c],a),a+=s[c].length;e.dispatch(r)},shouldPreserveLineBreaks(e,t){return this.pasteRichText?!t&&e&&this.hasBlankLines(e):!!e},processPasteData(e,t,r){if(this.shouldPreserveLineBreaks(t,r))return this.insertPlainTextWithHardBreaks(e,t),!0;if(this.shouldHandlePreformattedHTML(r)){const n=this.extractPreformattedText(r);if(n&&n.includes(`
3
+ \`\`\``}}).configure({HTMLAttributes:{class:"d-rich-text-editor__code-block"}})),this.allowInlineImages&&e.push(Ve),(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,parseOptions:{preserveWhitespace:"full"},editorProps:{attributes:{...this.inputAttrs,class:this.inputClass},handleKeyDown:(e,t)=>{if(!this.preventTyping)return!1;const r=["Backspace"];return!this.allowLineBreaks&&!t.shiftKey&&r.push("Enter"),!r.includes(t.key)},handlePaste:(e,t)=>{const r=t.clipboardData||window.clipboardData,n=r.getData("text/plain"),i=r.getData("text/html");return this.processPasteData(e,n,i)},transformPastedHTML(e){return e.replace(/(<\/\w+>)((<br \/>)+)/g,"$2$3$1")}}}),this.addEditorListeners()},bubbleMenuShouldShow({editor:e}){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=C.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&&ce(e,r))){if(typeof e=="string"&&this.outputFormat==="text"){const n=new RegExp(`(${O.emojiPattern})`,"g");e=e==null?void 0:e.replace(n,'<emoji-component code="$1"></emoji-component>')}this.editor.commands.setContent(e,!1,{preserveWhitespace:"full"})}},destroyEditor(){this.editor.destroy()},insertPlainTextWithHardBreaks(e,t){const{tr:r}=e.state,{from:n,to:i}=e.state.selection;r.deleteRange(n,i);const s=t.split(/\r?\n/);let a=n;for(let c=0;c<s.length;c++)c>0&&(r.insert(a,e.state.schema.nodes.hardBreak.create()),a++),r.insertText(s[c],a),a+=s[c].length;e.dispatch(r)},shouldPreserveLineBreaks(e,t){return this.pasteRichText?!t&&e&&this.hasBlankLines(e):!!e},processPasteData(e,t,r){if(this.shouldPreserveLineBreaks(t,r))return this.insertPlainTextWithHardBreaks(e,t),!0;if(this.shouldHandlePreformattedHTML(r)){const n=this.extractPreformattedText(r);if(n&&n.includes(`
4
4
  `))return this.insertPlainTextWithHardBreaks(e,n),!0}return!1},shouldHandlePreformattedHTML(e){return this.pasteRichText&&e&&this.containsPreformattedContent(e)},containsPreformattedContent(e){const t=document.createElement("div");t.innerHTML=e;const r=t.querySelectorAll("*");for(const n of r)if(this.hasPreWhitespace(n)&&this.hasLineBreaks(n))return!0;return!1},hasPreWhitespace(e){const t=e.getAttribute("style")||"",r=e.style.whiteSpace||"",n=r==="pre"||r==="pre-wrap",i=t.includes("white-space: pre");return n||i},hasLineBreaks(e){return e.textContent&&e.textContent.includes(`
5
5
  `)},hasBlankLines(e){return e.includes(`
6
6
 
7
7
  `)||/\n\s*\n/.test(e)},extractPreformattedText(e){const t=document.createElement("div");return t.innerHTML=e,this.walkAndExtractText(t)},walkAndExtractText(e){let t="";if(e.nodeType===Node.TEXT_NODE)t+=e.textContent;else if(e.nodeType===Node.ELEMENT_NODE)if(this.hasPreWhitespace(e))t+=e.textContent;else for(const r of e.childNodes)t+=this.walkAndExtractText(r);return t},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:`
8
8
  `});this.$emit("text-input",n)},addEditorListeners(){this.editor.on("create",()=>{this.triggerInputChangeEvents()}),this.editor.on("update",()=>{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:`
9
- `})}},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()}}},_t={class:"d-popover__dialog"};function kt(e,t,r,n,i,s){const a=o.resolveComponent("dt-button"),c=o.resolveComponent("dt-stack"),u=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(u,{key:0,editor:i.editor,"should-show":s.bubbleMenuShouldShow,"tippy-options":i.tippyOptions,style:{visibility:"visible"}},{default:o.withCtx(()=>[o.createElementVNode("div",_t,[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(o.toDisplayString(i.i18n.$t("DIALTONE_RICH_TEXT_EDITOR_EDIT_BUTTON_LABEL")),1)]),_:1},8,["onClick"]),o.createVNode(a,{kind:"muted",importance:"clear",onClick:s.openLink},{default:o.withCtx(()=>[o.createTextVNode(o.toDisplayString(i.i18n.$t("DIALTONE_RICH_TEXT_EDITOR_OPEN_LINK_BUTTON_LABEL")),1)]),_:1},8,["onClick"]),o.createVNode(a,{kind:"danger",importance:"clear",onClick:s.removeLink},{default:o.withCtx(()=>[o.createTextVNode(o.toDisplayString(i.i18n.$t("DIALTONE_RICH_TEXT_EDITOR_REMOVE_BUTTON_LABEL")),1)]),_: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 wt=h._(gt,[["render",kt]]);exports.default=wt;
9
+ `})}},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()}}},_t={class:"d-popover__dialog"};function kt(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",_t,[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(o.toDisplayString(i.i18n.$t("DIALTONE_RICH_TEXT_EDITOR_EDIT_BUTTON_LABEL")),1)]),_:1},8,["onClick"]),o.createVNode(a,{kind:"muted",importance:"clear",onClick:s.openLink},{default:o.withCtx(()=>[o.createTextVNode(o.toDisplayString(i.i18n.$t("DIALTONE_RICH_TEXT_EDITOR_OPEN_LINK_BUTTON_LABEL")),1)]),_:1},8,["onClick"]),o.createVNode(a,{kind:"danger",importance:"clear",onClick:s.removeLink},{default:o.withCtx(()=>[o.createTextVNode(o.toDisplayString(i.i18n.$t("DIALTONE_RICH_TEXT_EDITOR_REMOVE_BUTTON_LABEL")),1)]),_: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 wt=h._(gt,[["render",kt]]);exports.default=wt;
10
10
  //# sourceMappingURL=rich-text-editor.cjs.map