@miso.ai/client-sdk-ui 1.13.2-beta.1 → 1.14.0-beta.3

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.
Files changed (226) hide show
  1. package/dist/cjs/asset/svgs.js +17 -4
  2. package/dist/cjs/combo/ask/index.js +2 -2
  3. package/dist/cjs/constants.js +120 -98
  4. package/dist/cjs/defaults/ask/controls.js +1 -1
  5. package/dist/cjs/defaults/hybrid-search/answer-box.js +4 -4
  6. package/dist/cjs/defaults.js +259 -0
  7. package/dist/cjs/element/container/index.js +28 -0
  8. package/dist/cjs/element/container/miso-ask.js +3 -3
  9. package/dist/cjs/element/container/miso-conversation.js +21 -0
  10. package/dist/cjs/element/container/miso-explore.js +1 -1
  11. package/dist/cjs/element/container/miso-history.js +21 -0
  12. package/dist/cjs/element/container/miso-hybrid-search.js +1 -1
  13. package/dist/cjs/element/container/miso-message-item.js +91 -0
  14. package/dist/cjs/element/container/miso-recommendation.js +1 -1
  15. package/dist/cjs/element/container/miso-search.js +1 -1
  16. package/dist/cjs/element/container/miso-thread-item.js +91 -0
  17. package/dist/cjs/element/context/miso-follow-ups.js +1 -1
  18. package/dist/cjs/element/role/index.js +49 -0
  19. package/dist/cjs/element/role/miso-delete.js +20 -0
  20. package/dist/cjs/element/role/miso-messages.js +20 -0
  21. package/dist/cjs/element/role/miso-new-thread.js +20 -0
  22. package/dist/cjs/element/role/miso-rename.js +20 -0
  23. package/dist/cjs/element/role/miso-subscription.js +20 -0
  24. package/dist/cjs/element/role/miso-threads.js +20 -0
  25. package/dist/cjs/element/role/miso-title.js +20 -0
  26. package/dist/cjs/layout/affiliation/affiliation.js +1 -1
  27. package/dist/cjs/layout/banner/banner.js +2 -1
  28. package/dist/cjs/layout/button/button.js +170 -0
  29. package/dist/cjs/layout/button/checkbox.js +116 -0
  30. package/dist/cjs/layout/button/more-button.js +3 -3
  31. package/dist/cjs/layout/container/container.js +1 -1
  32. package/dist/cjs/layout/container/item-container.js +99 -0
  33. package/dist/cjs/layout/error/error.js +2 -1
  34. package/dist/cjs/layout/index.js +42 -0
  35. package/dist/cjs/layout/input/facets.js +4 -3
  36. package/dist/cjs/layout/input/option-list.js +3 -2
  37. package/dist/cjs/layout/input/search-box.js +50 -12
  38. package/dist/cjs/layout/input/select.js +2 -1
  39. package/dist/cjs/layout/list/cards.js +2 -1
  40. package/dist/cjs/layout/list/carousel.js +2 -1
  41. package/dist/cjs/layout/list/collection.js +13 -1
  42. package/dist/cjs/layout/list/gallery.js +2 -1
  43. package/dist/cjs/layout/list/horizontal.js +2 -1
  44. package/dist/cjs/layout/list/list.js +2 -1
  45. package/dist/cjs/layout/list/messages.js +359 -0
  46. package/dist/cjs/layout/list/threads.js +199 -0
  47. package/dist/cjs/layout/mixin/trackable.js +4 -5
  48. package/dist/cjs/layout/mixin/triggerable.js +2 -2
  49. package/dist/cjs/layout/radio/feedback.js +4 -3
  50. package/dist/cjs/layout/templates.js +97 -0
  51. package/dist/cjs/layout/text/question.js +71 -0
  52. package/dist/cjs/layout/text/text.js +2 -1
  53. package/dist/cjs/layout/text/typewriter/index.js +18 -23
  54. package/dist/cjs/plugin.js +43 -104
  55. package/dist/cjs/util/confirm.js +33 -0
  56. package/dist/cjs/util/dom.js +21 -0
  57. package/dist/cjs/util/modal.js +48 -0
  58. package/dist/cjs/util/prompt.js +47 -0
  59. package/dist/cjs/version.js +1 -1
  60. package/package.json +5 -4
  61. package/src/CLAUDE.md +51 -104
  62. package/src/asset/svgs.js +16 -3
  63. package/src/combo/ask/index.js +2 -2
  64. package/src/constants.js +39 -147
  65. package/src/defaults/ask/controls.js +1 -1
  66. package/src/defaults/hybrid-search/answer-box.js +2 -2
  67. package/src/defaults.js +174 -0
  68. package/src/element/container/index.js +4 -0
  69. package/src/element/container/miso-ask.js +3 -3
  70. package/src/element/container/miso-conversation.js +19 -0
  71. package/src/element/container/miso-explore.js +1 -1
  72. package/src/element/container/miso-history.js +19 -0
  73. package/src/element/container/miso-hybrid-search.js +1 -1
  74. package/src/element/container/miso-message-item.js +94 -0
  75. package/src/element/container/miso-recommendation.js +1 -1
  76. package/src/element/container/miso-search.js +1 -1
  77. package/src/element/container/miso-thread-item.js +94 -0
  78. package/src/element/context/miso-follow-ups.js +1 -1
  79. package/src/element/role/index.js +7 -0
  80. package/src/element/role/miso-delete.js +16 -0
  81. package/src/element/role/miso-messages.js +16 -0
  82. package/src/element/role/miso-new-thread.js +16 -0
  83. package/src/element/role/miso-rename.js +16 -0
  84. package/src/element/role/miso-subscription.js +16 -0
  85. package/src/element/role/miso-threads.js +16 -0
  86. package/src/element/role/miso-title.js +16 -0
  87. package/src/layout/affiliation/affiliation.js +2 -2
  88. package/src/layout/banner/banner.js +2 -1
  89. package/src/layout/button/button.js +152 -0
  90. package/src/layout/button/checkbox.js +92 -0
  91. package/src/layout/button/more-button.js +3 -3
  92. package/src/layout/container/container.js +2 -2
  93. package/src/layout/container/item-container.js +99 -0
  94. package/src/layout/error/error.js +2 -1
  95. package/src/layout/index.js +6 -0
  96. package/src/layout/input/facets.js +3 -2
  97. package/src/layout/input/option-list.js +3 -2
  98. package/src/layout/input/search-box.js +45 -8
  99. package/src/layout/input/select.js +2 -1
  100. package/src/layout/list/cards.js +2 -1
  101. package/src/layout/list/carousel.js +2 -1
  102. package/src/layout/list/collection.js +15 -2
  103. package/src/layout/list/gallery.js +2 -1
  104. package/src/layout/list/horizontal.js +2 -1
  105. package/src/layout/list/list.js +2 -1
  106. package/src/layout/list/messages.js +316 -0
  107. package/src/layout/list/threads.js +166 -0
  108. package/src/layout/mixin/trackable.js +2 -3
  109. package/src/layout/mixin/triggerable.js +1 -1
  110. package/src/layout/radio/feedback.js +3 -2
  111. package/src/layout/templates.js +97 -0
  112. package/src/layout/text/question.js +58 -0
  113. package/src/layout/text/text.js +2 -1
  114. package/src/layout/text/typewriter/index.js +15 -18
  115. package/src/plugin.js +31 -117
  116. package/src/util/confirm.js +28 -0
  117. package/src/util/dom.js +16 -0
  118. package/src/util/modal.js +49 -0
  119. package/src/util/prompt.js +42 -0
  120. package/src/version.js +1 -1
  121. package/dist/cjs/actor/data.js +0 -132
  122. package/dist/cjs/actor/feedback.js +0 -29
  123. package/dist/cjs/actor/fields.js +0 -57
  124. package/dist/cjs/actor/filters.js +0 -161
  125. package/dist/cjs/actor/hub.js +0 -57
  126. package/dist/cjs/actor/index.js +0 -73
  127. package/dist/cjs/actor/interactions.js +0 -36
  128. package/dist/cjs/actor/sessions.js +0 -25
  129. package/dist/cjs/actor/tracker-states.js +0 -61
  130. package/dist/cjs/actor/tracker.js +0 -109
  131. package/dist/cjs/actor/trackers.js +0 -52
  132. package/dist/cjs/actor/utils.js +0 -15
  133. package/dist/cjs/actor/view.js +0 -294
  134. package/dist/cjs/actor/views.js +0 -209
  135. package/dist/cjs/source.js +0 -27
  136. package/dist/cjs/util/proxy.js +0 -88
  137. package/dist/cjs/util/trackers.js +0 -88
  138. package/dist/cjs/workflow/affiliations.js +0 -140
  139. package/dist/cjs/workflow/answer-based.js +0 -337
  140. package/dist/cjs/workflow/ask.js +0 -319
  141. package/dist/cjs/workflow/asks.js +0 -150
  142. package/dist/cjs/workflow/autocompletable.js +0 -63
  143. package/dist/cjs/workflow/autocomplete.js +0 -120
  144. package/dist/cjs/workflow/base.js +0 -418
  145. package/dist/cjs/workflow/context.js +0 -19
  146. package/dist/cjs/workflow/explore.js +0 -210
  147. package/dist/cjs/workflow/explores.js +0 -21
  148. package/dist/cjs/workflow/hybrid-search-answer.js +0 -88
  149. package/dist/cjs/workflow/hybrid-search-views.js +0 -109
  150. package/dist/cjs/workflow/hybrid-search.js +0 -213
  151. package/dist/cjs/workflow/index.js +0 -41
  152. package/dist/cjs/workflow/options/api.js +0 -41
  153. package/dist/cjs/workflow/options/auto-query.js +0 -97
  154. package/dist/cjs/workflow/options/configurable.js +0 -45
  155. package/dist/cjs/workflow/options/data-processor.js +0 -20
  156. package/dist/cjs/workflow/options/filters.js +0 -15
  157. package/dist/cjs/workflow/options/index.js +0 -126
  158. package/dist/cjs/workflow/options/interactions.js +0 -41
  159. package/dist/cjs/workflow/options/layouts.js +0 -79
  160. package/dist/cjs/workflow/options/options.js +0 -156
  161. package/dist/cjs/workflow/options/pagination.js +0 -25
  162. package/dist/cjs/workflow/options/roles.js +0 -15
  163. package/dist/cjs/workflow/options/templates.js +0 -30
  164. package/dist/cjs/workflow/options/trackers.js +0 -83
  165. package/dist/cjs/workflow/options/utils.js +0 -33
  166. package/dist/cjs/workflow/processors.js +0 -607
  167. package/dist/cjs/workflow/recommendation.js +0 -57
  168. package/dist/cjs/workflow/recommendations.js +0 -18
  169. package/dist/cjs/workflow/search-based.js +0 -337
  170. package/dist/cjs/workflow/search.js +0 -64
  171. package/dist/cjs/workflow/unit.js +0 -57
  172. package/dist/cjs/workflow/units.js +0 -42
  173. package/dist/cjs/workflow/use-link.js +0 -49
  174. package/src/actor/data.js +0 -106
  175. package/src/actor/feedback.js +0 -28
  176. package/src/actor/fields.js +0 -51
  177. package/src/actor/filters.js +0 -149
  178. package/src/actor/hub.js +0 -47
  179. package/src/actor/index.js +0 -10
  180. package/src/actor/interactions.js +0 -32
  181. package/src/actor/sessions.js +0 -21
  182. package/src/actor/tracker-states.js +0 -57
  183. package/src/actor/tracker.js +0 -104
  184. package/src/actor/trackers.js +0 -45
  185. package/src/actor/utils.js +0 -7
  186. package/src/actor/view.js +0 -272
  187. package/src/actor/views.js +0 -224
  188. package/src/source.js +0 -17
  189. package/src/util/proxy.js +0 -81
  190. package/src/util/trackers.js +0 -84
  191. package/src/workflow/affiliations.js +0 -121
  192. package/src/workflow/answer-based.js +0 -312
  193. package/src/workflow/ask.js +0 -284
  194. package/src/workflow/asks.js +0 -143
  195. package/src/workflow/autocompletable.js +0 -67
  196. package/src/workflow/autocomplete.js +0 -114
  197. package/src/workflow/base.js +0 -396
  198. package/src/workflow/context.js +0 -16
  199. package/src/workflow/explore.js +0 -194
  200. package/src/workflow/explores.js +0 -18
  201. package/src/workflow/hybrid-search-answer.js +0 -73
  202. package/src/workflow/hybrid-search-views.js +0 -116
  203. package/src/workflow/hybrid-search.js +0 -230
  204. package/src/workflow/index.js +0 -5
  205. package/src/workflow/options/api.js +0 -31
  206. package/src/workflow/options/auto-query.js +0 -70
  207. package/src/workflow/options/configurable.js +0 -48
  208. package/src/workflow/options/data-processor.js +0 -15
  209. package/src/workflow/options/filters.js +0 -10
  210. package/src/workflow/options/index.js +0 -11
  211. package/src/workflow/options/interactions.js +0 -36
  212. package/src/workflow/options/layouts.js +0 -73
  213. package/src/workflow/options/options.js +0 -175
  214. package/src/workflow/options/pagination.js +0 -18
  215. package/src/workflow/options/roles.js +0 -12
  216. package/src/workflow/options/templates.js +0 -27
  217. package/src/workflow/options/trackers.js +0 -80
  218. package/src/workflow/options/utils.js +0 -26
  219. package/src/workflow/processors.js +0 -490
  220. package/src/workflow/recommendation.js +0 -63
  221. package/src/workflow/recommendations.js +0 -14
  222. package/src/workflow/search-based.js +0 -329
  223. package/src/workflow/search.js +0 -73
  224. package/src/workflow/unit.js +0 -51
  225. package/src/workflow/units.js +0 -43
  226. package/src/workflow/use-link.js +0 -41
@@ -1,209 +0,0 @@
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 _constants = require("../constants.js");
9
- var fields = _interopRequireWildcard(require("./fields.js"));
10
- var _view = _interopRequireDefault(require("./view.js"));
11
- var _filters = _interopRequireDefault(require("./filters.js"));
12
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
- class ViewsActor {
15
- constructor(hub, {
16
- workflow,
17
- extensions,
18
- layouts,
19
- roles,
20
- options
21
- }) {
22
- this._hub = hub;
23
- this._workflow = workflow;
24
- this._workflowName = workflow._name;
25
- this._extensions = extensions;
26
- this._layoutFactory = layouts;
27
- this._options = options;
28
- this._roles = roles;
29
- this._containers = new Map();
30
- this._components = new Map();
31
- this._filters = new _filters.default(this);
32
- this._events = new _commons.EventEmitter();
33
- (0, _commons.defineValues)(this, {
34
- interface: new Views(this)
35
- });
36
- this._unsubscribes = [onResize(this.syncSize.bind(this)), hub.on(fields.data(), data => this.refresh({
37
- data
38
- })), options.on('layouts', () => this._syncLayouts())];
39
- this._syncLayouts();
40
- }
41
- get filters() {
42
- return this._filters;
43
- }
44
- get trackers() {
45
- return this._workflow.trackers;
46
- }
47
- on(role, name, fn) {
48
- return this._events.on(`${role}:${name}`, fn);
49
- }
50
-
51
- // elements //
52
- addContainer(element) {
53
- if (this._containers.has(element)) {
54
- return;
55
- }
56
- const view = this._createView(element);
57
- this._containers.set(element, view);
58
- const {
59
- components
60
- } = element;
61
- for (const component of components) {
62
- this.addComponent(component);
63
- }
64
- }
65
- removeContainer(element) {
66
- const view = this._containers.get(element);
67
- if (!view) {
68
- return;
69
- }
70
- const {
71
- components
72
- } = element;
73
- for (const component of components) {
74
- this.removeComponent(component);
75
- }
76
- view._destroy();
77
- this._containers.delete(element);
78
- }
79
- addComponent(element) {
80
- if (this._components.has(element)) {
81
- return;
82
- }
83
- const view = this._createView(element);
84
- this._components.set(element, view);
85
- }
86
- removeComponent(element) {
87
- const view = this._components.get(element);
88
- if (!view) {
89
- return;
90
- }
91
- view._destroy();
92
- this._components.delete(element);
93
- }
94
- updateComponentRole(element, oldRole, newRole) {
95
- // TODO
96
- }
97
- containsElement(element) {
98
- return this._containers.has(element) || this._components.has(element);
99
- }
100
- refreshElement(element) {
101
- const view = element.isContainer ? this._containers.get(element) : this._components.get(element);
102
- view && view.refresh({
103
- force: true
104
- });
105
- }
106
- _createView(element) {
107
- const view = new _view.default(this, element.role);
108
- view.layout = this._createLayout(element.role);
109
- view.element = element;
110
- return view;
111
- }
112
- _syncLayouts() {
113
- // TODO: put a debug event here
114
- const {
115
- layouts
116
- } = this._options.resolved;
117
- if (layouts === false) {
118
- for (const view of [...this._containers.values(), ...this._components.values()]) {
119
- view.layout = undefined;
120
- }
121
- } else {
122
- for (const view of [...this._containers.values(), ...this._components.values()]) {
123
- view.layout = this._createLayout(view.role);
124
- }
125
- }
126
- }
127
- _createLayout(role) {
128
- const args = this._options.resolved.layouts[role];
129
- if (!args) {
130
- return undefined;
131
- }
132
- const [name, options] = args;
133
- return this._layoutFactory.create(name, Object.assign({}, options, {
134
- role,
135
- workflow: this._workflowName
136
- }));
137
- }
138
- get(role) {
139
- return this.getAll(role)[0];
140
- }
141
- getAll(role) {
142
- return role === _constants.ROLE.CONTAINER ? this._containers.values() : this._components.values().filter(view => view.role === role);
143
- }
144
- get views() {
145
- return this._getViews(true);
146
- }
147
- _getViews(containerFirst = true) {
148
- return containerFirst ? [...this._containers.values(), ...this._components.values()] : [...this._components.values(), ...this._containers.values()];
149
- }
150
- syncSize() {
151
- // TODO: containers?
152
- for (const view of this._components.values()) {
153
- view._syncSize();
154
- }
155
- }
156
- async refresh({
157
- force,
158
- data
159
- } = {}) {
160
- data = this._getData(data);
161
- // container first
162
- let views = this._getViews(true);
163
- await Promise.all(views.map(view => view.refresh({
164
- force,
165
- data
166
- })));
167
- }
168
- _getData(data) {
169
- return data || this._hub.states[fields.data()];
170
- }
171
- _error(e) {
172
- // TODO: hub trigger error event
173
- console.error(e);
174
- }
175
- _destroy({
176
- dom
177
- } = {}) {
178
- // destroy components, and then containers
179
- for (const view of this._getViews(false)) {
180
- // TODO: handle dom option
181
- view._destroy();
182
- }
183
- for (const unsubscribe of this._unsubscribes) {
184
- unsubscribe();
185
- }
186
- this._unsubscribes = [];
187
- this._filters._destroy();
188
- }
189
- }
190
- exports.default = ViewsActor;
191
- class Views {
192
- constructor(actor) {
193
- this._actor = actor;
194
- (0, _commons.delegateGetters)(this, actor, ['syncSize', 'refresh', 'trackers', 'filters']);
195
- }
196
- get(role) {
197
- return this._actor.get(role).interface;
198
- }
199
- get all() {
200
- return this._actor.views.map(view => view.interface);
201
- }
202
- }
203
- function onResize(callback) {
204
- if (typeof window === 'undefined') {
205
- return () => {};
206
- }
207
- window.addEventListener('resize', callback);
208
- return () => window.removeEventListener('resize', callback);
209
- }
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.api = api;
7
- var _commons = require("@miso.ai/commons");
8
- function api(client) {
9
- // TODO: send uuid & unit id
10
- return async ({
11
- group,
12
- name,
13
- payload,
14
- options
15
- }) => {
16
- if (group === _commons.API.GROUP.ASK) {
17
- switch (name) {
18
- case _commons.API.NAME.QUESTIONS:
19
- return client.api.ask.questions(payload, options);
20
- case _commons.API.NAME.SEARCH:
21
- return client.api.ask.search(payload, options);
22
- }
23
- }
24
- // because name is in snake case
25
- return client.api[group]._run(name, payload, options);
26
- };
27
- }
@@ -1,88 +0,0 @@
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
- class ProxyElement {
9
- constructor(element) {
10
- this._get = typeof element === 'function' ? element : () => element;
11
- this._handlers = [];
12
- this._elementUpdatedHandlers = [];
13
- this.sync();
14
- }
15
- get current() {
16
- return this._element;
17
- }
18
- on(event, handler) {
19
- if (event === 'element') {
20
- return this._onElementUpdated(handler);
21
- }
22
- const element = this._get();
23
- if (element) {
24
- element.addEventListener(event, handler);
25
- }
26
- this._handlers.push({
27
- event,
28
- handler
29
- });
30
- return () => this._off(event, handler);
31
- }
32
- _off(event, handler) {
33
- const element = this._get();
34
- if (element) {
35
- element.removeEventListener(event, handler);
36
- }
37
- (0, _commons.findAndRemoveItem)(this._handlers, en => en.handler === handler);
38
- }
39
- _onElementUpdated(handler) {
40
- this._elementUpdatedHandlers.push(handler);
41
- return () => {
42
- (0, _commons.removeItem)(this._elementUpdatedHandlers, handler);
43
- };
44
- }
45
- sync({
46
- silent = false
47
- } = {}) {
48
- const element = this._get();
49
- if (this._element === element) {
50
- return;
51
- }
52
- this._offAllFromCurrentElement();
53
- if (element) {
54
- for (const {
55
- event,
56
- handler
57
- } of this._handlers) {
58
- element.addEventListener(event, handler);
59
- }
60
- }
61
- const oldElement = this._element;
62
- this._element = element;
63
- if (silent) {
64
- return;
65
- }
66
- for (const handler of this._elementUpdatedHandlers) {
67
- try {
68
- handler(element, oldElement);
69
- } catch (e) {
70
- console.error(e); // TODO
71
- }
72
- }
73
- }
74
- _offAllFromCurrentElement() {
75
- if (this._element) {
76
- for (const {
77
- event,
78
- handler
79
- } of this._handlers) {
80
- this._element.removeEventListener(event, handler);
81
- }
82
- }
83
- }
84
- destroy() {
85
- this._offAllFromCurrentElement();
86
- }
87
- }
88
- exports.default = ProxyElement;
@@ -1,88 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.isTracked = isTracked;
7
- exports.markAsTracked = markAsTracked;
8
- exports.normalizeTrackerOptions = normalizeTrackerOptions;
9
- exports.validateClick = validateClick;
10
- var _commons = require("@miso.ai/commons");
11
- const _excluded = ["impression", "viewable", "click"];
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
- const TRACKED = Symbol.for('miso:tracked');
14
- function isTracked(event) {
15
- return !!event[TRACKED];
16
- }
17
- function markAsTracked(event) {
18
- event[TRACKED] = true;
19
- }
20
- const DEFAULT_TRACKER_OPTIONS = Object.freeze({
21
- impression: Object.freeze({}),
22
- viewable: Object.freeze({
23
- area: 0.5,
24
- duration: 1000
25
- }),
26
- click: Object.freeze({
27
- lenient: false
28
- })
29
- });
30
- function mergeOptions(def, opt) {
31
- // if opt is falsy then return false, merge otherwise
32
- return !!opt && Object.assign({}, def, opt);
33
- }
34
-
35
- // TODO: don't need this anymore
36
- function normalizeTrackerOptions(options) {
37
- // TODO: make this { active: false } to keep it an object
38
- if (options === false) {
39
- return false; // turn off all tracking
40
- }
41
- if (options === true) {
42
- options = {};
43
- }
44
- if (typeof options !== 'object') {
45
- throw new Error(`Invalid options: ${options}`);
46
- }
47
- const {
48
- impression = {},
49
- viewable = {},
50
- click = {}
51
- } = options,
52
- rest = _objectWithoutPropertiesLoose(options, _excluded);
53
- return (0, _commons.trimObj)(Object.assign({}, DEFAULT_TRACKER_OPTIONS, rest, {
54
- impression: mergeOptions(DEFAULT_TRACKER_OPTIONS.impression, impression),
55
- viewable: mergeOptions(DEFAULT_TRACKER_OPTIONS.viewable, viewable),
56
- click: mergeOptions(DEFAULT_TRACKER_OPTIONS.click, click)
57
- }));
58
- }
59
- function validateClick(options = {}, event) {
60
- if (!options) {
61
- return false;
62
- }
63
- if (typeof options.validate === 'function') {
64
- return options.validate(event);
65
- }
66
- if (options.lenient) {
67
- return true;
68
- }
69
-
70
- // standard criteria
71
- // 1. each event can only be tracked once
72
- if (isTracked(event)) {
73
- return false;
74
- }
75
- // 2. it must be a left click
76
- if (event.button !== 0) {
77
- return false;
78
- }
79
- // 3. event default must not be prevented
80
- if (event.defaultPrevented) {
81
- return false;
82
- }
83
- // 4. must go through a real link
84
- if (!(0, _commons.findInAncestors)(event.target, element => element.tagName === 'A' && element.href || undefined)) {
85
- return false;
86
- }
87
- return true;
88
- }
@@ -1,140 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.processAffiliationData = processAffiliationData;
7
- exports.processSovrnProduct = processSovrnProduct;
8
- var _commons = require("@miso.ai/commons");
9
- const _excluded = ["affiliation_products"],
10
- _excluded2 = ["sovrn_aff"],
11
- _excluded3 = ["products"],
12
- _excluded4 = ["id", "deeplink", "headline", "description", "currency", "retailPrice", "salePrice", "discountRate", "image", "thumbnail", "merchant"];
13
- 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; }
14
- function processAffiliationData(data) {
15
- if (!data || !data.value) {
16
- return data;
17
- }
18
- const {
19
- value
20
- } = data;
21
- return Object.assign({}, data, {
22
- value: processValue(value)
23
- });
24
- }
25
- function processValue(value) {
26
- if (value.affiliation_products) {
27
- const {
28
- affiliation_products
29
- } = value,
30
- rest = _objectWithoutPropertiesLoose(value, _excluded);
31
- value = Object.assign({}, rest, {
32
- affiliation: processMisoData(affiliation_products)
33
- });
34
- } else if (value.sovrn_aff) {
35
- const {
36
- sovrn_aff
37
- } = value,
38
- rest = _objectWithoutPropertiesLoose(value, _excluded2);
39
- value = Object.assign({}, rest, {
40
- affiliation: processSovrnData(sovrn_aff)
41
- });
42
- }
43
- return postProcessValue(value);
44
- }
45
- function postProcessValue(value) {
46
- const {
47
- affiliation
48
- } = value;
49
- if (!affiliation) {
50
- return value;
51
- }
52
- let {
53
- channel,
54
- products
55
- } = affiliation;
56
- if (!products) {
57
- return value;
58
- }
59
- products = products.map(product => Object.assign({}, product));
60
- let i = 0;
61
- for (const product of products) {
62
- if (channel) {
63
- product.channel = channel;
64
- }
65
- product.position = i++;
66
- }
67
- return Object.assign({}, value, {
68
- affiliation: Object.assign({}, affiliation, {
69
- products
70
- })
71
- });
72
- }
73
- function processMisoData(products) {
74
- return {
75
- channel: 'miso',
76
- products
77
- };
78
- }
79
- function processSovrnData(_ref) {
80
- let {
81
- products
82
- } = _ref,
83
- data = _objectWithoutPropertiesLoose(_ref, _excluded3);
84
- return Object.assign({
85
- channel: 'sovrn'
86
- }, data, {
87
- products: products.map(processSovrnProduct)
88
- });
89
- }
90
- function processSovrnProduct(_ref2) {
91
- let {
92
- id,
93
- deeplink: url,
94
- headline: title,
95
- description,
96
- currency,
97
- retailPrice: original_price,
98
- salePrice: sale_price,
99
- discountRate: discount_rate_percent,
100
- image: cover_image,
101
- thumbnail,
102
- merchant
103
- } = _ref2,
104
- product = _objectWithoutPropertiesLoose(_ref2, _excluded4);
105
- const brand = merchant && merchant.name;
106
- const brand_logo = merchant && merchant.logo;
107
- return (0, _commons.trimObj)({
108
- id: `sovrn-${id}`,
109
- title,
110
- description,
111
- cover_image,
112
- url,
113
- currency,
114
- original_price,
115
- sale_price,
116
- discount_rate_percent,
117
- brand,
118
- brand_logo,
119
- custom_attributes: flatten(Object.assign({
120
- sovrn_id: id,
121
- thumbnail,
122
- merchant
123
- }, product))
124
- });
125
- }
126
- function flatten(obj, prefix = '') {
127
- return Object.keys(obj).reduce((acc, key) => {
128
- const value = obj[key];
129
- if (value === undefined) {
130
- return acc;
131
- }
132
- const prefixedKey = prefix ? `${prefix}_${key}` : key;
133
- if (typeof value === 'object') {
134
- return Object.assign({}, acc, flatten(value, prefixedKey));
135
- }
136
- return Object.assign({}, acc, {
137
- [prefixedKey]: value
138
- });
139
- }, {});
140
- }