@dialpad/dialtone 9.177.2 → 9.178.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/css/dialtone-default-theme.css +75 -0
- package/dist/css/dialtone-default-theme.min.css +1 -1
- package/dist/css/dialtone.css +75 -0
- package/dist/css/dialtone.min.css +1 -1
- package/dist/css/tokens-docs.json +1 -1
- package/dist/tokens/doc.json +112080 -112080
- package/dist/vue3/{attachment_carousel-BWzRsDBY.cjs → attachment_carousel-BHxR7A76.cjs} +1 -1
- package/dist/vue3/{attachment_carousel-BWzRsDBY.cjs.map → attachment_carousel-BHxR7A76.cjs.map} +1 -1
- package/dist/vue3/{attachment_carousel-Xub5CrN3.js → attachment_carousel-CouFqFMw.js} +1 -1
- package/dist/vue3/{attachment_carousel-Xub5CrN3.js.map → attachment_carousel-CouFqFMw.js.map} +1 -1
- package/dist/vue3/component-documentation.json +1 -1
- package/dist/vue3/components/combobox_with_popover/combobox_with_popover.vue.d.ts +2 -0
- package/dist/vue3/components/combobox_with_popover/combobox_with_popover.vue.d.ts.map +1 -1
- package/dist/vue3/components/resizable/composables/computeLayout.d.ts +35 -0
- package/dist/vue3/components/resizable/composables/computeLayout.d.ts.map +1 -0
- package/dist/vue3/components/resizable/composables/constraintResolver.d.ts +22 -0
- package/dist/vue3/components/resizable/composables/constraintResolver.d.ts.map +1 -0
- package/dist/vue3/components/resizable/composables/index.d.ts +16 -0
- package/dist/vue3/components/resizable/composables/index.d.ts.map +1 -0
- package/dist/vue3/components/resizable/composables/useResizableAnnouncements.d.ts +6 -0
- package/dist/vue3/components/resizable/composables/useResizableAnnouncements.d.ts.map +1 -0
- package/dist/vue3/components/resizable/composables/useResizableCalculations.d.ts +14 -0
- package/dist/vue3/components/resizable/composables/useResizableCalculations.d.ts.map +1 -0
- package/dist/vue3/components/resizable/composables/useResizableDrag.d.ts +42 -0
- package/dist/vue3/components/resizable/composables/useResizableDrag.d.ts.map +1 -0
- package/dist/vue3/components/resizable/composables/useResizableGroup.d.ts +25 -0
- package/dist/vue3/components/resizable/composables/useResizableGroup.d.ts.map +1 -0
- package/dist/vue3/components/resizable/composables/useResizableKeyboard.d.ts +41 -0
- package/dist/vue3/components/resizable/composables/useResizableKeyboard.d.ts.map +1 -0
- package/dist/vue3/components/resizable/composables/useResizableOffset.d.ts +15 -0
- package/dist/vue3/components/resizable/composables/useResizableOffset.d.ts.map +1 -0
- package/dist/vue3/components/resizable/composables/useResizablePanelControls.d.ts +46 -0
- package/dist/vue3/components/resizable/composables/useResizablePanelControls.d.ts.map +1 -0
- package/dist/vue3/components/resizable/composables/useResizablePanelState.d.ts +9 -0
- package/dist/vue3/components/resizable/composables/useResizablePanelState.d.ts.map +1 -0
- package/dist/vue3/components/resizable/composables/useResizableStorage.d.ts +12 -0
- package/dist/vue3/components/resizable/composables/useResizableStorage.d.ts.map +1 -0
- package/dist/vue3/components/resizable/index.d.ts +6 -0
- package/dist/vue3/components/resizable/index.d.ts.map +1 -0
- package/dist/vue3/components/resizable/resizable.vue.d.ts +69 -0
- package/dist/vue3/components/resizable/resizable.vue.d.ts.map +1 -0
- package/dist/vue3/components/resizable/resizable_constants.d.ts +103 -0
- package/dist/vue3/components/resizable/resizable_constants.d.ts.map +1 -0
- package/dist/vue3/components/resizable/resizable_handle.vue.d.ts +22 -0
- package/dist/vue3/components/resizable/resizable_handle.vue.d.ts.map +1 -0
- package/dist/vue3/components/resizable/resizable_panel.vue.d.ts +44 -0
- package/dist/vue3/components/resizable/resizable_panel.vue.d.ts.map +1 -0
- package/dist/vue3/components/resizable/resizable_utils.d.ts +15 -0
- package/dist/vue3/components/resizable/resizable_utils.d.ts.map +1 -0
- package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.d.ts +2 -0
- package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
- package/dist/vue3/components/scroller/scroller.vue.d.ts +6 -8
- package/dist/vue3/components/scroller/scroller.vue.d.ts.map +1 -1
- package/dist/vue3/components/split_button/split_button.vue.d.ts +4 -4
- package/dist/vue3/dialtone-vue.cjs +1 -1
- package/dist/vue3/dialtone-vue.js +56 -52
- package/dist/vue3/index.d.ts +1 -0
- package/dist/vue3/lib/attachment-carousel/attachment-carousel.cjs +1 -1
- package/dist/vue3/lib/attachment-carousel/attachment-carousel.js +1 -1
- package/dist/vue3/lib/attachment-carousel/index.cjs +1 -1
- package/dist/vue3/lib/attachment-carousel/index.js +1 -1
- package/dist/vue3/lib/editor/editor.cjs +1 -1
- package/dist/vue3/lib/editor/editor.cjs.map +1 -1
- package/dist/vue3/lib/editor/editor.js +1 -2
- package/dist/vue3/lib/editor/editor.js.map +1 -1
- package/dist/vue3/lib/editor/index.cjs +1 -1
- package/dist/vue3/lib/editor/index.js +0 -1
- package/dist/vue3/lib/message-input/index.cjs +1 -1
- package/dist/vue3/lib/message-input/index.js +1 -2
- package/dist/vue3/lib/message-input/message-input.cjs +1 -1
- package/dist/vue3/lib/message-input/message-input.js +1 -2
- package/dist/vue3/lib/resizable/index.cjs +1 -0
- package/dist/vue3/lib/resizable/index.js +5 -0
- package/dist/vue3/lib/resizable/resizable-handle.cjs +1 -0
- package/dist/vue3/lib/resizable/resizable-handle.js +2 -0
- package/dist/vue3/lib/resizable/resizable-panel.cjs +2 -0
- package/dist/vue3/lib/resizable/resizable-panel.cjs.map +1 -0
- package/dist/vue3/lib/resizable/resizable-panel.js +132 -0
- package/dist/vue3/lib/resizable/resizable-panel.js.map +1 -0
- package/dist/vue3/lib/resizable/resizable.cjs +1 -0
- package/dist/vue3/lib/resizable/resizable.js +2 -0
- package/dist/vue3/lib/rich-text-editor/index.cjs +1 -1
- package/dist/vue3/lib/rich-text-editor/index.js +1 -2
- package/dist/vue3/lib/rich-text-editor/markdownRenderer.cjs +1 -1
- package/dist/vue3/lib/rich-text-editor/markdownRenderer.js +1 -1
- package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs +1 -1
- package/dist/vue3/lib/rich-text-editor/rich-text-editor.js +1 -2
- package/dist/vue3/lib/scroller/index.cjs +1 -1
- package/dist/vue3/lib/scroller/index.js +1 -1
- package/dist/vue3/lib/scroller/scroller.cjs +1 -1
- package/dist/vue3/lib/scroller/scroller.js +1 -1
- package/dist/vue3/lib/toast/index.cjs +1 -1
- package/dist/vue3/lib/toast/index.js +1 -1
- package/dist/vue3/lib/toast/toast.cjs +1 -1
- package/dist/vue3/lib/toast/toast.js +1 -1
- package/dist/vue3/{markdownRenderer-PRpHJ151.cjs → markdownRenderer-DCgGQseq.cjs} +1 -1
- package/dist/vue3/{markdownRenderer-PRpHJ151.cjs.map → markdownRenderer-DCgGQseq.cjs.map} +1 -1
- package/dist/vue3/{markdownRenderer-D14GhUiu.js → markdownRenderer-D_P94RyM.js} +1 -1
- package/dist/vue3/{markdownRenderer-D14GhUiu.js.map → markdownRenderer-D_P94RyM.js.map} +1 -1
- package/dist/vue3/{message_input-Bs-fg95i.cjs → message_input-AWgvtwMV.cjs} +2 -2
- package/dist/vue3/{message_input-Bs-fg95i.cjs.map → message_input-AWgvtwMV.cjs.map} +1 -1
- package/dist/vue3/{message_input-DfcdjT6O.js → message_input-CHlTsBGK.js} +2 -2
- package/dist/vue3/{message_input-DfcdjT6O.js.map → message_input-CHlTsBGK.js.map} +1 -1
- package/dist/vue3/node_modules/@tiptap/vue-3.cjs.map +1 -1
- package/dist/vue3/node_modules/@tiptap/vue-3.js +1 -1
- package/dist/vue3/node_modules/@tiptap/vue-3.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/editor/editor.vue.d.ts +2 -0
- package/dist/vue3/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
- package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.d.ts +2 -0
- package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
- package/dist/vue3/resizable-D4-peBOl.js +960 -0
- package/dist/vue3/resizable-D4-peBOl.js.map +1 -0
- package/dist/vue3/resizable-aOVGO_Os.cjs +2 -0
- package/dist/vue3/resizable-aOVGO_Os.cjs.map +1 -0
- package/dist/vue3/resizable_handle-BlKBiWnx.js +307 -0
- package/dist/vue3/resizable_handle-BlKBiWnx.js.map +1 -0
- package/dist/vue3/resizable_handle-RIKS8frB.cjs +2 -0
- package/dist/vue3/resizable_handle-RIKS8frB.cjs.map +1 -0
- package/dist/vue3/resizable_utils-BComtrMV.js +131 -0
- package/dist/vue3/resizable_utils-BComtrMV.js.map +1 -0
- package/dist/vue3/resizable_utils-DhuzXRdP.cjs +2 -0
- package/dist/vue3/resizable_utils-DhuzXRdP.cjs.map +1 -0
- package/dist/vue3/{rich_text_editor-Cu0E6GWr.js → rich_text_editor-Ba67C4Uk.js} +421 -454
- package/dist/vue3/rich_text_editor-Ba67C4Uk.js.map +1 -0
- package/dist/vue3/rich_text_editor-DMP5eTlf.cjs +10 -0
- package/dist/vue3/rich_text_editor-DMP5eTlf.cjs.map +1 -0
- package/dist/vue3/{scroller-axSKchCc.js → scroller-BGVDh3sq.js} +1 -1
- package/dist/vue3/{scroller-axSKchCc.js.map → scroller-BGVDh3sq.js.map} +1 -1
- package/dist/vue3/{scroller-CuYuo1vd.cjs → scroller-CjAsgjl9.cjs} +1 -1
- package/dist/vue3/{scroller-CuYuo1vd.cjs.map → scroller-CjAsgjl9.cjs.map} +1 -1
- package/dist/vue3/{toast-jpudprAC.js → toast-DvPN-bCi.js} +1 -1
- package/dist/vue3/{toast-jpudprAC.js.map → toast-DvPN-bCi.js.map} +1 -1
- package/dist/vue3/{toast-BZ8qQHML.cjs → toast-d8_zmgkL.cjs} +1 -1
- package/dist/vue3/{toast-BZ8qQHML.cjs.map → toast-d8_zmgkL.cjs.map} +1 -1
- package/dist/vue3/useResizableCalculations-BDITle3Q.cjs +2 -0
- package/dist/vue3/useResizableCalculations-BDITle3Q.cjs.map +1 -0
- package/dist/vue3/useResizableCalculations-DAajatT4.js +80 -0
- package/dist/vue3/useResizableCalculations-DAajatT4.js.map +1 -0
- package/package.json +3 -3
- package/dist/vue3/rich_text_editor-Cu0E6GWr.js.map +0 -1
- package/dist/vue3/rich_text_editor-D5_gdzNn.cjs +0 -10
- package/dist/vue3/rich_text_editor-D5_gdzNn.cjs.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../../chunk-Bmb41Sf3.cjs`);const e=require(`../../common/utils/index.cjs`),t=require(`../../_plugin-vue_export-helper-D8jCH6HB.cjs`),n=require(`../../localization/index.cjs`),r=require(`../button/button.cjs`),i=require(`../list-item/list-item.cjs`),a=require(`../../combobox-DhjZxfUw.cjs`),o=require(`../stack/stack.cjs`),s=require(`../tooltip/tooltip.cjs`),c=require(`../popover/popover.cjs`),l=require(`../dropdown/dropdown-separator.cjs`),u=require(`../input/input.cjs`),d=require(`../list-item-group/list-item-group.cjs`),f=require(`../../rich_text_editor-D5_gdzNn.cjs`),p=require(`../rich-text-editor/rich-text-editor-constants.cjs`);require(`../../markdownRenderer-PRpHJ151.cjs`);const m=require(`./editor-constants.cjs`),h=require(`./EditorToolbarButton.cjs`),g=require(`./EditorToolbarDropdownButton.cjs`),_=require(`./EditorToolbarPopoverButton.cjs`);let v=require(`vue`),y=require(`@dialpad/dialtone-icons/vue3`);var b={compatConfig:{MODE:3},name:`DtRecipeEditor`,components:{DtListItemGroup:d.default,DtDropdownSeparator:l.default,DtListItem:i.default,DtRichTextEditor:f.t,DtButton:r.default,DtPopover:c.default,DtStack:o.default,DtInput:u.default,DtTooltip:s.default,DtCombobox:a.t,EditorToolbarButton:h.default,EditorToolbarDropdownButton:g.default,EditorToolbarPopoverButton:_.default,DtIconQuickReply:y.DtIconQuickReply,DtIconBold:y.DtIconBold,DtIconItalic:y.DtIconItalic,DtIconUnderline:y.DtIconUnderline,DtIconStrikethrough:y.DtIconStrikethrough,DtIconListBullet:y.DtIconListBullet,DtIconListOrdered:y.DtIconListOrdered,DtIconAlignLeft:y.DtIconAlignLeft,DtIconAlignCenter:y.DtIconAlignCenter,DtIconAlignRight:y.DtIconAlignRight,DtIconAlignJustify:y.DtIconAlignJustify,DtIconQuote:y.DtIconQuote,DtIconCodeBlock:y.DtIconCodeBlock,DtIconLink2:y.DtIconLink2,DtIconImage:y.DtIconImage,DtIconSearch:y.DtIconSearch,DtIconType:y.DtIconType,DtIconBraces:y.DtIconBraces,DtIconChevronDown:y.DtIconChevronDown,DtIconFontSize:y.DtIconFontSize,DtIconStopFilled:y.DtIconStopFilled},mixins:[],inheritAttrs:!1,props:{modelValue:{type:[Object,String],default:``},editable:{type:Boolean,default:!0},inputAriaLabel:{type:String,required:!0,default:``},inputClass:{type:String,default:``},autoFocus:{type:[Boolean,String,Number],default:!1,validator(e){return typeof e==`string`?p.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(e):!0}},placeholder:{type:String,default:``},maxHeight:{type:String,default:`unset`},setLinkPlaceholder:{type:String,default:``},showBoldButton:{type:Boolean,default:!0},showItalicsButton:{type:Boolean,default:!0},showUnderlineButton:{type:Boolean,default:!0},showStrikeButton:{type:Boolean,default:!0},showListItemsButton:{type:Boolean,default:!0},showOrderedListButton:{type:Boolean,default:!0},showAlignLeftButton:{type:Boolean,default:!0},showAlignCenterButton:{type:Boolean,default:!0},showAlignRightButton:{type:Boolean,default:!0},showAlignJustifyButton:{type:Boolean,default:!0},showQuoteButton:{type:Boolean,default:!0},showCodeBlockButton:{type:Boolean,default:!0},showQuickRepliesButton:{type:Boolean,default:!0},showInlineImageButton:{type:Boolean,default:!1},showVariableButton:{type:Boolean,default:!1},variableCategories:{type:Array,default:()=>[]},showAddLink:{type:Object,default:()=>({showAddLinkButton:!0})},showFontStyleButton:{type:Boolean,default:!1},showFontSizeButton:{type:Boolean,default:!1},showFontColorButton:{type:Boolean,default:!1},fontStyles:{type:Array,default:()=>[{name:`Arial`,value:null},{name:`Georgia`,value:`Georgia`},{name:`Helvetica`,value:`Helvetica`},{name:`Verdana`,value:`Verdana`},{name:`Times New Roman`,value:`Times New Roman`}]},fontSizes:{type:Array,default:()=>[{name:`Small`,value:`12px`},{name:`Normal`,value:`15px`},{name:`Large`,value:`24px`},{name:`Huge`,value:`36px`}]},allowBackgroundColor:{type:Boolean,default:!1},allowLineHeight:{type:Boolean,default:!1},preserveWhitespace:{type:[Boolean,String],default:`full`},useDivTags:{type:Boolean,default:!1},allowTables:{type:Boolean,default:!1},allowImageResize:{type:Boolean,default:!1}},emits:[`focus`,`blur`,`input`,`update:modelValue`,`quick-replies-click`,`inline-image-click`,`text-input`],data(){return{internalInputValue:this.modelValue,hasFocus:!1,linkOptions:{class:`d-recipe-editor__link`},currentFontColor:void 0,showLinkInput:!1,fontStyleSearch:``,linkInput:``,currentButtonRefIndex:0,variableSearchValue:``,i18n:new n.DialtoneLocalization}},computed:{inputLength(){return this.internalInputValue.length},htmlOutputFormat(){return p.RICH_TEXT_EDITOR_OUTPUT_FORMATS[2]},flattenedVariableItems(){return this.variableCategories?this.variableCategories.reduce((e,t)=>e.concat(t.items||[]),[]):[]},showingTextFormatButtons(){return this.showBoldButton||this.showItalicsButton||this.showStrikeButton||this.showUnderlineButton},showingAlignmentButtons(){return this.showAlignLeftButton||this.showAlignCenterButton||this.showAlignRightButton||this.showAlignJustifyButton},showingListButtons(){return this.showListItemsButton||this.showOrderedListButton},orderedRefs(){let e=this.buttonGroups.reduce(function(e,t){return t.buttonGroup.forEach(n=>{e.push(this.getButtonRef(t.key,n.selector))},this),e}.bind(this),[]);return e.push(this.getButtonRef(`custom`,`link`)),e},buttonGroups(){let e=this.individualButtons.map(e=>({key:e.selector,buttonGroup:[e]}));return[{key:`new`,buttonGroup:this.newButtons},{key:`format`,buttonGroup:this.textFormatButtons},{key:`alignment`,buttonGroup:this.alignmentButtons},{key:`list`,buttonGroup:this.listButtons},...e].filter(e=>e.buttonGroup.length>0)},newButtons(){return[{showBtn:this.showQuickRepliesButton,buttonType:`button`,label:this.i18n.$t(`DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL`),selector:`quickReplies`,icon:y.DtIconQuickReply,dataQA:`dt-recipe-editor-quick-replies-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL`),onClick:this.onQuickRepliesClick}].filter(e=>e.showBtn)},textFormatButtons(){return[{showBtn:this.showFontStyleButton,buttonType:`popover`,selector:`fontStyle`,icon:y.DtIconType,dataQA:`dt-recipe-editor-font-style-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_FONT_STYLE_BUTTON_LABEL`)},{showBtn:this.showFontSizeButton,buttonType:`popover`,selector:`fontSize`,icon:y.DtIconFontSize,dataQA:`dt-recipe-editor-font-size-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_FONT_SIZE_BUTTON_LABEL`)},{showBtn:this.showFontColorButton,buttonType:`custom`,selector:`fontColor`,icon:y.DtIconStopFilled,dataQA:`dt-recipe-editor-font-color-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_FONT_COLOR_BUTTON_LABEL`),onClick:this.onColorPickerButtonClick},{showBtn:this.showBoldButton,buttonType:`button`,selector:`bold`,icon:y.DtIconBold,dataQA:`dt-recipe-editor-bold-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_BOLD_BUTTON_LABEL`),onClick:this.onBoldTextToggle},{showBtn:this.showItalicsButton,buttonType:`button`,selector:`italic`,icon:y.DtIconItalic,dataQA:`dt-recipe-editor-italics-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_ITALICS_BUTTON_LABEL`),onClick:this.onItalicTextToggle},{showBtn:this.showUnderlineButton,buttonType:`button`,selector:`underline`,icon:y.DtIconUnderline,dataQA:`dt-recipe-editor-underline-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_UNDERLINE_BUTTON_LABEL`),onClick:this.onUnderlineTextToggle},{showBtn:this.showStrikeButton,buttonType:`button`,selector:`strike`,icon:y.DtIconStrikethrough,dataQA:`dt-recipe-editor-strike-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_STRIKE_BUTTON_LABEL`),onClick:this.onStrikethroughTextToggle}].filter(e=>e.showBtn)},alignmentButtons(){return[{showBtn:this.showAlignLeftButton,buttonType:`button`,selector:{textAlign:`left`},icon:y.DtIconAlignLeft,dataQA:`dt-recipe-editor-align-left-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_ALIGN_LEFT_BUTTON_LABEL`),onClick:()=>this.onTextAlign(`left`)},{showBtn:this.showAlignCenterButton,buttonType:`button`,selector:{textAlign:`center`},icon:y.DtIconAlignCenter,dataQA:`dt-recipe-editor-align-center-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_ALIGN_CENTER_BUTTON_LABEL`),onClick:()=>this.onTextAlign(`center`)},{showBtn:this.showAlignRightButton,buttonType:`button`,selector:{textAlign:`right`},icon:y.DtIconAlignRight,dataQA:`dt-recipe-editor-align-right-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_ALIGN_RIGHT_BUTTON_LABEL`),onClick:()=>this.onTextAlign(`right`)},{showBtn:this.showAlignJustifyButton,buttonType:`button`,selector:{textAlign:`justify`},icon:y.DtIconAlignJustify,dataQA:`dt-recipe-editor-align-justify-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_ALIGN_JUSTIFY_BUTTON_LABEL`),onClick:()=>this.onTextAlign(`justify`)}].filter(e=>e.showBtn)},listButtons(){return[{showBtn:this.showListItemsButton,buttonType:`button`,selector:`bulletList`,icon:y.DtIconListBullet,dataQA:`dt-recipe-editor-list-items-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_BULLET_LIST_BUTTON_LABEL`),onClick:this.onBulletListToggle},{showBtn:this.showOrderedListButton,buttonType:`button`,selector:`orderedList`,icon:y.DtIconListOrdered,dataQA:`dt-recipe-editor-ordered-list-items-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_ORDERED_LIST_BUTTON_LABEL`),onClick:this.onOrderedListToggle}].filter(e=>e.showBtn)},individualButtons(){return[{showBtn:this.showQuoteButton,buttonType:`button`,selector:`blockquote`,icon:y.DtIconQuote,dataQA:`dt-recipe-editor-blockquote-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_QUOTE_BUTTON_LABEL`),onClick:this.onBlockquoteToggle},{showBtn:this.showCodeBlockButton,buttonType:`button`,selector:`codeBlock`,icon:y.DtIconCodeBlock,dataQA:`dt-recipe-editor-code-block-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_CODE_BUTTON_LABEL`),onClick:this.onCodeBlockToggle},{showBtn:this.showInlineImageButton,buttonType:`button`,selector:`image`,icon:y.DtIconImage,dataQA:`dt-recipe-editor-inline-image-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_IMAGE_BUTTON_LABEL`),onClick:this.onInsertInlineImageClick},{showBtn:this.showVariableButton,buttonType:`popover`,selector:`variable`,icon:y.DtIconBraces,dataQA:`dt-recipe-editor-variable-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_VARIABLE_BUTTON_LABEL`)}].filter(e=>e.showBtn)},linkButton(){return{showBtn:this.showAddLink.showAddLinkButton,buttonType:`custom`,selector:`link`,icon:y.DtIconLink2,dataQA:`dt-recipe-editor-add-link-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_LINK_BUTTON_LABEL`),onClick:this.openLinkInput}},confirmSetLinkButtonLabels(){return this.i18n.$ta(`DIALTONE_EDITOR_CONFIRM_SET_LINK_BUTTON`)},cancelSetLinkButtonLabels(){return this.i18n.$ta(`DIALTONE_EDITOR_CANCEL_SET_LINK_BUTTON`)},removeLinkButtonLabels(){return this.i18n.$ta(`DIALTONE_EDITOR_REMOVE_LINK_BUTTON`)},showAddLinkButtonLabels(){return this.i18n.$ta(`DIALTONE_EDITOR_ADD_LINK_BUTTON`)},filteredFontStyles(){let e=this.fontStyleSearch.toLowerCase();return this.fontStyles.filter(t=>t.name.toLowerCase().includes(e))},filteredCategories(){return this.variableCategories.filter(e=>this.getFilteredItemsForCategory(e).length)},colorPickerInput(){return this.$refs.editorRoot?.querySelector(`.colorPickerInput`)},isDefaultFontColor(){return this.currentFontColor===m.EDITOR_DEFAULT_FONT_COLOR},actionBarBtn(){let e=this.$refs[this.orderedRefs[this.currentButtonRefIndex]][0]?.$refs?.buttonRef||this.$refs[this.orderedRefs[this.currentButtonRefIndex]];return Array.isArray(e)?e[0]:e}},watch:{modelValue(e){this.internalInputValue=e}},methods:{removeClassStyleAttrs:e.removeClassStyleAttrs,addClassStyleAttrs:e.addClassStyleAttrs,focusEditor(){this.$refs.richTextEditor?.editor?.commands.focus()},onInputFocus(e){e?.stopPropagation()},removeLink(){this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run(),this.closeLinkInput()},setLink(e){let t=this.$refs.richTextEditor?.editor;if(e?.preventDefault(),e?.stopPropagation(),!this.linkInput){this.removeLink();return}m.EDITOR_SUPPORTED_LINK_PROTOCOLS.find(e=>e.test(this.linkInput))||(this.linkInput=`${m.EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`);let n=t?.view?.state?.selection;n.anchor===n.head?t.chain().focus().insertContentAt(n.anchor,`<a class="${this.linkOptions.class}" href=${this.linkInput}>${this.linkInput}</a>`).run():t.chain().focus().extendMarkRange(`link`).setLink({href:this.linkInput,class:this.linkOptions.class}).run(),this.closeLinkInput()},openLinkInput(){this.showLinkInput=!0},updateInput(e){if(!e)return this.closeLinkInput();this.linkInput=this.$refs.richTextEditor?.editor?.getAttributes(`link`)?.href},closeLinkInput(){this.showLinkInput=!1,this.linkInput=``,this.$refs.richTextEditor.editor?.chain().focus()},onBoldTextToggle(){this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run()},onItalicTextToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run()},onUnderlineTextToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run()},onStrikethroughTextToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run()},onTextAlign(e){if(this.$refs.richTextEditor?.editor?.isActive({textAlign:e}))return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(e).run()},onBulletListToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run()},onOrderedListToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run()},onCodeBlockToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run()},onQuickRepliesClick(){this.$emit(`quick-replies-click`)},onInsertInlineImageClick(){this.$emit(`inline-image-click`)},insertVariable(e,t){this.$refs.richTextEditor?.editor.chain().focus().insertVariable({id:t.id,placeholder:t.placeholder||``,altText:``,enableAltText:t.enableAltText}).run()},insertInlineImage(e){this.$refs.richTextEditor?.editor.chain().focus().setImage({src:e}).run()},insertInMessageBody(e){this.$refs.richTextEditor?.editor.chain().focus().insertContent(e).run()},setCursorPosition(e=null){this.$refs.richTextEditor?.editor.chain().focus(e).run()},onBlockquoteToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().run()},onTextInput(e){this.$emit(`text-input`,e)},onFocus(e){this.hasFocus=!0,this.$emit(`focus`,e)},onBlur(e){this.hasFocus=!1,this.$emit(`blur`,e)},onInput(e){this.$emit(`input`,e),this.$emit(`update:modelValue`,e)},onSelected(){this.updateFontColorInput()},getButtonKey(e,t){return`${e}-${JSON.stringify(t)}`},getButtonRef(e,t){return`${this.getButtonKey(e,t)}-ref`},canFocus(e){return e===this.orderedRefs[this.currentButtonRefIndex]},shiftActionBarFocusRight(){this.shiftButtonRefIndex(1)},shiftActionBarFocusLeft(){this.shiftButtonRefIndex(-1)},shiftButtonRefIndex(e){let t=this.actionBarBtn,n=(this.currentButtonRefIndex+e)%this.orderedRefs.length;this.currentButtonRefIndex=n>=0?n:this.orderedRefs.length+n;let r=this.actionBarBtn;t.$el.blur(),r.$el.focus()},onFontStyleSelect(e){e?this.$refs.richTextEditor?.editor?.chain().focus().setFontFamily(e).run():this.$refs.richTextEditor?.editor?.chain().focus().unsetFontFamily().run(),this.$refs.richTextEditor?.editor?.commands.focus()},isCurrentFontFamily(e){return e?this.$refs.richTextEditor?.editor?.isActive(`textStyle`,{fontFamily:e}):!this.$refs.richTextEditor?.editor?.getAttributes(`textStyle`)?.fontFamily},onFontSizeSelect(e){this.$refs.richTextEditor?.editor?.chain().focus().setFontSize(e).run(),this.$refs.richTextEditor?.editor?.commands.focus()},isCurrentFontSize(e){return e?this.$refs.richTextEditor?.editor?.isActive(`textStyle`,{fontSize:e}):!this.$refs.richTextEditor?.editor?.getAttributes(`textStyle`)?.fontSize},getFilteredItemsForCategory(e){let t=this.variableSearchValue.toLowerCase();return e.name.toLowerCase().includes(t)?e.items:e.items.filter(e=>e.name.toLowerCase().includes(t))},updateFontColorInput(){this.currentFontColor=this.$refs.richTextEditor?.editor?.getAttributes(`textStyle`)?.color||`#000000`},onColorPickerButtonClick(){this.colorPickerInput?.click()},onColorPickerInput(e){this.$refs.richTextEditor?.editor?.chain().focus().setColor(e).run(),this.$refs.richTextEditor?.editor?.commands.focus(),this.updateFontColorInput()}}},x={class:`d-recipe-editor__popover-content`};function S(e,t,n,r,i,a){let o=(0,v.resolveComponent)(`dt-icon-search`),s=(0,v.resolveComponent)(`dt-input`),c=(0,v.resolveComponent)(`dt-list-item`),l=(0,v.resolveComponent)(`dt-combobox`),u=(0,v.resolveComponent)(`editor-toolbar-popover-button`),d=(0,v.resolveComponent)(`editor-toolbar-dropdown-button`),f=(0,v.resolveComponent)(`dt-button`),p=(0,v.resolveComponent)(`dt-dropdown-separator`),m=(0,v.resolveComponent)(`dt-list-item-group`),h=(0,v.resolveComponent)(`editor-toolbar-button`),g=(0,v.resolveComponent)(`dt-stack`),_=(0,v.resolveComponent)(`dt-tooltip`),y=(0,v.resolveComponent)(`dt-popover`),b=(0,v.resolveComponent)(`dt-rich-text-editor`),S=(0,v.resolveDirective)(`dt-tooltip`);return(0,v.openBlock)(),(0,v.createElementBlock)(`div`,(0,v.mergeProps)({ref:`editorRoot`,class:`d-recipe-editor`},a.addClassStyleAttrs(e.$attrs),{"data-qa":`dt-recipe-editor`,role:`presentation`,onClick:t[7]||(t[7]=t=>e.$refs.richTextEditor.focusEditor())}),[(0,v.createVNode)(g,{class:`d-recipe-editor__top-bar`,direction:`row`,gap:`450`},{default:(0,v.withCtx)(()=>[((0,v.openBlock)(!0),(0,v.createElementBlock)(v.Fragment,null,(0,v.renderList)(a.buttonGroups,r=>((0,v.openBlock)(),(0,v.createBlock)(g,{key:r.key,direction:`row`,gap:`300`},{default:(0,v.withCtx)(()=>[((0,v.openBlock)(!0),(0,v.createElementBlock)(v.Fragment,null,(0,v.renderList)(r.buttonGroup,g=>((0,v.openBlock)(),(0,v.createElementBlock)(v.Fragment,null,[g.buttonType===`popover`&&g.selector===`fontStyle`?((0,v.openBlock)(),(0,v.createBlock)(u,{key:a.getButtonKey(r.key,g.selector),ref_for:!0,ref:a.getButtonRef(r.key,g.selector),"is-active":e.$refs.richTextEditor?.editor?.isActive(g.selector),"tooltip-message":g.tooltipMessage,"data-qa":g.dataQA,"popover-data-qa":`dt-recipe-editor-font-style-input-popover`,tabindex:a.canFocus(a.getButtonRef(r.key,g.selector))?0:-1,icon:g.icon,onShiftFocusRight:a.shiftActionBarFocusRight,onShiftFocusLeft:a.shiftActionBarFocusLeft},{content:(0,v.withCtx)(({close:e})=>[(0,v.createVNode)(l,{label:``,"label-visible":!1,"show-list":!0,"click-on-select":!0,onEscape:t=>e()},{input:(0,v.withCtx)(({inputProps:e})=>[(0,v.createVNode)(s,(0,v.mergeProps)({ref_for:!0},e,{modelValue:i.fontStyleSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>i.fontStyleSearch=e),"root-class":`d-p8 d-pb4 d-w216`,type:`search`,placeholder:i.i18n.$t(`DIALTONE_EDITOR_FONT_STYLE_SEARCH_PLACEHOLDER`),size:`sm`,role:`menuitem`}),{leftIcon:(0,v.withCtx)(({iconSize:e})=>[(0,v.createVNode)(o,{size:e},null,8,[`size`])]),_:1},16,[`modelValue`,`placeholder`])]),list:(0,v.withCtx)(({listProps:t})=>[(0,v.createElementVNode)(`ul`,(0,v.mergeProps)({ref_for:!0},t),[((0,v.openBlock)(!0),(0,v.createElementBlock)(v.Fragment,null,(0,v.renderList)(a.filteredFontStyles,t=>((0,v.openBlock)(),(0,v.createBlock)(c,{key:t.name,selected:a.isCurrentFontFamily(t.value),style:(0,v.normalizeStyle)({fontFamily:t.value||`inherit`}),role:`option`,"navigation-type":`arrow-keys`,onClick:n=>{e(a.focusEditor),a.onFontStyleSelect(t.value)}},{default:(0,v.withCtx)(()=>[(0,v.createTextVNode)((0,v.toDisplayString)(t.name),1)]),_:2},1032,[`selected`,`style`,`onClick`]))),128))],16)]),_:2},1032,[`onEscape`])]),_:1},8,[`is-active`,`tooltip-message`,`data-qa`,`tabindex`,`icon`,`onShiftFocusRight`,`onShiftFocusLeft`])):g.buttonType===`popover`&&g.selector===`fontSize`?((0,v.openBlock)(),(0,v.createBlock)(d,{key:a.getButtonKey(r.key,g.selector),ref_for:!0,ref:a.getButtonRef(r.key,g.selector),"is-active":e.$refs.richTextEditor?.editor?.isActive(g.selector),"tooltip-message":g.tooltipMessage,"data-qa":g.dataQA,"dropdown-data-qa":`dt-recipe-editor-font-size-input-popover`,tabindex:a.canFocus(a.getButtonRef(r.key,g.selector))?0:-1,icon:g.icon,onShiftFocusRight:a.shiftActionBarFocusRight,onShiftFocusLeft:a.shiftActionBarFocusLeft},{list:(0,v.withCtx)(({close:e})=>[((0,v.openBlock)(!0),(0,v.createElementBlock)(v.Fragment,null,(0,v.renderList)(n.fontSizes,t=>((0,v.openBlock)(),(0,v.createBlock)(c,{key:t.name,selected:a.isCurrentFontSize(t.value),role:`menuitem`,"navigation-type":`arrow-keys`,onClick:n=>{e(a.focusEditor),a.onFontSizeSelect(t.value,n)}},{default:(0,v.withCtx)(()=>[(0,v.createElementVNode)(`span`,{style:(0,v.normalizeStyle)({fontSize:t.value})},(0,v.toDisplayString)(t.name),5)]),_:2},1032,[`selected`,`onClick`]))),128))]),_:1},8,[`is-active`,`tooltip-message`,`data-qa`,`tabindex`,`icon`,`onShiftFocusRight`,`onShiftFocusLeft`])):g.buttonType===`custom`&&g.selector===`fontColor`?(0,v.withDirectives)(((0,v.openBlock)(),(0,v.createBlock)(f,{key:a.getButtonKey(r.key,g.selector),ref_for:!0,ref:a.getButtonRef(r.key,g.selector),kind:`muted`,importance:`clear`,size:`xs`,active:e.$refs.richTextEditor?.editor?.isActive(g.selector),tabindex:a.canFocus(a.getButtonRef(r.key,g.selector))?0:-1,"aria-label":g.tooltipMessage,"data-qa":g.dataQA,onKeydown:[(0,v.withKeys)((0,v.withModifiers)(a.shiftActionBarFocusRight,[`stop`]),[`right`]),(0,v.withKeys)((0,v.withModifiers)(a.shiftActionBarFocusLeft,[`stop`]),[`left`])],onClick:e=>g.onClick()},{icon:(0,v.withCtx)(()=>[((0,v.openBlock)(),(0,v.createBlock)((0,v.resolveDynamicComponent)(g.icon),{size:`200`,style:(0,v.normalizeStyle)(a.isDefaultFontColor?{}:{color:i.currentFontColor})},null,8,[`style`])),(0,v.createVNode)(s,{value:i.currentFontColor,"root-class":`d-w0 d-h0 d-of-hidden`,"input-class":`colorPickerInput d-w0 d-h0 d-p0 d-bar0`,"input-wrapper-class":`d-w0 d-h0 d-ba-none`,size:`sm`,type:`color`,onInput:a.onColorPickerInput,onClick:t[1]||(t[1]=(0,v.withModifiers)(()=>{},[`stop`]))},null,8,[`value`,`onInput`])]),_:2},1032,[`active`,`tabindex`,`aria-label`,`data-qa`,`onKeydown`,`onClick`])),[[S,{message:g.tooltipMessage,placement:`top`,externalAnchorElement:e.$refs[a.getButtonRef(r.key,g.selector)]?.$el}]]):g.buttonType===`popover`&&g.selector===`variable`?((0,v.openBlock)(),(0,v.createBlock)(u,{key:a.getButtonKey(r.key,g.selector),ref_for:!0,ref:a.getButtonRef(r.key,g.selector),"is-active":!1,"tooltip-message":g.tooltipMessage,"data-qa":g.dataQA,"popover-data-qa":`dt-recipe-editor-variable-popover`,tabindex:a.canFocus(a.getButtonRef(r.key,g.selector))?0:-1,icon:g.icon,onShiftFocusRight:a.shiftActionBarFocusRight,onShiftFocusLeft:a.shiftActionBarFocusLeft},{content:(0,v.withCtx)(({close:e})=>[(0,v.createVNode)(l,{label:``,"label-visible":!1,"show-list":!0,"click-on-select":!0,onEscape:t=>e()},{input:(0,v.withCtx)(({inputProps:e})=>[(0,v.createVNode)(s,(0,v.mergeProps)({ref_for:!0},e,{modelValue:i.variableSearchValue,"onUpdate:modelValue":t[2]||(t[2]=e=>i.variableSearchValue=e),"root-class":`d-p8 d-pb4 d-w264`,type:`search`,placeholder:i.i18n.$t(`DIALTONE_EDITOR_VARIABLE_POPOVER_SEARCH_PLACEHOLDER`),size:`md`,role:`menuitem`}),{leftIcon:(0,v.withCtx)(({iconSize:e})=>[(0,v.createVNode)(o,{size:e},null,8,[`size`])]),_:1},16,[`modelValue`,`placeholder`])]),list:(0,v.withCtx)(({listProps:t})=>[(0,v.createElementVNode)(`div`,(0,v.mergeProps)({ref_for:!0},t),[((0,v.openBlock)(!0),(0,v.createElementBlock)(v.Fragment,null,(0,v.renderList)(a.filteredCategories,(t,n)=>((0,v.openBlock)(),(0,v.createBlock)(m,{key:t.name,heading:t.name,"heading-class":`d-headline--sm-compact d-p8`},{default:(0,v.withCtx)(()=>[((0,v.openBlock)(!0),(0,v.createElementBlock)(v.Fragment,null,(0,v.renderList)(a.getFilteredItemsForCategory(t),n=>((0,v.openBlock)(),(0,v.createBlock)(c,{key:t.name+n.name,role:`option`,"navigation-type":`arrow-keys`,onClick:r=>{a.insertVariable(t.name,n),e(a.focusEditor)}},{default:(0,v.withCtx)(()=>[(0,v.createTextVNode)((0,v.toDisplayString)(n.name),1)]),_:2},1032,[`onClick`]))),128)),n<a.filteredCategories.length-1?((0,v.openBlock)(),(0,v.createBlock)(p,{key:0})):(0,v.createCommentVNode)(``,!0)]),_:2},1032,[`heading`]))),128))],16)]),_:2},1032,[`onEscape`])]),_:1},8,[`tooltip-message`,`data-qa`,`tabindex`,`icon`,`onShiftFocusRight`,`onShiftFocusLeft`])):g.buttonType===`button`?((0,v.openBlock)(),(0,v.createBlock)(h,{key:a.getButtonKey(r.key,g.selector),ref_for:!0,ref:a.getButtonRef(r.key,g.selector),"is-active":e.$refs.richTextEditor?.editor?.isActive(g.selector),"tooltip-message":g.tooltipMessage,"data-qa":g.dataQA,tabindex:a.canFocus(a.getButtonRef(r.key,g.selector))?0:-1,icon:g.icon,label:g.label,"on-click":g.onClick,onShiftFocusRight:a.shiftActionBarFocusRight,onShiftFocusLeft:a.shiftActionBarFocusLeft},null,8,[`is-active`,`tooltip-message`,`data-qa`,`tabindex`,`icon`,`label`,`on-click`,`onShiftFocusRight`,`onShiftFocusLeft`])):(0,v.createCommentVNode)(``,!0)],64))),256)),t[8]||(t[8]=(0,v.createElementVNode)(`div`,{class:`d-recipe-editor__button-group-divider`},null,-1))]),_:2},1024))),128)),a.linkButton.showBtn?((0,v.openBlock)(),(0,v.createBlock)(g,{key:0,direction:`row`,gap:`300`},{default:(0,v.withCtx)(()=>[(0,v.createVNode)(y,{open:i.showLinkInput,"show-close-button":!1,"data-qa":`dt-recipe-editor-link-input-popover`,padding:`none`,placement:`bottom-start`,onClick:[a.onInputFocus,(0,v.withModifiers)(a.onInputFocus,[`stop`])],onOpened:a.updateInput},{anchor:(0,v.withCtx)(()=>[((0,v.openBlock)(),(0,v.createBlock)(_,{key:a.linkButton.key,message:a.linkButton.tooltipMessage,placement:`top`},{anchor:(0,v.withCtx)(()=>[(0,v.createVNode)(f,{ref:a.getButtonRef(`custom`,`link`),active:e.$refs.richTextEditor?.editor?.isActive(a.linkButton.selector),"aria-label":a.linkButton.tooltipMessage,"data-qa":a.linkButton.dataQA,tabindex:a.canFocus(a.getButtonRef(`custom`,`link`))?0:-1,importance:`clear`,kind:`muted`,size:`xs`,onClick:t[3]||(t[3]=e=>a.linkButton.onClick()),onKeydown:[(0,v.withKeys)((0,v.withModifiers)(a.shiftActionBarFocusRight,[`stop`]),[`right`]),(0,v.withKeys)((0,v.withModifiers)(a.shiftActionBarFocusLeft,[`stop`]),[`left`])]},{icon:(0,v.withCtx)(()=>[((0,v.openBlock)(),(0,v.createBlock)((0,v.resolveDynamicComponent)(a.linkButton.icon),{size:`200`}))]),_:1},8,[`active`,`aria-label`,`data-qa`,`tabindex`,`onKeydown`])]),_:1},8,[`message`]))]),content:(0,v.withCtx)(()=>[(0,v.createElementVNode)(`div`,x,[(0,v.createElementVNode)(`span`,null,(0,v.toDisplayString)(a.showAddLinkButtonLabels.title),1),(0,v.createVNode)(s,{modelValue:i.linkInput,"onUpdate:modelValue":t[4]||(t[4]=e=>i.linkInput=e),"input-aria-label":a.showAddLinkButtonLabels[`aria-label`],placeholder:n.setLinkPlaceholder,"data-qa":`dt-recipe-editor-link-input`,"input-wrapper-class":`d-recipe-editor-link__input-wrapper`,onClick:[a.onInputFocus,(0,v.withModifiers)(a.onInputFocus,[`stop`])],onFocus:a.onInputFocus,onKeydown:(0,v.withKeys)(a.setLink,[`enter`])},null,8,[`modelValue`,`input-aria-label`,`placeholder`,`onClick`,`onFocus`,`onKeydown`])])]),footerContent:(0,v.withCtx)(()=>[(0,v.createVNode)(g,{direction:`row`,gap:`300`,class:`d-recipe-editor__popover-footer`},{default:(0,v.withCtx)(()=>[(0,v.createVNode)(f,(0,v.mergeProps)({"data-qa":`dt-recipe-editor-remove-link-btn`,importance:`clear`,kind:`muted`,size:`sm`},a.removeLinkButtonLabels,{onClick:a.removeLink}),{default:(0,v.withCtx)(()=>[(0,v.createTextVNode)((0,v.toDisplayString)(a.removeLinkButtonLabels.title),1)]),_:1},16,[`onClick`]),(0,v.createVNode)(f,(0,v.mergeProps)({"data-qa":`dt-recipe-editor-set-link-cancel-btn`,importance:`clear`,kind:`muted`,size:`sm`},a.cancelSetLinkButtonLabels,{onClick:a.closeLinkInput}),{default:(0,v.withCtx)(()=>[(0,v.createTextVNode)((0,v.toDisplayString)(a.cancelSetLinkButtonLabels.title),1)]),_:1},16,[`onClick`]),(0,v.createVNode)(f,(0,v.mergeProps)({"data-qa":`dt-recipe-editor-set-link-confirm-btn`,size:`sm`},a.confirmSetLinkButtonLabels,{onClick:a.setLink}),{default:(0,v.withCtx)(()=>[(0,v.createTextVNode)((0,v.toDisplayString)(a.confirmSetLinkButtonLabels.title),1)]),_:1},16,[`onClick`])]),_:1})]),_:1},8,[`open`,`onClick`,`onOpened`])]),_:1})):(0,v.createCommentVNode)(``,!0)]),_:1}),(0,v.createElementVNode)(`div`,{style:(0,v.normalizeStyle)({"max-height":n.maxHeight}),class:(0,v.normalizeClass)([`d-recipe-editor__content`,{"d-recipe-editor__content-image-resize":n.allowImageResize}])},[(0,v.createVNode)(b,(0,v.mergeProps)({ref:`richTextEditor`,modelValue:i.internalInputValue,"onUpdate:modelValue":t[5]||(t[5]=e=>i.internalInputValue=e),"allow-font-color":!0,"allow-font-family":!0,"allow-inline-images":!0,"allow-line-breaks":!0,"allow-variable":!0,"allow-font-size":n.showFontSizeButton,"allow-background-color":n.allowBackgroundColor,"allow-line-height":n.allowLineHeight,"variable-items":a.flattenedVariableItems,"hide-link-bubble-menu":!0,"auto-focus":n.autoFocus,editable:n.editable,"input-aria-label":n.inputAriaLabel,"input-class":`d-recipe-editor__content-input ${n.inputClass}`,link:!0,"output-format":a.htmlOutputFormat,placeholder:n.placeholder,"preserve-whitespace":n.preserveWhitespace,"use-div-tags":n.useDivTags,"allow-tables":n.allowTables,"allow-image-resize":n.allowImageResize,"data-qa":`dt-rich-text-editor`},a.removeClassStyleAttrs(e.$attrs),{onTextInput:a.onTextInput,onBlur:a.onBlur,onFocus:a.onFocus,onInput:t[6]||(t[6]=e=>a.onInput(e)),onSelected:a.onSelected}),null,16,[`modelValue`,`allow-font-size`,`allow-background-color`,`allow-line-height`,`variable-items`,`auto-focus`,`editable`,`input-aria-label`,`input-class`,`output-format`,`placeholder`,`preserve-whitespace`,`use-div-tags`,`allow-tables`,`allow-image-resize`,`onTextInput`,`onBlur`,`onFocus`,`onSelected`])],6)],16)}var C=t.t(b,[[`render`,S]]);exports.default=C;
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../../chunk-Bmb41Sf3.cjs`);const e=require(`../../common/utils/index.cjs`),t=require(`../../_plugin-vue_export-helper-D8jCH6HB.cjs`),n=require(`../../localization/index.cjs`),r=require(`../button/button.cjs`),i=require(`../list-item/list-item.cjs`),a=require(`../../combobox-DhjZxfUw.cjs`),o=require(`../stack/stack.cjs`),s=require(`../tooltip/tooltip.cjs`),c=require(`../popover/popover.cjs`),l=require(`../dropdown/dropdown-separator.cjs`),u=require(`../input/input.cjs`),d=require(`../list-item-group/list-item-group.cjs`),f=require(`../../rich_text_editor-DMP5eTlf.cjs`),p=require(`../rich-text-editor/rich-text-editor-constants.cjs`),m=require(`./editor-constants.cjs`),h=require(`./EditorToolbarButton.cjs`),g=require(`./EditorToolbarDropdownButton.cjs`),_=require(`./EditorToolbarPopoverButton.cjs`);let v=require(`vue`),y=require(`@dialpad/dialtone-icons/vue3`);var b={compatConfig:{MODE:3},name:`DtRecipeEditor`,components:{DtListItemGroup:d.default,DtDropdownSeparator:l.default,DtListItem:i.default,DtRichTextEditor:f.t,DtButton:r.default,DtPopover:c.default,DtStack:o.default,DtInput:u.default,DtTooltip:s.default,DtCombobox:a.t,EditorToolbarButton:h.default,EditorToolbarDropdownButton:g.default,EditorToolbarPopoverButton:_.default,DtIconQuickReply:y.DtIconQuickReply,DtIconBold:y.DtIconBold,DtIconItalic:y.DtIconItalic,DtIconUnderline:y.DtIconUnderline,DtIconStrikethrough:y.DtIconStrikethrough,DtIconListBullet:y.DtIconListBullet,DtIconListOrdered:y.DtIconListOrdered,DtIconAlignLeft:y.DtIconAlignLeft,DtIconAlignCenter:y.DtIconAlignCenter,DtIconAlignRight:y.DtIconAlignRight,DtIconAlignJustify:y.DtIconAlignJustify,DtIconQuote:y.DtIconQuote,DtIconCodeBlock:y.DtIconCodeBlock,DtIconLink2:y.DtIconLink2,DtIconImage:y.DtIconImage,DtIconSearch:y.DtIconSearch,DtIconType:y.DtIconType,DtIconBraces:y.DtIconBraces,DtIconChevronDown:y.DtIconChevronDown,DtIconFontSize:y.DtIconFontSize,DtIconStopFilled:y.DtIconStopFilled},mixins:[],inheritAttrs:!1,props:{modelValue:{type:[Object,String],default:``},editable:{type:Boolean,default:!0},inputAriaLabel:{type:String,required:!0,default:``},inputClass:{type:String,default:``},autoFocus:{type:[Boolean,String,Number],default:!1,validator(e){return typeof e==`string`?p.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(e):!0}},placeholder:{type:String,default:``},maxHeight:{type:String,default:`unset`},setLinkPlaceholder:{type:String,default:``},showBoldButton:{type:Boolean,default:!0},showItalicsButton:{type:Boolean,default:!0},showUnderlineButton:{type:Boolean,default:!0},showStrikeButton:{type:Boolean,default:!0},showListItemsButton:{type:Boolean,default:!0},showOrderedListButton:{type:Boolean,default:!0},showAlignLeftButton:{type:Boolean,default:!0},showAlignCenterButton:{type:Boolean,default:!0},showAlignRightButton:{type:Boolean,default:!0},showAlignJustifyButton:{type:Boolean,default:!0},showQuoteButton:{type:Boolean,default:!0},showCodeBlockButton:{type:Boolean,default:!0},showQuickRepliesButton:{type:Boolean,default:!0},showInlineImageButton:{type:Boolean,default:!1},showVariableButton:{type:Boolean,default:!1},variableCategories:{type:Array,default:()=>[]},showAddLink:{type:Object,default:()=>({showAddLinkButton:!0})},showFontStyleButton:{type:Boolean,default:!1},showFontSizeButton:{type:Boolean,default:!1},showFontColorButton:{type:Boolean,default:!1},fontStyles:{type:Array,default:()=>[{name:`Arial`,value:null},{name:`Georgia`,value:`Georgia`},{name:`Helvetica`,value:`Helvetica`},{name:`Verdana`,value:`Verdana`},{name:`Times New Roman`,value:`Times New Roman`}]},fontSizes:{type:Array,default:()=>[{name:`Small`,value:`12px`},{name:`Normal`,value:`15px`},{name:`Large`,value:`24px`},{name:`Huge`,value:`36px`}]},allowBackgroundColor:{type:Boolean,default:!1},allowLineHeight:{type:Boolean,default:!1},preserveWhitespace:{type:[Boolean,String],default:`full`},useDivTags:{type:Boolean,default:!1},allowTables:{type:Boolean,default:!1},allowImageResize:{type:Boolean,default:!1}},emits:[`focus`,`blur`,`input`,`update:modelValue`,`quick-replies-click`,`inline-image-click`,`text-input`],data(){return{internalInputValue:this.modelValue,hasFocus:!1,linkOptions:{class:`d-recipe-editor__link`},currentFontColor:void 0,showLinkInput:!1,fontStyleSearch:``,linkInput:``,currentButtonRefIndex:0,variableSearchValue:``,i18n:new n.DialtoneLocalization}},computed:{inputLength(){return this.internalInputValue.length},htmlOutputFormat(){return p.RICH_TEXT_EDITOR_OUTPUT_FORMATS[2]},flattenedVariableItems(){return this.variableCategories?this.variableCategories.reduce((e,t)=>e.concat(t.items||[]),[]):[]},showingTextFormatButtons(){return this.showBoldButton||this.showItalicsButton||this.showStrikeButton||this.showUnderlineButton},showingAlignmentButtons(){return this.showAlignLeftButton||this.showAlignCenterButton||this.showAlignRightButton||this.showAlignJustifyButton},showingListButtons(){return this.showListItemsButton||this.showOrderedListButton},orderedRefs(){let e=this.buttonGroups.reduce(function(e,t){return t.buttonGroup.forEach(n=>{e.push(this.getButtonRef(t.key,n.selector))},this),e}.bind(this),[]);return e.push(this.getButtonRef(`custom`,`link`)),e},buttonGroups(){let e=this.individualButtons.map(e=>({key:e.selector,buttonGroup:[e]}));return[{key:`new`,buttonGroup:this.newButtons},{key:`format`,buttonGroup:this.textFormatButtons},{key:`alignment`,buttonGroup:this.alignmentButtons},{key:`list`,buttonGroup:this.listButtons},...e].filter(e=>e.buttonGroup.length>0)},newButtons(){return[{showBtn:this.showQuickRepliesButton,buttonType:`button`,label:this.i18n.$t(`DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL`),selector:`quickReplies`,icon:y.DtIconQuickReply,dataQA:`dt-recipe-editor-quick-replies-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL`),onClick:this.onQuickRepliesClick}].filter(e=>e.showBtn)},textFormatButtons(){return[{showBtn:this.showFontStyleButton,buttonType:`popover`,selector:`fontStyle`,icon:y.DtIconType,dataQA:`dt-recipe-editor-font-style-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_FONT_STYLE_BUTTON_LABEL`)},{showBtn:this.showFontSizeButton,buttonType:`popover`,selector:`fontSize`,icon:y.DtIconFontSize,dataQA:`dt-recipe-editor-font-size-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_FONT_SIZE_BUTTON_LABEL`)},{showBtn:this.showFontColorButton,buttonType:`custom`,selector:`fontColor`,icon:y.DtIconStopFilled,dataQA:`dt-recipe-editor-font-color-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_FONT_COLOR_BUTTON_LABEL`),onClick:this.onColorPickerButtonClick},{showBtn:this.showBoldButton,buttonType:`button`,selector:`bold`,icon:y.DtIconBold,dataQA:`dt-recipe-editor-bold-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_BOLD_BUTTON_LABEL`),onClick:this.onBoldTextToggle},{showBtn:this.showItalicsButton,buttonType:`button`,selector:`italic`,icon:y.DtIconItalic,dataQA:`dt-recipe-editor-italics-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_ITALICS_BUTTON_LABEL`),onClick:this.onItalicTextToggle},{showBtn:this.showUnderlineButton,buttonType:`button`,selector:`underline`,icon:y.DtIconUnderline,dataQA:`dt-recipe-editor-underline-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_UNDERLINE_BUTTON_LABEL`),onClick:this.onUnderlineTextToggle},{showBtn:this.showStrikeButton,buttonType:`button`,selector:`strike`,icon:y.DtIconStrikethrough,dataQA:`dt-recipe-editor-strike-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_STRIKE_BUTTON_LABEL`),onClick:this.onStrikethroughTextToggle}].filter(e=>e.showBtn)},alignmentButtons(){return[{showBtn:this.showAlignLeftButton,buttonType:`button`,selector:{textAlign:`left`},icon:y.DtIconAlignLeft,dataQA:`dt-recipe-editor-align-left-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_ALIGN_LEFT_BUTTON_LABEL`),onClick:()=>this.onTextAlign(`left`)},{showBtn:this.showAlignCenterButton,buttonType:`button`,selector:{textAlign:`center`},icon:y.DtIconAlignCenter,dataQA:`dt-recipe-editor-align-center-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_ALIGN_CENTER_BUTTON_LABEL`),onClick:()=>this.onTextAlign(`center`)},{showBtn:this.showAlignRightButton,buttonType:`button`,selector:{textAlign:`right`},icon:y.DtIconAlignRight,dataQA:`dt-recipe-editor-align-right-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_ALIGN_RIGHT_BUTTON_LABEL`),onClick:()=>this.onTextAlign(`right`)},{showBtn:this.showAlignJustifyButton,buttonType:`button`,selector:{textAlign:`justify`},icon:y.DtIconAlignJustify,dataQA:`dt-recipe-editor-align-justify-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_ALIGN_JUSTIFY_BUTTON_LABEL`),onClick:()=>this.onTextAlign(`justify`)}].filter(e=>e.showBtn)},listButtons(){return[{showBtn:this.showListItemsButton,buttonType:`button`,selector:`bulletList`,icon:y.DtIconListBullet,dataQA:`dt-recipe-editor-list-items-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_BULLET_LIST_BUTTON_LABEL`),onClick:this.onBulletListToggle},{showBtn:this.showOrderedListButton,buttonType:`button`,selector:`orderedList`,icon:y.DtIconListOrdered,dataQA:`dt-recipe-editor-ordered-list-items-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_ORDERED_LIST_BUTTON_LABEL`),onClick:this.onOrderedListToggle}].filter(e=>e.showBtn)},individualButtons(){return[{showBtn:this.showQuoteButton,buttonType:`button`,selector:`blockquote`,icon:y.DtIconQuote,dataQA:`dt-recipe-editor-blockquote-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_QUOTE_BUTTON_LABEL`),onClick:this.onBlockquoteToggle},{showBtn:this.showCodeBlockButton,buttonType:`button`,selector:`codeBlock`,icon:y.DtIconCodeBlock,dataQA:`dt-recipe-editor-code-block-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_CODE_BUTTON_LABEL`),onClick:this.onCodeBlockToggle},{showBtn:this.showInlineImageButton,buttonType:`button`,selector:`image`,icon:y.DtIconImage,dataQA:`dt-recipe-editor-inline-image-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_IMAGE_BUTTON_LABEL`),onClick:this.onInsertInlineImageClick},{showBtn:this.showVariableButton,buttonType:`popover`,selector:`variable`,icon:y.DtIconBraces,dataQA:`dt-recipe-editor-variable-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_VARIABLE_BUTTON_LABEL`)}].filter(e=>e.showBtn)},linkButton(){return{showBtn:this.showAddLink.showAddLinkButton,buttonType:`custom`,selector:`link`,icon:y.DtIconLink2,dataQA:`dt-recipe-editor-add-link-btn`,tooltipMessage:this.i18n.$t(`DIALTONE_EDITOR_LINK_BUTTON_LABEL`),onClick:this.openLinkInput}},confirmSetLinkButtonLabels(){return this.i18n.$ta(`DIALTONE_EDITOR_CONFIRM_SET_LINK_BUTTON`)},cancelSetLinkButtonLabels(){return this.i18n.$ta(`DIALTONE_EDITOR_CANCEL_SET_LINK_BUTTON`)},removeLinkButtonLabels(){return this.i18n.$ta(`DIALTONE_EDITOR_REMOVE_LINK_BUTTON`)},showAddLinkButtonLabels(){return this.i18n.$ta(`DIALTONE_EDITOR_ADD_LINK_BUTTON`)},filteredFontStyles(){let e=this.fontStyleSearch.toLowerCase();return this.fontStyles.filter(t=>t.name.toLowerCase().includes(e))},filteredCategories(){return this.variableCategories.filter(e=>this.getFilteredItemsForCategory(e).length)},colorPickerInput(){return this.$refs.editorRoot?.querySelector(`.colorPickerInput`)},isDefaultFontColor(){return this.currentFontColor===m.EDITOR_DEFAULT_FONT_COLOR},actionBarBtn(){let e=this.$refs[this.orderedRefs[this.currentButtonRefIndex]][0]?.$refs?.buttonRef||this.$refs[this.orderedRefs[this.currentButtonRefIndex]];return Array.isArray(e)?e[0]:e}},watch:{modelValue(e){this.internalInputValue=e}},methods:{removeClassStyleAttrs:e.removeClassStyleAttrs,addClassStyleAttrs:e.addClassStyleAttrs,focusEditor(){this.$refs.richTextEditor?.editor?.commands.focus()},onInputFocus(e){e?.stopPropagation()},removeLink(){this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run(),this.closeLinkInput()},setLink(e){let t=this.$refs.richTextEditor?.editor;if(e?.preventDefault(),e?.stopPropagation(),!this.linkInput){this.removeLink();return}m.EDITOR_SUPPORTED_LINK_PROTOCOLS.find(e=>e.test(this.linkInput))||(this.linkInput=`${m.EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`);let n=t?.view?.state?.selection;n.anchor===n.head?t.chain().focus().insertContentAt(n.anchor,`<a class="${this.linkOptions.class}" href=${this.linkInput}>${this.linkInput}</a>`).run():t.chain().focus().extendMarkRange(`link`).setLink({href:this.linkInput,class:this.linkOptions.class}).run(),this.closeLinkInput()},openLinkInput(){this.showLinkInput=!0},updateInput(e){if(!e)return this.closeLinkInput();this.linkInput=this.$refs.richTextEditor?.editor?.getAttributes(`link`)?.href},closeLinkInput(){this.showLinkInput=!1,this.linkInput=``,this.$refs.richTextEditor.editor?.chain().focus()},onBoldTextToggle(){this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run()},onItalicTextToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run()},onUnderlineTextToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run()},onStrikethroughTextToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run()},onTextAlign(e){if(this.$refs.richTextEditor?.editor?.isActive({textAlign:e}))return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(e).run()},onBulletListToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run()},onOrderedListToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run()},onCodeBlockToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run()},onQuickRepliesClick(){this.$emit(`quick-replies-click`)},onInsertInlineImageClick(){this.$emit(`inline-image-click`)},insertVariable(e,t){this.$refs.richTextEditor?.editor.chain().focus().insertVariable({id:t.id,placeholder:t.placeholder||``,altText:``,enableAltText:t.enableAltText}).run()},insertInlineImage(e){this.$refs.richTextEditor?.editor.chain().focus().setImage({src:e}).run()},insertInMessageBody(e){this.$refs.richTextEditor?.editor.chain().focus().insertContent(e).run()},setCursorPosition(e=null){this.$refs.richTextEditor?.editor.chain().focus(e).run()},onBlockquoteToggle(){this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().run()},onTextInput(e){this.$emit(`text-input`,e)},onFocus(e){this.hasFocus=!0,this.$emit(`focus`,e)},onBlur(e){this.hasFocus=!1,this.$emit(`blur`,e)},onInput(e){this.$emit(`input`,e),this.$emit(`update:modelValue`,e)},onSelected(){this.updateFontColorInput()},getButtonKey(e,t){return`${e}-${JSON.stringify(t)}`},getButtonRef(e,t){return`${this.getButtonKey(e,t)}-ref`},canFocus(e){return e===this.orderedRefs[this.currentButtonRefIndex]},shiftActionBarFocusRight(){this.shiftButtonRefIndex(1)},shiftActionBarFocusLeft(){this.shiftButtonRefIndex(-1)},shiftButtonRefIndex(e){let t=this.actionBarBtn,n=(this.currentButtonRefIndex+e)%this.orderedRefs.length;this.currentButtonRefIndex=n>=0?n:this.orderedRefs.length+n;let r=this.actionBarBtn;t.$el.blur(),r.$el.focus()},onFontStyleSelect(e){e?this.$refs.richTextEditor?.editor?.chain().focus().setFontFamily(e).run():this.$refs.richTextEditor?.editor?.chain().focus().unsetFontFamily().run(),this.$refs.richTextEditor?.editor?.commands.focus()},isCurrentFontFamily(e){return e?this.$refs.richTextEditor?.editor?.isActive(`textStyle`,{fontFamily:e}):!this.$refs.richTextEditor?.editor?.getAttributes(`textStyle`)?.fontFamily},onFontSizeSelect(e){this.$refs.richTextEditor?.editor?.chain().focus().setFontSize(e).run(),this.$refs.richTextEditor?.editor?.commands.focus()},isCurrentFontSize(e){return e?this.$refs.richTextEditor?.editor?.isActive(`textStyle`,{fontSize:e}):!this.$refs.richTextEditor?.editor?.getAttributes(`textStyle`)?.fontSize},getFilteredItemsForCategory(e){let t=this.variableSearchValue.toLowerCase();return e.name.toLowerCase().includes(t)?e.items:e.items.filter(e=>e.name.toLowerCase().includes(t))},updateFontColorInput(){this.currentFontColor=this.$refs.richTextEditor?.editor?.getAttributes(`textStyle`)?.color||`#000000`},onColorPickerButtonClick(){this.colorPickerInput?.click()},onColorPickerInput(e){this.$refs.richTextEditor?.editor?.chain().focus().setColor(e).run(),this.$refs.richTextEditor?.editor?.commands.focus(),this.updateFontColorInput()}}},x={class:`d-recipe-editor__popover-content`};function S(e,t,n,r,i,a){let o=(0,v.resolveComponent)(`dt-icon-search`),s=(0,v.resolveComponent)(`dt-input`),c=(0,v.resolveComponent)(`dt-list-item`),l=(0,v.resolveComponent)(`dt-combobox`),u=(0,v.resolveComponent)(`editor-toolbar-popover-button`),d=(0,v.resolveComponent)(`editor-toolbar-dropdown-button`),f=(0,v.resolveComponent)(`dt-button`),p=(0,v.resolveComponent)(`dt-dropdown-separator`),m=(0,v.resolveComponent)(`dt-list-item-group`),h=(0,v.resolveComponent)(`editor-toolbar-button`),g=(0,v.resolveComponent)(`dt-stack`),_=(0,v.resolveComponent)(`dt-tooltip`),y=(0,v.resolveComponent)(`dt-popover`),b=(0,v.resolveComponent)(`dt-rich-text-editor`),S=(0,v.resolveDirective)(`dt-tooltip`);return(0,v.openBlock)(),(0,v.createElementBlock)(`div`,(0,v.mergeProps)({ref:`editorRoot`,class:`d-recipe-editor`},a.addClassStyleAttrs(e.$attrs),{"data-qa":`dt-recipe-editor`,role:`presentation`,onClick:t[7]||(t[7]=t=>e.$refs.richTextEditor.focusEditor())}),[(0,v.createVNode)(g,{class:`d-recipe-editor__top-bar`,direction:`row`,gap:`450`},{default:(0,v.withCtx)(()=>[((0,v.openBlock)(!0),(0,v.createElementBlock)(v.Fragment,null,(0,v.renderList)(a.buttonGroups,r=>((0,v.openBlock)(),(0,v.createBlock)(g,{key:r.key,direction:`row`,gap:`300`},{default:(0,v.withCtx)(()=>[((0,v.openBlock)(!0),(0,v.createElementBlock)(v.Fragment,null,(0,v.renderList)(r.buttonGroup,g=>((0,v.openBlock)(),(0,v.createElementBlock)(v.Fragment,null,[g.buttonType===`popover`&&g.selector===`fontStyle`?((0,v.openBlock)(),(0,v.createBlock)(u,{key:a.getButtonKey(r.key,g.selector),ref_for:!0,ref:a.getButtonRef(r.key,g.selector),"is-active":e.$refs.richTextEditor?.editor?.isActive(g.selector),"tooltip-message":g.tooltipMessage,"data-qa":g.dataQA,"popover-data-qa":`dt-recipe-editor-font-style-input-popover`,tabindex:a.canFocus(a.getButtonRef(r.key,g.selector))?0:-1,icon:g.icon,onShiftFocusRight:a.shiftActionBarFocusRight,onShiftFocusLeft:a.shiftActionBarFocusLeft},{content:(0,v.withCtx)(({close:e})=>[(0,v.createVNode)(l,{label:``,"label-visible":!1,"show-list":!0,"click-on-select":!0,onEscape:t=>e()},{input:(0,v.withCtx)(({inputProps:e})=>[(0,v.createVNode)(s,(0,v.mergeProps)({ref_for:!0},e,{modelValue:i.fontStyleSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>i.fontStyleSearch=e),"root-class":`d-p8 d-pb4 d-w216`,type:`search`,placeholder:i.i18n.$t(`DIALTONE_EDITOR_FONT_STYLE_SEARCH_PLACEHOLDER`),size:`sm`,role:`menuitem`}),{leftIcon:(0,v.withCtx)(({iconSize:e})=>[(0,v.createVNode)(o,{size:e},null,8,[`size`])]),_:1},16,[`modelValue`,`placeholder`])]),list:(0,v.withCtx)(({listProps:t})=>[(0,v.createElementVNode)(`ul`,(0,v.mergeProps)({ref_for:!0},t),[((0,v.openBlock)(!0),(0,v.createElementBlock)(v.Fragment,null,(0,v.renderList)(a.filteredFontStyles,t=>((0,v.openBlock)(),(0,v.createBlock)(c,{key:t.name,selected:a.isCurrentFontFamily(t.value),style:(0,v.normalizeStyle)({fontFamily:t.value||`inherit`}),role:`option`,"navigation-type":`arrow-keys`,onClick:n=>{e(a.focusEditor),a.onFontStyleSelect(t.value)}},{default:(0,v.withCtx)(()=>[(0,v.createTextVNode)((0,v.toDisplayString)(t.name),1)]),_:2},1032,[`selected`,`style`,`onClick`]))),128))],16)]),_:2},1032,[`onEscape`])]),_:1},8,[`is-active`,`tooltip-message`,`data-qa`,`tabindex`,`icon`,`onShiftFocusRight`,`onShiftFocusLeft`])):g.buttonType===`popover`&&g.selector===`fontSize`?((0,v.openBlock)(),(0,v.createBlock)(d,{key:a.getButtonKey(r.key,g.selector),ref_for:!0,ref:a.getButtonRef(r.key,g.selector),"is-active":e.$refs.richTextEditor?.editor?.isActive(g.selector),"tooltip-message":g.tooltipMessage,"data-qa":g.dataQA,"dropdown-data-qa":`dt-recipe-editor-font-size-input-popover`,tabindex:a.canFocus(a.getButtonRef(r.key,g.selector))?0:-1,icon:g.icon,onShiftFocusRight:a.shiftActionBarFocusRight,onShiftFocusLeft:a.shiftActionBarFocusLeft},{list:(0,v.withCtx)(({close:e})=>[((0,v.openBlock)(!0),(0,v.createElementBlock)(v.Fragment,null,(0,v.renderList)(n.fontSizes,t=>((0,v.openBlock)(),(0,v.createBlock)(c,{key:t.name,selected:a.isCurrentFontSize(t.value),role:`menuitem`,"navigation-type":`arrow-keys`,onClick:n=>{e(a.focusEditor),a.onFontSizeSelect(t.value,n)}},{default:(0,v.withCtx)(()=>[(0,v.createElementVNode)(`span`,{style:(0,v.normalizeStyle)({fontSize:t.value})},(0,v.toDisplayString)(t.name),5)]),_:2},1032,[`selected`,`onClick`]))),128))]),_:1},8,[`is-active`,`tooltip-message`,`data-qa`,`tabindex`,`icon`,`onShiftFocusRight`,`onShiftFocusLeft`])):g.buttonType===`custom`&&g.selector===`fontColor`?(0,v.withDirectives)(((0,v.openBlock)(),(0,v.createBlock)(f,{key:a.getButtonKey(r.key,g.selector),ref_for:!0,ref:a.getButtonRef(r.key,g.selector),kind:`muted`,importance:`clear`,size:`xs`,active:e.$refs.richTextEditor?.editor?.isActive(g.selector),tabindex:a.canFocus(a.getButtonRef(r.key,g.selector))?0:-1,"aria-label":g.tooltipMessage,"data-qa":g.dataQA,onKeydown:[(0,v.withKeys)((0,v.withModifiers)(a.shiftActionBarFocusRight,[`stop`]),[`right`]),(0,v.withKeys)((0,v.withModifiers)(a.shiftActionBarFocusLeft,[`stop`]),[`left`])],onClick:e=>g.onClick()},{icon:(0,v.withCtx)(()=>[((0,v.openBlock)(),(0,v.createBlock)((0,v.resolveDynamicComponent)(g.icon),{size:`200`,style:(0,v.normalizeStyle)(a.isDefaultFontColor?{}:{color:i.currentFontColor})},null,8,[`style`])),(0,v.createVNode)(s,{value:i.currentFontColor,"root-class":`d-w0 d-h0 d-of-hidden`,"input-class":`colorPickerInput d-w0 d-h0 d-p0 d-bar0`,"input-wrapper-class":`d-w0 d-h0 d-ba-none`,size:`sm`,type:`color`,onInput:a.onColorPickerInput,onClick:t[1]||(t[1]=(0,v.withModifiers)(()=>{},[`stop`]))},null,8,[`value`,`onInput`])]),_:2},1032,[`active`,`tabindex`,`aria-label`,`data-qa`,`onKeydown`,`onClick`])),[[S,{message:g.tooltipMessage,placement:`top`,externalAnchorElement:e.$refs[a.getButtonRef(r.key,g.selector)]?.$el}]]):g.buttonType===`popover`&&g.selector===`variable`?((0,v.openBlock)(),(0,v.createBlock)(u,{key:a.getButtonKey(r.key,g.selector),ref_for:!0,ref:a.getButtonRef(r.key,g.selector),"is-active":!1,"tooltip-message":g.tooltipMessage,"data-qa":g.dataQA,"popover-data-qa":`dt-recipe-editor-variable-popover`,tabindex:a.canFocus(a.getButtonRef(r.key,g.selector))?0:-1,icon:g.icon,onShiftFocusRight:a.shiftActionBarFocusRight,onShiftFocusLeft:a.shiftActionBarFocusLeft},{content:(0,v.withCtx)(({close:e})=>[(0,v.createVNode)(l,{label:``,"label-visible":!1,"show-list":!0,"click-on-select":!0,onEscape:t=>e()},{input:(0,v.withCtx)(({inputProps:e})=>[(0,v.createVNode)(s,(0,v.mergeProps)({ref_for:!0},e,{modelValue:i.variableSearchValue,"onUpdate:modelValue":t[2]||(t[2]=e=>i.variableSearchValue=e),"root-class":`d-p8 d-pb4 d-w264`,type:`search`,placeholder:i.i18n.$t(`DIALTONE_EDITOR_VARIABLE_POPOVER_SEARCH_PLACEHOLDER`),size:`md`,role:`menuitem`}),{leftIcon:(0,v.withCtx)(({iconSize:e})=>[(0,v.createVNode)(o,{size:e},null,8,[`size`])]),_:1},16,[`modelValue`,`placeholder`])]),list:(0,v.withCtx)(({listProps:t})=>[(0,v.createElementVNode)(`div`,(0,v.mergeProps)({ref_for:!0},t),[((0,v.openBlock)(!0),(0,v.createElementBlock)(v.Fragment,null,(0,v.renderList)(a.filteredCategories,(t,n)=>((0,v.openBlock)(),(0,v.createBlock)(m,{key:t.name,heading:t.name,"heading-class":`d-headline--sm-compact d-p8`},{default:(0,v.withCtx)(()=>[((0,v.openBlock)(!0),(0,v.createElementBlock)(v.Fragment,null,(0,v.renderList)(a.getFilteredItemsForCategory(t),n=>((0,v.openBlock)(),(0,v.createBlock)(c,{key:t.name+n.name,role:`option`,"navigation-type":`arrow-keys`,onClick:r=>{a.insertVariable(t.name,n),e(a.focusEditor)}},{default:(0,v.withCtx)(()=>[(0,v.createTextVNode)((0,v.toDisplayString)(n.name),1)]),_:2},1032,[`onClick`]))),128)),n<a.filteredCategories.length-1?((0,v.openBlock)(),(0,v.createBlock)(p,{key:0})):(0,v.createCommentVNode)(``,!0)]),_:2},1032,[`heading`]))),128))],16)]),_:2},1032,[`onEscape`])]),_:1},8,[`tooltip-message`,`data-qa`,`tabindex`,`icon`,`onShiftFocusRight`,`onShiftFocusLeft`])):g.buttonType===`button`?((0,v.openBlock)(),(0,v.createBlock)(h,{key:a.getButtonKey(r.key,g.selector),ref_for:!0,ref:a.getButtonRef(r.key,g.selector),"is-active":e.$refs.richTextEditor?.editor?.isActive(g.selector),"tooltip-message":g.tooltipMessage,"data-qa":g.dataQA,tabindex:a.canFocus(a.getButtonRef(r.key,g.selector))?0:-1,icon:g.icon,label:g.label,"on-click":g.onClick,onShiftFocusRight:a.shiftActionBarFocusRight,onShiftFocusLeft:a.shiftActionBarFocusLeft},null,8,[`is-active`,`tooltip-message`,`data-qa`,`tabindex`,`icon`,`label`,`on-click`,`onShiftFocusRight`,`onShiftFocusLeft`])):(0,v.createCommentVNode)(``,!0)],64))),256)),t[8]||(t[8]=(0,v.createElementVNode)(`div`,{class:`d-recipe-editor__button-group-divider`},null,-1))]),_:2},1024))),128)),a.linkButton.showBtn?((0,v.openBlock)(),(0,v.createBlock)(g,{key:0,direction:`row`,gap:`300`},{default:(0,v.withCtx)(()=>[(0,v.createVNode)(y,{open:i.showLinkInput,"show-close-button":!1,"data-qa":`dt-recipe-editor-link-input-popover`,padding:`none`,placement:`bottom-start`,onClick:[a.onInputFocus,(0,v.withModifiers)(a.onInputFocus,[`stop`])],onOpened:a.updateInput},{anchor:(0,v.withCtx)(()=>[((0,v.openBlock)(),(0,v.createBlock)(_,{key:a.linkButton.key,message:a.linkButton.tooltipMessage,placement:`top`},{anchor:(0,v.withCtx)(()=>[(0,v.createVNode)(f,{ref:a.getButtonRef(`custom`,`link`),active:e.$refs.richTextEditor?.editor?.isActive(a.linkButton.selector),"aria-label":a.linkButton.tooltipMessage,"data-qa":a.linkButton.dataQA,tabindex:a.canFocus(a.getButtonRef(`custom`,`link`))?0:-1,importance:`clear`,kind:`muted`,size:`xs`,onClick:t[3]||(t[3]=e=>a.linkButton.onClick()),onKeydown:[(0,v.withKeys)((0,v.withModifiers)(a.shiftActionBarFocusRight,[`stop`]),[`right`]),(0,v.withKeys)((0,v.withModifiers)(a.shiftActionBarFocusLeft,[`stop`]),[`left`])]},{icon:(0,v.withCtx)(()=>[((0,v.openBlock)(),(0,v.createBlock)((0,v.resolveDynamicComponent)(a.linkButton.icon),{size:`200`}))]),_:1},8,[`active`,`aria-label`,`data-qa`,`tabindex`,`onKeydown`])]),_:1},8,[`message`]))]),content:(0,v.withCtx)(()=>[(0,v.createElementVNode)(`div`,x,[(0,v.createElementVNode)(`span`,null,(0,v.toDisplayString)(a.showAddLinkButtonLabels.title),1),(0,v.createVNode)(s,{modelValue:i.linkInput,"onUpdate:modelValue":t[4]||(t[4]=e=>i.linkInput=e),"input-aria-label":a.showAddLinkButtonLabels[`aria-label`],placeholder:n.setLinkPlaceholder,"data-qa":`dt-recipe-editor-link-input`,"input-wrapper-class":`d-recipe-editor-link__input-wrapper`,onClick:[a.onInputFocus,(0,v.withModifiers)(a.onInputFocus,[`stop`])],onFocus:a.onInputFocus,onKeydown:(0,v.withKeys)(a.setLink,[`enter`])},null,8,[`modelValue`,`input-aria-label`,`placeholder`,`onClick`,`onFocus`,`onKeydown`])])]),footerContent:(0,v.withCtx)(()=>[(0,v.createVNode)(g,{direction:`row`,gap:`300`,class:`d-recipe-editor__popover-footer`},{default:(0,v.withCtx)(()=>[(0,v.createVNode)(f,(0,v.mergeProps)({"data-qa":`dt-recipe-editor-remove-link-btn`,importance:`clear`,kind:`muted`,size:`sm`},a.removeLinkButtonLabels,{onClick:a.removeLink}),{default:(0,v.withCtx)(()=>[(0,v.createTextVNode)((0,v.toDisplayString)(a.removeLinkButtonLabels.title),1)]),_:1},16,[`onClick`]),(0,v.createVNode)(f,(0,v.mergeProps)({"data-qa":`dt-recipe-editor-set-link-cancel-btn`,importance:`clear`,kind:`muted`,size:`sm`},a.cancelSetLinkButtonLabels,{onClick:a.closeLinkInput}),{default:(0,v.withCtx)(()=>[(0,v.createTextVNode)((0,v.toDisplayString)(a.cancelSetLinkButtonLabels.title),1)]),_:1},16,[`onClick`]),(0,v.createVNode)(f,(0,v.mergeProps)({"data-qa":`dt-recipe-editor-set-link-confirm-btn`,size:`sm`},a.confirmSetLinkButtonLabels,{onClick:a.setLink}),{default:(0,v.withCtx)(()=>[(0,v.createTextVNode)((0,v.toDisplayString)(a.confirmSetLinkButtonLabels.title),1)]),_:1},16,[`onClick`])]),_:1})]),_:1},8,[`open`,`onClick`,`onOpened`])]),_:1})):(0,v.createCommentVNode)(``,!0)]),_:1}),(0,v.createElementVNode)(`div`,{style:(0,v.normalizeStyle)({"max-height":n.maxHeight}),class:(0,v.normalizeClass)([`d-recipe-editor__content`,{"d-recipe-editor__content-image-resize":n.allowImageResize}])},[(0,v.createVNode)(b,(0,v.mergeProps)({ref:`richTextEditor`,modelValue:i.internalInputValue,"onUpdate:modelValue":t[5]||(t[5]=e=>i.internalInputValue=e),"allow-font-color":!0,"allow-font-family":!0,"allow-inline-images":!0,"allow-line-breaks":!0,"allow-variable":!0,"allow-font-size":n.showFontSizeButton,"allow-background-color":n.allowBackgroundColor,"allow-line-height":n.allowLineHeight,"variable-items":a.flattenedVariableItems,"hide-link-bubble-menu":!0,"auto-focus":n.autoFocus,editable:n.editable,"input-aria-label":n.inputAriaLabel,"input-class":`d-recipe-editor__content-input ${n.inputClass}`,link:!0,"output-format":a.htmlOutputFormat,placeholder:n.placeholder,"preserve-whitespace":n.preserveWhitespace,"use-div-tags":n.useDivTags,"allow-tables":n.allowTables,"allow-image-resize":n.allowImageResize,"data-qa":`dt-rich-text-editor`},a.removeClassStyleAttrs(e.$attrs),{onTextInput:a.onTextInput,onBlur:a.onBlur,onFocus:a.onFocus,onInput:t[6]||(t[6]=e=>a.onInput(e)),onSelected:a.onSelected}),null,16,[`modelValue`,`allow-font-size`,`allow-background-color`,`allow-line-height`,`variable-items`,`auto-focus`,`editable`,`input-aria-label`,`input-class`,`output-format`,`placeholder`,`preserve-whitespace`,`use-div-tags`,`allow-tables`,`allow-image-resize`,`onTextInput`,`onBlur`,`onFocus`,`onSelected`])],6)],16)}var C=t.t(b,[[`render`,S]]);exports.default=C;
|
|
2
2
|
//# sourceMappingURL=editor.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.cjs","names":[],"sources":["../../../recipes/conversation_view/editor/editor.vue"],"sourcesContent":["<template>\n <div\n ref=\"editorRoot\"\n class=\"d-recipe-editor\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n data-qa=\"dt-recipe-editor\"\n role=\"presentation\"\n @click=\"$refs.richTextEditor.focusEditor()\"\n >\n <!-- Section for the top UI -->\n <dt-stack\n class=\"d-recipe-editor__top-bar\"\n direction=\"row\"\n gap=\"450\"\n >\n <dt-stack\n v-for=\"buttonGroup in buttonGroups\"\n :key=\"buttonGroup.key\"\n direction=\"row\"\n gap=\"300\"\n >\n <template v-for=\"button in buttonGroup.buttonGroup\">\n <!-- Font Style Popover -->\n <editor-toolbar-popover-button\n v-if=\"button.buttonType === 'popover' && button.selector === 'fontStyle'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :popover-data-qa=\"'dt-recipe-editor-font-style-input-popover'\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n >\n <template #content=\"{ close }\">\n <dt-combobox\n label=\"\"\n :label-visible=\"false\"\n :show-list=\"true\"\n :click-on-select=\"true\"\n @escape=\"close()\"\n >\n <template #input=\"{ inputProps }\">\n <dt-input\n v-bind=\"inputProps\"\n v-model=\"fontStyleSearch\"\n root-class=\"d-p8 d-pb4 d-w216\"\n type=\"search\"\n :placeholder=\"i18n.$t('DIALTONE_EDITOR_FONT_STYLE_SEARCH_PLACEHOLDER')\"\n size=\"sm\"\n role=\"menuitem\"\n >\n <template #leftIcon=\"{ iconSize }\">\n <dt-icon-search :size=\"iconSize\" />\n </template>\n </dt-input>\n </template>\n <template #list=\"{ listProps }\">\n <ul\n v-bind=\"listProps\"\n >\n <dt-list-item\n v-for=\"fontStyle in filteredFontStyles\"\n :key=\"fontStyle.name\"\n :selected=\"isCurrentFontFamily(fontStyle.value)\"\n :style=\"{ fontFamily: fontStyle.value || 'inherit' }\"\n role=\"option\"\n navigation-type=\"arrow-keys\"\n @click=\"\n close(focusEditor);\n onFontStyleSelect(fontStyle.value)\n \"\n >\n {{ fontStyle.name }}\n </dt-list-item>\n </ul>\n </template>\n </dt-combobox>\n </template>\n </editor-toolbar-popover-button>\n\n <!-- Font Size Dropdown -->\n <editor-toolbar-dropdown-button\n v-else-if=\"button.buttonType === 'popover' && button.selector === 'fontSize'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :dropdown-data-qa=\"'dt-recipe-editor-font-size-input-popover'\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n >\n <template #list=\"{ close }\">\n <dt-list-item\n v-for=\"fontSize in fontSizes\"\n :key=\"fontSize.name\"\n :selected=\"isCurrentFontSize(fontSize.value)\"\n role=\"menuitem\"\n navigation-type=\"arrow-keys\"\n @click=\"\n close(focusEditor);\n onFontSizeSelect(fontSize.value, $event)\n \"\n >\n <span :style=\"{ fontSize: fontSize.value }\">{{ fontSize.name }}</span>\n </dt-list-item>\n </template>\n </editor-toolbar-dropdown-button>\n\n <!-- Font Color Button -->\n <dt-button\n v-else-if=\"button.buttonType === 'custom' && button.selector === 'fontColor'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n v-dt-tooltip=\"{\n message: button.tooltipMessage,\n placement: 'top',\n externalAnchorElement: $refs[getButtonRef(buttonGroup.key, button.selector)]?.$el, \n }\"\n kind=\"muted\"\n importance=\"clear\"\n size=\"xs\"\n :active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :aria-label=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n @keydown.right.stop=\"shiftActionBarFocusRight\"\n @keydown.left.stop=\"shiftActionBarFocusLeft\"\n @click=\"button.onClick()\"\n >\n <template #icon>\n <component\n :is=\"button.icon\"\n size=\"200\"\n :style=\"!isDefaultFontColor ? { color: currentFontColor } : {}\"\n />\n <dt-input\n :value=\"currentFontColor\"\n root-class=\"d-w0 d-h0 d-of-hidden\"\n input-class=\"colorPickerInput d-w0 d-h0 d-p0 d-bar0\"\n input-wrapper-class=\"d-w0 d-h0 d-ba-none\"\n size=\"sm\"\n type=\"color\"\n @input=\"onColorPickerInput\"\n @click.stop\n />\n </template>\n </dt-button>\n\n <!-- Variable Popover -->\n <editor-toolbar-popover-button\n v-else-if=\"button.buttonType === 'popover' && button.selector === 'variable'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"false\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :popover-data-qa=\"'dt-recipe-editor-variable-popover'\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n >\n <template #content=\"{ close }\">\n <dt-combobox\n label=\"\"\n :label-visible=\"false\"\n :show-list=\"true\"\n :click-on-select=\"true\"\n @escape=\"close()\"\n >\n <template #input=\"{ inputProps }\">\n <dt-input\n v-bind=\"inputProps\"\n v-model=\"variableSearchValue\"\n root-class=\"d-p8 d-pb4 d-w264\"\n type=\"search\"\n :placeholder=\"i18n.$t('DIALTONE_EDITOR_VARIABLE_POPOVER_SEARCH_PLACEHOLDER')\"\n size=\"md\"\n role=\"menuitem\"\n >\n <template #leftIcon=\"{ iconSize }\">\n <dt-icon-search :size=\"iconSize\" />\n </template>\n </dt-input>\n </template>\n <template #list=\"{ listProps }\">\n <div v-bind=\"listProps\">\n <dt-list-item-group\n v-for=\"(category, index) in filteredCategories\"\n :key=\"category.name\"\n :heading=\"category.name\"\n heading-class=\"d-headline--sm-compact d-p8\"\n >\n <dt-list-item\n v-for=\"item in getFilteredItemsForCategory(category)\"\n :key=\"category.name + item.name\"\n role=\"option\"\n navigation-type=\"arrow-keys\"\n @click=\"\n insertVariable(category.name, item);\n close(focusEditor);\n \"\n >\n {{ item.name }}\n </dt-list-item>\n <dt-dropdown-separator\n v-if=\"index < filteredCategories.length - 1\"\n />\n </dt-list-item-group>\n </div>\n </template>\n </dt-combobox>\n </template>\n </editor-toolbar-popover-button>\n\n <!-- Regular Toolbar Button -->\n <editor-toolbar-button\n v-else-if=\"button.buttonType === 'button'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n :label=\"button.label\"\n :on-click=\"button.onClick\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n />\n </template>\n <div class=\"d-recipe-editor__button-group-divider\" />\n </dt-stack>\n <dt-stack\n v-if=\"linkButton.showBtn\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-popover\n :open=\"showLinkInput\"\n :show-close-button=\"false\"\n data-qa=\"dt-recipe-editor-link-input-popover\"\n padding=\"none\"\n placement=\"bottom-start\"\n @click=\"onInputFocus\"\n @opened=\"updateInput\"\n @click.stop=\"onInputFocus\"\n >\n <template #anchor>\n <dt-tooltip\n :key=\"linkButton.key\"\n :message=\"linkButton.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :ref=\"getButtonRef('custom', 'link')\"\n :active=\"$refs.richTextEditor?.editor?.isActive(linkButton.selector)\"\n :aria-label=\"linkButton.tooltipMessage\"\n :data-qa=\"linkButton.dataQA\"\n :tabindex=\"canFocus(getButtonRef('custom', 'link')) ? 0 : -1\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n @click=\"linkButton.onClick()\"\n @keydown.right.stop=\"shiftActionBarFocusRight\"\n @keydown.left.stop=\"shiftActionBarFocusLeft\"\n >\n <template #icon>\n <component\n :is=\"linkButton.icon\"\n size=\"200\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n\n <template #content>\n <div class=\"d-recipe-editor__popover-content\">\n <span>\n {{ showAddLinkButtonLabels.title }}\n </span>\n <dt-input\n v-model=\"linkInput\"\n :input-aria-label=\"showAddLinkButtonLabels['aria-label']\"\n :placeholder=\"setLinkPlaceholder\"\n data-qa=\"dt-recipe-editor-link-input\"\n input-wrapper-class=\"d-recipe-editor-link__input-wrapper\"\n @click=\"onInputFocus\"\n @focus=\"onInputFocus\"\n @click.stop=\"onInputFocus\"\n @keydown.enter=\"setLink\"\n />\n </div>\n </template>\n <template #footerContent>\n <dt-stack\n direction=\"row\"\n gap=\"300\"\n class=\"d-recipe-editor__popover-footer\"\n >\n <dt-button\n data-qa=\"dt-recipe-editor-remove-link-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n v-bind=\"removeLinkButtonLabels\"\n @click=\"removeLink\"\n >\n {{ removeLinkButtonLabels.title }}\n </dt-button>\n <dt-button\n data-qa=\"dt-recipe-editor-set-link-cancel-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n v-bind=\"cancelSetLinkButtonLabels\"\n @click=\"closeLinkInput\"\n >\n {{ cancelSetLinkButtonLabels.title }}\n </dt-button>\n <dt-button\n data-qa=\"dt-recipe-editor-set-link-confirm-btn\"\n size=\"sm\"\n v-bind=\"confirmSetLinkButtonLabels\"\n @click=\"setLink\"\n >\n {{ confirmSetLinkButtonLabels.title }}\n </dt-button>\n </dt-stack>\n </template>\n </dt-popover>\n </dt-stack>\n </dt-stack>\n\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n :style=\"{ 'max-height': maxHeight }\"\n :class=\"['d-recipe-editor__content', { 'd-recipe-editor__content-image-resize': allowImageResize }]\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :allow-font-color=\"true\"\n :allow-font-family=\"true\"\n :allow-inline-images=\"true\"\n :allow-line-breaks=\"true\"\n :allow-variable=\"true\"\n :allow-font-size=\"showFontSizeButton\"\n :allow-background-color=\"allowBackgroundColor\"\n :allow-line-height=\"allowLineHeight\"\n :variable-items=\"flattenedVariableItems\"\n :hide-link-bubble-menu=\"true\"\n :auto-focus=\"autoFocus\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"`d-recipe-editor__content-input ${inputClass}`\"\n :link=\"true\"\n :output-format=\"htmlOutputFormat\"\n :placeholder=\"placeholder\"\n :preserve-whitespace=\"preserveWhitespace\"\n :use-div-tags=\"useDivTags\"\n :allow-tables=\"allowTables\"\n :allow-image-resize=\"allowImageResize\"\n data-qa=\"dt-rich-text-editor\"\n v-bind=\"removeClassStyleAttrs($attrs)\"\n @text-input=\"onTextInput\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @input=\"onInput($event)\"\n @selected=\"onSelected\"\n />\n </div>\n </div>\n</template>\n\n<script>\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 EDITOR_DEFAULT_FONT_COLOR,\n} from './editor_constants.js';\nimport { removeClassStyleAttrs, addClassStyleAttrs } from '@/common/utils';\nimport { DtButton } from '@/components/button';\nimport { DtPopover } from '@/components/popover';\nimport { DtStack } from '@/components/stack';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtListItem } from '@/components/list_item';\nimport { DtCombobox } from '@/components/combobox';\n\nimport { DtDropdownSeparator } from '@/components/dropdown/index.js';\nimport { DtListItemGroup } from '@/components/list_item_group/index.js';\nimport EditorToolbarButton from './EditorToolbarButton.vue';\nimport EditorToolbarDropdownButton from './EditorToolbarDropdownButton.vue';\nimport EditorToolbarPopoverButton from './EditorToolbarPopoverButton.vue';\nimport {\n DtIconAlignCenter,\n DtIconAlignJustify,\n DtIconAlignLeft,\n DtIconAlignRight,\n DtIconBold,\n DtIconCodeBlock,\n DtIconImage,\n DtIconItalic,\n DtIconQuickReply,\n DtIconLink2,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconQuote,\n DtIconStrikethrough,\n DtIconUnderline,\n DtIconType,\n DtIconBraces,\n DtIconSearch,\n DtIconChevronDown,\n DtIconFontSize,\n DtIconStopFilled,\n} from '@dialpad/dialtone-icons/vue3';\nimport { DialtoneLocalization } from '@/localization';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeEditor',\n\n components: {\n DtListItemGroup,\n DtDropdownSeparator,\n DtListItem,\n DtRichTextEditor,\n DtButton,\n DtPopover,\n DtStack,\n DtInput,\n DtTooltip,\n DtCombobox,\n EditorToolbarButton,\n EditorToolbarDropdownButton,\n EditorToolbarPopoverButton,\n DtIconQuickReply,\n DtIconBold,\n DtIconItalic,\n DtIconUnderline,\n DtIconStrikethrough,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconAlignLeft,\n DtIconAlignCenter,\n DtIconAlignRight,\n DtIconAlignJustify,\n DtIconQuote,\n DtIconCodeBlock,\n DtIconLink2,\n DtIconImage,\n DtIconSearch,\n DtIconType,\n DtIconBraces,\n DtIconChevronDown,\n DtIconFontSize,\n DtIconStopFilled,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n modelValue: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n /**\n * Placeholder text for the set link input field\n */\n setLinkPlaceholder: {\n type: String,\n default: '',\n },\n\n /**\n * Show button to render text as bold\n */\n showBoldButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render text in italics\n */\n showItalicsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to underline text\n */\n showUnderlineButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to strike text\n */\n showStrikeButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render list items\n */\n showListItemsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render ordered list items\n */\n showOrderedListButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the left\n */\n showAlignLeftButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the center\n */\n showAlignCenterButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the right\n */\n showAlignRightButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to justify text\n */\n showAlignJustifyButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add quote format to text\n */\n showQuoteButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add code block\n */\n showCodeBlockButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to handle quick replies\n */\n showQuickRepliesButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add an inline image\n */\n showInlineImageButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show button to add a variable\n */\n showVariableButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Variable categories to display when variable button is clicked\n */\n variableCategories: {\n type: Array,\n default: () => [],\n },\n\n /**\n * Show add link default config.\n */\n showAddLink: {\n type: Object,\n default: () => ({\n showAddLinkButton: true,\n }),\n },\n\n /**\n * Show font style button.\n */\n showFontStyleButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show font size button.\n */\n showFontSizeButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show font color button.\n */\n showFontColorButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Available font styles for the font style dropdown.\n */\n fontStyles: {\n type: Array,\n default: () => [\n { name: 'Arial', value: null }, // arial is the default font\n { name: 'Georgia', value: 'Georgia' },\n { name: 'Helvetica', value: 'Helvetica' },\n { name: 'Verdana', value: 'Verdana'},\n { name: 'Times New Roman', value: 'Times New Roman' },\n ],\n },\n\n fontSizes : {\n type: Array,\n default: () => [\n { name: 'Small', value: '12px'},\n { name: 'Normal', value: '15px'},\n { name: 'Large', value: '24px'},\n { name: 'Huge', value: '36px'},\n ],\n },\n\n /**\n * Whether the input allows background color to be introduced in the text.\n */\n allowBackgroundColor: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether the input allows line height to be introduced in the text.\n */\n allowLineHeight: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls how whitespace is handled when parsing HTML content.\n * - 'full': All whitespace is preserved\n * - true: Whitespace in inline content is preserved, whitespace-only nodes between blocks are removed\n * - false: Standard HTML whitespace collapsing\n * @values full, true, false\n */\n preserveWhitespace: {\n type: [Boolean, String],\n default: 'full',\n },\n\n /**\n * Use div tags instead of paragraph tags to show text\n */\n useDivTags: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Allow Tables to be used in to the editor\n */\n allowTables: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Allow image resizing\n */\n allowImageResize: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n\n /**\n * Event fired to sync the modelValue prop with the parent component\n * @event input\n * @type {String|JSON}\n */\n 'update:modelValue',\n\n /**\n * Quick replies button\n * pressed event\n * @event quick-replies-click\n */\n 'quick-replies-click',\n\n /**\n * Emit when inline image button is clicked\n * @event inline-image-click\n */\n 'inline-image-click',\n\n /**\n * Emit when text input is changed\n * @event text-input\n * @type {String}\n */\n 'text-input',\n ],\n\n data () {\n return {\n internalInputValue: this.modelValue, // internal input content\n hasFocus: false,\n\n linkOptions: {\n class: 'd-recipe-editor__link',\n },\n\n currentFontColor: undefined,\n showLinkInput: false,\n fontStyleSearch: '',\n linkInput: '',\n currentButtonRefIndex: 0,\n variableSearchValue: '',\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n htmlOutputFormat () {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS[2];\n },\n\n flattenedVariableItems () {\n if (!this.variableCategories) return [];\n return this.variableCategories.reduce((acc, category) => {\n return acc.concat(category.items || []);\n }, []);\n },\n\n showingTextFormatButtons () {\n return this.showBoldButton || this.showItalicsButton || this.showStrikeButton || this.showUnderlineButton;\n },\n\n showingAlignmentButtons () {\n return this.showAlignLeftButton || this.showAlignCenterButton ||\n this.showAlignRightButton || this.showAlignJustifyButton;\n },\n\n showingListButtons () {\n return this.showListItemsButton || this.showOrderedListButton;\n },\n\n orderedRefs () {\n const refs = this.buttonGroups.reduce(function (acc, buttonData) {\n buttonData.buttonGroup.forEach(button => {\n acc.push(this.getButtonRef(buttonData.key, button.selector));\n }, this);\n return acc;\n }.bind(this), []);\n refs.push(this.getButtonRef('custom', 'link'));\n return refs;\n },\n\n buttonGroups () {\n const individualButtonStacks = this.individualButtons.map(buttonData => ({\n key: buttonData.selector,\n buttonGroup: [buttonData],\n }));\n return [\n { key: 'new', buttonGroup: this.newButtons },\n { key: 'format', buttonGroup: this.textFormatButtons },\n { key: 'alignment', buttonGroup: this.alignmentButtons },\n { key: 'list', buttonGroup: this.listButtons },\n ...individualButtonStacks,\n ].filter(buttonGroupData => buttonGroupData.buttonGroup.length > 0);\n },\n\n newButtons () {\n return [\n {\n showBtn: this.showQuickRepliesButton,\n buttonType: 'button',\n label: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n selector: 'quickReplies',\n icon: DtIconQuickReply,\n dataQA: 'dt-recipe-editor-quick-replies-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n onClick: this.onQuickRepliesClick,\n },\n ].filter(button => button.showBtn);\n },\n\n textFormatButtons () {\n return [\n {\n showBtn: this.showFontStyleButton,\n buttonType: 'popover',\n selector: 'fontStyle',\n icon: DtIconType,\n dataQA: 'dt-recipe-editor-font-style-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_STYLE_BUTTON_LABEL'),\n },\n {\n showBtn: this.showFontSizeButton,\n buttonType: 'popover',\n selector: 'fontSize',\n icon: DtIconFontSize,\n dataQA: 'dt-recipe-editor-font-size-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_SIZE_BUTTON_LABEL'),\n },\n {\n showBtn: this.showFontColorButton,\n buttonType: 'custom',\n selector: 'fontColor',\n icon: DtIconStopFilled,\n dataQA: 'dt-recipe-editor-font-color-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_COLOR_BUTTON_LABEL'),\n onClick: this.onColorPickerButtonClick,\n },\n {\n showBtn: this.showBoldButton,\n buttonType: 'button',\n selector: 'bold',\n icon: DtIconBold,\n dataQA: 'dt-recipe-editor-bold-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BOLD_BUTTON_LABEL'),\n onClick: this.onBoldTextToggle,\n },\n {\n showBtn: this.showItalicsButton,\n buttonType: 'button',\n selector: 'italic',\n icon: DtIconItalic,\n dataQA: 'dt-recipe-editor-italics-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ITALICS_BUTTON_LABEL'),\n onClick: this.onItalicTextToggle,\n },\n {\n showBtn: this.showUnderlineButton,\n buttonType: 'button',\n selector: 'underline',\n icon: DtIconUnderline,\n dataQA: 'dt-recipe-editor-underline-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_UNDERLINE_BUTTON_LABEL'),\n onClick: this.onUnderlineTextToggle,\n },\n {\n showBtn: this.showStrikeButton,\n buttonType: 'button',\n selector: 'strike',\n icon: DtIconStrikethrough,\n dataQA: 'dt-recipe-editor-strike-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_STRIKE_BUTTON_LABEL'),\n onClick: this.onStrikethroughTextToggle,\n },\n ].filter(button => button.showBtn);\n },\n\n alignmentButtons () {\n return [\n {\n showBtn: this.showAlignLeftButton,\n buttonType: 'button',\n selector: { textAlign: 'left' },\n icon: DtIconAlignLeft,\n dataQA: 'dt-recipe-editor-align-left-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_LEFT_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('left'),\n },\n {\n showBtn: this.showAlignCenterButton,\n buttonType: 'button',\n selector: { textAlign: 'center' },\n icon: DtIconAlignCenter,\n dataQA: 'dt-recipe-editor-align-center-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_CENTER_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('center'),\n },\n {\n showBtn: this.showAlignRightButton,\n buttonType: 'button',\n selector: { textAlign: 'right' },\n icon: DtIconAlignRight,\n dataQA: 'dt-recipe-editor-align-right-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_RIGHT_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('right'),\n },\n {\n showBtn: this.showAlignJustifyButton,\n buttonType: 'button',\n selector: { textAlign: 'justify' },\n icon: DtIconAlignJustify,\n dataQA: 'dt-recipe-editor-align-justify-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_JUSTIFY_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('justify'),\n },\n ].filter(button => button.showBtn);\n },\n\n listButtons () {\n return [\n {\n showBtn: this.showListItemsButton,\n buttonType: 'button',\n selector: 'bulletList',\n icon: DtIconListBullet,\n dataQA: 'dt-recipe-editor-list-items-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BULLET_LIST_BUTTON_LABEL'),\n onClick: this.onBulletListToggle,\n },\n {\n showBtn: this.showOrderedListButton,\n buttonType: 'button',\n selector: 'orderedList',\n icon: DtIconListOrdered,\n dataQA: 'dt-recipe-editor-ordered-list-items-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ORDERED_LIST_BUTTON_LABEL'),\n onClick: this.onOrderedListToggle,\n },\n ].filter(button => button.showBtn);\n },\n\n individualButtons () {\n return [\n {\n showBtn: this.showQuoteButton,\n buttonType: 'button',\n selector: 'blockquote',\n icon: DtIconQuote,\n dataQA: 'dt-recipe-editor-blockquote-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUOTE_BUTTON_LABEL'),\n onClick: this.onBlockquoteToggle,\n },\n {\n showBtn: this.showCodeBlockButton,\n buttonType: 'button',\n selector: 'codeBlock',\n icon: DtIconCodeBlock,\n dataQA: 'dt-recipe-editor-code-block-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_CODE_BUTTON_LABEL'),\n onClick: this.onCodeBlockToggle,\n },\n {\n showBtn: this.showInlineImageButton,\n buttonType: 'button',\n selector: 'image',\n icon: DtIconImage,\n dataQA: 'dt-recipe-editor-inline-image-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_IMAGE_BUTTON_LABEL'),\n // Handle getting image\n onClick: this.onInsertInlineImageClick,\n },\n {\n showBtn: this.showVariableButton,\n buttonType: 'popover',\n selector: 'variable',\n icon: DtIconBraces,\n dataQA: 'dt-recipe-editor-variable-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_VARIABLE_BUTTON_LABEL'),\n },\n ].filter(button => button.showBtn);\n },\n\n linkButton () {\n return {\n showBtn: this.showAddLink.showAddLinkButton,\n buttonType: 'custom',\n selector: 'link',\n icon: DtIconLink2,\n dataQA: 'dt-recipe-editor-add-link-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_LINK_BUTTON_LABEL'),\n onClick: this.openLinkInput,\n };\n },\n\n confirmSetLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_CONFIRM_SET_LINK_BUTTON');\n },\n\n cancelSetLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_CANCEL_SET_LINK_BUTTON');\n },\n\n removeLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_REMOVE_LINK_BUTTON');\n },\n\n showAddLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_ADD_LINK_BUTTON');\n },\n\n filteredFontStyles () {\n const searchValue = this.fontStyleSearch.toLowerCase();\n return this.fontStyles.filter((item) =>\n item.name.toLowerCase().includes(searchValue),\n );\n },\n\n filteredCategories() {\n return this.variableCategories.filter(\n (category) => this.getFilteredItemsForCategory(category).length,\n );\n },\n\n colorPickerInput() {\n return this.$refs.editorRoot?.querySelector('.colorPickerInput');\n },\n\n isDefaultFontColor() {\n return this.currentFontColor === EDITOR_DEFAULT_FONT_COLOR;\n },\n\n actionBarBtn () {\n const ref = this.$refs[this.orderedRefs[this.currentButtonRefIndex]][0]?.$refs?.buttonRef // get nested ref\n || this.$refs[this.orderedRefs[this.currentButtonRefIndex]];\n return Array.isArray(ref) ? ref[0] : ref;\n },\n\n },\n\n watch: {\n modelValue (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n removeClassStyleAttrs,\n addClassStyleAttrs,\n\n focusEditor () {\n this.$refs.richTextEditor?.editor?.commands.focus();\n },\n\n onInputFocus (event) {\n event?.stopPropagation();\n },\n\n removeLink () {\n this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run();\n this.closeLinkInput();\n },\n\n setLink (event) {\n const editor = this.$refs.richTextEditor?.editor;\n event?.preventDefault();\n event?.stopPropagation();\n\n if (!this.linkInput) {\n // If link text is set to empty string,\n // remove any existing links.\n this.removeLink();\n return;\n }\n\n // Check if input matches any of the supported link formats\n const prefix = EDITOR_SUPPORTED_LINK_PROTOCOLS.find(prefixRegex => prefixRegex.test(this.linkInput));\n\n if (!prefix) {\n // If no matching pattern is found, prepend default prefix\n this.linkInput = `${EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`;\n }\n\n const selection = editor?.view?.state?.selection;\n\n if (selection.anchor === selection.head) {\n // If no text has been selected, manually insert the link text.\n // Do not rely on link options set through DtRichTextEditor\n // component, because they clash with these and cause issues.\n editor\n .chain()\n .focus()\n .insertContentAt(\n selection.anchor,\n `<a class=\"${this.linkOptions.class}\" href=${this.linkInput}>${this.linkInput}</a>`,\n )\n .run();\n } else {\n // Set or edit the link\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: this.linkInput, class: this.linkOptions.class })\n .run();\n }\n\n this.closeLinkInput();\n },\n\n openLinkInput () {\n this.showLinkInput = true;\n },\n\n updateInput (openedInput) {\n if (!openedInput) {\n return this.closeLinkInput();\n }\n this.linkInput = this.$refs.richTextEditor?.editor?.getAttributes('link')?.href;\n },\n\n closeLinkInput () {\n this.showLinkInput = false;\n this.linkInput = '';\n this.$refs.richTextEditor.editor?.chain().focus();\n },\n\n onBoldTextToggle () {\n this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run();\n },\n\n onItalicTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run();\n },\n\n onUnderlineTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run();\n },\n\n onStrikethroughTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run();\n },\n\n onTextAlign (alignment) {\n if (this.$refs.richTextEditor?.editor?.isActive({ textAlign: alignment })) {\n // If this alignment type is already set here, unset it\n return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();\n }\n this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(alignment).run();\n },\n\n onBulletListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run();\n },\n\n onOrderedListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run();\n },\n\n onCodeBlockToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run();\n },\n\n onQuickRepliesClick () {\n this.$emit('quick-replies-click');\n },\n\n onInsertInlineImageClick () {\n this.$emit('inline-image-click');\n },\n\n insertVariable (categoryName, variableData) {\n // Insert a variable using the custom command from the Variable extension\n this.$refs.richTextEditor?.editor.chain().focus().insertVariable({\n id: variableData.id,\n placeholder: variableData.placeholder || '',\n altText: '',\n enableAltText: variableData.enableAltText,\n }).run();\n },\n\n insertInlineImage (imageUrl) {\n this.$refs.richTextEditor?.editor.chain().focus().setImage({ src: imageUrl }).run();\n },\n\n insertInMessageBody (messageContent) {\n this.$refs.richTextEditor?.editor.chain().focus().insertContent(messageContent).run();\n },\n\n setCursorPosition (position = null) {\n this.$refs.richTextEditor?.editor.chain().focus(position).run();\n },\n\n onBlockquoteToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().run();\n },\n\n onTextInput (input) {\n this.$emit('text-input', input);\n },\n\n onFocus (event) {\n this.hasFocus = true;\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n this.$emit('update:modelValue', event);\n },\n\n onSelected() {\n this.updateFontColorInput();\n },\n\n getButtonKey (key, selector) {\n return `${key}-${JSON.stringify(selector)}`;\n },\n\n // Unique Button Ref Key to identify ref\n getButtonRef (key, selector) {\n return `${this.getButtonKey(key, selector)}-ref`;\n },\n\n /**\n * Determines if an element in the action bar button list is focusable with tab key\n * @param {string} refKey - unique identifier for the ref element in DOM\n */\n canFocus (refKey) {\n return refKey === this.orderedRefs[this.currentButtonRefIndex];\n },\n\n shiftActionBarFocusRight () {\n this.shiftButtonRefIndex(1);\n },\n\n shiftActionBarFocusLeft () {\n this.shiftButtonRefIndex(-1);\n },\n\n shiftButtonRefIndex (shiftAmount) {\n const previousActionBarBtn = this.actionBarBtn;\n const index = (this.currentButtonRefIndex + shiftAmount) % this.orderedRefs.length;\n this.currentButtonRefIndex = index >= 0 ? index : this.orderedRefs.length + index;\n const currentActionBarBtn = this.actionBarBtn;\n\n previousActionBarBtn.$el.blur();\n currentActionBarBtn.$el.focus();\n },\n\n onFontStyleSelect (fontFamily) {\n if (fontFamily) {\n this.$refs.richTextEditor?.editor?.chain().focus().setFontFamily(fontFamily).run();\n } else {\n this.$refs.richTextEditor?.editor?.chain().focus().unsetFontFamily().run();\n }\n this.$refs.richTextEditor?.editor?.commands.focus();\n },\n\n isCurrentFontFamily (fontFamily) {\n if (!fontFamily) {\n return !this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.fontFamily;\n }\n return this.$refs.richTextEditor?.editor?.isActive('textStyle', { fontFamily });\n },\n\n onFontSizeSelect (fontSize) {\n this.$refs.richTextEditor?.editor?.chain().focus().setFontSize(fontSize).run();\n this.$refs.richTextEditor?.editor?.commands.focus();\n },\n\n isCurrentFontSize (fontSize) {\n if (!fontSize) {\n return !this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.fontSize;\n }\n return this.$refs.richTextEditor?.editor?.isActive('textStyle', { fontSize });\n },\n\n getFilteredItemsForCategory(category) {\n const searchValue = this.variableSearchValue.toLowerCase();\n if (category.name.toLowerCase().includes(searchValue)) {\n return category.items;\n }\n return category.items.filter((item) =>\n item.name.toLowerCase().includes(searchValue),\n );\n },\n\n updateFontColorInput() {\n this.currentFontColor = this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.color || EDITOR_DEFAULT_FONT_COLOR;\n },\n\n onColorPickerButtonClick () {\n this.colorPickerInput?.click();\n },\n\n onColorPickerInput (fontColor) {\n this.$refs.richTextEditor?.editor?.chain().focus().setColor(fontColor).run();\n this.$refs.richTextEditor?.editor?.commands.focus();\n this.updateFontColorInput();\n },\n },\n};\n</script>\n\n<style>\n/* Image resizing classes - only active when allowImageResize is true */\n\n/* Image border */\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-wrapper] {\n outline: 1px solid var(--dt-color-chart-info-selected);\n line-height: 0 !important;\n}\n\n/* Corner handles */\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle] {\n position: absolute;\n background: var(--dt-color-chart-info-selected);\n z-index: 10;\n}\n\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-left'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-right'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-left'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-right'] {\n width: 8px;\n height: 8px;\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-left'] {\n cursor: nwse-resize;\n transform: translate(-50%, -50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-right'] {\n cursor: nesw-resize;\n transform: translate(50%, -50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-left'] {\n cursor: nesw-resize;\n transform: translate(-50%, 50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-right'] {\n cursor: nwse-resize;\n transform: translate(50%, 50%);\n}\n</style>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"editor.cjs","names":[],"sources":["../../../recipes/conversation_view/editor/editor.vue"],"sourcesContent":["<template>\n <div\n ref=\"editorRoot\"\n class=\"d-recipe-editor\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n data-qa=\"dt-recipe-editor\"\n role=\"presentation\"\n @click=\"$refs.richTextEditor.focusEditor()\"\n >\n <!-- Section for the top UI -->\n <dt-stack\n class=\"d-recipe-editor__top-bar\"\n direction=\"row\"\n gap=\"450\"\n >\n <dt-stack\n v-for=\"buttonGroup in buttonGroups\"\n :key=\"buttonGroup.key\"\n direction=\"row\"\n gap=\"300\"\n >\n <template v-for=\"button in buttonGroup.buttonGroup\">\n <!-- Font Style Popover -->\n <editor-toolbar-popover-button\n v-if=\"button.buttonType === 'popover' && button.selector === 'fontStyle'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :popover-data-qa=\"'dt-recipe-editor-font-style-input-popover'\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n >\n <template #content=\"{ close }\">\n <dt-combobox\n label=\"\"\n :label-visible=\"false\"\n :show-list=\"true\"\n :click-on-select=\"true\"\n @escape=\"close()\"\n >\n <template #input=\"{ inputProps }\">\n <dt-input\n v-bind=\"inputProps\"\n v-model=\"fontStyleSearch\"\n root-class=\"d-p8 d-pb4 d-w216\"\n type=\"search\"\n :placeholder=\"i18n.$t('DIALTONE_EDITOR_FONT_STYLE_SEARCH_PLACEHOLDER')\"\n size=\"sm\"\n role=\"menuitem\"\n >\n <template #leftIcon=\"{ iconSize }\">\n <dt-icon-search :size=\"iconSize\" />\n </template>\n </dt-input>\n </template>\n <template #list=\"{ listProps }\">\n <ul\n v-bind=\"listProps\"\n >\n <dt-list-item\n v-for=\"fontStyle in filteredFontStyles\"\n :key=\"fontStyle.name\"\n :selected=\"isCurrentFontFamily(fontStyle.value)\"\n :style=\"{ fontFamily: fontStyle.value || 'inherit' }\"\n role=\"option\"\n navigation-type=\"arrow-keys\"\n @click=\"\n close(focusEditor);\n onFontStyleSelect(fontStyle.value)\n \"\n >\n {{ fontStyle.name }}\n </dt-list-item>\n </ul>\n </template>\n </dt-combobox>\n </template>\n </editor-toolbar-popover-button>\n\n <!-- Font Size Dropdown -->\n <editor-toolbar-dropdown-button\n v-else-if=\"button.buttonType === 'popover' && button.selector === 'fontSize'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :dropdown-data-qa=\"'dt-recipe-editor-font-size-input-popover'\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n >\n <template #list=\"{ close }\">\n <dt-list-item\n v-for=\"fontSize in fontSizes\"\n :key=\"fontSize.name\"\n :selected=\"isCurrentFontSize(fontSize.value)\"\n role=\"menuitem\"\n navigation-type=\"arrow-keys\"\n @click=\"\n close(focusEditor);\n onFontSizeSelect(fontSize.value, $event)\n \"\n >\n <span :style=\"{ fontSize: fontSize.value }\">{{ fontSize.name }}</span>\n </dt-list-item>\n </template>\n </editor-toolbar-dropdown-button>\n\n <!-- Font Color Button -->\n <dt-button\n v-else-if=\"button.buttonType === 'custom' && button.selector === 'fontColor'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n v-dt-tooltip=\"{\n message: button.tooltipMessage,\n placement: 'top',\n externalAnchorElement: $refs[getButtonRef(buttonGroup.key, button.selector)]?.$el, \n }\"\n kind=\"muted\"\n importance=\"clear\"\n size=\"xs\"\n :active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :aria-label=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n @keydown.right.stop=\"shiftActionBarFocusRight\"\n @keydown.left.stop=\"shiftActionBarFocusLeft\"\n @click=\"button.onClick()\"\n >\n <template #icon>\n <component\n :is=\"button.icon\"\n size=\"200\"\n :style=\"!isDefaultFontColor ? { color: currentFontColor } : {}\"\n />\n <dt-input\n :value=\"currentFontColor\"\n root-class=\"d-w0 d-h0 d-of-hidden\"\n input-class=\"colorPickerInput d-w0 d-h0 d-p0 d-bar0\"\n input-wrapper-class=\"d-w0 d-h0 d-ba-none\"\n size=\"sm\"\n type=\"color\"\n @input=\"onColorPickerInput\"\n @click.stop\n />\n </template>\n </dt-button>\n\n <!-- Variable Popover -->\n <editor-toolbar-popover-button\n v-else-if=\"button.buttonType === 'popover' && button.selector === 'variable'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"false\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :popover-data-qa=\"'dt-recipe-editor-variable-popover'\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n >\n <template #content=\"{ close }\">\n <dt-combobox\n label=\"\"\n :label-visible=\"false\"\n :show-list=\"true\"\n :click-on-select=\"true\"\n @escape=\"close()\"\n >\n <template #input=\"{ inputProps }\">\n <dt-input\n v-bind=\"inputProps\"\n v-model=\"variableSearchValue\"\n root-class=\"d-p8 d-pb4 d-w264\"\n type=\"search\"\n :placeholder=\"i18n.$t('DIALTONE_EDITOR_VARIABLE_POPOVER_SEARCH_PLACEHOLDER')\"\n size=\"md\"\n role=\"menuitem\"\n >\n <template #leftIcon=\"{ iconSize }\">\n <dt-icon-search :size=\"iconSize\" />\n </template>\n </dt-input>\n </template>\n <template #list=\"{ listProps }\">\n <div v-bind=\"listProps\">\n <dt-list-item-group\n v-for=\"(category, index) in filteredCategories\"\n :key=\"category.name\"\n :heading=\"category.name\"\n heading-class=\"d-headline--sm-compact d-p8\"\n >\n <dt-list-item\n v-for=\"item in getFilteredItemsForCategory(category)\"\n :key=\"category.name + item.name\"\n role=\"option\"\n navigation-type=\"arrow-keys\"\n @click=\"\n insertVariable(category.name, item);\n close(focusEditor);\n \"\n >\n {{ item.name }}\n </dt-list-item>\n <dt-dropdown-separator\n v-if=\"index < filteredCategories.length - 1\"\n />\n </dt-list-item-group>\n </div>\n </template>\n </dt-combobox>\n </template>\n </editor-toolbar-popover-button>\n\n <!-- Regular Toolbar Button -->\n <editor-toolbar-button\n v-else-if=\"button.buttonType === 'button'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n :label=\"button.label\"\n :on-click=\"button.onClick\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n />\n </template>\n <div class=\"d-recipe-editor__button-group-divider\" />\n </dt-stack>\n <dt-stack\n v-if=\"linkButton.showBtn\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-popover\n :open=\"showLinkInput\"\n :show-close-button=\"false\"\n data-qa=\"dt-recipe-editor-link-input-popover\"\n padding=\"none\"\n placement=\"bottom-start\"\n @click=\"onInputFocus\"\n @opened=\"updateInput\"\n @click.stop=\"onInputFocus\"\n >\n <template #anchor>\n <dt-tooltip\n :key=\"linkButton.key\"\n :message=\"linkButton.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :ref=\"getButtonRef('custom', 'link')\"\n :active=\"$refs.richTextEditor?.editor?.isActive(linkButton.selector)\"\n :aria-label=\"linkButton.tooltipMessage\"\n :data-qa=\"linkButton.dataQA\"\n :tabindex=\"canFocus(getButtonRef('custom', 'link')) ? 0 : -1\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n @click=\"linkButton.onClick()\"\n @keydown.right.stop=\"shiftActionBarFocusRight\"\n @keydown.left.stop=\"shiftActionBarFocusLeft\"\n >\n <template #icon>\n <component\n :is=\"linkButton.icon\"\n size=\"200\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n\n <template #content>\n <div class=\"d-recipe-editor__popover-content\">\n <span>\n {{ showAddLinkButtonLabels.title }}\n </span>\n <dt-input\n v-model=\"linkInput\"\n :input-aria-label=\"showAddLinkButtonLabels['aria-label']\"\n :placeholder=\"setLinkPlaceholder\"\n data-qa=\"dt-recipe-editor-link-input\"\n input-wrapper-class=\"d-recipe-editor-link__input-wrapper\"\n @click=\"onInputFocus\"\n @focus=\"onInputFocus\"\n @click.stop=\"onInputFocus\"\n @keydown.enter=\"setLink\"\n />\n </div>\n </template>\n <template #footerContent>\n <dt-stack\n direction=\"row\"\n gap=\"300\"\n class=\"d-recipe-editor__popover-footer\"\n >\n <dt-button\n data-qa=\"dt-recipe-editor-remove-link-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n v-bind=\"removeLinkButtonLabels\"\n @click=\"removeLink\"\n >\n {{ removeLinkButtonLabels.title }}\n </dt-button>\n <dt-button\n data-qa=\"dt-recipe-editor-set-link-cancel-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n v-bind=\"cancelSetLinkButtonLabels\"\n @click=\"closeLinkInput\"\n >\n {{ cancelSetLinkButtonLabels.title }}\n </dt-button>\n <dt-button\n data-qa=\"dt-recipe-editor-set-link-confirm-btn\"\n size=\"sm\"\n v-bind=\"confirmSetLinkButtonLabels\"\n @click=\"setLink\"\n >\n {{ confirmSetLinkButtonLabels.title }}\n </dt-button>\n </dt-stack>\n </template>\n </dt-popover>\n </dt-stack>\n </dt-stack>\n\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n :style=\"{ 'max-height': maxHeight }\"\n :class=\"['d-recipe-editor__content', { 'd-recipe-editor__content-image-resize': allowImageResize }]\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :allow-font-color=\"true\"\n :allow-font-family=\"true\"\n :allow-inline-images=\"true\"\n :allow-line-breaks=\"true\"\n :allow-variable=\"true\"\n :allow-font-size=\"showFontSizeButton\"\n :allow-background-color=\"allowBackgroundColor\"\n :allow-line-height=\"allowLineHeight\"\n :variable-items=\"flattenedVariableItems\"\n :hide-link-bubble-menu=\"true\"\n :auto-focus=\"autoFocus\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"`d-recipe-editor__content-input ${inputClass}`\"\n :link=\"true\"\n :output-format=\"htmlOutputFormat\"\n :placeholder=\"placeholder\"\n :preserve-whitespace=\"preserveWhitespace\"\n :use-div-tags=\"useDivTags\"\n :allow-tables=\"allowTables\"\n :allow-image-resize=\"allowImageResize\"\n data-qa=\"dt-rich-text-editor\"\n v-bind=\"removeClassStyleAttrs($attrs)\"\n @text-input=\"onTextInput\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @input=\"onInput($event)\"\n @selected=\"onSelected\"\n />\n </div>\n </div>\n</template>\n\n<script>\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 EDITOR_DEFAULT_FONT_COLOR,\n} from './editor_constants.js';\nimport { removeClassStyleAttrs, addClassStyleAttrs } from '@/common/utils';\nimport { DtButton } from '@/components/button';\nimport { DtPopover } from '@/components/popover';\nimport { DtStack } from '@/components/stack';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtListItem } from '@/components/list_item';\nimport { DtCombobox } from '@/components/combobox';\n\nimport { DtDropdownSeparator } from '@/components/dropdown/index.js';\nimport { DtListItemGroup } from '@/components/list_item_group/index.js';\nimport EditorToolbarButton from './EditorToolbarButton.vue';\nimport EditorToolbarDropdownButton from './EditorToolbarDropdownButton.vue';\nimport EditorToolbarPopoverButton from './EditorToolbarPopoverButton.vue';\nimport {\n DtIconAlignCenter,\n DtIconAlignJustify,\n DtIconAlignLeft,\n DtIconAlignRight,\n DtIconBold,\n DtIconCodeBlock,\n DtIconImage,\n DtIconItalic,\n DtIconQuickReply,\n DtIconLink2,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconQuote,\n DtIconStrikethrough,\n DtIconUnderline,\n DtIconType,\n DtIconBraces,\n DtIconSearch,\n DtIconChevronDown,\n DtIconFontSize,\n DtIconStopFilled,\n} from '@dialpad/dialtone-icons/vue3';\nimport { DialtoneLocalization } from '@/localization';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeEditor',\n\n components: {\n DtListItemGroup,\n DtDropdownSeparator,\n DtListItem,\n DtRichTextEditor,\n DtButton,\n DtPopover,\n DtStack,\n DtInput,\n DtTooltip,\n DtCombobox,\n EditorToolbarButton,\n EditorToolbarDropdownButton,\n EditorToolbarPopoverButton,\n DtIconQuickReply,\n DtIconBold,\n DtIconItalic,\n DtIconUnderline,\n DtIconStrikethrough,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconAlignLeft,\n DtIconAlignCenter,\n DtIconAlignRight,\n DtIconAlignJustify,\n DtIconQuote,\n DtIconCodeBlock,\n DtIconLink2,\n DtIconImage,\n DtIconSearch,\n DtIconType,\n DtIconBraces,\n DtIconChevronDown,\n DtIconFontSize,\n DtIconStopFilled,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n modelValue: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n /**\n * Placeholder text for the set link input field\n */\n setLinkPlaceholder: {\n type: String,\n default: '',\n },\n\n /**\n * Show button to render text as bold\n */\n showBoldButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render text in italics\n */\n showItalicsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to underline text\n */\n showUnderlineButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to strike text\n */\n showStrikeButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render list items\n */\n showListItemsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render ordered list items\n */\n showOrderedListButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the left\n */\n showAlignLeftButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the center\n */\n showAlignCenterButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the right\n */\n showAlignRightButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to justify text\n */\n showAlignJustifyButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add quote format to text\n */\n showQuoteButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add code block\n */\n showCodeBlockButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to handle quick replies\n */\n showQuickRepliesButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add an inline image\n */\n showInlineImageButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show button to add a variable\n */\n showVariableButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Variable categories to display when variable button is clicked\n */\n variableCategories: {\n type: Array,\n default: () => [],\n },\n\n /**\n * Show add link default config.\n */\n showAddLink: {\n type: Object,\n default: () => ({\n showAddLinkButton: true,\n }),\n },\n\n /**\n * Show font style button.\n */\n showFontStyleButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show font size button.\n */\n showFontSizeButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show font color button.\n */\n showFontColorButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Available font styles for the font style dropdown.\n */\n fontStyles: {\n type: Array,\n default: () => [\n { name: 'Arial', value: null }, // arial is the default font\n { name: 'Georgia', value: 'Georgia' },\n { name: 'Helvetica', value: 'Helvetica' },\n { name: 'Verdana', value: 'Verdana'},\n { name: 'Times New Roman', value: 'Times New Roman' },\n ],\n },\n\n fontSizes : {\n type: Array,\n default: () => [\n { name: 'Small', value: '12px'},\n { name: 'Normal', value: '15px'},\n { name: 'Large', value: '24px'},\n { name: 'Huge', value: '36px'},\n ],\n },\n\n /**\n * Whether the input allows background color to be introduced in the text.\n */\n allowBackgroundColor: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether the input allows line height to be introduced in the text.\n */\n allowLineHeight: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls how whitespace is handled when parsing HTML content.\n * - 'full': All whitespace is preserved\n * - true: Whitespace in inline content is preserved, whitespace-only nodes between blocks are removed\n * - false: Standard HTML whitespace collapsing\n * @values full, true, false\n */\n preserveWhitespace: {\n type: [Boolean, String],\n default: 'full',\n },\n\n /**\n * Use div tags instead of paragraph tags to show text\n */\n useDivTags: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Allow Tables to be used in to the editor\n */\n allowTables: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Allow image resizing\n */\n allowImageResize: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n\n /**\n * Event fired to sync the modelValue prop with the parent component\n * @event input\n * @type {String|JSON}\n */\n 'update:modelValue',\n\n /**\n * Quick replies button\n * pressed event\n * @event quick-replies-click\n */\n 'quick-replies-click',\n\n /**\n * Emit when inline image button is clicked\n * @event inline-image-click\n */\n 'inline-image-click',\n\n /**\n * Emit when text input is changed\n * @event text-input\n * @type {String}\n */\n 'text-input',\n ],\n\n data () {\n return {\n internalInputValue: this.modelValue, // internal input content\n hasFocus: false,\n\n linkOptions: {\n class: 'd-recipe-editor__link',\n },\n\n currentFontColor: undefined,\n showLinkInput: false,\n fontStyleSearch: '',\n linkInput: '',\n currentButtonRefIndex: 0,\n variableSearchValue: '',\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n htmlOutputFormat () {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS[2];\n },\n\n flattenedVariableItems () {\n if (!this.variableCategories) return [];\n return this.variableCategories.reduce((acc, category) => {\n return acc.concat(category.items || []);\n }, []);\n },\n\n showingTextFormatButtons () {\n return this.showBoldButton || this.showItalicsButton || this.showStrikeButton || this.showUnderlineButton;\n },\n\n showingAlignmentButtons () {\n return this.showAlignLeftButton || this.showAlignCenterButton ||\n this.showAlignRightButton || this.showAlignJustifyButton;\n },\n\n showingListButtons () {\n return this.showListItemsButton || this.showOrderedListButton;\n },\n\n orderedRefs () {\n const refs = this.buttonGroups.reduce(function (acc, buttonData) {\n buttonData.buttonGroup.forEach(button => {\n acc.push(this.getButtonRef(buttonData.key, button.selector));\n }, this);\n return acc;\n }.bind(this), []);\n refs.push(this.getButtonRef('custom', 'link'));\n return refs;\n },\n\n buttonGroups () {\n const individualButtonStacks = this.individualButtons.map(buttonData => ({\n key: buttonData.selector,\n buttonGroup: [buttonData],\n }));\n return [\n { key: 'new', buttonGroup: this.newButtons },\n { key: 'format', buttonGroup: this.textFormatButtons },\n { key: 'alignment', buttonGroup: this.alignmentButtons },\n { key: 'list', buttonGroup: this.listButtons },\n ...individualButtonStacks,\n ].filter(buttonGroupData => buttonGroupData.buttonGroup.length > 0);\n },\n\n newButtons () {\n return [\n {\n showBtn: this.showQuickRepliesButton,\n buttonType: 'button',\n label: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n selector: 'quickReplies',\n icon: DtIconQuickReply,\n dataQA: 'dt-recipe-editor-quick-replies-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n onClick: this.onQuickRepliesClick,\n },\n ].filter(button => button.showBtn);\n },\n\n textFormatButtons () {\n return [\n {\n showBtn: this.showFontStyleButton,\n buttonType: 'popover',\n selector: 'fontStyle',\n icon: DtIconType,\n dataQA: 'dt-recipe-editor-font-style-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_STYLE_BUTTON_LABEL'),\n },\n {\n showBtn: this.showFontSizeButton,\n buttonType: 'popover',\n selector: 'fontSize',\n icon: DtIconFontSize,\n dataQA: 'dt-recipe-editor-font-size-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_SIZE_BUTTON_LABEL'),\n },\n {\n showBtn: this.showFontColorButton,\n buttonType: 'custom',\n selector: 'fontColor',\n icon: DtIconStopFilled,\n dataQA: 'dt-recipe-editor-font-color-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_COLOR_BUTTON_LABEL'),\n onClick: this.onColorPickerButtonClick,\n },\n {\n showBtn: this.showBoldButton,\n buttonType: 'button',\n selector: 'bold',\n icon: DtIconBold,\n dataQA: 'dt-recipe-editor-bold-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BOLD_BUTTON_LABEL'),\n onClick: this.onBoldTextToggle,\n },\n {\n showBtn: this.showItalicsButton,\n buttonType: 'button',\n selector: 'italic',\n icon: DtIconItalic,\n dataQA: 'dt-recipe-editor-italics-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ITALICS_BUTTON_LABEL'),\n onClick: this.onItalicTextToggle,\n },\n {\n showBtn: this.showUnderlineButton,\n buttonType: 'button',\n selector: 'underline',\n icon: DtIconUnderline,\n dataQA: 'dt-recipe-editor-underline-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_UNDERLINE_BUTTON_LABEL'),\n onClick: this.onUnderlineTextToggle,\n },\n {\n showBtn: this.showStrikeButton,\n buttonType: 'button',\n selector: 'strike',\n icon: DtIconStrikethrough,\n dataQA: 'dt-recipe-editor-strike-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_STRIKE_BUTTON_LABEL'),\n onClick: this.onStrikethroughTextToggle,\n },\n ].filter(button => button.showBtn);\n },\n\n alignmentButtons () {\n return [\n {\n showBtn: this.showAlignLeftButton,\n buttonType: 'button',\n selector: { textAlign: 'left' },\n icon: DtIconAlignLeft,\n dataQA: 'dt-recipe-editor-align-left-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_LEFT_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('left'),\n },\n {\n showBtn: this.showAlignCenterButton,\n buttonType: 'button',\n selector: { textAlign: 'center' },\n icon: DtIconAlignCenter,\n dataQA: 'dt-recipe-editor-align-center-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_CENTER_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('center'),\n },\n {\n showBtn: this.showAlignRightButton,\n buttonType: 'button',\n selector: { textAlign: 'right' },\n icon: DtIconAlignRight,\n dataQA: 'dt-recipe-editor-align-right-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_RIGHT_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('right'),\n },\n {\n showBtn: this.showAlignJustifyButton,\n buttonType: 'button',\n selector: { textAlign: 'justify' },\n icon: DtIconAlignJustify,\n dataQA: 'dt-recipe-editor-align-justify-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_JUSTIFY_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('justify'),\n },\n ].filter(button => button.showBtn);\n },\n\n listButtons () {\n return [\n {\n showBtn: this.showListItemsButton,\n buttonType: 'button',\n selector: 'bulletList',\n icon: DtIconListBullet,\n dataQA: 'dt-recipe-editor-list-items-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BULLET_LIST_BUTTON_LABEL'),\n onClick: this.onBulletListToggle,\n },\n {\n showBtn: this.showOrderedListButton,\n buttonType: 'button',\n selector: 'orderedList',\n icon: DtIconListOrdered,\n dataQA: 'dt-recipe-editor-ordered-list-items-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ORDERED_LIST_BUTTON_LABEL'),\n onClick: this.onOrderedListToggle,\n },\n ].filter(button => button.showBtn);\n },\n\n individualButtons () {\n return [\n {\n showBtn: this.showQuoteButton,\n buttonType: 'button',\n selector: 'blockquote',\n icon: DtIconQuote,\n dataQA: 'dt-recipe-editor-blockquote-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUOTE_BUTTON_LABEL'),\n onClick: this.onBlockquoteToggle,\n },\n {\n showBtn: this.showCodeBlockButton,\n buttonType: 'button',\n selector: 'codeBlock',\n icon: DtIconCodeBlock,\n dataQA: 'dt-recipe-editor-code-block-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_CODE_BUTTON_LABEL'),\n onClick: this.onCodeBlockToggle,\n },\n {\n showBtn: this.showInlineImageButton,\n buttonType: 'button',\n selector: 'image',\n icon: DtIconImage,\n dataQA: 'dt-recipe-editor-inline-image-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_IMAGE_BUTTON_LABEL'),\n // Handle getting image\n onClick: this.onInsertInlineImageClick,\n },\n {\n showBtn: this.showVariableButton,\n buttonType: 'popover',\n selector: 'variable',\n icon: DtIconBraces,\n dataQA: 'dt-recipe-editor-variable-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_VARIABLE_BUTTON_LABEL'),\n },\n ].filter(button => button.showBtn);\n },\n\n linkButton () {\n return {\n showBtn: this.showAddLink.showAddLinkButton,\n buttonType: 'custom',\n selector: 'link',\n icon: DtIconLink2,\n dataQA: 'dt-recipe-editor-add-link-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_LINK_BUTTON_LABEL'),\n onClick: this.openLinkInput,\n };\n },\n\n confirmSetLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_CONFIRM_SET_LINK_BUTTON');\n },\n\n cancelSetLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_CANCEL_SET_LINK_BUTTON');\n },\n\n removeLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_REMOVE_LINK_BUTTON');\n },\n\n showAddLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_ADD_LINK_BUTTON');\n },\n\n filteredFontStyles () {\n const searchValue = this.fontStyleSearch.toLowerCase();\n return this.fontStyles.filter((item) =>\n item.name.toLowerCase().includes(searchValue),\n );\n },\n\n filteredCategories() {\n return this.variableCategories.filter(\n (category) => this.getFilteredItemsForCategory(category).length,\n );\n },\n\n colorPickerInput() {\n return this.$refs.editorRoot?.querySelector('.colorPickerInput');\n },\n\n isDefaultFontColor() {\n return this.currentFontColor === EDITOR_DEFAULT_FONT_COLOR;\n },\n\n actionBarBtn () {\n const ref = this.$refs[this.orderedRefs[this.currentButtonRefIndex]][0]?.$refs?.buttonRef // get nested ref\n || this.$refs[this.orderedRefs[this.currentButtonRefIndex]];\n return Array.isArray(ref) ? ref[0] : ref;\n },\n\n },\n\n watch: {\n modelValue (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n removeClassStyleAttrs,\n addClassStyleAttrs,\n\n focusEditor () {\n this.$refs.richTextEditor?.editor?.commands.focus();\n },\n\n onInputFocus (event) {\n event?.stopPropagation();\n },\n\n removeLink () {\n this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run();\n this.closeLinkInput();\n },\n\n setLink (event) {\n const editor = this.$refs.richTextEditor?.editor;\n event?.preventDefault();\n event?.stopPropagation();\n\n if (!this.linkInput) {\n // If link text is set to empty string,\n // remove any existing links.\n this.removeLink();\n return;\n }\n\n // Check if input matches any of the supported link formats\n const prefix = EDITOR_SUPPORTED_LINK_PROTOCOLS.find(prefixRegex => prefixRegex.test(this.linkInput));\n\n if (!prefix) {\n // If no matching pattern is found, prepend default prefix\n this.linkInput = `${EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`;\n }\n\n const selection = editor?.view?.state?.selection;\n\n if (selection.anchor === selection.head) {\n // If no text has been selected, manually insert the link text.\n // Do not rely on link options set through DtRichTextEditor\n // component, because they clash with these and cause issues.\n editor\n .chain()\n .focus()\n .insertContentAt(\n selection.anchor,\n `<a class=\"${this.linkOptions.class}\" href=${this.linkInput}>${this.linkInput}</a>`,\n )\n .run();\n } else {\n // Set or edit the link\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: this.linkInput, class: this.linkOptions.class })\n .run();\n }\n\n this.closeLinkInput();\n },\n\n openLinkInput () {\n this.showLinkInput = true;\n },\n\n updateInput (openedInput) {\n if (!openedInput) {\n return this.closeLinkInput();\n }\n this.linkInput = this.$refs.richTextEditor?.editor?.getAttributes('link')?.href;\n },\n\n closeLinkInput () {\n this.showLinkInput = false;\n this.linkInput = '';\n this.$refs.richTextEditor.editor?.chain().focus();\n },\n\n onBoldTextToggle () {\n this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run();\n },\n\n onItalicTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run();\n },\n\n onUnderlineTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run();\n },\n\n onStrikethroughTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run();\n },\n\n onTextAlign (alignment) {\n if (this.$refs.richTextEditor?.editor?.isActive({ textAlign: alignment })) {\n // If this alignment type is already set here, unset it\n return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();\n }\n this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(alignment).run();\n },\n\n onBulletListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run();\n },\n\n onOrderedListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run();\n },\n\n onCodeBlockToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run();\n },\n\n onQuickRepliesClick () {\n this.$emit('quick-replies-click');\n },\n\n onInsertInlineImageClick () {\n this.$emit('inline-image-click');\n },\n\n insertVariable (categoryName, variableData) {\n // Insert a variable using the custom command from the Variable extension\n this.$refs.richTextEditor?.editor.chain().focus().insertVariable({\n id: variableData.id,\n placeholder: variableData.placeholder || '',\n altText: '',\n enableAltText: variableData.enableAltText,\n }).run();\n },\n\n insertInlineImage (imageUrl) {\n this.$refs.richTextEditor?.editor.chain().focus().setImage({ src: imageUrl }).run();\n },\n\n insertInMessageBody (messageContent) {\n this.$refs.richTextEditor?.editor.chain().focus().insertContent(messageContent).run();\n },\n\n setCursorPosition (position = null) {\n this.$refs.richTextEditor?.editor.chain().focus(position).run();\n },\n\n onBlockquoteToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().run();\n },\n\n onTextInput (input) {\n this.$emit('text-input', input);\n },\n\n onFocus (event) {\n this.hasFocus = true;\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n this.$emit('update:modelValue', event);\n },\n\n onSelected() {\n this.updateFontColorInput();\n },\n\n getButtonKey (key, selector) {\n return `${key}-${JSON.stringify(selector)}`;\n },\n\n // Unique Button Ref Key to identify ref\n getButtonRef (key, selector) {\n return `${this.getButtonKey(key, selector)}-ref`;\n },\n\n /**\n * Determines if an element in the action bar button list is focusable with tab key\n * @param {string} refKey - unique identifier for the ref element in DOM\n */\n canFocus (refKey) {\n return refKey === this.orderedRefs[this.currentButtonRefIndex];\n },\n\n shiftActionBarFocusRight () {\n this.shiftButtonRefIndex(1);\n },\n\n shiftActionBarFocusLeft () {\n this.shiftButtonRefIndex(-1);\n },\n\n shiftButtonRefIndex (shiftAmount) {\n const previousActionBarBtn = this.actionBarBtn;\n const index = (this.currentButtonRefIndex + shiftAmount) % this.orderedRefs.length;\n this.currentButtonRefIndex = index >= 0 ? index : this.orderedRefs.length + index;\n const currentActionBarBtn = this.actionBarBtn;\n\n previousActionBarBtn.$el.blur();\n currentActionBarBtn.$el.focus();\n },\n\n onFontStyleSelect (fontFamily) {\n if (fontFamily) {\n this.$refs.richTextEditor?.editor?.chain().focus().setFontFamily(fontFamily).run();\n } else {\n this.$refs.richTextEditor?.editor?.chain().focus().unsetFontFamily().run();\n }\n this.$refs.richTextEditor?.editor?.commands.focus();\n },\n\n isCurrentFontFamily (fontFamily) {\n if (!fontFamily) {\n return !this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.fontFamily;\n }\n return this.$refs.richTextEditor?.editor?.isActive('textStyle', { fontFamily });\n },\n\n onFontSizeSelect (fontSize) {\n this.$refs.richTextEditor?.editor?.chain().focus().setFontSize(fontSize).run();\n this.$refs.richTextEditor?.editor?.commands.focus();\n },\n\n isCurrentFontSize (fontSize) {\n if (!fontSize) {\n return !this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.fontSize;\n }\n return this.$refs.richTextEditor?.editor?.isActive('textStyle', { fontSize });\n },\n\n getFilteredItemsForCategory(category) {\n const searchValue = this.variableSearchValue.toLowerCase();\n if (category.name.toLowerCase().includes(searchValue)) {\n return category.items;\n }\n return category.items.filter((item) =>\n item.name.toLowerCase().includes(searchValue),\n );\n },\n\n updateFontColorInput() {\n this.currentFontColor = this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.color || EDITOR_DEFAULT_FONT_COLOR;\n },\n\n onColorPickerButtonClick () {\n this.colorPickerInput?.click();\n },\n\n onColorPickerInput (fontColor) {\n this.$refs.richTextEditor?.editor?.chain().focus().setColor(fontColor).run();\n this.$refs.richTextEditor?.editor?.commands.focus();\n this.updateFontColorInput();\n },\n },\n};\n</script>\n\n<style>\n/* Image resizing classes - only active when allowImageResize is true */\n\n/* Image border */\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-wrapper] {\n outline: 1px solid var(--dt-color-chart-info-selected);\n line-height: 0 !important;\n}\n\n/* Corner handles */\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle] {\n position: absolute;\n background: var(--dt-color-chart-info-selected);\n z-index: 10;\n}\n\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-left'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-right'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-left'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-right'] {\n width: 8px;\n height: 8px;\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-left'] {\n cursor: nwse-resize;\n transform: translate(-50%, -50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-right'] {\n cursor: nesw-resize;\n transform: translate(50%, -50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-left'] {\n cursor: nesw-resize;\n transform: translate(-50%, 50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-right'] {\n cursor: nwse-resize;\n transform: translate(50%, 50%);\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -10,9 +10,8 @@ import l from "../popover/popover.js";
|
|
|
10
10
|
import u from "../dropdown/dropdown-separator.js";
|
|
11
11
|
import d from "../input/input.js";
|
|
12
12
|
import f from "../list-item-group/list-item-group.js";
|
|
13
|
-
import { t as p } from "../../rich_text_editor-
|
|
13
|
+
import { t as p } from "../../rich_text_editor-Ba67C4Uk.js";
|
|
14
14
|
import { RICH_TEXT_EDITOR_AUTOFOCUS_TYPES as m, RICH_TEXT_EDITOR_OUTPUT_FORMATS as h } from "../rich-text-editor/rich-text-editor-constants.js";
|
|
15
|
-
import "../../markdownRenderer-D14GhUiu.js";
|
|
16
15
|
import { EDITOR_DEFAULT_FONT_COLOR as g, EDITOR_DEFAULT_LINK_PREFIX as _, EDITOR_SUPPORTED_LINK_PROTOCOLS as v } from "./editor-constants.js";
|
|
17
16
|
import y from "./EditorToolbarButton.js";
|
|
18
17
|
import b from "./EditorToolbarDropdownButton.js";
|