@athoscommerce/snap-preact 1.4.0 → 1.5.1-beta.110
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/cjs/components/src/components/Atoms/Button/Button.d.ts +1 -1
- package/dist/cjs/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +7 -0
- package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +85 -0
- package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.js +17 -0
- package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.d.ts +1 -0
- package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.js +30 -13
- package/dist/cjs/components/src/components/Atoms/Icon/paths.d.ts +21 -0
- package/dist/cjs/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Atoms/Icon/paths.js +21 -0
- package/dist/cjs/components/src/components/Molecules/CalloutBadge/CalloutBadge.js +2 -2
- package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +20 -0
- package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +186 -0
- package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +18 -0
- package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +124 -0
- package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +18 -0
- package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +183 -0
- package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +15 -0
- package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +255 -0
- package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +17 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +122 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +25 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +474 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.d.ts +11 -0
- package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.js +189 -0
- package/dist/cjs/components/src/components/Molecules/ChatResult/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Molecules/ChatResult/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatResult/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +12 -0
- package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +133 -0
- package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +15 -0
- package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +99 -0
- package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/OverlayBadge/OverlayBadge.js +2 -2
- package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts +5 -3
- package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Molecules/Result/Result.js +14 -8
- package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts +6 -1
- package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.js +20 -3
- package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.js +30 -12
- package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts +27 -0
- package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Organisms/Chat/Chat.js +815 -0
- package/dist/cjs/components/src/components/Organisms/Chat/Chat.styles.d.ts +16 -0
- package/dist/cjs/components/src/components/Organisms/Chat/Chat.styles.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Organisms/Chat/Chat.styles.js +1090 -0
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +32 -0
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +104 -0
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +40 -0
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.js +87 -0
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +44 -0
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +116 -0
- package/dist/cjs/components/src/components/Organisms/Chat/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Organisms/Chat/index.js +17 -0
- package/dist/cjs/components/src/components/Organisms/Facet/Facet.js +2 -1
- package/dist/cjs/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.js +2 -1
- package/dist/cjs/components/src/components/Organisms/Results/Results.js +1 -1
- package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts +1 -1
- package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +3 -1
- package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts +1 -1
- package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +3 -1
- package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts +1 -1
- package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +3 -1
- package/dist/cjs/components/src/components/Templates/Chat/Chat.d.ts +12 -0
- package/dist/cjs/components/src/components/Templates/Chat/Chat.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Templates/Chat/Chat.js +55 -0
- package/dist/cjs/components/src/components/Templates/Chat/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Templates/Chat/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Templates/Chat/index.js +17 -0
- package/dist/cjs/components/src/index.d.ts +11 -0
- package/dist/cjs/components/src/index.d.ts.map +1 -1
- package/dist/cjs/components/src/index.js +13 -1
- package/dist/cjs/components/src/providers/withTracking.d.ts +2 -2
- package/dist/cjs/components/src/providers/withTracking.d.ts.map +1 -1
- package/dist/cjs/components/src/themes/base/components/templates/chat.d.ts +4 -0
- package/dist/cjs/components/src/themes/base/components/templates/chat.d.ts.map +1 -0
- package/dist/cjs/components/src/themes/base/components/templates/chat.js +6 -0
- package/dist/cjs/components/src/themes/base/components/templates/index.d.ts.map +1 -1
- package/dist/cjs/components/src/themes/base/components/templates/index.js +5 -4
- package/dist/cjs/components/src/themes/bocachica/components/templates/chat.d.ts +4 -0
- package/dist/cjs/components/src/themes/bocachica/components/templates/chat.d.ts.map +1 -0
- package/dist/cjs/components/src/themes/bocachica/components/templates/chat.js +6 -0
- package/dist/cjs/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
- package/dist/cjs/components/src/themes/bocachica/components/templates/index.js +5 -4
- package/dist/cjs/components/src/themes/everest/components/templates/chat.d.ts +4 -0
- package/dist/cjs/components/src/themes/everest/components/templates/chat.d.ts.map +1 -0
- package/dist/cjs/components/src/themes/everest/components/templates/chat.js +6 -0
- package/dist/cjs/components/src/themes/everest/components/templates/index.d.ts.map +1 -1
- package/dist/cjs/components/src/themes/everest/components/templates/index.js +5 -4
- package/dist/cjs/components/src/themes/matterhorn/components/templates/chat.d.ts +4 -0
- package/dist/cjs/components/src/themes/matterhorn/components/templates/chat.d.ts.map +1 -0
- package/dist/cjs/components/src/themes/matterhorn/components/templates/chat.js +6 -0
- package/dist/cjs/components/src/themes/matterhorn/components/templates/index.d.ts.map +1 -1
- package/dist/cjs/components/src/themes/matterhorn/components/templates/index.js +5 -4
- package/dist/cjs/components/src/themes/pike/components/templates/chat.d.ts +4 -0
- package/dist/cjs/components/src/themes/pike/components/templates/chat.d.ts.map +1 -0
- package/dist/cjs/components/src/themes/pike/components/templates/chat.js +6 -0
- package/dist/cjs/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
- package/dist/cjs/components/src/themes/pike/components/templates/index.js +5 -4
- package/dist/cjs/components/src/themes/snapnco/components/templates/chat.d.ts +4 -0
- package/dist/cjs/components/src/themes/snapnco/components/templates/chat.d.ts.map +1 -0
- package/dist/cjs/components/src/themes/snapnco/components/templates/chat.js +6 -0
- package/dist/cjs/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
- package/dist/cjs/components/src/themes/snapnco/components/templates/index.js +5 -4
- package/dist/cjs/components/src/themes/snappy/components/templates/chat.d.ts +4 -0
- package/dist/cjs/components/src/themes/snappy/components/templates/chat.d.ts.map +1 -0
- package/dist/cjs/components/src/themes/snappy/components/templates/chat.js +6 -0
- package/dist/cjs/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
- package/dist/cjs/components/src/themes/snappy/components/templates/index.js +5 -4
- package/dist/cjs/components/src/themes/themeComponents/chat.d.ts +4 -0
- package/dist/cjs/components/src/themes/themeComponents/chat.d.ts.map +1 -0
- package/dist/cjs/components/src/themes/themeComponents/chat.js +14 -0
- package/dist/cjs/components/src/utilities/Colour/Colour.d.ts +11 -0
- package/dist/cjs/components/src/utilities/Colour/Colour.d.ts.map +1 -1
- package/dist/cjs/components/src/utilities/Colour/Colour.js +32 -0
- package/dist/cjs/components/src/utilities/snapify.d.ts +3 -2
- package/dist/cjs/components/src/utilities/snapify.d.ts.map +1 -1
- package/dist/cjs/components/src/utilities/snapify.js +48 -0
- package/dist/cjs/src/Instantiators/RecommendationInstantiator.d.ts +1 -0
- package/dist/cjs/src/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
- package/dist/cjs/src/Instantiators/RecommendationInstantiator.js +161 -123
- package/dist/cjs/src/Snap.d.ts +3 -2
- package/dist/cjs/src/Snap.d.ts.map +1 -1
- package/dist/cjs/src/Snap.js +142 -30
- package/dist/cjs/src/Templates/SnapTemplates.d.ts +2 -1
- package/dist/cjs/src/Templates/SnapTemplates.d.ts.map +1 -1
- package/dist/cjs/src/Templates/SnapTemplates.js +67 -7
- package/dist/cjs/src/Templates/Stores/LibraryStore.d.ts +4 -0
- package/dist/cjs/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
- package/dist/cjs/src/Templates/Stores/LibraryStore.js +19 -0
- package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts +21 -6
- package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
- package/dist/cjs/src/Templates/Stores/TemplateStore.js +2 -1
- package/dist/cjs/src/Templates/Stores/library/components/Chat.d.ts +2 -0
- package/dist/cjs/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
- package/dist/cjs/src/Templates/Stores/library/components/Chat.js +5 -0
- package/dist/cjs/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
- package/dist/cjs/src/Templates/Stores/library/languages/es.js +5 -0
- package/dist/cjs/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
- package/dist/cjs/src/Templates/Stores/library/languages/fr.js +5 -0
- package/dist/cjs/src/create/createChatController.d.ts +5 -0
- package/dist/cjs/src/create/createChatController.d.ts.map +1 -0
- package/dist/cjs/src/create/createChatController.js +43 -0
- package/dist/cjs/src/setupEvents.d.ts +13 -0
- package/dist/cjs/src/setupEvents.d.ts.map +1 -1
- package/dist/cjs/src/setupEvents.js +87 -0
- package/dist/cjs/src/types.d.ts +15 -3
- package/dist/cjs/src/types.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/Button/Button.d.ts +1 -1
- package/dist/esm/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +7 -0
- package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
- package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +67 -0
- package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
- package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.js +1 -0
- package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts +1 -0
- package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.js +33 -9
- package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts +21 -0
- package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/Icon/paths.js +21 -0
- package/dist/esm/components/src/components/Molecules/CalloutBadge/CalloutBadge.js +1 -1
- package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +20 -0
- package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +168 -0
- package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +18 -0
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +118 -0
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +18 -0
- package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +164 -0
- package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatMessageText/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +15 -0
- package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +223 -0
- package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +17 -0
- package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +100 -0
- package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +25 -0
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +449 -0
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts +11 -0
- package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.js +171 -0
- package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatResult/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +12 -0
- package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +112 -0
- package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +15 -0
- package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +80 -0
- package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.js +1 -1
- package/dist/esm/components/src/components/Molecules/Result/Result.d.ts +5 -3
- package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Result/Result.js +12 -7
- package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +6 -1
- package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +36 -3
- package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Slideout/Slideout.js +30 -12
- package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +27 -0
- package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
- package/dist/esm/components/src/components/Organisms/Chat/Chat.js +726 -0
- package/dist/esm/components/src/components/Organisms/Chat/Chat.styles.d.ts +16 -0
- package/dist/esm/components/src/components/Organisms/Chat/Chat.styles.d.ts.map +1 -0
- package/dist/esm/components/src/components/Organisms/Chat/Chat.styles.js +1105 -0
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +32 -0
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +1 -0
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +54 -0
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +40 -0
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +1 -0
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.js +81 -0
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +44 -0
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +1 -0
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +110 -0
- package/dist/esm/components/src/components/Organisms/Chat/index.d.ts +2 -0
- package/dist/esm/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Organisms/Chat/index.js +1 -0
- package/dist/esm/components/src/components/Organisms/Facet/Facet.js +1 -1
- package/dist/esm/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.js +1 -1
- package/dist/esm/components/src/components/Organisms/Results/Results.js +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +4 -1
- package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +4 -1
- package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +4 -1
- package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts +12 -0
- package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts.map +1 -0
- package/dist/esm/components/src/components/Templates/Chat/Chat.js +42 -0
- package/dist/esm/components/src/components/Templates/Chat/index.d.ts +2 -0
- package/dist/esm/components/src/components/Templates/Chat/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Templates/Chat/index.js +1 -0
- package/dist/esm/components/src/index.d.ts +11 -0
- package/dist/esm/components/src/index.d.ts.map +1 -1
- package/dist/esm/components/src/index.js +11 -0
- package/dist/esm/components/src/providers/withTracking.d.ts +2 -2
- package/dist/esm/components/src/providers/withTracking.d.ts.map +1 -1
- package/dist/esm/components/src/themes/base/components/templates/chat.d.ts +4 -0
- package/dist/esm/components/src/themes/base/components/templates/chat.d.ts.map +1 -0
- package/dist/esm/components/src/themes/base/components/templates/chat.js +3 -0
- package/dist/esm/components/src/themes/base/components/templates/index.d.ts.map +1 -1
- package/dist/esm/components/src/themes/base/components/templates/index.js +5 -0
- package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts +4 -0
- package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts.map +1 -0
- package/dist/esm/components/src/themes/bocachica/components/templates/chat.js +3 -0
- package/dist/esm/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
- package/dist/esm/components/src/themes/bocachica/components/templates/index.js +5 -0
- package/dist/esm/components/src/themes/everest/components/templates/chat.d.ts +4 -0
- package/dist/esm/components/src/themes/everest/components/templates/chat.d.ts.map +1 -0
- package/dist/esm/components/src/themes/everest/components/templates/chat.js +3 -0
- package/dist/esm/components/src/themes/everest/components/templates/index.d.ts.map +1 -1
- package/dist/esm/components/src/themes/everest/components/templates/index.js +5 -0
- package/dist/esm/components/src/themes/matterhorn/components/templates/chat.d.ts +4 -0
- package/dist/esm/components/src/themes/matterhorn/components/templates/chat.d.ts.map +1 -0
- package/dist/esm/components/src/themes/matterhorn/components/templates/chat.js +3 -0
- package/dist/esm/components/src/themes/matterhorn/components/templates/index.d.ts.map +1 -1
- package/dist/esm/components/src/themes/matterhorn/components/templates/index.js +5 -0
- package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts +4 -0
- package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts.map +1 -0
- package/dist/esm/components/src/themes/pike/components/templates/chat.js +3 -0
- package/dist/esm/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
- package/dist/esm/components/src/themes/pike/components/templates/index.js +5 -0
- package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts +4 -0
- package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts.map +1 -0
- package/dist/esm/components/src/themes/snapnco/components/templates/chat.js +3 -0
- package/dist/esm/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
- package/dist/esm/components/src/themes/snapnco/components/templates/index.js +5 -0
- package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts +4 -0
- package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts.map +1 -0
- package/dist/esm/components/src/themes/snappy/components/templates/chat.js +3 -0
- package/dist/esm/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
- package/dist/esm/components/src/themes/snappy/components/templates/index.js +5 -0
- package/dist/esm/components/src/themes/themeComponents/chat.d.ts +4 -0
- package/dist/esm/components/src/themes/themeComponents/chat.d.ts.map +1 -0
- package/dist/esm/components/src/themes/themeComponents/chat.js +11 -0
- package/dist/esm/components/src/utilities/Colour/Colour.d.ts +11 -0
- package/dist/esm/components/src/utilities/Colour/Colour.d.ts.map +1 -1
- package/dist/esm/components/src/utilities/Colour/Colour.js +30 -0
- package/dist/esm/components/src/utilities/snapify.d.ts +3 -2
- package/dist/esm/components/src/utilities/snapify.d.ts.map +1 -1
- package/dist/esm/components/src/utilities/snapify.js +29 -2
- package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts +1 -0
- package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
- package/dist/esm/src/Instantiators/RecommendationInstantiator.js +130 -84
- package/dist/esm/src/Snap.d.ts +3 -2
- package/dist/esm/src/Snap.d.ts.map +1 -1
- package/dist/esm/src/Snap.js +80 -6
- package/dist/esm/src/Templates/SnapTemplates.d.ts +2 -1
- package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
- package/dist/esm/src/Templates/SnapTemplates.js +61 -6
- package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +4 -0
- package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/LibraryStore.js +6 -0
- package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +21 -6
- package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TemplateStore.js +2 -1
- package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts +2 -0
- package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/components/Chat.js +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/library/languages/es.js +5 -0
- package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/library/languages/fr.js +5 -0
- package/dist/esm/src/create/createChatController.d.ts +5 -0
- package/dist/esm/src/create/createChatController.d.ts.map +1 -0
- package/dist/esm/src/create/createChatController.js +29 -0
- package/dist/esm/src/setupEvents.d.ts +13 -0
- package/dist/esm/src/setupEvents.d.ts.map +1 -1
- package/dist/esm/src/setupEvents.js +40 -0
- package/dist/esm/src/types.d.ts +15 -3
- package/dist/esm/src/types.d.ts.map +1 -1
- package/package.json +13 -12
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { configure as configureMobx } from 'mobx';
|
|
2
|
-
import { SearchController, AutocompleteController, RecommendationController } from '@athoscommerce/snap-controller';
|
|
2
|
+
import { SearchController, AutocompleteController, RecommendationController, ChatController } from '@athoscommerce/snap-controller';
|
|
3
3
|
import { Client } from '@athoscommerce/snap-client';
|
|
4
|
-
import { SearchStore, AutocompleteStore, RecommendationStore } from '@athoscommerce/snap-store-mobx';
|
|
4
|
+
import { SearchStore, AutocompleteStore, RecommendationStore, ChatStore } from '@athoscommerce/snap-store-mobx';
|
|
5
5
|
import { UrlManager, UrlTranslator, reactLinker } from '@athoscommerce/snap-url-manager';
|
|
6
6
|
import { EventManager } from '@athoscommerce/snap-event-manager';
|
|
7
7
|
import { Profiler } from '@athoscommerce/snap-profiler';
|
|
@@ -42,6 +42,20 @@ export class Snapify {
|
|
|
42
42
|
cntrlr.init();
|
|
43
43
|
return cntrlr;
|
|
44
44
|
}
|
|
45
|
+
static chat(config) {
|
|
46
|
+
const id = config.id;
|
|
47
|
+
if (controllers[id]) {
|
|
48
|
+
return controllers[id];
|
|
49
|
+
}
|
|
50
|
+
const cntrlr = (controllers[id] = createChatController({ client, controller: config }));
|
|
51
|
+
cntrlr.on('afterStore', async ({ controller }, next) => {
|
|
52
|
+
controller.log.debug('controller', controller);
|
|
53
|
+
controller.log.debug('store', controller.store.toJSON());
|
|
54
|
+
await next();
|
|
55
|
+
});
|
|
56
|
+
cntrlr.init();
|
|
57
|
+
return cntrlr;
|
|
58
|
+
}
|
|
45
59
|
static search(config) {
|
|
46
60
|
const id = config.id;
|
|
47
61
|
if (controllers[id]) {
|
|
@@ -83,6 +97,19 @@ function createRecommendationController(config) {
|
|
|
83
97
|
});
|
|
84
98
|
return cntrlr;
|
|
85
99
|
}
|
|
100
|
+
function createChatController(config) {
|
|
101
|
+
const urlManager = new UrlManager(new UrlTranslator(), reactLinker);
|
|
102
|
+
const cntrlr = new ChatController(config.controller, {
|
|
103
|
+
client: new Client(config.client.globals, config.client.config),
|
|
104
|
+
store: new ChatStore({ ...config.controller, siteId: config.client.globals.siteId }, { urlManager }),
|
|
105
|
+
urlManager,
|
|
106
|
+
eventManager: new EventManager(),
|
|
107
|
+
profiler: new Profiler(),
|
|
108
|
+
logger: new Logger(),
|
|
109
|
+
tracker: new Tracker(config.client.globals),
|
|
110
|
+
});
|
|
111
|
+
return cntrlr;
|
|
112
|
+
}
|
|
86
113
|
function createAutocompleteController(config) {
|
|
87
114
|
const urlManager = new UrlManager(new UrlTranslator(), reactLinker).detach();
|
|
88
115
|
const cntrlr = new AutocompleteController(config.controller, {
|
|
@@ -69,6 +69,7 @@ export declare class RecommendationInstantiator {
|
|
|
69
69
|
plugin(func: (cntrlr: AbstractController, ...args: any) => void | Promise<void>, ...args: unknown[]): void;
|
|
70
70
|
on<T>(event: string, ...func: Middleware<T>[]): void;
|
|
71
71
|
use(attachments: Attachments): void;
|
|
72
|
+
cleanupStaleControllers(): void;
|
|
72
73
|
}
|
|
73
74
|
type DefinedProps = {
|
|
74
75
|
[key: string]: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationInstantiator.d.ts","sourceRoot":"","sources":["../../../../src/Instantiators/RecommendationInstantiator.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAc,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAA2D,MAAM,4BAA4B,CAAC;AACvI,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EACX,kBAAkB,EAClB,wBAAwB,EACxB,WAAW,EACX,gBAAgB,EAEhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"RecommendationInstantiator.d.ts","sourceRoot":"","sources":["../../../../src/Instantiators/RecommendationInstantiator.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { AppMode, DomTargeter, getContext } from '@athoscommerce/snap-toolbox';
|
|
|
5
5
|
import { Client } from '@athoscommerce/snap-client';
|
|
6
6
|
import { Logger } from '@athoscommerce/snap-logger';
|
|
7
7
|
import { Tracker } from '@athoscommerce/snap-tracker';
|
|
8
|
+
import { createRecommendationController } from '../create';
|
|
8
9
|
const DEFAULT_BRANCH = 'production';
|
|
9
10
|
export class RecommendationInstantiator {
|
|
10
11
|
constructor(config, services, context) {
|
|
@@ -40,29 +41,26 @@ export class RecommendationInstantiator {
|
|
|
40
41
|
this.tracker = services?.tracker || new Tracker(this.config.client.globals);
|
|
41
42
|
this.logger = services?.logger || new Logger({ prefix: 'RecommendationInstantiator ', mode: this.mode });
|
|
42
43
|
const profileCount = {};
|
|
44
|
+
// script block targeter for "grouped" and "legacy" blocks
|
|
43
45
|
this.targeter = new DomTargeter([
|
|
44
46
|
{
|
|
45
47
|
selector: `${this.config.selector ||
|
|
46
48
|
'script[type="searchspring/recommend"], script[type="searchspring/personalized-recommendations"], script[type="athos/recommend"], script[type="athos/personalized-recommendations"]'}, script[type="searchspring/recommend"][profile="email"], script[type="athos/recommend"][profile="email"]`,
|
|
47
49
|
autoRetarget: true,
|
|
48
50
|
clickRetarget: true,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
element: (target, origElement) => {
|
|
52
|
-
const profile = origElement.getAttribute('profile') || '';
|
|
53
|
-
const recsContainer = document.createElement('div');
|
|
54
|
-
recsContainer.setAttribute('searchspring-recommend', profile);
|
|
55
|
-
return recsContainer;
|
|
56
|
-
},
|
|
57
|
-
},
|
|
51
|
+
navigationRetarget: true,
|
|
52
|
+
emptyTarget: false,
|
|
58
53
|
},
|
|
59
54
|
{
|
|
60
55
|
selector: 'script[type="searchspring/recommendations"], script[type="athos/recommendations"]',
|
|
61
56
|
autoRetarget: true,
|
|
62
57
|
clickRetarget: true,
|
|
58
|
+
navigationRetarget: true,
|
|
63
59
|
emptyTarget: false,
|
|
64
60
|
},
|
|
65
|
-
], async (target, elem
|
|
61
|
+
], async (target, elem) => {
|
|
62
|
+
this.cleanupStaleControllers();
|
|
63
|
+
const scriptElement = elem;
|
|
66
64
|
const elemContext = getContext([
|
|
67
65
|
'shopperId',
|
|
68
66
|
'shopper',
|
|
@@ -77,7 +75,7 @@ export class RecommendationInstantiator {
|
|
|
77
75
|
'custom',
|
|
78
76
|
'profiles',
|
|
79
77
|
'globals',
|
|
80
|
-
],
|
|
78
|
+
], scriptElement);
|
|
81
79
|
if (elemContext.profiles && elemContext.profiles.length) {
|
|
82
80
|
// using the "grouped block" integration structure
|
|
83
81
|
// type the new profile specific integration context variables
|
|
@@ -91,34 +89,52 @@ export class RecommendationInstantiator {
|
|
|
91
89
|
cart: scriptContextGlobals?.cart && getArrayFunc(scriptContextGlobals.cart),
|
|
92
90
|
products: scriptContextGlobals?.products,
|
|
93
91
|
shopper: scriptContextGlobals?.shopper?.id,
|
|
94
|
-
batchId: Math.random(),
|
|
92
|
+
batchId: Math.floor(Math.random() * Number.MAX_SAFE_INTEGER),
|
|
95
93
|
}),
|
|
96
94
|
};
|
|
97
|
-
|
|
98
|
-
//
|
|
99
|
-
scriptContextProfiles.forEach((profile) => {
|
|
95
|
+
// create a per-profile DomTargeter for each profile so each controller
|
|
96
|
+
// gets its own targeter tracking its specific element
|
|
97
|
+
scriptContextProfiles.forEach((profile, index) => {
|
|
100
98
|
if (profile.selector) {
|
|
101
|
-
const
|
|
99
|
+
const profileTarget = {
|
|
102
100
|
selector: profile.selector,
|
|
103
101
|
autoRetarget: true,
|
|
104
|
-
clickRetarget: true,
|
|
105
102
|
profile,
|
|
103
|
+
order: index,
|
|
106
104
|
};
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
105
|
+
// track the controller for this profile so multiple matched elements share it
|
|
106
|
+
let profileControllerPromise;
|
|
107
|
+
new DomTargeter([profileTarget], async (target, targetElem, _originalElem, targeter) => {
|
|
108
|
+
// skip retarget if the source script element was removed and release the current target
|
|
109
|
+
if (scriptElement.isConnected === false) {
|
|
110
|
+
if (targetElem) {
|
|
111
|
+
targeter?.releaseTargets([targetElem]);
|
|
112
|
+
}
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (target.profile?.profile || target.profile?.tag) {
|
|
116
|
+
const profileRequestGlobals = {
|
|
117
|
+
...requestGlobals,
|
|
118
|
+
profile: { ...target.profile?.options, order: target.order },
|
|
119
|
+
tag: target.profile.tag || target.profile.profile, // have to support both tag and profile due to having profile at release, but will favor tag
|
|
120
|
+
};
|
|
121
|
+
const profileContext = deepmerge(this.context, defined({ globals: scriptContextGlobals, profile: target.profile }));
|
|
122
|
+
if (elemContext.custom) {
|
|
123
|
+
profileContext.custom = deepmerge(profileContext.custom, elemContext.custom);
|
|
124
|
+
}
|
|
125
|
+
if (!profileControllerPromise) {
|
|
126
|
+
// first element match — create the controller
|
|
127
|
+
profileControllerPromise = readyTheController(this, services || {}, targetElem, profileContext, profileCount, scriptElement, profileRequestGlobals, target, targeter);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// subsequent element matches — reuse the existing controller and just render
|
|
131
|
+
const controller = await profileControllerPromise;
|
|
132
|
+
if (controller && targetElem) {
|
|
133
|
+
renderController(this, services || {}, controller, targetElem, scriptElement, target);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
});
|
|
122
138
|
}
|
|
123
139
|
});
|
|
124
140
|
}
|
|
@@ -138,7 +154,23 @@ export class RecommendationInstantiator {
|
|
|
138
154
|
profile: options,
|
|
139
155
|
}),
|
|
140
156
|
};
|
|
141
|
-
|
|
157
|
+
// inject a render container before the script element
|
|
158
|
+
const profileAttr = scriptElement.getAttribute('profile') || '';
|
|
159
|
+
const recsContainer = scriptElement.ownerDocument.createElement('div');
|
|
160
|
+
recsContainer.setAttribute('searchspring-recommend', profileAttr);
|
|
161
|
+
scriptElement.before(recsContainer);
|
|
162
|
+
const legacyContext = deepmerge(this.context, elemContext);
|
|
163
|
+
// create a per-element DomTargeter for the injected div (mirrors grouped block pattern)
|
|
164
|
+
new DomTargeter([{ selector: `[searchspring-recommend="${profileAttr}"]`, name: `legacy_${profile}_${profileCount[profile || ''] || 0}` }], async (_target, targetElem, _originalElem, targeter) => {
|
|
165
|
+
// skip retarget if the source script element was removed and release the current target
|
|
166
|
+
if (scriptElement.isConnected === false) {
|
|
167
|
+
if (targetElem) {
|
|
168
|
+
targeter?.releaseTargets([targetElem]);
|
|
169
|
+
}
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
readyTheController(this, services || {}, targetElem, legacyContext, profileCount, scriptElement, profileRequestGlobals, target, targeter);
|
|
173
|
+
});
|
|
142
174
|
}
|
|
143
175
|
});
|
|
144
176
|
}
|
|
@@ -151,26 +183,43 @@ export class RecommendationInstantiator {
|
|
|
151
183
|
use(attachments) {
|
|
152
184
|
this.uses.push(attachments);
|
|
153
185
|
}
|
|
186
|
+
// cleanup to ensure we release controllers no longer rendering in the DOM (memory leak prevention for SPA's)
|
|
187
|
+
cleanupStaleControllers() {
|
|
188
|
+
Object.keys(this.controller).forEach((id) => {
|
|
189
|
+
const controller = this.controller[id];
|
|
190
|
+
const targeters = Object.values(controller.targeters);
|
|
191
|
+
const hasConnectedTarget = targeters.some((targeter) => targeter.getTargetedElems().some((elem) => {
|
|
192
|
+
const attr = elem.isConnected !== false && elem.getAttribute('ss-controller-id');
|
|
193
|
+
return attr === id;
|
|
194
|
+
}));
|
|
195
|
+
if (!hasConnectedTarget) {
|
|
196
|
+
Object.keys(controller.targeters).forEach((targeterId) => controller.targeters[targeterId].destroy());
|
|
197
|
+
controller.targeters = {};
|
|
198
|
+
delete this.controller[id];
|
|
199
|
+
if (window.athos?.controller) {
|
|
200
|
+
delete window.athos.controller[id];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
}
|
|
154
205
|
}
|
|
155
|
-
async function readyTheController(instance, services,
|
|
206
|
+
async function readyTheController(instance, services, targetElem, context, profileCount, scriptElem, controllerGlobals, target, targeter) {
|
|
156
207
|
const { profile, batchId, cart, tag } = controllerGlobals;
|
|
157
208
|
const batched = profile?.batched ?? controllerGlobals.batched ?? true;
|
|
158
209
|
if (!tag) {
|
|
159
210
|
// FEEDBACK: change message depending on script integration type (profile vs. legacy)
|
|
160
|
-
instance.logger.warn(`'tag' is missing from <script> tag, skipping this profile`,
|
|
211
|
+
instance.logger.warn(`'tag' is missing from <script> tag, skipping this profile`, scriptElem);
|
|
161
212
|
return;
|
|
162
213
|
}
|
|
163
214
|
if (Array.isArray(cart)) {
|
|
164
215
|
instance.tracker.cookies.cart.set(cart);
|
|
165
216
|
}
|
|
166
|
-
profileCount[tag] = profileCount[tag] + 1 || 1;
|
|
167
217
|
const globals = deepmerge.all([
|
|
168
218
|
instance.config.client?.globals || {},
|
|
169
219
|
instance.config.config?.globals || {},
|
|
170
220
|
controllerGlobals,
|
|
171
221
|
]);
|
|
172
|
-
const
|
|
173
|
-
id: `recommend_${tag}_${profileCount[tag] - 1}`,
|
|
222
|
+
const controllerConfigBase = {
|
|
174
223
|
tag,
|
|
175
224
|
batched: batched ?? instance.config.config?.batched ?? true,
|
|
176
225
|
realtime: Boolean(context.options?.realtime ?? context.profile?.options?.realtime ?? instance.config.config?.realtime),
|
|
@@ -179,78 +228,77 @@ async function readyTheController(instance, services, injectedElem, context, pro
|
|
|
179
228
|
plugins: instance.config.config.plugins,
|
|
180
229
|
branch: instance.config.config?.branch || 'production',
|
|
181
230
|
limit: instance.config.config?.limit,
|
|
231
|
+
beacon: instance.config.config?.beacon || { enabled: true },
|
|
182
232
|
settings: {
|
|
183
233
|
variants: instance.config.config?.variants,
|
|
184
234
|
},
|
|
185
235
|
globals,
|
|
186
236
|
};
|
|
187
237
|
if (profile?.branch) {
|
|
188
|
-
|
|
238
|
+
controllerConfigBase.branch = profile?.branch;
|
|
189
239
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
globals: controllerConfig.globals,
|
|
205
|
-
tag: controllerConfig.tag,
|
|
206
|
-
realtime: controllerConfig.realtime,
|
|
207
|
-
}));
|
|
208
|
-
})[0];
|
|
209
|
-
if (!controller) {
|
|
210
|
-
// no existing controller found of same configuration - creating a new controller
|
|
211
|
-
const createRecommendationController = (await import('../create/createRecommendationController')).default;
|
|
212
|
-
controller = createRecommendationController({
|
|
213
|
-
url: instance.config.url,
|
|
214
|
-
controller: controllerConfig,
|
|
215
|
-
context,
|
|
216
|
-
mode: instance.config.mode,
|
|
217
|
-
}, { client: instance.client, tracker: instance.tracker });
|
|
218
|
-
instance.uses.forEach((attachements) => controller.use(attachements));
|
|
219
|
-
instance.plugins.forEach((plugin) => controller.plugin(plugin.func, ...plugin.args));
|
|
220
|
-
instance.middleware.forEach((middleware) => controller.on(middleware.event, ...middleware.func));
|
|
240
|
+
profileCount[tag] = profileCount[tag] + 1 || 1;
|
|
241
|
+
const controllerConfig = {
|
|
242
|
+
id: `recommend_${tag}_${profileCount[tag] - 1}`,
|
|
243
|
+
...controllerConfigBase,
|
|
244
|
+
};
|
|
245
|
+
const controller = createRecommendationController({
|
|
246
|
+
url: instance.config.url,
|
|
247
|
+
controller: controllerConfig,
|
|
248
|
+
context,
|
|
249
|
+
mode: instance.config.mode,
|
|
250
|
+
}, { client: instance.client, tracker: instance.tracker });
|
|
251
|
+
// mark element with controller id so cleanupStaleControllers knows it's active
|
|
252
|
+
if (targetElem) {
|
|
253
|
+
targetElem.setAttribute('ss-controller-id', controller.id);
|
|
221
254
|
}
|
|
255
|
+
instance.uses.forEach((attachements) => controller.use(attachements));
|
|
256
|
+
instance.plugins.forEach((plugin) => controller.plugin(plugin.func, ...plugin.args));
|
|
257
|
+
instance.middleware.forEach((middleware) => controller.on(middleware.event, ...middleware.func));
|
|
258
|
+
// add controller to instantiator and global namespace
|
|
259
|
+
instance.controller[controller.config.id] = controller;
|
|
260
|
+
window.athos.controller = window.athos.controller || {};
|
|
261
|
+
window.athos.controller[controller.config.id] = controller;
|
|
262
|
+
// register targeter on the controller for element tracking
|
|
263
|
+
controller.addTargeter(targeter);
|
|
222
264
|
// run a search on the controller if it is not currently
|
|
223
265
|
if (!controller.store.loading) {
|
|
224
266
|
await controller.search();
|
|
225
267
|
}
|
|
226
|
-
controller.addTargeter(instance.targeter);
|
|
227
|
-
instance.controller[controller.config.id] = controller;
|
|
228
|
-
window.athos.controller = window.athos.controller || {};
|
|
229
|
-
window.athos.controller[controller.config.id] = controller;
|
|
230
268
|
const profileVars = controller.store.profile.display?.templateParameters;
|
|
231
|
-
const component = controller.store.profile.display?.template?.component;
|
|
232
269
|
if (controller.store.error) {
|
|
233
270
|
//something went wrong
|
|
234
271
|
//err was already logged - nothing to do.
|
|
235
272
|
return;
|
|
236
273
|
}
|
|
237
274
|
if (!controller.store.profile.display.template) {
|
|
238
|
-
instance.logger.error(`profile '${tag}' found on the following element is missing a template!\n${
|
|
275
|
+
instance.logger.error(`profile '${tag}' found on the following element is missing a template!\n${scriptElem?.outerHTML}`);
|
|
239
276
|
return;
|
|
240
277
|
}
|
|
241
278
|
if (!profileVars) {
|
|
242
|
-
instance.logger.error(`profile '${tag}' found on the following element is missing templateParameters!\n${
|
|
279
|
+
instance.logger.error(`profile '${tag}' found on the following element is missing templateParameters!\n${scriptElem?.outerHTML}`);
|
|
243
280
|
return;
|
|
244
281
|
}
|
|
282
|
+
if (targetElem) {
|
|
283
|
+
await renderController(instance, services, controller, targetElem, scriptElem, target);
|
|
284
|
+
}
|
|
285
|
+
return controller;
|
|
286
|
+
}
|
|
287
|
+
async function renderController(instance, services, controller, targetElem, scriptElem, target) {
|
|
288
|
+
// update the element with the controller id
|
|
289
|
+
if (targetElem) {
|
|
290
|
+
targetElem.setAttribute('ss-controller-id', controller.id);
|
|
291
|
+
}
|
|
292
|
+
const tag = controller.config.tag;
|
|
293
|
+
const component = controller.store.profile.display?.template?.component;
|
|
245
294
|
if (!component) {
|
|
246
|
-
instance.logger.error(`profile '${tag}' found on the following element is missing a component!\n${
|
|
295
|
+
instance.logger.error(`profile '${tag}' found on the following element is missing a component!\n${scriptElem?.outerHTML}`);
|
|
247
296
|
return;
|
|
248
297
|
}
|
|
249
298
|
let props = {};
|
|
250
299
|
let RecommendationsComponent = undefined;
|
|
251
300
|
props.className = `ss__recommendation-${component.toLowerCase()}`;
|
|
252
|
-
|
|
253
|
-
instance.config.components[component]?.onTarget?.(target, elem, injectedElem, controller);
|
|
301
|
+
instance.config.components[component]?.onTarget?.(target, scriptElem, targetElem, controller);
|
|
254
302
|
if (instance.config.components[component] && typeof instance.config.components[component] == 'function') {
|
|
255
303
|
RecommendationsComponent = await instance.config.components[component]();
|
|
256
304
|
}
|
|
@@ -263,13 +311,11 @@ async function readyTheController(instance, services, injectedElem, context, pro
|
|
|
263
311
|
RecommendationsComponent = importResolutions[0];
|
|
264
312
|
}
|
|
265
313
|
if (!RecommendationsComponent) {
|
|
266
|
-
instance.logger.error(`profile '${tag}' found on the following element is expecting component mapping for '${component}' - verify instantiator config.\n${
|
|
314
|
+
instance.logger.error(`profile '${tag}' found on the following element is expecting component mapping for '${component}' - verify instantiator config.\n${scriptElem?.outerHTML}`);
|
|
267
315
|
return;
|
|
268
316
|
}
|
|
269
317
|
setTimeout(() => {
|
|
270
|
-
|
|
271
|
-
render(_jsx(RecommendationsComponent, { controller: controller, snap: services?.snap, ...props }), injectedElem);
|
|
272
|
-
}
|
|
318
|
+
render(_jsx(RecommendationsComponent, { controller: controller, snap: services?.snap, ...props }), targetElem);
|
|
273
319
|
});
|
|
274
320
|
}
|
|
275
321
|
function getArrayFunc(arrayOrFunc) {
|
package/dist/esm/src/Snap.d.ts
CHANGED
|
@@ -5,11 +5,11 @@ import { AppMode } from '@athoscommerce/snap-toolbox';
|
|
|
5
5
|
import { ControllerTypes } from '@athoscommerce/snap-controller';
|
|
6
6
|
import { EventManager } from '@athoscommerce/snap-event-manager';
|
|
7
7
|
import type { ClientConfig, ClientGlobals } from '@athoscommerce/snap-client';
|
|
8
|
-
import type { Controllers, AbstractController, SearchControllerConfig, AutocompleteControllerConfig, FinderControllerConfig, RecommendationControllerConfig, ControllerConfigs, ContextVariables } from '@athoscommerce/snap-controller';
|
|
8
|
+
import type { Controllers, AbstractController, SearchControllerConfig, ChatControllerConfig, AutocompleteControllerConfig, FinderControllerConfig, RecommendationControllerConfig, ControllerConfigs, ContextVariables } from '@athoscommerce/snap-controller';
|
|
9
9
|
import type { TrackerConfig, TrackerGlobals } from '@athoscommerce/snap-tracker';
|
|
10
10
|
import type { Target, OnTarget } from '@athoscommerce/snap-toolbox';
|
|
11
11
|
import type { UrlTranslatorConfig } from '@athoscommerce/snap-url-manager';
|
|
12
|
-
import { RecommendationInstantiator, RecommendationInstantiatorConfig } from './Instantiators/RecommendationInstantiator';
|
|
12
|
+
import type { RecommendationInstantiator, RecommendationInstantiatorConfig } from './Instantiators/RecommendationInstantiator';
|
|
13
13
|
import type { SnapControllerServices, InitialUrlConfig, SnapFeatures } from './types';
|
|
14
14
|
import type { TemplatesStore } from './Templates/Stores/TemplateStore';
|
|
15
15
|
export declare const BRANCH_COOKIE = "athosBranch";
|
|
@@ -55,6 +55,7 @@ export type SnapConfig = {
|
|
|
55
55
|
};
|
|
56
56
|
controllers?: {
|
|
57
57
|
search?: SnapConfigControllerDefinition<SearchControllerConfig>[];
|
|
58
|
+
chat?: SnapConfigControllerDefinition<ChatControllerConfig>[];
|
|
58
59
|
autocomplete?: SnapConfigControllerDefinition<AutocompleteControllerConfig>[];
|
|
59
60
|
finder?: SnapConfigControllerDefinition<FinderControllerConfig>[];
|
|
60
61
|
recommendation?: SnapConfigControllerDefinition<RecommendationControllerConfig>[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Snap.d.ts","sourceRoot":"","sources":["../../../src/Snap.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAgE,MAAM,6BAA6B,CAAC;AACpH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAIjE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,KAAK,EACX,WAAW,EACX,kBAAkB,EAElB,sBAAsB,EACtB,4BAA4B,EAC5B,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"Snap.d.ts","sourceRoot":"","sources":["../../../src/Snap.tsx"],"names":[],"mappings":"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"}
|
package/dist/esm/src/Snap.js
CHANGED
|
@@ -95,6 +95,9 @@ export class Snap {
|
|
|
95
95
|
case ControllerTypes.recommendation:
|
|
96
96
|
importPromise = import('./create/createRecommendationController');
|
|
97
97
|
break;
|
|
98
|
+
case ControllerTypes.chat:
|
|
99
|
+
importPromise = import('./create/createChatController');
|
|
100
|
+
break;
|
|
98
101
|
case ControllerTypes.search:
|
|
99
102
|
default:
|
|
100
103
|
importPromise = import('./create/createSearchController');
|
|
@@ -141,12 +144,14 @@ export class Snap {
|
|
|
141
144
|
let elem = null;
|
|
142
145
|
elem = event && event.target;
|
|
143
146
|
while (Object.keys(attributes).length == 0 && elem !== null && levels <= MAX_PARENT_LEVELS) {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
147
|
+
if (elem.attributes) {
|
|
148
|
+
Object.values(elem.attributes).forEach((attr) => {
|
|
149
|
+
const attrName = attr.nodeName;
|
|
150
|
+
if (attributeList.indexOf(attrName) != -1) {
|
|
151
|
+
attributes[attrName] = elem && elem.getAttribute(attrName);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
150
155
|
elem = elem.parentElement;
|
|
151
156
|
levels++;
|
|
152
157
|
}
|
|
@@ -536,6 +541,75 @@ export class Snap {
|
|
|
536
541
|
});
|
|
537
542
|
break;
|
|
538
543
|
}
|
|
544
|
+
case 'chat': {
|
|
545
|
+
this.config.controllers[type].forEach((controller, index) => {
|
|
546
|
+
if (typeof this._controllerPromises[controller.config.id] != 'undefined') {
|
|
547
|
+
this.logger.error(`Controller with id '${controller.config.id}' is already defined`);
|
|
548
|
+
return;
|
|
549
|
+
}
|
|
550
|
+
this._controllerPromises[controller.config.id] = new Promise(async (resolve) => {
|
|
551
|
+
try {
|
|
552
|
+
const targetFunction = async (target, elem, originalElem) => {
|
|
553
|
+
const onTarget = target.onTarget;
|
|
554
|
+
onTarget && (await onTarget(target, elem, originalElem));
|
|
555
|
+
try {
|
|
556
|
+
const importPromises = [];
|
|
557
|
+
// dynamically import the component
|
|
558
|
+
importPromises.push(target.component());
|
|
559
|
+
const importResolutions = await Promise.all(importPromises);
|
|
560
|
+
const Component = importResolutions[0];
|
|
561
|
+
setTimeout(() => {
|
|
562
|
+
render(_jsx(Component, { controller: this.controllers[controller.config.id], snap: this, ...target.props }), elem);
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
catch (err) {
|
|
566
|
+
this.logger.error(err);
|
|
567
|
+
this.logger.error(COMPONENT_ERROR, target);
|
|
568
|
+
}
|
|
569
|
+
};
|
|
570
|
+
if (!controller?.targeters || controller?.targeters.length === 0) {
|
|
571
|
+
await this._createController(ControllerTypes.chat, controller.config, controller.services, controller.url, controller.context, (cntrlr) => {
|
|
572
|
+
if (cntrlr)
|
|
573
|
+
resolve(cntrlr);
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
controller?.targeters?.forEach((target, target_index) => {
|
|
577
|
+
if (!target.selector) {
|
|
578
|
+
throw new Error(`Targets at index ${target_index} missing selector value (string).`);
|
|
579
|
+
}
|
|
580
|
+
if (!target.component) {
|
|
581
|
+
throw new Error(`Targets at index ${target_index} missing component value (Component).`);
|
|
582
|
+
}
|
|
583
|
+
// Chat mounts at the document level — if the consumer aimed at <body>
|
|
584
|
+
// directly, give DomTargeter a child to render into instead of stomping on body.
|
|
585
|
+
if (target.selector === 'body' && !target.inject) {
|
|
586
|
+
target = {
|
|
587
|
+
...target,
|
|
588
|
+
inject: {
|
|
589
|
+
action: 'append',
|
|
590
|
+
element: () => {
|
|
591
|
+
return document.createElement('div');
|
|
592
|
+
},
|
|
593
|
+
},
|
|
594
|
+
};
|
|
595
|
+
}
|
|
596
|
+
const targeter = new DomTargeter([{ ...target }], async (target, elem, originalElem) => {
|
|
597
|
+
const cntrlr = await this._createController(ControllerTypes.chat, controller.config, controller.services, controller.url, controller.context, (cntrlr) => {
|
|
598
|
+
if (cntrlr)
|
|
599
|
+
resolve(cntrlr);
|
|
600
|
+
});
|
|
601
|
+
targetFunction({ controller: cntrlr, ...target }, elem, originalElem);
|
|
602
|
+
cntrlr.addTargeter(targeter);
|
|
603
|
+
});
|
|
604
|
+
});
|
|
605
|
+
}
|
|
606
|
+
catch (err) {
|
|
607
|
+
this.logger.error(`Failed to instantiate ${type} controller at index ${index}.`, err);
|
|
608
|
+
}
|
|
609
|
+
});
|
|
610
|
+
});
|
|
611
|
+
break;
|
|
612
|
+
}
|
|
539
613
|
case 'autocomplete': {
|
|
540
614
|
this.config.controllers[type].forEach((controller, index) => {
|
|
541
615
|
if (typeof this._controllerPromises[controller.config.id] != 'undefined') {
|
|
@@ -29,10 +29,11 @@ export declare function mapBreakpoints<ControllerConfigSettings>(breakpointsKeys
|
|
|
29
29
|
[key: string]: ControllerConfigSettings | Record<string, never>;
|
|
30
30
|
};
|
|
31
31
|
export declare const createSearchTargeters: (templateConfig: SnapTemplatesConfig, templatesStore: TemplatesStore) => ExtendedTarget[];
|
|
32
|
+
export declare const createChatTargeters: (templateConfig: SnapTemplatesConfig, templatesStore: TemplatesStore) => ExtendedTarget[];
|
|
32
33
|
export declare function createAutocompleteTargeters(templateConfig: SnapTemplatesConfig, templatesStore: TemplatesStore): ExtendedTarget[];
|
|
33
34
|
export declare function createRecommendationComponentMapping(templateConfig: SnapTemplatesConfig | SnapTemplatesConfigUnlocked, templatesStore: TemplatesStore): {
|
|
34
35
|
[name: string]: RecommendationComponentObject;
|
|
35
36
|
};
|
|
36
37
|
export declare function createSnapConfig(templateConfig: SnapTemplatesConfig | SnapTemplatesConfigUnlocked, templatesStore: TemplatesStore): SnapConfig;
|
|
37
|
-
export declare function createPlugins(templateConfig: SnapTemplatesConfig | SnapTemplatesConfigUnlocked, templatesStore: TemplatesStore, controllerType?: 'autocomplete' | 'search' | 'recommendation'): PluginGrouping[];
|
|
38
|
+
export declare function createPlugins(templateConfig: SnapTemplatesConfig | SnapTemplatesConfigUnlocked, templatesStore: TemplatesStore, controllerType?: 'autocomplete' | 'search' | 'recommendation' | 'chat'): PluginGrouping[];
|
|
38
39
|
//# sourceMappingURL=SnapTemplates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnapTemplates.d.ts","sourceRoot":"","sources":["../../../../src/Templates/SnapTemplates.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAI/B,OAAO,EAAkB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxE,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAA0C,cAAc,EAAoB,MAAM,gCAAgC,CAAC;AAC/H,OAAO,KAAK,EAAE,6BAA6B,EAAoC,MAAM,6CAA6C,CAAC;AACnI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SnapTemplates.d.ts","sourceRoot":"","sources":["../../../../src/Templates/SnapTemplates.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAI/B,OAAO,EAAkB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxE,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAA0C,cAAc,EAAoB,MAAM,gCAAgC,CAAC;AAC/H,OAAO,KAAK,EAAE,6BAA6B,EAAoC,MAAM,6CAA6C,CAAC;AACnI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAOX,0BAA0B,EAC1B,4BAA4B,EAE5B,MAAM,wBAAwB,CAAC;AAoChC,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AACpD,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAC5D,MAAM,MAAM,2BAA2B,GAAG,4BAA4B,GAAG;IACxE,QAAQ,EAAE,IAAI,CAAC;IACf,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,0BAA0B,GAAG;IACpE,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAwBF,eAAO,MAAM,gBAAgB,EAAE,YAAiB,CAAC;AAEjD,eAAO,MAAM,wCAAwC,EAAE,+BAItD,CAAC;AAEF,qBAAa,aAAc,SAAQ,IAAI;IACtC,SAAS,EAAE,cAAc,CAAC;gBACd,MAAM,EAAE,mBAAmB,GAAG,2BAA2B;CAoGrE;AAED,wBAAgB,cAAc,CAAC,wBAAwB,EACtD,eAAe,EAAE,MAAM,EAAE,EACzB,kBAAkB,EAAE,wBAAwB,EAAE,GAC5C;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,CAKrE;AAED,eAAO,MAAM,qBAAqB,mBAAoB,mBAAmB,kBAAkB,cAAc,KAAG,cAAc,EAoCzH,CAAC;AAEF,eAAO,MAAM,mBAAmB,mBAAoB,mBAAmB,kBAAkB,cAAc,KAAG,cAAc,EA2CvH,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,GAAG,cAAc,EAAE,CAqCjI;AAED,wBAAgB,oCAAoC,CACnD,cAAc,EAAE,mBAAmB,GAAG,2BAA2B,EACjE,cAAc,EAAE,cAAc,GAC5B;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,6BAA6B,CAAA;CAAE,CAiDnD;AAED,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,mBAAmB,GAAG,2BAA2B,EAAE,cAAc,EAAE,cAAc,GAAG,UAAU,CA0J9I;AAED,wBAAgB,aAAa,CAC5B,cAAc,EAAE,mBAAmB,GAAG,2BAA2B,EACjE,cAAc,EAAE,cAAc,EAC9B,cAAc,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,gBAAgB,GAAG,MAAM,GACpE,cAAc,EAAE,CAmFlB"}
|