@dialpad/dialtone 9.127.0 → 9.127.2
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/tokens/doc.json +18304 -18304
- package/dist/vue2/common/mixins/index.cjs +1 -1
- package/dist/vue2/common/mixins/index.js +2 -4
- package/dist/vue2/common/mixins/index.js.map +1 -1
- package/dist/vue2/component-documentation.json +1 -1
- package/dist/vue2/dialtone-vue.cjs +1 -1
- package/dist/vue2/dialtone-vue.js +345 -347
- package/dist/vue2/dialtone-vue.js.map +1 -1
- package/dist/vue2/lib/attachment-carousel/attachment-carousel.cjs +1 -1
- package/dist/vue2/lib/attachment-carousel/attachment-carousel.cjs.map +1 -1
- package/dist/vue2/lib/attachment-carousel/attachment-carousel.js +16 -12
- package/dist/vue2/lib/attachment-carousel/attachment-carousel.js.map +1 -1
- package/dist/vue2/lib/breadcrumbs/breadcrumbs.cjs +1 -1
- package/dist/vue2/lib/breadcrumbs/breadcrumbs.cjs.map +1 -1
- package/dist/vue2/lib/breadcrumbs/breadcrumbs.js +6 -6
- package/dist/vue2/lib/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/vue2/lib/button/button.cjs +1 -1
- package/dist/vue2/lib/button/button.cjs.map +1 -1
- package/dist/vue2/lib/button/button.js +6 -6
- package/dist/vue2/lib/button/button.js.map +1 -1
- package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.cjs +1 -1
- package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.cjs.map +1 -1
- package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js +13 -13
- package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js.map +1 -1
- package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.cjs +1 -1
- package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.cjs.map +1 -1
- package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.js +9 -9
- package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.js.map +1 -1
- package/dist/vue2/lib/chip/chip.cjs +1 -1
- package/dist/vue2/lib/chip/chip.cjs.map +1 -1
- package/dist/vue2/lib/chip/chip.js +7 -7
- package/dist/vue2/lib/chip/chip.js.map +1 -1
- package/dist/vue2/lib/contact-centers-row/contact-centers-row.cjs +1 -1
- package/dist/vue2/lib/contact-centers-row/contact-centers-row.cjs.map +1 -1
- package/dist/vue2/lib/contact-centers-row/contact-centers-row.js +13 -13
- package/dist/vue2/lib/contact-centers-row/contact-centers-row.js.map +1 -1
- package/dist/vue2/lib/datepicker/datepicker.cjs +1 -1
- package/dist/vue2/lib/datepicker/datepicker.cjs.map +1 -1
- package/dist/vue2/lib/datepicker/datepicker.js +19 -19
- package/dist/vue2/lib/datepicker/datepicker.js.map +1 -1
- package/dist/vue2/lib/datepicker/formatUtils.cjs +1 -1
- package/dist/vue2/lib/datepicker/formatUtils.cjs.map +1 -1
- package/dist/vue2/lib/datepicker/formatUtils.js +21 -20
- package/dist/vue2/lib/datepicker/formatUtils.js.map +1 -1
- package/dist/vue2/lib/editor/editor.cjs +1 -1
- package/dist/vue2/lib/editor/editor.cjs.map +1 -1
- package/dist/vue2/lib/editor/editor.js +17 -17
- package/dist/vue2/lib/editor/editor.js.map +1 -1
- package/dist/vue2/lib/emoji-picker/emoji-picker.cjs +1 -1
- package/dist/vue2/lib/emoji-picker/emoji-picker.cjs.map +1 -1
- package/dist/vue2/lib/emoji-picker/emoji-picker.js +6 -6
- package/dist/vue2/lib/emoji-picker/emoji-picker.js.map +1 -1
- package/dist/vue2/lib/emoji-row/emoji-row.cjs +1 -1
- package/dist/vue2/lib/emoji-row/emoji-row.cjs.map +1 -1
- package/dist/vue2/lib/emoji-row/emoji-row.js +24 -20
- package/dist/vue2/lib/emoji-row/emoji-row.js.map +1 -1
- package/dist/vue2/lib/feed-item-pill/feed-item-pill.cjs +1 -1
- package/dist/vue2/lib/feed-item-pill/feed-item-pill.cjs.map +1 -1
- package/dist/vue2/lib/feed-item-pill/feed-item-pill.js +8 -8
- package/dist/vue2/lib/feed-item-pill/feed-item-pill.js.map +1 -1
- package/dist/vue2/lib/general-row/general-row.cjs +1 -1
- package/dist/vue2/lib/general-row/general-row.cjs.map +1 -1
- package/dist/vue2/lib/general-row/general-row.js +17 -17
- package/dist/vue2/lib/general-row/general-row.js.map +1 -1
- package/dist/vue2/lib/group-row/group-row.cjs +1 -1
- package/dist/vue2/lib/group-row/group-row.cjs.map +1 -1
- package/dist/vue2/lib/group-row/group-row.js +11 -7
- package/dist/vue2/lib/group-row/group-row.js.map +1 -1
- package/dist/vue2/lib/icon/icon.cjs +1 -1
- package/dist/vue2/lib/icon/icon.cjs.map +1 -1
- package/dist/vue2/lib/icon/icon.js +10 -6
- package/dist/vue2/lib/icon/icon.js.map +1 -1
- package/dist/vue2/lib/image-viewer/image-viewer.cjs +1 -1
- package/dist/vue2/lib/image-viewer/image-viewer.cjs.map +1 -1
- package/dist/vue2/lib/image-viewer/image-viewer.js +8 -7
- package/dist/vue2/lib/image-viewer/image-viewer.js.map +1 -1
- package/dist/vue2/lib/ivr-node/ivr-node.cjs +1 -1
- package/dist/vue2/lib/ivr-node/ivr-node.cjs.map +1 -1
- package/dist/vue2/lib/ivr-node/ivr-node.js +17 -17
- package/dist/vue2/lib/ivr-node/ivr-node.js.map +1 -1
- package/dist/vue2/lib/loader/loader.cjs +1 -1
- package/dist/vue2/lib/loader/loader.cjs.map +1 -1
- package/dist/vue2/lib/loader/loader.js +12 -8
- package/dist/vue2/lib/loader/loader.js.map +1 -1
- package/dist/vue2/lib/message-input/message-input-link.cjs +1 -1
- package/dist/vue2/lib/message-input/message-input-link.cjs.map +1 -1
- package/dist/vue2/lib/message-input/message-input-link.js +15 -15
- package/dist/vue2/lib/message-input/message-input-link.js.map +1 -1
- package/dist/vue2/lib/message-input/message-input-topbar.cjs +1 -1
- package/dist/vue2/lib/message-input/message-input-topbar.cjs.map +1 -1
- package/dist/vue2/lib/message-input/message-input-topbar.js +14 -10
- package/dist/vue2/lib/message-input/message-input-topbar.js.map +1 -1
- package/dist/vue2/lib/message-input/message-input.cjs +1 -1
- package/dist/vue2/lib/message-input/message-input.cjs.map +1 -1
- package/dist/vue2/lib/message-input/message-input.js +14 -10
- package/dist/vue2/lib/message-input/message-input.js.map +1 -1
- package/dist/vue2/lib/modal/modal.cjs +1 -1
- package/dist/vue2/lib/modal/modal.cjs.map +1 -1
- package/dist/vue2/lib/modal/modal.js +12 -11
- package/dist/vue2/lib/modal/modal.js.map +1 -1
- package/dist/vue2/lib/notice/notice-action.cjs +1 -1
- package/dist/vue2/lib/notice/notice-action.cjs.map +1 -1
- package/dist/vue2/lib/notice/notice-action.js +10 -6
- package/dist/vue2/lib/notice/notice-action.js.map +1 -1
- package/dist/vue2/lib/pagination/pagination.cjs +1 -1
- package/dist/vue2/lib/pagination/pagination.cjs.map +1 -1
- package/dist/vue2/lib/pagination/pagination.js +7 -7
- package/dist/vue2/lib/pagination/pagination.js.map +1 -1
- package/dist/vue2/lib/popover/popover-header-footer.cjs +1 -1
- package/dist/vue2/lib/popover/popover-header-footer.cjs.map +1 -1
- package/dist/vue2/lib/popover/popover-header-footer.js +13 -9
- package/dist/vue2/lib/popover/popover-header-footer.js.map +1 -1
- package/dist/vue2/lib/rich-text-editor/rich-text-editor.cjs +1 -1
- package/dist/vue2/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
- package/dist/vue2/lib/rich-text-editor/rich-text-editor.js +35 -35
- package/dist/vue2/lib/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/vue2/lib/unread-pill/unread-pill.cjs +1 -1
- package/dist/vue2/lib/unread-pill/unread-pill.cjs.map +1 -1
- package/dist/vue2/lib/unread-pill/unread-pill.js +15 -11
- package/dist/vue2/lib/unread-pill/unread-pill.js.map +1 -1
- package/dist/vue2/localization/en-US.cjs +1 -1
- package/dist/vue2/localization/en-US.cjs.map +1 -1
- package/dist/vue2/localization/en-US.js +1 -1
- package/dist/vue2/localization/en-US.js.map +1 -1
- package/dist/vue2/localization/index.cjs +1 -1
- package/dist/vue2/localization/index.cjs.map +1 -1
- package/dist/vue2/localization/index.js +59 -53
- package/dist/vue2/localization/index.js.map +1 -1
- package/dist/vue2/shared/sr_only_close_button.cjs +1 -1
- package/dist/vue2/shared/sr_only_close_button.cjs.map +1 -1
- package/dist/vue2/shared/sr_only_close_button.js +14 -10
- package/dist/vue2/shared/sr_only_close_button.js.map +1 -1
- package/dist/vue2/types/common/mixins/index.d.ts +0 -1
- package/dist/vue2/types/common/sr_only_close_button.vue.d.ts +5 -8
- package/dist/vue2/types/common/sr_only_close_button.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/breadcrumbs/breadcrumbs.vue.d.ts +3 -5
- package/dist/vue2/types/components/breadcrumbs/breadcrumbs.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/button/button.vue.d.ts +4 -6
- package/dist/vue2/types/components/button/button.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/chip/chip.vue.d.ts +6 -8
- package/dist/vue2/types/components/chip/chip.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/datepicker/formatUtils.d.ts.map +1 -1
- package/dist/vue2/types/components/datepicker/modules/calendar.vue.d.ts +3 -5
- package/dist/vue2/types/components/datepicker/modules/calendar.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/datepicker/modules/month-year-picker.vue.d.ts +3 -5
- package/dist/vue2/types/components/datepicker/modules/month-year-picker.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/emoji_picker/emoji_picker.vue.d.ts +1 -5
- package/dist/vue2/types/components/image_viewer/image_viewer.vue.d.ts +2 -4
- package/dist/vue2/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/loader/loader.vue.d.ts +5 -6
- package/dist/vue2/types/components/loader/loader.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/modal/modal.vue.d.ts +2 -4
- package/dist/vue2/types/components/modal/modal.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/notice/notice_action.vue.d.ts +5 -6
- package/dist/vue2/types/components/notice/notice_action.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/pagination/pagination.vue.d.ts +4 -6
- package/dist/vue2/types/components/pagination/pagination.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/popover/popover_header_footer.vue.d.ts +5 -6
- package/dist/vue2/types/components/popover/popover_header_footer.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts +5 -7
- package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +4 -6
- package/dist/vue2/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +4 -6
- package/dist/vue2/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/cards/ivr_node/ivr_node.vue.d.ts +4 -6
- package/dist/vue2/types/recipes/cards/ivr_node/ivr_node.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts +3 -5
- package/dist/vue2/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts +5 -6
- package/dist/vue2/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts +14 -16
- package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +5 -6
- package/dist/vue2/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts +6 -8
- package/dist/vue2/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts +5 -6
- package/dist/vue2/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts +5 -7
- package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts +3 -5
- package/dist/vue2/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +5 -6
- package/dist/vue2/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +5 -7
- package/dist/vue2/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/leftbar/general_row/general_row.vue.d.ts +17 -19
- package/dist/vue2/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/leftbar/group_row/group_row.vue.d.ts +8 -9
- package/dist/vue2/types/recipes/leftbar/group_row/group_row.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts +5 -6
- package/dist/vue2/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts.map +1 -1
- package/dist/vue3/lib/icon/icon.cjs +1 -1
- package/dist/vue3/lib/icon/icon.cjs.map +1 -1
- package/dist/vue3/lib/icon/icon.js +4 -5
- package/dist/vue3/lib/icon/icon.js.map +1 -1
- package/dist/vue3/localization/en-US.cjs +1 -1
- package/dist/vue3/localization/en-US.cjs.map +1 -1
- package/dist/vue3/localization/en-US.js +1 -1
- package/dist/vue3/localization/en-US.js.map +1 -1
- package/dist/vue3/types/components/icon/icon.vue.d.ts +1 -3
- package/package.json +5 -6
- package/dist/css/fonts/SeasonMix-Bold.woff2 +0 -0
- package/dist/css/fonts/SeasonMix-Regular.woff2 +0 -0
- package/dist/css/fonts/SeasonMix-SemiBold.woff2 +0 -0
- package/dist/css/js/dialtone_health_check/deprecated_icons.cjs +0 -105
- package/dist/css/js/dialtone_health_check/index.cjs +0 -82
- package/dist/css/js/dialtone_health_check/non_dialtone_properties.cjs +0 -44
- package/dist/css/js/dialtone_migration_helper/configs/box-shadows.mjs +0 -19
- package/dist/css/js/dialtone_migration_helper/configs/colors.mjs +0 -69
- package/dist/css/js/dialtone_migration_helper/configs/fonts.mjs +0 -49
- package/dist/css/js/dialtone_migration_helper/configs/size-and-space.mjs +0 -124
- package/dist/css/js/dialtone_migration_helper/helpers.mjs +0 -212
- package/dist/css/js/dialtone_migration_helper/index.mjs +0 -135
- package/dist/css/svg/spot/blank-space.svg +0 -1
- package/dist/css/svg/spot/browser-list-callout.svg +0 -1
- package/dist/css/svg/spot/browser-table-graph.svg +0 -1
- package/dist/css/svg/spot/female-laptop-typing.svg +0 -1
- package/dist/css/svg/spot/file-upload.svg +0 -1
- package/dist/css/svg/spot/male-laptop-typing.svg +0 -1
- package/dist/css/svg/spot/mind.svg +0 -1
- package/dist/css/svg/spot/playlist.svg +0 -1
- package/dist/css/svg/spot/publish.svg +0 -1
- package/dist/css/svg/spot/vector-vortex.svg +0 -1
- package/dist/css/svg/spot/wireless-screenshare.svg +0 -1
- package/dist/css/tokens/tokens-base-dark.css +0 -1802
- package/dist/css/tokens/tokens-base-deca-dark.css +0 -1802
- package/dist/css/tokens/tokens-base-deca-light.css +0 -1562
- package/dist/css/tokens/tokens-base-light.css +0 -1562
- package/dist/css/tokens/tokens-debug-base.css +0 -1562
- package/dist/css/tokens/tokens-debug-dp.css +0 -2496
- package/dist/css/tokens/tokens-deca-dark.css +0 -2496
- package/dist/css/tokens/tokens-deca-light.css +0 -2496
- package/dist/css/tokens/tokens-dp-dark.css +0 -2496
- package/dist/css/tokens/tokens-dp-light.css +0 -2496
- package/dist/css/tokens/tokens-expressive-dark.css +0 -2457
- package/dist/css/tokens/tokens-expressive-light.css +0 -2457
- package/dist/css/tokens/tokens-expressive-sm-dark.css +0 -2457
- package/dist/css/tokens/tokens-expressive-sm-light.css +0 -2457
- package/dist/css/tokens/tokens-tmo-dark.css +0 -2496
- package/dist/css/tokens/tokens-tmo-light.css +0 -2496
- package/dist/tokens/less/tokens-base-dark.less +0 -604
- package/dist/tokens/less/tokens-base-deca-dark.less +0 -604
- package/dist/tokens/less/tokens-base-deca-light.less +0 -484
- package/dist/tokens/less/tokens-base-light.less +0 -484
- package/dist/tokens/less/tokens-deca-dark.less +0 -574
- package/dist/tokens/less/tokens-deca-light.less +0 -574
- package/dist/tokens/less/tokens-dp-dark.less +0 -574
- package/dist/tokens/less/tokens-dp-light.less +0 -574
- package/dist/tokens/less/tokens-expressive-dark.less +0 -540
- package/dist/tokens/less/tokens-expressive-light.less +0 -540
- package/dist/tokens/less/tokens-expressive-sm-dark.less +0 -540
- package/dist/tokens/less/tokens-expressive-sm-light.less +0 -540
- package/dist/tokens/less/tokens-tmo-dark.less +0 -574
- package/dist/tokens/less/tokens-tmo-light.less +0 -574
- package/dist/vue2/common/mixins/localization.cjs +0 -2
- package/dist/vue2/common/mixins/localization.cjs.map +0 -1
- package/dist/vue2/common/mixins/localization.js +0 -10
- package/dist/vue2/common/mixins/localization.js.map +0 -1
- package/dist/vue2/types/common/mixins/localization.d.ts +0 -8
- package/dist/vue2/types/common/mixins/localization.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sources":["../../../recipes/conversation_view/editor/editor.vue"],"sourcesContent":["<template>\n <div\n\n class=\"d-recipe-editor\"\n data-qa=\"dt-recipe-editor\"\n role=\"presentation\"\n @click=\"$refs.richTextEditor.focusEditor()\"\n >\n <!-- Section for the top UI -->\n <dt-stack\n class=\"d-recipe-editor__top-bar\"\n direction=\"row\"\n gap=\"450\"\n >\n <dt-stack\n v-for=\"buttonGroup in buttonGroups\"\n :key=\"buttonGroup.key\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-tooltip\n v-for=\"button in buttonGroup.buttonGroup\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :message=\"button.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :aria-label=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n @click=\"button.onClick()\"\n @keydown.right.stop=\"shiftActionBarFocusRight\"\n @keydown.left.stop=\"shiftActionBarFocusLeft\"\n >\n <template #icon>\n <component\n :is=\"button.icon\"\n size=\"200\"\n />\n </template>\n <span v-if=\"button.label\">{{ button.label }}</span>\n </dt-button>\n </template>\n </dt-tooltip>\n <div class=\"d-recipe-editor__button-group-divider\" />\n </dt-stack>\n <dt-stack\n v-if=\"linkButton.showBtn\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-popover\n :open.sync=\"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.native.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.native.stop=\"onInputFocus\"\n @keydown.enter=\"setLink\"\n />\n </div>\n </template>\n <template #footerContent>\n <dt-stack\n direction=\"row\"\n gap=\"300\"\n class=\"d-recipe-editor__popover-footer\"\n >\n <dt-button\n data-qa=\"dt-recipe-editor-remove-link-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n v-bind=\"removeLinkButtonLabels\"\n @click=\"removeLink\"\n >\n {{ removeLinkButtonLabels.title }}\n </dt-button>\n <dt-button\n data-qa=\"dt-recipe-editor-set-link-cancel-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n v-bind=\"cancelSetLinkButtonLabels\"\n @click=\"closeLinkInput\"\n >\n {{ cancelSetLinkButtonLabels.title }}\n </dt-button>\n <dt-button\n data-qa=\"dt-recipe-editor-set-link-confirm-btn\"\n size=\"sm\"\n v-bind=\"confirmSetLinkButtonLabels\"\n @click=\"setLink\"\n >\n {{ confirmSetLinkButtonLabels.title }}\n </dt-button>\n </dt-stack>\n </template>\n </dt-popover>\n </dt-stack>\n </dt-stack>\n\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n :style=\"{ 'max-height': maxHeight }\"\n class=\"d-recipe-editor__content\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :allow-font-color=\"true\"\n :allow-font-family=\"true\"\n :allow-inline-images=\"true\"\n :allow-line-breaks=\"true\"\n :hide-link-bubble-menu=\"true\"\n :auto-focus=\"autoFocus\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"`d-recipe-editor__content-input ${inputClass}`\"\n :link=\"true\"\n :output-format=\"htmlOutputFormat\"\n :placeholder=\"placeholder\"\n :use-div-tags=\"useDivTags\"\n data-qa=\"dt-rich-text-editor\"\n v-bind=\"$attrs\"\n @text-input=\"onTextInput\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @input=\"onInput($event)\"\n />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n} from './editor_constants.js';\nimport { DtButton } from '@/components/button';\nimport { DtPopover } from '@/components/popover';\nimport { DtStack } from '@/components/stack';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport {\n DtIconAlignCenter,\n DtIconAlignJustify,\n DtIconAlignLeft,\n DtIconAlignRight,\n DtIconBold,\n DtIconCodeBlock,\n DtIconImage,\n DtIconItalic,\n DtIconQuickReply,\n DtIconLink2,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconQuote,\n DtIconStrikethrough,\n DtIconUnderline,\n} from '@dialpad/dialtone-icons/vue2';\nimport { DtLocalizationMixin } from '@/common/mixins';\n\nexport default {\n name: 'DtRecipeEditor',\n\n components: {\n DtRichTextEditor,\n DtButton,\n DtPopover,\n DtStack,\n DtInput,\n DtTooltip,\n DtIconQuickReply,\n DtIconBold,\n DtIconItalic,\n DtIconUnderline,\n DtIconStrikethrough,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconAlignLeft,\n DtIconAlignCenter,\n DtIconAlignRight,\n DtIconAlignJustify,\n DtIconQuote,\n DtIconCodeBlock,\n DtIconLink2,\n DtIconImage,\n },\n\n mixins: [DtLocalizationMixin],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n value: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n /**\n * Placeholder text for the set link input field\n */\n setLinkPlaceholder: {\n type: String,\n default: '',\n },\n\n /**\n * Show button to render text as bold\n */\n showBoldButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render text in italics\n */\n showItalicsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to underline text\n */\n showUnderlineButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to strike text\n */\n showStrikeButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render list items\n */\n showListItemsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render ordered list items\n */\n showOrderedListButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the left\n */\n showAlignLeftButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the center\n */\n showAlignCenterButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the right\n */\n showAlignRightButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to justify text\n */\n showAlignJustifyButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add quote format to text\n */\n showQuoteButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add code block\n */\n showCodeBlockButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to handle quick replies\n */\n showQuickRepliesButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add an inline image\n */\n showInlineImageButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show add link default config.\n */\n showAddLink: {\n type: Object,\n default: () => ({\n showAddLinkButton: true,\n }),\n },\n\n /**\n * Use div tags instead of paragraph tags to show text\n */\n useDivTags: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n\n /**\n * Quick replies button\n * pressed event\n * @event quick-replies-click\n */\n 'quick-replies-click',\n\n /**\n * Emit when inline image button is clicked\n * @event inline-image-click\n */\n 'inline-image-click',\n\n /**\n * Emit when text content changes (not raw html)\n */\n 'text-input',\n ],\n\n data () {\n return {\n internalInputValue: this.value, // internal input content\n hasFocus: false,\n\n linkOptions: {\n class: 'd-recipe-editor__link',\n },\n\n showLinkInput: false,\n linkInput: '',\n currentButtonRefIndex: 0,\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n htmlOutputFormat () {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS[2];\n },\n\n showingTextFormatButtons () {\n return this.showBoldButton || this.showItalicsButton || this.showStrikeButton || this.showUnderlineButton;\n },\n\n showingAlignmentButtons () {\n return this.showAlignLeftButton || this.showAlignCenterButton ||\n this.showAlignRightButton || this.showAlignJustifyButton;\n },\n\n showingListButtons () {\n return this.showListItemsButton || this.showOrderedListButton;\n },\n\n orderedRefs () {\n const refs = this.buttonGroups.reduce(function (acc, buttonData) {\n buttonData.buttonGroup.forEach(button => {\n acc.push(this.getButtonRef(buttonData.key, button.selector));\n }, this);\n return acc;\n }.bind(this), []);\n refs.push(this.getButtonRef('custom', 'link'));\n return refs;\n },\n\n buttonGroups () {\n const individualButtonStacks = this.individualButtons.map(buttonData => ({\n key: buttonData.selector,\n buttonGroup: [buttonData],\n }));\n return [\n { key: 'new', buttonGroup: this.newButtons },\n { key: 'format', buttonGroup: this.textFormatButtons },\n { key: 'alignment', buttonGroup: this.alignmentButtons },\n { key: 'list', buttonGroup: this.listButtons },\n ...individualButtonStacks,\n ].filter(buttonGroupData => buttonGroupData.buttonGroup.length > 0);\n },\n\n newButtons () {\n return [\n {\n showBtn: this.showQuickRepliesButton,\n label: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n selector: 'quickReplies',\n icon: DtIconQuickReply,\n dataQA: 'dt-recipe-editor-quick-replies-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n onClick: this.onQuickRepliesClick,\n },\n ].filter(button => button.showBtn);\n },\n\n textFormatButtons () {\n return [\n {\n showBtn: this.showBoldButton,\n selector: 'bold',\n icon: DtIconBold,\n dataQA: 'dt-recipe-editor-bold-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BOLD_BUTTON_LABEL'),\n onClick: this.onBoldTextToggle,\n },\n {\n showBtn: this.showItalicsButton,\n selector: 'italic',\n icon: DtIconItalic,\n dataQA: 'dt-recipe-editor-italics-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ITALICS_BUTTON_LABEL'),\n onClick: this.onItalicTextToggle,\n },\n {\n showBtn: this.showUnderlineButton,\n selector: 'underline',\n icon: DtIconUnderline,\n dataQA: 'dt-recipe-editor-underline-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_UNDERLINE_BUTTON_LABEL'),\n onClick: this.onUnderlineTextToggle,\n },\n {\n showBtn: this.showStrikeButton,\n selector: 'strike',\n icon: DtIconStrikethrough,\n dataQA: 'dt-recipe-editor-strike-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_STRIKE_BUTTON_LABEL'),\n onClick: this.onStrikethroughTextToggle,\n },\n ].filter(button => button.showBtn);\n },\n\n alignmentButtons () {\n return [\n {\n showBtn: this.showAlignLeftButton,\n selector: { textAlign: 'left' },\n icon: DtIconAlignLeft,\n dataQA: 'dt-recipe-editor-align-left-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_LEFT_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('left'),\n },\n {\n showBtn: this.showAlignCenterButton,\n selector: { textAlign: 'center' },\n icon: DtIconAlignCenter,\n dataQA: 'dt-recipe-editor-align-center-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_CENTER_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('center'),\n },\n {\n showBtn: this.showAlignRightButton,\n selector: { textAlign: 'right' },\n icon: DtIconAlignRight,\n dataQA: 'dt-recipe-editor-align-right-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_RIGHT_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('right'),\n },\n {\n showBtn: this.showAlignJustifyButton,\n selector: { textAlign: 'justify' },\n icon: DtIconAlignJustify,\n dataQA: 'dt-recipe-editor-align-justify-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_JUSTIFY_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('justify'),\n },\n ].filter(button => button.showBtn);\n },\n\n listButtons () {\n return [\n {\n showBtn: this.showListItemsButton,\n selector: 'bulletList',\n icon: DtIconListBullet,\n dataQA: 'dt-recipe-editor-list-items-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BULLET_LIST_BUTTON_LABEL'),\n onClick: this.onBulletListToggle,\n },\n {\n showBtn: this.showOrderedListButton,\n selector: 'orderedList',\n icon: DtIconListOrdered,\n dataQA: 'dt-recipe-editor-ordered-list-items-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ORDERED_LIST_BUTTON_LABEL'),\n onClick: this.onOrderedListToggle,\n },\n ].filter(button => button.showBtn);\n },\n\n individualButtons () {\n return [\n {\n showBtn: this.showQuoteButton,\n selector: 'blockquote',\n icon: DtIconQuote,\n dataQA: 'dt-recipe-editor-blockquote-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUOTE_BUTTON_LABEL'),\n onClick: this.onBlockquoteToggle,\n },\n {\n showBtn: this.showCodeBlockButton,\n selector: 'codeBlock',\n icon: DtIconCodeBlock,\n dataQA: 'dt-recipe-editor-code-block-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_CODE_BUTTON_LABEL'),\n onClick: this.onCodeBlockToggle,\n },\n {\n showBtn: this.showInlineImageButton,\n selector: 'image',\n icon: DtIconImage,\n dataQA: 'dt-recipe-editor-inline-image-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_IMAGE_BUTTON_LABEL'),\n onClick: this.onInsertInlineImageClick,\n },\n ].filter(button => button.showBtn);\n },\n\n linkButton () {\n return {\n showBtn: this.showAddLink.showAddLinkButton,\n selector: 'link',\n icon: DtIconLink2,\n dataQA: 'dt-recipe-editor-add-link-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_LINK_BUTTON_LABEL'),\n onClick: this.openLinkInput,\n };\n },\n\n confirmSetLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_CONFIRM_SET_LINK_BUTTON');\n },\n\n cancelSetLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_CANCEL_SET_LINK_BUTTON');\n },\n\n removeLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_REMOVE_LINK_BUTTON');\n },\n\n showAddLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_ADD_LINK_BUTTON');\n },\n },\n\n watch: {\n value (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n onInputFocus (event) {\n event?.stopPropagation();\n },\n\n removeLink () {\n this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run();\n this.closeLinkInput();\n },\n\n setLink (event) {\n const editor = this.$refs.richTextEditor?.editor;\n event?.preventDefault();\n event?.stopPropagation();\n\n if (!this.linkInput) {\n // If link text is set to empty string,\n // remove any existing links.\n this.removeLink();\n return;\n }\n\n // Check if input matches any of the supported link formats\n const prefix = EDITOR_SUPPORTED_LINK_PROTOCOLS.find(prefixRegex => prefixRegex.test(this.linkInput));\n\n if (!prefix) {\n // If no matching pattern is found, prepend default prefix\n this.linkInput = `${EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`;\n }\n\n const selection = editor?.view?.state?.selection;\n\n if (selection.anchor === selection.head) {\n // If no text has been selected, manually insert the link text.\n // Do not rely on link options set through DtRichTextEditor\n // component, because they clash with these and cause issues.\n editor\n .chain()\n .focus()\n .insertContentAt(\n selection.anchor,\n `<a class=\"${this.linkOptions.class}\" href=${this.linkInput}>${this.linkInput}</a>`,\n )\n .run();\n } else {\n // Set or edit the link\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: this.linkInput, class: this.linkOptions.class })\n .run();\n }\n\n this.closeLinkInput();\n },\n\n openLinkInput () {\n this.showLinkInput = true;\n },\n\n updateInput (openedInput) {\n if (!openedInput) {\n return this.closeLinkInput();\n }\n this.linkInput = this.$refs.richTextEditor?.editor?.getAttributes('link')?.href;\n },\n\n closeLinkInput () {\n this.showLinkInput = false;\n this.linkInput = '';\n this.$refs.richTextEditor.editor?.chain().focus();\n },\n\n onBoldTextToggle () {\n this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run();\n },\n\n onItalicTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run();\n },\n\n onUnderlineTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run();\n },\n\n onStrikethroughTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run();\n },\n\n onTextAlign (alignment) {\n if (this.$refs.richTextEditor?.editor?.isActive({ textAlign: alignment })) {\n // If this alignment type is already set here, unset it\n return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();\n }\n this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(alignment).run();\n },\n\n onBulletListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run();\n },\n\n onOrderedListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run();\n },\n\n onCodeBlockToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run();\n },\n\n onQuickRepliesClick () {\n this.$emit('quick-replies-click');\n },\n\n onInsertInlineImageClick () {\n this.$emit('inline-image-click');\n },\n\n insertInlineImage (imageUrl) {\n this.$refs.richTextEditor?.editor.chain().focus().setImage({ src: imageUrl }).run();\n },\n\n onBlockquoteToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().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 onTextInput (event) {\n this.$emit('text-input', event);\n },\n\n onFocus (event) {\n this.hasFocus = true;\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n },\n\n getButtonKey (key, selector) {\n return `${key}-${JSON.stringify(selector)}`;\n },\n\n // Unique Button Ref Key to identify ref\n getButtonRef (key, selector) {\n return `${this.getButtonKey(key, selector)}-ref`;\n },\n\n /**\n * Determines if an element in the action bar button list is focusable with tab key\n * @param {string} refKey - unique identifier for the ref element in DOM\n */\n canFocus (refKey) {\n return refKey === this.orderedRefs[this.currentButtonRefIndex];\n },\n\n shiftActionBarFocusRight () {\n this.shiftButtonRefIndex(1);\n },\n\n shiftActionBarFocusLeft () {\n this.shiftButtonRefIndex(-1);\n },\n\n shiftButtonRefIndex (shiftAmount) {\n const previousRef = this.$refs[this.orderedRefs[this.currentButtonRefIndex]];\n const previousActionBarBtn = Array.isArray(previousRef) ? previousRef[0] : previousRef;\n const index = (this.currentButtonRefIndex + shiftAmount) % this.orderedRefs.length;\n this.currentButtonRefIndex = index >= 0 ? index : this.orderedRefs.length + index;\n const currentRef = this.$refs[this.orderedRefs[this.currentButtonRefIndex]];\n const currentActionBarBtn = Array.isArray(currentRef) ? currentRef[0] : currentRef;\n previousActionBarBtn.$el.blur();\n currentActionBarBtn.$el.focus();\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtRichTextEditor","DtButton","DtPopover","DtStack","DtInput","DtTooltip","DtIconQuickReply","DtIconBold","DtIconItalic","DtIconUnderline","DtIconStrikethrough","DtIconListBullet","DtIconListOrdered","DtIconAlignLeft","DtIconAlignCenter","DtIconAlignRight","DtIconAlignJustify","DtIconQuote","DtIconCodeBlock","DtIconLink2","DtIconImage","DtLocalizationMixin","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","RICH_TEXT_EDITOR_OUTPUT_FORMATS","refs","acc","buttonData","button","individualButtonStacks","buttonGroupData","newValue","event","_e","_d","_c","_b","_a","editor","EDITOR_SUPPORTED_LINK_PROTOCOLS","prefixRegex","EDITOR_DEFAULT_LINK_PREFIX","selection","openedInput","alignment","imageUrl","messageContent","position","key","selector","refKey","shiftAmount","previousRef","previousActionBarBtn","index","currentRef","currentActionBarBtn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"editor.js","sources":["../../../recipes/conversation_view/editor/editor.vue"],"sourcesContent":["<template>\n <div\n\n class=\"d-recipe-editor\"\n data-qa=\"dt-recipe-editor\"\n role=\"presentation\"\n @click=\"$refs.richTextEditor.focusEditor()\"\n >\n <!-- Section for the top UI -->\n <dt-stack\n class=\"d-recipe-editor__top-bar\"\n direction=\"row\"\n gap=\"450\"\n >\n <dt-stack\n v-for=\"buttonGroup in buttonGroups\"\n :key=\"buttonGroup.key\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-tooltip\n v-for=\"button in buttonGroup.buttonGroup\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :message=\"button.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :aria-label=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n @click=\"button.onClick()\"\n @keydown.right.stop=\"shiftActionBarFocusRight\"\n @keydown.left.stop=\"shiftActionBarFocusLeft\"\n >\n <template #icon>\n <component\n :is=\"button.icon\"\n size=\"200\"\n />\n </template>\n <span v-if=\"button.label\">{{ button.label }}</span>\n </dt-button>\n </template>\n </dt-tooltip>\n <div class=\"d-recipe-editor__button-group-divider\" />\n </dt-stack>\n <dt-stack\n v-if=\"linkButton.showBtn\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-popover\n :open.sync=\"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.native.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.native.stop=\"onInputFocus\"\n @keydown.enter=\"setLink\"\n />\n </div>\n </template>\n <template #footerContent>\n <dt-stack\n direction=\"row\"\n gap=\"300\"\n class=\"d-recipe-editor__popover-footer\"\n >\n <dt-button\n data-qa=\"dt-recipe-editor-remove-link-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n v-bind=\"removeLinkButtonLabels\"\n @click=\"removeLink\"\n >\n {{ removeLinkButtonLabels.title }}\n </dt-button>\n <dt-button\n data-qa=\"dt-recipe-editor-set-link-cancel-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n v-bind=\"cancelSetLinkButtonLabels\"\n @click=\"closeLinkInput\"\n >\n {{ cancelSetLinkButtonLabels.title }}\n </dt-button>\n <dt-button\n data-qa=\"dt-recipe-editor-set-link-confirm-btn\"\n size=\"sm\"\n v-bind=\"confirmSetLinkButtonLabels\"\n @click=\"setLink\"\n >\n {{ confirmSetLinkButtonLabels.title }}\n </dt-button>\n </dt-stack>\n </template>\n </dt-popover>\n </dt-stack>\n </dt-stack>\n\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n :style=\"{ 'max-height': maxHeight }\"\n class=\"d-recipe-editor__content\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :allow-font-color=\"true\"\n :allow-font-family=\"true\"\n :allow-inline-images=\"true\"\n :allow-line-breaks=\"true\"\n :hide-link-bubble-menu=\"true\"\n :auto-focus=\"autoFocus\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"`d-recipe-editor__content-input ${inputClass}`\"\n :link=\"true\"\n :output-format=\"htmlOutputFormat\"\n :placeholder=\"placeholder\"\n :use-div-tags=\"useDivTags\"\n data-qa=\"dt-rich-text-editor\"\n v-bind=\"$attrs\"\n @text-input=\"onTextInput\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @input=\"onInput($event)\"\n />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n} from './editor_constants.js';\nimport { DtButton } from '@/components/button';\nimport { DtPopover } from '@/components/popover';\nimport { DtStack } from '@/components/stack';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport {\n DtIconAlignCenter,\n DtIconAlignJustify,\n DtIconAlignLeft,\n DtIconAlignRight,\n DtIconBold,\n DtIconCodeBlock,\n DtIconImage,\n DtIconItalic,\n DtIconQuickReply,\n DtIconLink2,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconQuote,\n DtIconStrikethrough,\n DtIconUnderline,\n} from '@dialpad/dialtone-icons/vue2';\nimport { DialtoneLocalization } from '@/localization';\n\nexport default {\n name: 'DtRecipeEditor',\n\n components: {\n DtRichTextEditor,\n DtButton,\n DtPopover,\n DtStack,\n DtInput,\n DtTooltip,\n DtIconQuickReply,\n DtIconBold,\n DtIconItalic,\n DtIconUnderline,\n DtIconStrikethrough,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconAlignLeft,\n DtIconAlignCenter,\n DtIconAlignRight,\n DtIconAlignJustify,\n DtIconQuote,\n DtIconCodeBlock,\n DtIconLink2,\n DtIconImage,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n value: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n /**\n * Placeholder text for the set link input field\n */\n setLinkPlaceholder: {\n type: String,\n default: '',\n },\n\n /**\n * Show button to render text as bold\n */\n showBoldButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render text in italics\n */\n showItalicsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to underline text\n */\n showUnderlineButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to strike text\n */\n showStrikeButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render list items\n */\n showListItemsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render ordered list items\n */\n showOrderedListButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the left\n */\n showAlignLeftButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the center\n */\n showAlignCenterButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the right\n */\n showAlignRightButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to justify text\n */\n showAlignJustifyButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add quote format to text\n */\n showQuoteButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add code block\n */\n showCodeBlockButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to handle quick replies\n */\n showQuickRepliesButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add an inline image\n */\n showInlineImageButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show add link default config.\n */\n showAddLink: {\n type: Object,\n default: () => ({\n showAddLinkButton: true,\n }),\n },\n\n /**\n * Use div tags instead of paragraph tags to show text\n */\n useDivTags: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n\n /**\n * Quick replies button\n * pressed event\n * @event quick-replies-click\n */\n 'quick-replies-click',\n\n /**\n * Emit when inline image button is clicked\n * @event inline-image-click\n */\n 'inline-image-click',\n\n /**\n * Emit when text content changes (not raw html)\n */\n 'text-input',\n ],\n\n data () {\n return {\n internalInputValue: this.value, // internal input content\n hasFocus: false,\n\n linkOptions: {\n class: 'd-recipe-editor__link',\n },\n\n showLinkInput: false,\n linkInput: '',\n currentButtonRefIndex: 0,\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n htmlOutputFormat () {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS[2];\n },\n\n showingTextFormatButtons () {\n return this.showBoldButton || this.showItalicsButton || this.showStrikeButton || this.showUnderlineButton;\n },\n\n showingAlignmentButtons () {\n return this.showAlignLeftButton || this.showAlignCenterButton ||\n this.showAlignRightButton || this.showAlignJustifyButton;\n },\n\n showingListButtons () {\n return this.showListItemsButton || this.showOrderedListButton;\n },\n\n orderedRefs () {\n const refs = this.buttonGroups.reduce(function (acc, buttonData) {\n buttonData.buttonGroup.forEach(button => {\n acc.push(this.getButtonRef(buttonData.key, button.selector));\n }, this);\n return acc;\n }.bind(this), []);\n refs.push(this.getButtonRef('custom', 'link'));\n return refs;\n },\n\n buttonGroups () {\n const individualButtonStacks = this.individualButtons.map(buttonData => ({\n key: buttonData.selector,\n buttonGroup: [buttonData],\n }));\n return [\n { key: 'new', buttonGroup: this.newButtons },\n { key: 'format', buttonGroup: this.textFormatButtons },\n { key: 'alignment', buttonGroup: this.alignmentButtons },\n { key: 'list', buttonGroup: this.listButtons },\n ...individualButtonStacks,\n ].filter(buttonGroupData => buttonGroupData.buttonGroup.length > 0);\n },\n\n newButtons () {\n return [\n {\n showBtn: this.showQuickRepliesButton,\n label: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n selector: 'quickReplies',\n icon: DtIconQuickReply,\n dataQA: 'dt-recipe-editor-quick-replies-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n onClick: this.onQuickRepliesClick,\n },\n ].filter(button => button.showBtn);\n },\n\n textFormatButtons () {\n return [\n {\n showBtn: this.showBoldButton,\n selector: 'bold',\n icon: DtIconBold,\n dataQA: 'dt-recipe-editor-bold-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BOLD_BUTTON_LABEL'),\n onClick: this.onBoldTextToggle,\n },\n {\n showBtn: this.showItalicsButton,\n selector: 'italic',\n icon: DtIconItalic,\n dataQA: 'dt-recipe-editor-italics-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ITALICS_BUTTON_LABEL'),\n onClick: this.onItalicTextToggle,\n },\n {\n showBtn: this.showUnderlineButton,\n selector: 'underline',\n icon: DtIconUnderline,\n dataQA: 'dt-recipe-editor-underline-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_UNDERLINE_BUTTON_LABEL'),\n onClick: this.onUnderlineTextToggle,\n },\n {\n showBtn: this.showStrikeButton,\n selector: 'strike',\n icon: DtIconStrikethrough,\n dataQA: 'dt-recipe-editor-strike-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_STRIKE_BUTTON_LABEL'),\n onClick: this.onStrikethroughTextToggle,\n },\n ].filter(button => button.showBtn);\n },\n\n alignmentButtons () {\n return [\n {\n showBtn: this.showAlignLeftButton,\n selector: { textAlign: 'left' },\n icon: DtIconAlignLeft,\n dataQA: 'dt-recipe-editor-align-left-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_LEFT_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('left'),\n },\n {\n showBtn: this.showAlignCenterButton,\n selector: { textAlign: 'center' },\n icon: DtIconAlignCenter,\n dataQA: 'dt-recipe-editor-align-center-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_CENTER_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('center'),\n },\n {\n showBtn: this.showAlignRightButton,\n selector: { textAlign: 'right' },\n icon: DtIconAlignRight,\n dataQA: 'dt-recipe-editor-align-right-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_RIGHT_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('right'),\n },\n {\n showBtn: this.showAlignJustifyButton,\n selector: { textAlign: 'justify' },\n icon: DtIconAlignJustify,\n dataQA: 'dt-recipe-editor-align-justify-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_JUSTIFY_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('justify'),\n },\n ].filter(button => button.showBtn);\n },\n\n listButtons () {\n return [\n {\n showBtn: this.showListItemsButton,\n selector: 'bulletList',\n icon: DtIconListBullet,\n dataQA: 'dt-recipe-editor-list-items-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BULLET_LIST_BUTTON_LABEL'),\n onClick: this.onBulletListToggle,\n },\n {\n showBtn: this.showOrderedListButton,\n selector: 'orderedList',\n icon: DtIconListOrdered,\n dataQA: 'dt-recipe-editor-ordered-list-items-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ORDERED_LIST_BUTTON_LABEL'),\n onClick: this.onOrderedListToggle,\n },\n ].filter(button => button.showBtn);\n },\n\n individualButtons () {\n return [\n {\n showBtn: this.showQuoteButton,\n selector: 'blockquote',\n icon: DtIconQuote,\n dataQA: 'dt-recipe-editor-blockquote-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUOTE_BUTTON_LABEL'),\n onClick: this.onBlockquoteToggle,\n },\n {\n showBtn: this.showCodeBlockButton,\n selector: 'codeBlock',\n icon: DtIconCodeBlock,\n dataQA: 'dt-recipe-editor-code-block-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_CODE_BUTTON_LABEL'),\n onClick: this.onCodeBlockToggle,\n },\n {\n showBtn: this.showInlineImageButton,\n selector: 'image',\n icon: DtIconImage,\n dataQA: 'dt-recipe-editor-inline-image-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_IMAGE_BUTTON_LABEL'),\n onClick: this.onInsertInlineImageClick,\n },\n ].filter(button => button.showBtn);\n },\n\n linkButton () {\n return {\n showBtn: this.showAddLink.showAddLinkButton,\n selector: 'link',\n icon: DtIconLink2,\n dataQA: 'dt-recipe-editor-add-link-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_LINK_BUTTON_LABEL'),\n onClick: this.openLinkInput,\n };\n },\n\n confirmSetLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_CONFIRM_SET_LINK_BUTTON');\n },\n\n cancelSetLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_CANCEL_SET_LINK_BUTTON');\n },\n\n removeLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_REMOVE_LINK_BUTTON');\n },\n\n showAddLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_ADD_LINK_BUTTON');\n },\n },\n\n watch: {\n value (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n onInputFocus (event) {\n event?.stopPropagation();\n },\n\n removeLink () {\n this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run();\n this.closeLinkInput();\n },\n\n setLink (event) {\n const editor = this.$refs.richTextEditor?.editor;\n event?.preventDefault();\n event?.stopPropagation();\n\n if (!this.linkInput) {\n // If link text is set to empty string,\n // remove any existing links.\n this.removeLink();\n return;\n }\n\n // Check if input matches any of the supported link formats\n const prefix = EDITOR_SUPPORTED_LINK_PROTOCOLS.find(prefixRegex => prefixRegex.test(this.linkInput));\n\n if (!prefix) {\n // If no matching pattern is found, prepend default prefix\n this.linkInput = `${EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`;\n }\n\n const selection = editor?.view?.state?.selection;\n\n if (selection.anchor === selection.head) {\n // If no text has been selected, manually insert the link text.\n // Do not rely on link options set through DtRichTextEditor\n // component, because they clash with these and cause issues.\n editor\n .chain()\n .focus()\n .insertContentAt(\n selection.anchor,\n `<a class=\"${this.linkOptions.class}\" href=${this.linkInput}>${this.linkInput}</a>`,\n )\n .run();\n } else {\n // Set or edit the link\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: this.linkInput, class: this.linkOptions.class })\n .run();\n }\n\n this.closeLinkInput();\n },\n\n openLinkInput () {\n this.showLinkInput = true;\n },\n\n updateInput (openedInput) {\n if (!openedInput) {\n return this.closeLinkInput();\n }\n this.linkInput = this.$refs.richTextEditor?.editor?.getAttributes('link')?.href;\n },\n\n closeLinkInput () {\n this.showLinkInput = false;\n this.linkInput = '';\n this.$refs.richTextEditor.editor?.chain().focus();\n },\n\n onBoldTextToggle () {\n this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run();\n },\n\n onItalicTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run();\n },\n\n onUnderlineTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run();\n },\n\n onStrikethroughTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run();\n },\n\n onTextAlign (alignment) {\n if (this.$refs.richTextEditor?.editor?.isActive({ textAlign: alignment })) {\n // If this alignment type is already set here, unset it\n return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();\n }\n this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(alignment).run();\n },\n\n onBulletListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run();\n },\n\n onOrderedListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run();\n },\n\n onCodeBlockToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run();\n },\n\n onQuickRepliesClick () {\n this.$emit('quick-replies-click');\n },\n\n onInsertInlineImageClick () {\n this.$emit('inline-image-click');\n },\n\n insertInlineImage (imageUrl) {\n this.$refs.richTextEditor?.editor.chain().focus().setImage({ src: imageUrl }).run();\n },\n\n onBlockquoteToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().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 onTextInput (event) {\n this.$emit('text-input', event);\n },\n\n onFocus (event) {\n this.hasFocus = true;\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n },\n\n getButtonKey (key, selector) {\n return `${key}-${JSON.stringify(selector)}`;\n },\n\n // Unique Button Ref Key to identify ref\n getButtonRef (key, selector) {\n return `${this.getButtonKey(key, selector)}-ref`;\n },\n\n /**\n * Determines if an element in the action bar button list is focusable with tab key\n * @param {string} refKey - unique identifier for the ref element in DOM\n */\n canFocus (refKey) {\n return refKey === this.orderedRefs[this.currentButtonRefIndex];\n },\n\n shiftActionBarFocusRight () {\n this.shiftButtonRefIndex(1);\n },\n\n shiftActionBarFocusLeft () {\n this.shiftButtonRefIndex(-1);\n },\n\n shiftButtonRefIndex (shiftAmount) {\n const previousRef = this.$refs[this.orderedRefs[this.currentButtonRefIndex]];\n const previousActionBarBtn = Array.isArray(previousRef) ? previousRef[0] : previousRef;\n const index = (this.currentButtonRefIndex + shiftAmount) % this.orderedRefs.length;\n this.currentButtonRefIndex = index >= 0 ? index : this.orderedRefs.length + index;\n const currentRef = this.$refs[this.orderedRefs[this.currentButtonRefIndex]];\n const currentActionBarBtn = Array.isArray(currentRef) ? currentRef[0] : currentRef;\n previousActionBarBtn.$el.blur();\n currentActionBarBtn.$el.focus();\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtRichTextEditor","DtButton","DtPopover","DtStack","DtInput","DtTooltip","DtIconQuickReply","DtIconBold","DtIconItalic","DtIconUnderline","DtIconStrikethrough","DtIconListBullet","DtIconListOrdered","DtIconAlignLeft","DtIconAlignCenter","DtIconAlignRight","DtIconAlignJustify","DtIconQuote","DtIconCodeBlock","DtIconLink2","DtIconImage","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","DialtoneLocalization","RICH_TEXT_EDITOR_OUTPUT_FORMATS","refs","acc","buttonData","button","individualButtonStacks","buttonGroupData","newValue","event","_e","_d","_c","_b","_a","editor","EDITOR_SUPPORTED_LINK_PROTOCOLS","prefixRegex","EDITOR_DEFAULT_LINK_PREFIX","selection","openedInput","alignment","imageUrl","messageContent","position","key","selector","refKey","shiftAmount","previousRef","previousActionBarBtn","index","currentRef","currentActionBarBtn"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("@dialpad/dialtone-icons/vue2"),h=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),d=require("../tab/tab-group.cjs"),_=require("../tab/tab.cjs"),b=require("../input/input.cjs"),m=require("../button/button.cjs"),E=require("@dialpad/dialtone-emojis"),n=require("./emoji-picker-constants.cjs"),p=require("../tooltip/tooltip.cjs"),j=require("../../common/mixins/localization.cjs"),R={name:"EmojiTabset",components:{DtTabGroup:d.default,DtTab:_.default},props:{showRecentlyUsedTab:{type:Boolean,default:!1},showCustomEmojisTab:{type:Boolean,default:!1},scrollIntoTab:{type:Number,required:!0},emojiFilter:{type:String,default:""},tabSetLabels:{type:Array,required:!0}},data(){return{selectedTab:"1",tabsetRef:[],TABS_DATA:[{label:this.tabSetLabels[0],icon:c.DtIconClock},{label:this.tabSetLabels[1],icon:c.DtIconSatisfied},{label:this.tabSetLabels[2],icon:c.DtIconLivingThing},{label:this.tabSetLabels[3],icon:c.DtIconFood},{label:this.tabSetLabels[4],icon:c.DtIconObject},{label:this.tabSetLabels[5],icon:c.DtIconTransportation},{label:this.tabSetLabels[6],icon:c.DtIconLightbulb},{label:this.tabSetLabels[7],icon:c.DtIconHeart},{label:this.tabSetLabels[8],icon:c.DtIconFlag},{label:this.tabSetLabels[9],icon:c.DtIconTiktok}]}},computed:{tabs(){const t=this.showRecentlyUsedTab?this.TABS_DATA:this.TABS_DATA.slice(1);return this.showCustomEmojisTab||t.pop(),t.map((e,i)=>({...e,id:(i+1).toString(),panelId:(i+1).toString()}))},isSearching(){return this.emojiFilter.length>0}},watch:{scrollIntoTab:function(t){this.isSearching||(this.selectedTab=(t+1).toString())},isSearching:function(t){t&&(this.selectedTab=null)}},mounted(){this.$nextTick(()=>{this.setTabsetRef()})},methods:{selectTabset(t){const e=parseInt(t);this.selectedTab=t,this.$emit("selected-tabset",e)},setTabsetRef(){this.tabs.forEach((t,e)=>{const i=`tabsetRef-${e}`;this.$refs[i]&&this.$set(this.tabsetRef,e,this.$refs[i][0].$el)})},focusTabset(){this.tabsetRef[0]&&this.tabsetRef[0].focus()},handleKeyDown(t,e){t.key==="Enter"&&(this.selectTabset(e),this.tabsetRef[e-1]&&this.tabsetRef[e-1].blur()),t.key==="Tab"&&(t.preventDefault(),t.shiftKey?this.$emit("focus-skin-selector"):this.$emit("focus-search-input")),t.key==="ArrowDown"&&this.$emit("focus-search-input")}}};var k=function(){var e=this,i=e._self._c;return i("div",{staticClass:"d-emoji-picker__tabset"},[i("dt-tab-group",{attrs:{selected:e.selectedTab,size:"sm","tab-list-class":"d-emoji-picker__tabset-list"},scopedSlots:e._u([{key:"tabs",fn:function(){return e._l(e.tabs,function(s,o){return i("dt-tab",{key:s.id,ref:`tabsetRef-${o}`,refInFor:!0,attrs:{id:s.id,label:s.label,"panel-id":s.panelId,tabindex:o+1,"aria-controls":"d-emoji-picker-list"},on:{keydown:function(r){return e.handleKeyDown(r,s.id)},"!click":function(r){return r.stopPropagation(),e.selectTabset(s.id)}}},[i(s.icon,{tag:"component",attrs:{size:"400"}})],1)})},proxy:!0}])})],1)},S=[],g=h.n(R,k,S);const y=g.exports,L={name:"EmojiSearch",components:{DtInput:b.default,DtIconSearch:c.DtIconSearch,DtIconClose:c.DtIconClose,DtButton:m.default},props:{searchPlaceholderLabel:{type:String,required:!0},modelValue:{type:String,default:""}},mounted(){this.focusSearchInput()},methods:{updateModelValue(t){this.$emit("update:model-value",t)},focusEmojiSelector(){this.$emit("focus-emoji-selector")},focusTabset(){this.$emit("focus-tabset")},selectFirstEmoji(){this.$emit("select-first-emoji")},clearSearch(){this.$emit("update:model-value",""),this.focusSearchInput()},focusSearchInput(){this.$refs.searchInputRef.focus()}}};var T=function(){var e=this,i=e._self._c;return i("div",{staticClass:"d-emoji-picker__search d-emoji-picker__alignment"},[i("dt-input",{ref:"searchInputRef",attrs:{id:"searchInput",placeholder:e.searchPlaceholderLabel,value:e.modelValue},on:{input:e.updateModelValue,keydown:[function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"up",38,s.key,["Up","ArrowUp"])?null:e.focusTabset.apply(null,arguments)},function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"down",40,s.key,["Down","ArrowDown"])?null:(s.preventDefault(),e.focusEmojiSelector.apply(null,arguments))},function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"enter",13,s.key,"Enter")?null:e.selectFirstEmoji.apply(null,arguments)}]},scopedSlots:e._u([{key:"leftIcon",fn:function(){return[i("dt-icon-search",{attrs:{size:"200"}})]},proxy:!0},e.modelValue.length>0?{key:"rightIcon",fn:function(){return[i("dt-button",{staticClass:"d-emoji-picker__search-x-button",attrs:{importance:"clear",size:"xs",circle:"",kind:"muted"},on:{click:e.clearSearch},scopedSlots:e._u([{key:"icon",fn:function(){return[i("dt-icon-close",{attrs:{size:"200"}})]},proxy:!0}],null,!1,4156074325)})]},proxy:!0}:null],null,!0)})],1)},I=[],$=h.n(L,T,I);const O=$.exports,v={name:"EmojiSelector",props:{emojiFilter:{type:String,default:""},skinTone:{type:String,required:!0},tabSetLabels:{type:Array,required:!0},selectedTabset:{type:Object,required:!0},searchResultsLabel:{type:String,required:!0},searchNoResultsLabel:{type:String,required:!0},recentlyUsedEmojis:{type:Array,default:()=>[]},customEmojis:{type:Array,default:()=>[]}},data(){return{tabLabelsRefs:[],emojiRefs:[],emojiFilteredRefs:[],isFiltering:!1,hoverFirstEmoji:!0,fixedLabel:"",filteredEmojis:[],TABS_DATA:["Recently used","People","Nature","Food","Activity","Travel","Objects","Symbols","Flags","Custom"],tabLabelObserver:null}},computed:{currentEmojis(){return[...this.emojis[`People${this.skinTone}`]||[],...this.emojis.Nature||[],...this.emojis.Food||[],...this.emojis[`Activity${this.skinTone}`]||[],...this.emojis.Travel||[],...this.emojis[`Objects${this.skinTone}`]||[],...this.emojis.Symbols||[],...this.emojis.Flags||[]]},emojis(){return E.emojisGrouped},CDN_URL(){return n.CDN_URL},tabLabels(){let t=this.tabSetLabels.map(e=>({label:e}));return this.recentlyUsedEmojis.length||(t=this.tabSetLabels.slice(1).map(e=>({label:e}))),this.customEmojis.length||t.pop(),t},tabs(){const t=this.recentlyUsedEmojis.length?this.TABS_DATA.slice():this.TABS_DATA.slice(1);return this.customEmojis.length||t.pop(),t}},watch:{currentEmojis:{handler(){this.searchByNameAndKeywords()},immediate:!0},recentlyUsedEmojis:{handler(t){this.emojis["Recently used"]=t},immediate:!0},customEmojis:{handler(t){this.emojis.Custom=t},immediate:!0},emojiFilter:{handler(t){this.resetScroll(),t?this.isFiltering=!0:(this.isFiltering=!1,this.$emit("highlighted-emoji",null)),this.debouncedSearch()}},selectedTabset:{handler(t){this.scrollToTab(t.tabId)},deep:!0}},created(){this.debouncedSearch=this.debounce(this.searchByNameAndKeywords,300)},mounted(){this.$nextTick(()=>{this.setupEmojiRefs(),this.setupFilteredRefs(),this.setupTabLabelRefs(),this.setTabLabelObserver(),this.setBottomScrollListener()})},beforeDestroy(){this.tabLabelObserver&&this.tabLabelObserver.disconnect(),this.$refs.listRef&&this.handleScroll&&this.$refs.listRef.removeEventListener("scroll",this.handleScroll)},methods:{setupTabLabelRefs(){var t;(t=this.tabSetLabels)==null||t.forEach((e,i)=>{const s=`tabLabelRef-${i}`;this.$refs[s]&&this.$set(this.tabLabelsRefs,i,{ref:this.$refs[s]})})},setupFilteredRefs(){this.emojiFilteredRefs=[],this.filteredEmojis.forEach((t,e)=>{const i=`filteredEmoji-${e}`;this.$refs[i]&&this.setFilteredRef(this.$refs[i],e)})},setupEmojiRefs(){for(let t=0;t<this.tabs.length;t++){const e=`emojiRef-${t}`;this.$refs[e]&&this.$refs[e].forEach((i,s)=>{i&&this.setEmojiRef(i,t,s)})}},searchByNameAndKeywords(){const t=this.emojiFilter.toLowerCase();this.filteredEmojis=this.currentEmojis.filter(function(e){const i=e.name.toLowerCase().includes(t),s=e.keywords.some(function(o){return o.toLowerCase().includes(t)});return i||s}),this.$nextTick(function(){t&&(this.hoverEmoji(this.filteredEmojis[0],!0),this.setupFilteredRefs())})},debounce:function(t,e){e===void 0&&(e=300);let i;return function(){const s=[];let o=arguments.length;for(;o--;)s[o]=arguments[o];clearTimeout(i),i=setTimeout(function(){t.apply(void 0,s)},e)}},getImgSrc:function(t){return t.date_added?t.image:this.CDN_URL+t.unicode_character+".png"},handleImageError:function(t){t.target.parentNode.style.display="none"},scrollToTab:function(t,e){const i=this;e===void 0&&(e=!0);const s=i.tabLabelsRefs[t-1].ref[0];i.$nextTick(function(){const o=i.$refs.listRef,r=t===1?0:s.offsetTop-15;o.scrollTop=r,e&&i.focusEmoji(t-1,0)})},resetScroll:function(){const t=this.$refs.listRef;t.scrollTop=0},focusEmojiSelector:function(){this.focusEmoji(0,0)},hoverEmoji(t,e){e===void 0&&(e=!1),this.hoverFirstEmoji=e,this.$emit("highlighted-emoji",t)},setEmojiRef:function(t,e,i){this.emojiRefs[e]||this.$set(this.emojiRefs,e,[]),this.$set(this.emojiRefs[e],i,t)},setFilteredRef:function(t,e){this.$set(this.emojiFilteredRefs,e,t)},focusEmoji:function(t,e){var s;const i=this.isFiltering?(s=this.emojiFilteredRefs[e])==null?void 0:s[0]:this.emojiRefs[t]&&this.emojiRefs[t][e];return i?(i.focus(),!0):!1},handleKeyDown:function(t,e,i,s){var o,r;if(t.preventDefault(),t.key==="ArrowUp"){const l=i%n.EMOJIS_PER_ROW;if(e===0){const a=n.EMOJIS_PER_ROW-this.emojiRefs[this.emojiRefs.length-1].length%n.EMOJIS_PER_ROW,f=this.emojiRefs[this.emojiRefs.length-1].length+a-(n.EMOJIS_PER_ROW-l);this.focusEmoji(this.emojiRefs.length-1,f)||this.focusEmoji(this.emojiRefs.length-1,this.emojiRefs[this.emojiRefs.length-1].length-1);return}if(!this.focusEmoji(e,i-n.EMOJIS_PER_ROW)){const a=e-1<0?0:e-1,f=this.emojiRefs[a].length,u=f-f%n.EMOJIS_PER_ROW+l;this.focusEmoji(a,u)||this.focusEmoji(e-1,this.emojiRefs[e-1].length-1)}}if(t.key==="ArrowDown"&&!this.focusEmoji(e,i+n.EMOJIS_PER_ROW)){const l=i%n.EMOJIS_PER_ROW;(r=(o=this.emojiRefs)==null?void 0:o[e])!=null&&r[i+(n.EMOJIS_PER_ROW-l)]?this.focusEmoji(e,this.emojiRefs[e].length-1):this.focusEmoji(e+1,l)||this.focusEmoji(0,l)||this.focusEmoji(0,this.emojiRefs[0].length-1)}t.key==="ArrowLeft"&&this.handleHorizontalNavigation("left",e,i),t.key==="ArrowRight"&&this.handleHorizontalNavigation("right",e,i),t.key==="Tab"&&!t.shiftKey&&(this.focusEmoji(e+1,0)?this.scrollToTab(e+1+1,!1):this.$emit("focus-skin-selector")),t.key==="Tab"&&t.shiftKey&&(this.focusEmoji(e,0)&&e>0?this.scrollToTab(e,!0):(this.scrollToTab(1,!1),this.$emit("focus-search-input"))),t.key==="Enter"&&this.handleEmojiSelection(s,t)},handleHorizontalNavigation:function(t,e,i){this.isFiltering?t==="left"?this.handleArrowLeftFiltered(e,i):t==="right"&&this.handleArrowRightFiltered(e,i):t==="left"?this.handleArrowLeft(e,i):t==="right"&&this.handleArrowRight(e,i)},handleArrowLeftFiltered:function(t,e){this.focusEmoji(0,e-1)||this.focusEmoji(0,this.emojiFilteredRefs.length-1)},handleArrowRightFiltered:function(t,e){this.focusEmoji(0,e+1)||this.focusEmoji(0,0)},handleArrowLeft:function(t,e){this.focusEmoji(t,e-1)||(this.emojiRefs[t-1]?this.focusEmoji(t-1,this.emojiRefs[t-1].length-1):this.focusEmoji(this.emojiRefs.length-1,this.emojiRefs[this.emojiRefs.length-1].length-1))},handleArrowRight:function(t,e){this.focusEmoji(t,e+1)||this.focusEmoji(t+1,0)||this.focusEmoji(0,0)},handleEmojiSelection(t,e){this.$emit("selected-emoji",{...t,shift_key:e.shiftKey})},handleKeyDownFilteredEmojis(t,e,i){var s;if(t.preventDefault(),this.hoverFirstEmoji=!1,t.key==="ArrowUp"){const o=e%n.EMOJIS_PER_ROW;if(!this.focusEmoji(0,e-n.EMOJIS_PER_ROW)){const r=this.emojiFilteredRefs.length-this.emojiFilteredRefs.length%n.EMOJIS_PER_ROW+o;this.focusEmoji(0,r),this.focusEmoji(0,r)||this.focusEmoji(0,this.emojiFilteredRefs.length-1)}}if(t.key==="ArrowDown"&&!this.focusEmoji(0,e+n.EMOJIS_PER_ROW)){const o=e%n.EMOJIS_PER_ROW;(s=this.emojiFilteredRefs)!=null&&s[e+(n.EMOJIS_PER_ROW-o)]?this.focusEmoji(0,this.emojiFilteredRefs.length-1):this.focusEmoji(0,o)}t.key==="ArrowLeft"&&this.handleHorizontalNavigation("left",0,e),t.key==="ArrowRight"&&this.handleHorizontalNavigation("right",0,e),t.key==="Tab"&&this.$emit("focus-skin-selector"),t.key==="Enter"&&this.handleEmojiSelection(i,t)},setBottomScrollListener(){this.handleScroll=()=>{const t=this.$refs.listRef;t.scrollTop+t.clientHeight>=t.scrollHeight&&this.$emit("scroll-bottom-reached")},this.$refs.listRef.addEventListener("scroll",this.handleScroll)},setTabLabelObserver(){this.tabLabelObserver=new IntersectionObserver(t=>{t.forEach(e=>{var o,r,l,a,f,u;const{target:i}=e,s=parseInt(i.dataset.index);e.isIntersecting&&i.offsetTop<=((o=this.$refs.tabCategoryRef)==null?void 0:o.offsetTop)+50?(this.fixedLabel=((r=this.tabLabels[s-1])==null?void 0:r.label)??((l=this.tabLabels[0])==null?void 0:l.label),this.$emit("scroll-into-tab",s-1)):e.boundingClientRect.bottom<=((a=this.$refs.tabCategoryRef)==null?void 0:a.getBoundingClientRect().bottom)?(this.$emit("scroll-into-tab",s),this.fixedLabel=(f=this.tabLabels[s])==null?void 0:f.label):s===1&&(this.$emit("scroll-into-tab",s),this.fixedLabel=(u=this.tabLabels[0])==null?void 0:u.label)})}),this.tabLabelObserver.observe(this.$refs.tabCategoryRef),Array.from(this.$refs.listRef.children).forEach((t,e)=>{this.tabLabelObserver.observe(t),t.dataset.index=e})},focusLastEmoji(){this.scrollToTab(this.tabs.length,!0)}}};var A=function(){var e=this,i=e._self._c;return i("div",{staticClass:"d-emoji-picker__selector"},[i("div",{ref:"listRef",staticClass:"d-emoji-picker__list",attrs:{id:"d-emoji-picker-list"}},[e.emojiFilter?i("p",{staticClass:"d-emoji-picker__search-label d-emoji-picker__alignment"},[e._v(" "+e._s(e.filteredEmojis.length>0?e.searchResultsLabel:e.searchNoResultsLabel)+" ")]):i("div",{ref:"tabCategoryRef",staticClass:"d-emoji-picker__category d-emoji-picker__alignment"},[i("p",[e._v(" "+e._s(e.fixedLabel)+" ")])]),e._l(e.tabLabels,function(s,o){return i("div",{directives:[{name:"show",rawName:"v-show",value:!e.emojiFilter,expression:"!emojiFilter"}],key:o,ref:`tabLabelRef-${o}`,refInFor:!0,staticClass:"d-emoji-picker__alignment"},[o?i("p",[e._v(" "+e._s(s.label)+" ")]):e._e(),i("div",{staticClass:"d-emoji-picker__tab"},e._l(e.emojis[e.tabs[o]+e.skinTone]?e.emojis[e.tabs[o]+e.skinTone]:e.emojis[e.tabs[o]],function(r,l){return i("button",{key:r.shortname,ref:`emojiRef-${o}`,refInFor:!0,attrs:{type:"button","aria-label":r.name},on:{click:a=>e.handleEmojiSelection(r,a),focusin:function(a){return e.$emit("highlighted-emoji",r)},focusout:function(a){return e.$emit("highlighted-emoji",null)},mouseover:function(a){return e.$emit("highlighted-emoji",r)},mouseleave:function(a){return e.$emit("highlighted-emoji",null)},keydown:a=>e.handleKeyDown(a,o,l,r)}},[i("img",{staticClass:"d-icon d-icon--size-500",attrs:{alt:r.name,"aria-label":r.name,title:r.name,src:e.getImgSrc(r)},on:{error:e.handleImageError}})])}),0)])}),e.emojiFilter?i("div",{staticClass:"d-emoji-picker__alignment"},[i("div",{staticClass:"d-emoji-picker__tab",attrs:{"data-qa":"filtered-emojis"}},e._l(e.filteredEmojis,function(s,o){return i("button",{key:s.shortname,ref:`filteredEmoji-${o}`,refInFor:!0,class:{"hover-emoji":o===0&&e.hoverFirstEmoji},attrs:{type:"button","aria-label":s.name},on:{click:r=>e.handleEmojiSelection(s,r),focusin:function(r){return e.$emit("highlighted-emoji",s)},focusout:function(r){return e.$emit("highlighted-emoji",null)},mouseover:function(r){return e.hoverEmoji(s)},mouseleave:function(r){return e.hoverEmoji(null)},keydown:r=>e.handleKeyDownFilteredEmojis(r,o,s)}},[i("img",{staticClass:"d-icon d-icon--size-500",attrs:{alt:s.name,"aria-label":s.name,title:s.name,src:`${e.CDN_URL+s.unicode_character}.png`}})])}),0)]):e._e()],2)])},C=[],D=h.n(v,A,C);const w=D.exports,F={name:"EmojiDescription",props:{emoji:{type:Object,default:()=>null}},data(){return{CDN_URL:n.CDN_URL}},methods:{getImgSrc(t){return t.date_added?t.image:`${n.CDN_URL+t.unicode_character}.png`}}};var N=function(){var s;var e=this,i=e._self._c;return i("div",{staticClass:"d-emoji-picker__data"},[e.emoji?i("img",{staticClass:"d-icon d-icon--size-500",attrs:{alt:e.emoji.name,"aria-label":e.emoji.name,title:e.emoji.name,src:e.getImgSrc(e.emoji)}}):e._e(),i("div",[e._v(e._s((s=e.emoji)==null?void 0:s.name))])])},P=[],M=h.n(F,N,P);const K=M.exports,B={name:"EmojiSkinSelector",components:{DtTooltip:p.default},props:{skinTone:{type:String,required:!0},isHovering:{type:Boolean,default:!1},skinSelectorButtonTooltipLabel:{type:String,required:!0}},data(){return{isOpen:!1,skinSelected:null,skinsRef:[],cdnUrl:n.CDN_URL}},computed:{skinPassedIn(){return this.skinList.find(t=>t.skinTone===this.skinTone)},skinList(){return[{name:":wave_tone1:",unicode_output:"1f44b-1f3fb",skinTone:n.EMOJI_PICKER_SKIN_TONE_MODIFIERS.LIGHT,skinCode:"_tone1"},{name:":wave_tone2:",unicode_output:"1f44b-1f3fc",skinTone:n.EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM_LIGHT,skinCode:"_tone2"},{name:":wave_tone3:",unicode_output:"1f44b-1f3fd",skinTone:n.EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM,skinCode:"_tone3"},{name:":wave_tone4:",unicode_output:"1f44b-1f3fe",skinTone:n.EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM_DARK,skinCode:"_tone4"},{name:":wave_tone5:",unicode_output:"1f44b-1f3ff",skinTone:n.EMOJI_PICKER_SKIN_TONE_MODIFIERS.DARK,skinCode:"_tone5"},{name:":wave:",unicode_output:"1f44b",skinTone:n.EMOJI_PICKER_SKIN_TONE_MODIFIERS.DEFAULT,skinCode:""}]}},watch:{isHovering(t){t&&(this.isOpen=!1)},skinTone(t,e){t!==e&&(this.skinSelected=this.skinPassedIn)}},mounted(){this.skinSelected=this.skinPassedIn,this.$nextTick(()=>{this.setupSkinRefs()})},methods:{setupSkinRefs(){this.skinList.forEach((t,e)=>{const i=`skinRef-${e}`;this.$refs[i]&&this.$set(this.skinsRef,e,this.$refs[i][0])})},focusSkinSelector(){this.$refs.skinSelectorRef&&this.$refs.skinSelectorRef.focus()},selectSkin(t){this.skinSelected=t,this.isOpen=!1,this.$emit("skin-tone",t.skinTone),this.$nextTick(()=>{this.focusSkinSelector()})},handleKeyDown(t,e,i){var s,o,r,l;t.preventDefault(),t.key==="ArrowLeft"&&(i===0&&((s=this.skinsRef[this.skinsRef.length-1])==null||s.focus()),(o=this.skinsRef[i-1])==null||o.focus()),t.key==="ArrowRight"&&(this.skinsRef.length&&((r=this.skinsRef[0])==null||r.focus()),(l=this.skinsRef[i+1])==null||l.focus()),t.key==="Enter"&&(e?this.selectSkin(e):this.toggleSkinList()),t.key==="Tab"&&(t.shiftKey?this.$emit("focus-last-emoji"):this.$emit("focus-tabset"))},toggleSkinList(){this.isOpen=!this.isOpen,this.$nextTick(()=>{this.skinsRef[0]&&this.skinsRef[0].focus()})}}};var J=function(){var e=this,i=e._self._c;return i("div",{attrs:{"data-qa":"skin-selector"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.isOpen,expression:"isOpen"}],staticClass:"d-emoji-picker__skin-list"},e._l(e.skinList,function(s,o){var r;return i("button",{key:s.name,ref:`skinRef-${o}`,refInFor:!0,class:{selected:((r=e.skinSelected)==null?void 0:r.skinCode)===s.skinCode},on:{click:function(l){return e.selectSkin(s)},keydown:l=>e.handleKeyDown(l,s,o)}},[i("img",{staticClass:"d-icon d-icon--size-500",attrs:{alt:s.name,"aria-label":s.name,title:s.name,src:`${e.cdnUrl+s.unicode_output}.png`}})])}),0),i("div",{directives:[{name:"show",rawName:"v-show",value:!e.isOpen,expression:"!isOpen"}],staticClass:"d-emoji-picker__skin-selected"},[i("dt-tooltip",{attrs:{placement:"top-end"},scopedSlots:e._u([{key:"anchor",fn:function(){var s,o,r,l;return[i("button",{ref:"skinSelectorRef",attrs:{"aria-label":e.skinSelectorButtonTooltipLabel,tabindex:"-1"},on:{click:e.toggleSkinList,keydown:a=>e.handleKeyDown(a)}},[i("img",{staticClass:"d-icon d-icon--size-500",attrs:{alt:(s=e.skinSelected)==null?void 0:s.name,"aria-label":(o=e.skinSelected)==null?void 0:o.name,title:(r=e.skinSelected)==null?void 0:r.name,src:`${e.cdnUrl+((l=e.skinSelected)==null?void 0:l.unicode_output)}.png`}})])]},proxy:!0}])},[e._v(" "+e._s(e.skinSelectorButtonTooltipLabel)+" ")])],1)])},U=[],q=h.n(B,J,U);const H=q.exports,z={name:"DtEmojiPicker",components:{EmojiTabset:y,EmojiSearch:O,EmojiSelector:w,EmojiDescription:K,EmojiSkinSelector:H,DtButton:m.default},mixins:[j.default],props:{recentlyUsedEmojis:{type:Array,default:()=>[]},customEmojis:{type:Array},skinTone:{type:String,default:"Default"},searchQuery:{type:String,default:""},showSearch:{type:Boolean,default:!0}},data(){return{internalSearchQuery:this.searchQuery,highlightedEmoji:null,selectedTabset:{},scrollIntoTab:0}},computed:{showCustomEmojisTab(){var t;return((t=this.customEmojis)==null?void 0:t.length)>0},showRecentlyUsedTab(){var t;return((t=this.recentlyUsedEmojis)==null?void 0:t.length)>0},tabSetLabels(){return[this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_RECENTLY_USED_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_SMILEYS_AND_PEOPLE_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_NATURE_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_FOOD_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_ACTIVITY_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_TRAVEL_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_OBJECTS_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_SYMBOLS_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_FLAGS_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_CUSTOM_LABEL")]},searchPlaceholderLabel(){return this.i18n.$t("DIALTONE_EMOJI_PICKER_SEARCH_PLACEHOLDER_LABEL")},searchResultsLabel(){return this.i18n.$t("DIALTONE_EMOJI_PICKER_SEARCH_RESULTS_LABEL")},searchNoResultsLabel(){return this.i18n.$t("DIALTONE_EMOJI_PICKER_SEARCH_NO_RESULTS_LABEL")},skinSelectorButtonTooltipLabel(){return this.i18n.$t("DIALTONE_EMOJI_PICKER_SKIN_SELECTOR_BUTTON_TOOLTIP_LABEL")},addEmojiLabel(){return this.i18n.$t("DIALTONE_EMOJI_PICKER_ADD_EMOJI_LABEL")}},watch:{searchQuery(t){this.internalSearchQuery=t}},methods:{scrollToSelectedTabset(t){this.internalSearchQuery="",this.selectedTabset={...this.selectedTabset,tabId:t}},updateScrollIntoTab(t){this.scrollIntoTab=t},updateHighlightedEmoji(t){this.highlightedEmoji=t}}};var W=function(){var e=this,i=e._self._c;return i("div",{staticClass:"d-emoji-picker"},[i("div",{staticClass:"d-emoji-picker--header"},[i("emoji-tabset",{ref:"tabsetRef",attrs:{"emoji-filter":e.internalSearchQuery,"show-custom-emojis-tab":e.showCustomEmojisTab,"show-recently-used-tab":e.showRecentlyUsedTab,"scroll-into-tab":e.scrollIntoTab,"tab-set-labels":e.tabSetLabels},on:{"focus-skin-selector":function(s){return e.$refs.skinSelectorRef.focusSkinSelector()},"focus-search-input":function(s){e.showSearch?e.$refs.searchInputRef.focusSearchInput():e.$refs.emojiSelectorRef.focusEmojiSelector()},"selected-tabset":e.scrollToSelectedTabset},nativeOn:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:e.$emit("close")}}})],1),i("div",{staticClass:"d-emoji-picker--body"},[e.showSearch?i("emoji-search",{ref:"searchInputRef",attrs:{"model-value":e.internalSearchQuery,"search-placeholder-label":e.searchPlaceholderLabel},on:{"update:model-value":s=>e.internalSearchQuery=s,"select-first-emoji":function(s){return e.$emit("selected-emoji",e.highlightedEmoji)},"focus-tabset":function(s){return e.$refs.tabsetRef.focusTabset()},"focus-emoji-selector":function(s){return e.$refs.emojiSelectorRef.focusEmojiSelector()}},nativeOn:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:e.$emit("close")}}}):e._e(),i("emoji-selector",{ref:"emojiSelectorRef",attrs:{"emoji-filter":e.internalSearchQuery,"skin-tone":e.skinTone,"tab-set-labels":e.tabSetLabels,"search-results-label":e.searchResultsLabel,"search-no-results-label":e.searchNoResultsLabel,"recently-used-emojis":e.recentlyUsedEmojis,"custom-emojis":e.customEmojis,"selected-tabset":e.selectedTabset},on:{"scroll-into-tab":e.updateScrollIntoTab,"highlighted-emoji":e.updateHighlightedEmoji,"selected-emoji":function(s){return e.$emit("selected-emoji",s)},"focus-skin-selector":function(s){return e.$refs.skinSelectorRef.focusSkinSelector()},"focus-search-input":function(s){e.showSearch?e.$refs.searchInputRef.focusSearchInput():e.$refs.tabsetRef.focusTabset()},"scroll-bottom-reached":function(s){return e.$emit("scroll-bottom-reached")}},nativeOn:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:e.$emit("close")}}})],1),i("div",{staticClass:"d-emoji-picker--footer"},[e.showCustomEmojisTab&&!e.highlightedEmoji?i("dt-button",{staticClass:"d-emoji-picker__add-emoji",attrs:{importance:"outlined","aria-label":e.addEmojiLabel},on:{click:function(s){return e.$emit("add-emoji")}}},[e._v(" "+e._s(e.addEmojiLabel)+" ")]):e._e(),i("emoji-description",{attrs:{emoji:e.highlightedEmoji}}),i("emoji-skin-selector",{ref:"skinSelectorRef",attrs:{"is-hovering":!!e.highlightedEmoji,"skin-selector-button-tooltip-label":e.skinSelectorButtonTooltipLabel,"skin-tone":e.skinTone},on:{"skin-tone":function(s){return e.$emit("skin-tone",s)},"focus-tabset":function(s){return e.$refs.tabsetRef.focusTabset()},"focus-last-emoji":function(s){return e.$refs.emojiSelectorRef.focusLastEmoji()}},nativeOn:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:e.$emit("close")}}})],1)])},Q=[],V=h.n(z,W,Q);const G=V.exports;exports.default=G;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("@dialpad/dialtone-icons/vue2"),h=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),d=require("../tab/tab-group.cjs"),_=require("../tab/tab.cjs"),b=require("../input/input.cjs"),m=require("../button/button.cjs"),E=require("@dialpad/dialtone-emojis"),n=require("./emoji-picker-constants.cjs"),p=require("../tooltip/tooltip.cjs"),j=require("../../localization/index.cjs"),R={name:"EmojiTabset",components:{DtTabGroup:d.default,DtTab:_.default},props:{showRecentlyUsedTab:{type:Boolean,default:!1},showCustomEmojisTab:{type:Boolean,default:!1},scrollIntoTab:{type:Number,required:!0},emojiFilter:{type:String,default:""},tabSetLabels:{type:Array,required:!0}},data(){return{selectedTab:"1",tabsetRef:[],TABS_DATA:[{label:this.tabSetLabels[0],icon:c.DtIconClock},{label:this.tabSetLabels[1],icon:c.DtIconSatisfied},{label:this.tabSetLabels[2],icon:c.DtIconLivingThing},{label:this.tabSetLabels[3],icon:c.DtIconFood},{label:this.tabSetLabels[4],icon:c.DtIconObject},{label:this.tabSetLabels[5],icon:c.DtIconTransportation},{label:this.tabSetLabels[6],icon:c.DtIconLightbulb},{label:this.tabSetLabels[7],icon:c.DtIconHeart},{label:this.tabSetLabels[8],icon:c.DtIconFlag},{label:this.tabSetLabels[9],icon:c.DtIconTiktok}]}},computed:{tabs(){const t=this.showRecentlyUsedTab?this.TABS_DATA:this.TABS_DATA.slice(1);return this.showCustomEmojisTab||t.pop(),t.map((e,i)=>({...e,id:(i+1).toString(),panelId:(i+1).toString()}))},isSearching(){return this.emojiFilter.length>0}},watch:{scrollIntoTab:function(t){this.isSearching||(this.selectedTab=(t+1).toString())},isSearching:function(t){t&&(this.selectedTab=null)}},mounted(){this.$nextTick(()=>{this.setTabsetRef()})},methods:{selectTabset(t){const e=parseInt(t);this.selectedTab=t,this.$emit("selected-tabset",e)},setTabsetRef(){this.tabs.forEach((t,e)=>{const i=`tabsetRef-${e}`;this.$refs[i]&&this.$set(this.tabsetRef,e,this.$refs[i][0].$el)})},focusTabset(){this.tabsetRef[0]&&this.tabsetRef[0].focus()},handleKeyDown(t,e){t.key==="Enter"&&(this.selectTabset(e),this.tabsetRef[e-1]&&this.tabsetRef[e-1].blur()),t.key==="Tab"&&(t.preventDefault(),t.shiftKey?this.$emit("focus-skin-selector"):this.$emit("focus-search-input")),t.key==="ArrowDown"&&this.$emit("focus-search-input")}}};var k=function(){var e=this,i=e._self._c;return i("div",{staticClass:"d-emoji-picker__tabset"},[i("dt-tab-group",{attrs:{selected:e.selectedTab,size:"sm","tab-list-class":"d-emoji-picker__tabset-list"},scopedSlots:e._u([{key:"tabs",fn:function(){return e._l(e.tabs,function(s,o){return i("dt-tab",{key:s.id,ref:`tabsetRef-${o}`,refInFor:!0,attrs:{id:s.id,label:s.label,"panel-id":s.panelId,tabindex:o+1,"aria-controls":"d-emoji-picker-list"},on:{keydown:function(r){return e.handleKeyDown(r,s.id)},"!click":function(r){return r.stopPropagation(),e.selectTabset(s.id)}}},[i(s.icon,{tag:"component",attrs:{size:"400"}})],1)})},proxy:!0}])})],1)},S=[],g=h.n(R,k,S);const y=g.exports,L={name:"EmojiSearch",components:{DtInput:b.default,DtIconSearch:c.DtIconSearch,DtIconClose:c.DtIconClose,DtButton:m.default},props:{searchPlaceholderLabel:{type:String,required:!0},modelValue:{type:String,default:""}},mounted(){this.focusSearchInput()},methods:{updateModelValue(t){this.$emit("update:model-value",t)},focusEmojiSelector(){this.$emit("focus-emoji-selector")},focusTabset(){this.$emit("focus-tabset")},selectFirstEmoji(){this.$emit("select-first-emoji")},clearSearch(){this.$emit("update:model-value",""),this.focusSearchInput()},focusSearchInput(){this.$refs.searchInputRef.focus()}}};var T=function(){var e=this,i=e._self._c;return i("div",{staticClass:"d-emoji-picker__search d-emoji-picker__alignment"},[i("dt-input",{ref:"searchInputRef",attrs:{id:"searchInput",placeholder:e.searchPlaceholderLabel,value:e.modelValue},on:{input:e.updateModelValue,keydown:[function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"up",38,s.key,["Up","ArrowUp"])?null:e.focusTabset.apply(null,arguments)},function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"down",40,s.key,["Down","ArrowDown"])?null:(s.preventDefault(),e.focusEmojiSelector.apply(null,arguments))},function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"enter",13,s.key,"Enter")?null:e.selectFirstEmoji.apply(null,arguments)}]},scopedSlots:e._u([{key:"leftIcon",fn:function(){return[i("dt-icon-search",{attrs:{size:"200"}})]},proxy:!0},e.modelValue.length>0?{key:"rightIcon",fn:function(){return[i("dt-button",{staticClass:"d-emoji-picker__search-x-button",attrs:{importance:"clear",size:"xs",circle:"",kind:"muted"},on:{click:e.clearSearch},scopedSlots:e._u([{key:"icon",fn:function(){return[i("dt-icon-close",{attrs:{size:"200"}})]},proxy:!0}],null,!1,4156074325)})]},proxy:!0}:null],null,!0)})],1)},I=[],$=h.n(L,T,I);const O=$.exports,v={name:"EmojiSelector",props:{emojiFilter:{type:String,default:""},skinTone:{type:String,required:!0},tabSetLabels:{type:Array,required:!0},selectedTabset:{type:Object,required:!0},searchResultsLabel:{type:String,required:!0},searchNoResultsLabel:{type:String,required:!0},recentlyUsedEmojis:{type:Array,default:()=>[]},customEmojis:{type:Array,default:()=>[]}},data(){return{tabLabelsRefs:[],emojiRefs:[],emojiFilteredRefs:[],isFiltering:!1,hoverFirstEmoji:!0,fixedLabel:"",filteredEmojis:[],TABS_DATA:["Recently used","People","Nature","Food","Activity","Travel","Objects","Symbols","Flags","Custom"],tabLabelObserver:null}},computed:{currentEmojis(){return[...this.emojis[`People${this.skinTone}`]||[],...this.emojis.Nature||[],...this.emojis.Food||[],...this.emojis[`Activity${this.skinTone}`]||[],...this.emojis.Travel||[],...this.emojis[`Objects${this.skinTone}`]||[],...this.emojis.Symbols||[],...this.emojis.Flags||[]]},emojis(){return E.emojisGrouped},CDN_URL(){return n.CDN_URL},tabLabels(){let t=this.tabSetLabels.map(e=>({label:e}));return this.recentlyUsedEmojis.length||(t=this.tabSetLabels.slice(1).map(e=>({label:e}))),this.customEmojis.length||t.pop(),t},tabs(){const t=this.recentlyUsedEmojis.length?this.TABS_DATA.slice():this.TABS_DATA.slice(1);return this.customEmojis.length||t.pop(),t}},watch:{currentEmojis:{handler(){this.searchByNameAndKeywords()},immediate:!0},recentlyUsedEmojis:{handler(t){this.emojis["Recently used"]=t},immediate:!0},customEmojis:{handler(t){this.emojis.Custom=t},immediate:!0},emojiFilter:{handler(t){this.resetScroll(),t?this.isFiltering=!0:(this.isFiltering=!1,this.$emit("highlighted-emoji",null)),this.debouncedSearch()}},selectedTabset:{handler(t){this.scrollToTab(t.tabId)},deep:!0}},created(){this.debouncedSearch=this.debounce(this.searchByNameAndKeywords,300)},mounted(){this.$nextTick(()=>{this.setupEmojiRefs(),this.setupFilteredRefs(),this.setupTabLabelRefs(),this.setTabLabelObserver(),this.setBottomScrollListener()})},beforeDestroy(){this.tabLabelObserver&&this.tabLabelObserver.disconnect(),this.$refs.listRef&&this.handleScroll&&this.$refs.listRef.removeEventListener("scroll",this.handleScroll)},methods:{setupTabLabelRefs(){var t;(t=this.tabSetLabels)==null||t.forEach((e,i)=>{const s=`tabLabelRef-${i}`;this.$refs[s]&&this.$set(this.tabLabelsRefs,i,{ref:this.$refs[s]})})},setupFilteredRefs(){this.emojiFilteredRefs=[],this.filteredEmojis.forEach((t,e)=>{const i=`filteredEmoji-${e}`;this.$refs[i]&&this.setFilteredRef(this.$refs[i],e)})},setupEmojiRefs(){for(let t=0;t<this.tabs.length;t++){const e=`emojiRef-${t}`;this.$refs[e]&&this.$refs[e].forEach((i,s)=>{i&&this.setEmojiRef(i,t,s)})}},searchByNameAndKeywords(){const t=this.emojiFilter.toLowerCase();this.filteredEmojis=this.currentEmojis.filter(function(e){const i=e.name.toLowerCase().includes(t),s=e.keywords.some(function(o){return o.toLowerCase().includes(t)});return i||s}),this.$nextTick(function(){t&&(this.hoverEmoji(this.filteredEmojis[0],!0),this.setupFilteredRefs())})},debounce:function(t,e){e===void 0&&(e=300);let i;return function(){const s=[];let o=arguments.length;for(;o--;)s[o]=arguments[o];clearTimeout(i),i=setTimeout(function(){t.apply(void 0,s)},e)}},getImgSrc:function(t){return t.date_added?t.image:this.CDN_URL+t.unicode_character+".png"},handleImageError:function(t){t.target.parentNode.style.display="none"},scrollToTab:function(t,e){const i=this;e===void 0&&(e=!0);const s=i.tabLabelsRefs[t-1].ref[0];i.$nextTick(function(){const o=i.$refs.listRef,r=t===1?0:s.offsetTop-15;o.scrollTop=r,e&&i.focusEmoji(t-1,0)})},resetScroll:function(){const t=this.$refs.listRef;t.scrollTop=0},focusEmojiSelector:function(){this.focusEmoji(0,0)},hoverEmoji(t,e){e===void 0&&(e=!1),this.hoverFirstEmoji=e,this.$emit("highlighted-emoji",t)},setEmojiRef:function(t,e,i){this.emojiRefs[e]||this.$set(this.emojiRefs,e,[]),this.$set(this.emojiRefs[e],i,t)},setFilteredRef:function(t,e){this.$set(this.emojiFilteredRefs,e,t)},focusEmoji:function(t,e){var s;const i=this.isFiltering?(s=this.emojiFilteredRefs[e])==null?void 0:s[0]:this.emojiRefs[t]&&this.emojiRefs[t][e];return i?(i.focus(),!0):!1},handleKeyDown:function(t,e,i,s){var o,r;if(t.preventDefault(),t.key==="ArrowUp"){const l=i%n.EMOJIS_PER_ROW;if(e===0){const a=n.EMOJIS_PER_ROW-this.emojiRefs[this.emojiRefs.length-1].length%n.EMOJIS_PER_ROW,f=this.emojiRefs[this.emojiRefs.length-1].length+a-(n.EMOJIS_PER_ROW-l);this.focusEmoji(this.emojiRefs.length-1,f)||this.focusEmoji(this.emojiRefs.length-1,this.emojiRefs[this.emojiRefs.length-1].length-1);return}if(!this.focusEmoji(e,i-n.EMOJIS_PER_ROW)){const a=e-1<0?0:e-1,f=this.emojiRefs[a].length,u=f-f%n.EMOJIS_PER_ROW+l;this.focusEmoji(a,u)||this.focusEmoji(e-1,this.emojiRefs[e-1].length-1)}}if(t.key==="ArrowDown"&&!this.focusEmoji(e,i+n.EMOJIS_PER_ROW)){const l=i%n.EMOJIS_PER_ROW;(r=(o=this.emojiRefs)==null?void 0:o[e])!=null&&r[i+(n.EMOJIS_PER_ROW-l)]?this.focusEmoji(e,this.emojiRefs[e].length-1):this.focusEmoji(e+1,l)||this.focusEmoji(0,l)||this.focusEmoji(0,this.emojiRefs[0].length-1)}t.key==="ArrowLeft"&&this.handleHorizontalNavigation("left",e,i),t.key==="ArrowRight"&&this.handleHorizontalNavigation("right",e,i),t.key==="Tab"&&!t.shiftKey&&(this.focusEmoji(e+1,0)?this.scrollToTab(e+1+1,!1):this.$emit("focus-skin-selector")),t.key==="Tab"&&t.shiftKey&&(this.focusEmoji(e,0)&&e>0?this.scrollToTab(e,!0):(this.scrollToTab(1,!1),this.$emit("focus-search-input"))),t.key==="Enter"&&this.handleEmojiSelection(s,t)},handleHorizontalNavigation:function(t,e,i){this.isFiltering?t==="left"?this.handleArrowLeftFiltered(e,i):t==="right"&&this.handleArrowRightFiltered(e,i):t==="left"?this.handleArrowLeft(e,i):t==="right"&&this.handleArrowRight(e,i)},handleArrowLeftFiltered:function(t,e){this.focusEmoji(0,e-1)||this.focusEmoji(0,this.emojiFilteredRefs.length-1)},handleArrowRightFiltered:function(t,e){this.focusEmoji(0,e+1)||this.focusEmoji(0,0)},handleArrowLeft:function(t,e){this.focusEmoji(t,e-1)||(this.emojiRefs[t-1]?this.focusEmoji(t-1,this.emojiRefs[t-1].length-1):this.focusEmoji(this.emojiRefs.length-1,this.emojiRefs[this.emojiRefs.length-1].length-1))},handleArrowRight:function(t,e){this.focusEmoji(t,e+1)||this.focusEmoji(t+1,0)||this.focusEmoji(0,0)},handleEmojiSelection(t,e){this.$emit("selected-emoji",{...t,shift_key:e.shiftKey})},handleKeyDownFilteredEmojis(t,e,i){var s;if(t.preventDefault(),this.hoverFirstEmoji=!1,t.key==="ArrowUp"){const o=e%n.EMOJIS_PER_ROW;if(!this.focusEmoji(0,e-n.EMOJIS_PER_ROW)){const r=this.emojiFilteredRefs.length-this.emojiFilteredRefs.length%n.EMOJIS_PER_ROW+o;this.focusEmoji(0,r),this.focusEmoji(0,r)||this.focusEmoji(0,this.emojiFilteredRefs.length-1)}}if(t.key==="ArrowDown"&&!this.focusEmoji(0,e+n.EMOJIS_PER_ROW)){const o=e%n.EMOJIS_PER_ROW;(s=this.emojiFilteredRefs)!=null&&s[e+(n.EMOJIS_PER_ROW-o)]?this.focusEmoji(0,this.emojiFilteredRefs.length-1):this.focusEmoji(0,o)}t.key==="ArrowLeft"&&this.handleHorizontalNavigation("left",0,e),t.key==="ArrowRight"&&this.handleHorizontalNavigation("right",0,e),t.key==="Tab"&&this.$emit("focus-skin-selector"),t.key==="Enter"&&this.handleEmojiSelection(i,t)},setBottomScrollListener(){this.handleScroll=()=>{const t=this.$refs.listRef;t.scrollTop+t.clientHeight>=t.scrollHeight&&this.$emit("scroll-bottom-reached")},this.$refs.listRef.addEventListener("scroll",this.handleScroll)},setTabLabelObserver(){this.tabLabelObserver=new IntersectionObserver(t=>{t.forEach(e=>{var o,r,l,a,f,u;const{target:i}=e,s=parseInt(i.dataset.index);e.isIntersecting&&i.offsetTop<=((o=this.$refs.tabCategoryRef)==null?void 0:o.offsetTop)+50?(this.fixedLabel=((r=this.tabLabels[s-1])==null?void 0:r.label)??((l=this.tabLabels[0])==null?void 0:l.label),this.$emit("scroll-into-tab",s-1)):e.boundingClientRect.bottom<=((a=this.$refs.tabCategoryRef)==null?void 0:a.getBoundingClientRect().bottom)?(this.$emit("scroll-into-tab",s),this.fixedLabel=(f=this.tabLabels[s])==null?void 0:f.label):s===1&&(this.$emit("scroll-into-tab",s),this.fixedLabel=(u=this.tabLabels[0])==null?void 0:u.label)})}),this.tabLabelObserver.observe(this.$refs.tabCategoryRef),Array.from(this.$refs.listRef.children).forEach((t,e)=>{this.tabLabelObserver.observe(t),t.dataset.index=e})},focusLastEmoji(){this.scrollToTab(this.tabs.length,!0)}}};var A=function(){var e=this,i=e._self._c;return i("div",{staticClass:"d-emoji-picker__selector"},[i("div",{ref:"listRef",staticClass:"d-emoji-picker__list",attrs:{id:"d-emoji-picker-list"}},[e.emojiFilter?i("p",{staticClass:"d-emoji-picker__search-label d-emoji-picker__alignment"},[e._v(" "+e._s(e.filteredEmojis.length>0?e.searchResultsLabel:e.searchNoResultsLabel)+" ")]):i("div",{ref:"tabCategoryRef",staticClass:"d-emoji-picker__category d-emoji-picker__alignment"},[i("p",[e._v(" "+e._s(e.fixedLabel)+" ")])]),e._l(e.tabLabels,function(s,o){return i("div",{directives:[{name:"show",rawName:"v-show",value:!e.emojiFilter,expression:"!emojiFilter"}],key:o,ref:`tabLabelRef-${o}`,refInFor:!0,staticClass:"d-emoji-picker__alignment"},[o?i("p",[e._v(" "+e._s(s.label)+" ")]):e._e(),i("div",{staticClass:"d-emoji-picker__tab"},e._l(e.emojis[e.tabs[o]+e.skinTone]?e.emojis[e.tabs[o]+e.skinTone]:e.emojis[e.tabs[o]],function(r,l){return i("button",{key:r.shortname,ref:`emojiRef-${o}`,refInFor:!0,attrs:{type:"button","aria-label":r.name},on:{click:a=>e.handleEmojiSelection(r,a),focusin:function(a){return e.$emit("highlighted-emoji",r)},focusout:function(a){return e.$emit("highlighted-emoji",null)},mouseover:function(a){return e.$emit("highlighted-emoji",r)},mouseleave:function(a){return e.$emit("highlighted-emoji",null)},keydown:a=>e.handleKeyDown(a,o,l,r)}},[i("img",{staticClass:"d-icon d-icon--size-500",attrs:{alt:r.name,"aria-label":r.name,title:r.name,src:e.getImgSrc(r)},on:{error:e.handleImageError}})])}),0)])}),e.emojiFilter?i("div",{staticClass:"d-emoji-picker__alignment"},[i("div",{staticClass:"d-emoji-picker__tab",attrs:{"data-qa":"filtered-emojis"}},e._l(e.filteredEmojis,function(s,o){return i("button",{key:s.shortname,ref:`filteredEmoji-${o}`,refInFor:!0,class:{"hover-emoji":o===0&&e.hoverFirstEmoji},attrs:{type:"button","aria-label":s.name},on:{click:r=>e.handleEmojiSelection(s,r),focusin:function(r){return e.$emit("highlighted-emoji",s)},focusout:function(r){return e.$emit("highlighted-emoji",null)},mouseover:function(r){return e.hoverEmoji(s)},mouseleave:function(r){return e.hoverEmoji(null)},keydown:r=>e.handleKeyDownFilteredEmojis(r,o,s)}},[i("img",{staticClass:"d-icon d-icon--size-500",attrs:{alt:s.name,"aria-label":s.name,title:s.name,src:`${e.CDN_URL+s.unicode_character}.png`}})])}),0)]):e._e()],2)])},C=[],D=h.n(v,A,C);const w=D.exports,F={name:"EmojiDescription",props:{emoji:{type:Object,default:()=>null}},data(){return{CDN_URL:n.CDN_URL}},methods:{getImgSrc(t){return t.date_added?t.image:`${n.CDN_URL+t.unicode_character}.png`}}};var N=function(){var s;var e=this,i=e._self._c;return i("div",{staticClass:"d-emoji-picker__data"},[e.emoji?i("img",{staticClass:"d-icon d-icon--size-500",attrs:{alt:e.emoji.name,"aria-label":e.emoji.name,title:e.emoji.name,src:e.getImgSrc(e.emoji)}}):e._e(),i("div",[e._v(e._s((s=e.emoji)==null?void 0:s.name))])])},P=[],M=h.n(F,N,P);const K=M.exports,B={name:"EmojiSkinSelector",components:{DtTooltip:p.default},props:{skinTone:{type:String,required:!0},isHovering:{type:Boolean,default:!1},skinSelectorButtonTooltipLabel:{type:String,required:!0}},data(){return{isOpen:!1,skinSelected:null,skinsRef:[],cdnUrl:n.CDN_URL}},computed:{skinPassedIn(){return this.skinList.find(t=>t.skinTone===this.skinTone)},skinList(){return[{name:":wave_tone1:",unicode_output:"1f44b-1f3fb",skinTone:n.EMOJI_PICKER_SKIN_TONE_MODIFIERS.LIGHT,skinCode:"_tone1"},{name:":wave_tone2:",unicode_output:"1f44b-1f3fc",skinTone:n.EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM_LIGHT,skinCode:"_tone2"},{name:":wave_tone3:",unicode_output:"1f44b-1f3fd",skinTone:n.EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM,skinCode:"_tone3"},{name:":wave_tone4:",unicode_output:"1f44b-1f3fe",skinTone:n.EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM_DARK,skinCode:"_tone4"},{name:":wave_tone5:",unicode_output:"1f44b-1f3ff",skinTone:n.EMOJI_PICKER_SKIN_TONE_MODIFIERS.DARK,skinCode:"_tone5"},{name:":wave:",unicode_output:"1f44b",skinTone:n.EMOJI_PICKER_SKIN_TONE_MODIFIERS.DEFAULT,skinCode:""}]}},watch:{isHovering(t){t&&(this.isOpen=!1)},skinTone(t,e){t!==e&&(this.skinSelected=this.skinPassedIn)}},mounted(){this.skinSelected=this.skinPassedIn,this.$nextTick(()=>{this.setupSkinRefs()})},methods:{setupSkinRefs(){this.skinList.forEach((t,e)=>{const i=`skinRef-${e}`;this.$refs[i]&&this.$set(this.skinsRef,e,this.$refs[i][0])})},focusSkinSelector(){this.$refs.skinSelectorRef&&this.$refs.skinSelectorRef.focus()},selectSkin(t){this.skinSelected=t,this.isOpen=!1,this.$emit("skin-tone",t.skinTone),this.$nextTick(()=>{this.focusSkinSelector()})},handleKeyDown(t,e,i){var s,o,r,l;t.preventDefault(),t.key==="ArrowLeft"&&(i===0&&((s=this.skinsRef[this.skinsRef.length-1])==null||s.focus()),(o=this.skinsRef[i-1])==null||o.focus()),t.key==="ArrowRight"&&(this.skinsRef.length&&((r=this.skinsRef[0])==null||r.focus()),(l=this.skinsRef[i+1])==null||l.focus()),t.key==="Enter"&&(e?this.selectSkin(e):this.toggleSkinList()),t.key==="Tab"&&(t.shiftKey?this.$emit("focus-last-emoji"):this.$emit("focus-tabset"))},toggleSkinList(){this.isOpen=!this.isOpen,this.$nextTick(()=>{this.skinsRef[0]&&this.skinsRef[0].focus()})}}};var J=function(){var e=this,i=e._self._c;return i("div",{attrs:{"data-qa":"skin-selector"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.isOpen,expression:"isOpen"}],staticClass:"d-emoji-picker__skin-list"},e._l(e.skinList,function(s,o){var r;return i("button",{key:s.name,ref:`skinRef-${o}`,refInFor:!0,class:{selected:((r=e.skinSelected)==null?void 0:r.skinCode)===s.skinCode},on:{click:function(l){return e.selectSkin(s)},keydown:l=>e.handleKeyDown(l,s,o)}},[i("img",{staticClass:"d-icon d-icon--size-500",attrs:{alt:s.name,"aria-label":s.name,title:s.name,src:`${e.cdnUrl+s.unicode_output}.png`}})])}),0),i("div",{directives:[{name:"show",rawName:"v-show",value:!e.isOpen,expression:"!isOpen"}],staticClass:"d-emoji-picker__skin-selected"},[i("dt-tooltip",{attrs:{placement:"top-end"},scopedSlots:e._u([{key:"anchor",fn:function(){var s,o,r,l;return[i("button",{ref:"skinSelectorRef",attrs:{"aria-label":e.skinSelectorButtonTooltipLabel,tabindex:"-1"},on:{click:e.toggleSkinList,keydown:a=>e.handleKeyDown(a)}},[i("img",{staticClass:"d-icon d-icon--size-500",attrs:{alt:(s=e.skinSelected)==null?void 0:s.name,"aria-label":(o=e.skinSelected)==null?void 0:o.name,title:(r=e.skinSelected)==null?void 0:r.name,src:`${e.cdnUrl+((l=e.skinSelected)==null?void 0:l.unicode_output)}.png`}})])]},proxy:!0}])},[e._v(" "+e._s(e.skinSelectorButtonTooltipLabel)+" ")])],1)])},U=[],q=h.n(B,J,U);const z=q.exports,H={name:"DtEmojiPicker",components:{EmojiTabset:y,EmojiSearch:O,EmojiSelector:w,EmojiDescription:K,EmojiSkinSelector:z,DtButton:m.default},props:{recentlyUsedEmojis:{type:Array,default:()=>[]},customEmojis:{type:Array},skinTone:{type:String,default:"Default"},searchQuery:{type:String,default:""},showSearch:{type:Boolean,default:!0}},data(){return{internalSearchQuery:this.searchQuery,highlightedEmoji:null,selectedTabset:{},scrollIntoTab:0,i18n:new j.DialtoneLocalization}},computed:{showCustomEmojisTab(){var t;return((t=this.customEmojis)==null?void 0:t.length)>0},showRecentlyUsedTab(){var t;return((t=this.recentlyUsedEmojis)==null?void 0:t.length)>0},tabSetLabels(){return[this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_RECENTLY_USED_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_SMILEYS_AND_PEOPLE_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_NATURE_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_FOOD_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_ACTIVITY_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_TRAVEL_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_OBJECTS_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_SYMBOLS_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_FLAGS_LABEL"),this.i18n.$t("DIALTONE_EMOJI_PICKER_TABSET_CUSTOM_LABEL")]},searchPlaceholderLabel(){return this.i18n.$t("DIALTONE_EMOJI_PICKER_SEARCH_PLACEHOLDER_LABEL")},searchResultsLabel(){return this.i18n.$t("DIALTONE_EMOJI_PICKER_SEARCH_RESULTS_LABEL")},searchNoResultsLabel(){return this.i18n.$t("DIALTONE_EMOJI_PICKER_SEARCH_NO_RESULTS_LABEL")},skinSelectorButtonTooltipLabel(){return this.i18n.$t("DIALTONE_EMOJI_PICKER_SKIN_SELECTOR_BUTTON_TOOLTIP_LABEL")},addEmojiLabel(){return this.i18n.$t("DIALTONE_EMOJI_PICKER_ADD_EMOJI_LABEL")}},watch:{searchQuery(t){this.internalSearchQuery=t}},methods:{scrollToSelectedTabset(t){this.internalSearchQuery="",this.selectedTabset={...this.selectedTabset,tabId:t}},updateScrollIntoTab(t){this.scrollIntoTab=t},updateHighlightedEmoji(t){this.highlightedEmoji=t}}};var W=function(){var e=this,i=e._self._c;return i("div",{staticClass:"d-emoji-picker"},[i("div",{staticClass:"d-emoji-picker--header"},[i("emoji-tabset",{ref:"tabsetRef",attrs:{"emoji-filter":e.internalSearchQuery,"show-custom-emojis-tab":e.showCustomEmojisTab,"show-recently-used-tab":e.showRecentlyUsedTab,"scroll-into-tab":e.scrollIntoTab,"tab-set-labels":e.tabSetLabels},on:{"focus-skin-selector":function(s){return e.$refs.skinSelectorRef.focusSkinSelector()},"focus-search-input":function(s){e.showSearch?e.$refs.searchInputRef.focusSearchInput():e.$refs.emojiSelectorRef.focusEmojiSelector()},"selected-tabset":e.scrollToSelectedTabset},nativeOn:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:e.$emit("close")}}})],1),i("div",{staticClass:"d-emoji-picker--body"},[e.showSearch?i("emoji-search",{ref:"searchInputRef",attrs:{"model-value":e.internalSearchQuery,"search-placeholder-label":e.searchPlaceholderLabel},on:{"update:model-value":s=>e.internalSearchQuery=s,"select-first-emoji":function(s){return e.$emit("selected-emoji",e.highlightedEmoji)},"focus-tabset":function(s){return e.$refs.tabsetRef.focusTabset()},"focus-emoji-selector":function(s){return e.$refs.emojiSelectorRef.focusEmojiSelector()}},nativeOn:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:e.$emit("close")}}}):e._e(),i("emoji-selector",{ref:"emojiSelectorRef",attrs:{"emoji-filter":e.internalSearchQuery,"skin-tone":e.skinTone,"tab-set-labels":e.tabSetLabels,"search-results-label":e.searchResultsLabel,"search-no-results-label":e.searchNoResultsLabel,"recently-used-emojis":e.recentlyUsedEmojis,"custom-emojis":e.customEmojis,"selected-tabset":e.selectedTabset},on:{"scroll-into-tab":e.updateScrollIntoTab,"highlighted-emoji":e.updateHighlightedEmoji,"selected-emoji":function(s){return e.$emit("selected-emoji",s)},"focus-skin-selector":function(s){return e.$refs.skinSelectorRef.focusSkinSelector()},"focus-search-input":function(s){e.showSearch?e.$refs.searchInputRef.focusSearchInput():e.$refs.tabsetRef.focusTabset()},"scroll-bottom-reached":function(s){return e.$emit("scroll-bottom-reached")}},nativeOn:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:e.$emit("close")}}})],1),i("div",{staticClass:"d-emoji-picker--footer"},[e.showCustomEmojisTab&&!e.highlightedEmoji?i("dt-button",{staticClass:"d-emoji-picker__add-emoji",attrs:{importance:"outlined","aria-label":e.addEmojiLabel},on:{click:function(s){return e.$emit("add-emoji")}}},[e._v(" "+e._s(e.addEmojiLabel)+" ")]):e._e(),i("emoji-description",{attrs:{emoji:e.highlightedEmoji}}),i("emoji-skin-selector",{ref:"skinSelectorRef",attrs:{"is-hovering":!!e.highlightedEmoji,"skin-selector-button-tooltip-label":e.skinSelectorButtonTooltipLabel,"skin-tone":e.skinTone},on:{"skin-tone":function(s){return e.$emit("skin-tone",s)},"focus-tabset":function(s){return e.$refs.tabsetRef.focusTabset()},"focus-last-emoji":function(s){return e.$refs.emojiSelectorRef.focusLastEmoji()}},nativeOn:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:e.$emit("close")}}})],1)])},Q=[],V=h.n(H,W,Q);const G=V.exports;exports.default=G;
|
|
2
2
|
//# sourceMappingURL=emoji-picker.cjs.map
|