@miso.ai/client-sdk-ui 1.11.5-beta.8 → 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/layout/list/gallery.js +2 -4
- 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/layout/list/gallery.js +2 -3
- 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);
|
|
@@ -198,8 +198,7 @@ class GalleryLayout extends _collection.default {
|
|
|
198
198
|
_syncCssVariables() {
|
|
199
199
|
const context = this._galleryContext;
|
|
200
200
|
let {
|
|
201
|
-
itemAspectRatio = 1
|
|
202
|
-
height = DEFAULT_HEIGHT
|
|
201
|
+
itemAspectRatio = 1
|
|
203
202
|
} = this.options;
|
|
204
203
|
itemAspectRatio = context.itemAspectRatio = (0, _dom.cssAspectRatio)(itemAspectRatio);
|
|
205
204
|
const {
|
|
@@ -209,7 +208,6 @@ class GalleryLayout extends _collection.default {
|
|
|
209
208
|
return;
|
|
210
209
|
}
|
|
211
210
|
// TODO: skip if equal to default values
|
|
212
|
-
element.style.setProperty('--miso-gallery-height', `${height}`);
|
|
213
211
|
element.style.setProperty('--miso-gallery-item-1x1-aspect-ratio', `${itemAspectRatio}`);
|
|
214
212
|
element.style.setProperty('--miso-gallery-item-1x2-aspect-ratio', `${itemAspectRatio.scaleBy([1, 2])}`);
|
|
215
213
|
}
|
|
@@ -234,7 +232,7 @@ class GalleryLayout extends _collection.default {
|
|
|
234
232
|
|
|
235
233
|
// update DOM
|
|
236
234
|
listElement.style.aspectRatio = `${columnCount} / 2`;
|
|
237
|
-
listElement.style.height = 'auto';
|
|
235
|
+
listElement.style.height = itemCount > 0 ? 'auto' : '0';
|
|
238
236
|
}
|
|
239
237
|
_syncItemCount() {
|
|
240
238
|
let {
|
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);
|
|
@@ -170,14 +170,13 @@ export default class GalleryLayout extends CollectionLayout {
|
|
|
170
170
|
|
|
171
171
|
_syncCssVariables() {
|
|
172
172
|
const context = this._galleryContext;
|
|
173
|
-
let { itemAspectRatio = 1
|
|
173
|
+
let { itemAspectRatio = 1 } = this.options;
|
|
174
174
|
itemAspectRatio = context.itemAspectRatio = cssAspectRatio(itemAspectRatio);
|
|
175
175
|
const { element } = this._view;
|
|
176
176
|
if (!element) {
|
|
177
177
|
return;
|
|
178
178
|
}
|
|
179
179
|
// TODO: skip if equal to default values
|
|
180
|
-
element.style.setProperty('--miso-gallery-height', `${height}`);
|
|
181
180
|
element.style.setProperty('--miso-gallery-item-1x1-aspect-ratio', `${itemAspectRatio}`);
|
|
182
181
|
element.style.setProperty('--miso-gallery-item-1x2-aspect-ratio', `${itemAspectRatio.scaleBy([1, 2])}`);
|
|
183
182
|
}
|
|
@@ -198,7 +197,7 @@ export default class GalleryLayout extends CollectionLayout {
|
|
|
198
197
|
|
|
199
198
|
// update DOM
|
|
200
199
|
listElement.style.aspectRatio = `${columnCount} / 2`;
|
|
201
|
-
listElement.style.height = 'auto';
|
|
200
|
+
listElement.style.height = itemCount > 0 ? 'auto' : '0';
|
|
202
201
|
}
|
|
203
202
|
|
|
204
203
|
_syncItemCount({ state } = {}) {
|
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
|
+
}
|