@miso.ai/client-sdk-ui 1.11.5-beta.9 → 1.11.5

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.
@@ -72,7 +72,8 @@ const STATUS = exports.STATUS = Object.freeze({
72
72
  ONGOING: 'ongoing',
73
73
  DONE: 'done',
74
74
  EMPTY: 'empty',
75
- NONEMPTY: 'nonempty'
75
+ NONEMPTY: 'nonempty',
76
+ UNANSWERABLE: 'unanswerable'
76
77
  });
77
78
  function validateEventType(value) {
78
79
  if (TRACKING_EVENT_TYPES.indexOf(value) < 0) {
@@ -15,13 +15,15 @@ class AnswerBox {
15
15
  constructor(client, element) {
16
16
  let {
17
17
  classPrefix = _constants.CLASS_PREFIX,
18
- phrases = {}
18
+ phrases = {},
19
+ hideWhenUnanswerable = true
19
20
  } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
20
21
  this._client = client;
21
22
  this._workflow = client.ui.hybridSearch;
22
23
  this._element = element;
23
24
  this._classPrefix = classPrefix;
24
25
  this._phrases = phrases;
26
+ this._hideWhenUnanswerable = hideWhenUnanswerable;
25
27
  this._init();
26
28
  }
27
29
  _init() {
@@ -65,10 +67,19 @@ class AnswerBox {
65
67
  const {
66
68
  status
67
69
  } = this._workflow._answer;
70
+ const {
71
+ meta: {
72
+ unanswerable = false
73
+ } = {}
74
+ } = this._workflow._answer._hub.states[_index.fields.data()];
68
75
  switch (status) {
69
76
  case _constants2.STATUS.ERRONEOUS:
70
77
  case _constants2.STATUS.READY:
71
- this.show();
78
+ if (unanswerable && this._hideWhenUnanswerable) {
79
+ this.hide();
80
+ } else {
81
+ this.show();
82
+ }
72
83
  break;
73
84
  default:
74
85
  this.hide();
@@ -7,11 +7,12 @@ exports.wireAnswerBox = wireAnswerBox;
7
7
  var _answerBox = _interopRequireDefault(require("./answer-box.js"));
8
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  function wireAnswerBox(client, element) {
10
+ let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
10
11
  if (!client) {
11
12
  throw new Error('client is required');
12
13
  }
13
14
  if (!element) {
14
15
  return;
15
16
  }
16
- new _answerBox.default(client, element);
17
+ new _answerBox.default(client, element, options);
17
18
  }
@@ -18,6 +18,15 @@ class Sections extends _templates.Sections {
18
18
  helpers
19
19
  });
20
20
  }
21
+ answer(options) {
22
+ const {
23
+ container
24
+ } = this._helpers;
25
+ return container(options, {
26
+ name: 'answer',
27
+ visibleWhen: 'ready !unanswerable'
28
+ }, [...this.question(options), '<miso-answer></miso-answer>', '<miso-feedback></miso-feedback>']);
29
+ }
21
30
  answerBox(options) {
22
31
  const {
23
32
  element
@@ -80,13 +80,17 @@ class ContainerLayout extends _raf.default {
80
80
  ongoing,
81
81
  meta: {
82
82
  miso_id,
83
- empty = false
83
+ empty = false,
84
+ unanswerable = false
84
85
  } = {}
85
86
  } = state;
86
87
  const statuses = [status, empty ? _constants.STATUS.EMPTY : _constants.STATUS.NONEMPTY];
87
88
  if (status === _constants.STATUS.READY) {
88
89
  statuses.push(ongoing ? _constants.STATUS.ONGOING : _constants.STATUS.DONE);
89
90
  }
91
+ if (unanswerable) {
92
+ statuses.push(_constants.STATUS.UNANSWERABLE);
93
+ }
90
94
  element.setAttribute('status', statuses.join(' '));
91
95
  if (miso_id) {
92
96
  element.setAttribute('miso-id', miso_id);
@@ -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.5-beta.9';
7
+ var _default = exports.default = '1.11.5';
@@ -70,6 +70,7 @@ class HybridSearchAnswer extends _answerBased.default {
70
70
  data = super._defaultProcessData(data);
71
71
  data = (0, _processors.writeKeywordsToData)(data);
72
72
  data = (0, _processors.writeMisoIdFromSession)(data);
73
+ data = (0, _processors.writeUnanswerableToMeta)(data);
73
74
  return data;
74
75
  }
75
76
  _updateDataInHub(data) {
@@ -18,6 +18,7 @@ exports.writeKeywordsToData = writeKeywordsToData;
18
18
  exports.writeMisoIdFromSession = writeMisoIdFromSession;
19
19
  exports.writeMisoIdToMeta = writeMisoIdToMeta;
20
20
  exports.writeMisoIdToSession = writeMisoIdToSession;
21
+ exports.writeUnanswerableToMeta = writeUnanswerableToMeta;
21
22
  var _commons = require("@miso.ai/commons");
22
23
  var _constants = require("../constants.js");
23
24
  var _index = require("../actor/index.js");
@@ -346,4 +347,20 @@ function mergeInteraction() {
346
347
  custom_context: (0, _commons.trimObj)(Object.assign({}, base.context && base.context.custom_context, patch.context && patch.context.custom_context))
347
348
  }))
348
349
  }));
350
+ }
351
+ function writeUnanswerableToMeta(data) {
352
+ const {
353
+ value
354
+ } = data;
355
+ if (!value) {
356
+ return data;
357
+ }
358
+ if (!value.finished || value.finish_reason !== 'success' || value.sources && value.sources.length > 0) {
359
+ return data;
360
+ }
361
+ return Object.assign({}, data, {
362
+ meta: Object.assign({}, data.meta, {
363
+ unanswerable: true
364
+ })
365
+ });
349
366
  }
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.11.5-beta.9"
29
+ "@miso.ai/commons": "1.11.5"
30
30
  },
31
- "version": "1.11.5-beta.9"
31
+ "version": "1.11.5"
32
32
  }
package/src/constants.js CHANGED
@@ -105,6 +105,7 @@ export const STATUS = Object.freeze({
105
105
  DONE: 'done',
106
106
  EMPTY: 'empty',
107
107
  NONEMPTY: 'nonempty',
108
+ UNANSWERABLE: 'unanswerable',
108
109
  });
109
110
 
110
111
  export function validateEventType(value) {
@@ -9,12 +9,13 @@ const TOGGLE_BUTTON_SELECTOR = '[data-role="answer-box-toggle"]';
9
9
 
10
10
  export default class AnswerBox {
11
11
 
12
- constructor(client, element, { classPrefix = CLASS_PREFIX, phrases = {} } = {}) {
12
+ constructor(client, element, { classPrefix = CLASS_PREFIX, phrases = {}, hideWhenUnanswerable = true } = {}) {
13
13
  this._client = client;
14
14
  this._workflow = client.ui.hybridSearch;
15
15
  this._element = element;
16
16
  this._classPrefix = classPrefix;
17
17
  this._phrases = phrases;
18
+ this._hideWhenUnanswerable = hideWhenUnanswerable;
18
19
  this._init();
19
20
  }
20
21
 
@@ -58,10 +59,16 @@ export default class AnswerBox {
58
59
 
59
60
  _syncWofkflowStatus() {
60
61
  const { status } = this._workflow._answer;
62
+ const { meta: { unanswerable = false } = {} } = this._workflow._answer._hub.states[fields.data()];
63
+
61
64
  switch (status) {
62
65
  case STATUS.ERRONEOUS:
63
66
  case STATUS.READY:
64
- this.show();
67
+ if (unanswerable && this._hideWhenUnanswerable) {
68
+ this.hide();
69
+ } else {
70
+ this.show();
71
+ }
65
72
  break;
66
73
  default:
67
74
  this.hide();
@@ -1,11 +1,11 @@
1
1
  import AnswerBox from './answer-box.js';
2
2
 
3
- export function wireAnswerBox(client, element) {
3
+ export function wireAnswerBox(client, element, options = {}) {
4
4
  if (!client) {
5
5
  throw new Error('client is required');
6
6
  }
7
7
  if (!element) {
8
8
  return;
9
9
  }
10
- new AnswerBox(client, element);
10
+ new AnswerBox(client, element, options);
11
11
  }
@@ -9,6 +9,15 @@ class Sections extends _Sections {
9
9
  super({ helpers });
10
10
  }
11
11
 
12
+ answer(options) {
13
+ const { container } = this._helpers;
14
+ return container(options, { name: 'answer', visibleWhen: 'ready !unanswerable' }, [
15
+ ...this.question(options),
16
+ '<miso-answer></miso-answer>',
17
+ '<miso-feedback></miso-feedback>',
18
+ ]);
19
+ }
20
+
12
21
  answerBox(options) {
13
22
  const { element } = this._helpers;
14
23
  const { classPrefix } = options;
@@ -60,11 +60,14 @@ export default class ContainerLayout extends RafLayout {
60
60
  if (!element) {
61
61
  return;
62
62
  }
63
- const { status, ongoing, meta: { miso_id, empty = false } = {} } = state;
63
+ const { status, ongoing, meta: { miso_id, empty = false, unanswerable = false } = {} } = state;
64
64
  const statuses = [status, empty ? STATUS.EMPTY : STATUS.NONEMPTY];
65
65
  if (status === STATUS.READY) {
66
66
  statuses.push(ongoing ? STATUS.ONGOING : STATUS.DONE);
67
67
  }
68
+ if (unanswerable) {
69
+ statuses.push(STATUS.UNANSWERABLE);
70
+ }
68
71
  element.setAttribute('status', statuses.join(' '));
69
72
  if (miso_id) {
70
73
  element.setAttribute('miso-id', miso_id);
package/src/version.js CHANGED
@@ -1 +1 @@
1
- export default '1.11.5-beta.9';
1
+ export default '1.11.5';
@@ -1,7 +1,7 @@
1
1
  import AnswerBasedWorkflow from './answer-based.js';
2
2
  import { ROLE, STATUS, ORGANIC_QUESTION_SOURCE } from '../constants.js';
3
3
  import { mergeRolesOptions } from './options/index.js';
4
- import { writeKeywordsToData, writeMisoIdToSession, writeMisoIdFromSession } from './processors.js';
4
+ import { writeKeywordsToData, writeMisoIdToSession, writeMisoIdFromSession, writeUnanswerableToMeta } from './processors.js';
5
5
  import { makeAutocompletable } from './autocompletable.js';
6
6
 
7
7
  const ROLES_OPTIONS = mergeRolesOptions(AnswerBasedWorkflow.ROLES_OPTIONS, {
@@ -64,6 +64,7 @@ export default class HybridSearchAnswer extends AnswerBasedWorkflow {
64
64
  data = super._defaultProcessData(data);
65
65
  data = writeKeywordsToData(data);
66
66
  data = writeMisoIdFromSession(data);
67
+ data = writeUnanswerableToMeta(data);
67
68
  return data;
68
69
  }
69
70
 
@@ -287,3 +287,20 @@ export function mergeInteraction(base = {}, patch = {}) {
287
287
  }),
288
288
  });
289
289
  }
290
+
291
+ export function writeUnanswerableToMeta(data) {
292
+ const { value } = data;
293
+ if (!value) {
294
+ return data;
295
+ }
296
+ if (!value.finished || value.finish_reason !== 'success' || (value.sources && value.sources.length > 0)) {
297
+ return data;
298
+ }
299
+ return {
300
+ ...data,
301
+ meta: {
302
+ ...data.meta,
303
+ unanswerable: true,
304
+ },
305
+ };
306
+ }