@searchspring/snap-preact 0.53.4 → 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/dist/cjs/Snap.d.ts +2 -0
- package/dist/cjs/Snap.d.ts.map +1 -1
- package/dist/cjs/Snap.js +29 -0
- package/dist/cjs/setupEvents.d.ts +3 -0
- package/dist/cjs/setupEvents.d.ts.map +1 -0
- package/dist/cjs/setupEvents.js +92 -0
- package/dist/esm/Snap.d.ts +2 -0
- package/dist/esm/Snap.d.ts.map +1 -1
- package/dist/esm/Snap.js +10 -0
- package/dist/esm/setupEvents.d.ts +3 -0
- package/dist/esm/setupEvents.d.ts.map +1 -0
- package/dist/esm/setupEvents.js +41 -0
- package/package.json +12 -12
package/README.md
CHANGED
|
@@ -252,9 +252,11 @@ const { search } = snap.controllers;
|
|
|
252
252
|
```
|
|
253
253
|
|
|
254
254
|
## properties
|
|
255
|
-
|
|
256
255
|
After instantiating an instance of Snap, the following properties can be accessed.
|
|
257
256
|
|
|
257
|
+
### eventManager
|
|
258
|
+
A reference to the shared [@searchspring/snap-event-manager](https://github.com/searchspring/snap/tree/main/packages/snap-event-manager) instance.
|
|
259
|
+
|
|
258
260
|
### config
|
|
259
261
|
A reference to the config that was provided.
|
|
260
262
|
|
|
@@ -286,3 +288,4 @@ polyfills.then(() => {
|
|
|
286
288
|
import('./index');
|
|
287
289
|
})
|
|
288
290
|
```
|
|
291
|
+
|
package/dist/cjs/Snap.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { Logger } from '@searchspring/snap-logger';
|
|
|
3
3
|
import { Tracker } from '@searchspring/snap-tracker';
|
|
4
4
|
import { AppMode } from '@searchspring/snap-toolbox';
|
|
5
5
|
import { ControllerTypes } from '@searchspring/snap-controller';
|
|
6
|
+
import { EventManager } from '@searchspring/snap-event-manager';
|
|
6
7
|
import type { ClientConfig, ClientGlobals } from '@searchspring/snap-client';
|
|
7
8
|
import type { Controllers, AbstractController, SearchControllerConfig, AutocompleteControllerConfig, FinderControllerConfig, RecommendationControllerConfig, ControllerConfigs, ContextVariables } from '@searchspring/snap-controller';
|
|
8
9
|
import type { TrackerConfig, TrackerGlobals } from '@searchspring/snap-tracker';
|
|
@@ -95,6 +96,7 @@ export declare class Snap {
|
|
|
95
96
|
controllers: {
|
|
96
97
|
[controllerConfigId: string]: Controllers;
|
|
97
98
|
};
|
|
99
|
+
eventManager: EventManager;
|
|
98
100
|
getInstantiator: (id: string) => Promise<RecommendationInstantiator>;
|
|
99
101
|
getController: (id: string) => Promise<Controllers>;
|
|
100
102
|
getControllers: (...controllerIds: string[]) => Promise<Controllers[]>;
|
package/dist/cjs/Snap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Snap.d.ts","sourceRoot":"","sources":["../../src/Snap.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAgE,MAAM,4BAA4B,CAAC;AACnH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAIhE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,KAAK,EACX,WAAW,EACX,kBAAkB,EAElB,sBAAsB,EACtB,4BAA4B,EAC5B,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAmB,MAAM,4BAA4B,CAAC;AACjG,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAI1E,OAAO,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC1H,OAAO,KAAK,EAAE,sBAAsB,EAAwB,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Snap.d.ts","sourceRoot":"","sources":["../../src/Snap.tsx"],"names":[],"mappings":"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"}
|
package/dist/cjs/Snap.js
CHANGED
|
@@ -69,6 +69,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
69
69
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
73
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
74
|
+
if (ar || !(i in from)) {
|
|
75
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
76
|
+
ar[i] = from[i];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
80
|
+
};
|
|
72
81
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
73
82
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
74
83
|
};
|
|
@@ -88,6 +97,7 @@ var snap_controller_1 = require("@searchspring/snap-controller");
|
|
|
88
97
|
var getInitialUrlState_1 = require("./getInitialUrlState/getInitialUrlState");
|
|
89
98
|
var createSearchController_1 = __importDefault(require("./create/createSearchController"));
|
|
90
99
|
var configureSnapFeatures_1 = require("./configureSnapFeatures");
|
|
100
|
+
var setupEvents_1 = require("./setupEvents");
|
|
91
101
|
// configure MobX
|
|
92
102
|
(0, mobx_1.configure)({ useProxies: 'never', isolateGlobalState: true, enforceActions: 'never' });
|
|
93
103
|
exports.BRANCH_COOKIE = 'ssBranch';
|
|
@@ -222,6 +232,7 @@ var Snap = /** @class */ (function () {
|
|
|
222
232
|
window.removeEventListener('error', this.handlers.error);
|
|
223
233
|
window.addEventListener('error', this.handlers.error);
|
|
224
234
|
this.config = config;
|
|
235
|
+
this.eventManager = (0, setupEvents_1.setupEvents)();
|
|
225
236
|
var globalContext = {};
|
|
226
237
|
try {
|
|
227
238
|
// get global context
|
|
@@ -423,6 +434,24 @@ var Snap = /** @class */ (function () {
|
|
|
423
434
|
window.searchspring.context = this.context;
|
|
424
435
|
if (this.client)
|
|
425
436
|
window.searchspring.client = this.client;
|
|
437
|
+
if (this.eventManager) {
|
|
438
|
+
window.searchspring.on = function (event) {
|
|
439
|
+
var _a;
|
|
440
|
+
var func = [];
|
|
441
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
442
|
+
func[_i - 1] = arguments[_i];
|
|
443
|
+
}
|
|
444
|
+
(_a = _this.eventManager).on.apply(_a, __spreadArray([event], func, false));
|
|
445
|
+
};
|
|
446
|
+
window.searchspring.fire = function (event) {
|
|
447
|
+
var _a;
|
|
448
|
+
var func = [];
|
|
449
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
450
|
+
func[_i - 1] = arguments[_i];
|
|
451
|
+
}
|
|
452
|
+
(_a = _this.eventManager).fire.apply(_a, __spreadArray([event], func, false));
|
|
453
|
+
};
|
|
454
|
+
}
|
|
426
455
|
// autotrack shopper id from the context
|
|
427
456
|
if ((_z = (_y = this.context) === null || _y === void 0 ? void 0 : _y.shopper) === null || _z === void 0 ? void 0 : _z.id) {
|
|
428
457
|
this.tracker.track.shopper.login({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupEvents.d.ts","sourceRoot":"","sources":["../../src/setupEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAQ,MAAM,kCAAkC,CAAC;AAGtE,eAAO,MAAM,WAAW,oBA+CvB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.setupEvents = void 0;
|
|
40
|
+
var snap_event_manager_1 = require("@searchspring/snap-event-manager");
|
|
41
|
+
var setupEvents = function () {
|
|
42
|
+
var eventManager = new snap_event_manager_1.EventManager();
|
|
43
|
+
eventManager.on('controller/selectVariantOptions', function (data, next) { return __awaiter(void 0, void 0, void 0, function () {
|
|
44
|
+
var options, controllerIds, controllerListToUse;
|
|
45
|
+
return __generator(this, function (_a) {
|
|
46
|
+
switch (_a.label) {
|
|
47
|
+
case 0:
|
|
48
|
+
options = data.options, controllerIds = data.controllerIds;
|
|
49
|
+
controllerListToUse = [];
|
|
50
|
+
Object.keys(window.searchspring.controller).forEach(function (controller) {
|
|
51
|
+
var current = window.searchspring.controller[controller];
|
|
52
|
+
if (controllerIds && Array.isArray(controllerIds)) {
|
|
53
|
+
//only push if controller/profile matches?
|
|
54
|
+
controllerIds.forEach(function (id) {
|
|
55
|
+
var _a;
|
|
56
|
+
if (id instanceof RegExp) {
|
|
57
|
+
if ((_a = controller.match(id)) === null || _a === void 0 ? void 0 : _a.length) {
|
|
58
|
+
controllerListToUse.push(current);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else if (controller == id) {
|
|
62
|
+
controllerListToUse.push(current);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
controllerListToUse.push(current);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
//then run set makeSelections on each result in that controller result store with the passed variant data
|
|
71
|
+
controllerListToUse.map(function (controller) {
|
|
72
|
+
var _a, _b;
|
|
73
|
+
if ((_a = controller.store) === null || _a === void 0 ? void 0 : _a.results) {
|
|
74
|
+
(_b = controller.store) === null || _b === void 0 ? void 0 : _b.results.forEach(function (result) {
|
|
75
|
+
var _a;
|
|
76
|
+
//no banner types
|
|
77
|
+
if (result.type == 'product') {
|
|
78
|
+
(_a = result.variants) === null || _a === void 0 ? void 0 : _a.makeSelections(options);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
return [4 /*yield*/, next()];
|
|
84
|
+
case 1:
|
|
85
|
+
_a.sent();
|
|
86
|
+
return [2 /*return*/];
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}); });
|
|
90
|
+
return eventManager;
|
|
91
|
+
};
|
|
92
|
+
exports.setupEvents = setupEvents;
|
package/dist/esm/Snap.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { Logger } from '@searchspring/snap-logger';
|
|
|
3
3
|
import { Tracker } from '@searchspring/snap-tracker';
|
|
4
4
|
import { AppMode } from '@searchspring/snap-toolbox';
|
|
5
5
|
import { ControllerTypes } from '@searchspring/snap-controller';
|
|
6
|
+
import { EventManager } from '@searchspring/snap-event-manager';
|
|
6
7
|
import type { ClientConfig, ClientGlobals } from '@searchspring/snap-client';
|
|
7
8
|
import type { Controllers, AbstractController, SearchControllerConfig, AutocompleteControllerConfig, FinderControllerConfig, RecommendationControllerConfig, ControllerConfigs, ContextVariables } from '@searchspring/snap-controller';
|
|
8
9
|
import type { TrackerConfig, TrackerGlobals } from '@searchspring/snap-tracker';
|
|
@@ -95,6 +96,7 @@ export declare class Snap {
|
|
|
95
96
|
controllers: {
|
|
96
97
|
[controllerConfigId: string]: Controllers;
|
|
97
98
|
};
|
|
99
|
+
eventManager: EventManager;
|
|
98
100
|
getInstantiator: (id: string) => Promise<RecommendationInstantiator>;
|
|
99
101
|
getController: (id: string) => Promise<Controllers>;
|
|
100
102
|
getControllers: (...controllerIds: string[]) => Promise<Controllers[]>;
|
package/dist/esm/Snap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Snap.d.ts","sourceRoot":"","sources":["../../src/Snap.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAgE,MAAM,4BAA4B,CAAC;AACnH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAIhE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,KAAK,EACX,WAAW,EACX,kBAAkB,EAElB,sBAAsB,EACtB,4BAA4B,EAC5B,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAmB,MAAM,4BAA4B,CAAC;AACjG,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAI1E,OAAO,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC1H,OAAO,KAAK,EAAE,sBAAsB,EAAwB,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Snap.d.ts","sourceRoot":"","sources":["../../src/Snap.tsx"],"names":[],"mappings":"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"}
|
package/dist/esm/Snap.js
CHANGED
|
@@ -12,6 +12,7 @@ import { ControllerTypes } from '@searchspring/snap-controller';
|
|
|
12
12
|
import { getInitialUrlState } from './getInitialUrlState/getInitialUrlState';
|
|
13
13
|
import { default as createSearchController } from './create/createSearchController';
|
|
14
14
|
import { configureSnapFeatures } from './configureSnapFeatures';
|
|
15
|
+
import { setupEvents } from './setupEvents';
|
|
15
16
|
// configure MobX
|
|
16
17
|
configureMobx({ useProxies: 'never', isolateGlobalState: true, enforceActions: 'never' });
|
|
17
18
|
export const BRANCH_COOKIE = 'ssBranch';
|
|
@@ -150,6 +151,7 @@ export class Snap {
|
|
|
150
151
|
window.removeEventListener('error', this.handlers.error);
|
|
151
152
|
window.addEventListener('error', this.handlers.error);
|
|
152
153
|
this.config = config;
|
|
154
|
+
this.eventManager = setupEvents();
|
|
153
155
|
let globalContext = {};
|
|
154
156
|
try {
|
|
155
157
|
// get global context
|
|
@@ -334,6 +336,14 @@ export class Snap {
|
|
|
334
336
|
window.searchspring.context = this.context;
|
|
335
337
|
if (this.client)
|
|
336
338
|
window.searchspring.client = this.client;
|
|
339
|
+
if (this.eventManager) {
|
|
340
|
+
window.searchspring.on = (event, ...func) => {
|
|
341
|
+
this.eventManager.on(event, ...func);
|
|
342
|
+
};
|
|
343
|
+
window.searchspring.fire = (event, ...func) => {
|
|
344
|
+
this.eventManager.fire(event, ...func);
|
|
345
|
+
};
|
|
346
|
+
}
|
|
337
347
|
// autotrack shopper id from the context
|
|
338
348
|
if (this.context?.shopper?.id) {
|
|
339
349
|
this.tracker.track.shopper.login({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupEvents.d.ts","sourceRoot":"","sources":["../../src/setupEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAQ,MAAM,kCAAkC,CAAC;AAGtE,eAAO,MAAM,WAAW,oBA+CvB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { EventManager } from '@searchspring/snap-event-manager';
|
|
2
|
+
export const setupEvents = () => {
|
|
3
|
+
const eventManager = new EventManager();
|
|
4
|
+
eventManager.on('controller/selectVariantOptions', async (data, next) => {
|
|
5
|
+
const { options, controllerIds } = data;
|
|
6
|
+
//filter through all controllers for matches with profileIds
|
|
7
|
+
const controllerListToUse = [];
|
|
8
|
+
Object.keys(window.searchspring.controller).forEach((controller) => {
|
|
9
|
+
const current = window.searchspring.controller[controller];
|
|
10
|
+
if (controllerIds && Array.isArray(controllerIds)) {
|
|
11
|
+
//only push if controller/profile matches?
|
|
12
|
+
controllerIds.forEach((id) => {
|
|
13
|
+
if (id instanceof RegExp) {
|
|
14
|
+
if (controller.match(id)?.length) {
|
|
15
|
+
controllerListToUse.push(current);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
else if (controller == id) {
|
|
19
|
+
controllerListToUse.push(current);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
controllerListToUse.push(current);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
//then run set makeSelections on each result in that controller result store with the passed variant data
|
|
28
|
+
controllerListToUse.map((controller) => {
|
|
29
|
+
if (controller.store?.results) {
|
|
30
|
+
controller.store?.results.forEach((result) => {
|
|
31
|
+
//no banner types
|
|
32
|
+
if (result.type == 'product') {
|
|
33
|
+
result.variants?.makeSelections(options);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
await next();
|
|
39
|
+
});
|
|
40
|
+
return eventManager;
|
|
41
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searchspring/snap-preact",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.55.0",
|
|
4
4
|
"description": "Snap Preact",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -20,16 +20,16 @@
|
|
|
20
20
|
"test:watch": "jest --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@searchspring/snap-client": "^0.
|
|
24
|
-
"@searchspring/snap-controller": "^0.
|
|
25
|
-
"@searchspring/snap-event-manager": "^0.
|
|
26
|
-
"@searchspring/snap-logger": "^0.
|
|
27
|
-
"@searchspring/snap-preact-components": "^0.
|
|
28
|
-
"@searchspring/snap-profiler": "^0.
|
|
29
|
-
"@searchspring/snap-store-mobx": "^0.
|
|
30
|
-
"@searchspring/snap-toolbox": "^0.
|
|
31
|
-
"@searchspring/snap-tracker": "^0.
|
|
32
|
-
"@searchspring/snap-url-manager": "^0.
|
|
23
|
+
"@searchspring/snap-client": "^0.55.0",
|
|
24
|
+
"@searchspring/snap-controller": "^0.55.0",
|
|
25
|
+
"@searchspring/snap-event-manager": "^0.55.0",
|
|
26
|
+
"@searchspring/snap-logger": "^0.55.0",
|
|
27
|
+
"@searchspring/snap-preact-components": "^0.55.0",
|
|
28
|
+
"@searchspring/snap-profiler": "^0.55.0",
|
|
29
|
+
"@searchspring/snap-store-mobx": "^0.55.0",
|
|
30
|
+
"@searchspring/snap-toolbox": "^0.55.0",
|
|
31
|
+
"@searchspring/snap-tracker": "^0.55.0",
|
|
32
|
+
"@searchspring/snap-url-manager": "^0.55.0",
|
|
33
33
|
"deepmerge": "4.3.1",
|
|
34
34
|
"intersection-observer": "0.12.0",
|
|
35
35
|
"is-plain-object": "5.0.0"
|
|
@@ -41,5 +41,5 @@
|
|
|
41
41
|
"files": [
|
|
42
42
|
"dist/**/*"
|
|
43
43
|
],
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "ad413e17c9756a28e1972173b3b25f0a4dcb127c"
|
|
45
45
|
}
|