@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.
- package/dist/cjs/constants.js +2 -1
- package/dist/cjs/defaults/hybrid-search/answer-box.js +13 -2
- package/dist/cjs/defaults/hybrid-search/controls.js +2 -1
- package/dist/cjs/defaults/hybrid-search/templates.js +9 -0
- package/dist/cjs/layout/container/container.js +5 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/workflow/hybrid-search-answer.js +1 -0
- package/dist/cjs/workflow/processors.js +17 -0
- package/package.json +2 -2
- package/src/constants.js +1 -0
- package/src/defaults/hybrid-search/answer-box.js +9 -2
- package/src/defaults/hybrid-search/controls.js +2 -2
- package/src/defaults/hybrid-search/templates.js +9 -0
- package/src/layout/container/container.js +4 -1
- package/src/version.js +1 -1
- package/src/workflow/hybrid-search-answer.js +2 -1
- package/src/workflow/processors.js +17 -0
package/dist/cjs/constants.js
CHANGED
|
@@ -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.
|
|
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);
|
package/dist/cjs/version.js
CHANGED
|
@@ -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
package/src/constants.js
CHANGED
|
@@ -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.
|
|
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
|
|
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
|
+
}
|