@miso.ai/client-sdk-ui 1.11.6-beta.0 → 1.11.6-beta.1
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/data.js +5 -7
- package/dist/cjs/actor/feedback.js +1 -2
- package/dist/cjs/actor/filters.js +20 -21
- package/dist/cjs/actor/hub.js +34 -8
- package/dist/cjs/actor/index.js +1 -2
- package/dist/cjs/actor/interactions.js +5 -7
- package/dist/cjs/actor/sessions.js +1 -2
- package/dist/cjs/actor/tracker.js +9 -12
- package/dist/cjs/actor/view.js +11 -20
- package/dist/cjs/actor/views.js +16 -21
- package/dist/cjs/affiliation/index.js +1 -2
- package/dist/cjs/combo/ask/elements.js +3 -4
- package/dist/cjs/combo/ask/index.js +1 -2
- package/dist/cjs/combo/ask/options.js +2 -6
- package/dist/cjs/defaults/ask/controls.js +1 -2
- package/dist/cjs/defaults/ask/index.js +1 -2
- package/dist/cjs/defaults/ask/templates.js +3 -6
- package/dist/cjs/defaults/common/templates.js +30 -41
- package/dist/cjs/defaults/hybrid-search/answer-box.js +9 -11
- package/dist/cjs/defaults/hybrid-search/controls.js +1 -2
- package/dist/cjs/defaults/hybrid-search/index.js +1 -2
- package/dist/cjs/defaults/hybrid-search/templates.js +2 -4
- package/dist/cjs/defaults/index.js +1 -2
- package/dist/cjs/element/container/miso-explore.js +7 -7
- package/dist/cjs/element/container/miso-hybrid-search.js +3 -3
- package/dist/cjs/element/container/miso-recommendation.js +3 -38
- package/dist/cjs/element/container/miso-search.js +3 -3
- package/dist/cjs/element/container/miso-unit.js +52 -0
- package/dist/cjs/element/index.js +1 -2
- package/dist/cjs/element/role/miso-component.js +3 -4
- package/dist/cjs/element/utils.js +6 -9
- package/dist/cjs/layout/affiliation/affiliation.js +4 -6
- package/dist/cjs/layout/banner/banner.js +1 -2
- package/dist/cjs/layout/button/more-button.js +1 -2
- package/dist/cjs/layout/container/container.js +7 -12
- package/dist/cjs/layout/error/error.js +1 -2
- package/dist/cjs/layout/input/facets.js +28 -41
- package/dist/cjs/layout/input/option-list.js +1 -2
- package/dist/cjs/layout/input/search-box.js +30 -39
- package/dist/cjs/layout/input/select.js +1 -2
- package/dist/cjs/layout/list/cards.js +1 -2
- package/dist/cjs/layout/list/carousel.js +1 -2
- package/dist/cjs/layout/list/collection.js +12 -16
- package/dist/cjs/layout/list/gallery.js +18 -26
- package/dist/cjs/layout/list/list.js +1 -2
- package/dist/cjs/layout/mixin/swipeable.js +3 -4
- package/dist/cjs/layout/mixin/trackable.js +3 -6
- package/dist/cjs/layout/progressive.js +1 -2
- package/dist/cjs/layout/radio/feedback.js +6 -8
- package/dist/cjs/layout/radio/radio.js +5 -6
- package/dist/cjs/layout/raf.js +6 -10
- package/dist/cjs/layout/template.js +7 -10
- package/dist/cjs/layout/templates.js +51 -71
- package/dist/cjs/layout/text/text.js +6 -8
- package/dist/cjs/layout/text/typewriter/index.js +14 -18
- package/dist/cjs/layout/text/typewriter/plaintext.js +8 -10
- package/dist/cjs/layout/text/typewriter/utils.js +12 -15
- package/dist/cjs/plugin.js +13 -3
- package/dist/cjs/source.js +6 -7
- package/dist/cjs/util/dom.js +1 -2
- package/dist/cjs/util/proxy.js +3 -4
- package/dist/cjs/util/trackers.js +1 -3
- package/dist/cjs/util/viewables.js +1 -2
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/workflow/answer-based.js +17 -24
- package/dist/cjs/workflow/ask.js +1 -2
- package/dist/cjs/workflow/asks.js +4 -6
- package/dist/cjs/workflow/autocomplete.js +3 -4
- package/dist/cjs/workflow/base.js +56 -54
- package/dist/cjs/workflow/explore.js +18 -22
- package/dist/cjs/workflow/explores.js +18 -0
- package/dist/cjs/workflow/hybrid-search-answer.js +4 -3
- package/dist/cjs/workflow/index.js +3 -3
- package/dist/cjs/workflow/options/api.js +2 -6
- package/dist/cjs/workflow/options/auto-query.js +2 -4
- package/dist/cjs/workflow/options/configurable.js +2 -6
- package/dist/cjs/workflow/options/data-processor.js +1 -4
- package/dist/cjs/workflow/options/filters.js +1 -4
- package/dist/cjs/workflow/options/interactions.js +1 -4
- package/dist/cjs/workflow/options/layouts.js +2 -6
- package/dist/cjs/workflow/options/options.js +5 -8
- package/dist/cjs/workflow/options/pagination.js +1 -4
- package/dist/cjs/workflow/options/roles.js +1 -3
- package/dist/cjs/workflow/options/trackers.js +6 -16
- package/dist/cjs/workflow/processors.js +16 -22
- package/dist/cjs/workflow/recommendation.js +9 -52
- package/dist/cjs/workflow/recommendations.js +3 -23
- package/dist/cjs/workflow/search-based.js +12 -8
- package/dist/cjs/workflow/search.js +1 -5
- package/dist/cjs/workflow/unit.js +58 -0
- package/dist/cjs/workflow/units.js +37 -0
- package/dist/cjs/workflow/use-link.js +3 -6
- package/package.json +2 -2
- package/src/actor/filters.js +4 -2
- package/src/actor/hub.js +26 -5
- package/src/element/container/miso-explore.js +8 -8
- package/src/element/container/miso-hybrid-search.js +4 -4
- package/src/element/container/miso-recommendation.js +3 -45
- package/src/element/container/miso-search.js +4 -4
- package/src/element/container/miso-unit.js +55 -0
- package/src/layout/radio/radio.js +1 -0
- package/src/layout/templates.js +3 -2
- package/src/plugin.js +15 -2
- package/src/version.js +1 -1
- package/src/workflow/autocomplete.js +1 -0
- package/src/workflow/base.js +33 -23
- package/src/workflow/explore.js +13 -12
- package/src/workflow/explores.js +14 -0
- package/src/workflow/hybrid-search-answer.js +1 -1
- package/src/workflow/index.js +1 -1
- package/src/workflow/processors.js +2 -2
- package/src/workflow/recommendation.js +9 -47
- package/src/workflow/recommendations.js +3 -23
- package/src/workflow/search-based.js +4 -0
- package/src/workflow/unit.js +52 -0
- package/src/workflow/units.js +37 -0
|
@@ -72,8 +72,7 @@ class SelectLayout extends _template.default {
|
|
|
72
72
|
static get defaultClassName() {
|
|
73
73
|
return DEFAULT_CLASSNAME;
|
|
74
74
|
}
|
|
75
|
-
constructor() {
|
|
76
|
-
let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
75
|
+
constructor(_ref = {}) {
|
|
77
76
|
let {
|
|
78
77
|
className = DEFAULT_CLASSNAME,
|
|
79
78
|
templates
|
|
@@ -20,8 +20,7 @@ class CardsLayout extends _collection.default {
|
|
|
20
20
|
static get defaultClassName() {
|
|
21
21
|
return DEFAULT_CLASSNAME;
|
|
22
22
|
}
|
|
23
|
-
constructor() {
|
|
24
|
-
let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
23
|
+
constructor(_ref = {}) {
|
|
25
24
|
let {
|
|
26
25
|
className = DEFAULT_CLASSNAME
|
|
27
26
|
} = _ref,
|
|
@@ -70,8 +70,7 @@ class CarouselLayout extends _collection.default {
|
|
|
70
70
|
static get defaultClassName() {
|
|
71
71
|
return DEFAULT_CLASSNAME;
|
|
72
72
|
}
|
|
73
|
-
constructor() {
|
|
74
|
-
let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
73
|
+
constructor(_ref = {}) {
|
|
75
74
|
let {
|
|
76
75
|
className = DEFAULT_CLASSNAME,
|
|
77
76
|
templates
|
|
@@ -54,10 +54,9 @@ function list(layout, state, values) {
|
|
|
54
54
|
// TODO: support separator?
|
|
55
55
|
return `<${listTag} class="${className}__list" data-role="list"${itemTypeAttr}>${templates.items(layout, state, values)}</${listTag}>`;
|
|
56
56
|
}
|
|
57
|
-
function items(layout, state, values
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
} = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
57
|
+
function items(layout, state, values, {
|
|
58
|
+
offset = 0
|
|
59
|
+
} = {}) {
|
|
61
60
|
const {
|
|
62
61
|
templates
|
|
63
62
|
} = layout;
|
|
@@ -139,11 +138,10 @@ class CollectionLayout extends _template.default {
|
|
|
139
138
|
initialize(view) {
|
|
140
139
|
this._unsubscribes.push(view.proxyElement.on('click', this._onClick.bind(this)));
|
|
141
140
|
}
|
|
142
|
-
_preprocess(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
} = _ref2;
|
|
141
|
+
_preprocess({
|
|
142
|
+
state,
|
|
143
|
+
rendered
|
|
144
|
+
}) {
|
|
147
145
|
const incremental = this._shallRenderIncrementally(state, rendered);
|
|
148
146
|
const html = this._html(state, rendered, incremental);
|
|
149
147
|
return Object.assign({}, state, {
|
|
@@ -166,13 +164,11 @@ class CollectionLayout extends _template.default {
|
|
|
166
164
|
return this.templates.root(this, state);
|
|
167
165
|
}
|
|
168
166
|
}
|
|
169
|
-
_render(element,
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
notifyUpdate
|
|
175
|
-
} = _ref4;
|
|
167
|
+
_render(element, {
|
|
168
|
+
state
|
|
169
|
+
}, {
|
|
170
|
+
notifyUpdate
|
|
171
|
+
}) {
|
|
176
172
|
const {
|
|
177
173
|
incremental,
|
|
178
174
|
html
|
|
@@ -55,8 +55,7 @@ class GalleryLayout extends _collection.default {
|
|
|
55
55
|
static get defaultClassName() {
|
|
56
56
|
return DEFAULT_CLASSNAME;
|
|
57
57
|
}
|
|
58
|
-
constructor() {
|
|
59
|
-
let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
58
|
+
constructor(_ref = {}) {
|
|
60
59
|
let {
|
|
61
60
|
className = DEFAULT_CLASSNAME,
|
|
62
61
|
templates
|
|
@@ -83,11 +82,10 @@ class GalleryLayout extends _collection.default {
|
|
|
83
82
|
this._syncListAspectRatio(listElement);
|
|
84
83
|
this._syncItemSizes(listElement);
|
|
85
84
|
}
|
|
86
|
-
_preprocess(
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
} = _ref2;
|
|
85
|
+
_preprocess({
|
|
86
|
+
state,
|
|
87
|
+
rendered
|
|
88
|
+
}) {
|
|
91
89
|
const incremental = this._shallRenderIncrementally(state, rendered);
|
|
92
90
|
const bodyHtml = incremental ? undefined : this._bodyHtml(state);
|
|
93
91
|
const itemsHtml = this._itemsHtml(state, rendered);
|
|
@@ -119,10 +117,9 @@ class GalleryLayout extends _collection.default {
|
|
|
119
117
|
this._syncListAspectRatio(listElement);
|
|
120
118
|
this._renderItems(listElement, states, controls);
|
|
121
119
|
}
|
|
122
|
-
_renderListElement(element,
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
} = _ref3;
|
|
120
|
+
_renderListElement(element, {
|
|
121
|
+
state
|
|
122
|
+
}) {
|
|
126
123
|
const {
|
|
127
124
|
incremental,
|
|
128
125
|
bodyHtml
|
|
@@ -139,20 +136,18 @@ class GalleryLayout extends _collection.default {
|
|
|
139
136
|
this._updateItems(listElement, states);
|
|
140
137
|
}
|
|
141
138
|
}
|
|
142
|
-
_updateItems(listElement,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
} = _ref4;
|
|
139
|
+
_updateItems(listElement, {
|
|
140
|
+
state
|
|
141
|
+
}) {
|
|
146
142
|
const {
|
|
147
143
|
itemSizes
|
|
148
144
|
} = this._galleryContext;
|
|
149
145
|
const values = this._writeItemSizes(this._getItems(state) || [], itemSizes);
|
|
150
146
|
listElement.innerHTML = this.templates.items(this, state, values);
|
|
151
147
|
}
|
|
152
|
-
_appendItems(listElement,
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
} = _ref5;
|
|
148
|
+
_appendItems(listElement, {
|
|
149
|
+
state
|
|
150
|
+
}) {
|
|
156
151
|
const {
|
|
157
152
|
itemSizes
|
|
158
153
|
} = this._galleryContext;
|
|
@@ -165,9 +160,7 @@ class GalleryLayout extends _collection.default {
|
|
|
165
160
|
offset
|
|
166
161
|
}));
|
|
167
162
|
}
|
|
168
|
-
_writeItemSizes(values) {
|
|
169
|
-
let [large = 0, medium = 0] = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
170
|
-
let offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
163
|
+
_writeItemSizes(values, [large = 0, medium = 0] = [], offset = 0) {
|
|
171
164
|
let omitted = 0;
|
|
172
165
|
if (offset > 0) {
|
|
173
166
|
omitted = Math.min(offset, large);
|
|
@@ -234,10 +227,9 @@ class GalleryLayout extends _collection.default {
|
|
|
234
227
|
listElement.style.aspectRatio = `${columnCount} / 2`;
|
|
235
228
|
listElement.style.height = itemCount > 0 ? 'auto' : '0';
|
|
236
229
|
}
|
|
237
|
-
_syncItemCount(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
230
|
+
_syncItemCount({
|
|
231
|
+
state
|
|
232
|
+
} = {}) {
|
|
241
233
|
const items = this._getItems(state);
|
|
242
234
|
this._galleryContext.itemCount = items ? items.length : undefined;
|
|
243
235
|
}
|
|
@@ -20,8 +20,7 @@ class ListLayout extends _collection.default {
|
|
|
20
20
|
static get defaultClassName() {
|
|
21
21
|
return DEFAULT_CLASSNAME;
|
|
22
22
|
}
|
|
23
|
-
constructor() {
|
|
24
|
-
let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
23
|
+
constructor(_ref = {}) {
|
|
25
24
|
let {
|
|
26
25
|
className = DEFAULT_CLASSNAME
|
|
27
26
|
} = _ref,
|
|
@@ -59,10 +59,9 @@ class SwipeableMixin {
|
|
|
59
59
|
_afterRenderSwipeable() {
|
|
60
60
|
this._emitSwipeableDisplayEvent();
|
|
61
61
|
}
|
|
62
|
-
_syncSwipeableItemCount(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
62
|
+
_syncSwipeableItemCount({
|
|
63
|
+
state
|
|
64
|
+
} = {}) {
|
|
66
65
|
const context = this._swipeableContext;
|
|
67
66
|
const items = this._getItems(state);
|
|
68
67
|
const oldItemCount = context.itemCount;
|
|
@@ -60,12 +60,9 @@ class TrackableMixin {
|
|
|
60
60
|
if (!options) {
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
|
-
this._view.tracker.impression(entries.map(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
} = _ref;
|
|
67
|
-
return value;
|
|
68
|
-
}));
|
|
63
|
+
this._view.tracker.impression(entries.map(({
|
|
64
|
+
value
|
|
65
|
+
}) => value));
|
|
69
66
|
}
|
|
70
67
|
_untrackViewables(entries) {
|
|
71
68
|
for (const {
|
|
@@ -14,8 +14,7 @@ class ProgressiveLayout extends _raf.default {
|
|
|
14
14
|
_takePending() {
|
|
15
15
|
return this._pending;
|
|
16
16
|
}
|
|
17
|
-
_applyRender(timestamp) {
|
|
18
|
-
let extraControls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
17
|
+
_applyRender(timestamp, extraControls = {}) {
|
|
19
18
|
const loop = (0, _commons.capture)(false);
|
|
20
19
|
super._applyRender(timestamp, Object.assign({}, extraControls, {
|
|
21
20
|
loop: loop.t
|
|
@@ -21,10 +21,9 @@ function options(layout) {
|
|
|
21
21
|
value
|
|
22
22
|
})).join('');
|
|
23
23
|
}
|
|
24
|
-
function content(layout,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
} = _ref;
|
|
24
|
+
function content(layout, {
|
|
25
|
+
value
|
|
26
|
+
}) {
|
|
28
27
|
const {
|
|
29
28
|
className,
|
|
30
29
|
templates,
|
|
@@ -70,13 +69,12 @@ class FeedbackLayout extends _radio.default {
|
|
|
70
69
|
static get defaultClassName() {
|
|
71
70
|
return DEFAULT_CLASSNAME;
|
|
72
71
|
}
|
|
73
|
-
constructor() {
|
|
74
|
-
let _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
72
|
+
constructor(_ref = {}) {
|
|
75
73
|
let {
|
|
76
74
|
className = DEFAULT_CLASSNAME,
|
|
77
75
|
templates
|
|
78
|
-
} =
|
|
79
|
-
options = _objectWithoutPropertiesLoose(
|
|
76
|
+
} = _ref,
|
|
77
|
+
options = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
80
78
|
super(Object.assign({
|
|
81
79
|
className,
|
|
82
80
|
templates: Object.assign({}, DEFAULT_TEMPLATES, templates),
|
|
@@ -42,8 +42,7 @@ class RadioLayout extends _template.default {
|
|
|
42
42
|
static get defaultTemplates() {
|
|
43
43
|
return DEFAULT_TEMPLATES;
|
|
44
44
|
}
|
|
45
|
-
constructor() {
|
|
46
|
-
let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
45
|
+
constructor(_ref = {}) {
|
|
47
46
|
let {
|
|
48
47
|
className,
|
|
49
48
|
templates,
|
|
@@ -63,6 +62,7 @@ class RadioLayout extends _template.default {
|
|
|
63
62
|
proxyElement
|
|
64
63
|
} = view;
|
|
65
64
|
this._unsubscribes = [...this._unsubscribes, view.hub.on(this._field, () => this._refresh()), proxyElement.on('click', e => this._handleClick(e))];
|
|
65
|
+
// TODO: it shall not carry the responsibility of setting default value
|
|
66
66
|
this._defaultValue ? this._select(this._defaultValue, {
|
|
67
67
|
silent: true
|
|
68
68
|
}) : this._clear({
|
|
@@ -75,10 +75,9 @@ class RadioLayout extends _template.default {
|
|
|
75
75
|
}
|
|
76
76
|
return super._preprocess(states, controls);
|
|
77
77
|
}
|
|
78
|
-
_handleClick(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
} = _ref2;
|
|
78
|
+
_handleClick({
|
|
79
|
+
target
|
|
80
|
+
}) {
|
|
82
81
|
const element = (0, _commons.findInAncestors)(target, element => element.hasAttribute('data-value') ? element : undefined);
|
|
83
82
|
if (!element) {
|
|
84
83
|
return;
|
package/dist/cjs/layout/raf.js
CHANGED
|
@@ -8,8 +8,7 @@ var _commons = require("@miso.ai/commons");
|
|
|
8
8
|
const _excluded = ["role", "workflow"];
|
|
9
9
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
10
10
|
class RafLayout {
|
|
11
|
-
constructor() {
|
|
12
|
-
let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
11
|
+
constructor(_ref = {}) {
|
|
13
12
|
let {
|
|
14
13
|
role,
|
|
15
14
|
workflow
|
|
@@ -26,8 +25,7 @@ class RafLayout {
|
|
|
26
25
|
this._notifyUpdate = undefined;
|
|
27
26
|
this._pending = undefined;
|
|
28
27
|
}
|
|
29
|
-
async render(element, state) {
|
|
30
|
-
let controls = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
28
|
+
async render(element, state, controls = {}) {
|
|
31
29
|
this._syncElement(element);
|
|
32
30
|
const rendered = this._rendered.get(element);
|
|
33
31
|
const skip = (0, _commons.capture)(false);
|
|
@@ -57,10 +55,9 @@ class RafLayout {
|
|
|
57
55
|
}
|
|
58
56
|
this._element = element;
|
|
59
57
|
}
|
|
60
|
-
_preprocess(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
} = _ref2;
|
|
58
|
+
_preprocess({
|
|
59
|
+
state
|
|
60
|
+
}) {
|
|
64
61
|
return state;
|
|
65
62
|
}
|
|
66
63
|
_updatePending(state, controls) {
|
|
@@ -88,8 +85,7 @@ class RafLayout {
|
|
|
88
85
|
this._requested = false;
|
|
89
86
|
this._applyRender(timestamp);
|
|
90
87
|
}
|
|
91
|
-
_applyRender(timestamp) {
|
|
92
|
-
let extraControls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
88
|
+
_applyRender(timestamp, extraControls = {}) {
|
|
93
89
|
if (!this._pending) {
|
|
94
90
|
return; // just in case
|
|
95
91
|
}
|
|
@@ -11,8 +11,7 @@ const _excluded = ["className", "templates"];
|
|
|
11
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
12
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
13
13
|
class TemplateBasedLayout extends _raf.default {
|
|
14
|
-
constructor() {
|
|
15
|
-
let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
14
|
+
constructor(_ref = {}) {
|
|
16
15
|
let {
|
|
17
16
|
className,
|
|
18
17
|
templates
|
|
@@ -26,19 +25,17 @@ class TemplateBasedLayout extends _raf.default {
|
|
|
26
25
|
})
|
|
27
26
|
});
|
|
28
27
|
}
|
|
29
|
-
_preprocess(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
} = _ref2;
|
|
28
|
+
_preprocess({
|
|
29
|
+
state
|
|
30
|
+
}) {
|
|
33
31
|
const html = this.templates.root(this, state);
|
|
34
32
|
return Object.assign({}, state, {
|
|
35
33
|
html
|
|
36
34
|
});
|
|
37
35
|
}
|
|
38
|
-
_render(element,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
} = _ref3;
|
|
36
|
+
_render(element, {
|
|
37
|
+
state
|
|
38
|
+
}) {
|
|
42
39
|
element.innerHTML = state.html;
|
|
43
40
|
}
|
|
44
41
|
}
|
|
@@ -29,10 +29,7 @@ var _commons = require("@miso.ai/commons");
|
|
|
29
29
|
var _constants = require("../constants.js");
|
|
30
30
|
const _excluded = ["classSuffix", "role"];
|
|
31
31
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
32
|
-
function requiresImplementation() {
|
|
33
|
-
for (var _len = arguments.length, names = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
34
|
-
names[_key] = arguments[_key];
|
|
35
|
-
}
|
|
32
|
+
function requiresImplementation(...names) {
|
|
36
33
|
return names.reduce((acc, name) => {
|
|
37
34
|
acc[name] = unimplemented(name);
|
|
38
35
|
return acc;
|
|
@@ -107,49 +104,43 @@ function imageInfoBlock(layout, data, meta) {
|
|
|
107
104
|
} = layout;
|
|
108
105
|
return `<div class="${className}__item-info-container">${[(templates.titleBlock || titleBlock)(layout, data, meta)].join('')}</div>`;
|
|
109
106
|
}
|
|
110
|
-
function titleBlock(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return
|
|
107
|
+
function titleBlock({
|
|
108
|
+
className
|
|
109
|
+
}, {
|
|
110
|
+
title,
|
|
111
|
+
_title_with_markups
|
|
112
|
+
}) {
|
|
113
|
+
const text = _title_with_markups || (0, _commons.escapeHtml)(title);
|
|
114
|
+
return text ? `<div class="${className}__item-title">${text}</div>` : '';
|
|
118
115
|
}
|
|
119
|
-
function brandBlock(
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
brand_logo
|
|
126
|
-
} = _ref4;
|
|
116
|
+
function brandBlock({
|
|
117
|
+
className
|
|
118
|
+
}, {
|
|
119
|
+
brand,
|
|
120
|
+
brand_logo
|
|
121
|
+
}) {
|
|
127
122
|
if (!brand && !brand_logo) {
|
|
128
123
|
return '';
|
|
129
124
|
}
|
|
130
125
|
const content = brand_logo ? `<img class="${className}__item-brand-logo" src="${brand_logo}"${brand ? ` alt="${brand}"` : ''}>` : `<div class="${className}__item-brand">${brand}</div>`;
|
|
131
126
|
return `<div class="${className}__item-brand-container">${content}</div>`;
|
|
132
127
|
}
|
|
133
|
-
function descriptionBlock(
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
description
|
|
140
|
-
} = _ref6;
|
|
128
|
+
function descriptionBlock({
|
|
129
|
+
className
|
|
130
|
+
}, {
|
|
131
|
+
snippet,
|
|
132
|
+
description
|
|
133
|
+
}) {
|
|
141
134
|
return snippet ? `<div class="${className}__item-snippet">${snippet}</div>` : description ? `<div class="${className}__item-desc">${(0, _commons.escapeHtml)(description)}</div>` : '';
|
|
142
135
|
}
|
|
143
|
-
function dateBlock(
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
published_at
|
|
152
|
-
} = _ref8;
|
|
136
|
+
function dateBlock({
|
|
137
|
+
className,
|
|
138
|
+
templates
|
|
139
|
+
}, {
|
|
140
|
+
created_at,
|
|
141
|
+
updated_at,
|
|
142
|
+
published_at
|
|
143
|
+
}) {
|
|
153
144
|
const date = published_at || created_at || updated_at;
|
|
154
145
|
return date ? `<div class="${className}__item-date">${formatDate(date, templates.date)}</div>` : '';
|
|
155
146
|
}
|
|
@@ -185,14 +176,12 @@ function priceBlock(layout, data) {
|
|
|
185
176
|
}
|
|
186
177
|
return `<div class="${className}__item-price-container">${content}</div>`;
|
|
187
178
|
}
|
|
188
|
-
function discountRateText(layout,
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
} = _ref9;
|
|
179
|
+
function discountRateText(layout, {
|
|
180
|
+
discount_rate_percent
|
|
181
|
+
}) {
|
|
192
182
|
return `(${discount_rate_percent}% off)`;
|
|
193
183
|
}
|
|
194
|
-
function imageBlock(layout, data) {
|
|
195
|
-
let meta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
184
|
+
function imageBlock(layout, data, meta = {}) {
|
|
196
185
|
const {
|
|
197
186
|
className,
|
|
198
187
|
templates
|
|
@@ -210,13 +199,11 @@ function imageBlock(layout, data) {
|
|
|
210
199
|
const brand = subtype === 'cover-image' && meta.brand ? (templates.brandBlock || brandBlock)(layout, data, meta) : '';
|
|
211
200
|
return `<div class="${className}__item-${subtype}-container">${img}${brand}</div>`;
|
|
212
201
|
}
|
|
213
|
-
function indexBlock(
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
index
|
|
219
|
-
} = _ref11;
|
|
202
|
+
function indexBlock({
|
|
203
|
+
className
|
|
204
|
+
}, data, {
|
|
205
|
+
index
|
|
206
|
+
}) {
|
|
220
207
|
return `<div class="${className}__item-index-container"><span class="${className}__item-index miso-citation-index" data-index="${index + 1}"></span></div>`;
|
|
221
208
|
}
|
|
222
209
|
function ctaBlock(layout, data, meta) {
|
|
@@ -248,29 +235,25 @@ function cta(layout, data, meta) {
|
|
|
248
235
|
}
|
|
249
236
|
|
|
250
237
|
// helpers //
|
|
251
|
-
function tagPair(
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
url
|
|
259
|
-
} = _ref14;
|
|
260
|
-
let _ref12 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
238
|
+
function tagPair({
|
|
239
|
+
className,
|
|
240
|
+
options = {}
|
|
241
|
+
}, {
|
|
242
|
+
product_id,
|
|
243
|
+
url
|
|
244
|
+
}, _ref = {}) {
|
|
261
245
|
let {
|
|
262
246
|
classSuffix = 'item-body',
|
|
263
247
|
role = 'item'
|
|
264
|
-
} =
|
|
265
|
-
meta = _objectWithoutPropertiesLoose(
|
|
248
|
+
} = _ref,
|
|
249
|
+
meta = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
266
250
|
const tag = meta.link !== false && url ? 'a' : 'div';
|
|
267
251
|
const urlAttrs = meta.link !== false && url ? `href="${url}" ${linkAttrs(options.link)}` : '';
|
|
268
252
|
const productAttrs = product_id ? `${_constants.ATTR_DATA_MISO_PRODUCT_ID}="${product_id}"` : '';
|
|
269
253
|
const roleAttrs = role ? `data-role="${role}"` : '';
|
|
270
254
|
return [`<${tag} class="${className}__${classSuffix}" ${roleAttrs} ${productAttrs} ${urlAttrs}>`, `</${tag}>`];
|
|
271
255
|
}
|
|
272
|
-
function linkAttrs() {
|
|
273
|
-
let link = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
256
|
+
function linkAttrs(link = {}) {
|
|
274
257
|
const {
|
|
275
258
|
target = '_blank',
|
|
276
259
|
rel = 'noopener',
|
|
@@ -294,8 +277,7 @@ const DEFAULT_DATE_OPTIONS = Object.freeze({
|
|
|
294
277
|
day: 'numeric'
|
|
295
278
|
});
|
|
296
279
|
const DEFAULT_NUMBER_OPTIONS = 'en-US';
|
|
297
|
-
function formatDate(date) {
|
|
298
|
-
let fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_DATE_OPTIONS;
|
|
280
|
+
function formatDate(date, fn = DEFAULT_DATE_OPTIONS) {
|
|
299
281
|
switch (typeof fn) {
|
|
300
282
|
case 'function':
|
|
301
283
|
return fn(date);
|
|
@@ -307,8 +289,7 @@ function formatDate(date) {
|
|
|
307
289
|
throw new Error(`Invalid date format: ${fn}`);
|
|
308
290
|
}
|
|
309
291
|
}
|
|
310
|
-
function formatNumber(number) {
|
|
311
|
-
let fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_NUMBER_OPTIONS;
|
|
292
|
+
function formatNumber(number, fn = DEFAULT_NUMBER_OPTIONS) {
|
|
312
293
|
switch (typeof fn) {
|
|
313
294
|
case 'function':
|
|
314
295
|
return fn(number);
|
|
@@ -320,8 +301,7 @@ function formatNumber(number) {
|
|
|
320
301
|
throw new Error(`Invalid number format: ${fn}`);
|
|
321
302
|
}
|
|
322
303
|
}
|
|
323
|
-
function asFunction() {
|
|
324
|
-
let template = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
304
|
+
function asFunction(template = '') {
|
|
325
305
|
return typeof template === 'function' ? template : () => template;
|
|
326
306
|
}
|
|
327
307
|
const helpers = exports.helpers = Object.freeze({
|
|
@@ -11,10 +11,9 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
11
11
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
12
12
|
const TYPE = 'text';
|
|
13
13
|
const DEFAULT_CLASSNAME = 'miso-text';
|
|
14
|
-
function root(layout,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} = _ref;
|
|
14
|
+
function root(layout, {
|
|
15
|
+
value
|
|
16
|
+
}) {
|
|
18
17
|
const {
|
|
19
18
|
className,
|
|
20
19
|
role,
|
|
@@ -68,14 +67,13 @@ class TextLayout extends _template.default {
|
|
|
68
67
|
static get defaultClassName() {
|
|
69
68
|
return DEFAULT_CLASSNAME;
|
|
70
69
|
}
|
|
71
|
-
constructor() {
|
|
72
|
-
let _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
70
|
+
constructor(_ref = {}) {
|
|
73
71
|
let {
|
|
74
72
|
className = DEFAULT_CLASSNAME,
|
|
75
73
|
templates,
|
|
76
74
|
tag = 'p'
|
|
77
|
-
} =
|
|
78
|
-
options = _objectWithoutPropertiesLoose(
|
|
75
|
+
} = _ref,
|
|
76
|
+
options = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
79
77
|
super(Object.assign({
|
|
80
78
|
className,
|
|
81
79
|
templates: Object.assign({}, DEFAULT_TEMPLATES, templates),
|
|
@@ -21,8 +21,7 @@ class TypewriterLayout extends _progressive.default {
|
|
|
21
21
|
static get defaultClassName() {
|
|
22
22
|
return DEFAULT_CLASSNAME;
|
|
23
23
|
}
|
|
24
|
-
constructor() {
|
|
25
|
-
let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
24
|
+
constructor(_ref = {}) {
|
|
26
25
|
let {
|
|
27
26
|
className = DEFAULT_CLASSNAME,
|
|
28
27
|
tag = 'auto',
|
|
@@ -111,14 +110,13 @@ class TypewriterLayout extends _progressive.default {
|
|
|
111
110
|
}
|
|
112
111
|
|
|
113
112
|
// render //
|
|
114
|
-
async render() {
|
|
113
|
+
async render(...args) {
|
|
115
114
|
await this._ready();
|
|
116
|
-
await super.render(...
|
|
115
|
+
await super.render(...args);
|
|
117
116
|
}
|
|
118
|
-
_preprocess(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
} = _ref2;
|
|
117
|
+
_preprocess({
|
|
118
|
+
state
|
|
119
|
+
}) {
|
|
122
120
|
const prev = this._prevState;
|
|
123
121
|
const {
|
|
124
122
|
value = '',
|
|
@@ -143,16 +141,14 @@ class TypewriterLayout extends _progressive.default {
|
|
|
143
141
|
done
|
|
144
142
|
}));
|
|
145
143
|
}
|
|
146
|
-
_render(element,
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
loop
|
|
155
|
-
} = _ref4;
|
|
144
|
+
_render(element, {
|
|
145
|
+
state,
|
|
146
|
+
rendered
|
|
147
|
+
}, {
|
|
148
|
+
notifyUpdate,
|
|
149
|
+
writeToState,
|
|
150
|
+
loop
|
|
151
|
+
}) {
|
|
156
152
|
const container = (0, _utils.containerElement)(this, element, state);
|
|
157
153
|
// TODO: distinguish between first render and element replacement
|
|
158
154
|
let result;
|