@miso.ai/client-sdk-ui 1.9.1-beta.1 → 1.9.1-beta.3

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.
@@ -214,7 +214,8 @@ class CollectionLayout extends _template.default {
214
214
  this._view._events.emit('click', {
215
215
  session,
216
216
  value,
217
- element
217
+ element,
218
+ domEvent: event
218
219
  });
219
220
  }
220
221
  destroy() {
@@ -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.9.1-beta.1';
7
+ var _default = exports.default = '1.9.1-beta.3';
@@ -10,8 +10,7 @@ var _options = require("./options.js");
10
10
  var _index = require("../actor/index.js");
11
11
  var _constants = require("../constants.js");
12
12
  var _index2 = require("../layout/index.js");
13
- const _excluded = ["layouts"],
14
- _excluded2 = ["q"];
13
+ const _excluded = ["q"];
15
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
15
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
17
16
  const DEFAULT_API_OPTIONS = Object.freeze({
@@ -26,7 +25,9 @@ const DEFAULT_API_OPTIONS = Object.freeze({
26
25
  }
27
26
  });
28
27
  const DEFAULT_LAYOUTS = Object.freeze({
29
- [_constants.ROLE.QUERY]: [_index2.SearchBoxLayout.type],
28
+ [_constants.ROLE.QUERY]: [_index2.SearchBoxLayout.type, {
29
+ placeholder: 'Ask a question'
30
+ }],
30
31
  [_constants.ROLE.QUESTION]: [_index2.TextLayout.type, {
31
32
  tag: 'h2'
32
33
  }],
@@ -61,26 +62,13 @@ const DEFAULT_OPTIONS = Object.freeze({
61
62
  layouts: DEFAULT_LAYOUTS,
62
63
  trackers: DEFAULT_TRACKERS
63
64
  });
64
- function mergeDefaults(_ref, parentQuestionId) {
65
- let {
66
- layouts
67
- } = _ref,
68
- defaults = _objectWithoutPropertiesLoose(_ref, _excluded);
69
- return Object.assign({}, defaults, {
70
- layouts: (0, _options.mergeLayoutsOptions)(layouts, {
71
- [_constants.ROLE.QUERY]: [_index2.SearchBoxLayout.type, {
72
- placeholder: parentQuestionId ? 'Ask a follow-up question' : 'Ask anything'
73
- }]
74
- })
75
- });
76
- }
77
65
  class Ask extends _base.default {
78
66
  constructor(context, parentQuestionId) {
79
67
  super({
80
68
  name: 'ask',
81
69
  context,
82
70
  roles: Object.keys(DEFAULT_LAYOUTS),
83
- defaults: mergeDefaults(DEFAULT_OPTIONS, parentQuestionId)
71
+ defaults: DEFAULT_OPTIONS
84
72
  });
85
73
  this._context = context;
86
74
  (0, _commons.defineValues)(this, {
@@ -145,11 +133,11 @@ class Ask extends _base.default {
145
133
  }
146
134
  }
147
135
  query() {
148
- let _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
136
+ let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
149
137
  let {
150
138
  q: question
151
- } = _ref2,
152
- payload = _objectWithoutPropertiesLoose(_ref2, _excluded2);
139
+ } = _ref,
140
+ payload = _objectWithoutPropertiesLoose(_ref, _excluded);
153
141
  payload = Object.assign({}, payload, {
154
142
  question
155
143
  });
@@ -220,12 +208,12 @@ class Ask extends _base.default {
220
208
  this._context._byQid.set(questionId, this);
221
209
  }
222
210
  }
223
- _onAnswerViewUpdate(_ref3) {
211
+ _onAnswerViewUpdate(_ref2) {
224
212
  let {
225
213
  session,
226
214
  status,
227
215
  ongoing
228
- } = _ref3;
216
+ } = _ref2;
229
217
  if (status === _constants.STATUS.INITIAL) {
230
218
  return;
231
219
  }
@@ -257,10 +245,10 @@ class Ask extends _base.default {
257
245
  }))
258
246
  });
259
247
  }
260
- _onCitationClick(_ref4) {
248
+ _onCitationClick(_ref3) {
261
249
  let {
262
250
  index
263
- } = _ref4;
251
+ } = _ref3;
264
252
  const {
265
253
  value
266
254
  } = this.states[_index.fields.data()] || {};
@@ -20,6 +20,9 @@ const DEFAULT_API_OPTIONS = Object.freeze({
20
20
  const DEFAULT_LAYOUTS = Object.freeze({
21
21
  [_constants.ROLE.RELATED_QUESTIONS]: [_index2.ListLayout.type, {
22
22
  itemType: 'question'
23
+ }],
24
+ [_constants.ROLE.QUERY]: [_index2.SearchBoxLayout.type, {
25
+ placeholder: 'Ask a question'
23
26
  }]
24
27
  });
25
28
  const DEFAULT_TRACKERS = Object.freeze({
@@ -41,7 +44,7 @@ class Explore extends _base.default {
41
44
  });
42
45
  this._productId = undefined;
43
46
  this._linkFn = undefined;
44
- this._unsubscribes.push(this._views.get(_constants.ROLE.RELATED_QUESTIONS).on('click', event => this._handleQuestionClick(event)));
47
+ this._unsubscribes = [...this._unsubscribes, this._views.get(_constants.ROLE.RELATED_QUESTIONS).on('click', event => this._handleRelatedQuestionClick(event)), this._hub.on(_index.fields.query(), payload => this.query(payload))];
45
48
  }
46
49
  set productId(value) {
47
50
  console.warning('DEPRECATED: use useApi() instead');
@@ -102,7 +105,7 @@ class Explore extends _base.default {
102
105
  })
103
106
  });
104
107
  }
105
- _handleQuestionClick(_ref) {
108
+ _handleRelatedQuestionClick(_ref) {
106
109
  let {
107
110
  value: question
108
111
  } = _ref,
@@ -111,5 +114,15 @@ class Explore extends _base.default {
111
114
  question
112
115
  })));
113
116
  }
117
+ query() {
118
+ let {
119
+ q
120
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
121
+ if (!this._linkFn) {
122
+ return;
123
+ }
124
+ const url = this._linkFn(q);
125
+ window.open(url, '_blank');
126
+ }
114
127
  }
115
128
  exports.default = Explore;
@@ -157,7 +157,12 @@ function mergeLayoutOptions(base, overrides) {
157
157
  if (overrides[0] === false) {
158
158
  return overrides;
159
159
  }
160
- return base && overrides ? [overrides[0] || base[0], Object.assign({}, base[1], overrides[1])] : overrides || base;
160
+ return base && overrides ? [overrides[0] || base[0], mergeLayoutParameters(base[1], overrides[1])] : overrides || base;
161
+ }
162
+ function mergeLayoutParameters(base, overrides) {
163
+ return Object.assign({}, base, overrides, {
164
+ templates: Object.assign({}, base && base.templates, overrides && overrides.templates)
165
+ });
161
166
  }
162
167
  function mergeDataProcessorOptions() {
163
168
  for (var _len3 = arguments.length, optionsList = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
package/package.json CHANGED
@@ -26,7 +26,7 @@
26
26
  "url": "https://github.com/MisoAI/miso-client-js-sdk/issues"
27
27
  },
28
28
  "dependencies": {
29
- "@miso.ai/commons": "1.9.1-beta.1"
29
+ "@miso.ai/commons": "1.9.1-beta.3"
30
30
  },
31
- "version": "1.9.1-beta.1"
31
+ "version": "1.9.1-beta.3"
32
32
  }
@@ -176,7 +176,7 @@ export default class CollectionLayout extends TemplateBasedLayout {
176
176
  }
177
177
  const value = element[VALUE];
178
178
  const { session } = this._view._state;
179
- this._view._events.emit('click', { session, value, element });
179
+ this._view._events.emit('click', { session, value, element, domEvent: event });
180
180
  }
181
181
 
182
182
  destroy() {
package/src/version.js CHANGED
@@ -1 +1 @@
1
- export default '1.9.1-beta.1';
1
+ export default '1.9.1-beta.3';
@@ -1,6 +1,6 @@
1
1
  import { defineValues, trimObj, API } from '@miso.ai/commons';
2
2
  import Workflow from './base.js';
3
- import { mergeApiOptions, mergeLayoutsOptions } from './options.js';
3
+ import { mergeApiOptions } from './options.js';
4
4
  import { fields, FeedbackActor } from '../actor/index.js';
5
5
  import { ROLE, STATUS } from '../constants.js';
6
6
  import { SearchBoxLayout, OptionListLayout, ListLayout, TextLayout, TypewriterLayout, FeedbackLayout } from '../layout/index.js';
@@ -18,7 +18,7 @@ const DEFAULT_API_OPTIONS = Object.freeze({
18
18
  });
19
19
 
20
20
  const DEFAULT_LAYOUTS = Object.freeze({
21
- [ROLE.QUERY]: [SearchBoxLayout.type],
21
+ [ROLE.QUERY]: [SearchBoxLayout.type, { placeholder: 'Ask a question' }],
22
22
  [ROLE.QUESTION]: [TextLayout.type, { tag: 'h2' }],
23
23
  [ROLE.ANSWER]: TypewriterLayout.type,
24
24
  [ROLE.FEEDBACK]: FeedbackLayout.type,
@@ -44,17 +44,6 @@ const DEFAULT_OPTIONS = Object.freeze({
44
44
  trackers: DEFAULT_TRACKERS,
45
45
  });
46
46
 
47
- function mergeDefaults({ layouts, ...defaults }, parentQuestionId) {
48
- return {
49
- ...defaults,
50
- layouts: mergeLayoutsOptions(layouts, {
51
- [ROLE.QUERY]: [SearchBoxLayout.type, {
52
- placeholder: parentQuestionId ? 'Ask a follow-up question' : 'Ask anything',
53
- }],
54
- }),
55
- };
56
- }
57
-
58
47
  export default class Ask extends Workflow {
59
48
 
60
49
  constructor(context, parentQuestionId) {
@@ -62,7 +51,7 @@ export default class Ask extends Workflow {
62
51
  name: 'ask',
63
52
  context,
64
53
  roles: Object.keys(DEFAULT_LAYOUTS),
65
- defaults: mergeDefaults(DEFAULT_OPTIONS, parentQuestionId),
54
+ defaults: DEFAULT_OPTIONS,
66
55
  });
67
56
  this._context = context;
68
57
  defineValues(this, { parentQuestionId });
@@ -3,7 +3,7 @@ import Workflow from './base.js';
3
3
  import { mergeApiOptions } from './options.js';
4
4
  import { fields } from '../actor/index.js';
5
5
  import { ROLE } from '../constants.js';
6
- import { ListLayout } from '../layout/index.js';
6
+ import { ListLayout, SearchBoxLayout } from '../layout/index.js';
7
7
 
8
8
  const DEFAULT_API_OPTIONS = Object.freeze({
9
9
  group: API.GROUP.ASK,
@@ -12,6 +12,7 @@ const DEFAULT_API_OPTIONS = Object.freeze({
12
12
 
13
13
  const DEFAULT_LAYOUTS = Object.freeze({
14
14
  [ROLE.RELATED_QUESTIONS]: [ListLayout.type, { itemType: 'question' }],
15
+ [ROLE.QUERY]: [SearchBoxLayout.type, { placeholder: 'Ask a question' }],
15
16
  });
16
17
 
17
18
  const DEFAULT_TRACKERS = Object.freeze({
@@ -36,7 +37,12 @@ export default class Explore extends Workflow {
36
37
  });
37
38
  this._productId = undefined;
38
39
  this._linkFn = undefined;
39
- this._unsubscribes.push(this._views.get(ROLE.RELATED_QUESTIONS).on('click', event => this._handleQuestionClick(event)));
40
+
41
+ this._unsubscribes = [
42
+ ...this._unsubscribes,
43
+ this._views.get(ROLE.RELATED_QUESTIONS).on('click', event => this._handleRelatedQuestionClick(event)),
44
+ this._hub.on(fields.query(), payload => this.query(payload)),
45
+ ];
40
46
  }
41
47
 
42
48
  set productId(value) {
@@ -89,8 +95,16 @@ export default class Explore extends Workflow {
89
95
  };
90
96
  }
91
97
 
92
- _handleQuestionClick({ value: question, ...event }) {
98
+ _handleRelatedQuestionClick({ value: question, ...event }) {
93
99
  this._events.emit('select', Object.freeze({ ...event, question }));
94
100
  }
95
101
 
102
+ query({ q } = {}) {
103
+ if (!this._linkFn) {
104
+ return;
105
+ }
106
+ const url = this._linkFn(q);
107
+ window.open(url, '_blank');
108
+ }
109
+
96
110
  }
@@ -130,7 +130,15 @@ function mergeLayoutOptions(base, overrides) {
130
130
  if (overrides[0] === false) {
131
131
  return overrides;
132
132
  }
133
- return base && overrides ? [overrides[0] || base[0], { ...base[1], ...overrides[1] }] : (overrides || base);
133
+ return base && overrides ? [overrides[0] || base[0], mergeLayoutParameters(base[1], overrides[1])] : (overrides || base);
134
+ }
135
+
136
+ function mergeLayoutParameters(base, overrides) {
137
+ return {
138
+ ...base,
139
+ ...overrides,
140
+ templates: { ...(base && base.templates), ...(overrides && overrides.templates) },
141
+ };
134
142
  }
135
143
 
136
144
  export function mergeDataProcessorOptions(...optionsList) {