@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.
Files changed (214) hide show
  1. package/README.md +16 -0
  2. package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts +3 -3
  3. package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts.map +1 -1
  4. package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +7 -8
  5. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +1 -1
  6. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -1
  7. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +3 -3
  8. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +2 -0
  9. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -1
  10. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +24 -25
  11. package/dist/cjs/components/src/components/Molecules/Filter/Filter.d.ts +1 -1
  12. package/dist/cjs/components/src/components/Molecules/Filter/Filter.d.ts.map +1 -1
  13. package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  14. package/dist/cjs/components/src/components/Molecules/Result/Result.js +11 -6
  15. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts +4 -1
  16. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  17. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.js +3 -3
  18. package/dist/cjs/components/src/components/Molecules/TemplatesEditor/Components/AbstractedControls.js +5 -5
  19. package/dist/cjs/components/src/components/Molecules/TemplatesEditor/Components/Control.d.ts.map +1 -1
  20. package/dist/cjs/components/src/components/Molecules/TemplatesEditor/Components/Control.js +31 -31
  21. package/dist/cjs/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.d.ts.map +1 -1
  22. package/dist/cjs/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.js +22 -36
  23. package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts +7 -0
  24. package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -1
  25. package/dist/cjs/components/src/components/Organisms/Chat/Chat.js +638 -431
  26. package/dist/cjs/components/src/components/Organisms/Chat/ChatResult.d.ts.map +1 -1
  27. package/dist/cjs/components/src/components/Organisms/Chat/ChatResult.js +4 -3
  28. package/dist/cjs/components/src/components/Organisms/Chat/MessageText.d.ts +3 -1
  29. package/dist/cjs/components/src/components/Organisms/Chat/MessageText.d.ts.map +1 -1
  30. package/dist/cjs/components/src/components/Organisms/Chat/MessageText.js +22 -19
  31. package/dist/cjs/components/src/components/Organisms/Chat/MessageUser.d.ts +3 -1
  32. package/dist/cjs/components/src/components/Organisms/Chat/MessageUser.d.ts.map +1 -1
  33. package/dist/cjs/components/src/components/Organisms/Chat/MessageUser.js +39 -21
  34. package/dist/cjs/components/src/components/Organisms/Chat/ResultsDisplay.d.ts +1 -1
  35. package/dist/cjs/components/src/components/Organisms/Chat/ResultsDisplay.d.ts.map +1 -1
  36. package/dist/cjs/components/src/components/Organisms/Chat/ResultsDisplay.js +7 -11
  37. package/dist/cjs/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts +2 -2
  38. package/dist/cjs/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts.map +1 -1
  39. package/dist/cjs/components/src/components/Organisms/ProductQuickView/ProductQuickView.d.ts +11 -0
  40. package/dist/cjs/components/src/components/Organisms/ProductQuickView/ProductQuickView.d.ts.map +1 -0
  41. package/dist/cjs/components/src/components/Organisms/ProductQuickView/ProductQuickView.js +461 -0
  42. package/dist/cjs/components/src/components/Organisms/ProductQuickView/index.d.ts +2 -0
  43. package/dist/cjs/components/src/components/Organisms/ProductQuickView/index.d.ts.map +1 -0
  44. package/dist/cjs/components/src/components/Organisms/ProductQuickView/index.js +17 -0
  45. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  46. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +0 -2
  47. package/dist/cjs/components/src/hooks/useAcRenderedInput.d.ts.map +1 -1
  48. package/dist/cjs/components/src/hooks/useAcRenderedInput.js +65 -15
  49. package/dist/cjs/components/src/hooks/useMediaQuery.d.ts.map +1 -1
  50. package/dist/cjs/components/src/hooks/useMediaQuery.js +3 -1
  51. package/dist/cjs/components/src/index.d.ts +1 -0
  52. package/dist/cjs/components/src/index.d.ts.map +1 -1
  53. package/dist/cjs/components/src/index.js +1 -0
  54. package/dist/cjs/components/src/providers/theme.d.ts +1 -1
  55. package/dist/cjs/components/src/providers/theme.d.ts.map +1 -1
  56. package/dist/cjs/components/src/themes/base/base.js +3 -3
  57. package/dist/cjs/components/src/utilities/Colour/Colour.d.ts +11 -0
  58. package/dist/cjs/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  59. package/dist/cjs/components/src/utilities/Colour/Colour.js +32 -0
  60. package/dist/cjs/src/Instantiators/RecommendationInstantiator.d.ts +3 -1
  61. package/dist/cjs/src/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
  62. package/dist/cjs/src/Instantiators/RecommendationInstantiator.js +162 -123
  63. package/dist/cjs/src/Snap.d.ts +1 -1
  64. package/dist/cjs/src/Snap.d.ts.map +1 -1
  65. package/dist/cjs/src/Snap.js +18 -6
  66. package/dist/cjs/src/SnapHybrid.d.ts.map +1 -1
  67. package/dist/cjs/src/Templates/SnapTemplates.d.ts +13 -72
  68. package/dist/cjs/src/Templates/SnapTemplates.d.ts.map +1 -1
  69. package/dist/cjs/src/Templates/SnapTemplates.js +123 -72
  70. package/dist/cjs/src/Templates/Stores/TargetStore.d.ts +7 -6
  71. package/dist/cjs/src/Templates/Stores/TargetStore.d.ts.map +1 -1
  72. package/dist/cjs/src/Templates/Stores/TargetStore.js +14 -8
  73. package/dist/cjs/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts +58 -8
  74. package/dist/cjs/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts.map +1 -1
  75. package/dist/cjs/src/Templates/Stores/TemplateEditor/TemplateEditorStore.js +467 -96
  76. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.d.ts +1 -0
  77. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.d.ts.map +1 -1
  78. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.js +123 -70
  79. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.d.ts.map +1 -1
  80. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.js +9 -3
  81. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.d.ts +1 -0
  82. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.d.ts.map +1 -1
  83. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.js +86 -1
  84. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/themeUI.d.ts.map +1 -1
  85. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/themeUI.js +33 -14
  86. package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts +93 -30
  87. package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  88. package/dist/cjs/src/Templates/Stores/TemplateStore.js +33 -41
  89. package/dist/cjs/src/Templates/Stores/ThemeStore.d.ts +2 -8
  90. package/dist/cjs/src/Templates/Stores/ThemeStore.d.ts.map +1 -1
  91. package/dist/cjs/src/Templates/Stores/ThemeStore.js +3 -28
  92. package/dist/cjs/src/Templates/index.d.ts +1 -1
  93. package/dist/cjs/src/Templates/index.d.ts.map +1 -1
  94. package/dist/cjs/src/create/createChatController.js +1 -1
  95. package/dist/cjs/src/index.d.ts +1 -0
  96. package/dist/cjs/src/index.d.ts.map +1 -1
  97. package/dist/cjs/src/setupEvents.d.ts +13 -0
  98. package/dist/cjs/src/setupEvents.d.ts.map +1 -1
  99. package/dist/cjs/src/setupEvents.js +56 -8
  100. package/dist/cjs/src/types.d.ts +3 -1
  101. package/dist/cjs/src/types.d.ts.map +1 -1
  102. package/dist/cjs/src/utils/combineMerge.d.ts +2 -0
  103. package/dist/cjs/src/utils/combineMerge.d.ts.map +1 -0
  104. package/dist/cjs/src/utils/combineMerge.js +22 -0
  105. package/dist/cjs/src/utils/index.d.ts +1 -0
  106. package/dist/cjs/src/utils/index.d.ts.map +1 -1
  107. package/dist/cjs/src/utils/index.js +3 -1
  108. package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts +3 -3
  109. package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts.map +1 -1
  110. package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +7 -8
  111. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +1 -1
  112. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -1
  113. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +3 -3
  114. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +2 -0
  115. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -1
  116. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +24 -26
  117. package/dist/esm/components/src/components/Molecules/Filter/Filter.d.ts +1 -1
  118. package/dist/esm/components/src/components/Molecules/Filter/Filter.d.ts.map +1 -1
  119. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  120. package/dist/esm/components/src/components/Molecules/Result/Result.js +9 -4
  121. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +4 -1
  122. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  123. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +3 -3
  124. package/dist/esm/components/src/components/Molecules/TemplatesEditor/Components/AbstractedControls.js +5 -5
  125. package/dist/esm/components/src/components/Molecules/TemplatesEditor/Components/Control.d.ts.map +1 -1
  126. package/dist/esm/components/src/components/Molecules/TemplatesEditor/Components/Control.js +29 -29
  127. package/dist/esm/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.d.ts.map +1 -1
  128. package/dist/esm/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.js +22 -35
  129. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +7 -0
  130. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -1
  131. package/dist/esm/components/src/components/Organisms/Chat/Chat.js +557 -359
  132. package/dist/esm/components/src/components/Organisms/Chat/ChatResult.d.ts.map +1 -1
  133. package/dist/esm/components/src/components/Organisms/Chat/ChatResult.js +4 -3
  134. package/dist/esm/components/src/components/Organisms/Chat/MessageText.d.ts +3 -1
  135. package/dist/esm/components/src/components/Organisms/Chat/MessageText.d.ts.map +1 -1
  136. package/dist/esm/components/src/components/Organisms/Chat/MessageText.js +21 -19
  137. package/dist/esm/components/src/components/Organisms/Chat/MessageUser.d.ts +3 -1
  138. package/dist/esm/components/src/components/Organisms/Chat/MessageUser.d.ts.map +1 -1
  139. package/dist/esm/components/src/components/Organisms/Chat/MessageUser.js +36 -21
  140. package/dist/esm/components/src/components/Organisms/Chat/ResultsDisplay.d.ts +1 -1
  141. package/dist/esm/components/src/components/Organisms/Chat/ResultsDisplay.d.ts.map +1 -1
  142. package/dist/esm/components/src/components/Organisms/Chat/ResultsDisplay.js +7 -11
  143. package/dist/esm/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts +2 -2
  144. package/dist/esm/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts.map +1 -1
  145. package/dist/esm/components/src/components/Organisms/ProductQuickView/ProductQuickView.d.ts +11 -0
  146. package/dist/esm/components/src/components/Organisms/ProductQuickView/ProductQuickView.d.ts.map +1 -0
  147. package/dist/esm/components/src/components/Organisms/ProductQuickView/ProductQuickView.js +436 -0
  148. package/dist/esm/components/src/components/Organisms/ProductQuickView/index.d.ts +2 -0
  149. package/dist/esm/components/src/components/Organisms/ProductQuickView/index.d.ts.map +1 -0
  150. package/dist/esm/components/src/components/Organisms/ProductQuickView/index.js +1 -0
  151. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  152. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +0 -2
  153. package/dist/esm/components/src/hooks/useAcRenderedInput.d.ts.map +1 -1
  154. package/dist/esm/components/src/hooks/useAcRenderedInput.js +61 -11
  155. package/dist/esm/components/src/hooks/useMediaQuery.d.ts.map +1 -1
  156. package/dist/esm/components/src/hooks/useMediaQuery.js +3 -1
  157. package/dist/esm/components/src/index.d.ts +1 -0
  158. package/dist/esm/components/src/index.d.ts.map +1 -1
  159. package/dist/esm/components/src/index.js +1 -0
  160. package/dist/esm/components/src/providers/theme.d.ts +1 -1
  161. package/dist/esm/components/src/providers/theme.d.ts.map +1 -1
  162. package/dist/esm/components/src/themes/base/base.js +3 -3
  163. package/dist/esm/components/src/utilities/Colour/Colour.d.ts +11 -0
  164. package/dist/esm/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  165. package/dist/esm/components/src/utilities/Colour/Colour.js +30 -0
  166. package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts +3 -1
  167. package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
  168. package/dist/esm/src/Instantiators/RecommendationInstantiator.js +131 -84
  169. package/dist/esm/src/Snap.d.ts +1 -1
  170. package/dist/esm/src/Snap.d.ts.map +1 -1
  171. package/dist/esm/src/Snap.js +21 -6
  172. package/dist/esm/src/SnapHybrid.d.ts.map +1 -1
  173. package/dist/esm/src/Templates/SnapTemplates.d.ts +13 -72
  174. package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
  175. package/dist/esm/src/Templates/SnapTemplates.js +137 -78
  176. package/dist/esm/src/Templates/Stores/TargetStore.d.ts +7 -6
  177. package/dist/esm/src/Templates/Stores/TargetStore.d.ts.map +1 -1
  178. package/dist/esm/src/Templates/Stores/TargetStore.js +14 -8
  179. package/dist/esm/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts +58 -8
  180. package/dist/esm/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts.map +1 -1
  181. package/dist/esm/src/Templates/Stores/TemplateEditor/TemplateEditorStore.js +447 -89
  182. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.d.ts +1 -0
  183. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.d.ts.map +1 -1
  184. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.js +118 -66
  185. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.d.ts.map +1 -1
  186. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.js +9 -3
  187. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.d.ts +1 -0
  188. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.d.ts.map +1 -1
  189. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.js +82 -1
  190. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/themeUI.d.ts.map +1 -1
  191. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/themeUI.js +27 -8
  192. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +93 -30
  193. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  194. package/dist/esm/src/Templates/Stores/TemplateStore.js +29 -38
  195. package/dist/esm/src/Templates/Stores/ThemeStore.d.ts +2 -8
  196. package/dist/esm/src/Templates/Stores/ThemeStore.d.ts.map +1 -1
  197. package/dist/esm/src/Templates/Stores/ThemeStore.js +3 -26
  198. package/dist/esm/src/Templates/index.d.ts +1 -1
  199. package/dist/esm/src/Templates/index.d.ts.map +1 -1
  200. package/dist/esm/src/create/createChatController.js +1 -1
  201. package/dist/esm/src/index.d.ts +1 -0
  202. package/dist/esm/src/index.d.ts.map +1 -1
  203. package/dist/esm/src/setupEvents.d.ts +13 -0
  204. package/dist/esm/src/setupEvents.d.ts.map +1 -1
  205. package/dist/esm/src/setupEvents.js +25 -8
  206. package/dist/esm/src/types.d.ts +3 -1
  207. package/dist/esm/src/types.d.ts.map +1 -1
  208. package/dist/esm/src/utils/combineMerge.d.ts +2 -0
  209. package/dist/esm/src/utils/combineMerge.d.ts.map +1 -0
  210. package/dist/esm/src/utils/combineMerge.js +16 -0
  211. package/dist/esm/src/utils/index.d.ts +1 -0
  212. package/dist/esm/src/utils/index.d.ts.map +1 -1
  213. package/dist/esm/src/utils/index.js +1 -0
  214. 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
- inject: {
138
- action: 'before',
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, originalElem) { return __awaiter(_this, void 0, void 0, function () {
154
- var elemContext, scriptContextProfiles, scriptContextGlobals_1, requestGlobals_1, targetsArr_1, profile, products, product, seed, filters, blockedItems, options, shopper, shopperId, combinedProducts, shopperIdentifier, profileRequestGlobals;
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
- ], (originalElem || elem));
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
- targetsArr_1 = [];
185
- // build out the targets array for each profile
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 targetObj = {
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
- targetsArr_1.push(targetObj);
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
- profileRequestGlobals = __assign({ tag: profile }, defined({
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
- readyTheController(this, services || {}, elem, (0, deepmerge_1.default)(this.context, elemContext), profileCount, originalElem, profileRequestGlobals, target);
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, injectedElem, context, profileCount, elem, controllerGlobals, target) {
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, createRecommendationController, profileVars, component, props, RecommendationsComponent, importPromises, importResolutions;
254
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
255
- return __generator(this, function (_w) {
256
- switch (_w.label) {
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", elem);
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
- controllerConfig = {
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: (_q = instance.config.config) === null || _q === void 0 ? void 0 : _q.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
- controllerConfig.branch = profile === null || profile === void 0 ? void 0 : profile.branch;
326
+ controllerConfigBase.branch = profile === null || profile === void 0 ? void 0 : profile.branch;
291
327
  }
292
- controller = Object.keys(instance.controller)
293
- .map(function (id) { return instance.controller[id]; })
294
- .filter(function (controller) {
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
- _w.label = 2;
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
- profileVars = (_r = controller.store.profile.display) === null || _r === void 0 ? void 0 : _r.templateParameters;
336
- component = (_t = (_s = controller.store.profile.display) === null || _s === void 0 ? void 0 : _s.template) === null || _t === void 0 ? void 0 : _t.component;
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(elem === null || elem === void 0 ? void 0 : elem.outerHTML));
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(elem === null || elem === void 0 ? void 0 : elem.outerHTML));
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(elem === null || elem === void 0 ? void 0 : elem.outerHTML));
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
- injectedElem === null || injectedElem === void 0 ? void 0 : injectedElem.setAttribute('id', "".concat(controllerConfig.id));
358
- (_v = (_u = instance.config.components[component]) === null || _u === void 0 ? void 0 : _u.onTarget) === null || _v === void 0 ? void 0 : _v.call(_u, target, elem, injectedElem, controller);
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 5:
362
- RecommendationsComponent = _w.sent();
363
- return [3 /*break*/, 8];
364
- case 6:
365
- if (!(instance.config.components[component] && typeof instance.config.components[component] == 'object')) return [3 /*break*/, 8];
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 7:
372
- importResolutions = _w.sent();
412
+ case 3:
413
+ importResolutions = _e.sent();
373
414
  RecommendationsComponent = importResolutions[0];
374
- _w.label = 8;
375
- case 8:
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(elem === null || elem === void 0 ? void 0 : elem.outerHTML));
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
- if (injectedElem && RecommendationsComponent) {
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
  }
@@ -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":"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"}
1
+ {"version":3,"file":"Snap.d.ts","sourceRoot":"","sources":["../../../src/Snap.tsx"],"names":[],"mappings":"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"}
@@ -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
- Object.values(elem.attributes).forEach(function (attr) {
229
- var attrName = attr.nodeName;
230
- if (attributeList.indexOf(attrName) != -1) {
231
- attributes[attrName] = elem && elem.getAttribute(attrName);
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,EAAE,yBAAyB,EAAE,2BAA2B,EAAoB,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
+ {"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 SearchStoreConfigSettings, type AutocompleteStoreConfigSettings, ChatStoreConfigSettings } from '@athoscommerce/snap-store-mobx';
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 { RecommendationInstantiatorConfigSettings, RecommendationComponentObject } from '../Instantiators/RecommendationInstantiator';
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 { PluginsConfigs, PluginsConfigsUnlocked, TemplateStoreConfigConfig, TemplateStoreConfigConfigUnlocked } from './Stores/TemplateStore';
10
- import { LibraryImports } from './Stores/LibraryStore';
11
- export declare const TEMPLATE_EDIT_COOKIE = "athosEditor";
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 SnapTemplatesConfigLocked = TemplateStoreConfigConfig & {
37
- unlocked?: false;
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 SnapTemplatesConfigUnlocked = Omit<SnapTemplatesConfigLocked, 'unlocked' | 'plugins' | 'search' | 'autocomplete' | 'recommendation'> & TemplateStoreConfigConfigUnlocked & {
70
- unlocked: true;
71
- search?: Omit<NonNullable<SnapTemplatesConfigLocked['search']>, 'plugins'> & {
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 | SnapTemplatesConfigUnlocked, templatesStore: TemplatesStore) => ExtendedTarget[];
91
- export declare const createChatTargeters: (templateConfig: SnapTemplatesConfig | SnapTemplatesConfigUnlocked, templatesStore: TemplatesStore) => ExtendedTarget[];
92
- export declare function createAutocompleteTargeters(templateConfig: SnapTemplatesConfig | SnapTemplatesConfigUnlocked, templatesStore: TemplatesStore): ExtendedTarget[];
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
  };