@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.
Files changed (91) hide show
  1. package/dist/cjs/actor/fields.js +0 -4
  2. package/dist/cjs/actor/filters.js +57 -11
  3. package/dist/cjs/actor/tracker.js +1 -6
  4. package/dist/cjs/actor/view.js +6 -8
  5. package/dist/cjs/actor/views.js +10 -26
  6. package/dist/cjs/constants.js +12 -2
  7. package/dist/cjs/element/role/index.js +7 -0
  8. package/dist/cjs/element/role/miso-sort.js +20 -0
  9. package/dist/cjs/layout/affiliation/affiliation.js +1 -1
  10. package/dist/cjs/layout/container/container.js +2 -2
  11. package/dist/cjs/layout/index.js +7 -0
  12. package/dist/cjs/layout/input/facets.js +2 -2
  13. package/dist/cjs/layout/input/search-box.js +1 -1
  14. package/dist/cjs/layout/input/select.js +150 -0
  15. package/dist/cjs/layout/raf.js +2 -4
  16. package/dist/cjs/layout/text/typewriter/index.js +3 -2
  17. package/dist/cjs/layout/trackable.js +3 -3
  18. package/dist/cjs/layout/triggerable.js +1 -1
  19. package/dist/cjs/util/trackers.js +2 -0
  20. package/dist/cjs/version.js +1 -1
  21. package/dist/cjs/workflow/answer-based.js +19 -3
  22. package/dist/cjs/workflow/ask.js +4 -1
  23. package/dist/cjs/workflow/base.js +27 -4
  24. package/dist/cjs/workflow/context.js +3 -3
  25. package/dist/cjs/workflow/explore.js +2 -2
  26. package/dist/cjs/workflow/hybrid-search-answer.js +9 -7
  27. package/dist/cjs/workflow/hybrid-search-results.js +18 -16
  28. package/dist/cjs/workflow/hybrid-search-views.js +5 -12
  29. package/dist/cjs/workflow/hybrid-search.js +9 -1
  30. package/dist/cjs/workflow/options/api.js +56 -0
  31. package/dist/cjs/workflow/options/configurable.js +49 -0
  32. package/dist/cjs/workflow/options/data-processor.js +23 -0
  33. package/dist/cjs/workflow/options/filters.js +18 -0
  34. package/dist/cjs/workflow/options/index.js +115 -0
  35. package/dist/cjs/workflow/options/interactions.js +44 -0
  36. package/dist/cjs/workflow/options/layouts.js +83 -0
  37. package/dist/cjs/workflow/options/options.js +154 -0
  38. package/dist/cjs/workflow/options/pagination.js +28 -0
  39. package/dist/cjs/workflow/options/roles.js +17 -0
  40. package/dist/cjs/workflow/options/trackers.js +39 -0
  41. package/dist/cjs/workflow/options/utils.js +33 -0
  42. package/dist/cjs/workflow/processors.js +39 -33
  43. package/dist/cjs/workflow/recommendation.js +2 -2
  44. package/dist/cjs/workflow/search-based.js +59 -22
  45. package/package.json +2 -2
  46. package/src/actor/fields.js +0 -4
  47. package/src/actor/filters.js +53 -12
  48. package/src/actor/tracker.js +1 -6
  49. package/src/actor/view.js +7 -8
  50. package/src/actor/views.js +9 -30
  51. package/src/constants.js +11 -0
  52. package/src/element/role/index.js +1 -0
  53. package/src/element/role/miso-sort.js +16 -0
  54. package/src/layout/affiliation/affiliation.js +1 -1
  55. package/src/layout/container/container.js +2 -2
  56. package/src/layout/index.js +1 -0
  57. package/src/layout/input/facets.js +3 -2
  58. package/src/layout/input/search-box.js +1 -1
  59. package/src/layout/input/select.js +142 -0
  60. package/src/layout/raf.js +2 -2
  61. package/src/layout/text/typewriter/index.js +3 -2
  62. package/src/layout/trackable.js +3 -3
  63. package/src/layout/triggerable.js +1 -1
  64. package/src/util/trackers.js +2 -0
  65. package/src/version.js +1 -1
  66. package/src/workflow/answer-based.js +16 -2
  67. package/src/workflow/ask.js +4 -1
  68. package/src/workflow/base.js +22 -1
  69. package/src/workflow/context.js +1 -1
  70. package/src/workflow/explore.js +1 -1
  71. package/src/workflow/hybrid-search-answer.js +8 -3
  72. package/src/workflow/hybrid-search-results.js +21 -7
  73. package/src/workflow/hybrid-search-views.js +4 -12
  74. package/src/workflow/hybrid-search.js +12 -1
  75. package/src/workflow/options/api.js +46 -0
  76. package/src/workflow/options/configurable.js +48 -0
  77. package/src/workflow/options/data-processor.js +15 -0
  78. package/src/workflow/options/filters.js +10 -0
  79. package/src/workflow/options/index.js +10 -0
  80. package/src/workflow/options/interactions.js +36 -0
  81. package/src/workflow/options/layouts.js +73 -0
  82. package/src/workflow/options/options.js +169 -0
  83. package/src/workflow/options/pagination.js +18 -0
  84. package/src/workflow/options/roles.js +12 -0
  85. package/src/workflow/options/trackers.js +32 -0
  86. package/src/workflow/options/utils.js +26 -0
  87. package/src/workflow/processors.js +30 -34
  88. package/src/workflow/recommendation.js +1 -1
  89. package/src/workflow/search-based.js +58 -13
  90. package/dist/cjs/workflow/options.js +0 -448
  91. 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
- }