@miso.ai/client-sdk-ui 1.10.3 → 1.11.0-beta.0
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/actor/autocomplete.js +4 -1
- package/dist/cjs/actor/data.js +15 -6
- package/dist/cjs/actor/fields.js +10 -10
- package/dist/cjs/actor/filters.js +114 -0
- package/dist/cjs/actor/hub.js +2 -1
- package/dist/cjs/actor/sessions.js +3 -5
- package/dist/cjs/actor/view.js +19 -6
- package/dist/cjs/actor/views.js +32 -19
- package/dist/cjs/constants.js +9 -2
- package/dist/cjs/defaults/ask/constants.js +3 -2
- package/dist/cjs/defaults/ask/templates.js +112 -219
- package/dist/cjs/defaults/common/templates.js +234 -0
- package/dist/cjs/defaults/hybrid-search/answer-box.js +115 -0
- package/dist/cjs/defaults/hybrid-search/constants.js +8 -0
- package/dist/cjs/defaults/hybrid-search/controls.js +17 -0
- package/dist/cjs/defaults/hybrid-search/index.js +31 -0
- package/dist/cjs/defaults/hybrid-search/phrases.js +27 -0
- package/dist/cjs/defaults/hybrid-search/templates.js +127 -0
- package/dist/cjs/defaults/index.js +4 -2
- package/dist/cjs/element/container/index.js +7 -0
- package/dist/cjs/element/container/miso-hybrid-search.js +21 -0
- package/dist/cjs/element/role/index.js +21 -0
- package/dist/cjs/element/role/miso-facets.js +20 -0
- package/dist/cjs/element/role/miso-hits.js +20 -0
- package/dist/cjs/element/role/miso-keywords.js +20 -0
- package/dist/cjs/layout/index.js +7 -0
- package/dist/cjs/layout/input/facets.js +294 -0
- package/dist/cjs/layout/input/option-list.js +4 -4
- package/dist/cjs/layout/input/search-box.js +6 -8
- package/dist/cjs/layout/list/collection.js +1 -2
- package/dist/cjs/layout/radio/radio.js +1 -1
- package/dist/cjs/layout/raf.js +1 -0
- package/dist/cjs/layout/template.js +3 -1
- package/dist/cjs/layout/templates.js +15 -0
- package/dist/cjs/layout/text/text.js +38 -5
- package/dist/cjs/layout/trackable.js +2 -16
- package/dist/cjs/plugin.js +4 -1
- package/dist/cjs/{source/index.js → source.js} +7 -4
- package/dist/cjs/util/bindings.js +3 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/workflow/answer-based.js +335 -0
- package/dist/cjs/workflow/ask.js +98 -271
- package/dist/cjs/workflow/base.js +69 -35
- package/dist/cjs/workflow/explore.js +10 -0
- package/dist/cjs/workflow/hybrid-search.js +140 -0
- package/dist/cjs/workflow/index.js +7 -0
- package/dist/cjs/workflow/processors.js +113 -0
- package/dist/cjs/workflow/recommendation.js +12 -3
- package/dist/cjs/workflow/search.js +34 -12
- package/package.json +2 -2
- package/src/actor/autocomplete.js +4 -2
- package/src/actor/data.js +8 -2
- package/src/actor/fields.js +10 -10
- package/src/actor/filters.js +103 -0
- package/src/actor/hub.js +2 -1
- package/src/actor/sessions.js +3 -4
- package/src/actor/view.js +19 -2
- package/src/actor/views.js +30 -16
- package/src/constants.js +10 -0
- package/src/defaults/ask/constants.js +1 -0
- package/src/defaults/ask/templates.js +70 -179
- package/src/defaults/common/templates.js +173 -0
- package/src/defaults/hybrid-search/answer-box.js +118 -0
- package/src/defaults/hybrid-search/constants.js +2 -0
- package/src/defaults/hybrid-search/controls.js +11 -0
- package/src/defaults/hybrid-search/index.js +9 -0
- package/src/defaults/hybrid-search/phrases.js +22 -0
- package/src/defaults/hybrid-search/templates.js +83 -0
- package/src/defaults/index.js +2 -0
- package/src/element/container/index.js +1 -0
- package/src/element/container/miso-hybrid-search.js +19 -0
- package/src/element/role/index.js +3 -0
- package/src/element/role/miso-facets.js +16 -0
- package/src/element/role/miso-hits.js +16 -0
- package/src/element/role/miso-keywords.js +16 -0
- package/src/layout/index.js +1 -0
- package/src/layout/input/facets.js +242 -0
- package/src/layout/input/option-list.js +3 -4
- package/src/layout/input/search-box.js +6 -7
- package/src/layout/list/collection.js +1 -2
- package/src/layout/radio/radio.js +1 -1
- package/src/layout/raf.js +1 -0
- package/src/layout/template.js +2 -1
- package/src/layout/templates.js +15 -0
- package/src/layout/text/text.js +28 -3
- package/src/layout/trackable.js +2 -15
- package/src/plugin.js +6 -2
- package/src/{source/index.js → source.js} +7 -4
- package/src/util/bindings.js +4 -0
- package/src/version.js +1 -1
- package/src/workflow/answer-based.js +280 -0
- package/src/workflow/ask.js +82 -204
- package/src/workflow/base.js +64 -27
- package/src/workflow/explore.js +10 -1
- package/src/workflow/hybrid-search.js +125 -0
- package/src/workflow/index.js +1 -0
- package/src/workflow/processors.js +95 -0
- package/src/workflow/recommendation.js +9 -2
- package/src/workflow/search.js +35 -7
- package/dist/cjs/source/api.js +0 -23
- package/src/source/api.js +0 -12
|
@@ -18,6 +18,8 @@ class AutocompleteActor {
|
|
|
18
18
|
this._source = source;
|
|
19
19
|
this._options = options;
|
|
20
20
|
this._index = -1;
|
|
21
|
+
|
|
22
|
+
// TODO: listen to request:input instead
|
|
21
23
|
this._unsubscribes = [hub.on(fields.input(), () => this._sync()), options.on('autocomplete', () => this._syncOptions())];
|
|
22
24
|
|
|
23
25
|
// sync right away
|
|
@@ -133,7 +135,8 @@ class AutocompleteActor {
|
|
|
133
135
|
}
|
|
134
136
|
_emitCompletions(event) {
|
|
135
137
|
event.source = 'actor';
|
|
136
|
-
|
|
138
|
+
// TDOO: update response:autocomplete instead
|
|
139
|
+
this._hub.update(fields.data(_constants.DATA_ASPECT.AUTOCOMPLETE), event);
|
|
137
140
|
}
|
|
138
141
|
_error(error) {
|
|
139
142
|
// TODO
|
package/dist/cjs/actor/data.js
CHANGED
|
@@ -58,12 +58,13 @@ class DataActor {
|
|
|
58
58
|
session
|
|
59
59
|
} = this._hub.states;
|
|
60
60
|
const request = _objectWithoutPropertiesLoose(event, _excluded);
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
61
|
+
if (!event._skipLoading) {
|
|
62
|
+
// emit response to update request
|
|
63
|
+
this._emitResponse({
|
|
64
|
+
session,
|
|
65
|
+
request
|
|
66
|
+
});
|
|
67
|
+
}
|
|
67
68
|
try {
|
|
68
69
|
const {
|
|
69
70
|
signal
|
|
@@ -78,6 +79,14 @@ class DataActor {
|
|
|
78
79
|
}));
|
|
79
80
|
// takes an iterable, either sync or async
|
|
80
81
|
if (response && response[Symbol.asyncIterator]) {
|
|
82
|
+
// also emit reponse of the head request, if available
|
|
83
|
+
if (response._response) {
|
|
84
|
+
this._emitResponseWithSessionCheck({
|
|
85
|
+
session,
|
|
86
|
+
request,
|
|
87
|
+
value: response._response
|
|
88
|
+
});
|
|
89
|
+
}
|
|
81
90
|
let value;
|
|
82
91
|
for await (value of response) {
|
|
83
92
|
// A new session invalidates ongoing data fetch for the old session, terminating the loop
|
package/dist/cjs/actor/fields.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.completions = completions;
|
|
7
6
|
exports.data = data;
|
|
8
7
|
exports.event = event;
|
|
9
8
|
exports.feedback = feedback;
|
|
9
|
+
exports.filters = filters;
|
|
10
10
|
exports.input = input;
|
|
11
11
|
exports.interaction = interaction;
|
|
12
12
|
exports.query = query;
|
|
@@ -22,17 +22,20 @@ function session() {
|
|
|
22
22
|
function suggestions() {
|
|
23
23
|
return 'suggestions';
|
|
24
24
|
}
|
|
25
|
+
function filters() {
|
|
26
|
+
return 'filters';
|
|
27
|
+
}
|
|
25
28
|
function query() {
|
|
26
29
|
return 'query';
|
|
27
30
|
}
|
|
28
|
-
function request() {
|
|
29
|
-
return 'request';
|
|
31
|
+
function request(aspect) {
|
|
32
|
+
return aspect ? `request:${aspect}` : 'request';
|
|
30
33
|
}
|
|
31
|
-
function response() {
|
|
32
|
-
return 'response';
|
|
34
|
+
function response(aspect) {
|
|
35
|
+
return aspect ? `response:${aspect}` : 'response';
|
|
33
36
|
}
|
|
34
|
-
function data() {
|
|
35
|
-
return 'data';
|
|
37
|
+
function data(aspect) {
|
|
38
|
+
return aspect ? `data:${aspect}` : 'data';
|
|
36
39
|
}
|
|
37
40
|
function view(role) {
|
|
38
41
|
return role ? `view:${role}` : 'view';
|
|
@@ -51,7 +54,4 @@ function feedback() {
|
|
|
51
54
|
}
|
|
52
55
|
function input() {
|
|
53
56
|
return 'input';
|
|
54
|
-
}
|
|
55
|
-
function completions() {
|
|
56
|
-
return 'completions';
|
|
57
57
|
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _commons = require("@miso.ai/commons");
|
|
8
|
+
var fields = _interopRequireWildcard(require("./fields.js"));
|
|
9
|
+
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); }
|
|
10
|
+
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; }
|
|
11
|
+
function mergeState() {
|
|
12
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
13
|
+
let update = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
14
|
+
return Object.freeze((0, _commons.trimObj)(Object.assign({}, state, update, {
|
|
15
|
+
facets: Object.freeze((0, _commons.trimObj)(Object.assign({}, state.facets, update.facets)))
|
|
16
|
+
})));
|
|
17
|
+
}
|
|
18
|
+
class Filters {
|
|
19
|
+
constructor(views) {
|
|
20
|
+
let {
|
|
21
|
+
facets: facetsOptions
|
|
22
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
23
|
+
this._views = views;
|
|
24
|
+
this._hub = views._hub;
|
|
25
|
+
this._states = this._initialStates = mergeState({}); // TODO: support custom initial states
|
|
26
|
+
const error = this._error = this._error.bind(this);
|
|
27
|
+
this._events = new _commons.EventEmitter({
|
|
28
|
+
target: this,
|
|
29
|
+
error
|
|
30
|
+
});
|
|
31
|
+
(0, _commons.defineValues)(this, {
|
|
32
|
+
facets: new Facets(this, facetsOptions)
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
get states() {
|
|
36
|
+
return this._states;
|
|
37
|
+
}
|
|
38
|
+
update(updates) {
|
|
39
|
+
const oldStates = this._states;
|
|
40
|
+
const states = this._states = mergeState(Object.assign({}, this._states, updates));
|
|
41
|
+
this._events.emit('update', {
|
|
42
|
+
updates,
|
|
43
|
+
states,
|
|
44
|
+
oldStates
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
reset() {
|
|
48
|
+
const oldStates = this._states;
|
|
49
|
+
const states = this._states = this._initialStates;
|
|
50
|
+
this._events.emit('reset', {
|
|
51
|
+
states,
|
|
52
|
+
oldStates
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
apply() {
|
|
56
|
+
this._hub.update(fields.filters(), this._states);
|
|
57
|
+
this._events.emit('apply');
|
|
58
|
+
}
|
|
59
|
+
_error(error) {
|
|
60
|
+
this._views._error(error);
|
|
61
|
+
}
|
|
62
|
+
_destroy() {}
|
|
63
|
+
}
|
|
64
|
+
exports.default = Filters;
|
|
65
|
+
class Facets {
|
|
66
|
+
constructor(filters) {
|
|
67
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
68
|
+
this._filters = filters;
|
|
69
|
+
this._options = options;
|
|
70
|
+
}
|
|
71
|
+
isSelected(field, value) {
|
|
72
|
+
const state = this._filters._states.facets[field];
|
|
73
|
+
return state && state.includes(value);
|
|
74
|
+
}
|
|
75
|
+
select(field, value) {
|
|
76
|
+
if (this.isSelected(field, value)) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
this._select(field, value);
|
|
80
|
+
}
|
|
81
|
+
unselect(field, value) {
|
|
82
|
+
if (!this.isSelected(field, value)) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
this._unselect(field, value);
|
|
86
|
+
}
|
|
87
|
+
toggle(field, value) {
|
|
88
|
+
if (this.isSelected(field, value)) {
|
|
89
|
+
this._unselect(field, value);
|
|
90
|
+
} else {
|
|
91
|
+
this._select(field, value);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
_select(field, value) {
|
|
95
|
+
const values = this._options.multiple ? [...(this._filters._states.facets[field] || []), value] : [value];
|
|
96
|
+
values.sort();
|
|
97
|
+
this._filters.update({
|
|
98
|
+
facets: {
|
|
99
|
+
[field]: values
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
_unselect(field, value) {
|
|
104
|
+
let values = this._filters._states.facets[field].filter(v => v !== value);
|
|
105
|
+
if (values.length === 0) {
|
|
106
|
+
values = undefined;
|
|
107
|
+
}
|
|
108
|
+
this._filters.update({
|
|
109
|
+
facets: {
|
|
110
|
+
[field]: values
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
package/dist/cjs/actor/hub.js
CHANGED
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _commons = require("@miso.ai/commons");
|
|
8
|
+
var _processors = require("../workflow/processors.js");
|
|
8
9
|
class Hub {
|
|
9
10
|
constructor() {
|
|
10
11
|
(this._events = new _commons.EventEmitter())._injectSubscribeInterface(this);
|
|
@@ -19,7 +20,7 @@ class Hub {
|
|
|
19
20
|
let {
|
|
20
21
|
silent = false
|
|
21
22
|
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
22
|
-
this._states[name] = Object.freeze(state);
|
|
23
|
+
this._states[name] = Object.freeze((0, _processors.removeDataInstructions)(state));
|
|
23
24
|
if (!silent) {
|
|
24
25
|
this._events.emit(name, state);
|
|
25
26
|
}
|
|
@@ -41,14 +41,12 @@ class SessionMaker {
|
|
|
41
41
|
}));
|
|
42
42
|
}
|
|
43
43
|
restart() {
|
|
44
|
-
this.
|
|
45
|
-
force: true
|
|
46
|
-
});
|
|
47
|
-
this.start();
|
|
44
|
+
this._hub.update(fields.session(), this._create(true));
|
|
48
45
|
}
|
|
49
46
|
_create() {
|
|
47
|
+
let active = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
50
48
|
return Object.freeze({
|
|
51
|
-
active
|
|
49
|
+
active,
|
|
52
50
|
uuid: (0, _commons.uuidv4)(),
|
|
53
51
|
index: this._sessionIndex++,
|
|
54
52
|
meta: {}
|
package/dist/cjs/actor/view.js
CHANGED
|
@@ -28,6 +28,7 @@ class ViewActor {
|
|
|
28
28
|
target: this
|
|
29
29
|
});
|
|
30
30
|
this._views = views;
|
|
31
|
+
this._config = views._rolesConfig[role] || {};
|
|
31
32
|
(0, _commons.defineValues)(this, {
|
|
32
33
|
role,
|
|
33
34
|
interface: new View(this)
|
|
@@ -111,6 +112,9 @@ class ViewActor {
|
|
|
111
112
|
}
|
|
112
113
|
return this._tracker;
|
|
113
114
|
}
|
|
115
|
+
get filters() {
|
|
116
|
+
return this._views.filters;
|
|
117
|
+
}
|
|
114
118
|
async refresh() {
|
|
115
119
|
var _this = this;
|
|
116
120
|
let {
|
|
@@ -209,16 +213,15 @@ class ViewActor {
|
|
|
209
213
|
// used by tracker to expose tracker options to layout
|
|
210
214
|
return this._views._getTrackerOptions(this.role);
|
|
211
215
|
}
|
|
212
|
-
_sliceData(
|
|
213
|
-
|
|
216
|
+
_sliceData(data) {
|
|
217
|
+
const {
|
|
214
218
|
value,
|
|
215
|
-
error,
|
|
216
219
|
status,
|
|
217
220
|
meta
|
|
218
|
-
} =
|
|
219
|
-
rest = _objectWithoutPropertiesLoose(
|
|
221
|
+
} = data,
|
|
222
|
+
rest = _objectWithoutPropertiesLoose(data, _excluded);
|
|
220
223
|
const sliced = Object.assign({
|
|
221
|
-
value: this.
|
|
224
|
+
value: asMappingFunction(this._config.mapping || this.role)(data),
|
|
222
225
|
status,
|
|
223
226
|
data: value,
|
|
224
227
|
meta
|
|
@@ -287,4 +290,14 @@ class View {
|
|
|
287
290
|
constructor(actor) {
|
|
288
291
|
(0, _commons.delegateGetters)(this, actor, ['role', 'layout', 'element', 'proxyElement', 'refresh', 'on', 'tracker']);
|
|
289
292
|
}
|
|
293
|
+
}
|
|
294
|
+
function asMappingFunction(fn) {
|
|
295
|
+
switch (typeof fn) {
|
|
296
|
+
case 'function':
|
|
297
|
+
return fn;
|
|
298
|
+
case 'string':
|
|
299
|
+
return data => data.value && data.value[fn];
|
|
300
|
+
default:
|
|
301
|
+
throw new Error(`Invalid mapping function: ${fn}`);
|
|
302
|
+
}
|
|
290
303
|
}
|
package/dist/cjs/actor/views.js
CHANGED
|
@@ -8,6 +8,7 @@ var _commons = require("@miso.ai/commons");
|
|
|
8
8
|
var _constants = require("../constants.js");
|
|
9
9
|
var fields = _interopRequireWildcard(require("./fields.js"));
|
|
10
10
|
var _view = _interopRequireDefault(require("./view.js"));
|
|
11
|
+
var _filters = _interopRequireDefault(require("./filters.js"));
|
|
11
12
|
var _tracker = _interopRequireDefault(require("./tracker.js"));
|
|
12
13
|
var _trackers = require("../util/trackers.js");
|
|
13
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -20,6 +21,7 @@ class ViewsActor {
|
|
|
20
21
|
extensions,
|
|
21
22
|
layouts,
|
|
22
23
|
roles = [],
|
|
24
|
+
rolesConfig = {},
|
|
23
25
|
options
|
|
24
26
|
} = _ref;
|
|
25
27
|
this._hub = hub;
|
|
@@ -27,10 +29,12 @@ class ViewsActor {
|
|
|
27
29
|
this._extensions = extensions;
|
|
28
30
|
this._layoutFactory = layouts;
|
|
29
31
|
this._options = options;
|
|
32
|
+
this._rolesConfig = rolesConfig;
|
|
30
33
|
this._containers = new Map();
|
|
31
34
|
this._containerTracker = undefined;
|
|
32
35
|
this._views = {};
|
|
33
36
|
this._trackers = new Trackers(this, roles);
|
|
37
|
+
this._filters = new _filters.default(this);
|
|
34
38
|
for (const role of roles) {
|
|
35
39
|
this._views[role] = new _view.default(this, role);
|
|
36
40
|
}
|
|
@@ -39,13 +43,18 @@ class ViewsActor {
|
|
|
39
43
|
});
|
|
40
44
|
const syncSize = () => this.syncSize();
|
|
41
45
|
window.addEventListener('resize', syncSize);
|
|
42
|
-
this._unsubscribes = [() => window.removeEventListener('resize', syncSize), hub.on(fields.data(),
|
|
46
|
+
this._unsubscribes = [() => window.removeEventListener('resize', syncSize), hub.on(fields.data(), data => this.refresh({
|
|
47
|
+
data
|
|
48
|
+
})), options.on('trackers', () => this._syncTrackers()), options.on('layouts', () => this._syncLayouts())];
|
|
43
49
|
this._syncTrackers();
|
|
44
50
|
this._syncLayouts();
|
|
45
51
|
}
|
|
46
52
|
get trackers() {
|
|
47
53
|
return this._trackers;
|
|
48
54
|
}
|
|
55
|
+
get filters() {
|
|
56
|
+
return this._filters;
|
|
57
|
+
}
|
|
49
58
|
|
|
50
59
|
// elements //
|
|
51
60
|
addContainer(element) {
|
|
@@ -174,29 +183,32 @@ class ViewsActor {
|
|
|
174
183
|
}
|
|
175
184
|
async refresh() {
|
|
176
185
|
let {
|
|
177
|
-
force
|
|
186
|
+
force,
|
|
187
|
+
data
|
|
178
188
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
179
|
-
|
|
189
|
+
data = this._getData(data);
|
|
180
190
|
// container first
|
|
181
|
-
|
|
191
|
+
let views = this._getViews(true);
|
|
192
|
+
if (!force && data._inst) {
|
|
193
|
+
const {
|
|
194
|
+
includes,
|
|
195
|
+
excludes
|
|
196
|
+
} = data._inst;
|
|
197
|
+
if (includes) {
|
|
198
|
+
// always include containers
|
|
199
|
+
views = views.filter(view => view.role === _constants.ROLE.CONTAINER || includes.includes(view.role));
|
|
200
|
+
}
|
|
201
|
+
if (excludes) {
|
|
202
|
+
views = views.filter(view => !excludes.includes(view.role));
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
await Promise.all(views.map(view => view.refresh({
|
|
182
206
|
force,
|
|
183
207
|
data
|
|
184
208
|
})));
|
|
185
209
|
}
|
|
186
|
-
_getData() {
|
|
187
|
-
|
|
188
|
-
[fields.data()]: data
|
|
189
|
-
} = this._hub.states;
|
|
190
|
-
// compare to cached
|
|
191
|
-
if (!this._data || this._data.data !== data) {
|
|
192
|
-
const status = !data || !data.session || !data.session.active ? _constants.STATUS.INITIAL : data.error ? _constants.STATUS.ERRONEOUS : data.value ? _constants.STATUS.READY : _constants.STATUS.LOADING;
|
|
193
|
-
const ongoing = status === _constants.STATUS.READY ? !!data.ongoing : undefined;
|
|
194
|
-
this._data = Object.freeze(Object.assign({}, data, {
|
|
195
|
-
status,
|
|
196
|
-
ongoing
|
|
197
|
-
}));
|
|
198
|
-
}
|
|
199
|
-
return this._data;
|
|
210
|
+
_getData(data) {
|
|
211
|
+
return data || this._hub.states[fields.data()];
|
|
200
212
|
}
|
|
201
213
|
_syncTrackers() {
|
|
202
214
|
this._trackerOptions = this._options.resolved.trackers;
|
|
@@ -234,13 +246,14 @@ class ViewsActor {
|
|
|
234
246
|
unsubscribe();
|
|
235
247
|
}
|
|
236
248
|
this._unsubscribes = [];
|
|
249
|
+
this._filters._destroy();
|
|
237
250
|
}
|
|
238
251
|
}
|
|
239
252
|
exports.default = ViewsActor;
|
|
240
253
|
class Views {
|
|
241
254
|
constructor(actor) {
|
|
242
255
|
this._actor = actor;
|
|
243
|
-
(0, _commons.delegateGetters)(this, actor, ['syncSize', 'refresh', 'trackers']);
|
|
256
|
+
(0, _commons.delegateGetters)(this, actor, ['syncSize', 'refresh', 'trackers', 'filters']);
|
|
244
257
|
}
|
|
245
258
|
get(role) {
|
|
246
259
|
return this._actor.get(role).interface;
|
package/dist/cjs/constants.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.TRACKING_STATUS = exports.TRACKING_EVENT_TYPES = exports.STATUS = exports.ROLE = exports.ORGANIC_QUESTION_SOURCE = exports.LAYOUT_CATEGORY = exports.EVENT_TYPE = exports.DEFAULT_UNIT_ID = exports.ATTR_DATA_MISO_UNIT_ID = exports.ATTR_DATA_MISO_PRODUCT_ID = void 0;
|
|
6
|
+
exports.TRACKING_STATUS = exports.TRACKING_EVENT_TYPES = exports.STATUS = exports.ROLE = exports.ORGANIC_QUESTION_SOURCE = exports.LAYOUT_CATEGORY = exports.EVENT_TYPE = exports.DEFAULT_UNIT_ID = exports.DATA_ASPECT = exports.ATTR_DATA_MISO_UNIT_ID = exports.ATTR_DATA_MISO_PRODUCT_ID = void 0;
|
|
7
7
|
exports.isDataRole = isDataRole;
|
|
8
8
|
exports.validateEventType = validateEventType;
|
|
9
9
|
exports.validateTrackingStatus = validateTrackingStatus;
|
|
@@ -28,18 +28,25 @@ const ROLE = exports.ROLE = Object.freeze({
|
|
|
28
28
|
QUERY_SUGGESTIONS: 'query_suggestions',
|
|
29
29
|
RELATED_QUESTIONS: 'related_questions',
|
|
30
30
|
AFFILIATION: 'affiliation',
|
|
31
|
+
KEYWORDS: 'keywords',
|
|
32
|
+
FACETS: 'facets',
|
|
33
|
+
HITS: 'hits',
|
|
31
34
|
ERROR: 'error'
|
|
32
35
|
});
|
|
33
|
-
const DATA_ROLE_SET = new Set([ROLE.PRODUCTS, ROLE.CATEGORIES, ROLE.ATTRIBUTES, ROLE.RESULTS, ROLE.ITEMS, ROLE.QUESTION, ROLE.ANSWER, ROLE.SOURCES, ROLE.RELATED_RESOURCES, ROLE.QUERY_SUGGESTIONS, ROLE.RELATED_QUESTIONS, ROLE.AFFILIATION]);
|
|
36
|
+
const DATA_ROLE_SET = new Set([ROLE.PRODUCTS, ROLE.CATEGORIES, ROLE.ATTRIBUTES, ROLE.RESULTS, ROLE.ITEMS, ROLE.QUESTION, ROLE.ANSWER, ROLE.SOURCES, ROLE.RELATED_RESOURCES, ROLE.QUERY_SUGGESTIONS, ROLE.RELATED_QUESTIONS, ROLE.AFFILIATION, ROLE.FACETS, ROLE.HITS]);
|
|
34
37
|
function isDataRole(role) {
|
|
35
38
|
return DATA_ROLE_SET.has(role);
|
|
36
39
|
}
|
|
40
|
+
const DATA_ASPECT = exports.DATA_ASPECT = Object.freeze({
|
|
41
|
+
AUTOCOMPLETE: 'autocomplete'
|
|
42
|
+
});
|
|
37
43
|
const LAYOUT_CATEGORY = exports.LAYOUT_CATEGORY = Object.freeze({
|
|
38
44
|
CONTAINER: 'container',
|
|
39
45
|
BANNER: 'banner',
|
|
40
46
|
LIST: 'list',
|
|
41
47
|
QUERY: 'query',
|
|
42
48
|
RADIO: 'radio',
|
|
49
|
+
FILTERS: 'filters',
|
|
43
50
|
TEXT: 'text',
|
|
44
51
|
AFFILIATION: 'affiliation',
|
|
45
52
|
ERROR: 'error'
|
|
@@ -3,5 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.CLASS_PREFIX = void 0;
|
|
7
|
-
const CLASS_PREFIX = exports.CLASS_PREFIX = 'miso-ask-combo';
|
|
6
|
+
exports.CONAINER_TAG = exports.CLASS_PREFIX = void 0;
|
|
7
|
+
const CLASS_PREFIX = exports.CLASS_PREFIX = 'miso-ask-combo';
|
|
8
|
+
const CONAINER_TAG = exports.CONAINER_TAG = 'miso-ask';
|