@searchspring/snap-preact 0.26.0 → 0.27.1

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 (35) hide show
  1. package/dist/cjs/Instantiators/RecommendationInstantiator.d.ts +20 -21
  2. package/dist/cjs/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
  3. package/dist/cjs/Instantiators/RecommendationInstantiator.js +47 -41
  4. package/dist/cjs/Snap.d.ts +17 -15
  5. package/dist/cjs/Snap.d.ts.map +1 -1
  6. package/dist/cjs/Snap.js +301 -232
  7. package/dist/cjs/components/BranchOverride.d.ts +1 -6
  8. package/dist/cjs/components/BranchOverride.d.ts.map +1 -1
  9. package/dist/cjs/components/BranchOverride.js +2 -234
  10. package/dist/cjs/create/index.d.ts +1 -1
  11. package/dist/cjs/create/index.d.ts.map +1 -1
  12. package/dist/cjs/create/index.js +2 -2
  13. package/dist/cjs/getBundleDetails/getBundleDetails.d.ts +7 -0
  14. package/dist/cjs/getBundleDetails/getBundleDetails.d.ts.map +1 -0
  15. package/dist/cjs/getBundleDetails/getBundleDetails.js +64 -0
  16. package/dist/cjs/types.d.ts +1 -0
  17. package/dist/cjs/types.d.ts.map +1 -1
  18. package/dist/esm/Instantiators/RecommendationInstantiator.d.ts +20 -21
  19. package/dist/esm/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
  20. package/dist/esm/Instantiators/RecommendationInstantiator.js +41 -38
  21. package/dist/esm/Snap.d.ts +17 -15
  22. package/dist/esm/Snap.d.ts.map +1 -1
  23. package/dist/esm/Snap.js +144 -107
  24. package/dist/esm/components/BranchOverride.d.ts +1 -6
  25. package/dist/esm/components/BranchOverride.d.ts.map +1 -1
  26. package/dist/esm/components/BranchOverride.js +1 -172
  27. package/dist/esm/create/index.d.ts +1 -1
  28. package/dist/esm/create/index.d.ts.map +1 -1
  29. package/dist/esm/create/index.js +1 -1
  30. package/dist/esm/getBundleDetails/getBundleDetails.d.ts +7 -0
  31. package/dist/esm/getBundleDetails/getBundleDetails.d.ts.map +1 -0
  32. package/dist/esm/getBundleDetails/getBundleDetails.js +22 -0
  33. package/dist/esm/types.d.ts +1 -0
  34. package/dist/esm/types.d.ts.map +1 -1
  35. package/package.json +13 -12
@@ -1,12 +1,17 @@
1
1
  import { DomTargeter } from '@searchspring/snap-toolbox';
2
- import type { Logger } from '@searchspring/snap-logger';
2
+ import { Client } from '@searchspring/snap-client';
3
+ import { Logger } from '@searchspring/snap-logger';
4
+ import { Tracker } from '@searchspring/snap-tracker';
5
+ import type { ClientConfig, ClientGlobals } from '@searchspring/snap-client';
3
6
  import type { UrlTranslatorConfig } from '@searchspring/snap-url-manager';
4
- import type { Client } from '@searchspring/snap-client';
5
- import type { Tracker } from '@searchspring/snap-tracker';
6
7
  import type { AbstractController, RecommendationController, Attachments, ContextVariables } from '@searchspring/snap-controller';
7
8
  import type { Middleware } from '@searchspring/snap-event-manager';
8
- import type { SnapControllerServices, RootComponent } from '../types';
9
+ import type { RootComponent } from '../types';
9
10
  export declare type RecommendationInstantiatorConfig = {
11
+ client?: {
12
+ globals: ClientGlobals;
13
+ config?: ClientConfig;
14
+ };
10
15
  components: {
11
16
  [name: string]: () => Promise<RootComponent> | RootComponent;
12
17
  };
@@ -17,35 +22,29 @@ export declare type RecommendationInstantiatorConfig = {
17
22
  limit?: number;
18
23
  } & Attachments;
19
24
  selector?: string;
20
- services?: SnapControllerServices;
21
25
  url?: UrlTranslatorConfig;
22
26
  context?: ContextVariables;
23
27
  };
24
28
  export declare type RecommendationInstantiatorServices = {
25
- client: Client;
26
- logger: Logger;
27
- tracker: Tracker;
29
+ client?: Client;
30
+ logger?: Logger;
31
+ tracker?: Tracker;
28
32
  };
29
33
  export declare class RecommendationInstantiator {
30
- controllers: {
31
- [key: string]: RecommendationController;
32
- };
33
34
  client: Client;
34
35
  tracker: Tracker;
35
36
  logger: Logger;
37
+ controller: {
38
+ [key: string]: RecommendationController;
39
+ };
36
40
  config: RecommendationInstantiatorConfig;
37
41
  context: ContextVariables;
38
- uses: Attachments[];
39
- plugins: {
40
- (cntrlr: AbstractController): Promise<void>;
41
- }[];
42
- middleware: {
43
- event: string;
44
- func: Middleware<unknown>[];
45
- }[];
46
42
  targeter: DomTargeter;
47
- constructor(config: RecommendationInstantiatorConfig, { client, logger, tracker }: RecommendationInstantiatorServices, context?: ContextVariables);
48
- plugin(func: (cntrlr: AbstractController) => Promise<void>): void;
43
+ private uses;
44
+ private plugins;
45
+ private middleware;
46
+ constructor(config: RecommendationInstantiatorConfig, services?: RecommendationInstantiatorServices, context?: ContextVariables);
47
+ plugin(func: (cntrlr: AbstractController, ...args: any[]) => Promise<void>, ...args: unknown[]): void;
49
48
  on<T>(event: string, ...func: Middleware<T>[]): void;
50
49
  use(attachments: Attachments): void;
51
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RecommendationInstantiator.d.ts","sourceRoot":"","sources":["../../../src/Instantiators/RecommendationInstantiator.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAc,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjI,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtE,oBAAY,gCAAgC,GAAG;IAC9C,UAAU,EAAE;QACX,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;KAC7D,CAAC;IACF,MAAM,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,WAAW,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,oBAAY,kCAAkC,GAAG;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,qBAAa,0BAA0B;IACtC,WAAW,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB,CAAC;KACxC,CAAM;IACP,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,gCAAgC,CAAC;IACzC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,EAAE,WAAW,EAAE,CAAM;IACzB,OAAO,EAAE;QAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,EAAE,CAAM;IAChE,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAA;KAAE,EAAE,CAAM;IAC3D,QAAQ,EAAE,WAAW,CAAC;gBAEjB,MAAM,EAAE,gCAAgC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kCAAkC,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAgL1I,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIjE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAIpD,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAG1C"}
1
+ {"version":3,"file":"RecommendationInstantiator.d.ts","sourceRoot":"","sources":["../../../src/Instantiators/RecommendationInstantiator.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAc,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjI,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAA0B,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtE,oBAAY,gCAAgC,GAAG;IAC9C,MAAM,CAAC,EAAE;QACR,OAAO,EAAE,aAAa,CAAC;QACvB,MAAM,CAAC,EAAE,YAAY,CAAC;KACtB,CAAC;IACF,UAAU,EAAE;QACX,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;KAC7D,CAAC;IACF,MAAM,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,WAAW,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,oBAAY,kCAAkC,GAAG;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,qBAAa,0BAA0B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB,CAAC;KACxC,CAAM;IACA,MAAM,EAAE,gCAAgC,CAAC;IACzC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,WAAW,CAAC;IAE7B,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,OAAO,CAA2F;IAC1G,OAAO,CAAC,UAAU,CAAwD;gBAE9D,MAAM,EAAE,gCAAgC,EAAE,QAAQ,CAAC,EAAE,kCAAkC,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAoLxH,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAI,OAAA,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9F,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAIpD,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAG1C"}
@@ -87,29 +87,34 @@ var jsx_runtime_1 = require("preact/jsx-runtime");
87
87
  var preact_1 = require("preact");
88
88
  var deepmerge_1 = __importDefault(require("deepmerge"));
89
89
  var snap_toolbox_1 = require("@searchspring/snap-toolbox");
90
+ var snap_client_1 = require("@searchspring/snap-client");
91
+ var snap_logger_1 = require("@searchspring/snap-logger");
92
+ var snap_tracker_1 = require("@searchspring/snap-tracker");
90
93
  var RecommendationInstantiator = /** @class */ (function () {
91
- function RecommendationInstantiator(config, _a, context) {
92
- var client = _a.client, logger = _a.logger, tracker = _a.tracker;
94
+ function RecommendationInstantiator(config, services, context) {
93
95
  var _this = this;
94
- var _b, _c, _d, _e;
95
- this.controllers = {};
96
+ var _a, _b, _c, _d;
97
+ this.controller = {};
96
98
  this.uses = [];
97
99
  this.plugins = [];
98
100
  this.middleware = [];
99
101
  this.config = config;
100
- this.context = (0, deepmerge_1.default)(context || {}, config.context || {});
101
102
  if (!this.config) {
102
103
  throw new Error("Recommendation Instantiator config is required");
103
104
  }
104
- if (!((_b = this.config.config) === null || _b === void 0 ? void 0 : _b.branch)) {
105
+ if (!((_a = this.config.config) === null || _a === void 0 ? void 0 : _a.branch)) {
105
106
  throw new Error("Recommendation Instantiator config must contain 'branch' property");
106
107
  }
107
- if (!this.config.components || typeof this.config.components != 'object') {
108
+ if (!this.config.components || typeof this.config.components != 'object' || !Object.keys(this.config.components).length) {
108
109
  throw new Error("Recommendation Instantiator config must contain 'components' mapping property");
109
110
  }
110
- this.client = ((_c = this.config.services) === null || _c === void 0 ? void 0 : _c.client) || client;
111
- this.tracker = ((_d = this.config.services) === null || _d === void 0 ? void 0 : _d.tracker) || tracker;
112
- this.logger = ((_e = this.config.services) === null || _e === void 0 ? void 0 : _e.logger) || logger;
111
+ if ((!(services === null || services === void 0 ? void 0 : services.client) || !(services === null || services === void 0 ? void 0 : services.tracker)) && !((_d = (_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.client) === null || _c === void 0 ? void 0 : _c.globals) === null || _d === void 0 ? void 0 : _d.siteId)) {
112
+ throw new Error("Recommendation Instantiator config must contain a valid config.client.globals.siteId value");
113
+ }
114
+ this.context = (0, deepmerge_1.default)(context || {}, config.context || {});
115
+ this.client = (services === null || services === void 0 ? void 0 : services.client) || new snap_client_1.Client(this.config.client.globals, this.config.client.config);
116
+ this.tracker = (services === null || services === void 0 ? void 0 : services.tracker) || new snap_tracker_1.Tracker(this.config.client.globals);
117
+ this.logger = (services === null || services === void 0 ? void 0 : services.logger) || new snap_logger_1.Logger('RecommendationInstantiator ');
113
118
  var profileCount = {};
114
119
  this.targeter = new snap_toolbox_1.DomTargeter([
115
120
  {
@@ -118,23 +123,23 @@ var RecommendationInstantiator = /** @class */ (function () {
118
123
  action: 'before',
119
124
  element: function (target, origElement) {
120
125
  var profile = origElement.getAttribute('profile');
121
- if (profile) {
122
- var recsContainer = document.createElement('div');
123
- recsContainer.setAttribute('searchspring-recommend', profile);
124
- return recsContainer;
125
- }
126
- else {
127
- _this.logger.warn("'profile' attribute is missing from <script> tag, skipping this profile", origElement);
128
- }
126
+ var recsContainer = document.createElement('div');
127
+ recsContainer.setAttribute('searchspring-recommend', profile);
128
+ return recsContainer;
129
129
  },
130
130
  },
131
131
  },
132
132
  ], function (target, injectedElem, elem) { return __awaiter(_this, void 0, void 0, function () {
133
- var contextGlobals, elemContext, context, shopper, shopperId, product, seed, cart, options, cartContents, cartFuncContents, tag, defaultGlobals, globals, controllerConfig, createRecommendationController, client, tracker, recs, profileVars, component, RecommendationsComponent, _a;
133
+ var tag, contextGlobals, elemContext, context, shopper, shopperId, product, seed, cart, options, cartContents, cartFuncContents, defaultGlobals, globals, controllerConfig, createRecommendationController, controller, profileVars, component, RecommendationsComponent, _a;
134
134
  var _b, _c, _d;
135
135
  return __generator(this, function (_e) {
136
136
  switch (_e.label) {
137
137
  case 0:
138
+ tag = injectedElem.getAttribute('searchspring-recommend');
139
+ if (!tag) {
140
+ this.logger.warn("'profile' attribute is missing from <script> tag, skipping this profile", elem);
141
+ return [2 /*return*/];
142
+ }
138
143
  contextGlobals = {};
139
144
  elemContext = (0, snap_toolbox_1.getContext)(['shopperId', 'shopper', 'product', 'seed', 'cart', 'options', 'profile', 'custom'], elem);
140
145
  context = (0, deepmerge_1.default)(this.context, elemContext);
@@ -194,42 +199,39 @@ var RecommendationInstantiator = /** @class */ (function () {
194
199
  this.tracker.cookies.cart.set(cartContents);
195
200
  contextGlobals.cart = this.tracker.cookies.cart.get();
196
201
  }
197
- tag = injectedElem.getAttribute('searchspring-recommend');
198
202
  profileCount[tag] = profileCount[tag] + 1 || 1;
199
203
  defaultGlobals = {
200
204
  limits: 20,
201
205
  };
202
- globals = (0, deepmerge_1.default)((0, deepmerge_1.default)(defaultGlobals, ((_b = this.config.config) === null || _b === void 0 ? void 0 : _b.globals) || {}), contextGlobals);
203
- controllerConfig = __assign(__assign({ id: "recommend_".concat(tag + (profileCount[tag] - 1)), tag: tag, batched: (_c = options === null || options === void 0 ? void 0 : options.batched) !== null && _c !== void 0 ? _c : true, realtime: Boolean(options === null || options === void 0 ? void 0 : options.realtime) }, this.config.config), { globals: globals });
206
+ globals = (0, deepmerge_1.default)((0, deepmerge_1.default)(defaultGlobals, ((_b = this.config.client) === null || _b === void 0 ? void 0 : _b.globals) || {}), contextGlobals);
207
+ controllerConfig = __assign(__assign({ id: "recommend_".concat(tag, "_").concat(profileCount[tag] - 1), tag: tag, batched: (_c = options === null || options === void 0 ? void 0 : options.batched) !== null && _c !== void 0 ? _c : true, realtime: Boolean(options === null || options === void 0 ? void 0 : options.realtime) }, this.config.config), { globals: globals });
204
208
  return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require('../create/createRecommendationController')); })];
205
209
  case 1:
206
210
  createRecommendationController = (_e.sent()).default;
207
- client = this.client;
208
- tracker = this.tracker;
209
- recs = createRecommendationController({
210
- url: this.config.url || {},
211
+ controller = createRecommendationController({
212
+ url: this.config.url,
211
213
  controller: controllerConfig,
212
214
  context: context,
213
- }, { client: client, tracker: tracker });
214
- this.uses.forEach(function (attachements) { return recs.use(attachements); });
215
- this.plugins.forEach(function (plugin) { return recs.plugin(plugin); });
216
- this.middleware.forEach(function (middleware) { return recs.on.apply(recs, __spreadArray([middleware.event], middleware.func, false)); });
217
- return [4 /*yield*/, recs.search()];
215
+ }, { client: this.client, tracker: this.tracker });
216
+ this.uses.forEach(function (attachements) { return controller.use(attachements); });
217
+ this.plugins.forEach(function (plugin) { return controller.plugin.apply(controller, __spreadArray([plugin.func], plugin.args, false)); });
218
+ this.middleware.forEach(function (middleware) { return controller.on.apply(controller, __spreadArray([middleware.event], middleware.func, false)); });
219
+ return [4 /*yield*/, controller.search()];
218
220
  case 2:
219
221
  _e.sent();
220
- recs.addTargeter(this.targeter);
221
- this.controllers[recs.config.id] = recs;
222
- profileVars = recs.store.profile.display.templateParameters;
223
- component = (_d = recs.store.profile.display.template) === null || _d === void 0 ? void 0 : _d.component;
222
+ controller.addTargeter(this.targeter);
223
+ this.controller[controller.config.id] = controller;
224
+ profileVars = controller.store.profile.display.templateParameters;
225
+ component = (_d = controller.store.profile.display.template) === null || _d === void 0 ? void 0 : _d.component;
224
226
  if (!profileVars) {
225
- recs.log.error("profile failed to load!");
227
+ this.logger.error("profile '".concat(tag, "' found on ").concat(elem, " is missing templateParameters!"));
226
228
  return [2 /*return*/];
227
229
  }
228
230
  if (!component) {
229
- recs.log.error("template does not support components!");
231
+ this.logger.error("profile '".concat(tag, "' found on ").concat(elem, " is missing component!"));
230
232
  return [2 /*return*/];
231
233
  }
232
- _a = this.config.components;
234
+ _a = this.config.components[component];
233
235
  if (!_a) return [3 /*break*/, 4];
234
236
  return [4 /*yield*/, this.config.components[component]()];
235
237
  case 3:
@@ -238,11 +240,11 @@ var RecommendationInstantiator = /** @class */ (function () {
238
240
  case 4:
239
241
  RecommendationsComponent = _a;
240
242
  if (!RecommendationsComponent) {
241
- recs.log.error("component '".concat(profileVars.component, "' not found!"));
243
+ this.logger.error("profile '".concat(tag, "' found on ").concat(elem, " is expecting component mapping for '").concat(component, "' - verify instantiator config."));
242
244
  return [2 /*return*/];
243
245
  }
244
246
  setTimeout(function () {
245
- (0, preact_1.render)((0, jsx_runtime_1.jsx)(RecommendationsComponent, { controller: recs }), injectedElem);
247
+ (0, preact_1.render)((0, jsx_runtime_1.jsx)(RecommendationsComponent, { controller: controller }), injectedElem);
246
248
  });
247
249
  return [2 /*return*/];
248
250
  }
@@ -250,7 +252,11 @@ var RecommendationInstantiator = /** @class */ (function () {
250
252
  }); });
251
253
  }
252
254
  RecommendationInstantiator.prototype.plugin = function (func) {
253
- this.plugins.push(func);
255
+ var args = [];
256
+ for (var _i = 1; _i < arguments.length; _i++) {
257
+ args[_i - 1] = arguments[_i];
258
+ }
259
+ this.plugins.push({ func: func, args: args });
254
260
  };
255
261
  RecommendationInstantiator.prototype.on = function (event) {
256
262
  var func = [];
@@ -1,12 +1,15 @@
1
1
  import { Client } from '@searchspring/snap-client';
2
2
  import { Logger } from '@searchspring/snap-logger';
3
3
  import { Tracker } from '@searchspring/snap-tracker';
4
+ import { ControllerTypes } from '@searchspring/snap-controller';
4
5
  import type { ClientConfig, ClientGlobals } from '@searchspring/snap-client';
5
6
  import type { AbstractController, SearchController, AutocompleteController, FinderController, RecommendationController, SearchControllerConfig, AutocompleteControllerConfig, FinderControllerConfig, RecommendationControllerConfig, ControllerConfigs, ContextVariables } from '@searchspring/snap-controller';
6
7
  import type { Target, OnTarget } from '@searchspring/snap-toolbox';
7
8
  import type { UrlTranslatorConfig } from '@searchspring/snap-url-manager';
8
9
  import { RecommendationInstantiator, RecommendationInstantiatorConfig } from './Instantiators/RecommendationInstantiator';
9
10
  import type { SnapControllerServices, RootComponent } from './types';
11
+ export declare const BRANCH_COOKIE = "ssBranch";
12
+ export declare const SS_DEV_COOKIE = "ssDev";
10
13
  declare type ExtendedTarget = Target & {
11
14
  name?: string;
12
15
  controller?: AbstractController;
@@ -19,7 +22,7 @@ declare type ExtendedTarget = Target & {
19
22
  export declare type SnapConfig = {
20
23
  context?: ContextVariables;
21
24
  url?: UrlTranslatorConfig;
22
- client: {
25
+ client?: {
23
26
  globals: ClientGlobals;
24
27
  config?: ClientConfig;
25
28
  };
@@ -36,7 +39,7 @@ export declare type SnapConfig = {
36
39
  }[];
37
40
  autocomplete?: {
38
41
  config: AutocompleteControllerConfig;
39
- targeters: ExtendedTarget[];
42
+ targeters?: ExtendedTarget[];
40
43
  services?: SnapControllerServices;
41
44
  url?: UrlTranslatorConfig;
42
45
  context?: ContextVariables;
@@ -57,13 +60,12 @@ export declare type SnapConfig = {
57
60
  }[];
58
61
  };
59
62
  };
60
- declare type ControllerTypes = SearchController | AutocompleteController | FinderController | RecommendationController;
61
- declare enum DynamicImportNames {
62
- SEARCH = "searchController",
63
- AUTOCOMPLETE = "autocompleteController",
64
- FINDER = "finderController",
65
- RECOMMENDATION = "recommendationController"
66
- }
63
+ declare type SnapServices = {
64
+ client?: Client;
65
+ tracker?: Tracker;
66
+ logger?: Logger;
67
+ };
68
+ declare type Controllers = SearchController | AutocompleteController | FinderController | RecommendationController;
67
69
  export declare class Snap {
68
70
  config: SnapConfig;
69
71
  logger: Logger;
@@ -71,19 +73,19 @@ export declare class Snap {
71
73
  tracker: Tracker;
72
74
  context: ContextVariables;
73
75
  _controllerPromises: {
74
- [controllerConfigId: string]: Promise<ControllerTypes>;
76
+ [controllerConfigId: string]: Promise<Controllers>;
75
77
  };
76
78
  controllers: {
77
- [controllerConfigId: string]: ControllerTypes;
79
+ [controllerConfigId: string]: Controllers;
78
80
  };
79
81
  _instantiatorPromises: {
80
82
  [instantiatorId: string]: Promise<RecommendationInstantiator>;
81
83
  };
82
84
  getInstantiator: (id: string) => Promise<RecommendationInstantiator>;
83
- getController: (id: string) => Promise<ControllerTypes>;
84
- getControllers: (...controllerIds: string[]) => Promise<ControllerTypes[]>;
85
- createController: (type: DynamicImportNames, config: ControllerConfigs, services: SnapControllerServices, urlConfig: UrlTranslatorConfig, resolve: (value?: ControllerTypes | PromiseLike<ControllerTypes>) => void, context?: ContextVariables) => Promise<ControllerTypes>;
86
- constructor(config: SnapConfig);
85
+ getController: (id: string) => Promise<Controllers>;
86
+ getControllers: (...controllerIds: string[]) => Promise<Controllers[]>;
87
+ createController: (type: keyof typeof ControllerTypes, config: ControllerConfigs, services?: SnapControllerServices, urlConfig?: UrlTranslatorConfig, context?: ContextVariables, callback?: (value?: Controllers | PromiseLike<Controllers>) => void | Promise<void>) => Promise<Controllers>;
88
+ constructor(config: SnapConfig, services?: SnapServices);
87
89
  }
88
90
  export {};
89
91
  //# sourceMappingURL=Snap.d.ts.map
@@ -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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"}