@searchspring/snap-preact 0.28.0 → 0.30.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.
- package/README.md +2 -1
- package/dist/cjs/Instantiators/RecommendationInstantiator.d.ts +6 -5
- package/dist/cjs/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
- package/dist/cjs/Instantiators/RecommendationInstantiator.js +19 -5
- package/dist/cjs/Snap.d.ts +67 -13
- package/dist/cjs/Snap.d.ts.map +1 -1
- package/dist/cjs/Snap.js +220 -79
- package/dist/cjs/create/createAutocompleteController.d.ts +1 -1
- package/dist/cjs/create/createAutocompleteController.d.ts.map +1 -1
- package/dist/cjs/create/createAutocompleteController.js +6 -1
- package/dist/cjs/create/createFinderController.d.ts +1 -1
- package/dist/cjs/create/createFinderController.d.ts.map +1 -1
- package/dist/cjs/create/createFinderController.js +6 -1
- package/dist/cjs/create/createRecommendationController.d.ts +1 -1
- package/dist/cjs/create/createRecommendationController.d.ts.map +1 -1
- package/dist/cjs/create/createRecommendationController.js +6 -1
- package/dist/cjs/create/createSearchController.d.ts +1 -1
- package/dist/cjs/create/createSearchController.d.ts.map +1 -1
- package/dist/cjs/create/createSearchController.js +6 -1
- package/dist/cjs/getBundleDetails/getBundleDetails.d.ts.map +1 -1
- package/dist/cjs/getBundleDetails/getBundleDetails.js +3 -2
- package/dist/cjs/types.d.ts +11 -5
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/Instantiators/RecommendationInstantiator.d.ts +6 -5
- package/dist/esm/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
- package/dist/esm/Instantiators/RecommendationInstantiator.js +21 -6
- package/dist/esm/Snap.d.ts +67 -13
- package/dist/esm/Snap.d.ts.map +1 -1
- package/dist/esm/Snap.js +184 -61
- package/dist/esm/create/createAutocompleteController.d.ts +1 -1
- package/dist/esm/create/createAutocompleteController.d.ts.map +1 -1
- package/dist/esm/create/createAutocompleteController.js +6 -1
- package/dist/esm/create/createFinderController.d.ts +1 -1
- package/dist/esm/create/createFinderController.d.ts.map +1 -1
- package/dist/esm/create/createFinderController.js +6 -1
- package/dist/esm/create/createRecommendationController.d.ts +1 -1
- package/dist/esm/create/createRecommendationController.d.ts.map +1 -1
- package/dist/esm/create/createRecommendationController.js +6 -1
- package/dist/esm/create/createSearchController.d.ts +1 -1
- package/dist/esm/create/createSearchController.d.ts.map +1 -1
- package/dist/esm/create/createSearchController.js +6 -1
- package/dist/esm/getBundleDetails/getBundleDetails.d.ts.map +1 -1
- package/dist/esm/getBundleDetails/getBundleDetails.js +3 -2
- package/dist/esm/types.d.ts +11 -5
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +13 -13
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SearchController } from '@searchspring/snap-controller';
|
|
2
2
|
import type { SnapControllerServices, SnapSearchControllerConfig } from '../types';
|
|
3
|
-
declare const _default: (config: SnapSearchControllerConfig, services?: SnapControllerServices) => SearchController;
|
|
3
|
+
declare const _default: (config: SnapSearchControllerConfig, services?: SnapControllerServices | undefined) => SearchController;
|
|
4
4
|
export default _default;
|
|
5
5
|
//# sourceMappingURL=createSearchController.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSearchController.d.ts","sourceRoot":"","sources":["../../../src/create/createSearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAQjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;iCAI3D,0BAA0B,
|
|
1
|
+
{"version":3,"file":"createSearchController.d.ts","sourceRoot":"","sources":["../../../src/create/createSearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAQjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;iCAI3D,0BAA0B,oDAAsC,gBAAgB;AAAxG,wBAwBE"}
|
|
@@ -12,13 +12,18 @@ var snap_tracker_1 = require("@searchspring/snap-tracker");
|
|
|
12
12
|
(0, mobx_1.configure)({ useProxies: 'never' });
|
|
13
13
|
exports.default = (function (config, services) {
|
|
14
14
|
var urlManager = (services === null || services === void 0 ? void 0 : services.urlManager) || new snap_url_manager_1.UrlManager(new snap_url_manager_1.UrlTranslator(config.url), snap_url_manager_1.reactLinker);
|
|
15
|
+
// set client mode
|
|
16
|
+
if (config.mode && config.client) {
|
|
17
|
+
config.client.config = config.client.config || {};
|
|
18
|
+
config.client.config.mode = config.mode;
|
|
19
|
+
}
|
|
15
20
|
var cntrlr = new snap_controller_1.SearchController(config.controller, {
|
|
16
21
|
client: (services === null || services === void 0 ? void 0 : services.client) || new snap_client_1.Client(config.client.globals, config.client.config),
|
|
17
22
|
store: (services === null || services === void 0 ? void 0 : services.store) || new snap_store_mobx_1.SearchStore(config.controller, { urlManager: urlManager }),
|
|
18
23
|
urlManager: urlManager,
|
|
19
24
|
eventManager: (services === null || services === void 0 ? void 0 : services.eventManager) || new snap_event_manager_1.EventManager(),
|
|
20
25
|
profiler: (services === null || services === void 0 ? void 0 : services.profiler) || new snap_profiler_1.Profiler(),
|
|
21
|
-
logger: (services === null || services === void 0 ? void 0 : services.logger) || new snap_logger_1.Logger(),
|
|
26
|
+
logger: (services === null || services === void 0 ? void 0 : services.logger) || new snap_logger_1.Logger({ mode: config.mode }),
|
|
22
27
|
tracker: (services === null || services === void 0 ? void 0 : services.tracker) || new snap_tracker_1.Tracker(config.client.globals),
|
|
23
28
|
}, config.context);
|
|
24
29
|
return cntrlr;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getBundleDetails.d.ts","sourceRoot":"","sources":["../../../src/getBundleDetails/getBundleDetails.ts"],"names":[],"mappings":"AAAA,aAAK,aAAa,GAAG;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAe,MAAM,KAAG,QAAQ,aAAa,
|
|
1
|
+
{"version":3,"file":"getBundleDetails.d.ts","sourceRoot":"","sources":["../../../src/getBundleDetails/getBundleDetails.ts"],"names":[],"mappings":"AAAA,aAAK,aAAa,GAAG;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAe,MAAM,KAAG,QAAQ,aAAa,CAyBzE,CAAC"}
|
|
@@ -45,10 +45,11 @@ var getBundleDetails = function (url) { return __awaiter(void 0, void 0, void 0,
|
|
|
45
45
|
request.onreadystatechange = function () {
|
|
46
46
|
if (request.readyState === request.DONE) {
|
|
47
47
|
var status_1 = request.status;
|
|
48
|
-
|
|
48
|
+
var lastModified = request.getResponseHeader('Last-Modified');
|
|
49
|
+
if ((lastModified && status_1 === 0) || (status_1 >= 200 && status_1 < 400)) {
|
|
49
50
|
resolve({
|
|
50
51
|
url: url,
|
|
51
|
-
lastModified:
|
|
52
|
+
lastModified: lastModified.split(',')[1].trim(),
|
|
52
53
|
});
|
|
53
54
|
}
|
|
54
55
|
else {
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import type { Client, ClientConfig, ClientGlobals } from '@searchspring/snap-client';
|
|
3
|
-
import type {
|
|
2
|
+
import type { SearchControllerConfig, AutocompleteControllerConfig, FinderControllerConfig, RecommendationControllerConfig, ContextVariables } from '@searchspring/snap-controller';
|
|
4
3
|
import type { SearchStore, AutocompleteStore, FinderStore, RecommendationStore } from '@searchspring/snap-store-mobx';
|
|
5
4
|
import type { UrlManager, UrlTranslatorConfig } from '@searchspring/snap-url-manager';
|
|
6
5
|
import type { EventManager } from '@searchspring/snap-event-manager';
|
|
7
6
|
import type { Profiler } from '@searchspring/snap-profiler';
|
|
8
7
|
import type { Logger } from '@searchspring/snap-logger';
|
|
9
8
|
import type { Tracker } from '@searchspring/snap-tracker';
|
|
9
|
+
import { AppMode } from '@searchspring/snap-toolbox';
|
|
10
10
|
export declare type SnapControllerServices = {
|
|
11
11
|
client?: Client;
|
|
12
12
|
store?: SearchStore | AutocompleteStore | FinderStore | RecommendationStore;
|
|
@@ -17,10 +17,8 @@ export declare type SnapControllerServices = {
|
|
|
17
17
|
tracker?: Tracker;
|
|
18
18
|
};
|
|
19
19
|
export declare type SnapControllerConfigs = SnapSearchControllerConfig | SnapAutocompleteControllerConfig | SnapFinderControllerConfig | SnapRecommendationControllerConfig;
|
|
20
|
-
export declare type RootComponent = React.ElementType<{
|
|
21
|
-
controller: AbstractController;
|
|
22
|
-
}>;
|
|
23
20
|
export declare type SnapSearchControllerConfig = {
|
|
21
|
+
mode?: keyof typeof AppMode | AppMode;
|
|
24
22
|
url?: UrlTranslatorConfig;
|
|
25
23
|
client?: {
|
|
26
24
|
globals: ClientGlobals;
|
|
@@ -30,6 +28,7 @@ export declare type SnapSearchControllerConfig = {
|
|
|
30
28
|
context?: ContextVariables;
|
|
31
29
|
};
|
|
32
30
|
export declare type SnapAutocompleteControllerConfig = {
|
|
31
|
+
mode?: keyof typeof AppMode | AppMode;
|
|
33
32
|
url?: UrlTranslatorConfig;
|
|
34
33
|
client?: {
|
|
35
34
|
globals: ClientGlobals;
|
|
@@ -39,6 +38,7 @@ export declare type SnapAutocompleteControllerConfig = {
|
|
|
39
38
|
context?: ContextVariables;
|
|
40
39
|
};
|
|
41
40
|
export declare type SnapFinderControllerConfig = {
|
|
41
|
+
mode?: keyof typeof AppMode | AppMode;
|
|
42
42
|
url?: UrlTranslatorConfig;
|
|
43
43
|
client?: {
|
|
44
44
|
globals: ClientGlobals;
|
|
@@ -48,6 +48,7 @@ export declare type SnapFinderControllerConfig = {
|
|
|
48
48
|
context?: ContextVariables;
|
|
49
49
|
};
|
|
50
50
|
export declare type SnapRecommendationControllerConfig = {
|
|
51
|
+
mode?: keyof typeof AppMode | AppMode;
|
|
51
52
|
url?: UrlTranslatorConfig;
|
|
52
53
|
client?: {
|
|
53
54
|
globals: ClientGlobals;
|
|
@@ -56,4 +57,9 @@ export declare type SnapRecommendationControllerConfig = {
|
|
|
56
57
|
controller: RecommendationControllerConfig;
|
|
57
58
|
context?: ContextVariables;
|
|
58
59
|
};
|
|
60
|
+
declare global {
|
|
61
|
+
interface Window {
|
|
62
|
+
searchspring?: any;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
59
65
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/cjs/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DomTargeter } from '@searchspring/snap-toolbox';
|
|
1
|
+
import { AppMode, DomTargeter } from '@searchspring/snap-toolbox';
|
|
2
2
|
import { Client } from '@searchspring/snap-client';
|
|
3
3
|
import { Logger } from '@searchspring/snap-logger';
|
|
4
4
|
import { Tracker } from '@searchspring/snap-tracker';
|
|
@@ -6,14 +6,14 @@ import type { ClientConfig, ClientGlobals } from '@searchspring/snap-client';
|
|
|
6
6
|
import type { UrlTranslatorConfig } from '@searchspring/snap-url-manager';
|
|
7
7
|
import type { AbstractController, RecommendationController, Attachments, ContextVariables } from '@searchspring/snap-controller';
|
|
8
8
|
import type { Middleware } from '@searchspring/snap-event-manager';
|
|
9
|
-
import type { RootComponent } from '../types';
|
|
10
9
|
export declare type RecommendationInstantiatorConfig = {
|
|
10
|
+
mode?: keyof typeof AppMode | AppMode;
|
|
11
11
|
client?: {
|
|
12
12
|
globals: ClientGlobals;
|
|
13
13
|
config?: ClientConfig;
|
|
14
14
|
};
|
|
15
15
|
components: {
|
|
16
|
-
[name: string]: () => Promise<
|
|
16
|
+
[name: string]: () => Promise<any> | any;
|
|
17
17
|
};
|
|
18
18
|
config: {
|
|
19
19
|
branch: string;
|
|
@@ -31,6 +31,7 @@ export declare type RecommendationInstantiatorServices = {
|
|
|
31
31
|
tracker?: Tracker;
|
|
32
32
|
};
|
|
33
33
|
export declare class RecommendationInstantiator {
|
|
34
|
+
private mode;
|
|
34
35
|
client: Client;
|
|
35
36
|
tracker: Tracker;
|
|
36
37
|
logger: Logger;
|
|
@@ -44,8 +45,8 @@ export declare class RecommendationInstantiator {
|
|
|
44
45
|
private plugins;
|
|
45
46
|
private middleware;
|
|
46
47
|
constructor(config: RecommendationInstantiatorConfig, services?: RecommendationInstantiatorServices, context?: ContextVariables);
|
|
47
|
-
plugin(func: (cntrlr: AbstractController, ...args: any
|
|
48
|
-
on<T>(event: string, ...func: Middleware<
|
|
48
|
+
plugin(func: (cntrlr: AbstractController, ...args: any) => Promise<void>, ...args: unknown[]): void;
|
|
49
|
+
on<T>(event: string, ...func: Middleware<unknown>[]): void;
|
|
49
50
|
use(attachments: Attachments): void;
|
|
50
51
|
}
|
|
51
52
|
//# sourceMappingURL=RecommendationInstantiator.d.ts.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"RecommendationInstantiator.d.ts","sourceRoot":"","sources":["../../../src/Instantiators/RecommendationInstantiator.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAc,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGrD,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;AAGnE,oBAAY,gCAAgC,GAAG;IAC9C,IAAI,CAAC,EAAE,MAAM,OAAO,OAAO,GAAG,OAAO,CAAC;IACtC,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,GAAG,CAAC,GAAG,GAAG,CAAC;KACzC,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;IACtC,OAAO,CAAC,IAAI,CAAsB;IAC3B,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,CAAgG;IAC/G,OAAO,CAAC,UAAU,CAAwD;gBAE9D,MAAM,EAAE,gCAAgC,EAAE,QAAQ,CAAC,EAAE,kCAAkC,EAAE,OAAO,CAAC,EAAE,gBAAgB;IA2MxH,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAInG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;IAI1D,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAG1C"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx } from "preact/jsx-runtime";
|
|
2
2
|
import { render } from 'preact';
|
|
3
3
|
import deepmerge from 'deepmerge';
|
|
4
|
-
import { DomTargeter, getContext } from '@searchspring/snap-toolbox';
|
|
4
|
+
import { AppMode, DomTargeter, getContext } from '@searchspring/snap-toolbox';
|
|
5
5
|
import { Client } from '@searchspring/snap-client';
|
|
6
6
|
import { Logger } from '@searchspring/snap-logger';
|
|
7
7
|
import { Tracker } from '@searchspring/snap-tracker';
|
|
8
8
|
export class RecommendationInstantiator {
|
|
9
9
|
constructor(config, services, context) {
|
|
10
|
+
this.mode = AppMode.production;
|
|
10
11
|
this.controller = {};
|
|
11
12
|
this.uses = [];
|
|
12
13
|
this.plugins = [];
|
|
@@ -24,18 +25,27 @@ export class RecommendationInstantiator {
|
|
|
24
25
|
if ((!services?.client || !services?.tracker) && !this.config?.client?.globals?.siteId) {
|
|
25
26
|
throw new Error(`Recommendation Instantiator config must contain a valid config.client.globals.siteId value`);
|
|
26
27
|
}
|
|
28
|
+
if (this.config.mode && Object.values(AppMode).includes(this.config.mode)) {
|
|
29
|
+
this.mode = this.config.mode;
|
|
30
|
+
if (this.config?.client?.globals?.siteId) {
|
|
31
|
+
this.config.client.config = this.config.client.config || {};
|
|
32
|
+
this.config.client.config.mode = this.config.client.config.mode || this.mode;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
window.searchspring = window.searchspring || {};
|
|
27
36
|
this.context = deepmerge(context || {}, config.context || {});
|
|
28
37
|
this.client = services?.client || new Client(this.config.client.globals, this.config.client.config);
|
|
29
38
|
this.tracker = services?.tracker || new Tracker(this.config.client.globals);
|
|
30
|
-
this.logger = services?.logger || new Logger('RecommendationInstantiator ');
|
|
39
|
+
this.logger = services?.logger || new Logger({ prefix: 'RecommendationInstantiator ', mode: this.mode });
|
|
31
40
|
const profileCount = {};
|
|
32
41
|
this.targeter = new DomTargeter([
|
|
33
42
|
{
|
|
34
43
|
selector: `script[type="searchspring/recommend"], script[type="searchspring/personalized-recommendations"]${this.config.selector ? ` , ${this.config.selector}` : ''}`,
|
|
44
|
+
autoRetarget: true,
|
|
35
45
|
inject: {
|
|
36
46
|
action: 'before',
|
|
37
47
|
element: (target, origElement) => {
|
|
38
|
-
const profile = origElement.getAttribute('profile');
|
|
48
|
+
const profile = origElement.getAttribute('profile') || '';
|
|
39
49
|
const recsContainer = document.createElement('div');
|
|
40
50
|
recsContainer.setAttribute('searchspring-recommend', profile);
|
|
41
51
|
return recsContainer;
|
|
@@ -43,7 +53,7 @@ export class RecommendationInstantiator {
|
|
|
43
53
|
},
|
|
44
54
|
},
|
|
45
55
|
], async (target, injectedElem, elem) => {
|
|
46
|
-
const tag = injectedElem
|
|
56
|
+
const tag = injectedElem?.getAttribute('searchspring-recommend');
|
|
47
57
|
if (!tag) {
|
|
48
58
|
this.logger.warn(`'profile' attribute is missing from <script> tag, skipping this profile`, elem);
|
|
49
59
|
return;
|
|
@@ -133,6 +143,8 @@ export class RecommendationInstantiator {
|
|
|
133
143
|
await controller.search();
|
|
134
144
|
controller.addTargeter(this.targeter);
|
|
135
145
|
this.controller[controller.config.id] = controller;
|
|
146
|
+
window.searchspring.controller = window.searchspring.controller || {};
|
|
147
|
+
window.searchspring.controller[controller.config.id] = controller;
|
|
136
148
|
const profileVars = controller.store.profile.display.templateParameters;
|
|
137
149
|
const component = controller.store.profile.display.template?.component;
|
|
138
150
|
if (!profileVars) {
|
|
@@ -143,13 +155,16 @@ export class RecommendationInstantiator {
|
|
|
143
155
|
this.logger.error(`profile '${tag}' found on ${elem} is missing component!`);
|
|
144
156
|
return;
|
|
145
157
|
}
|
|
146
|
-
const RecommendationsComponent = this.config.components[component] &&
|
|
158
|
+
const RecommendationsComponent = this.config.components[component] &&
|
|
159
|
+
(await this.config.components[component]());
|
|
147
160
|
if (!RecommendationsComponent) {
|
|
148
161
|
this.logger.error(`profile '${tag}' found on ${elem} is expecting component mapping for '${component}' - verify instantiator config.`);
|
|
149
162
|
return;
|
|
150
163
|
}
|
|
151
164
|
setTimeout(() => {
|
|
152
|
-
|
|
165
|
+
if (injectedElem) {
|
|
166
|
+
render(_jsx(RecommendationsComponent, { controller: controller }), injectedElem);
|
|
167
|
+
}
|
|
153
168
|
});
|
|
154
169
|
});
|
|
155
170
|
}
|
package/dist/esm/Snap.d.ts
CHANGED
|
@@ -1,25 +1,29 @@
|
|
|
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 { AppMode } from '@searchspring/snap-toolbox';
|
|
4
5
|
import { ControllerTypes } from '@searchspring/snap-controller';
|
|
5
6
|
import type { ClientConfig, ClientGlobals } from '@searchspring/snap-client';
|
|
6
7
|
import type { AbstractController, SearchController, AutocompleteController, FinderController, RecommendationController, SearchControllerConfig, AutocompleteControllerConfig, FinderControllerConfig, RecommendationControllerConfig, ControllerConfigs, ContextVariables } from '@searchspring/snap-controller';
|
|
7
8
|
import type { Target, OnTarget } from '@searchspring/snap-toolbox';
|
|
8
9
|
import type { UrlTranslatorConfig } from '@searchspring/snap-url-manager';
|
|
9
10
|
import { RecommendationInstantiator, RecommendationInstantiatorConfig } from './Instantiators/RecommendationInstantiator';
|
|
10
|
-
import type { SnapControllerServices
|
|
11
|
+
import type { SnapControllerServices } from './types';
|
|
11
12
|
export declare const BRANCH_COOKIE = "ssBranch";
|
|
12
|
-
export declare const
|
|
13
|
+
export declare const DEV_COOKIE = "ssDev";
|
|
13
14
|
declare type ExtendedTarget = Target & {
|
|
14
15
|
name?: string;
|
|
15
16
|
controller?: AbstractController;
|
|
16
|
-
component?: () => Promise<
|
|
17
|
-
skeleton?: () => Promise<any
|
|
18
|
-
props?:
|
|
17
|
+
component?: () => Promise<any> | any;
|
|
18
|
+
skeleton?: () => Promise<any> | any;
|
|
19
|
+
props?: {
|
|
20
|
+
[propName: string]: any;
|
|
21
|
+
};
|
|
19
22
|
onTarget?: OnTarget;
|
|
20
23
|
prefetch?: boolean;
|
|
21
24
|
};
|
|
22
25
|
export declare type SnapConfig = {
|
|
26
|
+
mode?: keyof typeof AppMode | AppMode;
|
|
23
27
|
context?: ContextVariables;
|
|
24
28
|
url?: UrlTranslatorConfig;
|
|
25
29
|
client?: {
|
|
@@ -67,24 +71,74 @@ declare type SnapServices = {
|
|
|
67
71
|
};
|
|
68
72
|
declare type Controllers = SearchController | AutocompleteController | FinderController | RecommendationController;
|
|
69
73
|
export declare class Snap {
|
|
70
|
-
|
|
74
|
+
private mode;
|
|
75
|
+
private config;
|
|
76
|
+
private _instantiatorPromises;
|
|
77
|
+
private _controllerPromises;
|
|
71
78
|
logger: Logger;
|
|
72
79
|
client: Client;
|
|
73
80
|
tracker: Tracker;
|
|
74
81
|
context: ContextVariables;
|
|
75
|
-
_controllerPromises: {
|
|
76
|
-
[controllerConfigId: string]: Promise<Controllers>;
|
|
77
|
-
};
|
|
78
82
|
controllers: {
|
|
79
83
|
[controllerConfigId: string]: Controllers;
|
|
80
84
|
};
|
|
81
|
-
_instantiatorPromises: {
|
|
82
|
-
[instantiatorId: string]: Promise<RecommendationInstantiator>;
|
|
83
|
-
};
|
|
84
85
|
getInstantiator: (id: string) => Promise<RecommendationInstantiator>;
|
|
85
86
|
getController: (id: string) => Promise<Controllers>;
|
|
86
87
|
getControllers: (...controllerIds: string[]) => Promise<Controllers[]>;
|
|
87
|
-
createController: (type: keyof typeof ControllerTypes, config: ControllerConfigs, services?: SnapControllerServices
|
|
88
|
+
createController: (type: keyof typeof ControllerTypes, config: ControllerConfigs, services?: SnapControllerServices | undefined, urlConfig?: Partial<{
|
|
89
|
+
urlRoot: string;
|
|
90
|
+
settings: Partial<{
|
|
91
|
+
corePrefix: string;
|
|
92
|
+
coreType?: Partial<"query" | "hash" | undefined>;
|
|
93
|
+
customType: Partial<"query" | "hash">;
|
|
94
|
+
rootParams: Partial<boolean>;
|
|
95
|
+
}>;
|
|
96
|
+
parameters: Partial<{
|
|
97
|
+
core: Partial<{
|
|
98
|
+
query: Partial<{
|
|
99
|
+
name: string;
|
|
100
|
+
type: Partial<"query" | "hash">;
|
|
101
|
+
}>;
|
|
102
|
+
oq: Partial<{
|
|
103
|
+
name: string;
|
|
104
|
+
type: Partial<"query" | "hash">;
|
|
105
|
+
}>;
|
|
106
|
+
rq: Partial<{
|
|
107
|
+
name: string;
|
|
108
|
+
type: Partial<"query" | "hash">;
|
|
109
|
+
}>;
|
|
110
|
+
tag: Partial<{
|
|
111
|
+
name: string;
|
|
112
|
+
type: Partial<"query" | "hash">;
|
|
113
|
+
}>;
|
|
114
|
+
page: Partial<{
|
|
115
|
+
name: string;
|
|
116
|
+
type: Partial<"query" | "hash">;
|
|
117
|
+
}>;
|
|
118
|
+
pageSize: Partial<{
|
|
119
|
+
name: string;
|
|
120
|
+
type: Partial<"query" | "hash">;
|
|
121
|
+
}>;
|
|
122
|
+
sort: Partial<{
|
|
123
|
+
name: string;
|
|
124
|
+
type: Partial<"query" | "hash">;
|
|
125
|
+
}>;
|
|
126
|
+
filter: Partial<{
|
|
127
|
+
name: string;
|
|
128
|
+
type: Partial<"query" | "hash">;
|
|
129
|
+
}>;
|
|
130
|
+
}>;
|
|
131
|
+
custom: Partial<{
|
|
132
|
+
[x: string]: Partial<{
|
|
133
|
+
type: Partial<"query" | "hash">;
|
|
134
|
+
}>;
|
|
135
|
+
}>;
|
|
136
|
+
}>;
|
|
137
|
+
}> | undefined, context?: ContextVariables | undefined, callback?: ((value?: Controllers | PromiseLike<Controllers> | undefined) => void | Promise<void>) | undefined) => Promise<Controllers>;
|
|
138
|
+
private _createController;
|
|
139
|
+
handlers: {
|
|
140
|
+
error: (event: ErrorEvent) => void;
|
|
141
|
+
};
|
|
88
142
|
constructor(config: SnapConfig, services?: SnapServices);
|
|
89
143
|
}
|
|
90
144
|
export {};
|
package/dist/esm/Snap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Snap.d.ts","sourceRoot":"","sources":["../../src/Snap.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Snap.d.ts","sourceRoot":"","sources":["../../src/Snap.tsx"],"names":[],"mappings":"AAGA,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;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,KAAK,EACX,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,4BAA4B,EAC5B,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG1E,OAAO,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC1H,OAAO,KAAK,EAAE,sBAAsB,EAAyB,MAAM,SAAS,CAAC;AAE7E,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,UAAU,UAAU,CAAC;AAElC,aAAK,cAAc,GAAG,MAAM,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACpC,KAAK,CAAC,EAAE;QACP,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,oBAAY,UAAU,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,OAAO,OAAO,GAAG,OAAO,CAAC;IACtC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,MAAM,CAAC,EAAE;QACR,OAAO,EAAE,aAAa,CAAC;QACvB,MAAM,CAAC,EAAE,YAAY,CAAC;KACtB,CAAC;IACF,aAAa,CAAC,EAAE;QACf,cAAc,CAAC,EAAE,gCAAgC,CAAC;KAClD,CAAC;IACF,WAAW,CAAC,EAAE;QACb,MAAM,CAAC,EAAE;YACR,MAAM,EAAE,sBAAsB,CAAC;YAC/B,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;YAC7B,QAAQ,CAAC,EAAE,sBAAsB,CAAC;YAClC,GAAG,CAAC,EAAE,mBAAmB,CAAC;YAC1B,OAAO,CAAC,EAAE,gBAAgB,CAAC;SAC3B,EAAE,CAAC;QACJ,YAAY,CAAC,EAAE;YACd,MAAM,EAAE,4BAA4B,CAAC;YACrC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;YAC7B,QAAQ,CAAC,EAAE,sBAAsB,CAAC;YAClC,GAAG,CAAC,EAAE,mBAAmB,CAAC;YAC1B,OAAO,CAAC,EAAE,gBAAgB,CAAC;SAC3B,EAAE,CAAC;QACJ,MAAM,CAAC,EAAE;YACR,MAAM,EAAE,sBAAsB,CAAC;YAC/B,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;YAC7B,QAAQ,CAAC,EAAE,sBAAsB,CAAC;YAClC,GAAG,CAAC,EAAE,mBAAmB,CAAC;YAC1B,OAAO,CAAC,EAAE,gBAAgB,CAAC;SAC3B,EAAE,CAAC;QACJ,cAAc,CAAC,EAAE;YAChB,MAAM,EAAE,8BAA8B,CAAC;YACvC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;YAC7B,QAAQ,CAAC,EAAE,sBAAsB,CAAC;YAClC,GAAG,CAAC,EAAE,mBAAmB,CAAC;YAC1B,OAAO,CAAC,EAAE,gBAAgB,CAAC;SAC3B,EAAE,CAAC;KACJ,CAAC;CACF,CAAC;AAEF,aAAK,YAAY,GAAG;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,aAAK,WAAW,GAAG,gBAAgB,GAAG,sBAAsB,GAAG,gBAAgB,GAAG,wBAAwB,CAAC;AAsC3G,qBAAa,IAAI;IAChB,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,qBAAqB,CAEtB;IACP,OAAO,CAAC,mBAAmB,CAEpB;IAEA,MAAM,EAAG,MAAM,CAAC;IAChB,MAAM,EAAG,MAAM,CAAC;IAChB,OAAO,EAAG,OAAO,CAAC;IAClB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE;QACnB,CAAC,kBAAkB,EAAE,MAAM,GAAG,WAAW,CAAC;KAC1C,CAAM;IAEA,eAAe,OAAQ,MAAM,KAAG,QAAQ,0BAA0B,CAAC,CAExE;IAEK,aAAa,OAAQ,MAAM,KAAG,QAAQ,WAAW,CAAC,CAEvD;IAEK,cAAc,qBAAsB,MAAM,EAAE,KAAG,QAAQ,WAAW,EAAE,CAAC,CAI1E;IAGK,gBAAgB,SAChB,MAAM,sBAAsB,UAC1B,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wIAIsC,IAAI,GAAG,QAAQ,IAAI,CAAC,kBACjF,QAAQ,WAAW,CAAC,CAarB;IAGF,OAAO,CAAC,iBAAiB,CAsDvB;IAEK,QAAQ;uBACC,UAAU,KAAG,IAAI;MA8B/B;gBAEU,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,YAAY;CAikBvD"}
|