@athoscommerce/snap-preact 1.2.3-beta.4 → 1.2.3-beta.6
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/README.md +16 -0
- package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts +3 -3
- package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +7 -8
- package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +1 -1
- package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +3 -3
- package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +2 -0
- package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +24 -25
- package/dist/cjs/components/src/components/Molecules/Filter/Filter.d.ts +1 -1
- package/dist/cjs/components/src/components/Molecules/Filter/Filter.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Molecules/Result/Result.js +11 -6
- package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts +4 -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 +3 -3
- package/dist/cjs/components/src/components/Molecules/TemplatesEditor/Components/AbstractedControls.js +5 -5
- package/dist/cjs/components/src/components/Molecules/TemplatesEditor/Components/Control.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Molecules/TemplatesEditor/Components/Control.js +31 -31
- package/dist/cjs/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.js +22 -36
- package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts +7 -0
- package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Organisms/Chat/Chat.js +638 -431
- package/dist/cjs/components/src/components/Organisms/Chat/ChatResult.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Organisms/Chat/ChatResult.js +4 -3
- package/dist/cjs/components/src/components/Organisms/Chat/MessageText.d.ts +3 -1
- package/dist/cjs/components/src/components/Organisms/Chat/MessageText.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Organisms/Chat/MessageText.js +22 -19
- package/dist/cjs/components/src/components/Organisms/Chat/MessageUser.d.ts +3 -1
- package/dist/cjs/components/src/components/Organisms/Chat/MessageUser.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Organisms/Chat/MessageUser.js +39 -21
- package/dist/cjs/components/src/components/Organisms/Chat/ResultsDisplay.d.ts +1 -1
- package/dist/cjs/components/src/components/Organisms/Chat/ResultsDisplay.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Organisms/Chat/ResultsDisplay.js +7 -11
- package/dist/cjs/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts +2 -2
- package/dist/cjs/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Organisms/ProductQuickView/ProductQuickView.d.ts +11 -0
- package/dist/cjs/components/src/components/Organisms/ProductQuickView/ProductQuickView.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Organisms/ProductQuickView/ProductQuickView.js +461 -0
- package/dist/cjs/components/src/components/Organisms/ProductQuickView/index.d.ts +2 -0
- package/dist/cjs/components/src/components/Organisms/ProductQuickView/index.d.ts.map +1 -0
- package/dist/cjs/components/src/components/Organisms/ProductQuickView/index.js +17 -0
- package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
- package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +0 -2
- package/dist/cjs/components/src/hooks/useAcRenderedInput.d.ts.map +1 -1
- package/dist/cjs/components/src/hooks/useAcRenderedInput.js +65 -15
- package/dist/cjs/components/src/hooks/useMediaQuery.d.ts.map +1 -1
- package/dist/cjs/components/src/hooks/useMediaQuery.js +3 -1
- package/dist/cjs/components/src/index.d.ts +1 -0
- package/dist/cjs/components/src/index.d.ts.map +1 -1
- package/dist/cjs/components/src/index.js +1 -0
- package/dist/cjs/components/src/providers/theme.d.ts +1 -1
- package/dist/cjs/components/src/providers/theme.d.ts.map +1 -1
- package/dist/cjs/components/src/themes/base/base.js +3 -3
- 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/src/Instantiators/RecommendationInstantiator.d.ts +3 -1
- package/dist/cjs/src/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
- package/dist/cjs/src/Instantiators/RecommendationInstantiator.js +162 -123
- package/dist/cjs/src/Snap.d.ts +1 -1
- package/dist/cjs/src/Snap.d.ts.map +1 -1
- package/dist/cjs/src/Snap.js +18 -6
- package/dist/cjs/src/SnapHybrid.d.ts.map +1 -1
- package/dist/cjs/src/Templates/SnapTemplates.d.ts +13 -72
- package/dist/cjs/src/Templates/SnapTemplates.d.ts.map +1 -1
- package/dist/cjs/src/Templates/SnapTemplates.js +123 -72
- package/dist/cjs/src/Templates/Stores/TargetStore.d.ts +7 -6
- package/dist/cjs/src/Templates/Stores/TargetStore.d.ts.map +1 -1
- package/dist/cjs/src/Templates/Stores/TargetStore.js +14 -8
- package/dist/cjs/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts +58 -8
- package/dist/cjs/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts.map +1 -1
- package/dist/cjs/src/Templates/Stores/TemplateEditor/TemplateEditorStore.js +467 -96
- package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.d.ts +1 -0
- package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.d.ts.map +1 -1
- package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.js +123 -70
- package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.d.ts.map +1 -1
- package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.js +9 -3
- package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.d.ts +1 -0
- package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.d.ts.map +1 -1
- package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.js +86 -1
- package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/themeUI.d.ts.map +1 -1
- package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/themeUI.js +33 -14
- package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts +93 -30
- package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
- package/dist/cjs/src/Templates/Stores/TemplateStore.js +33 -41
- package/dist/cjs/src/Templates/Stores/ThemeStore.d.ts +2 -8
- package/dist/cjs/src/Templates/Stores/ThemeStore.d.ts.map +1 -1
- package/dist/cjs/src/Templates/Stores/ThemeStore.js +3 -28
- package/dist/cjs/src/Templates/index.d.ts +1 -1
- package/dist/cjs/src/Templates/index.d.ts.map +1 -1
- package/dist/cjs/src/create/createChatController.js +1 -1
- package/dist/cjs/src/index.d.ts +1 -0
- package/dist/cjs/src/index.d.ts.map +1 -1
- 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 +56 -8
- package/dist/cjs/src/types.d.ts +3 -1
- package/dist/cjs/src/types.d.ts.map +1 -1
- package/dist/cjs/src/utils/combineMerge.d.ts +2 -0
- package/dist/cjs/src/utils/combineMerge.d.ts.map +1 -0
- package/dist/cjs/src/utils/combineMerge.js +22 -0
- package/dist/cjs/src/utils/index.d.ts +1 -0
- package/dist/cjs/src/utils/index.d.ts.map +1 -1
- package/dist/cjs/src/utils/index.js +3 -1
- package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts +3 -3
- package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +7 -8
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +1 -1
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +3 -3
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +24 -26
- package/dist/esm/components/src/components/Molecules/Filter/Filter.d.ts +1 -1
- package/dist/esm/components/src/components/Molecules/Filter/Filter.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Result/Result.js +9 -4
- package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +4 -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 +3 -3
- package/dist/esm/components/src/components/Molecules/TemplatesEditor/Components/AbstractedControls.js +5 -5
- package/dist/esm/components/src/components/Molecules/TemplatesEditor/Components/Control.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/TemplatesEditor/Components/Control.js +29 -29
- package/dist/esm/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.js +22 -35
- package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +7 -0
- package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Chat/Chat.js +557 -359
- package/dist/esm/components/src/components/Organisms/Chat/ChatResult.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Chat/ChatResult.js +4 -3
- package/dist/esm/components/src/components/Organisms/Chat/MessageText.d.ts +3 -1
- package/dist/esm/components/src/components/Organisms/Chat/MessageText.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Chat/MessageText.js +21 -19
- package/dist/esm/components/src/components/Organisms/Chat/MessageUser.d.ts +3 -1
- package/dist/esm/components/src/components/Organisms/Chat/MessageUser.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Chat/MessageUser.js +36 -21
- package/dist/esm/components/src/components/Organisms/Chat/ResultsDisplay.d.ts +1 -1
- package/dist/esm/components/src/components/Organisms/Chat/ResultsDisplay.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Chat/ResultsDisplay.js +7 -11
- package/dist/esm/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts +2 -2
- package/dist/esm/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/ProductQuickView/ProductQuickView.d.ts +11 -0
- package/dist/esm/components/src/components/Organisms/ProductQuickView/ProductQuickView.d.ts.map +1 -0
- package/dist/esm/components/src/components/Organisms/ProductQuickView/ProductQuickView.js +436 -0
- package/dist/esm/components/src/components/Organisms/ProductQuickView/index.d.ts +2 -0
- package/dist/esm/components/src/components/Organisms/ProductQuickView/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Organisms/ProductQuickView/index.js +1 -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 +0 -2
- package/dist/esm/components/src/hooks/useAcRenderedInput.d.ts.map +1 -1
- package/dist/esm/components/src/hooks/useAcRenderedInput.js +61 -11
- package/dist/esm/components/src/hooks/useMediaQuery.d.ts.map +1 -1
- package/dist/esm/components/src/hooks/useMediaQuery.js +3 -1
- package/dist/esm/components/src/index.d.ts +1 -0
- package/dist/esm/components/src/index.d.ts.map +1 -1
- package/dist/esm/components/src/index.js +1 -0
- package/dist/esm/components/src/providers/theme.d.ts +1 -1
- package/dist/esm/components/src/providers/theme.d.ts.map +1 -1
- package/dist/esm/components/src/themes/base/base.js +3 -3
- 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/src/Instantiators/RecommendationInstantiator.d.ts +3 -1
- package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
- package/dist/esm/src/Instantiators/RecommendationInstantiator.js +131 -84
- package/dist/esm/src/Snap.d.ts +1 -1
- package/dist/esm/src/Snap.d.ts.map +1 -1
- package/dist/esm/src/Snap.js +21 -6
- package/dist/esm/src/SnapHybrid.d.ts.map +1 -1
- package/dist/esm/src/Templates/SnapTemplates.d.ts +13 -72
- package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
- package/dist/esm/src/Templates/SnapTemplates.js +137 -78
- package/dist/esm/src/Templates/Stores/TargetStore.d.ts +7 -6
- package/dist/esm/src/Templates/Stores/TargetStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TargetStore.js +14 -8
- package/dist/esm/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts +58 -8
- package/dist/esm/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TemplateEditor/TemplateEditorStore.js +447 -89
- package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.d.ts +1 -0
- package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.js +118 -66
- package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.js +9 -3
- package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.d.ts +1 -0
- package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.js +82 -1
- package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/themeUI.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/themeUI.js +27 -8
- package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +93 -30
- package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TemplateStore.js +29 -38
- package/dist/esm/src/Templates/Stores/ThemeStore.d.ts +2 -8
- package/dist/esm/src/Templates/Stores/ThemeStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/ThemeStore.js +3 -26
- package/dist/esm/src/Templates/index.d.ts +1 -1
- package/dist/esm/src/Templates/index.d.ts.map +1 -1
- package/dist/esm/src/create/createChatController.js +1 -1
- package/dist/esm/src/index.d.ts +1 -0
- package/dist/esm/src/index.d.ts.map +1 -1
- 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 +25 -8
- package/dist/esm/src/types.d.ts +3 -1
- package/dist/esm/src/types.d.ts.map +1 -1
- package/dist/esm/src/utils/combineMerge.d.ts +2 -0
- package/dist/esm/src/utils/combineMerge.d.ts.map +1 -0
- package/dist/esm/src/utils/combineMerge.js +16 -0
- package/dist/esm/src/utils/index.d.ts +1 -0
- package/dist/esm/src/utils/index.d.ts.map +1 -1
- package/dist/esm/src/utils/index.js +1 -0
- package/package.json +20 -14
|
@@ -10,29 +10,6 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
-
}
|
|
19
|
-
Object.defineProperty(o, k2, desc);
|
|
20
|
-
}) : (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
o[k2] = m[k];
|
|
23
|
-
}));
|
|
24
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
-
}) : function(o, v) {
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
-
if (mod && mod.__esModule) return mod;
|
|
31
|
-
var result = {};
|
|
32
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
15
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -91,6 +68,7 @@ var snap_toolbox_1 = require("@athoscommerce/snap-toolbox");
|
|
|
91
68
|
var snap_client_1 = require("@athoscommerce/snap-client");
|
|
92
69
|
var snap_logger_1 = require("@athoscommerce/snap-logger");
|
|
93
70
|
var snap_tracker_1 = require("@athoscommerce/snap-tracker");
|
|
71
|
+
var create_1 = require("../create");
|
|
94
72
|
var DEFAULT_BRANCH = 'production';
|
|
95
73
|
var RecommendationInstantiator = /** @class */ (function () {
|
|
96
74
|
function RecommendationInstantiator(config, services, context) {
|
|
@@ -128,33 +106,30 @@ var RecommendationInstantiator = /** @class */ (function () {
|
|
|
128
106
|
this.tracker = (services === null || services === void 0 ? void 0 : services.tracker) || new snap_tracker_1.Tracker(this.config.client.globals);
|
|
129
107
|
this.logger = (services === null || services === void 0 ? void 0 : services.logger) || new snap_logger_1.Logger({ prefix: 'RecommendationInstantiator ', mode: this.mode });
|
|
130
108
|
var profileCount = {};
|
|
109
|
+
// script block targeter for "grouped" and "legacy" blocks
|
|
131
110
|
this.targeter = new snap_toolbox_1.DomTargeter([
|
|
132
111
|
{
|
|
133
112
|
selector: "".concat(this.config.selector ||
|
|
134
113
|
'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\"]"),
|
|
135
114
|
autoRetarget: true,
|
|
136
115
|
clickRetarget: true,
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
element: function (target, origElement) {
|
|
140
|
-
var profile = origElement.getAttribute('profile') || '';
|
|
141
|
-
var recsContainer = document.createElement('div');
|
|
142
|
-
recsContainer.setAttribute('searchspring-recommend', profile);
|
|
143
|
-
return recsContainer;
|
|
144
|
-
},
|
|
145
|
-
},
|
|
116
|
+
navigationRetarget: true,
|
|
117
|
+
emptyTarget: false,
|
|
146
118
|
},
|
|
147
119
|
{
|
|
148
120
|
selector: 'script[type="searchspring/recommendations"], script[type="athos/recommendations"]',
|
|
149
121
|
autoRetarget: true,
|
|
150
122
|
clickRetarget: true,
|
|
123
|
+
navigationRetarget: true,
|
|
151
124
|
emptyTarget: false,
|
|
152
125
|
},
|
|
153
|
-
], function (target, elem
|
|
154
|
-
var elemContext, scriptContextProfiles, scriptContextGlobals_1, requestGlobals_1,
|
|
126
|
+
], function (target, elem) { return __awaiter(_this, void 0, void 0, function () {
|
|
127
|
+
var scriptElement, elemContext, scriptContextProfiles, scriptContextGlobals_1, requestGlobals_1, profile, products, product, seed, filters, blockedItems, options, shopper, shopperId, combinedProducts, shopperIdentifier, profileRequestGlobals_1, profileAttr, recsContainer, legacyContext_1;
|
|
155
128
|
var _this = this;
|
|
156
129
|
var _a;
|
|
157
130
|
return __generator(this, function (_b) {
|
|
131
|
+
this.cleanupStaleControllers();
|
|
132
|
+
scriptElement = elem;
|
|
158
133
|
elemContext = (0, snap_toolbox_1.getContext)([
|
|
159
134
|
'shopperId',
|
|
160
135
|
'shopper',
|
|
@@ -169,7 +144,7 @@ var RecommendationInstantiator = /** @class */ (function () {
|
|
|
169
144
|
'custom',
|
|
170
145
|
'profiles',
|
|
171
146
|
'globals',
|
|
172
|
-
],
|
|
147
|
+
], scriptElement);
|
|
173
148
|
if (elemContext.profiles && elemContext.profiles.length) {
|
|
174
149
|
scriptContextProfiles = elemContext.profiles;
|
|
175
150
|
scriptContextGlobals_1 = elemContext.globals;
|
|
@@ -179,42 +154,62 @@ var RecommendationInstantiator = /** @class */ (function () {
|
|
|
179
154
|
cart: (scriptContextGlobals_1 === null || scriptContextGlobals_1 === void 0 ? void 0 : scriptContextGlobals_1.cart) && getArrayFunc(scriptContextGlobals_1.cart),
|
|
180
155
|
products: scriptContextGlobals_1 === null || scriptContextGlobals_1 === void 0 ? void 0 : scriptContextGlobals_1.products,
|
|
181
156
|
shopper: (_a = scriptContextGlobals_1 === null || scriptContextGlobals_1 === void 0 ? void 0 : scriptContextGlobals_1.shopper) === null || _a === void 0 ? void 0 : _a.id,
|
|
182
|
-
batchId: Math.random(),
|
|
157
|
+
batchId: Math.floor(Math.random() * Number.MAX_SAFE_INTEGER),
|
|
183
158
|
}));
|
|
184
|
-
|
|
185
|
-
//
|
|
186
|
-
scriptContextProfiles.forEach(function (profile) {
|
|
159
|
+
// create a per-profile DomTargeter for each profile so each controller
|
|
160
|
+
// gets its own targeter tracking its specific element
|
|
161
|
+
scriptContextProfiles.forEach(function (profile, index) {
|
|
187
162
|
if (profile.selector) {
|
|
188
|
-
var
|
|
163
|
+
var profileTarget = {
|
|
189
164
|
selector: profile.selector,
|
|
190
165
|
autoRetarget: true,
|
|
191
|
-
clickRetarget: true,
|
|
192
166
|
profile: profile,
|
|
167
|
+
order: index,
|
|
193
168
|
};
|
|
194
|
-
|
|
169
|
+
// track the controller for this profile so multiple matched elements share it
|
|
170
|
+
var profileControllerPromise_1;
|
|
171
|
+
new snap_toolbox_1.DomTargeter([profileTarget], function (target, targetElem, _originalElem, targeter) { return __awaiter(_this, void 0, void 0, function () {
|
|
172
|
+
var profileRequestGlobals, profileContext, controller;
|
|
173
|
+
var _a, _b, _c;
|
|
174
|
+
return __generator(this, function (_d) {
|
|
175
|
+
switch (_d.label) {
|
|
176
|
+
case 0:
|
|
177
|
+
// skip retarget if the source script element was removed and release the current target
|
|
178
|
+
if (scriptElement.isConnected === false) {
|
|
179
|
+
if (targetElem) {
|
|
180
|
+
targeter === null || targeter === void 0 ? void 0 : targeter.releaseTargets([targetElem]);
|
|
181
|
+
}
|
|
182
|
+
return [2 /*return*/];
|
|
183
|
+
}
|
|
184
|
+
if (!(((_a = target.profile) === null || _a === void 0 ? void 0 : _a.profile) || ((_b = target.profile) === null || _b === void 0 ? void 0 : _b.tag))) return [3 /*break*/, 3];
|
|
185
|
+
profileRequestGlobals = __assign(__assign({}, requestGlobals_1), { profile: __assign(__assign({}, (_c = target.profile) === null || _c === void 0 ? void 0 : _c.options), { order: target.order }), tag: target.profile.tag || target.profile.profile });
|
|
186
|
+
profileContext = (0, deepmerge_1.default)(this.context, defined({ globals: scriptContextGlobals_1, profile: target.profile }));
|
|
187
|
+
if (elemContext.custom) {
|
|
188
|
+
profileContext.custom = (0, deepmerge_1.default)(profileContext.custom, elemContext.custom);
|
|
189
|
+
}
|
|
190
|
+
if (!!profileControllerPromise_1) return [3 /*break*/, 1];
|
|
191
|
+
// first element match — create the controller
|
|
192
|
+
profileControllerPromise_1 = readyTheController(this, services || {}, targetElem, profileContext, profileCount, scriptElement, profileRequestGlobals, target, targeter);
|
|
193
|
+
return [3 /*break*/, 3];
|
|
194
|
+
case 1: return [4 /*yield*/, profileControllerPromise_1];
|
|
195
|
+
case 2:
|
|
196
|
+
controller = _d.sent();
|
|
197
|
+
if (controller && targetElem) {
|
|
198
|
+
renderController(this, services || {}, controller, targetElem, scriptElement, target);
|
|
199
|
+
}
|
|
200
|
+
_d.label = 3;
|
|
201
|
+
case 3: return [2 /*return*/];
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
}); });
|
|
195
205
|
}
|
|
196
206
|
});
|
|
197
|
-
new snap_toolbox_1.DomTargeter(targetsArr_1, function (target, elem, originalElem) { return __awaiter(_this, void 0, void 0, function () {
|
|
198
|
-
var profileRequestGlobals, profileContext;
|
|
199
|
-
var _a, _b, _c;
|
|
200
|
-
return __generator(this, function (_d) {
|
|
201
|
-
if (((_a = target.profile) === null || _a === void 0 ? void 0 : _a.profile) || ((_b = target.profile) === null || _b === void 0 ? void 0 : _b.tag)) {
|
|
202
|
-
profileRequestGlobals = __assign(__assign({}, requestGlobals_1), { profile: (_c = target.profile) === null || _c === void 0 ? void 0 : _c.options, tag: target.profile.tag || target.profile.profile });
|
|
203
|
-
profileContext = (0, deepmerge_1.default)(this.context, defined({ globals: scriptContextGlobals_1, profile: target.profile }));
|
|
204
|
-
if (elemContext.custom) {
|
|
205
|
-
profileContext.custom = (0, deepmerge_1.default)(profileContext.custom, elemContext.custom);
|
|
206
|
-
}
|
|
207
|
-
readyTheController(this, services || {}, elem, profileContext, profileCount, originalElem, profileRequestGlobals, target);
|
|
208
|
-
}
|
|
209
|
-
return [2 /*return*/];
|
|
210
|
-
});
|
|
211
|
-
}); });
|
|
212
207
|
}
|
|
213
208
|
else {
|
|
214
209
|
profile = elemContext.profile, products = elemContext.products, product = elemContext.product, seed = elemContext.seed, filters = elemContext.filters, blockedItems = elemContext.blockedItems, options = elemContext.options, shopper = elemContext.shopper, shopperId = elemContext.shopperId;
|
|
215
210
|
combinedProducts = [].concat(products || product || seed || []);
|
|
216
211
|
shopperIdentifier = [shopper, shopper === null || shopper === void 0 ? void 0 : shopper.id, shopperId, shopperId === null || shopperId === void 0 ? void 0 : shopperId.id].filter(function (val) { return val && typeof val === 'string'; }).pop();
|
|
217
|
-
|
|
212
|
+
profileRequestGlobals_1 = __assign({ tag: profile }, defined({
|
|
218
213
|
products: combinedProducts.length ? combinedProducts : undefined,
|
|
219
214
|
cart: elemContext.cart && getArrayFunc(elemContext.cart),
|
|
220
215
|
shopper: shopperIdentifier,
|
|
@@ -222,7 +217,25 @@ var RecommendationInstantiator = /** @class */ (function () {
|
|
|
222
217
|
blockedItems: blockedItems,
|
|
223
218
|
profile: options,
|
|
224
219
|
}));
|
|
225
|
-
|
|
220
|
+
profileAttr = scriptElement.getAttribute('profile') || '';
|
|
221
|
+
recsContainer = scriptElement.ownerDocument.createElement('div');
|
|
222
|
+
recsContainer.setAttribute('searchspring-recommend', profileAttr);
|
|
223
|
+
scriptElement.before(recsContainer);
|
|
224
|
+
legacyContext_1 = (0, deepmerge_1.default)(this.context, elemContext);
|
|
225
|
+
// create a per-element DomTargeter for the injected div (mirrors grouped block pattern)
|
|
226
|
+
new snap_toolbox_1.DomTargeter([{ selector: "[searchspring-recommend=\"".concat(profileAttr, "\"]"), name: "legacy_".concat(profile, "_").concat(profileCount[profile || ''] || 0) }], function (_target, targetElem, _originalElem, targeter) { return __awaiter(_this, void 0, void 0, function () {
|
|
227
|
+
return __generator(this, function (_a) {
|
|
228
|
+
// skip retarget if the source script element was removed and release the current target
|
|
229
|
+
if (scriptElement.isConnected === false) {
|
|
230
|
+
if (targetElem) {
|
|
231
|
+
targeter === null || targeter === void 0 ? void 0 : targeter.releaseTargets([targetElem]);
|
|
232
|
+
}
|
|
233
|
+
return [2 /*return*/];
|
|
234
|
+
}
|
|
235
|
+
readyTheController(this, services || {}, targetElem, legacyContext_1, profileCount, scriptElement, profileRequestGlobals_1, target, targeter);
|
|
236
|
+
return [2 /*return*/];
|
|
237
|
+
});
|
|
238
|
+
}); });
|
|
226
239
|
}
|
|
227
240
|
return [2 /*return*/];
|
|
228
241
|
});
|
|
@@ -245,34 +258,55 @@ var RecommendationInstantiator = /** @class */ (function () {
|
|
|
245
258
|
RecommendationInstantiator.prototype.use = function (attachments) {
|
|
246
259
|
this.uses.push(attachments);
|
|
247
260
|
};
|
|
261
|
+
// cleanup to ensure we release controllers no longer rendering in the DOM (memory leak prevention for SPA's)
|
|
262
|
+
RecommendationInstantiator.prototype.cleanupStaleControllers = function () {
|
|
263
|
+
var _this = this;
|
|
264
|
+
Object.keys(this.controller).forEach(function (id) {
|
|
265
|
+
var _a;
|
|
266
|
+
var controller = _this.controller[id];
|
|
267
|
+
var targeters = Object.values(controller.targeters);
|
|
268
|
+
var hasConnectedTarget = targeters.some(function (targeter) {
|
|
269
|
+
return targeter.getTargetedElems().some(function (elem) {
|
|
270
|
+
var attr = elem.isConnected !== false && elem.getAttribute('ss-controller-id');
|
|
271
|
+
return attr === id;
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
if (!hasConnectedTarget) {
|
|
275
|
+
Object.keys(controller.targeters).forEach(function (targeterId) { return controller.targeters[targeterId].destroy(); });
|
|
276
|
+
controller.targeters = {};
|
|
277
|
+
delete _this.controller[id];
|
|
278
|
+
if ((_a = window.athos) === null || _a === void 0 ? void 0 : _a.controller) {
|
|
279
|
+
delete window.athos.controller[id];
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
};
|
|
248
284
|
return RecommendationInstantiator;
|
|
249
285
|
}());
|
|
250
286
|
exports.RecommendationInstantiator = RecommendationInstantiator;
|
|
251
|
-
function readyTheController(instance, services,
|
|
287
|
+
function readyTheController(instance, services, targetElem, context, profileCount, scriptElem, controllerGlobals, target, targeter) {
|
|
252
288
|
return __awaiter(this, void 0, void 0, function () {
|
|
253
|
-
var profile, batchId, cart, tag, batched, globals, controllerConfig, controller,
|
|
254
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t
|
|
255
|
-
return __generator(this, function (
|
|
256
|
-
switch (
|
|
289
|
+
var profile, batchId, cart, tag, batched, globals, controllerConfigBase, controllerConfig, controller, profileVars;
|
|
290
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
291
|
+
return __generator(this, function (_u) {
|
|
292
|
+
switch (_u.label) {
|
|
257
293
|
case 0:
|
|
258
294
|
profile = controllerGlobals.profile, batchId = controllerGlobals.batchId, cart = controllerGlobals.cart, tag = controllerGlobals.tag;
|
|
259
295
|
batched = (_b = (_a = profile === null || profile === void 0 ? void 0 : profile.batched) !== null && _a !== void 0 ? _a : controllerGlobals.batched) !== null && _b !== void 0 ? _b : true;
|
|
260
296
|
if (!tag) {
|
|
261
297
|
// FEEDBACK: change message depending on script integration type (profile vs. legacy)
|
|
262
|
-
instance.logger.warn("'tag' is missing from <script> tag, skipping this profile",
|
|
298
|
+
instance.logger.warn("'tag' is missing from <script> tag, skipping this profile", scriptElem);
|
|
263
299
|
return [2 /*return*/];
|
|
264
300
|
}
|
|
265
301
|
if (Array.isArray(cart)) {
|
|
266
302
|
instance.tracker.cookies.cart.set(cart);
|
|
267
303
|
}
|
|
268
|
-
profileCount[tag] = profileCount[tag] + 1 || 1;
|
|
269
304
|
globals = deepmerge_1.default.all([
|
|
270
305
|
((_c = instance.config.client) === null || _c === void 0 ? void 0 : _c.globals) || {},
|
|
271
306
|
((_d = instance.config.config) === null || _d === void 0 ? void 0 : _d.globals) || {},
|
|
272
307
|
controllerGlobals,
|
|
273
308
|
]);
|
|
274
|
-
|
|
275
|
-
id: "recommend_".concat(tag, "_").concat(profileCount[tag] - 1),
|
|
309
|
+
controllerConfigBase = {
|
|
276
310
|
tag: tag,
|
|
277
311
|
batched: (_f = batched !== null && batched !== void 0 ? batched : (_e = instance.config.config) === null || _e === void 0 ? void 0 : _e.batched) !== null && _f !== void 0 ? _f : true,
|
|
278
312
|
realtime: Boolean((_l = (_h = (_g = context.options) === null || _g === void 0 ? void 0 : _g.realtime) !== null && _h !== void 0 ? _h : (_k = (_j = context.profile) === null || _j === void 0 ? void 0 : _j.options) === null || _k === void 0 ? void 0 : _k.realtime) !== null && _l !== void 0 ? _l : (_m = instance.config.config) === null || _m === void 0 ? void 0 : _m.realtime),
|
|
@@ -281,106 +315,111 @@ function readyTheController(instance, services, injectedElem, context, profileCo
|
|
|
281
315
|
plugins: instance.config.config.plugins,
|
|
282
316
|
branch: ((_o = instance.config.config) === null || _o === void 0 ? void 0 : _o.branch) || 'production',
|
|
283
317
|
limit: (_p = instance.config.config) === null || _p === void 0 ? void 0 : _p.limit,
|
|
318
|
+
beacon: ((_q = instance.config.config) === null || _q === void 0 ? void 0 : _q.beacon) || { enabled: true },
|
|
284
319
|
settings: {
|
|
285
|
-
variants: (
|
|
320
|
+
variants: (_r = instance.config.config) === null || _r === void 0 ? void 0 : _r.variants,
|
|
321
|
+
quickview: (_s = instance.config.config) === null || _s === void 0 ? void 0 : _s.quickview,
|
|
286
322
|
},
|
|
287
323
|
globals: globals,
|
|
288
324
|
};
|
|
289
325
|
if (profile === null || profile === void 0 ? void 0 : profile.branch) {
|
|
290
|
-
|
|
326
|
+
controllerConfigBase.branch = profile === null || profile === void 0 ? void 0 : profile.branch;
|
|
291
327
|
}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
return (JSON.stringify({
|
|
296
|
-
batched: controller.config.batched,
|
|
297
|
-
branch: controller.config.branch,
|
|
298
|
-
globals: controller.config.globals,
|
|
299
|
-
tag: controller.config.tag,
|
|
300
|
-
realtime: controller.config.realtime,
|
|
301
|
-
}) ==
|
|
302
|
-
JSON.stringify({
|
|
303
|
-
batched: controllerConfig.batched,
|
|
304
|
-
branch: controllerConfig.branch,
|
|
305
|
-
globals: controllerConfig.globals,
|
|
306
|
-
tag: controllerConfig.tag,
|
|
307
|
-
realtime: controllerConfig.realtime,
|
|
308
|
-
}));
|
|
309
|
-
})[0];
|
|
310
|
-
if (!!controller) return [3 /*break*/, 2];
|
|
311
|
-
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require('../create/createRecommendationController')); })];
|
|
312
|
-
case 1:
|
|
313
|
-
createRecommendationController = (_w.sent()).default;
|
|
314
|
-
controller = createRecommendationController({
|
|
328
|
+
profileCount[tag] = profileCount[tag] + 1 || 1;
|
|
329
|
+
controllerConfig = __assign({ id: "recommend_".concat(tag, "_").concat(profileCount[tag] - 1) }, controllerConfigBase);
|
|
330
|
+
controller = (0, create_1.createRecommendationController)({
|
|
315
331
|
url: instance.config.url,
|
|
316
332
|
controller: controllerConfig,
|
|
317
333
|
context: context,
|
|
318
334
|
mode: instance.config.mode,
|
|
319
335
|
}, { client: instance.client, tracker: instance.tracker });
|
|
336
|
+
// mark element with controller id so cleanupStaleControllers knows it's active
|
|
337
|
+
if (targetElem) {
|
|
338
|
+
targetElem.setAttribute('ss-controller-id', controller.id);
|
|
339
|
+
}
|
|
320
340
|
instance.uses.forEach(function (attachements) { return controller.use(attachements); });
|
|
321
341
|
instance.plugins.forEach(function (plugin) { return controller.plugin.apply(controller, __spreadArray([plugin.func], plugin.args, false)); });
|
|
322
342
|
instance.middleware.forEach(function (middleware) { return controller.on.apply(controller, __spreadArray([middleware.event], middleware.func, false)); });
|
|
323
|
-
|
|
324
|
-
case 2:
|
|
325
|
-
if (!!controller.store.loading) return [3 /*break*/, 4];
|
|
326
|
-
return [4 /*yield*/, controller.search()];
|
|
327
|
-
case 3:
|
|
328
|
-
_w.sent();
|
|
329
|
-
_w.label = 4;
|
|
330
|
-
case 4:
|
|
331
|
-
controller.addTargeter(instance.targeter);
|
|
343
|
+
// add controller to instantiator and global namespace
|
|
332
344
|
instance.controller[controller.config.id] = controller;
|
|
333
345
|
window.athos.controller = window.athos.controller || {};
|
|
334
346
|
window.athos.controller[controller.config.id] = controller;
|
|
335
|
-
|
|
336
|
-
|
|
347
|
+
// register targeter on the controller for element tracking
|
|
348
|
+
controller.addTargeter(targeter);
|
|
349
|
+
if (!!controller.store.loading) return [3 /*break*/, 2];
|
|
350
|
+
return [4 /*yield*/, controller.search()];
|
|
351
|
+
case 1:
|
|
352
|
+
_u.sent();
|
|
353
|
+
_u.label = 2;
|
|
354
|
+
case 2:
|
|
355
|
+
profileVars = (_t = controller.store.profile.display) === null || _t === void 0 ? void 0 : _t.templateParameters;
|
|
337
356
|
if (controller.store.error) {
|
|
338
357
|
//something went wrong
|
|
339
358
|
//err was already logged - nothing to do.
|
|
340
359
|
return [2 /*return*/];
|
|
341
360
|
}
|
|
342
361
|
if (!controller.store.profile.display.template) {
|
|
343
|
-
instance.logger.error("profile '".concat(tag, "' found on the following element is missing a template!\n").concat(
|
|
362
|
+
instance.logger.error("profile '".concat(tag, "' found on the following element is missing a template!\n").concat(scriptElem === null || scriptElem === void 0 ? void 0 : scriptElem.outerHTML));
|
|
344
363
|
return [2 /*return*/];
|
|
345
364
|
}
|
|
346
365
|
if (!profileVars) {
|
|
347
|
-
instance.logger.error("profile '".concat(tag, "' found on the following element is missing templateParameters!\n").concat(
|
|
366
|
+
instance.logger.error("profile '".concat(tag, "' found on the following element is missing templateParameters!\n").concat(scriptElem === null || scriptElem === void 0 ? void 0 : scriptElem.outerHTML));
|
|
348
367
|
return [2 /*return*/];
|
|
349
368
|
}
|
|
369
|
+
if (!targetElem) return [3 /*break*/, 4];
|
|
370
|
+
return [4 /*yield*/, renderController(instance, services, controller, targetElem, scriptElem, target)];
|
|
371
|
+
case 3:
|
|
372
|
+
_u.sent();
|
|
373
|
+
_u.label = 4;
|
|
374
|
+
case 4: return [2 /*return*/, controller];
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
function renderController(instance, services, controller, targetElem, scriptElem, target) {
|
|
380
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
381
|
+
var tag, component, props, RecommendationsComponent, importPromises, importResolutions;
|
|
382
|
+
var _a, _b, _c, _d;
|
|
383
|
+
return __generator(this, function (_e) {
|
|
384
|
+
switch (_e.label) {
|
|
385
|
+
case 0:
|
|
386
|
+
// update the element with the controller id
|
|
387
|
+
if (targetElem) {
|
|
388
|
+
targetElem.setAttribute('ss-controller-id', controller.id);
|
|
389
|
+
}
|
|
390
|
+
tag = controller.config.tag;
|
|
391
|
+
component = (_b = (_a = controller.store.profile.display) === null || _a === void 0 ? void 0 : _a.template) === null || _b === void 0 ? void 0 : _b.component;
|
|
350
392
|
if (!component) {
|
|
351
|
-
instance.logger.error("profile '".concat(tag, "' found on the following element is missing a component!\n").concat(
|
|
393
|
+
instance.logger.error("profile '".concat(tag, "' found on the following element is missing a component!\n").concat(scriptElem === null || scriptElem === void 0 ? void 0 : scriptElem.outerHTML));
|
|
352
394
|
return [2 /*return*/];
|
|
353
395
|
}
|
|
354
396
|
props = {};
|
|
355
397
|
RecommendationsComponent = undefined;
|
|
356
398
|
props.className = "ss__recommendation-".concat(component.toLowerCase());
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
if (!(instance.config.components[component] && typeof instance.config.components[component] == 'function')) return [3 /*break*/, 6];
|
|
399
|
+
(_d = (_c = instance.config.components[component]) === null || _c === void 0 ? void 0 : _c.onTarget) === null || _d === void 0 ? void 0 : _d.call(_c, target, scriptElem, targetElem, controller);
|
|
400
|
+
if (!(instance.config.components[component] && typeof instance.config.components[component] == 'function')) return [3 /*break*/, 2];
|
|
360
401
|
return [4 /*yield*/, instance.config.components[component]()];
|
|
361
|
-
case
|
|
362
|
-
RecommendationsComponent =
|
|
363
|
-
return [3 /*break*/,
|
|
364
|
-
case
|
|
365
|
-
if (!(instance.config.components[component] && typeof instance.config.components[component] == 'object')) return [3 /*break*/,
|
|
402
|
+
case 1:
|
|
403
|
+
RecommendationsComponent = _e.sent();
|
|
404
|
+
return [3 /*break*/, 4];
|
|
405
|
+
case 2:
|
|
406
|
+
if (!(instance.config.components[component] && typeof instance.config.components[component] == 'object')) return [3 /*break*/, 4];
|
|
366
407
|
props = instance.config.components[component].props || {};
|
|
367
408
|
importPromises = [];
|
|
368
409
|
// dynamically import the component
|
|
369
410
|
importPromises.push(instance.config.components[component].component());
|
|
370
411
|
return [4 /*yield*/, Promise.all(importPromises)];
|
|
371
|
-
case
|
|
372
|
-
importResolutions =
|
|
412
|
+
case 3:
|
|
413
|
+
importResolutions = _e.sent();
|
|
373
414
|
RecommendationsComponent = importResolutions[0];
|
|
374
|
-
|
|
375
|
-
case
|
|
415
|
+
_e.label = 4;
|
|
416
|
+
case 4:
|
|
376
417
|
if (!RecommendationsComponent) {
|
|
377
|
-
instance.logger.error("profile '".concat(tag, "' found on the following element is expecting component mapping for '").concat(component, "' - verify instantiator config.\n").concat(
|
|
418
|
+
instance.logger.error("profile '".concat(tag, "' found on the following element is expecting component mapping for '").concat(component, "' - verify instantiator config.\n").concat(scriptElem === null || scriptElem === void 0 ? void 0 : scriptElem.outerHTML));
|
|
378
419
|
return [2 /*return*/];
|
|
379
420
|
}
|
|
380
421
|
setTimeout(function () {
|
|
381
|
-
|
|
382
|
-
(0, preact_1.render)((0, jsx_runtime_1.jsx)(RecommendationsComponent, __assign({ controller: controller, snap: services === null || services === void 0 ? void 0 : services.snap }, props)), injectedElem);
|
|
383
|
-
}
|
|
422
|
+
(0, preact_1.render)((0, jsx_runtime_1.jsx)(RecommendationsComponent, __assign({ controller: controller, snap: services === null || services === void 0 ? void 0 : services.snap }, props)), targetElem);
|
|
384
423
|
});
|
|
385
424
|
return [2 /*return*/];
|
|
386
425
|
}
|
package/dist/cjs/src/Snap.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import type { Controllers, AbstractController, SearchControllerConfig, ChatContr
|
|
|
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";
|
|
@@ -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,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,gBAAgB,EAEhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAmB,MAAM,6BAA6B,CAAC;AAClG,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;
|
|
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,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,gBAAgB,EAEhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAmB,MAAM,6BAA6B,CAAC;AAClG,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,KAAK,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC/H,OAAO,KAAK,EAAE,sBAAsB,EAAwB,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAKvE,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAC3C,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,UAAU,cAAc,CAAC;AACtC,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACpC,KAAK,CAAC,EAAE;QACP,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,8BAA8B,CAAC,gBAAgB,IAAI;IAC9D,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,GAAG,CAAC,EAAE,mBAAmB,GAAG;QAC3B,OAAO,CAAC,EAAE,gBAAgB,CAAC;KAC3B,CAAC;IACF,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,OAAO,OAAO,GAAG,OAAO,CAAC;IACtC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,MAAM,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,YAAY,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,MAAM,CAAC,EAAE,aAAa,CAAC;KACvB,CAAC;IACF,aAAa,CAAC,EAAE;QACf,cAAc,CAAC,EAAE,gCAAgC,CAAC;KAClD,CAAC;IACF,WAAW,CAAC,EAAE;QACb,MAAM,CAAC,EAAE,8BAA8B,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,EAAE,8BAA8B,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC9D,YAAY,CAAC,EAAE,8BAA8B,CAAC,4BAA4B,CAAC,EAAE,CAAC;QAC9E,MAAM,CAAC,EAAE,8BAA8B,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAClE,cAAc,CAAC,EAAE,8BAA8B,CAAC,8BAA8B,CAAC,EAAE,CAAC;KAClF,CAAC;CACF,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,cAAc,CAAC;CAChC,CAAC;AAqCF,qBAAa,IAAI;IAChB,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,qBAAqB,CAEtB;IACP,OAAO,CAAC,mBAAmB,CAEpB;IAEA,MAAM,EAAG,MAAM,CAAC;IAChB,MAAM,EAAG,MAAM,CAAC;IAChB,OAAO,EAAG,OAAO,CAAC;IAClB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE;QACnB,CAAC,kBAAkB,EAAE,MAAM,GAAG,WAAW,CAAC;KAC1C,CAAM;IAEA,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B,eAAe,OAAQ,MAAM,KAAG,OAAO,CAAC,0BAA0B,CAAC,CAExE;IAEK,aAAa,OAAQ,MAAM,KAAG,OAAO,CAAC,WAAW,CAAC,CAEvD;IAEK,cAAc,qBAAsB,MAAM,EAAE,KAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAI1E;IAGK,gBAAgB,SAChB,MAAM,OAAO,eAAe,UAC1B,iBAAiB,aACd,sBAAsB,cACrB,mBAAmB,YACrB,gBAAgB,aACf,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KACjF,OAAO,CAAC,WAAW,CAAC,CAarB;IAGF,OAAO,CAAC,iBAAiB,CAyDvB;IAEK,QAAQ;4BACM,UAAU,KAAG,IAAI;uBAsDtB,UAAU,KAAG,IAAI;MAgC/B;gBAEU,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,YAAY;CAswBvD"}
|
package/dist/cjs/src/Snap.js
CHANGED
|
@@ -225,12 +225,14 @@ var Snap = /** @class */ (function () {
|
|
|
225
225
|
var elem = null;
|
|
226
226
|
elem = event && event.target;
|
|
227
227
|
while (Object.keys(attributes).length == 0 && elem !== null && levels <= MAX_PARENT_LEVELS) {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
228
|
+
if (elem.attributes) {
|
|
229
|
+
Object.values(elem.attributes).forEach(function (attr) {
|
|
230
|
+
var attrName = attr.nodeName;
|
|
231
|
+
if (attributeList.indexOf(attrName) != -1) {
|
|
232
|
+
attributes[attrName] = elem && elem.getAttribute(attrName);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}
|
|
234
236
|
elem = elem.parentElement;
|
|
235
237
|
levels++;
|
|
236
238
|
}
|
|
@@ -750,6 +752,16 @@ var Snap = /** @class */ (function () {
|
|
|
750
752
|
if (!target.component) {
|
|
751
753
|
throw new Error("Targets at index ".concat(target_index, " missing component value (Component)."));
|
|
752
754
|
}
|
|
755
|
+
// Chat mounts at the document level — if the consumer aimed at <body>
|
|
756
|
+
// directly, give DomTargeter a child to render into instead of stomping on body.
|
|
757
|
+
if (target.selector === 'body' && !target.inject) {
|
|
758
|
+
target = __assign(__assign({}, target), { inject: {
|
|
759
|
+
action: 'append',
|
|
760
|
+
element: function () {
|
|
761
|
+
return document.createElement('div');
|
|
762
|
+
},
|
|
763
|
+
} });
|
|
764
|
+
}
|
|
753
765
|
var targeter = new snap_toolbox_1.DomTargeter([__assign({}, target)], function (target, elem, originalElem) { return __awaiter(_this, void 0, void 0, function () {
|
|
754
766
|
var cntrlr;
|
|
755
767
|
return __generator(this, function (_a) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnapHybrid.d.ts","sourceRoot":"","sources":["../../../src/SnapHybrid.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"SnapHybrid.d.ts","sourceRoot":"","sources":["../../../src/SnapHybrid.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAoB,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAKrH,KAAK,uBAAuB,GAAG;IAC9B,eAAe,EAAE,yBAAyB,GAAG,2BAA2B,CAAC;IACzE,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,qBAAa,UAAW,SAAQ,IAAI;gBACvB,MAAM,EAAE,uBAAuB;CAqB3C"}
|
|
@@ -1,82 +1,23 @@
|
|
|
1
1
|
import { Snap } from '../Snap';
|
|
2
2
|
import { TemplatesStore } from './Stores/TemplateStore';
|
|
3
|
-
import { type
|
|
3
|
+
import { type AutocompleteStoreConfigSettings } from '@athoscommerce/snap-store-mobx';
|
|
4
4
|
import type { UrlTranslatorConfig } from '@athoscommerce/snap-url-manager';
|
|
5
5
|
import type { PluginGrouping } from '@athoscommerce/snap-controller';
|
|
6
|
-
import type {
|
|
6
|
+
import type { RecommendationComponentObject } from '../Instantiators/RecommendationInstantiator';
|
|
7
7
|
import type { SnapFeatures } from '../types';
|
|
8
8
|
import type { SnapConfig, ExtendedTarget } from '../Snap';
|
|
9
|
-
import type {
|
|
10
|
-
|
|
11
|
-
export declare const
|
|
12
|
-
export declare const TEMPLATE_EDITOR_PARAM = "athos-editor";
|
|
13
|
-
export type SearchTargetConfig = {
|
|
14
|
-
selector: string;
|
|
15
|
-
component: keyof LibraryImports['component']['search'];
|
|
16
|
-
};
|
|
17
|
-
export type AutocompleteTargetConfig = {
|
|
18
|
-
selector: string;
|
|
19
|
-
inputSelector?: string;
|
|
20
|
-
component: keyof LibraryImports['component']['autocomplete'];
|
|
21
|
-
};
|
|
22
|
-
export type RecommendationDefaultTargetConfig = {
|
|
23
|
-
component: keyof LibraryImports['component']['recommendation']['default'];
|
|
24
|
-
};
|
|
25
|
-
export type RecommendationEmailTargetConfig = {
|
|
26
|
-
component: keyof LibraryImports['component']['recommendation']['email'];
|
|
27
|
-
};
|
|
28
|
-
export type RecommendationBundleTargetConfig = {
|
|
29
|
-
component: keyof LibraryImports['component']['recommendation']['bundle'];
|
|
30
|
-
};
|
|
31
|
-
export type ChatTargetConfig = {
|
|
32
|
-
selector: string;
|
|
33
|
-
component: keyof LibraryImports['component']['chat'];
|
|
34
|
-
};
|
|
9
|
+
import type { TemplatesStoreConfigLocked, TemplatesStoreConfigUnlocked } from './Stores/TemplateStore';
|
|
10
|
+
export declare const TEMPLATE_EDITOR_COOKIE = "athosEditor";
|
|
11
|
+
export declare const TEMPLATE_EDITOR_UI_PARAM = "athos-editor";
|
|
35
12
|
export type SnapTemplatesConfig = SnapTemplatesConfigLocked;
|
|
36
|
-
export type
|
|
37
|
-
unlocked
|
|
13
|
+
export type SnapTemplatesConfigUnlocked = TemplatesStoreConfigUnlocked & {
|
|
14
|
+
unlocked: true;
|
|
38
15
|
url?: UrlTranslatorConfig;
|
|
39
16
|
features?: SnapFeatures;
|
|
40
|
-
search?: {
|
|
41
|
-
targets: SearchTargetConfig[];
|
|
42
|
-
settings?: SearchStoreConfigSettings;
|
|
43
|
-
plugins?: PluginsConfigs;
|
|
44
|
-
};
|
|
45
|
-
autocomplete?: {
|
|
46
|
-
targets: AutocompleteTargetConfig[];
|
|
47
|
-
settings?: AutocompleteStoreConfigSettings;
|
|
48
|
-
plugins?: PluginsConfigs;
|
|
49
|
-
};
|
|
50
|
-
recommendation?: {
|
|
51
|
-
email?: {
|
|
52
|
-
[profileComponentName: string]: RecommendationEmailTargetConfig;
|
|
53
|
-
};
|
|
54
|
-
default?: {
|
|
55
|
-
[profileComponentName: string]: RecommendationDefaultTargetConfig;
|
|
56
|
-
};
|
|
57
|
-
bundle?: {
|
|
58
|
-
[profileComponentName: string]: RecommendationBundleTargetConfig;
|
|
59
|
-
};
|
|
60
|
-
settings?: RecommendationInstantiatorConfigSettings;
|
|
61
|
-
plugins?: PluginsConfigs;
|
|
62
|
-
};
|
|
63
|
-
chat?: {
|
|
64
|
-
targets: ChatTargetConfig[];
|
|
65
|
-
settings?: ChatStoreConfigSettings;
|
|
66
|
-
plugins?: PluginsConfigs;
|
|
67
|
-
};
|
|
68
17
|
};
|
|
69
|
-
export type
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
plugins?: PluginsConfigsUnlocked;
|
|
73
|
-
};
|
|
74
|
-
autocomplete?: Omit<NonNullable<SnapTemplatesConfigLocked['autocomplete']>, 'plugins'> & {
|
|
75
|
-
plugins?: PluginsConfigsUnlocked;
|
|
76
|
-
};
|
|
77
|
-
recommendation?: Omit<NonNullable<SnapTemplatesConfigLocked['recommendation']>, 'plugins'> & {
|
|
78
|
-
plugins?: PluginsConfigsUnlocked;
|
|
79
|
-
};
|
|
18
|
+
export type SnapTemplatesConfigLocked = TemplatesStoreConfigLocked & {
|
|
19
|
+
url?: UrlTranslatorConfig;
|
|
20
|
+
features?: SnapFeatures;
|
|
80
21
|
};
|
|
81
22
|
export declare const DEFAULT_FEATURES: SnapFeatures;
|
|
82
23
|
export declare const DEFAULT_AUTOCOMPLETE_CONTROLLER_SETTINGS: AutocompleteStoreConfigSettings;
|
|
@@ -87,9 +28,9 @@ export declare class SnapTemplates extends Snap {
|
|
|
87
28
|
export declare function mapBreakpoints<ControllerConfigSettings>(breakpointsKeys: number[], breakpointSettings: ControllerConfigSettings[]): {
|
|
88
29
|
[key: string]: ControllerConfigSettings | Record<string, never>;
|
|
89
30
|
};
|
|
90
|
-
export declare const createSearchTargeters: (templateConfig: SnapTemplatesConfig
|
|
91
|
-
export declare const createChatTargeters: (templateConfig: SnapTemplatesConfig
|
|
92
|
-
export declare function createAutocompleteTargeters(templateConfig: SnapTemplatesConfig
|
|
31
|
+
export declare const createSearchTargeters: (templateConfig: SnapTemplatesConfig, templatesStore: TemplatesStore) => ExtendedTarget[];
|
|
32
|
+
export declare const createChatTargeters: (templateConfig: SnapTemplatesConfig, templatesStore: TemplatesStore) => ExtendedTarget[];
|
|
33
|
+
export declare function createAutocompleteTargeters(templateConfig: SnapTemplatesConfig, templatesStore: TemplatesStore): ExtendedTarget[];
|
|
93
34
|
export declare function createRecommendationComponentMapping(templateConfig: SnapTemplatesConfig | SnapTemplatesConfigUnlocked, templatesStore: TemplatesStore): {
|
|
94
35
|
[name: string]: RecommendationComponentObject;
|
|
95
36
|
};
|