@miso.ai/client-sdk-ui 1.11.6-beta.0 → 1.11.6

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 (116) hide show
  1. package/dist/cjs/actor/data.js +5 -7
  2. package/dist/cjs/actor/feedback.js +1 -2
  3. package/dist/cjs/actor/filters.js +20 -21
  4. package/dist/cjs/actor/hub.js +34 -8
  5. package/dist/cjs/actor/index.js +1 -2
  6. package/dist/cjs/actor/interactions.js +5 -7
  7. package/dist/cjs/actor/sessions.js +1 -2
  8. package/dist/cjs/actor/tracker.js +9 -12
  9. package/dist/cjs/actor/view.js +11 -20
  10. package/dist/cjs/actor/views.js +16 -21
  11. package/dist/cjs/affiliation/index.js +1 -2
  12. package/dist/cjs/combo/ask/elements.js +3 -4
  13. package/dist/cjs/combo/ask/index.js +1 -2
  14. package/dist/cjs/combo/ask/options.js +2 -6
  15. package/dist/cjs/defaults/ask/controls.js +1 -2
  16. package/dist/cjs/defaults/ask/index.js +1 -2
  17. package/dist/cjs/defaults/ask/templates.js +3 -6
  18. package/dist/cjs/defaults/common/templates.js +30 -41
  19. package/dist/cjs/defaults/hybrid-search/answer-box.js +9 -11
  20. package/dist/cjs/defaults/hybrid-search/controls.js +1 -2
  21. package/dist/cjs/defaults/hybrid-search/index.js +1 -2
  22. package/dist/cjs/defaults/hybrid-search/templates.js +2 -4
  23. package/dist/cjs/defaults/index.js +1 -2
  24. package/dist/cjs/element/container/miso-explore.js +7 -7
  25. package/dist/cjs/element/container/miso-hybrid-search.js +3 -3
  26. package/dist/cjs/element/container/miso-recommendation.js +3 -38
  27. package/dist/cjs/element/container/miso-search.js +3 -3
  28. package/dist/cjs/element/container/miso-unit.js +52 -0
  29. package/dist/cjs/element/index.js +1 -2
  30. package/dist/cjs/element/role/miso-component.js +3 -4
  31. package/dist/cjs/element/utils.js +6 -9
  32. package/dist/cjs/layout/affiliation/affiliation.js +4 -6
  33. package/dist/cjs/layout/banner/banner.js +1 -2
  34. package/dist/cjs/layout/button/more-button.js +1 -2
  35. package/dist/cjs/layout/container/container.js +7 -12
  36. package/dist/cjs/layout/error/error.js +1 -2
  37. package/dist/cjs/layout/input/facets.js +28 -41
  38. package/dist/cjs/layout/input/option-list.js +1 -2
  39. package/dist/cjs/layout/input/search-box.js +30 -39
  40. package/dist/cjs/layout/input/select.js +1 -2
  41. package/dist/cjs/layout/list/cards.js +1 -2
  42. package/dist/cjs/layout/list/carousel.js +1 -2
  43. package/dist/cjs/layout/list/collection.js +12 -16
  44. package/dist/cjs/layout/list/gallery.js +18 -26
  45. package/dist/cjs/layout/list/list.js +1 -2
  46. package/dist/cjs/layout/mixin/swipeable.js +3 -4
  47. package/dist/cjs/layout/mixin/trackable.js +3 -6
  48. package/dist/cjs/layout/progressive.js +1 -2
  49. package/dist/cjs/layout/radio/feedback.js +6 -8
  50. package/dist/cjs/layout/radio/radio.js +5 -6
  51. package/dist/cjs/layout/raf.js +6 -10
  52. package/dist/cjs/layout/template.js +7 -10
  53. package/dist/cjs/layout/templates.js +51 -71
  54. package/dist/cjs/layout/text/text.js +6 -8
  55. package/dist/cjs/layout/text/typewriter/index.js +14 -18
  56. package/dist/cjs/layout/text/typewriter/plaintext.js +8 -10
  57. package/dist/cjs/layout/text/typewriter/utils.js +12 -15
  58. package/dist/cjs/plugin.js +13 -3
  59. package/dist/cjs/source.js +6 -7
  60. package/dist/cjs/util/dom.js +1 -2
  61. package/dist/cjs/util/proxy.js +3 -4
  62. package/dist/cjs/util/trackers.js +1 -3
  63. package/dist/cjs/util/viewables.js +1 -2
  64. package/dist/cjs/version.js +1 -1
  65. package/dist/cjs/workflow/answer-based.js +17 -24
  66. package/dist/cjs/workflow/ask.js +1 -2
  67. package/dist/cjs/workflow/asks.js +4 -6
  68. package/dist/cjs/workflow/autocomplete.js +3 -4
  69. package/dist/cjs/workflow/base.js +56 -54
  70. package/dist/cjs/workflow/explore.js +18 -22
  71. package/dist/cjs/workflow/explores.js +18 -0
  72. package/dist/cjs/workflow/hybrid-search-answer.js +4 -3
  73. package/dist/cjs/workflow/index.js +3 -3
  74. package/dist/cjs/workflow/options/api.js +2 -6
  75. package/dist/cjs/workflow/options/auto-query.js +2 -4
  76. package/dist/cjs/workflow/options/configurable.js +2 -6
  77. package/dist/cjs/workflow/options/data-processor.js +1 -4
  78. package/dist/cjs/workflow/options/filters.js +1 -4
  79. package/dist/cjs/workflow/options/interactions.js +1 -4
  80. package/dist/cjs/workflow/options/layouts.js +2 -6
  81. package/dist/cjs/workflow/options/options.js +5 -8
  82. package/dist/cjs/workflow/options/pagination.js +1 -4
  83. package/dist/cjs/workflow/options/roles.js +1 -3
  84. package/dist/cjs/workflow/options/trackers.js +6 -16
  85. package/dist/cjs/workflow/processors.js +16 -22
  86. package/dist/cjs/workflow/recommendation.js +9 -52
  87. package/dist/cjs/workflow/recommendations.js +3 -23
  88. package/dist/cjs/workflow/search-based.js +12 -8
  89. package/dist/cjs/workflow/search.js +1 -5
  90. package/dist/cjs/workflow/unit.js +58 -0
  91. package/dist/cjs/workflow/units.js +37 -0
  92. package/dist/cjs/workflow/use-link.js +3 -6
  93. package/package.json +2 -2
  94. package/src/actor/filters.js +4 -2
  95. package/src/actor/hub.js +26 -5
  96. package/src/element/container/miso-explore.js +8 -8
  97. package/src/element/container/miso-hybrid-search.js +4 -4
  98. package/src/element/container/miso-recommendation.js +3 -45
  99. package/src/element/container/miso-search.js +4 -4
  100. package/src/element/container/miso-unit.js +55 -0
  101. package/src/layout/radio/radio.js +1 -0
  102. package/src/layout/templates.js +3 -2
  103. package/src/plugin.js +15 -2
  104. package/src/version.js +1 -1
  105. package/src/workflow/autocomplete.js +1 -0
  106. package/src/workflow/base.js +33 -23
  107. package/src/workflow/explore.js +13 -12
  108. package/src/workflow/explores.js +14 -0
  109. package/src/workflow/hybrid-search-answer.js +1 -1
  110. package/src/workflow/index.js +1 -1
  111. package/src/workflow/processors.js +2 -2
  112. package/src/workflow/recommendation.js +9 -47
  113. package/src/workflow/recommendations.js +3 -23
  114. package/src/workflow/search-based.js +4 -0
  115. package/src/workflow/unit.js +52 -0
  116. package/src/workflow/units.js +37 -0
@@ -12,16 +12,14 @@ class PlaintextRenderer {
12
12
  done: false
13
13
  };
14
14
  }
15
- update(element, _ref, _ref2) {
16
- let {
17
- value: prevValue,
18
- cursor: prevCursor
19
- } = _ref;
20
- let {
21
- value,
22
- cursor,
23
- done: dataDone
24
- } = _ref2;
15
+ update(element, {
16
+ value: prevValue,
17
+ cursor: prevCursor
18
+ }, {
19
+ value,
20
+ cursor,
21
+ done: dataDone
22
+ }) {
25
23
  const length = value.length;
26
24
  cursor = Math.min(cursor, length);
27
25
  const viewDone = !!dataDone && cursor === length;
@@ -8,10 +8,9 @@ exports.cursorClassName = cursorClassName;
8
8
  exports.fromSameSession = fromSameSession;
9
9
  exports.normalizeOnDebug = normalizeOnDebug;
10
10
  var _constants = require("../../../constants.js");
11
- function containerElement(layout, element, _ref) {
12
- let {
13
- status
14
- } = _ref;
11
+ function containerElement(layout, element, {
12
+ status
13
+ }) {
15
14
  if (!element) {
16
15
  return undefined;
17
16
  }
@@ -60,17 +59,15 @@ function normalizeOnDebug(fn) {
60
59
  }
61
60
  throw new Error('onDebug must be a function or a boolean');
62
61
  }
63
- function defaultOnDebug() {
64
- let start = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : performance.now();
65
- return function (_ref2) {
66
- let {
67
- summary,
68
- timestamp,
69
- elapsed,
70
- ref,
71
- operation,
72
- conflict
73
- } = _ref2;
62
+ function defaultOnDebug(start = performance.now()) {
63
+ return function ({
64
+ summary,
65
+ timestamp,
66
+ elapsed,
67
+ ref,
68
+ operation,
69
+ conflict
70
+ }) {
74
71
  MisoClient.debug('<progressive-markdown>', `[${formatTimeInSeconds(timestamp - start)}](${formatTimeInMilliseconds(elapsed[0])}, ${formatTimeInMilliseconds(elapsed[1])})`, summary, `${operation}`, ref, conflict);
75
72
  };
76
73
  }
@@ -16,8 +16,7 @@ var _styles = require("./styles.js");
16
16
  var _misoContainer = _interopRequireDefault(require("./element/container/miso-container.js"));
17
17
  var _misoCombo = _interopRequireDefault(require("./element/combo/miso-combo.js"));
18
18
  const _excluded = ["containers", "roles", "combos"];
19
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
21
20
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
21
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
23
22
  const PLUGIN_ID = 'std:ui';
@@ -29,6 +28,7 @@ class UiPlugin extends _commons.Component {
29
28
  super('ui');
30
29
  this.layouts = new _layouts.default(this);
31
30
  this._recommendations = new WeakMap();
31
+ this._explores = new WeakMap();
32
32
  this._asks = new WeakMap();
33
33
  this._extensions = new WeakMap();
34
34
  this._ready = new _commons.Resolution();
@@ -115,6 +115,13 @@ class UiPlugin extends _commons.Component {
115
115
  }
116
116
  return recommendations;
117
117
  }
118
+ _getExplores(client) {
119
+ let explores = this._explores.get(client);
120
+ if (!explores) {
121
+ this._explores.set(client, explores = new _index.Explores(this, client));
122
+ }
123
+ return explores;
124
+ }
118
125
  _getAsks(client) {
119
126
  let asks = this._asks.get(client);
120
127
  if (!asks) {
@@ -167,8 +174,11 @@ class Ui {
167
174
  get hybridSearch() {
168
175
  return this._hybridSearch || (this._hybridSearch = new _index.HybridSearch(this._plugin, this._client));
169
176
  }
177
+ get explores() {
178
+ return this._explores || (this._explores = this._plugin._getExplores(this._client));
179
+ }
170
180
  get explore() {
171
- return this._explore || (this._explore = new _index.Explore(this._plugin, this._client));
181
+ return this.explores.get(); // get default explore unit
172
182
  }
173
183
  get ready() {
174
184
  return this._plugin._ready.promise;
@@ -7,13 +7,12 @@ exports.api = api;
7
7
  var _commons = require("@miso.ai/commons");
8
8
  function api(client) {
9
9
  // TODO: send uuid & unit id
10
- return async _ref => {
11
- let {
12
- group,
13
- name,
14
- payload,
15
- options
16
- } = _ref;
10
+ return async ({
11
+ group,
12
+ name,
13
+ payload,
14
+ options
15
+ }) => {
17
16
  if (group === _commons.API.GROUP.ASK) {
18
17
  switch (name) {
19
18
  case _commons.API.NAME.QUESTIONS:
@@ -45,8 +45,7 @@ function parseLength(str) {
45
45
  const unit = match[2] || '';
46
46
  return [value, unit];
47
47
  }
48
- function remToPx() {
49
- let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
48
+ function remToPx(value = 1) {
50
49
  return value * parseFloat(getComputedStyle(document.documentElement).fontSize);
51
50
  }
52
51
  function cssAspectRatio(value) {
@@ -42,10 +42,9 @@ class ProxyElement {
42
42
  (0, _commons.removeItem)(this._elementUpdatedHandlers, handler);
43
43
  };
44
44
  }
45
- sync() {
46
- let {
47
- silent = false
48
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
45
+ sync({
46
+ silent = false
47
+ } = {}) {
49
48
  const element = this._get();
50
49
  if (this._element === element) {
51
50
  return;
@@ -56,9 +56,7 @@ function normalizeTrackerOptions(options) {
56
56
  click: mergeOptions(DEFAULT_TRACKER_OPTIONS.click, click)
57
57
  }));
58
58
  }
59
- function validateClick() {
60
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
61
- let event = arguments.length > 1 ? arguments[1] : undefined;
59
+ function validateClick(options = {}, event) {
62
60
  if (!options) {
63
61
  return false;
64
62
  }
@@ -12,8 +12,7 @@ class Viewables {
12
12
  isTracked(element) {
13
13
  return this._entries.has(element);
14
14
  }
15
- async track(element) {
16
- let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
15
+ async track(element, options = {}) {
17
16
  if (!options) {
18
17
  return false;
19
18
  }
@@ -4,4 +4,4 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _default = exports.default = '1.11.6-beta.0';
7
+ var _default = exports.default = '1.11.6';
@@ -151,8 +151,7 @@ class AnswerBasedWorkflow extends _base.default {
151
151
  }
152
152
 
153
153
  // query //
154
- autoQuery() {
155
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
154
+ autoQuery(options = {}) {
156
155
  _index4.autoQuery.call(this, options);
157
156
  }
158
157
  query(args) {
@@ -162,8 +161,7 @@ class AnswerBasedWorkflow extends _base.default {
162
161
  }
163
162
  this._hub.update(_index.fields.query(), args);
164
163
  }
165
- _query() {
166
- let args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
164
+ _query(args = {}) {
167
165
  if (this._linkFn) {
168
166
  this._submitToPage(args);
169
167
  return;
@@ -217,17 +215,15 @@ class AnswerBasedWorkflow extends _base.default {
217
215
  data = (0, _processors.writeAnswerStageToMeta)(data);
218
216
  return data;
219
217
  }
220
- _writeQuestionIdFromData(_ref) {
221
- let {
222
- value
223
- } = _ref;
218
+ _writeQuestionIdFromData({
219
+ value
220
+ }) {
224
221
  value && this._writeQuestionId(value.question_id);
225
222
  }
226
- _updateUrlIfNecessary(_ref2) {
227
- let {
228
- value,
229
- request
230
- } = _ref2;
223
+ _updateUrlIfNecessary({
224
+ value,
225
+ request
226
+ }) {
231
227
  if (!this._autoQuery || !this._autoQuery.updateUrl) {
232
228
  return;
233
229
  }
@@ -263,9 +259,7 @@ class AnswerBasedWorkflow extends _base.default {
263
259
  payload = (0, _processors.writeEventTargetToInteraction)(payload, args);
264
260
  return payload;
265
261
  }
266
- _writeAskPropertiesToInteraction() {
267
- let payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
268
- let args = arguments.length > 1 ? arguments[1] : undefined;
262
+ _writeAskPropertiesToInteraction(payload = {}, args) {
269
263
  const question_source = this._getQuestionSourceFromViewState(args);
270
264
  const question_id = this.questionId;
271
265
  return (0, _processors.mergeInteraction)(payload, {
@@ -306,11 +300,10 @@ class AnswerBasedWorkflow extends _base.default {
306
300
  }
307
301
 
308
302
  // handlers //
309
- _onCitationClick(_ref3) {
310
- let {
311
- index,
312
- event
313
- } = _ref3;
303
+ _onCitationClick({
304
+ index,
305
+ event
306
+ }) {
314
307
  if ((0, _trackers.isTracked)(event)) {
315
308
  return;
316
309
  }
@@ -333,11 +326,11 @@ class AnswerBasedWorkflow extends _base.default {
333
326
  event_target: 'citation-link'
334
327
  });
335
328
  }
336
- _onAnswerLinkClick(_ref4) {
329
+ _onAnswerLinkClick(_ref) {
337
330
  let {
338
331
  event
339
- } = _ref4,
340
- item = _objectWithoutPropertiesLoose(_ref4, _excluded);
332
+ } = _ref,
333
+ item = _objectWithoutPropertiesLoose(_ref, _excluded);
341
334
  if ((0, _trackers.isTracked)(event)) {
342
335
  return;
343
336
  }
@@ -128,8 +128,7 @@ class Ask extends _answerBased.default {
128
128
  }
129
129
 
130
130
  // query //
131
- _buildPayload() {
132
- let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
131
+ _buildPayload(_ref = {}) {
133
132
  let {
134
133
  q,
135
134
  qs
@@ -28,10 +28,9 @@ class Asks extends _context.default {
28
28
  }
29
29
  return this._byQid.get(questionId);
30
30
  }
31
- getByParentQuestionId(parentQuestionId) {
32
- let {
33
- autoCreate = false
34
- } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
31
+ getByParentQuestionId(parentQuestionId, {
32
+ autoCreate = false
33
+ } = {}) {
35
34
  if (parentQuestionId === undefined) {
36
35
  return this._root;
37
36
  }
@@ -44,8 +43,7 @@ class Asks extends _context.default {
44
43
  }
45
44
  return workflow;
46
45
  }
47
- reset() {
48
- let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
46
+ reset(_ref = {}) {
49
47
  let {
50
48
  root = true,
51
49
  events
@@ -14,8 +14,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
14
14
  const ROLES_OPTIONS = Object.freeze({
15
15
  members: []
16
16
  });
17
- function shimDefaults() {
18
- let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
17
+ function shimDefaults(_ref = {}) {
19
18
  let options = _objectWithoutPropertiesLoose(_ref, _excluded);
20
19
  return Object.assign({
21
20
  active: false
@@ -31,8 +30,7 @@ function getInputValue(args) {
31
30
  return args && args.value && args.value.trim() || undefined;
32
31
  }
33
32
  class Autocomplete extends _base.default {
34
- constructor(superworkflow) {
35
- let _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
33
+ constructor(superworkflow, _ref2 = {}) {
36
34
  let {
37
35
  defaults
38
36
  } = _ref2,
@@ -116,6 +114,7 @@ class Autocomplete extends _base.default {
116
114
  this._updateCompletions(data);
117
115
  }
118
116
  _updateCompletions(data) {
117
+ // TODO: session is different
119
118
  this._superworkflow.updateCompletions(data);
120
119
  }
121
120
  }
@@ -11,31 +11,7 @@ var _constants = require("../constants.js");
11
11
  var _index2 = require("../layout/index.js");
12
12
  var _index3 = require("./options/index.js");
13
13
  var _processors = require("./processors.js");
14
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
- // TODO: just bury this into hub
17
- function injectLogger(hub, callback) {
18
- const {
19
- update,
20
- trigger
21
- } = hub;
22
- hub.update = (name, state, options) => {
23
- const result = update.call(hub, name, state, options);
24
- if (!options || !options.silent) {
25
- callback('update', name, state, options);
26
- }
27
- return result;
28
- };
29
- hub.trigger = function () {
30
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
31
- args[_key] = arguments[_key];
32
- }
33
- const result = trigger.apply(hub, args);
34
- callback('trigger', ...args);
35
- return result;
36
- };
37
- return hub;
38
- }
14
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
39
15
  const DEFAULT_API_OPTIONS = Object.freeze({});
40
16
  const DEFAULT_LAYOUTS = Object.freeze({
41
17
  [_constants.ROLE.CONTAINER]: _index2.ContainerLayout.type,
@@ -54,9 +30,7 @@ const ROLES_OPTIONS = Object.freeze({
54
30
  });
55
31
  class Workflow extends _commons.Component {
56
32
  constructor(args) {
57
- var _this;
58
33
  super(args.name || 'workflow', args.plugin);
59
- _this = this;
60
34
  let {
61
35
  context,
62
36
  plugin,
@@ -76,21 +50,22 @@ class Workflow extends _commons.Component {
76
50
  this._extensions = plugin._getExtensions(client);
77
51
  this._defaults = defaults;
78
52
  this._options = options || new _index3.WorkflowOptions(context && context._options, defaults);
79
- this._hub = injectLogger(new _index.Hub(), function () {
80
- return _this._log(...arguments);
53
+ this._hub = new _index.Hub({
54
+ onUpdate: event => this._onHubUpdate(event),
55
+ onEmit: event => this._onHubEmit(event)
81
56
  });
82
57
  this._sessionContext = new WeakMap();
58
+ client._events.emit('workflow', this);
83
59
  this._initProperties(args);
84
60
  this._initActors(args);
85
61
  this._initSubscriptions(args);
86
62
  this._initSession(args);
87
63
  }
88
64
  _initProperties() {}
89
- _initActors(_ref) {
90
- let {
91
- name,
92
- roles
93
- } = _ref;
65
+ _initActors({
66
+ name,
67
+ roles
68
+ }) {
94
69
  const hub = this._hub;
95
70
  const client = this._client;
96
71
  const options = this._options;
@@ -113,10 +88,9 @@ class Workflow extends _commons.Component {
113
88
  options
114
89
  });
115
90
  }
116
- _initSubscriptions(_ref2) {
117
- let {
118
- roles
119
- } = _ref2;
91
+ _initSubscriptions({
92
+ roles
93
+ }) {
120
94
  this._unsubscribes = [this._hub.on(_index.fields.response(), data => this.updateData(data)), this._hub.on(_index.fields.tracker(), args => this._onTracker(args))];
121
95
  if (roles.main) {
122
96
  this._unsubscribes.push(this._hub.on(_index.fields.view(roles.main), state => this._onMainViewUpdate(state)));
@@ -133,8 +107,30 @@ class Workflow extends _commons.Component {
133
107
  return context;
134
108
  }
135
109
 
110
+ // hub //
111
+ _onHubUpdate(event) {
112
+ this._runCallbacks(this._client.meta.parent._hubUpdateCallbacks, event);
113
+ }
114
+ _onHubEmit(event) {
115
+ this._runCallbacks(this._client.meta.parent._hubEmitCallbacks, event);
116
+ this._emitAsWorkflowEvent(event);
117
+ }
118
+ _emitAsWorkflowEvent({
119
+ action: _action,
120
+ name,
121
+ state,
122
+ silent
123
+ }) {
124
+ if (!silent) {
125
+ this._emit(name, Object.assign({
126
+ _action
127
+ }, state));
128
+ }
129
+ }
130
+
136
131
  // properties //
137
132
  get uuid() {
133
+ // TODO: review this
138
134
  return this.session && this.session.uuid;
139
135
  }
140
136
  get session() {
@@ -186,10 +182,9 @@ class Workflow extends _commons.Component {
186
182
  this._emitLifecycleEvent('finally', state);
187
183
  }
188
184
  }
189
- _shallEmitLifecycleEvent(name, _ref3) {
190
- let {
191
- session
192
- } = _ref3;
185
+ _shallEmitLifecycleEvent(name, {
186
+ session
187
+ }) {
193
188
  const context = this._getSessionContext(session);
194
189
  const events = context.lifecycleEvents || (context.lifecycleEvents = new Set());
195
190
  const emitted = events.has(name);
@@ -204,8 +199,7 @@ class Workflow extends _commons.Component {
204
199
  }
205
200
 
206
201
  // request //
207
- _request() {
208
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
202
+ _request(options = {}) {
209
203
  const {
210
204
  session
211
205
  } = this;
@@ -334,10 +328,9 @@ class Workflow extends _commons.Component {
334
328
  this._events.emit('destroy');
335
329
  this._destroy(options);
336
330
  }
337
- _destroy() {
338
- let {
339
- dom
340
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
331
+ _destroy({
332
+ dom
333
+ } = {}) {
341
334
  for (const unsubscribe of this._unsubscribes || []) {
342
335
  unsubscribe();
343
336
  }
@@ -349,16 +342,25 @@ class Workflow extends _commons.Component {
349
342
  }
350
343
 
351
344
  // helper //
352
- _log(action, name, data) {
353
- this._emit(name, Object.assign({
354
- _action: action
355
- }, data));
345
+ _runCallbacks(callbacks, event) {
346
+ for (const callback of callbacks) {
347
+ try {
348
+ callback(Object.assign({
349
+ workflow: this
350
+ }, event));
351
+ } catch (e) {
352
+ this._error(e);
353
+ }
354
+ }
356
355
  }
357
356
  _emit(name, data) {
358
- this._events.emit(name, data);
357
+ this._events.emit(name, Object.assign({
358
+ _event: name
359
+ }, data));
359
360
  if (this._context) {
360
361
  this._context._events.emit(name, Object.assign({
361
- workflow: this
362
+ workflow: this,
363
+ _event: name
362
364
  }, data));
363
365
  }
364
366
  }
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _commons = require("@miso.ai/commons");
8
- var _base = _interopRequireDefault(require("./base.js"));
8
+ var _unit = _interopRequireDefault(require("./unit.js"));
9
9
  var _index = require("../actor/index.js");
10
10
  var _constants = require("../constants.js");
11
11
  var _index2 = require("../layout/index.js");
@@ -14,11 +14,11 @@ var _useLink = require("./use-link.js");
14
14
  const _excluded = ["value"];
15
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
16
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
17
- const DEFAULT_API_OPTIONS = Object.freeze(Object.assign({}, _base.default.DEFAULT_API_OPTIONS, {
17
+ const DEFAULT_API_OPTIONS = Object.freeze(Object.assign({}, _unit.default.DEFAULT_API_OPTIONS, {
18
18
  group: _commons.API.GROUP.ASK,
19
19
  name: _commons.API.NAME.RELATED_QUESTIONS
20
20
  }));
21
- const DEFAULT_LAYOUTS = Object.freeze(Object.assign({}, _base.default.DEFAULT_LAYOUTS, {
21
+ const DEFAULT_LAYOUTS = Object.freeze(Object.assign({}, _unit.default.DEFAULT_LAYOUTS, {
22
22
  [_constants.ROLE.RELATED_QUESTIONS]: [_index2.ListLayout.type, {
23
23
  itemType: 'question',
24
24
  link: {
@@ -29,7 +29,7 @@ const DEFAULT_LAYOUTS = Object.freeze(Object.assign({}, _base.default.DEFAULT_LA
29
29
  placeholder: 'Ask a question'
30
30
  }]
31
31
  }));
32
- const DEFAULT_TRACKERS = Object.freeze(Object.assign({}, _base.default.DEFAULT_TRACKERS, {
32
+ const DEFAULT_TRACKERS = Object.freeze(Object.assign({}, _unit.default.DEFAULT_TRACKERS, {
33
33
  [_constants.ROLE.RELATED_QUESTIONS]: _index3.DEFAULT_TRACKER_OPTIONS,
34
34
  [_constants.ROLE.CONTAINER]: Object.assign({}, _index3.DEFAULT_TRACKER_OPTIONS, {
35
35
  itemless: true
@@ -40,23 +40,23 @@ const DEFAULT_TRACKERS = Object.freeze(Object.assign({}, _base.default.DEFAULT_T
40
40
  }
41
41
  }
42
42
  }));
43
- const DEFAULT_OPTIONS = Object.freeze(Object.assign({}, _base.default.DEFAULT_OPTIONS, {
43
+ const DEFAULT_OPTIONS = Object.freeze(Object.assign({}, _unit.default.DEFAULT_OPTIONS, {
44
44
  api: DEFAULT_API_OPTIONS,
45
45
  layouts: DEFAULT_LAYOUTS,
46
46
  trackers: DEFAULT_TRACKERS
47
47
  }));
48
- const ROLES_OPTIONS = (0, _index3.mergeRolesOptions)(_base.default.ROLES_OPTIONS, {
48
+ const ROLES_OPTIONS = (0, _index3.mergeRolesOptions)(_unit.default.ROLES_OPTIONS, {
49
49
  main: _constants.ROLE.RELATED_QUESTIONS,
50
50
  members: Object.keys(DEFAULT_LAYOUTS)
51
51
  });
52
- class Explore extends _base.default {
53
- constructor(plugin, client) {
52
+ class Explore extends _unit.default {
53
+ constructor(context, id) {
54
54
  super({
55
55
  name: 'explore',
56
- plugin,
57
- client,
56
+ context,
58
57
  roles: ROLES_OPTIONS,
59
- defaults: DEFAULT_OPTIONS
58
+ defaults: DEFAULT_OPTIONS,
59
+ id
60
60
  });
61
61
  }
62
62
  _initProperties(args) {
@@ -76,14 +76,15 @@ class Explore extends _base.default {
76
76
  product_id: value
77
77
  });
78
78
  }
79
- useApi(options) {
79
+ useApi(...args) {
80
+ const options = (typeof args[0] === 'object' ? args[0] : args[1]) || {};
80
81
  const {
81
82
  product_id
82
83
  } = options;
83
84
  if (product_id) {
84
85
  this._productId = product_id;
85
86
  }
86
- return super.useApi(options);
87
+ return super.useApi(...args);
87
88
  }
88
89
  useLink(fn, options) {
89
90
  _useLink.UseLinkMixin.prototype.useLink.call(this, fn, options);
@@ -99,10 +100,9 @@ class Explore extends _base.default {
99
100
  }
100
101
 
101
102
  // lifecycle //
102
- start() {
103
- let {
104
- relatedQuestions = true
105
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
103
+ start({
104
+ relatedQuestions = true
105
+ } = {}) {
106
106
  if (this._linkFn === undefined) {
107
107
  throw new Error('Must define link mapping function with useLink(fn) before calling start()');
108
108
  }
@@ -125,11 +125,7 @@ class Explore extends _base.default {
125
125
  }
126
126
  return this;
127
127
  }
128
- notifyViewUpdate() {
129
- let role = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants.ROLE.RELATED_QUESTIONS;
130
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
131
- args[_key - 1] = arguments[_key];
132
- }
128
+ notifyViewUpdate(role = _constants.ROLE.RELATED_QUESTIONS, ...args) {
133
129
  super.notifyViewUpdate(role, ...args);
134
130
  return this;
135
131
  }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _units = _interopRequireDefault(require("./units.js"));
8
+ var _explore = _interopRequireDefault(require("./explore.js"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ class Explores extends _units.default {
11
+ constructor(plugin, client) {
12
+ super('explores', plugin, client);
13
+ }
14
+ _create(unitId) {
15
+ return new _explore.default(this, unitId);
16
+ }
17
+ }
18
+ exports.default = Explores;
@@ -40,7 +40,9 @@ class HybridSearchAnswer extends _answerBased.default {
40
40
  super.restart();
41
41
  // cascade restart to the sibling
42
42
  const results = this._superworkflow._results;
43
- results._views.filters.reset();
43
+ results._views.filters.reset({
44
+ silent: true
45
+ });
44
46
  results.restart();
45
47
  this._resultsSession = results.session; // keep track of the session
46
48
  }
@@ -52,8 +54,7 @@ class HybridSearchAnswer extends _answerBased.default {
52
54
  payload = this._superworkflow._results._writeFiltersToPayload(payload);
53
55
  return payload;
54
56
  }
55
- _writeQuestionSourceToPayload() {
56
- let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
57
+ _writeQuestionSourceToPayload(_ref = {}) {
57
58
  let {
58
59
  qs
59
60
  } = _ref,