@miso.ai/client-sdk-ui 1.11.4-beta.0 → 1.11.4-beta.2
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/dist/cjs/actor/fields.js +0 -4
- package/dist/cjs/actor/filters.js +57 -11
- package/dist/cjs/actor/tracker.js +1 -6
- package/dist/cjs/actor/view.js +6 -8
- package/dist/cjs/actor/views.js +10 -26
- package/dist/cjs/constants.js +12 -2
- package/dist/cjs/element/role/index.js +7 -0
- package/dist/cjs/element/role/miso-sort.js +20 -0
- package/dist/cjs/layout/affiliation/affiliation.js +1 -1
- package/dist/cjs/layout/container/container.js +2 -2
- package/dist/cjs/layout/index.js +7 -0
- package/dist/cjs/layout/input/facets.js +2 -2
- package/dist/cjs/layout/input/search-box.js +1 -1
- package/dist/cjs/layout/input/select.js +150 -0
- package/dist/cjs/layout/raf.js +2 -4
- package/dist/cjs/layout/text/typewriter/index.js +3 -2
- package/dist/cjs/layout/trackable.js +3 -3
- package/dist/cjs/layout/triggerable.js +1 -1
- package/dist/cjs/util/trackers.js +2 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/workflow/answer-based.js +19 -3
- package/dist/cjs/workflow/ask.js +4 -1
- package/dist/cjs/workflow/base.js +27 -4
- package/dist/cjs/workflow/context.js +3 -3
- package/dist/cjs/workflow/explore.js +2 -2
- package/dist/cjs/workflow/hybrid-search-answer.js +9 -7
- package/dist/cjs/workflow/hybrid-search-results.js +18 -16
- package/dist/cjs/workflow/hybrid-search-views.js +5 -12
- package/dist/cjs/workflow/hybrid-search.js +9 -1
- package/dist/cjs/workflow/options/api.js +56 -0
- package/dist/cjs/workflow/options/configurable.js +49 -0
- package/dist/cjs/workflow/options/data-processor.js +23 -0
- package/dist/cjs/workflow/options/filters.js +18 -0
- package/dist/cjs/workflow/options/index.js +115 -0
- package/dist/cjs/workflow/options/interactions.js +44 -0
- package/dist/cjs/workflow/options/layouts.js +83 -0
- package/dist/cjs/workflow/options/options.js +154 -0
- package/dist/cjs/workflow/options/pagination.js +28 -0
- package/dist/cjs/workflow/options/roles.js +17 -0
- package/dist/cjs/workflow/options/trackers.js +39 -0
- package/dist/cjs/workflow/options/utils.js +33 -0
- package/dist/cjs/workflow/processors.js +39 -33
- package/dist/cjs/workflow/recommendation.js +2 -2
- package/dist/cjs/workflow/search-based.js +59 -22
- package/package.json +2 -2
- package/src/actor/fields.js +0 -4
- package/src/actor/filters.js +53 -12
- package/src/actor/tracker.js +1 -6
- package/src/actor/view.js +7 -8
- package/src/actor/views.js +9 -30
- package/src/constants.js +11 -0
- package/src/element/role/index.js +1 -0
- package/src/element/role/miso-sort.js +16 -0
- package/src/layout/affiliation/affiliation.js +1 -1
- package/src/layout/container/container.js +2 -2
- package/src/layout/index.js +1 -0
- package/src/layout/input/facets.js +3 -2
- package/src/layout/input/search-box.js +1 -1
- package/src/layout/input/select.js +142 -0
- package/src/layout/raf.js +2 -2
- package/src/layout/text/typewriter/index.js +3 -2
- package/src/layout/trackable.js +3 -3
- package/src/layout/triggerable.js +1 -1
- package/src/util/trackers.js +2 -0
- package/src/version.js +1 -1
- package/src/workflow/answer-based.js +16 -2
- package/src/workflow/ask.js +4 -1
- package/src/workflow/base.js +22 -1
- package/src/workflow/context.js +1 -1
- package/src/workflow/explore.js +1 -1
- package/src/workflow/hybrid-search-answer.js +8 -3
- package/src/workflow/hybrid-search-results.js +21 -7
- package/src/workflow/hybrid-search-views.js +4 -12
- package/src/workflow/hybrid-search.js +12 -1
- package/src/workflow/options/api.js +46 -0
- package/src/workflow/options/configurable.js +48 -0
- package/src/workflow/options/data-processor.js +15 -0
- package/src/workflow/options/filters.js +10 -0
- package/src/workflow/options/index.js +10 -0
- package/src/workflow/options/interactions.js +36 -0
- package/src/workflow/options/layouts.js +73 -0
- package/src/workflow/options/options.js +169 -0
- package/src/workflow/options/pagination.js +18 -0
- package/src/workflow/options/roles.js +12 -0
- package/src/workflow/options/trackers.js +32 -0
- package/src/workflow/options/utils.js +26 -0
- package/src/workflow/processors.js +30 -34
- package/src/workflow/recommendation.js +1 -1
- package/src/workflow/search-based.js +58 -13
- package/dist/cjs/workflow/options.js +0 -448
- package/src/workflow/options.js +0 -433
|
@@ -1,448 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.WorkflowOptions = exports.WorkflowContextOptions = void 0;
|
|
7
|
-
exports.makeConfigurable = makeConfigurable;
|
|
8
|
-
exports.mergeApiOptions = mergeApiOptions;
|
|
9
|
-
exports.mergeAutocompleteOptions = mergeAutocompleteOptions;
|
|
10
|
-
exports.mergeDataProcessorOptions = mergeDataProcessorOptions;
|
|
11
|
-
exports.mergeInteractionsOptions = mergeInteractionsOptions;
|
|
12
|
-
exports.mergeLayoutsOptions = mergeLayoutsOptions;
|
|
13
|
-
exports.mergePaginationOptions = mergePaginationOptions;
|
|
14
|
-
exports.mergeRolesOptions = mergeRolesOptions;
|
|
15
|
-
exports.mergeTrackersOptions = mergeTrackersOptions;
|
|
16
|
-
exports.normalizeApiOptions = normalizeApiOptions;
|
|
17
|
-
exports.normalizeDataProcessorOptions = normalizeDataProcessorOptions;
|
|
18
|
-
exports.normalizeInteractionsOptions = normalizeInteractionsOptions;
|
|
19
|
-
exports.normalizeLayoutsOptions = normalizeLayoutsOptions;
|
|
20
|
-
exports.normalizePaginationOptions = normalizePaginationOptions;
|
|
21
|
-
exports.normalizeTrackers = normalizeTrackers;
|
|
22
|
-
var _commons = require("@miso.ai/commons");
|
|
23
|
-
var _constants = require("../constants.js");
|
|
24
|
-
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
|
|
25
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
26
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
27
|
-
// normalize //
|
|
28
|
-
function normalizeApiOptions() {
|
|
29
|
-
let [name, payload] = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
30
|
-
// TODO: take object form as well
|
|
31
|
-
if (name === false) {
|
|
32
|
-
return {
|
|
33
|
-
actor: false
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
if (typeof name === 'object' && payload === undefined) {
|
|
37
|
-
payload = name;
|
|
38
|
-
name = undefined;
|
|
39
|
-
}
|
|
40
|
-
let group = undefined;
|
|
41
|
-
if (name && name.indexOf('/') !== -1) {
|
|
42
|
-
[group, name] = name.split('/');
|
|
43
|
-
}
|
|
44
|
-
if (name && typeof name !== 'string' || payload !== undefined && typeof payload !== 'object') {
|
|
45
|
-
throw new Error(`Invalid arguments for useApi(): ${name}, ${payload}`);
|
|
46
|
-
}
|
|
47
|
-
return (0, _commons.trimObj)({
|
|
48
|
-
group,
|
|
49
|
-
name,
|
|
50
|
-
payload
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
function normalizeLayoutsOptions() {
|
|
54
|
-
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
55
|
-
if (options === false) {
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
58
|
-
// fallback: results -> products
|
|
59
|
-
const _ROLE$RESULTS = _constants.ROLE.RESULTS,
|
|
60
|
-
{
|
|
61
|
-
[_ROLE$RESULTS]: results
|
|
62
|
-
} = options,
|
|
63
|
-
rest = _objectWithoutPropertiesLoose(options, [_ROLE$RESULTS].map(_toPropertyKey));
|
|
64
|
-
if (results !== undefined) {
|
|
65
|
-
console.warn(`useLayouts({ ${[_constants.ROLE.RESULTS]}: ... }) is deprecated, use useLayouts({ ${[_constants.ROLE.PRODUCTS]}: ... }) instead`);
|
|
66
|
-
options = Object.assign({}, rest, {
|
|
67
|
-
[_constants.ROLE.PRODUCTS]: results
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
const normalize = {};
|
|
71
|
-
for (const [role, args] of Object.entries(options)) {
|
|
72
|
-
normalize[normalizeRole(role)] = normalizeLayoutOptions(args);
|
|
73
|
-
}
|
|
74
|
-
return normalize;
|
|
75
|
-
}
|
|
76
|
-
function normalizeRole(role) {
|
|
77
|
-
role = (0, _commons.lowerCamelToSnake)(role);
|
|
78
|
-
role = (0, _commons.kebabToSnake)(role);
|
|
79
|
-
return role;
|
|
80
|
-
}
|
|
81
|
-
function normalizeLayoutOptions(args) {
|
|
82
|
-
// take args:
|
|
83
|
-
// * undefined
|
|
84
|
-
// * false
|
|
85
|
-
// * name (string)
|
|
86
|
-
// * options (object)
|
|
87
|
-
// * [name, options]
|
|
88
|
-
if (args === undefined) {
|
|
89
|
-
return undefined;
|
|
90
|
-
}
|
|
91
|
-
let [name, options] = (0, _commons.asArray)(args);
|
|
92
|
-
if (typeof name === 'object') {
|
|
93
|
-
options = name;
|
|
94
|
-
name = undefined;
|
|
95
|
-
}
|
|
96
|
-
return [name, options];
|
|
97
|
-
}
|
|
98
|
-
function normalizeDataProcessorOptions(fns) {
|
|
99
|
-
fns = (0, _commons.asArray)(fns);
|
|
100
|
-
for (const fn of fns) {
|
|
101
|
-
if (typeof fn !== 'function') {
|
|
102
|
-
throw new Error(`Expect data processor options to be a function: ${fn}`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return fns;
|
|
106
|
-
}
|
|
107
|
-
function normalizeTrackers(options) {
|
|
108
|
-
if (options === undefined || options === false) {
|
|
109
|
-
return options;
|
|
110
|
-
}
|
|
111
|
-
const normalized = {};
|
|
112
|
-
for (const [role, args] of Object.entries(options)) {
|
|
113
|
-
normalized[role] = normalizeTrackerOptions(args);
|
|
114
|
-
}
|
|
115
|
-
return normalized;
|
|
116
|
-
}
|
|
117
|
-
function normalizeTrackerOptions(options) {
|
|
118
|
-
return options;
|
|
119
|
-
}
|
|
120
|
-
function normalizeInteractionsOptions(options) {
|
|
121
|
-
if (options === undefined) {
|
|
122
|
-
return undefined;
|
|
123
|
-
}
|
|
124
|
-
if (options === false) {
|
|
125
|
-
return {
|
|
126
|
-
handle: () => {}
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
// preprocess
|
|
130
|
-
const preprocess = (0, _commons.asArray)(options.preprocess);
|
|
131
|
-
for (const p of preprocess) {
|
|
132
|
-
if (typeof p !== 'function') {
|
|
133
|
-
throw new Error(`Expect preprocess options to be a function: ${p}`);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
// handle
|
|
137
|
-
if (options.handle && typeof options.handle !== 'function') {
|
|
138
|
-
throw new Error(`Expect handle options to be a function: ${options.handle}`);
|
|
139
|
-
}
|
|
140
|
-
return Object.assign({}, options, {
|
|
141
|
-
preprocess
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
function normalizePaginationOptions(options) {
|
|
145
|
-
if (options === undefined) {
|
|
146
|
-
throw new Error(`Expect pagination options to be an object or a boolean value: ${options}`);
|
|
147
|
-
}
|
|
148
|
-
if (typeof options === 'boolean') {
|
|
149
|
-
options = {
|
|
150
|
-
active: options
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
return options;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// merge //
|
|
157
|
-
function mergeApiOptions() {
|
|
158
|
-
for (var _len = arguments.length, optionsList = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {
|
|
159
|
-
optionsList[_key2] = arguments[_key2];
|
|
160
|
-
}
|
|
161
|
-
if (optionsList[optionsList.length - 1] === false) {
|
|
162
|
-
return false;
|
|
163
|
-
}
|
|
164
|
-
return mergeOptions(optionsList, (merged, options) => Object.assign(merged, Object.assign({}, options, {
|
|
165
|
-
payload: mergeApiPayloads(merged.payload, options.payload)
|
|
166
|
-
})));
|
|
167
|
-
}
|
|
168
|
-
function mergeApiPayloads(base, overrides) {
|
|
169
|
-
return Object.assign({}, base, overrides, mergeObjectValueIfPresent('_meta', base, overrides));
|
|
170
|
-
}
|
|
171
|
-
function mergeObjectValueIfPresent(key, base, overrides) {
|
|
172
|
-
const baseValue = base && base[key];
|
|
173
|
-
const overridesValue = overrides && overrides[key];
|
|
174
|
-
const value = baseValue ? overridesValue ? Object.assign({}, baseValue, overridesValue) : baseValue : overridesValue;
|
|
175
|
-
return value !== undefined ? {
|
|
176
|
-
[key]: value
|
|
177
|
-
} : {};
|
|
178
|
-
}
|
|
179
|
-
function mergeLayoutsOptions() {
|
|
180
|
-
for (var _len2 = arguments.length, optionsList = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {
|
|
181
|
-
optionsList[_key3] = arguments[_key3];
|
|
182
|
-
}
|
|
183
|
-
if (optionsList[optionsList.length - 1] === false) {
|
|
184
|
-
return false;
|
|
185
|
-
}
|
|
186
|
-
return mergeOptions(optionsList, (merged, options) => {
|
|
187
|
-
for (const [role, args] of Object.entries(options)) {
|
|
188
|
-
merged[role] = mergeLayoutOptions(merged[role], args);
|
|
189
|
-
}
|
|
190
|
-
return merged;
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
function mergeLayoutOptions(base, overrides) {
|
|
194
|
-
overrides = normalizeLayoutOptions(overrides);
|
|
195
|
-
if (overrides[0] === false) {
|
|
196
|
-
return overrides;
|
|
197
|
-
}
|
|
198
|
-
return base && overrides ? [overrides[0] || base[0], mergeLayoutParameters(base[1], overrides[1])] : overrides || base;
|
|
199
|
-
}
|
|
200
|
-
function mergeLayoutParameters(base, overrides) {
|
|
201
|
-
return Object.assign({}, base, overrides, {
|
|
202
|
-
link: Object.assign({}, base && base.link, overrides && overrides.link),
|
|
203
|
-
templates: Object.assign({}, base && base.templates, overrides && overrides.templates)
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
function mergeDataProcessorOptions() {
|
|
207
|
-
for (var _len3 = arguments.length, optionsList = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {
|
|
208
|
-
optionsList[_key4] = arguments[_key4];
|
|
209
|
-
}
|
|
210
|
-
return optionsList.flat().filter(Boolean);
|
|
211
|
-
}
|
|
212
|
-
function mergeTrackersOptions() {
|
|
213
|
-
for (var _len4 = arguments.length, optionsList = new Array(_len4), _key5 = 0; _key5 < _len4; _key5++) {
|
|
214
|
-
optionsList[_key5] = arguments[_key5];
|
|
215
|
-
}
|
|
216
|
-
if (optionsList[optionsList.length - 1] === false) {
|
|
217
|
-
return false;
|
|
218
|
-
}
|
|
219
|
-
return mergeOptions(optionsList, (merged, options) => Object.assign(merged, Object.assign({}, options, {
|
|
220
|
-
impression: mergeTrackerEventOptions(merged.impression, options.impression),
|
|
221
|
-
viewable: mergeTrackerEventOptions(merged.viewable, options.viewable),
|
|
222
|
-
click: mergeTrackerEventOptions(merged.click, options.click)
|
|
223
|
-
})));
|
|
224
|
-
}
|
|
225
|
-
function mergeTrackerEventOptions() {
|
|
226
|
-
let base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
227
|
-
let overrides = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
228
|
-
return overrides === false || base === false ? overrides : Object.assign({}, base, overrides);
|
|
229
|
-
}
|
|
230
|
-
function mergeInteractionsOptions() {
|
|
231
|
-
for (var _len5 = arguments.length, optionsList = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) {
|
|
232
|
-
optionsList[_key6] = arguments[_key6];
|
|
233
|
-
}
|
|
234
|
-
if (optionsList[optionsList.length - 1] === false) {
|
|
235
|
-
return false;
|
|
236
|
-
}
|
|
237
|
-
return mergeOptions(optionsList, (merged, options) => Object.assign(merged, Object.assign({}, options, {
|
|
238
|
-
preprocess: concatArrays(merged.preprocess, options.preprocess)
|
|
239
|
-
})));
|
|
240
|
-
}
|
|
241
|
-
function mergePaginationOptions() {
|
|
242
|
-
for (var _len6 = arguments.length, optionsList = new Array(_len6), _key7 = 0; _key7 < _len6; _key7++) {
|
|
243
|
-
optionsList[_key7] = arguments[_key7];
|
|
244
|
-
}
|
|
245
|
-
if (optionsList[optionsList.length - 1] === false) {
|
|
246
|
-
return false;
|
|
247
|
-
}
|
|
248
|
-
return mergeOptions(optionsList, (merged, options) => Object.assign(merged, options));
|
|
249
|
-
}
|
|
250
|
-
function mergeAutocompleteOptions() {
|
|
251
|
-
for (var _len7 = arguments.length, optionsList = new Array(_len7), _key8 = 0; _key8 < _len7; _key8++) {
|
|
252
|
-
optionsList[_key8] = arguments[_key8];
|
|
253
|
-
}
|
|
254
|
-
return mergeOptions(optionsList, (merged, options) => Object.assign(merged, Object.assign({}, options, {
|
|
255
|
-
api: mergeApiOptions(merged.api, options.api)
|
|
256
|
-
})));
|
|
257
|
-
}
|
|
258
|
-
function mergeRolesOptions(base, overrides) {
|
|
259
|
-
return Object.freeze(Object.assign({}, base, overrides, {
|
|
260
|
-
members: mergeRolesMembers(base.members, overrides.members),
|
|
261
|
-
mappings: Object.freeze(Object.assign({}, base.mappings, overrides.mappings))
|
|
262
|
-
}));
|
|
263
|
-
}
|
|
264
|
-
function mergeRolesMembers() {
|
|
265
|
-
let base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
266
|
-
let overrides = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
267
|
-
return [...new Set([...base, ...overrides])];
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
// manifest //
|
|
271
|
-
const FEATURES = [{
|
|
272
|
-
key: 'api',
|
|
273
|
-
normalize: normalizeApiOptions,
|
|
274
|
-
merge: mergeApiOptions
|
|
275
|
-
}, {
|
|
276
|
-
key: 'layouts',
|
|
277
|
-
normalize: normalizeLayoutsOptions,
|
|
278
|
-
merge: mergeLayoutsOptions
|
|
279
|
-
}, {
|
|
280
|
-
key: 'dataProcessor',
|
|
281
|
-
normalize: normalizeDataProcessorOptions,
|
|
282
|
-
merge: mergeDataProcessorOptions
|
|
283
|
-
}, {
|
|
284
|
-
key: 'trackers',
|
|
285
|
-
normalize: normalizeTrackerOptions,
|
|
286
|
-
merge: mergeTrackersOptions
|
|
287
|
-
}, {
|
|
288
|
-
key: 'interactions',
|
|
289
|
-
normalize: normalizeInteractionsOptions,
|
|
290
|
-
merge: mergeInteractionsOptions
|
|
291
|
-
}, {
|
|
292
|
-
key: 'pagination',
|
|
293
|
-
normalize: normalizePaginationOptions,
|
|
294
|
-
merge: mergePaginationOptions
|
|
295
|
-
}];
|
|
296
|
-
class WorkflowContextOptions {
|
|
297
|
-
constructor() {
|
|
298
|
-
this._events = new _commons.EventEmitter({
|
|
299
|
-
target: this
|
|
300
|
-
});
|
|
301
|
-
this._globals = {};
|
|
302
|
-
}
|
|
303
|
-
_notify(name) {
|
|
304
|
-
this._events.emit(name, {
|
|
305
|
-
name,
|
|
306
|
-
value: this[name]
|
|
307
|
-
});
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
exports.WorkflowContextOptions = WorkflowContextOptions;
|
|
311
|
-
class WorkflowOptions {
|
|
312
|
-
constructor() {
|
|
313
|
-
let context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
314
|
-
let defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
315
|
-
this._events = new _commons.EventEmitter({
|
|
316
|
-
target: this
|
|
317
|
-
});
|
|
318
|
-
this._defaults = defaults; // TODO: we should call normalize() on defaults
|
|
319
|
-
this._context = context || {};
|
|
320
|
-
this._locals = {};
|
|
321
|
-
(0, _commons.defineValues)(this, {
|
|
322
|
-
resolved: new ResolvedWorkflowOptions(this),
|
|
323
|
-
defaults
|
|
324
|
-
});
|
|
325
|
-
if (context && context.on) {
|
|
326
|
-
this._unsubscribes = [context.on('*', event => this._notify(event.name))];
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
_notify(name) {
|
|
330
|
-
this._events.emit(name, {
|
|
331
|
-
name,
|
|
332
|
-
value: this.resolved[name]
|
|
333
|
-
});
|
|
334
|
-
}
|
|
335
|
-
_destroy() {
|
|
336
|
-
for (const unsubscribe of this._unsubscribes || []) {
|
|
337
|
-
unsubscribe();
|
|
338
|
-
}
|
|
339
|
-
this._unsubscribes = [];
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
exports.WorkflowOptions = WorkflowOptions;
|
|
343
|
-
class WorkflowFeature {
|
|
344
|
-
constructor(options, store, key, normalize, merge) {
|
|
345
|
-
this._options = options;
|
|
346
|
-
this._store = store;
|
|
347
|
-
this._key = key;
|
|
348
|
-
this._normalize = value => value !== undefined ? normalize(value) : undefined;
|
|
349
|
-
this._merge = merge;
|
|
350
|
-
}
|
|
351
|
-
get() {
|
|
352
|
-
return this._store[this._key];
|
|
353
|
-
}
|
|
354
|
-
set(value) {
|
|
355
|
-
this._set(this._normalize(value));
|
|
356
|
-
}
|
|
357
|
-
merge(value) {
|
|
358
|
-
this._set(this._merge(this.get(), this._normalize(value)));
|
|
359
|
-
}
|
|
360
|
-
_set(value) {
|
|
361
|
-
this._store[this._key] = value;
|
|
362
|
-
this._options._notify(this._key);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
class ResolvedWorkflowOptions {
|
|
366
|
-
constructor(options) {
|
|
367
|
-
this._options = options;
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
for (const {
|
|
371
|
-
key,
|
|
372
|
-
normalize,
|
|
373
|
-
merge
|
|
374
|
-
} of FEATURES) {
|
|
375
|
-
Object.defineProperty(WorkflowContextOptions.prototype, key, {
|
|
376
|
-
get: function () {
|
|
377
|
-
const _key = `_${key}`;
|
|
378
|
-
return this[_key] || (this[_key] = new WorkflowFeature(this, this._globals, key, normalize, merge));
|
|
379
|
-
}
|
|
380
|
-
});
|
|
381
|
-
Object.defineProperty(WorkflowOptions.prototype, key, {
|
|
382
|
-
get: function () {
|
|
383
|
-
const _key = `_${key}`;
|
|
384
|
-
return this[_key] || (this[_key] = new WorkflowFeature(this, this._locals, key, normalize, merge));
|
|
385
|
-
}
|
|
386
|
-
});
|
|
387
|
-
Object.defineProperty(ResolvedWorkflowOptions.prototype, key, {
|
|
388
|
-
get: function () {
|
|
389
|
-
const options = this._options;
|
|
390
|
-
const contextFeature = options._context[key];
|
|
391
|
-
return merge(options._defaults[key], contextFeature && contextFeature.get(), options._locals[key]);
|
|
392
|
-
}
|
|
393
|
-
});
|
|
394
|
-
}
|
|
395
|
-
const DEFAULT_FEATURES = ['api', 'layouts', 'dataProcessor', 'trackers', 'interactions'];
|
|
396
|
-
function makeConfigurable(prototype) {
|
|
397
|
-
let features = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_FEATURES;
|
|
398
|
-
for (const feature of features) {
|
|
399
|
-
injectConfigurableFeature(prototype, feature);
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
function injectConfigurableFeature(prototype, feature) {
|
|
403
|
-
if (feature === 'api') {
|
|
404
|
-
Object.assign(prototype, {
|
|
405
|
-
useApi() {
|
|
406
|
-
for (var _len8 = arguments.length, args = new Array(_len8), _key9 = 0; _key9 < _len8; _key9++) {
|
|
407
|
-
args[_key9] = arguments[_key9];
|
|
408
|
-
}
|
|
409
|
-
this._options.api.merge(args);
|
|
410
|
-
return this;
|
|
411
|
-
},
|
|
412
|
-
clearApi() {
|
|
413
|
-
this._options.api.set();
|
|
414
|
-
return this;
|
|
415
|
-
}
|
|
416
|
-
});
|
|
417
|
-
} else {
|
|
418
|
-
const upperCased = upperCase(feature);
|
|
419
|
-
Object.assign(prototype, {
|
|
420
|
-
[`use${upperCased}`](value) {
|
|
421
|
-
this._options[feature].merge(value);
|
|
422
|
-
return this;
|
|
423
|
-
},
|
|
424
|
-
[`clear${upperCased}`]() {
|
|
425
|
-
this._options[feature].set();
|
|
426
|
-
return this;
|
|
427
|
-
}
|
|
428
|
-
});
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
// helpers //
|
|
433
|
-
function upperCase(str) {
|
|
434
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
435
|
-
}
|
|
436
|
-
function concatArrays(a0, a1) {
|
|
437
|
-
return a0 && a0.length ? a1 && a1.length ? [...a0, ...a1] : a0 : a1;
|
|
438
|
-
}
|
|
439
|
-
function mergeOptions(optionsList, merge) {
|
|
440
|
-
let merged = {};
|
|
441
|
-
for (const options of optionsList) {
|
|
442
|
-
if (!options) {
|
|
443
|
-
continue;
|
|
444
|
-
}
|
|
445
|
-
merged = merge(merged, options);
|
|
446
|
-
}
|
|
447
|
-
return (0, _commons.trimObj)(merged);
|
|
448
|
-
}
|