@athoscommerce/snap-preact 1.10.1-beta.150 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.js +11 -56
- package/dist/cjs/components/src/components/Atoms/Icon/paths.js +0 -13
- package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +5 -1
- package/dist/cjs/components/src/components/Molecules/Grid/Grid.js +9 -13
- package/dist/cjs/components/src/components/Molecules/List/List.js +9 -13
- package/dist/cjs/components/src/components/Molecules/RadioList/RadioList.js +9 -13
- package/dist/cjs/components/src/components/Molecules/Result/Result.js +6 -53
- package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.js +2 -28
- package/dist/cjs/components/src/components/Molecules/Select/Select.js +9 -13
- package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.js +28 -24
- package/dist/cjs/components/src/components/Molecules/Slideshow/Slideshow.js +1 -5
- package/dist/cjs/components/src/components/Molecules/TabSelection/TabSelection.js +108 -0
- package/dist/cjs/components/src/components/{Templates/ChatButton → Molecules/TabSelection}/index.js +1 -1
- package/dist/cjs/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.js +1 -1
- package/dist/cjs/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +17 -2
- package/dist/cjs/components/src/components/Organisms/Facet/Facet.js +5 -1
- package/dist/cjs/components/src/components/Organisms/Layout/Layout.js +15 -1
- package/dist/cjs/components/src/components/Organisms/Results/Results.js +4 -4
- package/dist/cjs/components/src/components/Organisms/Toolbar/Toolbar.js +2 -1
- package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +10 -8
- package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +10 -8
- package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +10 -8
- package/dist/cjs/components/src/components/Templates/Search/Search.js +10 -3
- package/dist/cjs/components/src/hooks/useAcRenderedInput.js +14 -3
- package/dist/cjs/components/src/hooks/useCreateController.js +24 -3
- package/dist/cjs/components/src/index.js +2 -17
- package/dist/cjs/components/src/providers/themeComponents.js +1 -20
- package/dist/cjs/components/src/setupTests.js +0 -14
- package/dist/cjs/components/src/themes/base/components/templates/index.js +0 -10
- package/dist/cjs/components/src/themes/bocachica/components/templates/index.js +0 -10
- package/dist/cjs/components/src/themes/pike/components/templates/index.js +0 -10
- package/dist/cjs/components/src/themes/snapnco/components/templates/index.js +0 -10
- package/dist/cjs/components/src/themes/snappy/components/templates/index.js +0 -10
- package/dist/cjs/components/src/utilities/Colour/Colour.js +0 -41
- package/dist/cjs/components/src/utilities/index.js +1 -0
- package/dist/cjs/components/src/utilities/selectionKey.js +12 -0
- package/dist/cjs/components/src/utilities/snapify.js +0 -27
- package/dist/cjs/src/Snap.js +0 -70
- package/dist/cjs/src/Templates/SnapTemplates.js +147 -86
- package/dist/cjs/src/Templates/Stores/LibraryStore.js +3 -51
- package/dist/cjs/src/Templates/Stores/TabManagerStore.js +151 -0
- package/dist/cjs/src/Templates/Stores/TemplateStore.js +23 -2
- package/dist/cjs/src/Templates/Stores/library/languages/es.js +20 -487
- package/dist/cjs/src/Templates/Stores/library/languages/fr.js +20 -487
- package/dist/cjs/src/create/createAutocompleteController.js +6 -1
- package/dist/cjs/src/create/index.js +1 -3
- package/dist/cjs/src/setupEvents.js +0 -44
- package/dist/cjs/src/utils/index.js +1 -3
- package/dist/esm/components/src/components/Atoms/Button/Button.d.ts +1 -3
- package/dist/esm/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts +1 -6
- package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.js +12 -57
- package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts +0 -13
- package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/Icon/paths.js +0 -13
- package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +5 -1
- package/dist/esm/components/src/components/Molecules/Grid/Grid.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Grid/Grid.js +10 -14
- package/dist/esm/components/src/components/Molecules/List/List.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/List/List.js +10 -14
- package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts +2 -2
- package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/RadioList/RadioList.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/RadioList/RadioList.js +10 -14
- package/dist/esm/components/src/components/Molecules/Result/Result.d.ts +3 -7
- package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Result/Result.js +6 -53
- package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +0 -3
- package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +2 -28
- package/dist/esm/components/src/components/Molecules/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Select/Select.js +10 -14
- package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Slideout/Slideout.js +29 -25
- package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.js +1 -5
- package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.d.ts +32 -0
- package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.js +102 -0
- package/dist/esm/components/src/components/Molecules/TabSelection/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/TabSelection/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/TabSelection/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.js +1 -1
- package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts +3 -1
- package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +17 -2
- package/dist/esm/components/src/components/Organisms/Facet/Facet.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Facet/Facet.js +5 -1
- package/dist/esm/components/src/components/Organisms/Layout/Layout.d.ts +3 -1
- package/dist/esm/components/src/components/Organisms/Layout/Layout.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Layout/Layout.js +15 -1
- package/dist/esm/components/src/components/Organisms/Results/Results.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Results/Results.js +4 -4
- package/dist/esm/components/src/components/Organisms/Toolbar/Toolbar.d.ts +3 -1
- package/dist/esm/components/src/components/Organisms/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Toolbar/Toolbar.js +2 -1
- package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts +2 -0
- package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +10 -8
- package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts +2 -0
- package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +10 -8
- package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts +2 -0
- package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +10 -8
- package/dist/esm/components/src/components/Templates/Search/Search.d.ts +2 -0
- package/dist/esm/components/src/components/Templates/Search/Search.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/Search/Search.js +10 -3
- package/dist/esm/components/src/hooks/useAcRenderedInput.d.ts +2 -2
- package/dist/esm/components/src/hooks/useAcRenderedInput.d.ts.map +1 -1
- package/dist/esm/components/src/hooks/useAcRenderedInput.js +15 -4
- package/dist/esm/components/src/hooks/useCreateController.d.ts.map +1 -1
- package/dist/esm/components/src/hooks/useCreateController.js +24 -3
- package/dist/esm/components/src/index.d.ts +1 -14
- package/dist/esm/components/src/index.d.ts.map +1 -1
- package/dist/esm/components/src/index.js +1 -14
- package/dist/esm/components/src/providers/langComponents.d.ts +2 -20
- package/dist/esm/components/src/providers/langComponents.d.ts.map +1 -1
- package/dist/esm/components/src/providers/themeComponents.d.ts +41 -209
- package/dist/esm/components/src/providers/themeComponents.d.ts.map +1 -1
- package/dist/esm/components/src/providers/themeComponents.js +1 -20
- 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/setupTests.js +0 -14
- 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 +0 -10
- 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 +0 -10
- 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 +0 -10
- 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 +0 -10
- 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 +0 -10
- package/dist/esm/components/src/utilities/Colour/Colour.d.ts +0 -15
- package/dist/esm/components/src/utilities/Colour/Colour.d.ts.map +1 -1
- package/dist/esm/components/src/utilities/Colour/Colour.js +0 -41
- package/dist/esm/components/src/utilities/index.d.ts +1 -0
- package/dist/esm/components/src/utilities/index.d.ts.map +1 -1
- package/dist/esm/components/src/utilities/index.js +1 -0
- package/dist/esm/components/src/utilities/selectionKey.d.ts +3 -0
- package/dist/esm/components/src/utilities/selectionKey.d.ts.map +1 -0
- package/dist/esm/components/src/utilities/selectionKey.js +9 -0
- package/dist/esm/components/src/utilities/snapify.d.ts +2 -3
- package/dist/esm/components/src/utilities/snapify.d.ts.map +1 -1
- package/dist/esm/components/src/utilities/snapify.js +2 -29
- package/dist/esm/src/Snap.d.ts +1 -2
- package/dist/esm/src/Snap.d.ts.map +1 -1
- package/dist/esm/src/Snap.js +1 -71
- package/dist/esm/src/Templates/SnapTemplates.d.ts +7 -5
- package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
- package/dist/esm/src/Templates/SnapTemplates.js +146 -85
- package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +2 -43
- package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/LibraryStore.js +3 -51
- package/dist/esm/src/Templates/Stores/TabManagerStore.d.ts +29 -0
- package/dist/esm/src/Templates/Stores/TabManagerStore.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/TabManagerStore.js +146 -0
- package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +28 -22
- package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TemplateStore.js +23 -2
- package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/library/languages/es.js +20 -487
- package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/library/languages/fr.js +20 -487
- package/dist/esm/src/create/createAutocompleteController.js +6 -1
- package/dist/esm/src/create/index.d.ts +0 -1
- package/dist/esm/src/create/index.d.ts.map +1 -1
- package/dist/esm/src/create/index.js +0 -1
- package/dist/esm/src/setupEvents.d.ts +0 -13
- package/dist/esm/src/setupEvents.d.ts.map +1 -1
- package/dist/esm/src/setupEvents.js +0 -44
- package/dist/esm/src/types.d.ts +9 -14
- package/dist/esm/src/types.d.ts.map +1 -1
- package/dist/esm/src/utils/index.d.ts +0 -1
- package/dist/esm/src/utils/index.d.ts.map +1 -1
- package/dist/esm/src/utils/index.js +0 -1
- package/package.json +12 -14
- package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +0 -99
- package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.js +0 -17
- package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +0 -221
- package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.js +0 -17
- package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +0 -209
- package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.js +0 -17
- package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +0 -258
- package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.js +0 -17
- package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +0 -282
- package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.js +0 -17
- package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +0 -173
- package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.js +0 -17
- package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +0 -577
- package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.js +0 -17
- package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.js +0 -252
- package/dist/cjs/components/src/components/Molecules/ChatResult/index.js +0 -17
- package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +0 -113
- package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.js +0 -17
- package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +0 -107
- package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.js +0 -17
- package/dist/cjs/components/src/components/Organisms/Chat/Chat.js +0 -621
- package/dist/cjs/components/src/components/Organisms/Chat/Chat.lang.js +0 -105
- package/dist/cjs/components/src/components/Organisms/Chat/components/ChatAttachments.js +0 -104
- package/dist/cjs/components/src/components/Organisms/Chat/components/ChatComparisonsTray.js +0 -161
- package/dist/cjs/components/src/components/Organisms/Chat/components/ChatComposer.js +0 -166
- package/dist/cjs/components/src/components/Organisms/Chat/components/ChatFacetsBar.js +0 -369
- package/dist/cjs/components/src/components/Organisms/Chat/components/ChatHistory.js +0 -130
- package/dist/cjs/components/src/components/Organisms/Chat/components/ChatMessages.js +0 -218
- package/dist/cjs/components/src/components/Organisms/Chat/components/ChatSessionFeedback.js +0 -123
- package/dist/cjs/components/src/components/Organisms/Chat/components/ChatSideChat.js +0 -173
- package/dist/cjs/components/src/components/Organisms/Chat/components/ChatTopicDrift.js +0 -149
- package/dist/cjs/components/src/components/Organisms/Chat/components/chatAccentTheme.js +0 -60
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +0 -66
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.js +0 -96
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +0 -113
- package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatScrollLock.js +0 -135
- package/dist/cjs/components/src/components/Organisms/Chat/index.js +0 -18
- package/dist/cjs/components/src/components/Organisms/ChatButton/ChatButton.js +0 -94
- package/dist/cjs/components/src/components/Organisms/ChatButton/ChatButton.lang.js +0 -11
- package/dist/cjs/components/src/components/Organisms/ChatButton/index.js +0 -18
- package/dist/cjs/components/src/components/Templates/Chat/Chat.js +0 -47
- package/dist/cjs/components/src/components/Templates/Chat/index.js +0 -17
- package/dist/cjs/components/src/components/Templates/ChatButton/ChatButton.js +0 -47
- package/dist/cjs/components/src/themes/base/components/templates/chat.js +0 -6
- package/dist/cjs/components/src/themes/base/components/templates/chatButton.js +0 -6
- package/dist/cjs/components/src/themes/bocachica/components/templates/chat.js +0 -6
- package/dist/cjs/components/src/themes/bocachica/components/templates/chatButton.js +0 -6
- package/dist/cjs/components/src/themes/pike/components/templates/chat.js +0 -6
- package/dist/cjs/components/src/themes/pike/components/templates/chatButton.js +0 -6
- package/dist/cjs/components/src/themes/snapnco/components/templates/chat.js +0 -6
- package/dist/cjs/components/src/themes/snapnco/components/templates/chatButton.js +0 -6
- package/dist/cjs/components/src/themes/snappy/components/templates/chat.js +0 -6
- package/dist/cjs/components/src/themes/snappy/components/templates/chatButton.js +0 -6
- package/dist/cjs/components/src/themes/themeComponents/chat.js +0 -14
- package/dist/cjs/components/src/themes/themeComponents/chatButton.js +0 -9
- package/dist/cjs/src/Templates/Stores/library/components/Chat.js +0 -5
- package/dist/cjs/src/Templates/Stores/library/components/ChatButton.js +0 -5
- package/dist/cjs/src/create/createChatController.js +0 -30
- package/dist/cjs/src/utils/applyChatTargetInject.js +0 -25
- package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +0 -17
- package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +0 -1
- package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +0 -92
- package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +0 -2
- package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.js +0 -1
- package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +0 -30
- package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +0 -215
- package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +0 -2
- package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.js +0 -1
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +0 -19
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +0 -203
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +0 -2
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.js +0 -1
- package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +0 -36
- package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +0 -252
- package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts +0 -2
- package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatMessageText/index.js +0 -1
- package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +0 -38
- package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +0 -276
- package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts +0 -2
- package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.js +0 -1
- package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +0 -19
- package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +0 -167
- package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +0 -2
- package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.js +0 -1
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +0 -38
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +0 -571
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +0 -2
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.js +0 -1
- package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts +0 -35
- package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.js +0 -246
- package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts +0 -2
- package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatResult/index.js +0 -1
- package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +0 -24
- package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +0 -107
- package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +0 -2
- package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.js +0 -1
- package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +0 -16
- package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +0 -101
- package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +0 -2
- package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.js +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +0 -41
- package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/Chat.js +0 -615
- package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.d.ts +0 -76
- package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.js +0 -100
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.d.ts +0 -26
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.js +0 -98
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.d.ts +0 -13
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.js +0 -155
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.d.ts +0 -19
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.js +0 -160
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.d.ts +0 -18
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.js +0 -363
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.d.ts +0 -11
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.js +0 -124
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.d.ts +0 -30
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.js +0 -212
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.d.ts +0 -13
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.js +0 -117
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.d.ts +0 -19
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.js +0 -167
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.d.ts +0 -14
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.js +0 -143
- package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.d.ts +0 -15
- package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.js +0 -56
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +0 -32
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +0 -62
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +0 -40
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.js +0 -92
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +0 -43
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +0 -109
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.d.ts +0 -26
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.js +0 -131
- package/dist/esm/components/src/components/Organisms/Chat/index.d.ts +0 -3
- package/dist/esm/components/src/components/Organisms/Chat/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/Chat/index.js +0 -2
- package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.d.ts +0 -18
- package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.js +0 -88
- package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.d.ts +0 -7
- package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.js +0 -8
- package/dist/esm/components/src/components/Organisms/ChatButton/index.d.ts +0 -3
- package/dist/esm/components/src/components/Organisms/ChatButton/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Organisms/ChatButton/index.js +0 -2
- package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts +0 -12
- package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts.map +0 -1
- package/dist/esm/components/src/components/Templates/Chat/Chat.js +0 -41
- package/dist/esm/components/src/components/Templates/Chat/index.d.ts +0 -2
- package/dist/esm/components/src/components/Templates/Chat/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Templates/Chat/index.js +0 -1
- package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.d.ts +0 -13
- package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.d.ts.map +0 -1
- package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.js +0 -41
- package/dist/esm/components/src/components/Templates/ChatButton/index.d.ts +0 -2
- package/dist/esm/components/src/components/Templates/ChatButton/index.d.ts.map +0 -1
- package/dist/esm/components/src/components/Templates/ChatButton/index.js +0 -1
- package/dist/esm/components/src/themes/base/components/templates/chat.d.ts +0 -4
- package/dist/esm/components/src/themes/base/components/templates/chat.d.ts.map +0 -1
- package/dist/esm/components/src/themes/base/components/templates/chat.js +0 -3
- package/dist/esm/components/src/themes/base/components/templates/chatButton.d.ts +0 -4
- package/dist/esm/components/src/themes/base/components/templates/chatButton.d.ts.map +0 -1
- package/dist/esm/components/src/themes/base/components/templates/chatButton.js +0 -3
- package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts +0 -4
- package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts.map +0 -1
- package/dist/esm/components/src/themes/bocachica/components/templates/chat.js +0 -3
- package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.d.ts +0 -4
- package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.d.ts.map +0 -1
- package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.js +0 -3
- package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts +0 -4
- package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts.map +0 -1
- package/dist/esm/components/src/themes/pike/components/templates/chat.js +0 -3
- package/dist/esm/components/src/themes/pike/components/templates/chatButton.d.ts +0 -4
- package/dist/esm/components/src/themes/pike/components/templates/chatButton.d.ts.map +0 -1
- package/dist/esm/components/src/themes/pike/components/templates/chatButton.js +0 -3
- package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts +0 -4
- package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts.map +0 -1
- package/dist/esm/components/src/themes/snapnco/components/templates/chat.js +0 -3
- package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.d.ts +0 -4
- package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.d.ts.map +0 -1
- package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.js +0 -3
- package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts +0 -4
- package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts.map +0 -1
- package/dist/esm/components/src/themes/snappy/components/templates/chat.js +0 -3
- package/dist/esm/components/src/themes/snappy/components/templates/chatButton.d.ts +0 -4
- package/dist/esm/components/src/themes/snappy/components/templates/chatButton.d.ts.map +0 -1
- package/dist/esm/components/src/themes/snappy/components/templates/chatButton.js +0 -3
- package/dist/esm/components/src/themes/themeComponents/chat.d.ts +0 -4
- package/dist/esm/components/src/themes/themeComponents/chat.d.ts.map +0 -1
- package/dist/esm/components/src/themes/themeComponents/chat.js +0 -11
- package/dist/esm/components/src/themes/themeComponents/chatButton.d.ts +0 -4
- package/dist/esm/components/src/themes/themeComponents/chatButton.d.ts.map +0 -1
- package/dist/esm/components/src/themes/themeComponents/chatButton.js +0 -6
- package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts +0 -2
- package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts.map +0 -1
- package/dist/esm/src/Templates/Stores/library/components/Chat.js +0 -1
- package/dist/esm/src/Templates/Stores/library/components/ChatButton.d.ts +0 -2
- package/dist/esm/src/Templates/Stores/library/components/ChatButton.d.ts.map +0 -1
- package/dist/esm/src/Templates/Stores/library/components/ChatButton.js +0 -1
- package/dist/esm/src/create/createChatController.d.ts +0 -5
- package/dist/esm/src/create/createChatController.d.ts.map +0 -1
- package/dist/esm/src/create/createChatController.js +0 -28
- package/dist/esm/src/utils/applyChatTargetInject.d.ts +0 -3
- package/dist/esm/src/utils/applyChatTargetInject.d.ts.map +0 -1
- package/dist/esm/src/utils/applyChatTargetInject.js +0 -22
|
@@ -3,12 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.createSearchTargeters = exports.SnapTemplates = exports.applyAutomaticThemeOverrides = exports.TAB_PREFIXED_PARAMS = exports.DEFAULT_AUTOCOMPLETE_CONTROLLER_SETTINGS = exports.DEFAULT_FEATURES = exports.TEMPLATE_EDITOR_UI_PARAM = exports.TEMPLATE_EDITOR_COOKIE = void 0;
|
|
7
7
|
exports.mapBreakpoints = mapBreakpoints;
|
|
8
8
|
exports.createAutocompleteTargeters = createAutocompleteTargeters;
|
|
9
9
|
exports.createRecommendationComponentMapping = createRecommendationComponentMapping;
|
|
10
10
|
exports.createSnapConfig = createSnapConfig;
|
|
11
11
|
exports.createPlugins = createPlugins;
|
|
12
|
+
exports.createTabPlugins = createTabPlugins;
|
|
12
13
|
const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
|
|
13
14
|
const preact_1 = require("preact");
|
|
14
15
|
const deepmerge_1 = __importDefault(require("deepmerge"));
|
|
@@ -16,6 +17,9 @@ const Snap_1 = require("../Snap");
|
|
|
16
17
|
const TemplateSelect_1 = require("../../components/src/components/Atoms/TemplateSelect");
|
|
17
18
|
const snap_toolbox_1 = require("@athoscommerce/snap-toolbox");
|
|
18
19
|
const TemplateStore_1 = require("./Stores/TemplateStore");
|
|
20
|
+
const TabManagerStore_1 = require("./Stores/TabManagerStore");
|
|
21
|
+
const snap_client_1 = require("@athoscommerce/snap-client");
|
|
22
|
+
const snap_tracker_1 = require("@athoscommerce/snap-tracker");
|
|
19
23
|
const shopify_1 = require("@athoscommerce/snap-platforms/shopify");
|
|
20
24
|
const utils_1 = require("../utils");
|
|
21
25
|
exports.TEMPLATE_EDITOR_COOKIE = 'athosEditor';
|
|
@@ -26,6 +30,8 @@ exports.DEFAULT_AUTOCOMPLETE_CONTROLLER_SETTINGS = {
|
|
|
26
30
|
limit: 5,
|
|
27
31
|
},
|
|
28
32
|
};
|
|
33
|
+
// tabs namespace their catalog specific url state - the query is shared so a single search spans every tab
|
|
34
|
+
exports.TAB_PREFIXED_PARAMS = ['filter', 'sort', 'pageSize', 'rq', 'page'];
|
|
29
35
|
const hasShopifyMarketsPluginConfig = (templateConfig) => {
|
|
30
36
|
const pluginConfigs = [
|
|
31
37
|
templateConfig.plugins?.shopify?.markets,
|
|
@@ -105,8 +111,8 @@ class SnapTemplates extends Snap_1.Snap {
|
|
|
105
111
|
// attach to the window object
|
|
106
112
|
window.athos = window.athos || {};
|
|
107
113
|
window.athos.editor = templateEditorStore;
|
|
108
|
-
const searchController = this.
|
|
109
|
-
const autocompleteController = this.
|
|
114
|
+
const searchController = this.getTemplateController('search');
|
|
115
|
+
const autocompleteController = this.getTemplateController('autocomplete');
|
|
110
116
|
if (searchController) {
|
|
111
117
|
templateEditorStore.registerController(searchController);
|
|
112
118
|
}
|
|
@@ -152,6 +158,16 @@ class SnapTemplates extends Snap_1.Snap {
|
|
|
152
158
|
}
|
|
153
159
|
});
|
|
154
160
|
}
|
|
161
|
+
// when tabs are configured there is no controller using the `search` / `autocomplete` id -
|
|
162
|
+
// the default tab controller is used instead
|
|
163
|
+
getTemplateController(type) {
|
|
164
|
+
const tabs = this.templates.config[type]?.tabs;
|
|
165
|
+
if (tabs?.length) {
|
|
166
|
+
const defaultTab = tabs.filter((tab) => tab.default)[0] || tabs[0];
|
|
167
|
+
return this.controllers[defaultTab.id];
|
|
168
|
+
}
|
|
169
|
+
return this.controllers[type];
|
|
170
|
+
}
|
|
155
171
|
}
|
|
156
172
|
exports.SnapTemplates = SnapTemplates;
|
|
157
173
|
function mapBreakpoints(breakpointsKeys, breakpointSettings) {
|
|
@@ -194,36 +210,6 @@ const createSearchTargeters = (templateConfig, templatesStore) => {
|
|
|
194
210
|
});
|
|
195
211
|
};
|
|
196
212
|
exports.createSearchTargeters = createSearchTargeters;
|
|
197
|
-
const createChatTargeters = (templateConfig, templatesStore) => {
|
|
198
|
-
// initial target configs
|
|
199
|
-
const targetConfigs = templateConfig.chat?.targets || [];
|
|
200
|
-
let mergedConfigs;
|
|
201
|
-
if (templatesStore.settings.editMode) {
|
|
202
|
-
const overrideConfigs = (templatesStore.storage.get('overrides.targets.chat') || []);
|
|
203
|
-
mergedConfigs = (0, deepmerge_1.default)(targetConfigs, overrideConfigs, { arrayMerge: utils_1.combineMerge });
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
mergedConfigs = targetConfigs;
|
|
207
|
-
}
|
|
208
|
-
return mergedConfigs.map((targetConfig) => {
|
|
209
|
-
const target = templatesStore.addTarget({ ...targetConfig, type: 'chat' });
|
|
210
|
-
const targeter = {
|
|
211
|
-
selector: targetConfig.selector,
|
|
212
|
-
// inline selectors (e.g. a nav slot) may render after DOMContentLoaded;
|
|
213
|
-
// re-injection at already-targeted elements is prevented by DomTargeter
|
|
214
|
-
autoRetarget: true,
|
|
215
|
-
component: async () => {
|
|
216
|
-
const componentImportPromises = [];
|
|
217
|
-
componentImportPromises.push(templatesStore.library.import.component.chat[targetConfig.component]());
|
|
218
|
-
await Promise.all(componentImportPromises);
|
|
219
|
-
return TemplateSelect_1.TemplateSelect;
|
|
220
|
-
},
|
|
221
|
-
props: { target, templatesStore },
|
|
222
|
-
};
|
|
223
|
-
return (0, utils_1.applyChatTargetInject)(targeter);
|
|
224
|
-
});
|
|
225
|
-
};
|
|
226
|
-
exports.createChatTargeters = createChatTargeters;
|
|
227
213
|
function createAutocompleteTargeters(templateConfig, templatesStore) {
|
|
228
214
|
// initial target configs
|
|
229
215
|
const targetConfigs = templateConfig.autocomplete?.targets || [];
|
|
@@ -307,10 +293,19 @@ function createRecommendationComponentMapping(templateConfig, templatesStore) {
|
|
|
307
293
|
return mapping;
|
|
308
294
|
}, {});
|
|
309
295
|
}
|
|
296
|
+
function createTabServices(snapConfig, siteId) {
|
|
297
|
+
const tabGlobals = {
|
|
298
|
+
...snapConfig.client?.globals,
|
|
299
|
+
siteId,
|
|
300
|
+
};
|
|
301
|
+
return {
|
|
302
|
+
client: new snap_client_1.Client(tabGlobals, snapConfig.client?.config),
|
|
303
|
+
tracker: new snap_tracker_1.Tracker(tabGlobals, snapConfig.tracker?.config),
|
|
304
|
+
};
|
|
305
|
+
}
|
|
310
306
|
function createSnapConfig(templateConfig, templatesStore) {
|
|
311
307
|
const initiatorPrefix = window?.athos?.managed ? `managed/` : '';
|
|
312
308
|
const snapConfig = {
|
|
313
|
-
mode: templateConfig.config?.mode,
|
|
314
309
|
features: templateConfig.features || exports.DEFAULT_FEATURES,
|
|
315
310
|
client: {
|
|
316
311
|
globals: {},
|
|
@@ -338,37 +333,63 @@ function createSnapConfig(templateConfig, templatesStore) {
|
|
|
338
333
|
}
|
|
339
334
|
/* SEARCH CONTROLLER */
|
|
340
335
|
if (templateConfig.search && snapConfig.controllers) {
|
|
341
|
-
const
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
336
|
+
const searchTabs = templateConfig.search.tabs || [];
|
|
337
|
+
const searchTargeters = (0, exports.createSearchTargeters)(templateConfig, templatesStore);
|
|
338
|
+
const searchSettings = templateConfig.search.settings || {};
|
|
339
|
+
const searchGlobals = templateConfig.search.globals || {};
|
|
340
|
+
snapConfig.controllers.search = [];
|
|
341
|
+
if (!searchTabs.length) {
|
|
342
|
+
snapConfig.controllers.search.push({
|
|
343
|
+
config: {
|
|
344
|
+
id: 'search',
|
|
345
|
+
plugins: createPlugins(templateConfig, templatesStore, 'search'),
|
|
346
|
+
globals: searchGlobals,
|
|
347
|
+
settings: searchSettings,
|
|
348
|
+
},
|
|
349
|
+
targeters: searchTargeters,
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
// when tabs are configured, the tab controllers do all of the searching - an additional
|
|
354
|
+
// non-tab controller would only produce a redundant API request, so the targeters are
|
|
355
|
+
// attached to the active tab controller instead. targeting kicks off a search before the
|
|
356
|
+
// TabManagerStore exists to gate redirects, so this must be the tab the shopper is viewing
|
|
357
|
+
const targetedTab = (0, TabManagerStore_1.getActiveTabConfig)(searchTabs) || searchTabs[0];
|
|
358
|
+
searchTabs.forEach((tab) => {
|
|
359
|
+
const tabParam = tab.param;
|
|
360
|
+
snapConfig.controllers.search.push({
|
|
361
|
+
url: {
|
|
362
|
+
settings: {
|
|
363
|
+
// the query is shared across tabs - only per-catalog state is namespaced
|
|
364
|
+
...(tabParam ? { corePrefix: tabParam, corePrefixParams: exports.TAB_PREFIXED_PARAMS } : {}),
|
|
365
|
+
},
|
|
366
|
+
parameters: {
|
|
367
|
+
custom: {
|
|
368
|
+
[TabManagerStore_1.TAB_ID_DEFAULT_PARAM]: { type: 'query' },
|
|
369
|
+
},
|
|
370
|
+
},
|
|
371
|
+
},
|
|
372
|
+
config: {
|
|
373
|
+
id: tab.id,
|
|
374
|
+
plugins: tab.plugins ? createTabPlugins(tab.plugins, templatesStore) : createPlugins(templateConfig, templatesStore, 'search'),
|
|
375
|
+
settings: {
|
|
376
|
+
...(0, deepmerge_1.default)(searchSettings, tab.settings || {}),
|
|
377
|
+
},
|
|
378
|
+
globals: (0, deepmerge_1.default)(searchGlobals, tab.globals || {}),
|
|
379
|
+
},
|
|
380
|
+
services: createTabServices(snapConfig, tab.siteId),
|
|
381
|
+
...(tab === targetedTab ? { targeters: searchTargeters } : {}),
|
|
382
|
+
});
|
|
383
|
+
});
|
|
384
|
+
}
|
|
357
385
|
}
|
|
358
386
|
/* AUTOCOMPLETE CONTROLLER */
|
|
359
387
|
if (templateConfig.autocomplete && snapConfig.controllers) {
|
|
360
388
|
const autocompleteControllerSettings = (0, deepmerge_1.default)(exports.DEFAULT_AUTOCOMPLETE_CONTROLLER_SETTINGS, templateConfig.autocomplete.settings || {});
|
|
361
|
-
const
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
selector: templateConfig.autocomplete.targets.map((target) => target.inputSelector).join(', '),
|
|
366
|
-
action: templateConfig.autocomplete.action || '',
|
|
367
|
-
globals: templateConfig.autocomplete.globals || {},
|
|
368
|
-
settings: autocompleteControllerSettings,
|
|
369
|
-
},
|
|
370
|
-
targeters: createAutocompleteTargeters(templateConfig, templatesStore),
|
|
371
|
-
};
|
|
389
|
+
const autocompleteSelector = templateConfig.autocomplete.targets.map((target) => target.inputSelector).join(', ');
|
|
390
|
+
const autocompleteTabs = templateConfig.autocomplete.tabs || [];
|
|
391
|
+
const autocompleteGlobals = templateConfig.autocomplete.globals || {};
|
|
392
|
+
const autocompleteTargeters = createAutocompleteTargeters(templateConfig, templatesStore);
|
|
372
393
|
// merge the responsive settings if there are any
|
|
373
394
|
// if (templateConfig.config.theme.variables?.breakpoints && templateConfig.autocomplete.breakpointSettings) {
|
|
374
395
|
// const mappedBreakpoints = mapBreakpoints(
|
|
@@ -376,9 +397,61 @@ function createSnapConfig(templateConfig, templatesStore) {
|
|
|
376
397
|
// templateConfig.autocomplete.breakpointSettings || []
|
|
377
398
|
// );
|
|
378
399
|
// const breakpointSettings = getDisplaySettings(mappedBreakpoints) as AutocompleteStoreConfigSettings;
|
|
379
|
-
//
|
|
400
|
+
// autocompleteControllerSettings = deepmerge(autocompleteControllerSettings, breakpointSettings);
|
|
380
401
|
// }
|
|
381
|
-
snapConfig.controllers.autocomplete = [
|
|
402
|
+
snapConfig.controllers.autocomplete = [];
|
|
403
|
+
if (!autocompleteTabs.length) {
|
|
404
|
+
snapConfig.controllers.autocomplete.push({
|
|
405
|
+
config: {
|
|
406
|
+
id: 'autocomplete',
|
|
407
|
+
plugins: createPlugins(templateConfig, templatesStore, 'autocomplete'),
|
|
408
|
+
selector: autocompleteSelector,
|
|
409
|
+
action: templateConfig.autocomplete.action || '',
|
|
410
|
+
globals: autocompleteGlobals,
|
|
411
|
+
settings: autocompleteControllerSettings,
|
|
412
|
+
},
|
|
413
|
+
targeters: autocompleteTargeters,
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
// when tabs are configured, every tab controller binds to the same input - an additional
|
|
418
|
+
// non-tab controller would only produce redundant API requests, so the targeters are
|
|
419
|
+
// attached to the default tab controller instead
|
|
420
|
+
const defaultTab = autocompleteTabs.filter((tab) => tab.default)[0] || autocompleteTabs[0];
|
|
421
|
+
autocompleteTabs.forEach((tab) => {
|
|
422
|
+
const tabParam = tab.param;
|
|
423
|
+
snapConfig.controllers.autocomplete.push({
|
|
424
|
+
url: {
|
|
425
|
+
settings: {
|
|
426
|
+
// the query is shared across tabs - only per-catalog state is namespaced
|
|
427
|
+
...(tabParam ? { corePrefix: tabParam, corePrefixParams: exports.TAB_PREFIXED_PARAMS } : {}),
|
|
428
|
+
},
|
|
429
|
+
parameters: {
|
|
430
|
+
custom: {
|
|
431
|
+
[TabManagerStore_1.TAB_ID_DEFAULT_PARAM]: { type: 'query' },
|
|
432
|
+
},
|
|
433
|
+
},
|
|
434
|
+
// every url the autocomplete builds must carry the tab it belongs to
|
|
435
|
+
globals: [
|
|
436
|
+
{
|
|
437
|
+
param: TabManagerStore_1.TAB_ID_DEFAULT_PARAM,
|
|
438
|
+
value: tab.param,
|
|
439
|
+
},
|
|
440
|
+
],
|
|
441
|
+
},
|
|
442
|
+
config: {
|
|
443
|
+
id: tab.id,
|
|
444
|
+
plugins: tab.plugins ? createTabPlugins(tab.plugins, templatesStore) : createPlugins(templateConfig, templatesStore, 'autocomplete'),
|
|
445
|
+
selector: autocompleteSelector,
|
|
446
|
+
action: templateConfig.autocomplete.action || '',
|
|
447
|
+
settings: (0, deepmerge_1.default)(autocompleteControllerSettings, tab.settings || {}),
|
|
448
|
+
globals: (0, deepmerge_1.default)(autocompleteGlobals, tab.globals || {}),
|
|
449
|
+
},
|
|
450
|
+
services: createTabServices(snapConfig, tab.siteId),
|
|
451
|
+
...(tab === defaultTab ? { targeters: autocompleteTargeters } : {}),
|
|
452
|
+
});
|
|
453
|
+
});
|
|
454
|
+
}
|
|
382
455
|
}
|
|
383
456
|
/* RECOMMENDATION INSTANTIATOR */
|
|
384
457
|
const originalRecsConfig = templateConfig.recommendation || {};
|
|
@@ -433,21 +506,6 @@ function createSnapConfig(templateConfig, templatesStore) {
|
|
|
433
506
|
// }
|
|
434
507
|
snapConfig.instantiators.recommendation = recommendationInstantiatorConfig;
|
|
435
508
|
}
|
|
436
|
-
/* CHAT CONTROLLER */
|
|
437
|
-
if (templateConfig.chat && snapConfig.controllers) {
|
|
438
|
-
const chatControllerConfig = {
|
|
439
|
-
config: {
|
|
440
|
-
id: 'chat',
|
|
441
|
-
plugins: createPlugins(templateConfig, templatesStore, 'chat'),
|
|
442
|
-
settings: {
|
|
443
|
-
languageCode: templatesStore.language,
|
|
444
|
-
...(templateConfig.chat.settings || {}),
|
|
445
|
-
},
|
|
446
|
-
},
|
|
447
|
-
targeters: (0, exports.createChatTargeters)(templateConfig, templatesStore),
|
|
448
|
-
};
|
|
449
|
-
snapConfig.controllers.chat = [chatControllerConfig];
|
|
450
|
-
}
|
|
451
509
|
return snapConfig;
|
|
452
510
|
}
|
|
453
511
|
function createPlugins(templateConfig, templatesStore, controllerType) {
|
|
@@ -456,14 +514,10 @@ function createPlugins(templateConfig, templatesStore, controllerType) {
|
|
|
456
514
|
if (controllerType) {
|
|
457
515
|
controllerConfig = templateConfig[controllerType] || {};
|
|
458
516
|
}
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
templatesStore.library.import.plugins.common.backgroundFilters,
|
|
464
|
-
(0, deepmerge_1.default)(templateConfig.plugins?.common?.backgroundFilters || {}, controllerConfig?.plugins?.common?.backgroundFilters || {}),
|
|
465
|
-
]);
|
|
466
|
-
}
|
|
517
|
+
plugins.push([
|
|
518
|
+
templatesStore.library.import.plugins.common.backgroundFilters,
|
|
519
|
+
(0, deepmerge_1.default)(templateConfig.plugins?.common?.backgroundFilters || {}, controllerConfig?.plugins?.common?.backgroundFilters || {}),
|
|
520
|
+
]);
|
|
467
521
|
plugins.push([
|
|
468
522
|
templatesStore.library.import.plugins.common.scrollToTop,
|
|
469
523
|
(0, deepmerge_1.default)(templateConfig.plugins?.common?.scrollToTop || {}, controllerConfig?.plugins?.common?.scrollToTop || {}),
|
|
@@ -538,3 +592,10 @@ function createPlugins(templateConfig, templatesStore, controllerType) {
|
|
|
538
592
|
});
|
|
539
593
|
return plugins;
|
|
540
594
|
}
|
|
595
|
+
// tab level plugins do not inherit global or controller level plugins - only the plugins configured on the tab are used
|
|
596
|
+
function createTabPlugins(tabPlugins, templatesStore) {
|
|
597
|
+
const plugins = createPlugins({ plugins: tabPlugins }, templatesStore);
|
|
598
|
+
const customPluginFunctions = Object.values(tabPlugins.custom || {}).map((customPlugin) => customPlugin.function);
|
|
599
|
+
// built-in plugins are always created - keep only the ones that were given configuration on the tab
|
|
600
|
+
return plugins.filter((plugin) => customPluginFunctions.includes(plugin[0]) || Object.keys(plugin[1] || {}).length > 0);
|
|
601
|
+
}
|
|
@@ -29,26 +29,6 @@ class LibraryStore {
|
|
|
29
29
|
default: {},
|
|
30
30
|
email: {},
|
|
31
31
|
},
|
|
32
|
-
chat: {},
|
|
33
|
-
chatButton: {},
|
|
34
|
-
chatLoadingIndicator: {},
|
|
35
|
-
chatAttachmentContext: {},
|
|
36
|
-
chatInspirationResultMessage: {},
|
|
37
|
-
chatMessageText: {},
|
|
38
|
-
chatMessageUser: {},
|
|
39
|
-
chatProductComparisonMessage: {},
|
|
40
|
-
chatProductQueryMessage: {},
|
|
41
|
-
chatResult: {},
|
|
42
|
-
chatResultsDisplay: {},
|
|
43
|
-
chatSuggestedQuestions: {},
|
|
44
|
-
chatComparisonsTray: {},
|
|
45
|
-
chatComposer: {},
|
|
46
|
-
chatFacetsBar: {},
|
|
47
|
-
chatHistory: {},
|
|
48
|
-
chatMessages: {},
|
|
49
|
-
chatSessionFeedback: {},
|
|
50
|
-
chatSideChat: {},
|
|
51
|
-
chatTopicDrift: {},
|
|
52
32
|
badge: {},
|
|
53
33
|
result: {},
|
|
54
34
|
overlayResult: {},
|
|
@@ -97,6 +77,7 @@ class LibraryStore {
|
|
|
97
77
|
slideout: {},
|
|
98
78
|
sortBy: {},
|
|
99
79
|
swatches: {},
|
|
80
|
+
tabSelection: {},
|
|
100
81
|
variantSelection: {},
|
|
101
82
|
terms: {},
|
|
102
83
|
branchOverride: {},
|
|
@@ -227,33 +208,6 @@ class LibraryStore {
|
|
|
227
208
|
},
|
|
228
209
|
},
|
|
229
210
|
},
|
|
230
|
-
chat: {
|
|
231
|
-
Chat: async () => {
|
|
232
|
-
return this.components.chat.Chat || (this.components.chat.Chat = (await import('./library/components/Chat')).Chat);
|
|
233
|
-
},
|
|
234
|
-
ChatButton: async () => {
|
|
235
|
-
return this.components.chat.ChatButton || (this.components.chat.ChatButton = (await import('./library/components/ChatButton')).ChatButton);
|
|
236
|
-
},
|
|
237
|
-
},
|
|
238
|
-
chatButton: {},
|
|
239
|
-
chatLoadingIndicator: {},
|
|
240
|
-
chatAttachmentContext: {},
|
|
241
|
-
chatInspirationResultMessage: {},
|
|
242
|
-
chatMessageText: {},
|
|
243
|
-
chatMessageUser: {},
|
|
244
|
-
chatProductComparisonMessage: {},
|
|
245
|
-
chatProductQueryMessage: {},
|
|
246
|
-
chatResult: {},
|
|
247
|
-
chatResultsDisplay: {},
|
|
248
|
-
chatSuggestedQuestions: {},
|
|
249
|
-
chatComparisonsTray: {},
|
|
250
|
-
chatComposer: {},
|
|
251
|
-
chatFacetsBar: {},
|
|
252
|
-
chatHistory: {},
|
|
253
|
-
chatMessages: {},
|
|
254
|
-
chatSessionFeedback: {},
|
|
255
|
-
chatSideChat: {},
|
|
256
|
-
chatTopicDrift: {},
|
|
257
211
|
badge: {},
|
|
258
212
|
result: {
|
|
259
213
|
Result: async () => {
|
|
@@ -310,6 +264,7 @@ class LibraryStore {
|
|
|
310
264
|
slideout: {},
|
|
311
265
|
sortBy: {},
|
|
312
266
|
swatches: {},
|
|
267
|
+
tabSelection: {},
|
|
313
268
|
variantSelection: {},
|
|
314
269
|
terms: {},
|
|
315
270
|
branchOverride: {},
|
|
@@ -376,10 +331,7 @@ class LibraryStore {
|
|
|
376
331
|
async addComponentImport(type, name, componentFn) {
|
|
377
332
|
// only allow certain types based on unlocked status
|
|
378
333
|
if (this.allowedComponentTypes.includes(type) && this.components[type]) {
|
|
379
|
-
|
|
380
|
-
// literal-checked; custom overrides register by arbitrary name, hence the cast
|
|
381
|
-
const componentImports = this.import.component[type];
|
|
382
|
-
componentImports[name] = async () => {
|
|
334
|
+
this.import.component[type][name] = async () => {
|
|
383
335
|
return (this.components[type][name] ||
|
|
384
336
|
(this.components[type][name] = await (0, CustomComponent_1.CustomComponent)({
|
|
385
337
|
type,
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TabManagerStore = exports.TAB_ID_DEFAULT_PARAM = void 0;
|
|
4
|
+
exports.getActiveTabConfig = getActiveTabConfig;
|
|
5
|
+
const mobx_1 = require("mobx");
|
|
6
|
+
const snap_controller_1 = require("@athoscommerce/snap-controller");
|
|
7
|
+
const snap_toolbox_1 = require("@athoscommerce/snap-toolbox");
|
|
8
|
+
exports.TAB_ID_DEFAULT_PARAM = 'tab';
|
|
9
|
+
// resolves the active tab straight from the url - tab controllers begin searching as soon as they
|
|
10
|
+
// are targeted, which happens before any TabManagerStore exists
|
|
11
|
+
function getActiveTabConfig(tabs) {
|
|
12
|
+
const defaultTab = tabs.filter((tab) => tab.default)[0] || tabs[0];
|
|
13
|
+
const paramValue = (0, snap_toolbox_1.url)(window.location.href)?.params.query[exports.TAB_ID_DEFAULT_PARAM];
|
|
14
|
+
if (!paramValue) {
|
|
15
|
+
return defaultTab;
|
|
16
|
+
}
|
|
17
|
+
const activeParam = decodeURIComponent(paramValue);
|
|
18
|
+
return tabs.filter((tab) => tab.param == activeParam)[0] || defaultTab;
|
|
19
|
+
}
|
|
20
|
+
class TabManagerStore {
|
|
21
|
+
constructor(tabConfigs, controllers) {
|
|
22
|
+
this.tabs = [];
|
|
23
|
+
this.setActive = (id, updateUrl = true) => {
|
|
24
|
+
const tabToSelect = this.getTab(id);
|
|
25
|
+
if (!tabToSelect || tabToSelect.id === this.active?.id) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const previousTab = this.active;
|
|
29
|
+
this.setRedirects(previousTab, false);
|
|
30
|
+
this.active = tabToSelect;
|
|
31
|
+
this.setRedirects(tabToSelect, true);
|
|
32
|
+
if (tabToSelect.controller.type == snap_controller_1.ControllerTypes.search) {
|
|
33
|
+
if (updateUrl) {
|
|
34
|
+
// to remove page chain: `.remove('page')` to urlManager.set(...)
|
|
35
|
+
tabToSelect.controller.urlManager.set(this.param, tabToSelect.param).go();
|
|
36
|
+
}
|
|
37
|
+
this.searchTab(tabToSelect);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
// every tab shares the url and the autocomplete input, so an inactive tab landing on a single
|
|
41
|
+
// result or a merchandising redirect would navigate away from the tab the shopper is viewing
|
|
42
|
+
this.setRedirects = (tab, enabled) => {
|
|
43
|
+
if (!tab) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const config = tab.controller.config;
|
|
47
|
+
config.settings = config.settings || {};
|
|
48
|
+
config.settings.redirects = enabled ? { ...tab.redirects } : { merchandising: false, singleResult: false };
|
|
49
|
+
};
|
|
50
|
+
this.searchTab = (tab) => {
|
|
51
|
+
if (tab.controller.type != snap_controller_1.ControllerTypes.search) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const searchController = tab.controller;
|
|
55
|
+
if (!searchController.store.loading && !searchController.store.loaded) {
|
|
56
|
+
searchController.search();
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
this.getTab = (id) => {
|
|
60
|
+
return this.tabs?.filter((tab) => tab.id == id)[0];
|
|
61
|
+
};
|
|
62
|
+
this.getTabByParam = (param) => {
|
|
63
|
+
return this.tabs?.filter((tab) => tab.param == param)[0];
|
|
64
|
+
};
|
|
65
|
+
this.param = exports.TAB_ID_DEFAULT_PARAM;
|
|
66
|
+
const startingTabConfig = tabConfigs.filter((tab) => tab.default)[0] || tabConfigs[0];
|
|
67
|
+
let urlParam;
|
|
68
|
+
tabConfigs.forEach((tabConfig) => {
|
|
69
|
+
const cntrlr = controllers.filter((controller) => controller.id == tabConfig.id)[0];
|
|
70
|
+
if (!cntrlr) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const newTab = {
|
|
74
|
+
id: tabConfig.id,
|
|
75
|
+
label: tabConfig.label,
|
|
76
|
+
siteId: tabConfig.siteId,
|
|
77
|
+
param: tabConfig.param,
|
|
78
|
+
controller: cntrlr,
|
|
79
|
+
// search-tab only setting - autocomplete has nothing to fetch until the shopper types
|
|
80
|
+
prefetch: 'prefetch' in tabConfig ? tabConfig.prefetch ?? true : true,
|
|
81
|
+
redirects: { ...(cntrlr.config.settings?.redirects || {}) },
|
|
82
|
+
};
|
|
83
|
+
if (cntrlr.type == snap_controller_1.ControllerTypes.autocomplete) {
|
|
84
|
+
const autocompleteController = cntrlr;
|
|
85
|
+
// hidden form inputs for tab selections
|
|
86
|
+
if (!autocompleteController.config.action) {
|
|
87
|
+
autocompleteController.eventManager.on('beforeSubmit', async (context, next) => {
|
|
88
|
+
if (context.input?.form) {
|
|
89
|
+
addHiddenFormInput(context.input.form, this.param, this.active?.param || newTab.param);
|
|
90
|
+
}
|
|
91
|
+
await next();
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (cntrlr.type == snap_controller_1.ControllerTypes.search) {
|
|
96
|
+
const searchController = cntrlr;
|
|
97
|
+
// read the active tab from the url on initial load
|
|
98
|
+
if (!urlParam) {
|
|
99
|
+
urlParam = getTabParamFromUrlState(searchController.urlManager.state[this.param]);
|
|
100
|
+
}
|
|
101
|
+
// functionality for back/forward browser buttons
|
|
102
|
+
searchController.urlManager.subscribe((prev, next) => {
|
|
103
|
+
const nextParam = getTabParamFromUrlState(next?.[this.param]);
|
|
104
|
+
const nextTab = (nextParam && this.getTabByParam(nextParam)) || this.getTab(startingTabConfig.id);
|
|
105
|
+
if (nextTab) {
|
|
106
|
+
this.setActive(nextTab.id, false);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
this.tabs.push(newTab);
|
|
111
|
+
});
|
|
112
|
+
this.active = (urlParam && this.getTabByParam(urlParam)) || this.getTab(startingTabConfig.id) || this.tabs[0];
|
|
113
|
+
(0, mobx_1.makeObservable)(this, {
|
|
114
|
+
tabs: mobx_1.observable,
|
|
115
|
+
active: mobx_1.observable,
|
|
116
|
+
setActive: mobx_1.action,
|
|
117
|
+
});
|
|
118
|
+
// the active tab always searches - the rest only when they opt into prefetching
|
|
119
|
+
this.tabs.forEach((tab) => {
|
|
120
|
+
if (tab.id != this.active?.id) {
|
|
121
|
+
this.setRedirects(tab, false);
|
|
122
|
+
}
|
|
123
|
+
if (tab.prefetch || tab.id == this.active?.id) {
|
|
124
|
+
this.searchTab(tab);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.TabManagerStore = TabManagerStore;
|
|
130
|
+
function addHiddenFormInput(form, name, value) {
|
|
131
|
+
// match by property rather than an interpolated attribute selector to avoid selector injection
|
|
132
|
+
const existingElem = Array.from(form.querySelectorAll('input[type="hidden"]')).find((elem) => elem.name === name);
|
|
133
|
+
if (existingElem) {
|
|
134
|
+
// keep the value current - the active tab can change after the input was first appended
|
|
135
|
+
existingElem.value = value;
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const inputElem = document.createElement('input');
|
|
139
|
+
inputElem.type = 'hidden';
|
|
140
|
+
inputElem.name = name;
|
|
141
|
+
inputElem.value = value;
|
|
142
|
+
form.append(inputElem);
|
|
143
|
+
}
|
|
144
|
+
// custom url params always deserialize as arrays when parsed fresh from the url, but can be a
|
|
145
|
+
// plain string when read back from an in-session localState set() - handle both shapes
|
|
146
|
+
function getTabParamFromUrlState(value) {
|
|
147
|
+
if (Array.isArray(value)) {
|
|
148
|
+
return value[0];
|
|
149
|
+
}
|
|
150
|
+
return typeof value == 'string' ? value : undefined;
|
|
151
|
+
}
|
|
@@ -6,6 +6,7 @@ const mobx_1 = require("mobx");
|
|
|
6
6
|
const snap_toolbox_1 = require("@athoscommerce/snap-toolbox");
|
|
7
7
|
const ThemeStore_1 = require("./ThemeStore");
|
|
8
8
|
const TargetStore_1 = require("./TargetStore");
|
|
9
|
+
const TabManagerStore_1 = require("./TabManagerStore");
|
|
9
10
|
const LibraryStore_1 = require("./LibraryStore");
|
|
10
11
|
const snap_toolbox_2 = require("@athoscommerce/snap-toolbox");
|
|
11
12
|
const RESIZE_DEBOUNCE = 100;
|
|
@@ -14,6 +15,7 @@ class TemplatesStore {
|
|
|
14
15
|
constructor(params) {
|
|
15
16
|
this.loading = false;
|
|
16
17
|
this.window = { innerWidth: 0 };
|
|
18
|
+
this.tabManagers = {};
|
|
17
19
|
const { config, settings } = params || {};
|
|
18
20
|
this.config = config;
|
|
19
21
|
this.platform = config.config?.platform || 'other';
|
|
@@ -25,7 +27,6 @@ class TemplatesStore {
|
|
|
25
27
|
this.targets = {
|
|
26
28
|
search: [],
|
|
27
29
|
autocomplete: [],
|
|
28
|
-
chat: [],
|
|
29
30
|
recommendation: {
|
|
30
31
|
bundle: [],
|
|
31
32
|
default: [],
|
|
@@ -125,6 +126,26 @@ class TemplatesStore {
|
|
|
125
126
|
getTarget(type, targetIndex) {
|
|
126
127
|
return getTargetArray(this.targets, type)?.[targetIndex];
|
|
127
128
|
}
|
|
129
|
+
// one store per controller type
|
|
130
|
+
getTabManager(type, controllers) {
|
|
131
|
+
const tabs = this.config[type]?.tabs;
|
|
132
|
+
if (!tabs || tabs.length < 2) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
const mappedTabs = tabs.map((tab) => ({
|
|
136
|
+
id: tab.id,
|
|
137
|
+
param: tab.param,
|
|
138
|
+
siteId: tab.siteId,
|
|
139
|
+
label: tab.label,
|
|
140
|
+
default: tab.default,
|
|
141
|
+
prefetch: tab.prefetch,
|
|
142
|
+
}));
|
|
143
|
+
if (!this.tabManagers[type]) {
|
|
144
|
+
const tabControllers = tabs.map((tab) => controllers[tab.id]).filter((controller) => Boolean(controller));
|
|
145
|
+
this.tabManagers[type] = new TabManagerStore_1.TabManagerStore(mappedTabs, tabControllers);
|
|
146
|
+
}
|
|
147
|
+
return this.tabManagers[type];
|
|
148
|
+
}
|
|
128
149
|
addTheme(config) {
|
|
129
150
|
const theme = new ThemeStore_1.ThemeStore({
|
|
130
151
|
config,
|
|
@@ -220,7 +241,7 @@ function getTargetArray(targets, type) {
|
|
|
220
241
|
if (category === 'recommendation' && subcategory) {
|
|
221
242
|
return targets.recommendation[subcategory];
|
|
222
243
|
}
|
|
223
|
-
if (category === 'search' || category === 'autocomplete'
|
|
244
|
+
if (category === 'search' || category === 'autocomplete') {
|
|
224
245
|
return targets[category];
|
|
225
246
|
}
|
|
226
247
|
return undefined;
|