@dialpad/dialtone-vue 3.120.2 → 3.121.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dialtone-vue.cjs +2 -0
- package/dist/dialtone-vue.cjs.map +1 -1
- package/dist/dialtone-vue.js +2 -0
- package/dist/dialtone-vue.js.map +1 -1
- package/dist/lib/editor.cjs +2 -0
- package/dist/lib/editor.cjs.map +1 -1
- package/dist/lib/editor.js +2 -0
- package/dist/lib/editor.js.map +1 -1
- package/dist/lib/message-input.cjs +23 -3
- package/dist/lib/message-input.cjs.map +1 -1
- package/dist/lib/message-input.js +23 -3
- package/dist/lib/message-input.js.map +1 -1
- package/dist/lib/popover.cjs +2 -1
- package/dist/lib/popover.cjs.map +1 -1
- package/dist/lib/popover.js +2 -1
- package/dist/lib/popover.js.map +1 -1
- package/dist/lib/rich-text-editor.cjs +202 -17
- package/dist/lib/rich-text-editor.cjs.map +1 -1
- package/dist/lib/rich-text-editor.js +202 -17
- package/dist/lib/rich-text-editor.js.map +1 -1
- package/dist/types/components/rich_text_editor/channel_suggestion.d.ts +15 -0
- package/dist/types/components/rich_text_editor/channel_suggestion.d.ts.map +1 -0
- package/dist/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts +71 -0
- package/dist/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts.map +1 -0
- package/dist/types/components/rich_text_editor/extensions/channels/ChannelSuggestion.vue.d.ts +15 -0
- package/dist/types/components/rich_text_editor/extensions/channels/ChannelSuggestion.vue.d.ts.map +1 -0
- package/dist/types/components/rich_text_editor/extensions/channels/channel.d.ts +2 -0
- package/dist/types/components/rich_text_editor/extensions/channels/channel.d.ts.map +1 -0
- package/dist/types/components/rich_text_editor/extensions/channels/suggestion.d.ts +11 -0
- package/dist/types/components/rich_text_editor/extensions/channels/suggestion.d.ts.map +1 -0
- package/dist/types/components/rich_text_editor/rich_text_editor.vue.d.ts +31 -0
- package/dist/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/message_input/message_input.vue.d.ts +31 -0
- package/dist/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/dialtone-vue.cjs
CHANGED
|
@@ -119,6 +119,8 @@ require("@tiptap/core");
|
|
|
119
119
|
require("@tiptap/pm/state");
|
|
120
120
|
require("@tiptap/suggestion");
|
|
121
121
|
require("@tiptap/extension-mention");
|
|
122
|
+
require("@dialpad/dialtone-icons/vue3/hash");
|
|
123
|
+
require("@dialpad/dialtone-icons/vue3/lock");
|
|
122
124
|
exports.DEFAULT_VALIDATION_MESSAGE_TYPE = common_constants.DEFAULT_VALIDATION_MESSAGE_TYPE;
|
|
123
125
|
exports.DESCRIPTION_SIZE_TYPES = common_constants.DESCRIPTION_SIZE_TYPES;
|
|
124
126
|
exports.VALIDATION_MESSAGE_TYPES = common_constants.VALIDATION_MESSAGE_TYPES;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialtone-vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dialtone-vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/dialtone-vue.js
CHANGED
|
@@ -117,6 +117,8 @@ import "@tiptap/core";
|
|
|
117
117
|
import "@tiptap/pm/state";
|
|
118
118
|
import "@tiptap/suggestion";
|
|
119
119
|
import "@tiptap/extension-mention";
|
|
120
|
+
import "@dialpad/dialtone-icons/vue3/hash";
|
|
121
|
+
import "@dialpad/dialtone-icons/vue3/lock";
|
|
120
122
|
export {
|
|
121
123
|
ARROW_KEYS,
|
|
122
124
|
AVATAR_COLORS,
|
package/dist/dialtone-vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialtone-vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dialtone-vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/lib/editor.cjs
CHANGED
|
@@ -48,6 +48,8 @@ require("./link.cjs");
|
|
|
48
48
|
require("../chunks/link_constants-Huj7D_hm.js");
|
|
49
49
|
require("./avatar.cjs");
|
|
50
50
|
require("./presence.cjs");
|
|
51
|
+
require("@dialpad/dialtone-icons/vue3/hash");
|
|
52
|
+
require("@dialpad/dialtone-icons/vue3/lock");
|
|
51
53
|
require("../chunks/stack_constants-SMzMWnAQ.js");
|
|
52
54
|
require("../chunks/popover_constants-JwBF9h1Z.js");
|
|
53
55
|
require("../chunks/modal-VgxXAQFP.js");
|
package/dist/lib/editor.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.cjs","sources":["../../recipes/conversation_view/editor/editor_constants.js","../../recipes/conversation_view/editor/editor.vue"],"sourcesContent":["export const EDITOR_SUPPORTED_LINK_PROTOCOLS = [\n /^https?:\\/\\//,\n /^http?:\\/\\//,\n /^ftp?:\\/\\//,\n /^ftps?:\\/\\//,\n /^ftps?:\\/\\//,\n /mailto:([^?]*)/,\n];\n\nexport const EDITOR_DEFAULT_LINK_PREFIX = 'https://';\n\nexport default {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n};\n","<!-- eslint-disable vue/no-restricted-class -->\n<template>\n <div\n data-qa=\"dt-editor\"\n role=\"presentation\"\n class=\"d-d-flex d-fd-column\"\n @click=\"$refs.richTextEditor.focusEditor()\"\n >\n <!-- Section for the top UI -->\n <dt-stack\n direction=\"row\"\n gap=\"450\"\n class=\"d-p8 dt-editor--top-bar-background\"\n >\n <dt-stack\n v-for=\"buttonGroup in buttonGroups\"\n :key=\"buttonGroup.key\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-tooltip\n v-for=\"button in buttonGroup.buttonGroup\"\n :key=\"`${buttonGroup.key}-${JSON.stringify(button.selector)}`\"\n :message=\"button.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :data-qa=\"button.dataQA\"\n importance=\"clear\"\n kind=\"muted\"\n :active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n size=\"xs\"\n :aria-label=\"button.tooltipMessage\"\n :class=\"{ 'd-btn--icon-only': !button.label }\"\n @click=\"button.onClick()\"\n >\n <template #icon>\n <dt-icon\n :name=\"button.iconName\"\n size=\"200\"\n />\n </template>\n {{ button?.label }}\n </dt-button>\n </template>\n </dt-tooltip>\n <div class=\"dt-editor--button-group-divider\" />\n </dt-stack>\n <dt-stack\n v-if=\"linkButton.showBtn\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-popover\n :open=\"showLinkInput\"\n placement=\"bottom-start\"\n :visually-hidden-close=\"true\"\n :visually-hidden-close-label=\"'Close link input popover'\"\n data-qa=\"dt-editor-link-input-popover\"\n :show-close-button=\"false\"\n @click=\"onInputFocus\"\n @click.stop=\"onInputFocus\"\n @opened=\"updateInput\"\n >\n <template #anchor>\n <dt-tooltip\n :key=\"linkButton.key\"\n :message=\"linkButton.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :data-qa=\"linkButton.dataQA\"\n importance=\"clear\"\n kind=\"muted\"\n class=\"d-ol-none\"\n :active=\"$refs.richTextEditor?.editor?.isActive(linkButton.selector)\"\n size=\"xs\"\n :aria-label=\"linkButton.tooltipMessage\"\n @click=\"linkButton.onClick()\"\n >\n <template #icon>\n <dt-icon\n :name=\"linkButton.iconName\"\n size=\"200\"\n class=\"d-fw-bold\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n\n <template #content>\n <span\n v-if=\"showAddLink.setLinkTitle.length > 0\"\n >\n {{ showAddLink.setLinkTitle }}\n </span>\n <dt-input\n v-model=\"linkInput\"\n :input-aria-label=\"showAddLink.setLinkInputAriaLabel\"\n data-qa=\"dt-editor-link-input\"\n :placeholder=\"setLinkPlaceholder\"\n input-wrapper-class=\"d-bgc-black-100 d-mt6 d-bar5 d-ba d-baw1 d-bc-black-300 d-py2 d-ol-none\"\n @click=\"onInputFocus\"\n @click.stop=\"onInputFocus\"\n @focus=\"onInputFocus\"\n @keydown.enter=\"setLink\"\n />\n </template>\n <template #footerContent>\n <div class=\"d-ml8 d-mr12\">\n <dt-button\n class=\"d-mx2\"\n :aria-label=\"removeLinkButton.ariaLabel\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n data-qa=\"dt-editor-remove-link-btn\"\n @click=\"removeLink\"\n >\n {{ removeLinkButton.label }}\n </dt-button>\n <dt-button\n class=\"d-mx2\"\n :aria-label=\"cancelSetLinkButton.ariaLabel\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n data-qa=\"dt-editor-set-link-cancel-btn\"\n @click=\"closeLinkInput\"\n >\n {{ cancelSetLinkButton.label }}\n </dt-button>\n <dt-button\n class=\"d-mx2\"\n size=\"sm\"\n :aria-label=\"confirmSetLinkButton.ariaLabel\"\n data-qa=\"dt-editor-set-link-confirm-btn\"\n @click=\"setLink\"\n >\n {{ confirmSetLinkButton.label }}\n </dt-button>\n </div>\n </template>\n </dt-popover>\n </dt-stack>\n </dt-stack>\n\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n class=\"d-of-auto d-mx16 d-mt8 d-mb16 d-c-text\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n data-qa=\"dt-rich-text-editor\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"`d-ml16 d-ol-none d-my6 ${inputClass}`\"\n :output-format=\"htmlOutputFormat\"\n :auto-focus=\"autoFocus\"\n :placeholder=\"placeholder\"\n :allow-line-breaks=\"true\"\n :link=\"false\"\n v-bind=\"$attrs\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @input=\"onInput($event)\"\n />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n} from './editor_constants.js';\nimport { DtIcon } from '@/components/icon';\nimport { DtButton } from '@/components/button';\nimport { DtPopover } from '@/components/popover';\nimport { DtStack } from '@/components/stack';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\n\nexport default {\n name: 'DtRecipeEditor',\n\n components: {\n DtRichTextEditor,\n DtButton,\n DtIcon,\n DtPopover,\n DtStack,\n DtInput,\n DtTooltip,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n value: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n /**\n * Confirm set link button defaults.\n */\n confirmSetLinkButton: {\n type: Object,\n default: () => ({ label: 'Confirm', ariaLabel: 'Confirm set link' }),\n },\n\n /**\n * Remove link button defaults.\n */\n removeLinkButton: {\n type: Object,\n default: () => ({ label: 'Remove', ariaLabel: 'Remove link' }),\n },\n\n /**\n * Cancel set link button defaults.\n */\n cancelSetLinkButton: {\n type: Object,\n default: () => ({ label: 'Cancel', ariaLabel: 'Cancel set link' }),\n },\n\n /**\n * Placeholder text for the set link input field\n */\n setLinkPlaceholder: {\n type: String,\n default: '',\n },\n\n /**\n * Show button to render text as bold\n */\n showBoldButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render text in italics\n */\n showItalicsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to underline text\n */\n showUnderlineButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to strike text\n */\n showStrikeButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render list items\n */\n showListItemsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render ordered list items\n */\n showOrderedListButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the left\n */\n showAlignLeftButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the center\n */\n showAlignCenterButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the right\n */\n showAlignRightButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to justify text\n */\n showAlignJustifyButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add quote format to text\n */\n showQuoteButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add code block\n */\n showCodeBlockButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to handle quick replies\n */\n showQuickRepliesButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show add link default config.\n */\n showAddLink: {\n type: Object,\n default: () => ({\n showAddLinkButton: true,\n setLinkTitle: 'Add a link',\n setLinkInputAriaLabel: 'Input field to add link',\n }),\n },\n },\n\n emits: [\n /**\n * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n\n /**\n * Quick replies button\n * pressed event\n * @event quick-replies-click\n */\n 'quick-replies-click',\n ],\n\n data () {\n return {\n internalInputValue: this.value, // internal input content\n hasFocus: false,\n\n linkOptions: {\n class: 'd-link d-c-text d-d-inline-block',\n },\n\n showLinkInput: false,\n linkInput: '',\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n htmlOutputFormat () {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS[2];\n },\n\n showingTextFormatButtons () {\n return this.showBoldButton || this.showItalicsButton || this.showStrikeButton || this.showUnderlineButton;\n },\n\n showingAlignmentButtons () {\n return this.showAlignLeftButton || this.showAlignCenterButton ||\n this.showAlignRightButton || this.showAlignJustifyButton;\n },\n\n showingListButtons () {\n return this.showListItemsButton || this.showOrderedListButton;\n },\n\n buttonGroups () {\n const individualButtonStacks = this.individualButtons.map(buttonData => ({\n key: buttonData.selector,\n buttonGroup: [buttonData],\n }));\n return [\n { key: 'new', buttonGroup: this.newButtons },\n { key: 'format', buttonGroup: this.textFormatButtons },\n { key: 'alignment', buttonGroup: this.alignmentButtons },\n { key: 'list', buttonGroup: this.listButtons },\n ...individualButtonStacks,\n ].filter(buttonGroupData => buttonGroupData.buttonGroup.length > 0);\n },\n\n newButtons () {\n return [\n { showBtn: this.showQuickRepliesButton, label: 'Quick reply', selector: 'quickReplies', iconName: 'lightning-bolt', dataQA: 'dt-editor-quick-replies-btn', tooltipMessage: 'Quick Reply', onClick: this.onQuickRepliesClick },\n ].filter(button => button.showBtn);\n },\n\n textFormatButtons () {\n return [\n { showBtn: this.showBoldButton, selector: 'bold', iconName: 'bold', dataQA: 'dt-editor-bold-btn', tooltipMessage: 'Bold', onClick: this.onBoldTextToggle },\n { showBtn: this.showItalicsButton, selector: 'italic', iconName: 'italic', dataQA: 'dt-editor-italics-btn', tooltipMessage: 'Italics', onClick: this.onItalicTextToggle },\n { showBtn: this.showUnderlineButton, selector: 'underline', iconName: 'underline', dataQA: 'dt-editor-underline-btn', tooltipMessage: 'Underline', onClick: this.onUnderlineTextToggle },\n { showBtn: this.showStrikeButton, selector: 'strike', iconName: 'strikethrough', dataQA: 'dt-editor-strike-btn', tooltipMessage: 'Strike', onClick: this.onStrikethroughTextToggle },\n ].filter(button => button.showBtn);\n },\n\n alignmentButtons () {\n return [\n { showBtn: this.showAlignLeftButton, selector: { textAlign: 'left' }, iconName: 'align-left', dataQA: 'dt-editor-align-left-btn', tooltipMessage: 'Align Left', onClick: () => this.onTextAlign('left') },\n { showBtn: this.showAlignCenterButton, selector: { textAlign: 'center' }, iconName: 'align-center', dataQA: 'dt-editor-align-center-btn', tooltipMessage: 'Align Center', onClick: () => this.onTextAlign('center') },\n { showBtn: this.showAlignRightButton, selector: { textAlign: 'right' }, iconName: 'align-right', dataQA: 'dt-editor-align-right-btn', tooltipMessage: 'Align Right', onClick: () => this.onTextAlign('right') },\n { showBtn: this.showAlignJustifyButton, selector: { textAlign: 'justify' }, iconName: 'align-justify', dataQA: 'dt-editor-align-justify-btn', tooltipMessage: 'Align Justify', onClick: () => this.onTextAlign('justify') },\n ].filter(button => button.showBtn);\n },\n\n listButtons () {\n return [\n { showBtn: this.showListItemsButton, selector: 'bulletList', iconName: 'list-bullet', dataQA: 'dt-editor-list-items-btn', tooltipMessage: 'Bullet List', onClick: this.onBulletListToggle },\n { showBtn: this.showOrderedListButton, selector: 'orderedList', iconName: 'list-ordered', dataQA: 'dt-editor-ordered-list-items-btn', tooltipMessage: 'Ordered List', onClick: this.onOrderedListToggle },\n ].filter(button => button.showBtn);\n },\n\n individualButtons () {\n return [\n { showBtn: this.showQuoteButton, selector: 'blockquote', iconName: 'quote', dataQA: 'dt-editor-blockquote-btn', tooltipMessage: 'Quote', onClick: this.onBlockquoteToggle },\n { showBtn: this.showCodeBlockButton, selector: 'codeBlock', iconName: 'code-block', dataQA: 'dt-editor-code-block-btn', tooltipMessage: 'Code', onClick: this.onCodeBlockToggle },\n ].filter(button => button.showBtn);\n },\n\n linkButton () {\n return { showBtn: this.showAddLink.showAddLinkButton, selector: 'link', iconName: 'link-2', dataQA: 'dt-editor-add-link-btn', tooltipMessage: 'Link', onClick: this.openLinkInput };\n },\n },\n\n watch: {\n value (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n onInputFocus (event) {\n event?.stopPropagation();\n },\n\n removeLink () {\n this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run();\n this.closeLinkInput();\n },\n\n setLink (event) {\n const editor = this.$refs.richTextEditor?.editor;\n event?.preventDefault();\n event?.stopPropagation();\n\n if (!this.linkInput) {\n // If link text is set to empty string,\n // remove any existing links.\n this.removeLink();\n return;\n }\n\n // Check if input matches any of the supported link formats\n const prefix = EDITOR_SUPPORTED_LINK_PROTOCOLS.find(prefixRegex => prefixRegex.test(this.linkInput));\n\n if (!prefix) {\n // If no matching pattern is found, prepend default prefix\n this.linkInput = `${EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`;\n }\n\n const selection = editor?.view?.state?.selection;\n\n if (selection.anchor === selection.head) {\n // If no text has been selected, manually insert the link text.\n // Do not rely on link options set through DtRichTextEditor\n // component, because they clash with these and cause issues.\n editor\n .chain()\n .focus()\n .insertContentAt(\n selection.anchor,\n `<a class=\"${this.linkOptions.class}\" href=${this.linkInput}>${this.linkInput}</a>`,\n )\n .run();\n } else {\n // Set or edit the link\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: this.linkInput, class: this.linkOptions.class })\n .run();\n }\n\n this.closeLinkInput();\n },\n\n openLinkInput () {\n this.showLinkInput = true;\n },\n\n updateInput (openedInput) {\n if (!openedInput) {\n return this.closeLinkInput();\n }\n this.linkInput = this.$refs.richTextEditor?.editor?.getAttributes('link')?.href;\n },\n\n closeLinkInput () {\n this.showLinkInput = false;\n this.linkInput = '';\n this.$refs.richTextEditor.editor?.chain().focus();\n },\n\n onBoldTextToggle () {\n this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run();\n },\n\n onItalicTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run();\n },\n\n onUnderlineTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run();\n },\n\n onStrikethroughTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run();\n },\n\n onTextAlign (alignment) {\n if (this.$refs.richTextEditor?.editor?.isActive({ textAlign: alignment })) {\n // If this alignment type is already set here, unset it\n return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();\n }\n this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(alignment).run();\n },\n\n onBulletListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run();\n },\n\n onOrderedListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run();\n },\n\n onCodeBlockToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run();\n },\n\n onQuickRepliesClick () {\n this.$emit('quick-replies-click');\n },\n\n onBlockquoteToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().run();\n },\n\n onFocus (event) {\n this.hasFocus = true;\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n },\n\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-editor--top-bar-background {\n background-color: var(--dt-color-surface-secondary);\n}\n\n.dt-editor--button-group-divider {\n margin-left: var(--dt-space-400);\n height: calc(var(--dt-size-550) + var(--dt-size-300));\n width: var(--dt-size-100);\n background: var(--dt-color-border-subtle);\n}\n</style>\n"],"names":["DtRichTextEditor","DtButton","DtIcon","DtPopover","DtStack","DtInput","DtTooltip","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","RICH_TEXT_EDITOR_OUTPUT_FORMATS","editor","_createElementVNode","_createElementBlock","_createVNode","_Fragment","_renderList","_createBlock","_openBlock","_normalizeClass","_toDisplayString","_createTextVNode","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,kCAAkC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,6BAA6B;AC0L1C,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EAEN,YAAY;AAAA,IACV,kBAAAA,mBAAgB;AAAA,IAChB,UAAAC,WAAQ;AAAA,IACR,QAAAC,SAAM;AAAA,IACN,WAAAC,YAAS;AAAA,IACT,SAAAC,UAAO;AAAA,IACP,SAAAC,UAAO;AAAA,IACP,WAAAC,YAAS;AAAA,EACV;AAAA,EAED,QAAQ,CAAE;AAAA,EAEV,cAAc;AAAA,EAEd,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaD,WAAW;AAAA,MACT,MAAM,CAAC,SAAS,QAAQ,MAAM;AAAA,MAC9B,SAAS;AAAA,MACT,UAAW,WAAW;AACpB,YAAI,OAAO,cAAc,UAAU;AACjC,iBAAOC,mBAAgC,iCAAC,SAAS,SAAS;AAAA,QAC5D;AACA,eAAO;AAAA,MACR;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,sBAAsB;AAAA,MACpB,MAAM;AAAA,MACN,SAAS,OAAO,EAAE,OAAO,WAAW,WAAW,mBAAmB;AAAA,IACnE;AAAA;AAAA;AAAA;AAAA,IAKD,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS,OAAO,EAAE,OAAO,UAAU,WAAW,cAAc;AAAA,IAC7D;AAAA;AAAA;AAAA;AAAA,IAKD,qBAAqB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS,OAAO,EAAE,OAAO,UAAU,WAAW,kBAAkB;AAAA,IACjE;AAAA;AAAA;AAAA;AAAA,IAKD,oBAAoB;AAAA,MAClB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,qBAAqB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,qBAAqB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,uBAAuB;AAAA,MACrB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,qBAAqB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,uBAAuB;AAAA,MACrB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,sBAAsB;AAAA,MACpB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,wBAAwB;AAAA,MACtB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,qBAAqB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,wBAAwB;AAAA,MACtB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS,OAAO;AAAA,QACd,mBAAmB;AAAA,QACnB,cAAc;AAAA,QACd,uBAAuB;AAAA,MACzB;AAAA,IACD;AAAA,EACF;AAAA,EAED,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA,EACD;AAAA,EAED,OAAQ;AACN,WAAO;AAAA,MACL,oBAAoB,KAAK;AAAA;AAAA,MACzB,UAAU;AAAA,MAEV,aAAa;AAAA,QACX,OAAO;AAAA,MACR;AAAA,MAED,eAAe;AAAA,MACf,WAAW;AAAA;EAEd;AAAA,EAED,UAAU;AAAA,IACR,cAAe;AACb,aAAO,KAAK,mBAAmB;AAAA,IAChC;AAAA,IAED,mBAAoB;AAClB,aAAOC,mBAAAA,gCAAgC,CAAC;AAAA,IACzC;AAAA,IAED,2BAA4B;AAC1B,aAAO,KAAK,kBAAkB,KAAK,qBAAqB,KAAK,oBAAoB,KAAK;AAAA,IACvF;AAAA,IAED,0BAA2B;AACzB,aAAO,KAAK,uBAAuB,KAAK,yBACpC,KAAK,wBAAwB,KAAK;AAAA,IACvC;AAAA,IAED,qBAAsB;AACpB,aAAO,KAAK,uBAAuB,KAAK;AAAA,IACzC;AAAA,IAED,eAAgB;AACd,YAAM,yBAAyB,KAAK,kBAAkB,IAAI,iBAAe;AAAA,QACvE,KAAK,WAAW;AAAA,QAChB,aAAa,CAAC,UAAU;AAAA,MACzB,EAAC;AACF,aAAO;AAAA,QACL,EAAE,KAAK,OAAO,aAAa,KAAK,WAAY;AAAA,QAC5C,EAAE,KAAK,UAAU,aAAa,KAAK,kBAAmB;AAAA,QACtD,EAAE,KAAK,aAAa,aAAa,KAAK,iBAAkB;AAAA,QACxD,EAAE,KAAK,QAAQ,aAAa,KAAK,YAAa;AAAA,QAC9C,GAAG;AAAA,MACL,EAAE,OAAO,qBAAmB,gBAAgB,YAAY,SAAS,CAAC;AAAA,IACnE;AAAA,IAED,aAAc;AACZ,aAAO;AAAA,QACL,EAAE,SAAS,KAAK,wBAAwB,OAAO,eAAe,UAAU,gBAAgB,UAAU,kBAAkB,QAAQ,+BAA+B,gBAAgB,eAAe,SAAS,KAAK,oBAAqB;AAAA,MAC9N,EAAC,OAAO,YAAU,OAAO,OAAO;AAAA,IAClC;AAAA,IAED,oBAAqB;AACnB,aAAO;AAAA,QACL,EAAE,SAAS,KAAK,gBAAgB,UAAU,QAAQ,UAAU,QAAQ,QAAQ,sBAAsB,gBAAgB,QAAQ,SAAS,KAAK,iBAAkB;AAAA,QAC1J,EAAE,SAAS,KAAK,mBAAmB,UAAU,UAAU,UAAU,UAAU,QAAQ,yBAAyB,gBAAgB,WAAW,SAAS,KAAK,mBAAoB;AAAA,QACzK,EAAE,SAAS,KAAK,qBAAqB,UAAU,aAAa,UAAU,aAAa,QAAQ,2BAA2B,gBAAgB,aAAa,SAAS,KAAK,sBAAuB;AAAA,QACxL,EAAE,SAAS,KAAK,kBAAkB,UAAU,UAAU,UAAU,iBAAiB,QAAQ,wBAAwB,gBAAgB,UAAU,SAAS,KAAK,0BAA2B;AAAA,MACrL,EAAC,OAAO,YAAU,OAAO,OAAO;AAAA,IAClC;AAAA,IAED,mBAAoB;AAClB,aAAO;AAAA,QACL,EAAE,SAAS,KAAK,qBAAqB,UAAU,EAAE,WAAW,OAAQ,GAAE,UAAU,cAAc,QAAQ,4BAA4B,gBAAgB,cAAc,SAAS,MAAM,KAAK,YAAY,MAAM,EAAG;AAAA,QACzM,EAAE,SAAS,KAAK,uBAAuB,UAAU,EAAE,WAAW,SAAU,GAAE,UAAU,gBAAgB,QAAQ,8BAA8B,gBAAgB,gBAAgB,SAAS,MAAM,KAAK,YAAY,QAAQ,EAAG;AAAA,QACrN,EAAE,SAAS,KAAK,sBAAsB,UAAU,EAAE,WAAW,QAAS,GAAE,UAAU,eAAe,QAAQ,6BAA6B,gBAAgB,eAAe,SAAS,MAAM,KAAK,YAAY,OAAO,EAAG;AAAA,QAC/M,EAAE,SAAS,KAAK,wBAAwB,UAAU,EAAE,WAAW,UAAW,GAAE,UAAU,iBAAiB,QAAQ,+BAA+B,gBAAgB,iBAAiB,SAAS,MAAM,KAAK,YAAY,SAAS,EAAG;AAAA,MAC5N,EAAC,OAAO,YAAU,OAAO,OAAO;AAAA,IAClC;AAAA,IAED,cAAe;AACb,aAAO;AAAA,QACL,EAAE,SAAS,KAAK,qBAAqB,UAAU,cAAc,UAAU,eAAe,QAAQ,4BAA4B,gBAAgB,eAAe,SAAS,KAAK,mBAAoB;AAAA,QAC3L,EAAE,SAAS,KAAK,uBAAuB,UAAU,eAAe,UAAU,gBAAgB,QAAQ,oCAAoC,gBAAgB,gBAAgB,SAAS,KAAK,oBAAqB;AAAA,MAC1M,EAAC,OAAO,YAAU,OAAO,OAAO;AAAA,IAClC;AAAA,IAED,oBAAqB;AACnB,aAAO;AAAA,QACL,EAAE,SAAS,KAAK,iBAAiB,UAAU,cAAc,UAAU,SAAS,QAAQ,4BAA4B,gBAAgB,SAAS,SAAS,KAAK,mBAAoB;AAAA,QAC3K,EAAE,SAAS,KAAK,qBAAqB,UAAU,aAAa,UAAU,cAAc,QAAQ,4BAA4B,gBAAgB,QAAQ,SAAS,KAAK,kBAAmB;AAAA,MAClL,EAAC,OAAO,YAAU,OAAO,OAAO;AAAA,IAClC;AAAA,IAED,aAAc;AACZ,aAAO,EAAE,SAAS,KAAK,YAAY,mBAAmB,UAAU,QAAQ,UAAU,UAAU,QAAQ,0BAA0B,gBAAgB,QAAQ,SAAS,KAAK;IACrK;AAAA,EACF;AAAA,EAED,OAAO;AAAA,IACL,MAAO,UAAU;AACf,WAAK,qBAAqB;AAAA,IAC3B;AAAA,EACF;AAAA,EAED,SAAS;AAAA,IACP,aAAc,OAAO;AACnB,qCAAO;AAAA,IACR;AAAA,IAED,aAAc;;AACZ,yCAAK,MAAM,mBAAX,mBAA2B,WAA3B,mBAAmC,YAAnC,mBAA4C,YAA5C,mBAAqD,gBAArD,mBAAkE;AAClE,WAAK,eAAc;AAAA,IACpB;AAAA,IAED,QAAS,OAAO;;AACd,YAAMC,WAAS,UAAK,MAAM,mBAAX,mBAA2B;AAC1C,qCAAO;AACP,qCAAO;AAEP,UAAI,CAAC,KAAK,WAAW;AAGnB,aAAK,WAAU;AACf;AAAA,MACF;AAGA,YAAM,SAAS,gCAAgC,KAAK,iBAAe,YAAY,KAAK,KAAK,SAAS,CAAC;AAEnG,UAAI,CAAC,QAAQ;AAEX,aAAK,YAAY,GAAG,0BAA0B,GAAG,KAAK,SAAS;AAAA,MACjE;AAEA,YAAM,aAAY,WAAAA,WAAA,gBAAAA,QAAQ,SAAR,mBAAc,UAAd,mBAAqB;AAEvC,UAAI,UAAU,WAAW,UAAU,MAAM;AAIvC,QAAAA,QACG,MAAM,EACN,MAAM,EACN;AAAA,UACC,UAAU;AAAA,UACV,aAAa,KAAK,YAAY,KAAK,UAAU,KAAK,SAAS,IAAI,KAAK,SAAS;AAAA,QAC/E,EACC;aACE;AAEL,QAAAA,QACG,MAAM,EACN,MAAM,EACN,gBAAgB,MAAM,EACtB,QAAQ,EAAE,MAAM,KAAK,WAAW,OAAO,KAAK,YAAY,OAAO,EAC/D;MACL;AAEA,WAAK,eAAc;AAAA,IACpB;AAAA,IAED,gBAAiB;AACf,WAAK,gBAAgB;AAAA,IACtB;AAAA,IAED,YAAa,aAAa;;AACxB,UAAI,CAAC,aAAa;AAChB,eAAO,KAAK;MACd;AACA,WAAK,aAAY,sBAAK,MAAM,mBAAX,mBAA2B,WAA3B,mBAAmC,cAAc,YAAjD,mBAA0D;AAAA,IAC5E;AAAA,IAED,iBAAkB;;AAChB,WAAK,gBAAgB;AACrB,WAAK,YAAY;AACjB,iBAAK,MAAM,eAAe,WAA1B,mBAAkC,QAAQ;AAAA,IAC3C;AAAA,IAED,mBAAoB;;AAClB,uBAAK,MAAM,mBAAX,mBAA2B,WAA3B,mBAAmC,QAAQ,QAAQ,aAAa;AAAA,IACjE;AAAA,IAED,qBAAsB;;AACpB,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,eAAe;AAAA,IAClE;AAAA,IAED,wBAAyB;;AACvB,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,kBAAkB;AAAA,IACrE;AAAA,IAED,4BAA6B;;AAC3B,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,eAAe;AAAA,IAClE;AAAA,IAED,YAAa,WAAW;;AACtB,WAAI,gBAAK,MAAM,mBAAX,mBAA2B,WAA3B,mBAAmC,SAAS,EAAE,WAAW,UAAU,IAAI;AAEzE,gBAAO,UAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,iBAAiB;AAAA,MAC5E;AACA,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,aAAa,WAAW;AAAA,IAC3E;AAAA,IAED,qBAAsB;;AACpB,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,mBAAmB;AAAA,IACtE;AAAA,IAED,sBAAuB;;AACrB,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,oBAAoB;AAAA,IACvE;AAAA,IAED,oBAAqB;;AACnB,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,kBAAkB;AAAA,IACrE;AAAA,IAED,sBAAuB;AACrB,WAAK,MAAM,qBAAqB;AAAA,IACjC;AAAA,IAED,qBAAsB;;AACpB,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,mBAAmB;AAAA,IACtE;AAAA,IAED,QAAS,OAAO;AACd,WAAK,WAAW;AAChB,WAAK,MAAM,SAAS,KAAK;AAAA,IAC1B;AAAA,IAED,OAAQ,OAAO;AACb,WAAK,WAAW;AAChB,WAAK,MAAM,QAAQ,KAAK;AAAA,IACzB;AAAA,IAED,QAAS,OAAO;AACd,WAAK,MAAM,SAAS,KAAK;AAAA,IAC1B;AAAA,EAEF;AACH;mBA5oBQC,oBAAAA,mBAA+C,OAAA,EAA1C,OAAM,qCAAiC,MAAA,EAAA;;AAkEnC,MAAA,aAAA,EAAA,OAAM,eAAc;;;;;;;;;0BA/GnCC,IA4KM,mBAAA,OAAA;AAAA,IA3KJ,WAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,SAAO,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,YAAA,KAAA,MAAM,eAAe,YAAW;AAAA;IAGxCC,IAAAA,YA4IW,qBAAA;AAAA,MA3IT,WAAU;AAAA,MACV,KAAI;AAAA,MACJ,OAAM;AAAA;2BAGJ,MAAmC;AAAA,8BADrCD,IAAAA,mBAkCWE,IAAA,UAAA,MAAAC,IAAAA,WAjCa,SAAY,cAAA,CAA3B,gBAAW;kCADpBC,IAkCW,YAAA,qBAAA;AAAA,YAhCR,KAAK,YAAY;AAAA,YAClB,WAAU;AAAA,YACV,KAAI;AAAA;iCAGF,MAAyC;AAAA,eAD3CC,cAAA,IAAA,GAAAL,IAAAA,mBA0BaE,IAzBM,UAAA,MAAAC,IAAAA,WAAA,YAAY,cAAtB,WAAM;wCADfC,IA0Ba,YAAA,uBAAA;AAAA,kBAxBV,KAAG,GAAK,YAAY,GAAG,IAAI,KAAK,UAAU,OAAO,QAAQ,CAAA;AAAA,kBACzD,SAAS,OAAO;AAAA,kBACjB,WAAU;AAAA;kBAEC,oBACT,MAiBY;;AAAA;AAAA,sBAjBZH,IAAAA,YAiBY,sBAAA;AAAA,wBAhBT,WAAS,OAAO;AAAA,wBACjB,YAAW;AAAA,wBACX,MAAK;AAAA,wBACJ,SAAQ,gBAAK,MAAC,mBAAN,mBAAsB,WAAtB,mBAA8B,SAAS,OAAO;AAAA,wBACvD,MAAK;AAAA,wBACJ,cAAY,OAAO;AAAA,wBACnB,OAAKK,IAAA,eAAA,EAAA,oBAAA,CAAyB,OAAO,MAAK,CAAA;AAAA,wBAC1C,SAAK,YAAE,OAAO;;wBAEJ,kBACT,MAGE;AAAA,0BAHFL,IAAAA,YAGE,oBAAA;AAAA,4BAFC,MAAM,OAAO;AAAA,4BACd,MAAK;AAAA;;6CAEE,MACX;AAAA,8CADW,MACXM,IAAA,gBAAG,iCAAQ,KAAK,GAAA,CAAA;AAAA;;;;;;;;cAItB;AAAA;;;;QAGM,SAAA,WAAW,4BADnBH,IAmGW,YAAA,qBAAA;AAAA;UAjGT,WAAU;AAAA,UACV,KAAI;AAAA;+BAEJ,MA6Fa;AAAA,YA7FbH,IAAAA,YA6Fa,uBAAA;AAAA,cA5FV,MAAM,MAAa;AAAA,cACpB,WAAU;AAAA,cACT,yBAAuB;AAAA,cACvB,+BAA6B;AAAA,cAC9B,WAAQ;AAAA,cACP,qBAAmB;AAAA,cACnB,SAAK;AAAA,gBAAE,SAAY;AAAA,kCACP,SAAY,cAAA,CAAA,MAAA,CAAA;AAAA;cACxB,UAAQ,SAAW;AAAA;cAET,oBACT,MAyBa;AAAA,kCAzBbG,IAyBa,YAAA,uBAAA;AAAA,kBAxBV,KAAK,SAAU,WAAC;AAAA,kBAChB,SAAS,SAAU,WAAC;AAAA,kBACrB,WAAU;AAAA;kBAEC,oBACT,MAiBY;;AAAA;AAAA,sBAjBZH,IAAAA,YAiBY,sBAAA;AAAA,wBAhBT,WAAS,SAAU,WAAC;AAAA,wBACrB,YAAW;AAAA,wBACX,MAAK;AAAA,wBACL,OAAM;AAAA,wBACL,SAAQ,gBAAK,MAAC,mBAAN,mBAAsB,WAAtB,mBAA8B,SAAS,SAAU,WAAC;AAAA,wBAC3D,MAAK;AAAA,wBACJ,cAAY,SAAU,WAAC;AAAA,wBACvB,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,YAAE,SAAU,WAAC,QAAO;AAAA;wBAEf,kBACT,MAIE;AAAA,0BAJFA,IAAAA,YAIE,oBAAA;AAAA,4BAHC,MAAM,SAAU,WAAC;AAAA,4BAClB,MAAK;AAAA,4BACL,OAAM;AAAA;;;;;;;;;cAQP,qBACT,MAIO;AAAA,gBAHC,OAAW,YAAC,aAAa,SAAM,sBADvCD,uBAIO,QAAA,YAAAO,oBADF,OAAW,YAAC,YAAY,GAAA,CAAA;gBAE7BN,IAAAA,YAUE,qBAAA;AAAA,8BATS,MAAS;AAAA,+EAAT,MAAS,YAAA;AAAA,kBACjB,oBAAkB,OAAW,YAAC;AAAA,kBAC/B,WAAQ;AAAA,kBACP,aAAa,OAAkB;AAAA,kBAChC,uBAAoB;AAAA,kBACnB,SAAK;AAAA,oBAAE,SAAY;AAAA,sCACP,SAAY,cAAA,CAAA,MAAA,CAAA;AAAA;kBACxB,SAAO,SAAY;AAAA,kBACnB,wBAAe,SAAO,SAAA,CAAA,OAAA,CAAA;AAAA;;cAGhB,2BACT,MAgCM;AAAA,gBAhCNF,IAAA,mBAgCM,OAhCN,YAgCM;AAAA,kBA/BJE,IAAAA,YAUY,sBAAA;AAAA,oBATV,OAAM;AAAA,oBACL,cAAY,OAAgB,iBAAC;AAAA,oBAC9B,YAAW;AAAA,oBACX,MAAK;AAAA,oBACL,MAAK;AAAA,oBACL,WAAQ;AAAA,oBACP,SAAO,SAAU;AAAA;yCAElB,MAA4B;AAAA,sBAAzBO,IAAA,gBAAAD,IAAA,gBAAA,OAAA,iBAAiB,KAAK,GAAA,CAAA;AAAA;;;kBAE3BN,IAAAA,YAUY,sBAAA;AAAA,oBATV,OAAM;AAAA,oBACL,cAAY,OAAmB,oBAAC;AAAA,oBACjC,YAAW;AAAA,oBACX,MAAK;AAAA,oBACL,MAAK;AAAA,oBACL,WAAQ;AAAA,oBACP,SAAO,SAAc;AAAA;yCAEtB,MAA+B;AAAA,sBAA5BO,IAAA,gBAAAD,IAAA,gBAAA,OAAA,oBAAoB,KAAK,GAAA,CAAA;AAAA;;;kBAE9BN,IAAAA,YAQY,sBAAA;AAAA,oBAPV,OAAM;AAAA,oBACN,MAAK;AAAA,oBACJ,cAAY,OAAoB,qBAAC;AAAA,oBAClC,WAAQ;AAAA,oBACP,SAAO,SAAO;AAAA;yCAEf,MAAgC;AAAA,sBAA7BO,IAAA,gBAAAD,IAAA,gBAAA,OAAA,qBAAqB,KAAK,GAAA,CAAA;AAAA;;;;;;;;;;;;;IASzCR,IAAAA,mBAqBM,OAAA;AAAA,MApBJ,OAAM;AAAA,MACL,0CAAuB,OAAS,UAAA,CAAA;AAAA;MAEjCE,IAAA,YAgBE,gCAhBFQ,eAgBE;AAAA,QAfA,KAAI;AAAA,oBACK,MAAkB;AAAA,qEAAlB,MAAkB,qBAAA;AAAA,QAC3B,WAAQ;AAAA,QACP,UAAU,OAAQ;AAAA,QAClB,oBAAkB,OAAc;AAAA,QAChC,yCAAuC,OAAU,UAAA;AAAA,QACjD,iBAAe,SAAgB;AAAA,QAC/B,cAAY,OAAS;AAAA,QACrB,aAAa,OAAW;AAAA,QACxB,qBAAmB;AAAA,QACnB,MAAM;AAAA,SACC,KAAM,QAAA;AAAA,QACb,SAAO,SAAO;AAAA,QACd,QAAM,SAAM;AAAA,QACZ,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,YAAE,SAAO,QAAC,MAAM;AAAA;;;;;;"}
|
|
1
|
+
{"version":3,"file":"editor.cjs","sources":["../../recipes/conversation_view/editor/editor_constants.js","../../recipes/conversation_view/editor/editor.vue"],"sourcesContent":["export const EDITOR_SUPPORTED_LINK_PROTOCOLS = [\n /^https?:\\/\\//,\n /^http?:\\/\\//,\n /^ftp?:\\/\\//,\n /^ftps?:\\/\\//,\n /^ftps?:\\/\\//,\n /mailto:([^?]*)/,\n];\n\nexport const EDITOR_DEFAULT_LINK_PREFIX = 'https://';\n\nexport default {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n};\n","<!-- eslint-disable vue/no-restricted-class -->\n<template>\n <div\n data-qa=\"dt-editor\"\n role=\"presentation\"\n class=\"d-d-flex d-fd-column\"\n @click=\"$refs.richTextEditor.focusEditor()\"\n >\n <!-- Section for the top UI -->\n <dt-stack\n direction=\"row\"\n gap=\"450\"\n class=\"d-p8 dt-editor--top-bar-background\"\n >\n <dt-stack\n v-for=\"buttonGroup in buttonGroups\"\n :key=\"buttonGroup.key\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-tooltip\n v-for=\"button in buttonGroup.buttonGroup\"\n :key=\"`${buttonGroup.key}-${JSON.stringify(button.selector)}`\"\n :message=\"button.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :data-qa=\"button.dataQA\"\n importance=\"clear\"\n kind=\"muted\"\n :active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n size=\"xs\"\n :aria-label=\"button.tooltipMessage\"\n :class=\"{ 'd-btn--icon-only': !button.label }\"\n @click=\"button.onClick()\"\n >\n <template #icon>\n <dt-icon\n :name=\"button.iconName\"\n size=\"200\"\n />\n </template>\n {{ button?.label }}\n </dt-button>\n </template>\n </dt-tooltip>\n <div class=\"dt-editor--button-group-divider\" />\n </dt-stack>\n <dt-stack\n v-if=\"linkButton.showBtn\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-popover\n :open=\"showLinkInput\"\n placement=\"bottom-start\"\n :visually-hidden-close=\"true\"\n :visually-hidden-close-label=\"'Close link input popover'\"\n data-qa=\"dt-editor-link-input-popover\"\n :show-close-button=\"false\"\n @click=\"onInputFocus\"\n @click.stop=\"onInputFocus\"\n @opened=\"updateInput\"\n >\n <template #anchor>\n <dt-tooltip\n :key=\"linkButton.key\"\n :message=\"linkButton.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :data-qa=\"linkButton.dataQA\"\n importance=\"clear\"\n kind=\"muted\"\n class=\"d-ol-none\"\n :active=\"$refs.richTextEditor?.editor?.isActive(linkButton.selector)\"\n size=\"xs\"\n :aria-label=\"linkButton.tooltipMessage\"\n @click=\"linkButton.onClick()\"\n >\n <template #icon>\n <dt-icon\n :name=\"linkButton.iconName\"\n size=\"200\"\n class=\"d-fw-bold\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n\n <template #content>\n <span\n v-if=\"showAddLink.setLinkTitle.length > 0\"\n >\n {{ showAddLink.setLinkTitle }}\n </span>\n <dt-input\n v-model=\"linkInput\"\n :input-aria-label=\"showAddLink.setLinkInputAriaLabel\"\n data-qa=\"dt-editor-link-input\"\n :placeholder=\"setLinkPlaceholder\"\n input-wrapper-class=\"d-bgc-black-100 d-mt6 d-bar5 d-ba d-baw1 d-bc-black-300 d-py2 d-ol-none\"\n @click=\"onInputFocus\"\n @click.stop=\"onInputFocus\"\n @focus=\"onInputFocus\"\n @keydown.enter=\"setLink\"\n />\n </template>\n <template #footerContent>\n <div class=\"d-ml8 d-mr12\">\n <dt-button\n class=\"d-mx2\"\n :aria-label=\"removeLinkButton.ariaLabel\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n data-qa=\"dt-editor-remove-link-btn\"\n @click=\"removeLink\"\n >\n {{ removeLinkButton.label }}\n </dt-button>\n <dt-button\n class=\"d-mx2\"\n :aria-label=\"cancelSetLinkButton.ariaLabel\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n data-qa=\"dt-editor-set-link-cancel-btn\"\n @click=\"closeLinkInput\"\n >\n {{ cancelSetLinkButton.label }}\n </dt-button>\n <dt-button\n class=\"d-mx2\"\n size=\"sm\"\n :aria-label=\"confirmSetLinkButton.ariaLabel\"\n data-qa=\"dt-editor-set-link-confirm-btn\"\n @click=\"setLink\"\n >\n {{ confirmSetLinkButton.label }}\n </dt-button>\n </div>\n </template>\n </dt-popover>\n </dt-stack>\n </dt-stack>\n\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n class=\"d-of-auto d-mx16 d-mt8 d-mb16 d-c-text\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n data-qa=\"dt-rich-text-editor\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"`d-ml16 d-ol-none d-my6 ${inputClass}`\"\n :output-format=\"htmlOutputFormat\"\n :auto-focus=\"autoFocus\"\n :placeholder=\"placeholder\"\n :allow-line-breaks=\"true\"\n :link=\"false\"\n v-bind=\"$attrs\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @input=\"onInput($event)\"\n />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n} from './editor_constants.js';\nimport { DtIcon } from '@/components/icon';\nimport { DtButton } from '@/components/button';\nimport { DtPopover } from '@/components/popover';\nimport { DtStack } from '@/components/stack';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\n\nexport default {\n name: 'DtRecipeEditor',\n\n components: {\n DtRichTextEditor,\n DtButton,\n DtIcon,\n DtPopover,\n DtStack,\n DtInput,\n DtTooltip,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n value: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n /**\n * Confirm set link button defaults.\n */\n confirmSetLinkButton: {\n type: Object,\n default: () => ({ label: 'Confirm', ariaLabel: 'Confirm set link' }),\n },\n\n /**\n * Remove link button defaults.\n */\n removeLinkButton: {\n type: Object,\n default: () => ({ label: 'Remove', ariaLabel: 'Remove link' }),\n },\n\n /**\n * Cancel set link button defaults.\n */\n cancelSetLinkButton: {\n type: Object,\n default: () => ({ label: 'Cancel', ariaLabel: 'Cancel set link' }),\n },\n\n /**\n * Placeholder text for the set link input field\n */\n setLinkPlaceholder: {\n type: String,\n default: '',\n },\n\n /**\n * Show button to render text as bold\n */\n showBoldButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render text in italics\n */\n showItalicsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to underline text\n */\n showUnderlineButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to strike text\n */\n showStrikeButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render list items\n */\n showListItemsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render ordered list items\n */\n showOrderedListButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the left\n */\n showAlignLeftButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the center\n */\n showAlignCenterButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the right\n */\n showAlignRightButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to justify text\n */\n showAlignJustifyButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add quote format to text\n */\n showQuoteButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add code block\n */\n showCodeBlockButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to handle quick replies\n */\n showQuickRepliesButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show add link default config.\n */\n showAddLink: {\n type: Object,\n default: () => ({\n showAddLinkButton: true,\n setLinkTitle: 'Add a link',\n setLinkInputAriaLabel: 'Input field to add link',\n }),\n },\n },\n\n emits: [\n /**\n * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n\n /**\n * Quick replies button\n * pressed event\n * @event quick-replies-click\n */\n 'quick-replies-click',\n ],\n\n data () {\n return {\n internalInputValue: this.value, // internal input content\n hasFocus: false,\n\n linkOptions: {\n class: 'd-link d-c-text d-d-inline-block',\n },\n\n showLinkInput: false,\n linkInput: '',\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n htmlOutputFormat () {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS[2];\n },\n\n showingTextFormatButtons () {\n return this.showBoldButton || this.showItalicsButton || this.showStrikeButton || this.showUnderlineButton;\n },\n\n showingAlignmentButtons () {\n return this.showAlignLeftButton || this.showAlignCenterButton ||\n this.showAlignRightButton || this.showAlignJustifyButton;\n },\n\n showingListButtons () {\n return this.showListItemsButton || this.showOrderedListButton;\n },\n\n buttonGroups () {\n const individualButtonStacks = this.individualButtons.map(buttonData => ({\n key: buttonData.selector,\n buttonGroup: [buttonData],\n }));\n return [\n { key: 'new', buttonGroup: this.newButtons },\n { key: 'format', buttonGroup: this.textFormatButtons },\n { key: 'alignment', buttonGroup: this.alignmentButtons },\n { key: 'list', buttonGroup: this.listButtons },\n ...individualButtonStacks,\n ].filter(buttonGroupData => buttonGroupData.buttonGroup.length > 0);\n },\n\n newButtons () {\n return [\n { showBtn: this.showQuickRepliesButton, label: 'Quick reply', selector: 'quickReplies', iconName: 'lightning-bolt', dataQA: 'dt-editor-quick-replies-btn', tooltipMessage: 'Quick Reply', onClick: this.onQuickRepliesClick },\n ].filter(button => button.showBtn);\n },\n\n textFormatButtons () {\n return [\n { showBtn: this.showBoldButton, selector: 'bold', iconName: 'bold', dataQA: 'dt-editor-bold-btn', tooltipMessage: 'Bold', onClick: this.onBoldTextToggle },\n { showBtn: this.showItalicsButton, selector: 'italic', iconName: 'italic', dataQA: 'dt-editor-italics-btn', tooltipMessage: 'Italics', onClick: this.onItalicTextToggle },\n { showBtn: this.showUnderlineButton, selector: 'underline', iconName: 'underline', dataQA: 'dt-editor-underline-btn', tooltipMessage: 'Underline', onClick: this.onUnderlineTextToggle },\n { showBtn: this.showStrikeButton, selector: 'strike', iconName: 'strikethrough', dataQA: 'dt-editor-strike-btn', tooltipMessage: 'Strike', onClick: this.onStrikethroughTextToggle },\n ].filter(button => button.showBtn);\n },\n\n alignmentButtons () {\n return [\n { showBtn: this.showAlignLeftButton, selector: { textAlign: 'left' }, iconName: 'align-left', dataQA: 'dt-editor-align-left-btn', tooltipMessage: 'Align Left', onClick: () => this.onTextAlign('left') },\n { showBtn: this.showAlignCenterButton, selector: { textAlign: 'center' }, iconName: 'align-center', dataQA: 'dt-editor-align-center-btn', tooltipMessage: 'Align Center', onClick: () => this.onTextAlign('center') },\n { showBtn: this.showAlignRightButton, selector: { textAlign: 'right' }, iconName: 'align-right', dataQA: 'dt-editor-align-right-btn', tooltipMessage: 'Align Right', onClick: () => this.onTextAlign('right') },\n { showBtn: this.showAlignJustifyButton, selector: { textAlign: 'justify' }, iconName: 'align-justify', dataQA: 'dt-editor-align-justify-btn', tooltipMessage: 'Align Justify', onClick: () => this.onTextAlign('justify') },\n ].filter(button => button.showBtn);\n },\n\n listButtons () {\n return [\n { showBtn: this.showListItemsButton, selector: 'bulletList', iconName: 'list-bullet', dataQA: 'dt-editor-list-items-btn', tooltipMessage: 'Bullet List', onClick: this.onBulletListToggle },\n { showBtn: this.showOrderedListButton, selector: 'orderedList', iconName: 'list-ordered', dataQA: 'dt-editor-ordered-list-items-btn', tooltipMessage: 'Ordered List', onClick: this.onOrderedListToggle },\n ].filter(button => button.showBtn);\n },\n\n individualButtons () {\n return [\n { showBtn: this.showQuoteButton, selector: 'blockquote', iconName: 'quote', dataQA: 'dt-editor-blockquote-btn', tooltipMessage: 'Quote', onClick: this.onBlockquoteToggle },\n { showBtn: this.showCodeBlockButton, selector: 'codeBlock', iconName: 'code-block', dataQA: 'dt-editor-code-block-btn', tooltipMessage: 'Code', onClick: this.onCodeBlockToggle },\n ].filter(button => button.showBtn);\n },\n\n linkButton () {\n return { showBtn: this.showAddLink.showAddLinkButton, selector: 'link', iconName: 'link-2', dataQA: 'dt-editor-add-link-btn', tooltipMessage: 'Link', onClick: this.openLinkInput };\n },\n },\n\n watch: {\n value (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n onInputFocus (event) {\n event?.stopPropagation();\n },\n\n removeLink () {\n this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run();\n this.closeLinkInput();\n },\n\n setLink (event) {\n const editor = this.$refs.richTextEditor?.editor;\n event?.preventDefault();\n event?.stopPropagation();\n\n if (!this.linkInput) {\n // If link text is set to empty string,\n // remove any existing links.\n this.removeLink();\n return;\n }\n\n // Check if input matches any of the supported link formats\n const prefix = EDITOR_SUPPORTED_LINK_PROTOCOLS.find(prefixRegex => prefixRegex.test(this.linkInput));\n\n if (!prefix) {\n // If no matching pattern is found, prepend default prefix\n this.linkInput = `${EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`;\n }\n\n const selection = editor?.view?.state?.selection;\n\n if (selection.anchor === selection.head) {\n // If no text has been selected, manually insert the link text.\n // Do not rely on link options set through DtRichTextEditor\n // component, because they clash with these and cause issues.\n editor\n .chain()\n .focus()\n .insertContentAt(\n selection.anchor,\n `<a class=\"${this.linkOptions.class}\" href=${this.linkInput}>${this.linkInput}</a>`,\n )\n .run();\n } else {\n // Set or edit the link\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: this.linkInput, class: this.linkOptions.class })\n .run();\n }\n\n this.closeLinkInput();\n },\n\n openLinkInput () {\n this.showLinkInput = true;\n },\n\n updateInput (openedInput) {\n if (!openedInput) {\n return this.closeLinkInput();\n }\n this.linkInput = this.$refs.richTextEditor?.editor?.getAttributes('link')?.href;\n },\n\n closeLinkInput () {\n this.showLinkInput = false;\n this.linkInput = '';\n this.$refs.richTextEditor.editor?.chain().focus();\n },\n\n onBoldTextToggle () {\n this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run();\n },\n\n onItalicTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run();\n },\n\n onUnderlineTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run();\n },\n\n onStrikethroughTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run();\n },\n\n onTextAlign (alignment) {\n if (this.$refs.richTextEditor?.editor?.isActive({ textAlign: alignment })) {\n // If this alignment type is already set here, unset it\n return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();\n }\n this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(alignment).run();\n },\n\n onBulletListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run();\n },\n\n onOrderedListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run();\n },\n\n onCodeBlockToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run();\n },\n\n onQuickRepliesClick () {\n this.$emit('quick-replies-click');\n },\n\n onBlockquoteToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().run();\n },\n\n onFocus (event) {\n this.hasFocus = true;\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n },\n\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-editor--top-bar-background {\n background-color: var(--dt-color-surface-secondary);\n}\n\n.dt-editor--button-group-divider {\n margin-left: var(--dt-space-400);\n height: calc(var(--dt-size-550) + var(--dt-size-300));\n width: var(--dt-size-100);\n background: var(--dt-color-border-subtle);\n}\n</style>\n"],"names":["DtRichTextEditor","DtButton","DtIcon","DtPopover","DtStack","DtInput","DtTooltip","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","RICH_TEXT_EDITOR_OUTPUT_FORMATS","editor","_createElementVNode","_createElementBlock","_createVNode","_Fragment","_renderList","_createBlock","_openBlock","_normalizeClass","_toDisplayString","_createTextVNode","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,kCAAkC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,6BAA6B;AC0L1C,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EAEN,YAAY;AAAA,IACV,kBAAAA,mBAAgB;AAAA,IAChB,UAAAC,WAAQ;AAAA,IACR,QAAAC,SAAM;AAAA,IACN,WAAAC,YAAS;AAAA,IACT,SAAAC,UAAO;AAAA,IACP,SAAAC,UAAO;AAAA,IACP,WAAAC,YAAS;AAAA,EACV;AAAA,EAED,QAAQ,CAAE;AAAA,EAEV,cAAc;AAAA,EAEd,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaD,WAAW;AAAA,MACT,MAAM,CAAC,SAAS,QAAQ,MAAM;AAAA,MAC9B,SAAS;AAAA,MACT,UAAW,WAAW;AACpB,YAAI,OAAO,cAAc,UAAU;AACjC,iBAAOC,mBAAgC,iCAAC,SAAS,SAAS;AAAA,QAC5D;AACA,eAAO;AAAA,MACR;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,sBAAsB;AAAA,MACpB,MAAM;AAAA,MACN,SAAS,OAAO,EAAE,OAAO,WAAW,WAAW,mBAAmB;AAAA,IACnE;AAAA;AAAA;AAAA;AAAA,IAKD,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS,OAAO,EAAE,OAAO,UAAU,WAAW,cAAc;AAAA,IAC7D;AAAA;AAAA;AAAA;AAAA,IAKD,qBAAqB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS,OAAO,EAAE,OAAO,UAAU,WAAW,kBAAkB;AAAA,IACjE;AAAA;AAAA;AAAA;AAAA,IAKD,oBAAoB;AAAA,MAClB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,qBAAqB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,qBAAqB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,uBAAuB;AAAA,MACrB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,qBAAqB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,uBAAuB;AAAA,MACrB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,sBAAsB;AAAA,MACpB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,wBAAwB;AAAA,MACtB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,qBAAqB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,wBAAwB;AAAA,MACtB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS,OAAO;AAAA,QACd,mBAAmB;AAAA,QACnB,cAAc;AAAA,QACd,uBAAuB;AAAA,MACzB;AAAA,IACD;AAAA,EACF;AAAA,EAED,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA,EACD;AAAA,EAED,OAAQ;AACN,WAAO;AAAA,MACL,oBAAoB,KAAK;AAAA;AAAA,MACzB,UAAU;AAAA,MAEV,aAAa;AAAA,QACX,OAAO;AAAA,MACR;AAAA,MAED,eAAe;AAAA,MACf,WAAW;AAAA;EAEd;AAAA,EAED,UAAU;AAAA,IACR,cAAe;AACb,aAAO,KAAK,mBAAmB;AAAA,IAChC;AAAA,IAED,mBAAoB;AAClB,aAAOC,mBAAAA,gCAAgC,CAAC;AAAA,IACzC;AAAA,IAED,2BAA4B;AAC1B,aAAO,KAAK,kBAAkB,KAAK,qBAAqB,KAAK,oBAAoB,KAAK;AAAA,IACvF;AAAA,IAED,0BAA2B;AACzB,aAAO,KAAK,uBAAuB,KAAK,yBACpC,KAAK,wBAAwB,KAAK;AAAA,IACvC;AAAA,IAED,qBAAsB;AACpB,aAAO,KAAK,uBAAuB,KAAK;AAAA,IACzC;AAAA,IAED,eAAgB;AACd,YAAM,yBAAyB,KAAK,kBAAkB,IAAI,iBAAe;AAAA,QACvE,KAAK,WAAW;AAAA,QAChB,aAAa,CAAC,UAAU;AAAA,MACzB,EAAC;AACF,aAAO;AAAA,QACL,EAAE,KAAK,OAAO,aAAa,KAAK,WAAY;AAAA,QAC5C,EAAE,KAAK,UAAU,aAAa,KAAK,kBAAmB;AAAA,QACtD,EAAE,KAAK,aAAa,aAAa,KAAK,iBAAkB;AAAA,QACxD,EAAE,KAAK,QAAQ,aAAa,KAAK,YAAa;AAAA,QAC9C,GAAG;AAAA,MACL,EAAE,OAAO,qBAAmB,gBAAgB,YAAY,SAAS,CAAC;AAAA,IACnE;AAAA,IAED,aAAc;AACZ,aAAO;AAAA,QACL,EAAE,SAAS,KAAK,wBAAwB,OAAO,eAAe,UAAU,gBAAgB,UAAU,kBAAkB,QAAQ,+BAA+B,gBAAgB,eAAe,SAAS,KAAK,oBAAqB;AAAA,MAC9N,EAAC,OAAO,YAAU,OAAO,OAAO;AAAA,IAClC;AAAA,IAED,oBAAqB;AACnB,aAAO;AAAA,QACL,EAAE,SAAS,KAAK,gBAAgB,UAAU,QAAQ,UAAU,QAAQ,QAAQ,sBAAsB,gBAAgB,QAAQ,SAAS,KAAK,iBAAkB;AAAA,QAC1J,EAAE,SAAS,KAAK,mBAAmB,UAAU,UAAU,UAAU,UAAU,QAAQ,yBAAyB,gBAAgB,WAAW,SAAS,KAAK,mBAAoB;AAAA,QACzK,EAAE,SAAS,KAAK,qBAAqB,UAAU,aAAa,UAAU,aAAa,QAAQ,2BAA2B,gBAAgB,aAAa,SAAS,KAAK,sBAAuB;AAAA,QACxL,EAAE,SAAS,KAAK,kBAAkB,UAAU,UAAU,UAAU,iBAAiB,QAAQ,wBAAwB,gBAAgB,UAAU,SAAS,KAAK,0BAA2B;AAAA,MACrL,EAAC,OAAO,YAAU,OAAO,OAAO;AAAA,IAClC;AAAA,IAED,mBAAoB;AAClB,aAAO;AAAA,QACL,EAAE,SAAS,KAAK,qBAAqB,UAAU,EAAE,WAAW,OAAQ,GAAE,UAAU,cAAc,QAAQ,4BAA4B,gBAAgB,cAAc,SAAS,MAAM,KAAK,YAAY,MAAM,EAAG;AAAA,QACzM,EAAE,SAAS,KAAK,uBAAuB,UAAU,EAAE,WAAW,SAAU,GAAE,UAAU,gBAAgB,QAAQ,8BAA8B,gBAAgB,gBAAgB,SAAS,MAAM,KAAK,YAAY,QAAQ,EAAG;AAAA,QACrN,EAAE,SAAS,KAAK,sBAAsB,UAAU,EAAE,WAAW,QAAS,GAAE,UAAU,eAAe,QAAQ,6BAA6B,gBAAgB,eAAe,SAAS,MAAM,KAAK,YAAY,OAAO,EAAG;AAAA,QAC/M,EAAE,SAAS,KAAK,wBAAwB,UAAU,EAAE,WAAW,UAAW,GAAE,UAAU,iBAAiB,QAAQ,+BAA+B,gBAAgB,iBAAiB,SAAS,MAAM,KAAK,YAAY,SAAS,EAAG;AAAA,MAC5N,EAAC,OAAO,YAAU,OAAO,OAAO;AAAA,IAClC;AAAA,IAED,cAAe;AACb,aAAO;AAAA,QACL,EAAE,SAAS,KAAK,qBAAqB,UAAU,cAAc,UAAU,eAAe,QAAQ,4BAA4B,gBAAgB,eAAe,SAAS,KAAK,mBAAoB;AAAA,QAC3L,EAAE,SAAS,KAAK,uBAAuB,UAAU,eAAe,UAAU,gBAAgB,QAAQ,oCAAoC,gBAAgB,gBAAgB,SAAS,KAAK,oBAAqB;AAAA,MAC1M,EAAC,OAAO,YAAU,OAAO,OAAO;AAAA,IAClC;AAAA,IAED,oBAAqB;AACnB,aAAO;AAAA,QACL,EAAE,SAAS,KAAK,iBAAiB,UAAU,cAAc,UAAU,SAAS,QAAQ,4BAA4B,gBAAgB,SAAS,SAAS,KAAK,mBAAoB;AAAA,QAC3K,EAAE,SAAS,KAAK,qBAAqB,UAAU,aAAa,UAAU,cAAc,QAAQ,4BAA4B,gBAAgB,QAAQ,SAAS,KAAK,kBAAmB;AAAA,MAClL,EAAC,OAAO,YAAU,OAAO,OAAO;AAAA,IAClC;AAAA,IAED,aAAc;AACZ,aAAO,EAAE,SAAS,KAAK,YAAY,mBAAmB,UAAU,QAAQ,UAAU,UAAU,QAAQ,0BAA0B,gBAAgB,QAAQ,SAAS,KAAK;IACrK;AAAA,EACF;AAAA,EAED,OAAO;AAAA,IACL,MAAO,UAAU;AACf,WAAK,qBAAqB;AAAA,IAC3B;AAAA,EACF;AAAA,EAED,SAAS;AAAA,IACP,aAAc,OAAO;AACnB,qCAAO;AAAA,IACR;AAAA,IAED,aAAc;;AACZ,yCAAK,MAAM,mBAAX,mBAA2B,WAA3B,mBAAmC,YAAnC,mBAA4C,YAA5C,mBAAqD,gBAArD,mBAAkE;AAClE,WAAK,eAAc;AAAA,IACpB;AAAA,IAED,QAAS,OAAO;;AACd,YAAMC,WAAS,UAAK,MAAM,mBAAX,mBAA2B;AAC1C,qCAAO;AACP,qCAAO;AAEP,UAAI,CAAC,KAAK,WAAW;AAGnB,aAAK,WAAU;AACf;AAAA,MACF;AAGA,YAAM,SAAS,gCAAgC,KAAK,iBAAe,YAAY,KAAK,KAAK,SAAS,CAAC;AAEnG,UAAI,CAAC,QAAQ;AAEX,aAAK,YAAY,GAAG,0BAA0B,GAAG,KAAK,SAAS;AAAA,MACjE;AAEA,YAAM,aAAY,WAAAA,WAAA,gBAAAA,QAAQ,SAAR,mBAAc,UAAd,mBAAqB;AAEvC,UAAI,UAAU,WAAW,UAAU,MAAM;AAIvC,QAAAA,QACG,MAAM,EACN,MAAM,EACN;AAAA,UACC,UAAU;AAAA,UACV,aAAa,KAAK,YAAY,KAAK,UAAU,KAAK,SAAS,IAAI,KAAK,SAAS;AAAA,QAC/E,EACC;aACE;AAEL,QAAAA,QACG,MAAM,EACN,MAAM,EACN,gBAAgB,MAAM,EACtB,QAAQ,EAAE,MAAM,KAAK,WAAW,OAAO,KAAK,YAAY,OAAO,EAC/D;MACL;AAEA,WAAK,eAAc;AAAA,IACpB;AAAA,IAED,gBAAiB;AACf,WAAK,gBAAgB;AAAA,IACtB;AAAA,IAED,YAAa,aAAa;;AACxB,UAAI,CAAC,aAAa;AAChB,eAAO,KAAK;MACd;AACA,WAAK,aAAY,sBAAK,MAAM,mBAAX,mBAA2B,WAA3B,mBAAmC,cAAc,YAAjD,mBAA0D;AAAA,IAC5E;AAAA,IAED,iBAAkB;;AAChB,WAAK,gBAAgB;AACrB,WAAK,YAAY;AACjB,iBAAK,MAAM,eAAe,WAA1B,mBAAkC,QAAQ;AAAA,IAC3C;AAAA,IAED,mBAAoB;;AAClB,uBAAK,MAAM,mBAAX,mBAA2B,WAA3B,mBAAmC,QAAQ,QAAQ,aAAa;AAAA,IACjE;AAAA,IAED,qBAAsB;;AACpB,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,eAAe;AAAA,IAClE;AAAA,IAED,wBAAyB;;AACvB,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,kBAAkB;AAAA,IACrE;AAAA,IAED,4BAA6B;;AAC3B,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,eAAe;AAAA,IAClE;AAAA,IAED,YAAa,WAAW;;AACtB,WAAI,gBAAK,MAAM,mBAAX,mBAA2B,WAA3B,mBAAmC,SAAS,EAAE,WAAW,UAAU,IAAI;AAEzE,gBAAO,UAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,iBAAiB;AAAA,MAC5E;AACA,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,aAAa,WAAW;AAAA,IAC3E;AAAA,IAED,qBAAsB;;AACpB,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,mBAAmB;AAAA,IACtE;AAAA,IAED,sBAAuB;;AACrB,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,oBAAoB;AAAA,IACvE;AAAA,IAED,oBAAqB;;AACnB,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,kBAAkB;AAAA,IACrE;AAAA,IAED,sBAAuB;AACrB,WAAK,MAAM,qBAAqB;AAAA,IACjC;AAAA,IAED,qBAAsB;;AACpB,iBAAK,MAAM,mBAAX,mBAA2B,OAAO,QAAQ,QAAQ,mBAAmB;AAAA,IACtE;AAAA,IAED,QAAS,OAAO;AACd,WAAK,WAAW;AAChB,WAAK,MAAM,SAAS,KAAK;AAAA,IAC1B;AAAA,IAED,OAAQ,OAAO;AACb,WAAK,WAAW;AAChB,WAAK,MAAM,QAAQ,KAAK;AAAA,IACzB;AAAA,IAED,QAAS,OAAO;AACd,WAAK,MAAM,SAAS,KAAK;AAAA,IAC1B;AAAA,EAEF;AACH;mBA5oBQC,oBAAAA,mBAA+C,OAAA,EAA1C,OAAM,qCAAiC,MAAA,EAAA;;AAkEnC,MAAA,aAAA,EAAA,OAAM,eAAc;;;;;;;;;0BA/GnCC,IA4KM,mBAAA,OAAA;AAAA,IA3KJ,WAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,SAAO,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,YAAA,KAAA,MAAM,eAAe,YAAW;AAAA;IAGxCC,IAAAA,YA4IW,qBAAA;AAAA,MA3IT,WAAU;AAAA,MACV,KAAI;AAAA,MACJ,OAAM;AAAA;2BAGJ,MAAmC;AAAA,8BADrCD,IAAAA,mBAkCWE,IAAA,UAAA,MAAAC,IAAAA,WAjCa,SAAY,cAAA,CAA3B,gBAAW;kCADpBC,IAkCW,YAAA,qBAAA;AAAA,YAhCR,KAAK,YAAY;AAAA,YAClB,WAAU;AAAA,YACV,KAAI;AAAA;iCAGF,MAAyC;AAAA,eAD3CC,cAAA,IAAA,GAAAL,IAAAA,mBA0BaE,IAzBM,UAAA,MAAAC,IAAAA,WAAA,YAAY,cAAtB,WAAM;wCADfC,IA0Ba,YAAA,uBAAA;AAAA,kBAxBV,KAAG,GAAK,YAAY,GAAG,IAAI,KAAK,UAAU,OAAO,QAAQ,CAAA;AAAA,kBACzD,SAAS,OAAO;AAAA,kBACjB,WAAU;AAAA;kBAEC,oBACT,MAiBY;;AAAA;AAAA,sBAjBZH,IAAAA,YAiBY,sBAAA;AAAA,wBAhBT,WAAS,OAAO;AAAA,wBACjB,YAAW;AAAA,wBACX,MAAK;AAAA,wBACJ,SAAQ,gBAAK,MAAC,mBAAN,mBAAsB,WAAtB,mBAA8B,SAAS,OAAO;AAAA,wBACvD,MAAK;AAAA,wBACJ,cAAY,OAAO;AAAA,wBACnB,OAAKK,IAAA,eAAA,EAAA,oBAAA,CAAyB,OAAO,MAAK,CAAA;AAAA,wBAC1C,SAAK,YAAE,OAAO;;wBAEJ,kBACT,MAGE;AAAA,0BAHFL,IAAAA,YAGE,oBAAA;AAAA,4BAFC,MAAM,OAAO;AAAA,4BACd,MAAK;AAAA;;6CAEE,MACX;AAAA,8CADW,MACXM,IAAA,gBAAG,iCAAQ,KAAK,GAAA,CAAA;AAAA;;;;;;;;cAItB;AAAA;;;;QAGM,SAAA,WAAW,4BADnBH,IAmGW,YAAA,qBAAA;AAAA;UAjGT,WAAU;AAAA,UACV,KAAI;AAAA;+BAEJ,MA6Fa;AAAA,YA7FbH,IAAAA,YA6Fa,uBAAA;AAAA,cA5FV,MAAM,MAAa;AAAA,cACpB,WAAU;AAAA,cACT,yBAAuB;AAAA,cACvB,+BAA6B;AAAA,cAC9B,WAAQ;AAAA,cACP,qBAAmB;AAAA,cACnB,SAAK;AAAA,gBAAE,SAAY;AAAA,kCACP,SAAY,cAAA,CAAA,MAAA,CAAA;AAAA;cACxB,UAAQ,SAAW;AAAA;cAET,oBACT,MAyBa;AAAA,kCAzBbG,IAyBa,YAAA,uBAAA;AAAA,kBAxBV,KAAK,SAAU,WAAC;AAAA,kBAChB,SAAS,SAAU,WAAC;AAAA,kBACrB,WAAU;AAAA;kBAEC,oBACT,MAiBY;;AAAA;AAAA,sBAjBZH,IAAAA,YAiBY,sBAAA;AAAA,wBAhBT,WAAS,SAAU,WAAC;AAAA,wBACrB,YAAW;AAAA,wBACX,MAAK;AAAA,wBACL,OAAM;AAAA,wBACL,SAAQ,gBAAK,MAAC,mBAAN,mBAAsB,WAAtB,mBAA8B,SAAS,SAAU,WAAC;AAAA,wBAC3D,MAAK;AAAA,wBACJ,cAAY,SAAU,WAAC;AAAA,wBACvB,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,YAAE,SAAU,WAAC,QAAO;AAAA;wBAEf,kBACT,MAIE;AAAA,0BAJFA,IAAAA,YAIE,oBAAA;AAAA,4BAHC,MAAM,SAAU,WAAC;AAAA,4BAClB,MAAK;AAAA,4BACL,OAAM;AAAA;;;;;;;;;cAQP,qBACT,MAIO;AAAA,gBAHC,OAAW,YAAC,aAAa,SAAM,sBADvCD,uBAIO,QAAA,YAAAO,oBADF,OAAW,YAAC,YAAY,GAAA,CAAA;gBAE7BN,IAAAA,YAUE,qBAAA;AAAA,8BATS,MAAS;AAAA,+EAAT,MAAS,YAAA;AAAA,kBACjB,oBAAkB,OAAW,YAAC;AAAA,kBAC/B,WAAQ;AAAA,kBACP,aAAa,OAAkB;AAAA,kBAChC,uBAAoB;AAAA,kBACnB,SAAK;AAAA,oBAAE,SAAY;AAAA,sCACP,SAAY,cAAA,CAAA,MAAA,CAAA;AAAA;kBACxB,SAAO,SAAY;AAAA,kBACnB,wBAAe,SAAO,SAAA,CAAA,OAAA,CAAA;AAAA;;cAGhB,2BACT,MAgCM;AAAA,gBAhCNF,IAAA,mBAgCM,OAhCN,YAgCM;AAAA,kBA/BJE,IAAAA,YAUY,sBAAA;AAAA,oBATV,OAAM;AAAA,oBACL,cAAY,OAAgB,iBAAC;AAAA,oBAC9B,YAAW;AAAA,oBACX,MAAK;AAAA,oBACL,MAAK;AAAA,oBACL,WAAQ;AAAA,oBACP,SAAO,SAAU;AAAA;yCAElB,MAA4B;AAAA,sBAAzBO,IAAA,gBAAAD,IAAA,gBAAA,OAAA,iBAAiB,KAAK,GAAA,CAAA;AAAA;;;kBAE3BN,IAAAA,YAUY,sBAAA;AAAA,oBATV,OAAM;AAAA,oBACL,cAAY,OAAmB,oBAAC;AAAA,oBACjC,YAAW;AAAA,oBACX,MAAK;AAAA,oBACL,MAAK;AAAA,oBACL,WAAQ;AAAA,oBACP,SAAO,SAAc;AAAA;yCAEtB,MAA+B;AAAA,sBAA5BO,IAAA,gBAAAD,IAAA,gBAAA,OAAA,oBAAoB,KAAK,GAAA,CAAA;AAAA;;;kBAE9BN,IAAAA,YAQY,sBAAA;AAAA,oBAPV,OAAM;AAAA,oBACN,MAAK;AAAA,oBACJ,cAAY,OAAoB,qBAAC;AAAA,oBAClC,WAAQ;AAAA,oBACP,SAAO,SAAO;AAAA;yCAEf,MAAgC;AAAA,sBAA7BO,IAAA,gBAAAD,IAAA,gBAAA,OAAA,qBAAqB,KAAK,GAAA,CAAA;AAAA;;;;;;;;;;;;;IASzCR,IAAAA,mBAqBM,OAAA;AAAA,MApBJ,OAAM;AAAA,MACL,0CAAuB,OAAS,UAAA,CAAA;AAAA;MAEjCE,IAAA,YAgBE,gCAhBFQ,eAgBE;AAAA,QAfA,KAAI;AAAA,oBACK,MAAkB;AAAA,qEAAlB,MAAkB,qBAAA;AAAA,QAC3B,WAAQ;AAAA,QACP,UAAU,OAAQ;AAAA,QAClB,oBAAkB,OAAc;AAAA,QAChC,yCAAuC,OAAU,UAAA;AAAA,QACjD,iBAAe,SAAgB;AAAA,QAC/B,cAAY,OAAS;AAAA,QACrB,aAAa,OAAW;AAAA,QACxB,qBAAmB;AAAA,QACnB,MAAM;AAAA,SACC,KAAM,QAAA;AAAA,QACb,SAAO,SAAO;AAAA,QACd,QAAM,SAAM;AAAA,QACZ,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,YAAE,SAAO,QAAC,MAAM;AAAA;;;;;;"}
|
package/dist/lib/editor.js
CHANGED
|
@@ -46,6 +46,8 @@ import "./link.js";
|
|
|
46
46
|
import "../chunks/link_constants-nWVlXQBs.js";
|
|
47
47
|
import "./avatar.js";
|
|
48
48
|
import "./presence.js";
|
|
49
|
+
import "@dialpad/dialtone-icons/vue3/hash";
|
|
50
|
+
import "@dialpad/dialtone-icons/vue3/lock";
|
|
49
51
|
import "../chunks/stack_constants-HraCekPm.js";
|
|
50
52
|
import "../chunks/popover_constants-Qkpb0yh2.js";
|
|
51
53
|
import "../chunks/modal-XOr4kiNZ.js";
|
package/dist/lib/editor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sources":["../../recipes/conversation_view/editor/editor_constants.js","../../recipes/conversation_view/editor/editor.vue"],"sourcesContent":["export const EDITOR_SUPPORTED_LINK_PROTOCOLS = [\n /^https?:\\/\\//,\n /^http?:\\/\\//,\n /^ftp?:\\/\\//,\n /^ftps?:\\/\\//,\n /^ftps?:\\/\\//,\n /mailto:([^?]*)/,\n];\n\nexport const EDITOR_DEFAULT_LINK_PREFIX = 'https://';\n\nexport default {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n};\n","<!-- eslint-disable vue/no-restricted-class -->\n<template>\n <div\n data-qa=\"dt-editor\"\n role=\"presentation\"\n class=\"d-d-flex d-fd-column\"\n @click=\"$refs.richTextEditor.focusEditor()\"\n >\n <!-- Section for the top UI -->\n <dt-stack\n direction=\"row\"\n gap=\"450\"\n class=\"d-p8 dt-editor--top-bar-background\"\n >\n <dt-stack\n v-for=\"buttonGroup in buttonGroups\"\n :key=\"buttonGroup.key\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-tooltip\n v-for=\"button in buttonGroup.buttonGroup\"\n :key=\"`${buttonGroup.key}-${JSON.stringify(button.selector)}`\"\n :message=\"button.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :data-qa=\"button.dataQA\"\n importance=\"clear\"\n kind=\"muted\"\n :active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n size=\"xs\"\n :aria-label=\"button.tooltipMessage\"\n :class=\"{ 'd-btn--icon-only': !button.label }\"\n @click=\"button.onClick()\"\n >\n <template #icon>\n <dt-icon\n :name=\"button.iconName\"\n size=\"200\"\n />\n </template>\n {{ button?.label }}\n </dt-button>\n </template>\n </dt-tooltip>\n <div class=\"dt-editor--button-group-divider\" />\n </dt-stack>\n <dt-stack\n v-if=\"linkButton.showBtn\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-popover\n :open=\"showLinkInput\"\n placement=\"bottom-start\"\n :visually-hidden-close=\"true\"\n :visually-hidden-close-label=\"'Close link input popover'\"\n data-qa=\"dt-editor-link-input-popover\"\n :show-close-button=\"false\"\n @click=\"onInputFocus\"\n @click.stop=\"onInputFocus\"\n @opened=\"updateInput\"\n >\n <template #anchor>\n <dt-tooltip\n :key=\"linkButton.key\"\n :message=\"linkButton.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :data-qa=\"linkButton.dataQA\"\n importance=\"clear\"\n kind=\"muted\"\n class=\"d-ol-none\"\n :active=\"$refs.richTextEditor?.editor?.isActive(linkButton.selector)\"\n size=\"xs\"\n :aria-label=\"linkButton.tooltipMessage\"\n @click=\"linkButton.onClick()\"\n >\n <template #icon>\n <dt-icon\n :name=\"linkButton.iconName\"\n size=\"200\"\n class=\"d-fw-bold\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n\n <template #content>\n <span\n v-if=\"showAddLink.setLinkTitle.length > 0\"\n >\n {{ showAddLink.setLinkTitle }}\n </span>\n <dt-input\n v-model=\"linkInput\"\n :input-aria-label=\"showAddLink.setLinkInputAriaLabel\"\n data-qa=\"dt-editor-link-input\"\n :placeholder=\"setLinkPlaceholder\"\n input-wrapper-class=\"d-bgc-black-100 d-mt6 d-bar5 d-ba d-baw1 d-bc-black-300 d-py2 d-ol-none\"\n @click=\"onInputFocus\"\n @click.stop=\"onInputFocus\"\n @focus=\"onInputFocus\"\n @keydown.enter=\"setLink\"\n />\n </template>\n <template #footerContent>\n <div class=\"d-ml8 d-mr12\">\n <dt-button\n class=\"d-mx2\"\n :aria-label=\"removeLinkButton.ariaLabel\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n data-qa=\"dt-editor-remove-link-btn\"\n @click=\"removeLink\"\n >\n {{ removeLinkButton.label }}\n </dt-button>\n <dt-button\n class=\"d-mx2\"\n :aria-label=\"cancelSetLinkButton.ariaLabel\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n data-qa=\"dt-editor-set-link-cancel-btn\"\n @click=\"closeLinkInput\"\n >\n {{ cancelSetLinkButton.label }}\n </dt-button>\n <dt-button\n class=\"d-mx2\"\n size=\"sm\"\n :aria-label=\"confirmSetLinkButton.ariaLabel\"\n data-qa=\"dt-editor-set-link-confirm-btn\"\n @click=\"setLink\"\n >\n {{ confirmSetLinkButton.label }}\n </dt-button>\n </div>\n </template>\n </dt-popover>\n </dt-stack>\n </dt-stack>\n\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n class=\"d-of-auto d-mx16 d-mt8 d-mb16 d-c-text\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n data-qa=\"dt-rich-text-editor\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"`d-ml16 d-ol-none d-my6 ${inputClass}`\"\n :output-format=\"htmlOutputFormat\"\n :auto-focus=\"autoFocus\"\n :placeholder=\"placeholder\"\n :allow-line-breaks=\"true\"\n :link=\"false\"\n v-bind=\"$attrs\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @input=\"onInput($event)\"\n />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n} from './editor_constants.js';\nimport { DtIcon } from '@/components/icon';\nimport { DtButton } from '@/components/button';\nimport { DtPopover } from '@/components/popover';\nimport { DtStack } from '@/components/stack';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\n\nexport default {\n name: 'DtRecipeEditor',\n\n components: {\n DtRichTextEditor,\n DtButton,\n DtIcon,\n DtPopover,\n DtStack,\n DtInput,\n DtTooltip,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n value: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n /**\n * Confirm set link button defaults.\n */\n confirmSetLinkButton: {\n type: Object,\n default: () => ({ label: 'Confirm', ariaLabel: 'Confirm set link' }),\n },\n\n /**\n * Remove link button defaults.\n */\n removeLinkButton: {\n type: Object,\n default: () => ({ label: 'Remove', ariaLabel: 'Remove link' }),\n },\n\n /**\n * Cancel set link button defaults.\n */\n cancelSetLinkButton: {\n type: Object,\n default: () => ({ label: 'Cancel', ariaLabel: 'Cancel set link' }),\n },\n\n /**\n * Placeholder text for the set link input field\n */\n setLinkPlaceholder: {\n type: String,\n default: '',\n },\n\n /**\n * Show button to render text as bold\n */\n showBoldButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render text in italics\n */\n showItalicsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to underline text\n */\n showUnderlineButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to strike text\n */\n showStrikeButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render list items\n */\n showListItemsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render ordered list items\n */\n showOrderedListButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the left\n */\n showAlignLeftButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the center\n */\n showAlignCenterButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the right\n */\n showAlignRightButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to justify text\n */\n showAlignJustifyButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add quote format to text\n */\n showQuoteButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add code block\n */\n showCodeBlockButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to handle quick replies\n */\n showQuickRepliesButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show add link default config.\n */\n showAddLink: {\n type: Object,\n default: () => ({\n showAddLinkButton: true,\n setLinkTitle: 'Add a link',\n setLinkInputAriaLabel: 'Input field to add link',\n }),\n },\n },\n\n emits: [\n /**\n * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n\n /**\n * Quick replies button\n * pressed event\n * @event quick-replies-click\n */\n 'quick-replies-click',\n ],\n\n data () {\n return {\n internalInputValue: this.value, // internal input content\n hasFocus: false,\n\n linkOptions: {\n class: 'd-link d-c-text d-d-inline-block',\n },\n\n showLinkInput: false,\n linkInput: '',\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n htmlOutputFormat () {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS[2];\n },\n\n showingTextFormatButtons () {\n return this.showBoldButton || this.showItalicsButton || this.showStrikeButton || this.showUnderlineButton;\n },\n\n showingAlignmentButtons () {\n return this.showAlignLeftButton || this.showAlignCenterButton ||\n this.showAlignRightButton || this.showAlignJustifyButton;\n },\n\n showingListButtons () {\n return this.showListItemsButton || this.showOrderedListButton;\n },\n\n buttonGroups () {\n const individualButtonStacks = this.individualButtons.map(buttonData => ({\n key: buttonData.selector,\n buttonGroup: [buttonData],\n }));\n return [\n { key: 'new', buttonGroup: this.newButtons },\n { key: 'format', buttonGroup: this.textFormatButtons },\n { key: 'alignment', buttonGroup: this.alignmentButtons },\n { key: 'list', buttonGroup: this.listButtons },\n ...individualButtonStacks,\n ].filter(buttonGroupData => buttonGroupData.buttonGroup.length > 0);\n },\n\n newButtons () {\n return [\n { showBtn: this.showQuickRepliesButton, label: 'Quick reply', selector: 'quickReplies', iconName: 'lightning-bolt', dataQA: 'dt-editor-quick-replies-btn', tooltipMessage: 'Quick Reply', onClick: this.onQuickRepliesClick },\n ].filter(button => button.showBtn);\n },\n\n textFormatButtons () {\n return [\n { showBtn: this.showBoldButton, selector: 'bold', iconName: 'bold', dataQA: 'dt-editor-bold-btn', tooltipMessage: 'Bold', onClick: this.onBoldTextToggle },\n { showBtn: this.showItalicsButton, selector: 'italic', iconName: 'italic', dataQA: 'dt-editor-italics-btn', tooltipMessage: 'Italics', onClick: this.onItalicTextToggle },\n { showBtn: this.showUnderlineButton, selector: 'underline', iconName: 'underline', dataQA: 'dt-editor-underline-btn', tooltipMessage: 'Underline', onClick: this.onUnderlineTextToggle },\n { showBtn: this.showStrikeButton, selector: 'strike', iconName: 'strikethrough', dataQA: 'dt-editor-strike-btn', tooltipMessage: 'Strike', onClick: this.onStrikethroughTextToggle },\n ].filter(button => button.showBtn);\n },\n\n alignmentButtons () {\n return [\n { showBtn: this.showAlignLeftButton, selector: { textAlign: 'left' }, iconName: 'align-left', dataQA: 'dt-editor-align-left-btn', tooltipMessage: 'Align Left', onClick: () => this.onTextAlign('left') },\n { showBtn: this.showAlignCenterButton, selector: { textAlign: 'center' }, iconName: 'align-center', dataQA: 'dt-editor-align-center-btn', tooltipMessage: 'Align Center', onClick: () => this.onTextAlign('center') },\n { showBtn: this.showAlignRightButton, selector: { textAlign: 'right' }, iconName: 'align-right', dataQA: 'dt-editor-align-right-btn', tooltipMessage: 'Align Right', onClick: () => this.onTextAlign('right') },\n { showBtn: this.showAlignJustifyButton, selector: { textAlign: 'justify' }, iconName: 'align-justify', dataQA: 'dt-editor-align-justify-btn', tooltipMessage: 'Align Justify', onClick: () => this.onTextAlign('justify') },\n ].filter(button => button.showBtn);\n },\n\n listButtons () {\n return [\n { showBtn: this.showListItemsButton, selector: 'bulletList', iconName: 'list-bullet', dataQA: 'dt-editor-list-items-btn', tooltipMessage: 'Bullet List', onClick: this.onBulletListToggle },\n { showBtn: this.showOrderedListButton, selector: 'orderedList', iconName: 'list-ordered', dataQA: 'dt-editor-ordered-list-items-btn', tooltipMessage: 'Ordered List', onClick: this.onOrderedListToggle },\n ].filter(button => button.showBtn);\n },\n\n individualButtons () {\n return [\n { showBtn: this.showQuoteButton, selector: 'blockquote', iconName: 'quote', dataQA: 'dt-editor-blockquote-btn', tooltipMessage: 'Quote', onClick: this.onBlockquoteToggle },\n { showBtn: this.showCodeBlockButton, selector: 'codeBlock', iconName: 'code-block', dataQA: 'dt-editor-code-block-btn', tooltipMessage: 'Code', onClick: this.onCodeBlockToggle },\n ].filter(button => button.showBtn);\n },\n\n linkButton () {\n return { showBtn: this.showAddLink.showAddLinkButton, selector: 'link', iconName: 'link-2', dataQA: 'dt-editor-add-link-btn', tooltipMessage: 'Link', onClick: this.openLinkInput };\n },\n },\n\n watch: {\n value (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n onInputFocus (event) {\n event?.stopPropagation();\n },\n\n removeLink () {\n this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run();\n this.closeLinkInput();\n },\n\n setLink (event) {\n const editor = this.$refs.richTextEditor?.editor;\n event?.preventDefault();\n event?.stopPropagation();\n\n if (!this.linkInput) {\n // If link text is set to empty string,\n // remove any existing links.\n this.removeLink();\n return;\n }\n\n // Check if input matches any of the supported link formats\n const prefix = EDITOR_SUPPORTED_LINK_PROTOCOLS.find(prefixRegex => prefixRegex.test(this.linkInput));\n\n if (!prefix) {\n // If no matching pattern is found, prepend default prefix\n this.linkInput = `${EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`;\n }\n\n const selection = editor?.view?.state?.selection;\n\n if (selection.anchor === selection.head) {\n // If no text has been selected, manually insert the link text.\n // Do not rely on link options set through DtRichTextEditor\n // component, because they clash with these and cause issues.\n editor\n .chain()\n .focus()\n .insertContentAt(\n selection.anchor,\n `<a class=\"${this.linkOptions.class}\" href=${this.linkInput}>${this.linkInput}</a>`,\n )\n .run();\n } else {\n // Set or edit the link\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: this.linkInput, class: this.linkOptions.class })\n .run();\n }\n\n this.closeLinkInput();\n },\n\n openLinkInput () {\n this.showLinkInput = true;\n },\n\n updateInput (openedInput) {\n if (!openedInput) {\n return this.closeLinkInput();\n }\n this.linkInput = this.$refs.richTextEditor?.editor?.getAttributes('link')?.href;\n },\n\n closeLinkInput () {\n this.showLinkInput = false;\n this.linkInput = '';\n this.$refs.richTextEditor.editor?.chain().focus();\n },\n\n onBoldTextToggle () {\n this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run();\n },\n\n onItalicTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run();\n },\n\n onUnderlineTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run();\n },\n\n onStrikethroughTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run();\n },\n\n onTextAlign (alignment) {\n if (this.$refs.richTextEditor?.editor?.isActive({ textAlign: alignment })) {\n // If this alignment type is already set here, unset it\n return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();\n }\n this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(alignment).run();\n },\n\n onBulletListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run();\n },\n\n onOrderedListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run();\n },\n\n onCodeBlockToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run();\n },\n\n onQuickRepliesClick () {\n this.$emit('quick-replies-click');\n },\n\n onBlockquoteToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().run();\n },\n\n onFocus (event) {\n this.hasFocus = true;\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n },\n\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-editor--top-bar-background {\n background-color: var(--dt-color-surface-secondary);\n}\n\n.dt-editor--button-group-divider {\n margin-left: var(--dt-space-400);\n height: calc(var(--dt-size-550) + var(--dt-size-300));\n width: var(--dt-size-100);\n background: var(--dt-color-border-subtle);\n}\n</style>\n"],"names":["editor","_createElementVNode","_createElementBlock","_createVNode","_Fragment","_renderList","_createBlock","_openBlock","_normalizeClass","_toDisplayString","_createTextVNode","_mergeProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"editor.js","sources":["../../recipes/conversation_view/editor/editor_constants.js","../../recipes/conversation_view/editor/editor.vue"],"sourcesContent":["export const EDITOR_SUPPORTED_LINK_PROTOCOLS = [\n /^https?:\\/\\//,\n /^http?:\\/\\//,\n /^ftp?:\\/\\//,\n /^ftps?:\\/\\//,\n /^ftps?:\\/\\//,\n /mailto:([^?]*)/,\n];\n\nexport const EDITOR_DEFAULT_LINK_PREFIX = 'https://';\n\nexport default {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n};\n","<!-- eslint-disable vue/no-restricted-class -->\n<template>\n <div\n data-qa=\"dt-editor\"\n role=\"presentation\"\n class=\"d-d-flex d-fd-column\"\n @click=\"$refs.richTextEditor.focusEditor()\"\n >\n <!-- Section for the top UI -->\n <dt-stack\n direction=\"row\"\n gap=\"450\"\n class=\"d-p8 dt-editor--top-bar-background\"\n >\n <dt-stack\n v-for=\"buttonGroup in buttonGroups\"\n :key=\"buttonGroup.key\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-tooltip\n v-for=\"button in buttonGroup.buttonGroup\"\n :key=\"`${buttonGroup.key}-${JSON.stringify(button.selector)}`\"\n :message=\"button.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :data-qa=\"button.dataQA\"\n importance=\"clear\"\n kind=\"muted\"\n :active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n size=\"xs\"\n :aria-label=\"button.tooltipMessage\"\n :class=\"{ 'd-btn--icon-only': !button.label }\"\n @click=\"button.onClick()\"\n >\n <template #icon>\n <dt-icon\n :name=\"button.iconName\"\n size=\"200\"\n />\n </template>\n {{ button?.label }}\n </dt-button>\n </template>\n </dt-tooltip>\n <div class=\"dt-editor--button-group-divider\" />\n </dt-stack>\n <dt-stack\n v-if=\"linkButton.showBtn\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-popover\n :open=\"showLinkInput\"\n placement=\"bottom-start\"\n :visually-hidden-close=\"true\"\n :visually-hidden-close-label=\"'Close link input popover'\"\n data-qa=\"dt-editor-link-input-popover\"\n :show-close-button=\"false\"\n @click=\"onInputFocus\"\n @click.stop=\"onInputFocus\"\n @opened=\"updateInput\"\n >\n <template #anchor>\n <dt-tooltip\n :key=\"linkButton.key\"\n :message=\"linkButton.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :data-qa=\"linkButton.dataQA\"\n importance=\"clear\"\n kind=\"muted\"\n class=\"d-ol-none\"\n :active=\"$refs.richTextEditor?.editor?.isActive(linkButton.selector)\"\n size=\"xs\"\n :aria-label=\"linkButton.tooltipMessage\"\n @click=\"linkButton.onClick()\"\n >\n <template #icon>\n <dt-icon\n :name=\"linkButton.iconName\"\n size=\"200\"\n class=\"d-fw-bold\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n\n <template #content>\n <span\n v-if=\"showAddLink.setLinkTitle.length > 0\"\n >\n {{ showAddLink.setLinkTitle }}\n </span>\n <dt-input\n v-model=\"linkInput\"\n :input-aria-label=\"showAddLink.setLinkInputAriaLabel\"\n data-qa=\"dt-editor-link-input\"\n :placeholder=\"setLinkPlaceholder\"\n input-wrapper-class=\"d-bgc-black-100 d-mt6 d-bar5 d-ba d-baw1 d-bc-black-300 d-py2 d-ol-none\"\n @click=\"onInputFocus\"\n @click.stop=\"onInputFocus\"\n @focus=\"onInputFocus\"\n @keydown.enter=\"setLink\"\n />\n </template>\n <template #footerContent>\n <div class=\"d-ml8 d-mr12\">\n <dt-button\n class=\"d-mx2\"\n :aria-label=\"removeLinkButton.ariaLabel\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n data-qa=\"dt-editor-remove-link-btn\"\n @click=\"removeLink\"\n >\n {{ removeLinkButton.label }}\n </dt-button>\n <dt-button\n class=\"d-mx2\"\n :aria-label=\"cancelSetLinkButton.ariaLabel\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n data-qa=\"dt-editor-set-link-cancel-btn\"\n @click=\"closeLinkInput\"\n >\n {{ cancelSetLinkButton.label }}\n </dt-button>\n <dt-button\n class=\"d-mx2\"\n size=\"sm\"\n :aria-label=\"confirmSetLinkButton.ariaLabel\"\n data-qa=\"dt-editor-set-link-confirm-btn\"\n @click=\"setLink\"\n >\n {{ confirmSetLinkButton.label }}\n </dt-button>\n </div>\n </template>\n </dt-popover>\n </dt-stack>\n </dt-stack>\n\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n class=\"d-of-auto d-mx16 d-mt8 d-mb16 d-c-text\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n data-qa=\"dt-rich-text-editor\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"`d-ml16 d-ol-none d-my6 ${inputClass}`\"\n :output-format=\"htmlOutputFormat\"\n :auto-focus=\"autoFocus\"\n :placeholder=\"placeholder\"\n :allow-line-breaks=\"true\"\n :link=\"false\"\n v-bind=\"$attrs\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @input=\"onInput($event)\"\n />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n} from './editor_constants.js';\nimport { DtIcon } from '@/components/icon';\nimport { DtButton } from '@/components/button';\nimport { DtPopover } from '@/components/popover';\nimport { DtStack } from '@/components/stack';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\n\nexport default {\n name: 'DtRecipeEditor',\n\n components: {\n DtRichTextEditor,\n DtButton,\n DtIcon,\n DtPopover,\n DtStack,\n DtInput,\n DtTooltip,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n value: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n /**\n * Confirm set link button defaults.\n */\n confirmSetLinkButton: {\n type: Object,\n default: () => ({ label: 'Confirm', ariaLabel: 'Confirm set link' }),\n },\n\n /**\n * Remove link button defaults.\n */\n removeLinkButton: {\n type: Object,\n default: () => ({ label: 'Remove', ariaLabel: 'Remove link' }),\n },\n\n /**\n * Cancel set link button defaults.\n */\n cancelSetLinkButton: {\n type: Object,\n default: () => ({ label: 'Cancel', ariaLabel: 'Cancel set link' }),\n },\n\n /**\n * Placeholder text for the set link input field\n */\n setLinkPlaceholder: {\n type: String,\n default: '',\n },\n\n /**\n * Show button to render text as bold\n */\n showBoldButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render text in italics\n */\n showItalicsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to underline text\n */\n showUnderlineButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to strike text\n */\n showStrikeButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render list items\n */\n showListItemsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render ordered list items\n */\n showOrderedListButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the left\n */\n showAlignLeftButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the center\n */\n showAlignCenterButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the right\n */\n showAlignRightButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to justify text\n */\n showAlignJustifyButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add quote format to text\n */\n showQuoteButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add code block\n */\n showCodeBlockButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to handle quick replies\n */\n showQuickRepliesButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show add link default config.\n */\n showAddLink: {\n type: Object,\n default: () => ({\n showAddLinkButton: true,\n setLinkTitle: 'Add a link',\n setLinkInputAriaLabel: 'Input field to add link',\n }),\n },\n },\n\n emits: [\n /**\n * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n\n /**\n * Quick replies button\n * pressed event\n * @event quick-replies-click\n */\n 'quick-replies-click',\n ],\n\n data () {\n return {\n internalInputValue: this.value, // internal input content\n hasFocus: false,\n\n linkOptions: {\n class: 'd-link d-c-text d-d-inline-block',\n },\n\n showLinkInput: false,\n linkInput: '',\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n htmlOutputFormat () {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS[2];\n },\n\n showingTextFormatButtons () {\n return this.showBoldButton || this.showItalicsButton || this.showStrikeButton || this.showUnderlineButton;\n },\n\n showingAlignmentButtons () {\n return this.showAlignLeftButton || this.showAlignCenterButton ||\n this.showAlignRightButton || this.showAlignJustifyButton;\n },\n\n showingListButtons () {\n return this.showListItemsButton || this.showOrderedListButton;\n },\n\n buttonGroups () {\n const individualButtonStacks = this.individualButtons.map(buttonData => ({\n key: buttonData.selector,\n buttonGroup: [buttonData],\n }));\n return [\n { key: 'new', buttonGroup: this.newButtons },\n { key: 'format', buttonGroup: this.textFormatButtons },\n { key: 'alignment', buttonGroup: this.alignmentButtons },\n { key: 'list', buttonGroup: this.listButtons },\n ...individualButtonStacks,\n ].filter(buttonGroupData => buttonGroupData.buttonGroup.length > 0);\n },\n\n newButtons () {\n return [\n { showBtn: this.showQuickRepliesButton, label: 'Quick reply', selector: 'quickReplies', iconName: 'lightning-bolt', dataQA: 'dt-editor-quick-replies-btn', tooltipMessage: 'Quick Reply', onClick: this.onQuickRepliesClick },\n ].filter(button => button.showBtn);\n },\n\n textFormatButtons () {\n return [\n { showBtn: this.showBoldButton, selector: 'bold', iconName: 'bold', dataQA: 'dt-editor-bold-btn', tooltipMessage: 'Bold', onClick: this.onBoldTextToggle },\n { showBtn: this.showItalicsButton, selector: 'italic', iconName: 'italic', dataQA: 'dt-editor-italics-btn', tooltipMessage: 'Italics', onClick: this.onItalicTextToggle },\n { showBtn: this.showUnderlineButton, selector: 'underline', iconName: 'underline', dataQA: 'dt-editor-underline-btn', tooltipMessage: 'Underline', onClick: this.onUnderlineTextToggle },\n { showBtn: this.showStrikeButton, selector: 'strike', iconName: 'strikethrough', dataQA: 'dt-editor-strike-btn', tooltipMessage: 'Strike', onClick: this.onStrikethroughTextToggle },\n ].filter(button => button.showBtn);\n },\n\n alignmentButtons () {\n return [\n { showBtn: this.showAlignLeftButton, selector: { textAlign: 'left' }, iconName: 'align-left', dataQA: 'dt-editor-align-left-btn', tooltipMessage: 'Align Left', onClick: () => this.onTextAlign('left') },\n { showBtn: this.showAlignCenterButton, selector: { textAlign: 'center' }, iconName: 'align-center', dataQA: 'dt-editor-align-center-btn', tooltipMessage: 'Align Center', onClick: () => this.onTextAlign('center') },\n { showBtn: this.showAlignRightButton, selector: { textAlign: 'right' }, iconName: 'align-right', dataQA: 'dt-editor-align-right-btn', tooltipMessage: 'Align Right', onClick: () => this.onTextAlign('right') },\n { showBtn: this.showAlignJustifyButton, selector: { textAlign: 'justify' }, iconName: 'align-justify', dataQA: 'dt-editor-align-justify-btn', tooltipMessage: 'Align Justify', onClick: () => this.onTextAlign('justify') },\n ].filter(button => button.showBtn);\n },\n\n listButtons () {\n return [\n { showBtn: this.showListItemsButton, selector: 'bulletList', iconName: 'list-bullet', dataQA: 'dt-editor-list-items-btn', tooltipMessage: 'Bullet List', onClick: this.onBulletListToggle },\n { showBtn: this.showOrderedListButton, selector: 'orderedList', iconName: 'list-ordered', dataQA: 'dt-editor-ordered-list-items-btn', tooltipMessage: 'Ordered List', onClick: this.onOrderedListToggle },\n ].filter(button => button.showBtn);\n },\n\n individualButtons () {\n return [\n { showBtn: this.showQuoteButton, selector: 'blockquote', iconName: 'quote', dataQA: 'dt-editor-blockquote-btn', tooltipMessage: 'Quote', onClick: this.onBlockquoteToggle },\n { showBtn: this.showCodeBlockButton, selector: 'codeBlock', iconName: 'code-block', dataQA: 'dt-editor-code-block-btn', tooltipMessage: 'Code', onClick: this.onCodeBlockToggle },\n ].filter(button => button.showBtn);\n },\n\n linkButton () {\n return { showBtn: this.showAddLink.showAddLinkButton, selector: 'link', iconName: 'link-2', dataQA: 'dt-editor-add-link-btn', tooltipMessage: 'Link', onClick: this.openLinkInput };\n },\n },\n\n watch: {\n value (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n onInputFocus (event) {\n event?.stopPropagation();\n },\n\n removeLink () {\n this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run();\n this.closeLinkInput();\n },\n\n setLink (event) {\n const editor = this.$refs.richTextEditor?.editor;\n event?.preventDefault();\n event?.stopPropagation();\n\n if (!this.linkInput) {\n // If link text is set to empty string,\n // remove any existing links.\n this.removeLink();\n return;\n }\n\n // Check if input matches any of the supported link formats\n const prefix = EDITOR_SUPPORTED_LINK_PROTOCOLS.find(prefixRegex => prefixRegex.test(this.linkInput));\n\n if (!prefix) {\n // If no matching pattern is found, prepend default prefix\n this.linkInput = `${EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`;\n }\n\n const selection = editor?.view?.state?.selection;\n\n if (selection.anchor === selection.head) {\n // If no text has been selected, manually insert the link text.\n // Do not rely on link options set through DtRichTextEditor\n // component, because they clash with these and cause issues.\n editor\n .chain()\n .focus()\n .insertContentAt(\n selection.anchor,\n `<a class=\"${this.linkOptions.class}\" href=${this.linkInput}>${this.linkInput}</a>`,\n )\n .run();\n } else {\n // Set or edit the link\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: this.linkInput, class: this.linkOptions.class })\n .run();\n }\n\n this.closeLinkInput();\n },\n\n openLinkInput () {\n this.showLinkInput = true;\n },\n\n updateInput (openedInput) {\n if (!openedInput) {\n return this.closeLinkInput();\n }\n this.linkInput = this.$refs.richTextEditor?.editor?.getAttributes('link')?.href;\n },\n\n closeLinkInput () {\n this.showLinkInput = false;\n this.linkInput = '';\n this.$refs.richTextEditor.editor?.chain().focus();\n },\n\n onBoldTextToggle () {\n this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run();\n },\n\n onItalicTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run();\n },\n\n onUnderlineTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run();\n },\n\n onStrikethroughTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run();\n },\n\n onTextAlign (alignment) {\n if (this.$refs.richTextEditor?.editor?.isActive({ textAlign: alignment })) {\n // If this alignment type is already set here, unset it\n return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();\n }\n this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(alignment).run();\n },\n\n onBulletListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run();\n },\n\n onOrderedListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run();\n },\n\n onCodeBlockToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run();\n },\n\n onQuickRepliesClick () {\n this.$emit('quick-replies-click');\n },\n\n onBlockquoteToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().run();\n },\n\n onFocus (event) {\n this.hasFocus = true;\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n },\n\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-editor--top-bar-background {\n background-color: var(--dt-color-surface-secondary);\n}\n\n.dt-editor--button-group-divider {\n margin-left: var(--dt-space-400);\n height: calc(var(--dt-size-550) + var(--dt-size-300));\n width: var(--dt-size-100);\n background: var(--dt-color-border-subtle);\n}\n</style>\n"],"names":["editor","_createElementVNode","_createElementBlock","_createVNode","_Fragment","_renderList","_createBlock","_openBlock","_normalizeClass","_toDisplayString","_createTextVNode","_mergeProps"],"mappings":"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"}
|
|
@@ -58,6 +58,8 @@ require("@tiptap/extension-mention");
|
|
|
58
58
|
require("./link.cjs");
|
|
59
59
|
require("./avatar.cjs");
|
|
60
60
|
require("./presence.cjs");
|
|
61
|
+
require("@dialpad/dialtone-icons/vue3/hash");
|
|
62
|
+
require("@dialpad/dialtone-icons/vue3/lock");
|
|
61
63
|
const _sfc_main = {
|
|
62
64
|
name: "DtRecipeMessageInput",
|
|
63
65
|
components: {
|
|
@@ -243,6 +245,21 @@ const _sfc_main = {
|
|
|
243
245
|
type: Object,
|
|
244
246
|
default: null
|
|
245
247
|
},
|
|
248
|
+
/**
|
|
249
|
+
* suggestion object containing the items query function.
|
|
250
|
+
* The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion
|
|
251
|
+
*
|
|
252
|
+
* The only required key is the items function which is used to query the channels for suggestion.
|
|
253
|
+
* items({ query }) => { return [ChannelObject]; }
|
|
254
|
+
* ChannelObject format:
|
|
255
|
+
* { name: string, id: string, locked: boolean }
|
|
256
|
+
*
|
|
257
|
+
* When null, it does not add the plugin. Setting locked to true will display a lock rather than hash.
|
|
258
|
+
*/
|
|
259
|
+
channelSuggestion: {
|
|
260
|
+
type: Object,
|
|
261
|
+
default: null
|
|
262
|
+
},
|
|
246
263
|
/**
|
|
247
264
|
* Whether the input allows for block quote.
|
|
248
265
|
*/
|
|
@@ -518,12 +535,13 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
518
535
|
"auto-focus": $props.autoFocus,
|
|
519
536
|
link: $props.link,
|
|
520
537
|
placeholder: $props.placeholder,
|
|
521
|
-
"mention-suggestion": $props.mentionSuggestion
|
|
538
|
+
"mention-suggestion": $props.mentionSuggestion,
|
|
539
|
+
"channel-suggestion": $props.channelSuggestion
|
|
522
540
|
}, _ctx.$attrs, {
|
|
523
541
|
onFocus: $options.onFocus,
|
|
524
542
|
onBlur: $options.onBlur,
|
|
525
543
|
onInput: _cache[1] || (_cache[1] = ($event) => $options.onInput($event))
|
|
526
|
-
}), null, 16, ["modelValue", "allow-blockquote", "allow-bold", "allow-bullet-list", "allow-italic", "allow-strike", "allow-underline", "editable", "input-aria-label", "input-class", "output-format", "auto-focus", "link", "placeholder", "mention-suggestion", "onFocus", "onBlur"])
|
|
544
|
+
}), null, 16, ["modelValue", "allow-blockquote", "allow-bold", "allow-bullet-list", "allow-italic", "allow-strike", "allow-underline", "editable", "input-aria-label", "input-class", "output-format", "auto-focus", "link", "placeholder", "mention-suggestion", "channel-suggestion", "onFocus", "onBlur"])
|
|
527
545
|
], 4),
|
|
528
546
|
vue.renderSlot(_ctx.$slots, "middle"),
|
|
529
547
|
vue.createElementVNode("section", _hoisted_1, [
|
|
@@ -559,6 +577,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
559
577
|
vue.createVNode(_component_dt_input, {
|
|
560
578
|
ref: "messageInputImageUpload",
|
|
561
579
|
"data-qa": "dt-message-input-image-input",
|
|
580
|
+
accept: "image/*, video/*",
|
|
562
581
|
type: "file",
|
|
563
582
|
class: "d-ps-absolute",
|
|
564
583
|
multiple: "",
|
|
@@ -617,7 +636,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
617
636
|
}), null, 16, ["onSkinTone", "onSelectedEmoji"])
|
|
618
637
|
]),
|
|
619
638
|
_: 1
|
|
620
|
-
}, 8, ["open"])) : vue.createCommentVNode("", true)
|
|
639
|
+
}, 8, ["open"])) : vue.createCommentVNode("", true),
|
|
640
|
+
vue.renderSlot(_ctx.$slots, "emojiGiphyPicker")
|
|
621
641
|
]),
|
|
622
642
|
vue.createElementVNode("div", _hoisted_3, [
|
|
623
643
|
Boolean($props.showCharacterLimit) ? (vue.openBlock(), vue.createBlock(_component_dt_tooltip, {
|