@telia-ace/widget-core-flamingo 1.0.14 → 1.1.12-rc.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. package/bootstrap.d.ts +3 -0
  2. package/components/ace-widget.component.d.ts +21 -0
  3. package/components/trigger.component.d.ts +14 -0
  4. package/components/unresolved.component.d.ts +7 -0
  5. package/components/widget.component.d.ts +18 -0
  6. package/components/wrapper.component.d.ts +13 -0
  7. package/index-5087564d.mjs +335 -0
  8. package/index-6dd00f59.js +1 -0
  9. package/index.d.ts +9 -0
  10. package/index.js +257 -0
  11. package/index.mjs +1998 -0
  12. package/models/application.d.ts +27 -0
  13. package/models/container.d.ts +16 -0
  14. package/models/environment.d.ts +12 -0
  15. package/models/site.d.ts +12 -0
  16. package/package.json +7 -43
  17. package/services/component-platform.d.ts +13 -0
  18. package/services/component-resolver.d.ts +8 -0
  19. package/services/http-client.service.d.ts +11 -0
  20. package/types.d.ts +47 -0
  21. package/utils/map-branding.d.ts +1 -0
  22. package/LICENSE.txt +0 -6
  23. package/README.md +0 -3
  24. package/dist/action-resolver.d.ts +0 -9
  25. package/dist/action-resolver.d.ts.map +0 -1
  26. package/dist/bootstrap.d.ts +0 -16
  27. package/dist/bootstrap.d.ts.map +0 -1
  28. package/dist/component-platform/actions-controller.d.ts +0 -41
  29. package/dist/component-platform/actions-controller.d.ts.map +0 -1
  30. package/dist/component-platform/changeset-provider.d.ts +0 -9
  31. package/dist/component-platform/changeset-provider.d.ts.map +0 -1
  32. package/dist/component-platform/component-configuration-api.d.ts +0 -3
  33. package/dist/component-platform/component-configuration-api.d.ts.map +0 -1
  34. package/dist/component-platform/component-controller.d.ts +0 -39
  35. package/dist/component-platform/component-controller.d.ts.map +0 -1
  36. package/dist/component-platform/component-node-collection.d.ts +0 -19
  37. package/dist/component-platform/component-node-collection.d.ts.map +0 -1
  38. package/dist/component-platform/component-node.d.ts +0 -64
  39. package/dist/component-platform/component-node.d.ts.map +0 -1
  40. package/dist/component-platform/component-platform.d.ts +0 -55
  41. package/dist/component-platform/component-platform.d.ts.map +0 -1
  42. package/dist/component-platform/component-query.d.ts +0 -17
  43. package/dist/component-platform/component-query.d.ts.map +0 -1
  44. package/dist/component-platform/create-component-model.d.ts +0 -37
  45. package/dist/component-platform/create-component-model.d.ts.map +0 -1
  46. package/dist/component-platform/custom-component-handler.d.ts +0 -22
  47. package/dist/component-platform/custom-component-handler.d.ts.map +0 -1
  48. package/dist/component-platform/descriptor.d.ts +0 -9
  49. package/dist/component-platform/descriptor.d.ts.map +0 -1
  50. package/dist/component-platform/extend-component.d.ts +0 -9
  51. package/dist/component-platform/extend-component.d.ts.map +0 -1
  52. package/dist/component-platform/index.d.ts +0 -19
  53. package/dist/component-platform/index.d.ts.map +0 -1
  54. package/dist/component-platform/queries.d.ts +0 -7
  55. package/dist/component-platform/queries.d.ts.map +0 -1
  56. package/dist/component-platform/state-processor.d.ts +0 -13
  57. package/dist/component-platform/state-processor.d.ts.map +0 -1
  58. package/dist/component-resolver.d.ts +0 -15
  59. package/dist/component-resolver.d.ts.map +0 -1
  60. package/dist/environment.d.ts +0 -49
  61. package/dist/environment.d.ts.map +0 -1
  62. package/dist/event-subscriber.d.ts +0 -8
  63. package/dist/event-subscriber.d.ts.map +0 -1
  64. package/dist/implementation.d.ts +0 -8
  65. package/dist/implementation.d.ts.map +0 -1
  66. package/dist/index.d.ts +0 -15
  67. package/dist/index.d.ts.map +0 -1
  68. package/dist/index.js +0 -2076
  69. package/dist/index.js.map +0 -1
  70. package/dist/plugin.d.ts +0 -8
  71. package/dist/plugin.d.ts.map +0 -1
  72. package/dist/types/configuration.d.ts +0 -87
  73. package/dist/types/configuration.d.ts.map +0 -1
  74. package/dist/types/index.d.ts +0 -3
  75. package/dist/types/index.d.ts.map +0 -1
  76. package/dist/types/ui.d.ts +0 -49
  77. package/dist/types/ui.d.ts.map +0 -1
  78. package/dist/version.d.ts +0 -3
  79. package/dist/version.d.ts.map +0 -1
  80. package/dist/widget-type.d.ts +0 -8
  81. package/dist/widget-type.d.ts.map +0 -1
package/dist/index.js DELETED
@@ -1,2076 +0,0 @@
1
- var Vt = Object.defineProperty, jt = Object.defineProperties;
2
- var qt = Object.getOwnPropertyDescriptors;
3
- var ct = Object.getOwnPropertySymbols;
4
- var Ft = Object.prototype.hasOwnProperty, Ht = Object.prototype.propertyIsEnumerable;
5
- var at = (n, t, e) => t in n ? Vt(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, I = (n, t) => {
6
- for (var e in t || (t = {}))
7
- Ft.call(t, e) && at(n, e, t[e]);
8
- if (ct)
9
- for (var e of ct(t))
10
- Ht.call(t, e) && at(n, e, t[e]);
11
- return n;
12
- }, ht = (n, t) => jt(n, qt(t));
13
- class He {
14
- constructor(t) {
15
- const { events: e } = t.get("$widget");
16
- this.events = e.createChild(this);
17
- }
18
- action(t, e, s) {
19
- this.events.dispatch(
20
- "data:action",
21
- { action: e, value: s, target: t },
22
- { bubbles: !0 }
23
- );
24
- }
25
- subscribe(t, e) {
26
- return this.events.subscribe(
27
- "data:action",
28
- (s, { action: i, value: r, target: o }) => t === o && e(t, i, r)
29
- );
30
- }
31
- }
32
- const j = (n, t, e, ...s) => {
33
- const i = `[${n.get("$environment").name || "webprovisions"}] ${e}`;
34
- switch (t) {
35
- case "info":
36
- console.info(i, ...s);
37
- break;
38
- case "warning":
39
- console.warn(i, ...s);
40
- break;
41
- case "error":
42
- console.error(i, ...s);
43
- break;
44
- }
45
- }, $t = (n) => {
46
- const t = n.container || n;
47
- return {
48
- info: (e, ...s) => j(t, "info", e, ...s),
49
- warn: (e, ...s) => j(t, "warning", e, ...s),
50
- error: (e, ...s) => j(t, "error", e, ...s)
51
- };
52
- }, lt = (n, t) => {
53
- if (!t)
54
- return !0;
55
- if (typeof t == "string") {
56
- const e = t.split(",");
57
- for (let s = 0, i = e.length; s < i; s++) {
58
- const r = e[s].trim();
59
- if (r === n || r === "*")
60
- return !0;
61
- }
62
- }
63
- return t instanceof Array ? t.indexOf(n) > -1 : !1;
64
- }, Wt = (n, t) => {
65
- if (typeof t == "function")
66
- return t(n);
67
- const e = typeof t == "string" ? Qt(t) : t;
68
- return !(!lt(n.tenant || "", e.tenant || "") || !lt(n.name, e.implementation || ""));
69
- }, Bt = (n) => (t) => Wt(t, n), q = (n) => n instanceof Array && n.length === 1 ? n[0] : n, Qt = (n) => {
70
- const t = {}, e = n.split(":");
71
- return e.length === 1 ? t.implementation = q(e[0].split(",")) : (t.tenant = q(e[0].split(",")), t.implementation = q(e[1].split(","))), t;
72
- };
73
- var D = /* @__PURE__ */ ((n) => (n.Implementation = "implementation", n.Widget = "widget", n))(D || {}), E = /* @__PURE__ */ ((n) => (n.Pre = "pre", n.Post = "post", n))(E || {});
74
- const Yt = (n, t, e, s) => {
75
- try {
76
- const i = new t(e, s);
77
- return {
78
- name: n,
79
- invoke: (r, o) => {
80
- let c;
81
- return i[r] && (c = i[r].call(i, o)), Promise.resolve(c);
82
- },
83
- getInstance: () => i
84
- };
85
- } catch (i) {
86
- if (i.message && i.message.indexOf("is not a constructor") >= 0)
87
- return {
88
- name: n,
89
- invoke: (r) => {
90
- let o;
91
- return r === "initialize" && (o = t(e, s)), Promise.resolve(o);
92
- },
93
- getInstance: () => t
94
- };
95
- throw i;
96
- }
97
- };
98
- function ut(n, t) {
99
- return typeof n == "undefined" ? t : n;
100
- }
101
- let Ut = class {
102
- constructor(t = {}) {
103
- this.part = t;
104
- }
105
- createCommand(t, e, s) {
106
- let i;
107
- typeof e == "function" ? i = {
108
- scope: D.Widget,
109
- stage: E.Post,
110
- defaultArgs: void 0,
111
- handlerResolver: e
112
- } : i = {
113
- scope: ut(e.scope, D.Widget),
114
- stage: ut(e.stage, E.Post),
115
- defaultArgs: e.defaultArgs,
116
- handlerResolver: s
117
- };
118
- let r = this.part;
119
- const o = t.split(".");
120
- return o.forEach((c, u) => {
121
- u === o.length - 1 ? r[c] || (r[c] = () => i) : r = this.part[c] = this.part[c] || {};
122
- }), this;
123
- }
124
- get() {
125
- return this.part;
126
- }
127
- };
128
- const Ct = (n) => {
129
- const t = new Ut({});
130
- return n(t), t.get();
131
- };
132
- Ct((n) => {
133
- n.createCommand(
134
- "types.register",
135
- { scope: D.Implementation, stage: E.Pre },
136
- (t) => (e, s) => {
137
- t.container.get("$types")[e] = s;
138
- }
139
- ).createCommand(
140
- "type",
141
- { stage: E.Pre },
142
- (t) => (e) => {
143
- t.container.register("$type", e);
144
- }
145
- ).createCommand(
146
- "settings",
147
- { stage: E.Pre, defaultArgs: [null] },
148
- (t) => (e) => {
149
- t.events.dispatch(
150
- "settings:change",
151
- e,
152
- { bubbles: !0 }
153
- ), t.container.register("$settings", e);
154
- }
155
- ).createCommand(
156
- "plugin",
157
- { stage: E.Pre },
158
- (t) => (e, s, i) => {
159
- const { container: r } = t;
160
- let o = null, c = e, u = s;
161
- typeof e == "string" && (o = e, c = s, u = i);
162
- const h = (a) => {
163
- const { transformPluginSettings: l } = t.container.get("$environmentOptions"), p = l ? l(
164
- u || {},
165
- o,
166
- t.container,
167
- c
168
- ) : s;
169
- try {
170
- const d = Yt(
171
- o,
172
- c,
173
- r,
174
- p
175
- );
176
- r.get("$plugins").push(d), a && d.invoke("initialize", null);
177
- } catch (d) {
178
- $t(t).warn("Error when initializing plugin", d);
179
- }
180
- };
181
- t.container.get("$instance") ? h(!0) : t.events.subscribeOnce("widget:instance-created", () => h(!1));
182
- }
183
- ).createCommand(
184
- "container.register",
185
- (t) => (e, s) => {
186
- t.container.register(e, s);
187
- }
188
- ).createCommand(
189
- "container.registerAsync",
190
- (t) => (e, s) => {
191
- t.container.registerAsync(e, s);
192
- }
193
- ).createCommand(
194
- "container.registerFactory",
195
- (t) => (e, s) => {
196
- t.container.registerFactory(e, s);
197
- }
198
- ).createCommand(
199
- "container.touch",
200
- (t) => (e, s) => {
201
- t.container.touch(e, s);
202
- }
203
- ).createCommand(
204
- "csp",
205
- {},
206
- (t) => (e) => {
207
- t.container.register("csp", e);
208
- }
209
- );
210
- });
211
- function Gt(n, t, e) {
212
- return Array.from(n.querySelectorAll(
213
- `div[id^="${t}_"], div[id^="${t}:"]`
214
- )).map((s) => {
215
- if (s.id.substr(0, 7) === `${t}_`)
216
- return { widgetName: s.id.substr(7), element: s };
217
- const { 3: i } = s.id.split(":");
218
- return { widgetName: i, element: s };
219
- });
220
- }
221
- const Kt = (n) => {
222
- const t = n.map((e) => e.replace(/\./g, "\\.")).join("|");
223
- return new RegExp("^((http[s]?:)?//)?(" + t + ")/([^\\s]+)");
224
- }, Jt = (n) => n.href;
225
- function Xt(n, t) {
226
- const e = Kt(t), s = (i) => {
227
- const r = e.exec(Jt(i));
228
- return r ? {
229
- element: i,
230
- widget: r[4]
231
- } : null;
232
- };
233
- return Array.from(n.querySelectorAll("a")).map((i) => s(i)).filter((i) => !!i).map((i) => ({
234
- element: i.element,
235
- widgetName: i.widget
236
- }));
237
- }
238
- function kt(n) {
239
- return n.filter((t, e, s) => s.indexOf(t) === e);
240
- }
241
- let Zt = class {
242
- constructor(t) {
243
- this.container = t.container, this.events = t.events;
244
- }
245
- watch(t) {
246
- const e = this.container.get("triggerElements") || [], s = kt(e.concat(t));
247
- this.container.register("triggerElements", s), this.events.dispatch(
248
- "bootstrap:trigger-elements-updated",
249
- { triggerElements: s },
250
- { bubbles: !0 }
251
- );
252
- }
253
- };
254
- function Et(n, ...t) {
255
- return n.implementation.events.subscribe("widget:create-instance", (e, s) => {
256
- if (e.target === n) {
257
- let i = n.container.get("bootstrapping.monitor");
258
- i || (i = new Zt(n), n.container.register("bootstrapping.monitor", i)), i.watch(t);
259
- }
260
- }), n.load();
261
- }
262
- function Pt(n, t = document) {
263
- var e;
264
- const s = n.bindings, i = [].concat(
265
- Xt(t, s),
266
- Gt(t, ((e = n.environment) == null ? void 0 : e.name) || "")
267
- ), r = kt(i.map(({ widgetName: o }) => o)).reduce((o, c) => {
268
- const u = n.widgets.get(c);
269
- if (!u)
270
- return process.env.NODE_ENV !== "production" && $t(n).warn(`A trigger element for "${c}" was found but no widget with that name is available on the implementation ("${n.name}"). Make sure this is not a mistake.`), o;
271
- const h = i.filter((a) => a.widgetName === c).map((a) => a.element);
272
- return o.push(Et(u, ...h)), o;
273
- }, []);
274
- return Promise.all(r);
275
- }
276
- function te() {
277
- return new Promise((n) => {
278
- document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", () => n()) : n();
279
- });
280
- }
281
- const ee = (n, t) => {
282
- const e = n;
283
- e.scan = (i) => Pt(e, i), e.bindings = t, e.attach = (i, ...r) => Et(i, ...r);
284
- const { environment: s } = e;
285
- return typeof s.configure == "undefined" && (s.configure = (i, r) => {
286
- let o, c;
287
- r ? (o = i, c = r) : (o = "*", c = i), s.implementations.query(o).forEach((u) => u.configure(c)), s.events.subscribe("implementation:created", (u, h) => {
288
- const { implementation: a } = h;
289
- Bt(o)(a) && a.configure(c);
290
- });
291
- }), e;
292
- };
293
- function se(n, t, e = () => [], s) {
294
- const i = { ready: !1 };
295
- n.container.register("bootstrapping", i);
296
- const r = ee(n, t);
297
- return te().then(() => {
298
- n.configure((...o) => {
299
- e().forEach((c) => c(...o));
300
- });
301
- }).then(() => Pt(r, s())).then(() => (i.ready = !0, n.events.dispatch("bootstrap:ready", {}), r));
302
- }
303
- const ne = Ct((n) => {
304
- n.createCommand(
305
- "ready",
306
- { scope: D.Implementation, stage: E.Pre },
307
- (t) => (e) => {
308
- const { container: s } = t, i = s.owner;
309
- s.get("bootstrapping").ready ? e(i) : i.events.subscribeOnce("bootstrap:ready", () => {
310
- e(i);
311
- });
312
- }
313
- );
314
- }), F = /* @__PURE__ */ new WeakMap();
315
- function A() {
316
- return (n) => (F.has(n) || F.set(n, {}), F.get(n));
317
- }
318
- const H = (n, t, e, ...s) => {
319
- const i = `[${n.get("$environment").name || "webprovisions"}] ${e}`;
320
- switch (t) {
321
- case "info":
322
- console.info(i, ...s);
323
- break;
324
- case "warning":
325
- console.warn(i, ...s);
326
- break;
327
- case "error":
328
- console.error(i, ...s);
329
- break;
330
- }
331
- }, g = (n) => {
332
- const t = n.container || n;
333
- return {
334
- info: (e, ...s) => H(t, "info", e, ...s),
335
- warn: (e, ...s) => H(t, "warning", e, ...s),
336
- error: (e, ...s) => H(t, "error", e, ...s)
337
- };
338
- }, m = A(), U = (() => {
339
- let n = 0;
340
- return () => ++n;
341
- })(), G = (n, t, e) => {
342
- const s = m(n).touchQueue.get(t);
343
- s && s.forEach((i) => {
344
- i(e, n);
345
- });
346
- };
347
- class ie {
348
- constructor(t, e, s, i) {
349
- this.key = t, this.factory = e, this.parent = s, this.container = i, this.id = U(), this.resolved = !1, this.constructed = !1, this.async = !0;
350
- }
351
- resolve() {
352
- if (!this.constructed) {
353
- const t = this.factory(this.parent, this.container);
354
- return this.constructed = !0, this.value = Promise.resolve(t).then((e) => (this.resolved = !0, G(this.container, this.key, e), e));
355
- }
356
- return this.value;
357
- }
358
- }
359
- class re {
360
- constructor(t, e, s, i) {
361
- this.key = t, this.value = e, this.parent = s, this.container = i, this.id = U(), this.async = !1, this.resolved = !1, this.constructed = !0, this.resolve = () => (this.resolved = !0, G(this.container, this.key, this.value), this.value);
362
- }
363
- }
364
- class oe {
365
- constructor(t, e, s, i) {
366
- this.key = t, this.value = e, this.parent = s, this.container = i, this.id = U(), this.async = !1, this.resolved = !1, this.constructed = !1, this.resolve = () => {
367
- this.resolved = !0, this.constructed = !0;
368
- const r = this.value(this.parent, this.container);
369
- return G(this.container, this.key, this.value), r;
370
- };
371
- }
372
- }
373
- class K {
374
- /**
375
- * Creates a new instance of `Container`.
376
- * @param owner The object owning this inctance.
377
- * @param name Optional name for the container.
378
- * @param parent Parent container this should be a child of.
379
- */
380
- constructor(t, e, s) {
381
- this.owner = t, this.name = e, this.parent = s, m(this).resolvers = /* @__PURE__ */ new Map(), m(this).touchQueue = /* @__PURE__ */ new Map(), m(this).children = [];
382
- }
383
- /**
384
- * Deletes an existing resolver by its unique id.
385
- * @param id Resolver id.
386
- */
387
- delete(t) {
388
- const e = m(this).resolvers, s = Array.from(e.values()).find((i) => i.id === t);
389
- return s ? (m(this).touchQueue.delete(s.key), Promise.resolve(e.delete(s.key))) : this.parent ? this.parent.delete(t) : Promise.resolve(!1);
390
- }
391
- /**
392
- * Clears the `Container` and any child containers by deleteing all registered resolvers.
393
- */
394
- clear() {
395
- const t = m(this).resolvers, e = Array.from(t.values());
396
- return Promise.all(e.map((s) => {
397
- if (s.constructed)
398
- return Promise.resolve(s.resolve()).then((i) => {
399
- if (i !== null && typeof i == "object" && typeof i.dispose == "function")
400
- return i.dispose.call(i, this, s);
401
- });
402
- })).then(() => {
403
- e.forEach((s) => this.delete(s.id)), m(this).children.forEach((s) => s.clear());
404
- });
405
- }
406
- /**
407
- * Detaches this `Container` instance from its parent, allowing it to be garbage-collected.
408
- */
409
- detach() {
410
- if (this.parent) {
411
- const t = m(this.parent).children, e = t.indexOf(this);
412
- e > -1 && (t.splice(e, 1), delete this.parent);
413
- }
414
- }
415
- /**
416
- * Provides a way of touching a value in the `Container` without forcing it to be resolved.
417
- * @param key Key of the resolved value to touch.
418
- * @param handler Handler function for touching the resolved value.
419
- */
420
- touch(t, e) {
421
- const s = m(this).resolvers.get(t);
422
- if (s && s.constructed)
423
- Promise.resolve(s.resolve()).then((i) => {
424
- e(i, this);
425
- });
426
- else {
427
- const i = m(this).touchQueue;
428
- let r = i.get(t);
429
- r || (r = [], i.set(t, r)), r.push(e);
430
- }
431
- return this.parent && !s ? this.parent.touch(t, e) : Promise.resolve();
432
- }
433
- /**
434
- * Registers an asynchronous resolver.
435
- * @param key Key of the resolver.
436
- * @param factory Value factory.
437
- */
438
- registerAsync(t, e) {
439
- const s = m(this).resolvers.get(t);
440
- s && !s.async && process.env.NODE_ENV !== "production" && g(this).warn(`Mismatching resolver type. You are registering an async resolver with a key ('${t}') previously used by a non-async resolver.`);
441
- const i = new ie(t, e, s, this);
442
- return m(this).resolvers.set(t, i), i.id;
443
- }
444
- /**
445
- * Registers a factory resolver for constructing the value to be resolved.
446
- * @param key Key of the resolver.
447
- * @param factory Value factory.
448
- */
449
- registerFactory(t, e) {
450
- const s = m(this).resolvers.get(t);
451
- s && s.async && process.env.NODE_ENV !== "production" && g(this).warn(`Mismatching resolver type. You are registering a non-async resolver with a key ('${t}') previously used by an async resolver.`);
452
- const i = new oe(t, e, s, this);
453
- return m(this).resolvers.set(t, i), i.id;
454
- }
455
- /**
456
- * Registers an synchronous resolver.
457
- * @param key Key of the resolver.
458
- * @param value Value.
459
- */
460
- register(t, e) {
461
- const s = m(this).resolvers.get(t);
462
- s && s.async && process.env.NODE_ENV !== "production" && g(this).warn(`Mismatching resolver type. You are registering a non-async resolver with a key ('${t}') previously used by an async resolver.`);
463
- const i = new re(t, e, s, this);
464
- return m(this).resolvers.set(t, i), i.id;
465
- }
466
- /**
467
- * Gets the value for a synchronous resolver.
468
- * @param key Key of resolver to get.
469
- */
470
- get(t) {
471
- const e = m(this).resolvers.get(t);
472
- if (e)
473
- return e.async && process.env.NODE_ENV !== "production" && g(this).warn(`You are retrieving an async value (with key '${t}') by the non-async function 'container.get(key)'. This will not be supported in future versions. Use 'container.getAsync(key) instead.'`), e.resolve();
474
- if (this.parent)
475
- return this.parent.get(t);
476
- }
477
- /**
478
- * Gets the value for a asynchronous resolver.
479
- * @param key Key of resolver to get.
480
- */
481
- getAsync(t) {
482
- const e = m(this).resolvers.get(t);
483
- if (e) {
484
- if (!e.async)
485
- throw process.env.NODE_ENV !== "production" && g(this).warn(`You are retrieving a non-async value (with key '${t}') by the async function 'container.getAsync(key)'.Use 'container.get(key) instead.'`), "Mismatching resolver type";
486
- return e.resolve();
487
- }
488
- return this.parent ? this.parent.getAsync(t) : Promise.resolve(void 0);
489
- }
490
- getMany(...t) {
491
- const e = {};
492
- return t.forEach((s) => e[s] = this.get(s)), e;
493
- }
494
- getManyAsync(...t) {
495
- const e = {};
496
- return Promise.all(t.map((s) => this.getAsync(s).then((i) => e[s] = i))).then(() => e);
497
- }
498
- createChild(t, e) {
499
- const s = new K(t, e, this);
500
- return m(this).children.push(s), s;
501
- }
502
- }
503
- class pt {
504
- /**
505
- *
506
- * @param type Type of event.
507
- * @param target The target of the event, which will handle the default behavour.
508
- * @param cancelable Whether the event is cancelable by calling preventDefault().
509
- * @param bubbles Whether the event will bubble up the parent hierarchy.
510
- */
511
- constructor(t, e, s = !1, i = !1) {
512
- this.type = t, this.target = e, this.cancelable = !!s, this.bubbles = !!i, this.defaultPrevented = !1;
513
- }
514
- /**
515
- * Cancels the default behaviour (if the event is cancelable).
516
- */
517
- preventDefault() {
518
- this.cancelable && (this.defaultPrevented = !0);
519
- }
520
- }
521
- const b = A(), dt = (n, t) => [].concat(
522
- b(n).listenerLookup.get(t.toLowerCase()) || [],
523
- b(n).listenerLookup.get("*") || []
524
- ), mt = (n, t, e, s) => {
525
- let i, r;
526
- return t instanceof pt ? (i = t, r = t.type) : (i = new pt(t, n.target, !!e.cancelable, !!e.bubbles), r = t), { event: i, type: r, async: s };
527
- };
528
- class J {
529
- /**
530
- * Creates a new Event Manager instance.
531
- * @param target The target of events dispatched from this Event Manager instance.
532
- * @param parent Parent Event Manager instance.
533
- */
534
- constructor(t, e) {
535
- this.target = t, this.parent = e, b(this).listenerLookup = /* @__PURE__ */ new Map(), b(this).children = [];
536
- }
537
- /**
538
- * Clears registered event listeners in this `EventManager` as well as in any children.
539
- */
540
- clear() {
541
- b(this).listenerLookup.clear(), b(this).children.forEach((t) => t.clear());
542
- }
543
- /**
544
- * Detaches this `EventManager` instance from its parent, allowing it to be garbage-collected.
545
- */
546
- detach() {
547
- if (this.parent) {
548
- const t = b(this.parent).children, e = t.indexOf(this);
549
- e > -1 && t.splice(e, 1);
550
- }
551
- }
552
- /**
553
- * Creates an event subscription by registering an listener for an event type.
554
- * @param type Event type to subscribe to.
555
- * @param listener Listener for the event.
556
- */
557
- subscribe(t, e, s) {
558
- const i = b(this).listenerLookup, r = t.toLowerCase();
559
- return i.has(r) || i.set(r, []), i.get(r).push(e), () => this.unsubscribe(t, e);
560
- }
561
- /**
562
- * Similar to `subscribe()` but immediately removes the subscription after the first call.
563
- * @param type Event type to subscribe to.
564
- * @param listener Listener for the event.
565
- */
566
- subscribeOnce(t, e) {
567
- const s = this.subscribe(t, (i, r) => (s(), e(i, r)));
568
- }
569
- /**
570
- * Removes a listener for the specified event type.
571
- * @param type Event type to remove subscription for.
572
- * @param listener Event listener to remove.
573
- */
574
- unsubscribe(t, e) {
575
- const s = b(this).listenerLookup.get(t.toLowerCase());
576
- if (s) {
577
- const i = s.indexOf(e);
578
- i > -1 && s.splice(i, 1);
579
- }
580
- }
581
- /**
582
- * Dispatches an asynchonous event to registered event listeners.
583
- * @param eventOrType Event type or Event object to dispatch.
584
- * @param data Optional data to be passed to event listeners.
585
- * @param options Optional event options used if first parameter is an event type.
586
- */
587
- dispatchAsync(t, e, s = {}) {
588
- const { event: i, type: r } = mt(this, t, s, !0), o = dt(this, r);
589
- let c = 0;
590
- const u = o.length;
591
- let h = Promise.resolve();
592
- for (c = 0; c < u; c++)
593
- ((a) => {
594
- h = h.then((l) => l ? Promise.resolve(!0) : Promise.resolve(a(i, e)).then(() => i.defaultPrevented));
595
- })(o[c]);
596
- return h.then((a) => !a && i.bubbles && this.parent ? this.parent.dispatchAsync(i, e) : a);
597
- }
598
- /**
599
- * Dispatches an event to registered event listeners.
600
- * @param eventOrType Event type or Event object to dispatch.
601
- * @param data Optional data to be passed to event listeners.
602
- * @param options Optional event options used if first parameter is an event type.
603
- */
604
- dispatch(t, e, s = {}) {
605
- const { event: i, type: r } = mt(this, t, s, !1), o = dt(this, r);
606
- let c = 0;
607
- const u = o.length;
608
- let h = !1;
609
- for (c = 0; c < u; c++)
610
- if (o[c](i, e), i.defaultPrevented) {
611
- h = !0;
612
- break;
613
- }
614
- return !h && i.bubbles && this.parent && (h = this.parent.dispatch(i, e)), h;
615
- }
616
- /**
617
- * Creates a child instance to the current Event manager.
618
- */
619
- createChild(t) {
620
- const e = new J(t, this);
621
- return b(this).children.push(e), e;
622
- }
623
- }
624
- const L = (n, t, e) => {
625
- const s = n.get("$plugins").map((i) => {
626
- try {
627
- return i.invoke(t, e);
628
- } catch (r) {
629
- g(n).error("An error occured when invoking a plugin.", i, r);
630
- }
631
- });
632
- return Promise.all(s);
633
- };
634
- class ce {
635
- constructor(t) {
636
- this.widget = t.get("$widget"), this.events = this.widget.events, this.container = this.widget.container, this.initialized = null, this.activated = null, this.initialize = this.initialize.bind(this), this.activate = this.activate.bind(this), this.deactivate = this.deactivate.bind(this), this.invoke = this.invoke.bind(this), this.createInstance();
637
- }
638
- createInstance() {
639
- if (!this.widget.container.get("$instance")) {
640
- const t = this.widget.container.get("$types"), e = this.widget.container.get("$type");
641
- !e && g(this).error("Unable to create widget. No type is specified.");
642
- const s = t[e];
643
- !s && g(this).error(`Unable to create widget. Type '${e}' is not registered.`), this.widget.events.dispatch("widget:create-instance", {}, { bubbles: !0 });
644
- try {
645
- this.widget.container.register(
646
- "$instance",
647
- new s(this.container)
648
- );
649
- } catch (i) {
650
- g(this).error("Unable to create widget type.", i);
651
- }
652
- this.widget.events.dispatch("widget:instance-created", {}, { bubbles: !0 });
653
- }
654
- }
655
- /**
656
- * The initialization is performed before the widget is activated but after it's configured
657
- * and thus all required services are available. This hook is a good place to bind events that
658
- * should trigger activation (e.g. click on "trigger links" or routing events)
659
- * @param {object} data Custom initialization data passed to the widget.
660
- */
661
- initialize(t) {
662
- return this.initialized = this.initialized || (() => {
663
- const e = this.container.get("$instance"), s = e.initialize || (() => {
664
- });
665
- return this.initialized = Promise.resolve(s.call(e, t)).then(() => L(this.container, "initialize", t)).then(() => {
666
- });
667
- })();
668
- }
669
- /**
670
- * The activation is where the widget is actually created and rendered.
671
- * Activation can be initialized from the outside or from an event originated
672
- * in the "initialize" hook.
673
- * @param {object} data Custom activation data passed to the widget.
674
- */
675
- activate(t) {
676
- return (this.initialized || this.initialize()).then(() => {
677
- this.activated = this.activated || (() => L(this.container, "activate").then(() => {
678
- const e = this.container.get("$instance");
679
- return this.activated = e.activate(t);
680
- }))();
681
- });
682
- }
683
- deactivate() {
684
- const t = this.container.get("$instance"), e = t.deactivate || (() => {
685
- });
686
- return L(this.container, "deactivate").then(() => Promise.resolve(e.call(t))).then(() => {
687
- this.initialized = null, this.activated = null;
688
- }).then(() => {
689
- });
690
- }
691
- /**
692
- * Invokes a command on the widget component.
693
- * @param command Name of command
694
- * @param args Command arguments
695
- */
696
- invoke(t, ...e) {
697
- return L(this.container, "invoke", { command: t, args: e }).then(() => {
698
- const s = this.container.get("$instance");
699
- if (s[t])
700
- return s[t].apply(s, e);
701
- const i = s.invoke;
702
- if (i)
703
- return i.call(s, t, ...e);
704
- });
705
- }
706
- }
707
- const O = (n, t) => {
708
- if (!t)
709
- return !0;
710
- if (typeof t == "string") {
711
- const e = t.split(",");
712
- for (let s = 0, i = e.length; s < i; s++) {
713
- const r = e[s].trim();
714
- if (r === n || r === "*")
715
- return !0;
716
- }
717
- }
718
- return t instanceof Array ? t.indexOf(n) > -1 : !1;
719
- }, ae = (n, t) => {
720
- if (typeof t == "function")
721
- return t(n);
722
- const e = typeof t == "string" ? le(t) : t;
723
- return !(!O(n.implementation.tenant || "", e.tenant || "") || !O(n.implementation.name, e.implementation || "") || !O(n.name, e.widget || "") || !O(n.container.get("$type"), e.type || ""));
724
- }, he = (n, t) => {
725
- if (typeof t == "function")
726
- return t(n);
727
- const e = typeof t == "string" ? ue(t) : t;
728
- return !(!O(n.tenant || "", e.tenant || "") || !O(n.name, e.implementation || ""));
729
- }, Ot = (n) => (t) => ae(t, n), At = (n) => (t) => he(t, n), x = (n) => n instanceof Array && n.length === 1 ? n[0] : n, le = (n) => {
730
- const t = {}, e = n.split(":");
731
- return e.length === 1 ? t.widget = x(e[0].split(",")) : e.length === 2 ? (t.implementation = x(e[0].split(",")), t.widget = x(e[1].split(","))) : (t.tenant = x(e[0].split(",")), t.implementation = x(e[1].split(",")), t.widget = x(e[2].split(","))), t;
732
- }, ue = (n) => {
733
- const t = {}, e = n.split(":");
734
- return e.length === 1 ? t.implementation = x(e[0].split(",")) : (t.tenant = x(e[0].split(",")), t.implementation = x(e[1].split(","))), t;
735
- }, z = A(), gt = (n, t, e) => n.filter((s) => s.stage === t && Ot(s.selector)(e));
736
- function pe(n) {
737
- const t = n.container.get("$environment");
738
- let e = z(t).configurationCache;
739
- e && (e = e.filter((s) => s[0] !== n), z(t).configurationCache = e);
740
- }
741
- var S = /* @__PURE__ */ ((n) => (n.Implementation = "implementation", n.Widget = "widget", n))(S || {}), $ = /* @__PURE__ */ ((n) => (n.Pre = "pre", n.Post = "post", n))($ || {});
742
- const Nt = (n, t, e) => (Object.keys(t).forEach((s) => {
743
- const i = t[s];
744
- if (typeof i == "function") {
745
- const r = i();
746
- typeof r.defaultArgs != "undefined" && e(r, ...r.defaultArgs), n[s] = (...o) => {
747
- const c = Object.assign(
748
- {},
749
- r,
750
- { handlerResolver: r.handlerResolver.bind({}) }
751
- );
752
- return e(c, ...o), n;
753
- };
754
- } else
755
- n[s] = Nt(
756
- {},
757
- i,
758
- e
759
- );
760
- }), n), de = (n, t) => {
761
- switch (t) {
762
- case "implementation":
763
- return n.implementation;
764
- case "widget":
765
- return n;
766
- }
767
- }, ft = (n, t, e, s) => (s.forEach((i) => {
768
- Nt(
769
- n,
770
- i,
771
- (r, ...o) => {
772
- const c = {
773
- selector: t,
774
- stage: r.stage,
775
- handler: (u) => {
776
- const h = de(u, r.scope), a = { container: h.container, events: h.events }, l = r.handlerResolver, p = l(a);
777
- let d = z(e.environment).configurationCache;
778
- return d || (d = z(e.environment).configurationCache = []), d.find((C) => C.indexOf(h) > -1 && C.indexOf(l) > -1) ? Promise.resolve() : (d.push([h, l]), Promise.resolve(p(...o)));
779
- }
780
- };
781
- e.instructions.push(c);
782
- }
783
- );
784
- }), n);
785
- function me(n, t) {
786
- function e(s) {
787
- return ft(
788
- {},
789
- s,
790
- n,
791
- t
792
- );
793
- }
794
- return ft(
795
- e,
796
- "*",
797
- n,
798
- t
799
- );
800
- }
801
- class ge {
802
- constructor(t, e) {
803
- this.container = t, this.settings = e, this.widget = t.get("$widget"), this.events = this.widget.events;
804
- }
805
- }
806
- const fe = (n, t, e, s) => {
807
- try {
808
- const i = new t(e, s);
809
- return {
810
- name: n,
811
- invoke: (r, o) => {
812
- let c;
813
- return i[r] && (c = i[r].call(i, o)), Promise.resolve(c);
814
- },
815
- getInstance: () => i
816
- };
817
- } catch (i) {
818
- if (i.message && i.message.indexOf("is not a constructor") >= 0)
819
- return {
820
- name: n,
821
- invoke: (r) => {
822
- let o;
823
- return r === "initialize" && (o = t(e, s)), Promise.resolve(o);
824
- },
825
- getInstance: () => t
826
- };
827
- throw i;
828
- }
829
- };
830
- function vt(n, t) {
831
- return typeof n == "undefined" ? t : n;
832
- }
833
- class ve {
834
- constructor(t = {}) {
835
- this.part = t;
836
- }
837
- createCommand(t, e, s) {
838
- let i;
839
- typeof e == "function" ? i = {
840
- scope: S.Widget,
841
- stage: $.Post,
842
- defaultArgs: void 0,
843
- handlerResolver: e
844
- } : i = {
845
- scope: vt(e.scope, S.Widget),
846
- stage: vt(e.stage, $.Post),
847
- defaultArgs: e.defaultArgs,
848
- handlerResolver: s
849
- };
850
- let r = this.part;
851
- const o = t.split(".");
852
- return o.forEach((c, u) => {
853
- u === o.length - 1 ? r[c] || (r[c] = () => i) : r = this.part[c] = this.part[c] || {};
854
- }), this;
855
- }
856
- get() {
857
- return this.part;
858
- }
859
- }
860
- const _t = (n) => {
861
- const t = new ve({});
862
- return n(t), t.get();
863
- }, be = _t((n) => {
864
- n.createCommand(
865
- "types.register",
866
- { scope: S.Implementation, stage: $.Pre },
867
- (t) => (e, s) => {
868
- t.container.get("$types")[e] = s;
869
- }
870
- ).createCommand(
871
- "type",
872
- { stage: $.Pre },
873
- (t) => (e) => {
874
- t.container.register("$type", e);
875
- }
876
- ).createCommand(
877
- "settings",
878
- { stage: $.Pre, defaultArgs: [null] },
879
- (t) => (e) => {
880
- t.events.dispatch(
881
- "settings:change",
882
- e,
883
- { bubbles: !0 }
884
- ), t.container.register("$settings", e);
885
- }
886
- ).createCommand(
887
- "plugin",
888
- { stage: $.Pre },
889
- (t) => (e, s, i) => {
890
- const { container: r } = t;
891
- let o = null, c = e, u = s;
892
- typeof e == "string" && (o = e, c = s, u = i);
893
- const h = (a) => {
894
- const { transformPluginSettings: l } = t.container.get("$environmentOptions"), p = l ? l(
895
- u || {},
896
- o,
897
- t.container,
898
- c
899
- ) : s;
900
- try {
901
- const d = fe(
902
- o,
903
- c,
904
- r,
905
- p
906
- );
907
- r.get("$plugins").push(d), a && d.invoke("initialize", null);
908
- } catch (d) {
909
- g(t).warn("Error when initializing plugin", d);
910
- }
911
- };
912
- t.container.get("$instance") ? h(!0) : t.events.subscribeOnce("widget:instance-created", () => h(!1));
913
- }
914
- ).createCommand(
915
- "container.register",
916
- (t) => (e, s) => {
917
- t.container.register(e, s);
918
- }
919
- ).createCommand(
920
- "container.registerAsync",
921
- (t) => (e, s) => {
922
- t.container.registerAsync(e, s);
923
- }
924
- ).createCommand(
925
- "container.registerFactory",
926
- (t) => (e, s) => {
927
- t.container.registerFactory(e, s);
928
- }
929
- ).createCommand(
930
- "container.touch",
931
- (t) => (e, s) => {
932
- t.container.touch(e, s);
933
- }
934
- ).createCommand(
935
- "csp",
936
- {},
937
- (t) => (e) => {
938
- t.container.register("csp", e);
939
- }
940
- );
941
- }), ye = be;
942
- function we(n, t, e = []) {
943
- const s = [ye].concat(e), i = me(
944
- t,
945
- s
946
- );
947
- n(i, t);
948
- }
949
- class xe {
950
- constructor() {
951
- this.tasks = [], this.current = Promise.resolve(), this.next = this.next.bind(this);
952
- }
953
- add(t, e, s, i) {
954
- this.tasks.push({ task: t, resolve: e, reject: s, done: i }), this.next();
955
- }
956
- next() {
957
- this.current = this.current.then(() => {
958
- const t = this.tasks.shift();
959
- if (t) {
960
- const e = Promise.resolve(t.task());
961
- return Promise.resolve(e).then(this.next).then(() => e.then((s) => {
962
- t.done(), t.resolve(s);
963
- })).catch((s) => (t.done(), t.reject(s), this.next()));
964
- }
965
- return Promise.resolve();
966
- });
967
- }
968
- }
969
- const M = /* @__PURE__ */ new WeakMap();
970
- function $e(n) {
971
- return M.has(n) || M.set(n, new xe()), (t) => new Promise((e, s) => {
972
- const i = M.get(n);
973
- i.add(t, e, s, () => {
974
- i.tasks.length || M.delete(n);
975
- });
976
- });
977
- }
978
- const bt = (n) => typeof n != "undefined", _ = (n, t) => {
979
- n.events.dispatch("widget:state-change", { state: t }, { bubbles: !0 }), n.state = t, n.events.dispatch("widget:state-changed", {}, { bubbles: !0 });
980
- }, v = A(), Ce = (n) => {
981
- const { container: t, events: e } = n;
982
- t.get("$controller") || (t.register("$controller", new ce(t)), e.dispatch("widget:controller-created", {}, { bubbles: !0 }));
983
- };
984
- class ke {
985
- /**
986
- * Creates a new `Widget` instance.
987
- * @param name Name of widget.
988
- * @param implementation The implementation this instance belongs to.
989
- * @param configuration Configuration for the widget.
990
- */
991
- constructor(t, e, s) {
992
- this.state = "deactivated", this.name = t, this.implementation = e, this.container = e.container.createChild(this, t), this.events = e.events.createChild(this), v(this).subscriptions = [], s && e.configure((i) => {
993
- const r = i(t);
994
- bt(s.type) && r.type(s.type), bt(s.settings) && r.settings(s.settings), s.plugins && Object.keys(s.plugins).forEach((o) => {
995
- var c;
996
- const u = (c = s.plugins) == null ? void 0 : c[o];
997
- r.plugin(o, u);
998
- });
999
- }), this.load = this.load.bind(this), this.activate = this.activate.bind(this), this.invoke = this.invoke.bind(this), this.deactivate = this.deactivate.bind(this);
1000
- }
1001
- /**
1002
- * Initializes the widget, if not already initialized, and applies any
1003
- * pending configuration.
1004
- */
1005
- load() {
1006
- return $e(this)(() => {
1007
- v(this).deactivatedPromise = null;
1008
- const t = this.state === "deactivated";
1009
- t && (_(
1010
- this,
1011
- "activating"
1012
- /* Activating */
1013
- ), this.container.register("$widget", this), this.container.register("$controller", null), this.container.register("$plugins", []), this.container.register("$type", null), this.container.register("$instance", null)), _(
1014
- this,
1015
- "loading"
1016
- /* Loading */
1017
- );
1018
- const e = this.implementation.instructions, s = gt(e, $.Pre, this);
1019
- return Promise.all(s.map((i) => i.handler(this))).then(() => {
1020
- Ce(this);
1021
- const i = gt(e, $.Post, this);
1022
- return Promise.all(i.map((r) => r.handler(this))).then(() => {
1023
- t && this.container.get("$controller").initialize();
1024
- });
1025
- }).then(() => (_(
1026
- this,
1027
- "activated"
1028
- /* Activated */
1029
- ), this));
1030
- });
1031
- }
1032
- /**
1033
- * Activates the widget and makes it ready for receiving commands.
1034
- * @param data Activation data
1035
- */
1036
- activate(t) {
1037
- v(this).subscriptions.push(
1038
- this.implementation.events.subscribe("implementation:configured", () => {
1039
- [
1040
- "activated",
1041
- "activating",
1042
- "loading"
1043
- /* Loading */
1044
- ].indexOf(this.state) > -1 && this.load();
1045
- })
1046
- );
1047
- const e = v(this).activatedPromise;
1048
- return e ? (process.env.NODE_ENV !== "production" && g(this).warn(`Widget '${this.name}' has already been activated. The passed arguments for this activation will be discarded.`, t), e) : v(this).activatedPromise = this.load().then(() => this.container.get("$controller").activate(t));
1049
- }
1050
- /**
1051
- * Invokes a command on a widget. If the widget isn't activate the invocation
1052
- * will be suspended until activation.
1053
- * @param command Command to invoke.
1054
- * @param args Command arguments.
1055
- */
1056
- invoke(t, ...e) {
1057
- const s = v(this).activatedPromise, i = (r, ...o) => s.then(this.load).then(() => this.container.get("$controller").invoke(r, ...o));
1058
- return s ? i(t, ...e) : (process.env.NODE_ENV !== "production" && g(this).warn("You are invoking a command on a deactivated widget. The invocation will be queued until the widget is activated.", this), new Promise((r) => {
1059
- const o = this.events.subscribe("widget:state-changed", () => {
1060
- this.state === "activated" && (o(), r(i(t, ...e)));
1061
- });
1062
- }));
1063
- }
1064
- /**
1065
- * Deactivates the widget by clearing the `Container` and removing any event subscriptions in the
1066
- * `EventManager`.
1067
- */
1068
- deactivate() {
1069
- return v(this).deactivatedPromise || (this.state === "deactivated" ? Promise.resolve() : (_(
1070
- this,
1071
- "deactivating"
1072
- /* Deactivating */
1073
- ), v(this).deactivatedPromise = this.container.get("$controller").deactivate().then(() => (v(this).activatedPromise = null, v(this).subscriptions.forEach((e) => e()), v(this).subscriptions = [], this.container.clear().then(() => {
1074
- this.events.clear(), pe(this), _(
1075
- this,
1076
- "deactivated"
1077
- /* Deactivated */
1078
- );
1079
- })))));
1080
- }
1081
- }
1082
- class Ee {
1083
- /**
1084
- * Creates a new `Widget` instance.
1085
- * @param container The `Container` instance to base the widget upon.
1086
- */
1087
- constructor(t) {
1088
- this.container = t, this.widget = t.get("$widget"), this.settings = t.get("$settings"), this.events = this.widget.events, this.widget.events.subscribe("settings:change", (e, s) => {
1089
- this.settings = s;
1090
- });
1091
- }
1092
- }
1093
- const yt = A();
1094
- class Rt {
1095
- /**
1096
- * Creates a new Implementation instance.
1097
- * @param configuration Configuration for the implementation.
1098
- * @param environment The parent environment.
1099
- * @param configurationApiExtensions Optional configuration API extensions.
1100
- */
1101
- constructor(t, e, s = []) {
1102
- this.instructions = [], this.widgets = /* @__PURE__ */ new Map(), this.name = t.name, this.tenant = t.tenant, this.environment = e, this.container = e.container.createChild(this, this.name), this.events = e.events.createChild(this), this.container.register("$types", {}), yt(this).configurationApiExtensions = s;
1103
- }
1104
- /**
1105
- * Loads all widgets in the implementation.
1106
- */
1107
- load() {
1108
- const t = Array.from(this.widgets.values());
1109
- return Promise.all(t.map((e) => e.load())).then(() => t);
1110
- }
1111
- /**
1112
- * Configures the implementation by adding a configuration callback.
1113
- * @param configFn Callback function for configuration.
1114
- */
1115
- configure(t) {
1116
- return we(t, this, yt(this).configurationApiExtensions), this.events.dispatch(
1117
- "implementation:configured",
1118
- { implementation: this },
1119
- { bubbles: !0 }
1120
- ), this;
1121
- }
1122
- /**
1123
- * Creates a widget on the implementation and returns its `WidgetData`.
1124
- * @param name Widget name.
1125
- * @param configuration Widget configuration.
1126
- */
1127
- createWidget(t, e) {
1128
- const s = new ke(t, this, e);
1129
- return this.widgets.set(s.name, s), s;
1130
- }
1131
- }
1132
- function Pe(n, t, e) {
1133
- const s = new Rt(n, t, e);
1134
- return n.widgets && Object.keys(n.widgets).forEach((i) => {
1135
- var r;
1136
- const o = (r = n.widgets) == null ? void 0 : r[i];
1137
- s.createWidget(i, o);
1138
- }), s;
1139
- }
1140
- let wt = class Dt {
1141
- constructor(t, e) {
1142
- this.selectorFactory = e, typeof t == "function" ? this.resolver = t : this.resolver = () => t;
1143
- }
1144
- append(t) {
1145
- const e = typeof t == "function" ? t : () => t;
1146
- return new Dt(
1147
- () => this.all().concat(e()),
1148
- this.selectorFactory
1149
- );
1150
- }
1151
- all() {
1152
- return this.resolver().concat([]);
1153
- }
1154
- query(t) {
1155
- return this.all().filter(this.selectorFactory(t));
1156
- }
1157
- find(t) {
1158
- const e = this.query(t);
1159
- if (e.length)
1160
- return e[0];
1161
- }
1162
- };
1163
- const X = "#____version____#", W = A(), Oe = (n) => n.tenant ? `${n.name}:${n.tenant}` : n.name, It = class {
1164
- constructor(n, t = [], e = {}) {
1165
- this.widgets = new wt(
1166
- () => {
1167
- let s = [];
1168
- return this.implementations.all().forEach((i) => {
1169
- s = s.concat(Array.from(i.widgets.values()));
1170
- }), s;
1171
- },
1172
- Ot
1173
- ), this.implementations = new wt([], At), this.name = n, this.container = new K(this, n), this.events = new J(this), this.container.register("$version", X), this.container.register("$environment", this), this.container.register("$environmentOptions", e), W(this).configurationApiExtensions = t;
1174
- }
1175
- /**
1176
- * Creates an implementation based on the provided configuration.
1177
- * @param config Implementation configuration.
1178
- */
1179
- createImplementation(n) {
1180
- const t = Oe(n);
1181
- let e = this.implementations.find(t);
1182
- if (e)
1183
- return process.env.NODE_ENV !== "production" && g(e).warn(`Implementation "${t}" already exist on current environment.`), e;
1184
- const s = W(this).configurationApiExtensions;
1185
- return e = Pe(
1186
- n,
1187
- this,
1188
- s
1189
- ), this.implementations = this.implementations.append([e]), this.events.dispatch("implementation:created", { implementation: e }), e;
1190
- }
1191
- /**
1192
- * Patches the Environment instance configuration.
1193
- * @param configuration Environment configuration.
1194
- */
1195
- patch(n = {}) {
1196
- const { name: t, configurationApiExtensions: e } = n;
1197
- typeof t != "undefined" && t !== null && (this.name = t), e && e.forEach(
1198
- (s) => {
1199
- W(this).configurationApiExtensions.push(s);
1200
- }
1201
- );
1202
- }
1203
- /**
1204
- * Creates a new Environment instance based on the provided configuration.
1205
- * @param configuration Environment configuration.
1206
- */
1207
- static create(n = {}) {
1208
- return new It(
1209
- n.name || "",
1210
- n.configurationApiExtensions,
1211
- n.options
1212
- );
1213
- }
1214
- };
1215
- let Lt = It;
1216
- Lt.version = X;
1217
- const Qe = (n, t, e = {}) => se(
1218
- n,
1219
- n.bindings,
1220
- () => {
1221
- const s = n.container.get("$runtimecfg").map((i) => {
1222
- const r = i[0];
1223
- if (typeof r == "function")
1224
- return r;
1225
- if (At(r)(n))
1226
- return i[1];
1227
- }).filter((i) => !!i);
1228
- return (t ? [t] : []).concat(s);
1229
- },
1230
- e.rootElementResolver || (() => document.body)
1231
- ), Ae = (n) => {
1232
- const t = [];
1233
- return [
1234
- (s, i) => {
1235
- t.push(n.subscribe(s, i));
1236
- },
1237
- () => {
1238
- t.forEach((s) => {
1239
- s();
1240
- });
1241
- }
1242
- ];
1243
- };
1244
- class Z {
1245
- constructor(t, e = []) {
1246
- this.platform = t, this.rules = e;
1247
- }
1248
- match(t) {
1249
- return this.rules.every((e) => !(e.id && e.id !== t.id || e.type && e.type !== t.type));
1250
- }
1251
- ofType(t) {
1252
- return this.rules.push({ type: t }), this;
1253
- }
1254
- withId(t) {
1255
- return this.rules.push({ id: t }), this;
1256
- }
1257
- select() {
1258
- return new Ne(this.platform, this);
1259
- }
1260
- }
1261
- class Mt {
1262
- constructor(t, e, s) {
1263
- this.platform = t, this.node = e, this.actions = new tt(
1264
- t,
1265
- new Z(t).withId(e.id),
1266
- s
1267
- );
1268
- const [i, r] = Ae(
1269
- this.platform.events
1270
- );
1271
- this.subscribe = i, this.unsubscribe = r;
1272
- }
1273
- properties(t) {
1274
- return t && this.node.touchProperties((e) => t(e)), this.node.attributes.properties;
1275
- }
1276
- context(t) {
1277
- return t && this.subscribe("components:context-changed", (e, { node: s }) => {
1278
- s === this.node && t(this.node.attributes.context);
1279
- }), this.node.attributes.context;
1280
- }
1281
- layout(t) {
1282
- return t && this.subscribe("components:layout-changed", (e, { node: s }) => {
1283
- s === this.node && t(this.node.attributes.layout);
1284
- }), this.node.attributes.layout;
1285
- }
1286
- writeProperties(t, e) {
1287
- this.node.writeProperties(t, e);
1288
- }
1289
- writeContext(t, e) {
1290
- this.node.writeProperties(t, e);
1291
- }
1292
- writeLayout(t, e) {
1293
- this.node.writeLayout(t, e);
1294
- }
1295
- dispose() {
1296
- this.unsubscribe(), this.actions.dispose();
1297
- }
1298
- }
1299
- class Ne {
1300
- constructor(t, e, s = !0) {
1301
- this.platform = t, this.target = e, this.clearOnDispose = s, this.removes = [], this.actions = new tt(this.platform, this.target);
1302
- }
1303
- writeProperties(t, e) {
1304
- this.removes.push(
1305
- this.platform.write({
1306
- options: e,
1307
- attributes: { properties: t },
1308
- target: this.target,
1309
- removable: this.clearOnDispose
1310
- })
1311
- );
1312
- }
1313
- writeContext(t, e) {
1314
- this.removes.push(
1315
- this.platform.write({
1316
- options: e,
1317
- attributes: { context: t },
1318
- target: this.target,
1319
- removable: this.clearOnDispose
1320
- })
1321
- );
1322
- }
1323
- writeLayout(t, e) {
1324
- this.removes.push(
1325
- this.platform.write({
1326
- options: e,
1327
- attributes: { layout: t },
1328
- target: this.target,
1329
- removable: this.clearOnDispose
1330
- })
1331
- );
1332
- }
1333
- dispose() {
1334
- this.removes.forEach((t) => {
1335
- t();
1336
- }), this.actions.dispose();
1337
- }
1338
- }
1339
- const _e = (n, t, e) => {
1340
- const s = n.concat(), i = (r, o, c) => {
1341
- let u = !0;
1342
- if (s.length) {
1343
- const h = s.shift(), a = (l, p) => (u = !1, i(l, Object.assign({}, o, p), c));
1344
- return Promise.resolve(h(r, a, c)).then((l) => ht(I({}, l), {
1345
- cancelled: u
1346
- }));
1347
- }
1348
- return Promise.resolve({ data: r, cancelled: !1, options: o });
1349
- };
1350
- return i(t, {}, e);
1351
- };
1352
- class tt {
1353
- constructor(t, e, s) {
1354
- this.platform = t, this.target = e, this.ns = s, this.subscriptions = [], this.create = this.create.bind(this);
1355
- }
1356
- create(t, e = () => {
1357
- }) {
1358
- const s = {
1359
- key: t,
1360
- fn: e,
1361
- target: this.target,
1362
- ns: this.ns
1363
- };
1364
- this.platform.actionsState.handlers.push(s);
1365
- const i = () => {
1366
- const r = this.platform.actionsState.handlers.indexOf(s);
1367
- r > -1 && this.platform.actionsState.handlers.splice(r, 1);
1368
- };
1369
- return this.subscriptions.push(i), i;
1370
- }
1371
- dispatch(t, e) {
1372
- const s = this.platform.nodes.all.concat(
1373
- this.platform.nodes.detached
1374
- ), i = {}, r = this.platform.actionsState.handlers.filter(
1375
- (o) => o.key === t && (!o.ns || !this.ns || o.ns === this.ns)
1376
- );
1377
- return Promise.all(
1378
- r.map((o) => {
1379
- const c = s.filter(
1380
- (h) => o.target.match(h) && this.target.match(h)
1381
- ), u = this.platform.actionsState.watchers.filter((h) => h.key === t && (!h.ns || !this.ns || h.ns === this.ns) && c.some((a) => h.target.match(a))).map((h) => h.fn);
1382
- return Promise.all(
1383
- c.map((h) => {
1384
- const a = new Mt(
1385
- this.platform,
1386
- h,
1387
- this.ns
1388
- );
1389
- return _e(u, e, a).then((l) => {
1390
- const { data: p = {}, options: d, cancelled: C } = l;
1391
- return Promise.resolve(
1392
- C ? {} : o.fn(p, d, a)
1393
- ).then((N) => {
1394
- i[h.id] = N;
1395
- });
1396
- });
1397
- })
1398
- );
1399
- })
1400
- ).then(() => i);
1401
- }
1402
- watch(t, e) {
1403
- let s = t, i = this.ns;
1404
- const r = t.split(".");
1405
- r.length > 1 && (i = r[0], s = r.splice(1).join("."));
1406
- const o = {
1407
- fn: e,
1408
- target: this.target,
1409
- key: s,
1410
- ns: i
1411
- };
1412
- this.platform.actionsState.watchers.push(o);
1413
- const c = () => {
1414
- const u = this.platform.actionsState.watchers.indexOf(o);
1415
- u > -1 && this.platform.actionsState.watchers.splice(u, 1);
1416
- };
1417
- return this.subscriptions.push(c), c;
1418
- }
1419
- dispose() {
1420
- this.subscriptions.forEach((t) => t());
1421
- }
1422
- }
1423
- const Ye = _t((n) => {
1424
- n.createCommand("components", (t) => (e) => {
1425
- t.events.subscribeOnce(
1426
- "components:platform-created",
1427
- (s, { platform: i }) => {
1428
- e.handlers && e.handlers.forEach(([r, o]) => {
1429
- i.addComponentHandler(r, o);
1430
- });
1431
- }
1432
- );
1433
- });
1434
- }), T = (n, t, ...e) => typeof t == "string" ? n(`[humany] ${t}`, ...e) : n(t, ...e), R = class {
1435
- constructor() {
1436
- this.keys = [], this.log = (n, ...t) => this.lookup(n, () => R.log(...t)), this.warn = (n, ...t) => this.lookup(n, () => R.warn(...t)), this.error = (n, ...t) => this.lookup(n, () => R.error(...t)), this.info = (n, ...t) => this.lookup(n, () => R.info(...t));
1437
- }
1438
- lookup(n, t) {
1439
- this.keys.indexOf(n) === -1 && (this.keys.push(n), t());
1440
- }
1441
- };
1442
- let P = R;
1443
- P.log = (...n) => T(console.log, ...n);
1444
- P.warn = (...n) => T(console.warn, ...n);
1445
- P.error = (...n) => T(console.error, ...n);
1446
- P.info = (...n) => T(console.info, ...n);
1447
- const k = () => Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);
1448
- function et() {
1449
- return k() + k() + "-" + k() + "-" + k() + "-" + k() + "-" + k() + k() + k();
1450
- }
1451
- class xt {
1452
- constructor(t, e) {
1453
- this.events = t, this.tags = [], this.children = {}, this.changesets = [], this.mountCount = 0, this.id = et(), this.type = e, this.attributes = {
1454
- context: {},
1455
- properties: {},
1456
- layout: {},
1457
- tags: []
1458
- }, this.writeLayout({ size: "full", indent: 0 });
1459
- }
1460
- mount(t, e) {
1461
- let s = t.get("mounted-nodes");
1462
- return s || (s = /* @__PURE__ */ new Map(), t.register("mounted-nodes", s)), s.has(this) ? (process.env.NODE_ENV !== "production" && P.error(
1463
- "Trying to mount an already mounted component node.",
1464
- this
1465
- ), () => {
1466
- }) : (this.events.dispatch("components:node-mounted", { node: this }), this.mountCount === 0 && (this.mountCount = this.mountCount + 1, this.events.dispatch("components:node-enter", { node: this })), () => {
1467
- s.delete(this), this.events.dispatch("components:node-unmounted", { node: this }), this.mountCount = this.mountCount - 1, this.mountCount === 0 && this.events.dispatch("components:node-exit", { node: this });
1468
- });
1469
- }
1470
- appendChild(t, e = "default") {
1471
- if (t.parent) {
1472
- if (t.parent === this)
1473
- return;
1474
- t.parent.removeChild(t);
1475
- }
1476
- t.parent = this, this.children[e] || (this.children[e] = []), this.children[e].push(t), this.events.dispatch("components:node-appended", { node: t });
1477
- }
1478
- prependChild(t, e = "default") {
1479
- if (t.parent) {
1480
- if (t.parent === this)
1481
- return;
1482
- t.parent.removeChild(t);
1483
- }
1484
- t.parent = this, this.children[e] || (this.children[e] = []), this.children[e].unshift(t), this.events.dispatch("components:node-appended", { node: t });
1485
- }
1486
- touchProperties(t, e = {}, s) {
1487
- const r = [{ properties: t }, e];
1488
- return this.changesets.push(r), this.events.dispatch("components:set-properties", { node: this }), () => {
1489
- if (s) {
1490
- const o = this.changesets.indexOf(r);
1491
- o > -1 && (this.changesets.splice(o, 1), this.events.dispatch("components:set-properties", { node: this }));
1492
- }
1493
- };
1494
- }
1495
- writeProperties(t, e = {}, s) {
1496
- const r = [{ properties: t }, e];
1497
- return this.changesets.push(r), this.events.dispatch("components:set-properties", { node: this }), () => {
1498
- if (s) {
1499
- const o = this.changesets.indexOf(r);
1500
- o > -1 && (this.changesets.splice(o, 1), this.events.dispatch("components:set-properties", { node: this }));
1501
- }
1502
- };
1503
- }
1504
- writeLayout(t, e = {}, s) {
1505
- const r = [{ layout: t }, e];
1506
- return this.changesets.push(r), this.events.dispatch("components:set-layout", { node: this }), () => {
1507
- if (!s)
1508
- return;
1509
- const o = this.changesets.indexOf(r);
1510
- o > -1 && (this.changesets.splice(o, 1), this.events.dispatch("components:set-layout", { node: this }));
1511
- };
1512
- }
1513
- writeContext(t, e = {}, s) {
1514
- const r = [{ context: t }, e];
1515
- return this.changesets.push(r), this.events.dispatch("components:set-context", { node: this }), () => {
1516
- if (!s)
1517
- return;
1518
- const o = this.changesets.indexOf(r);
1519
- o > -1 && (this.changesets.splice(o, 1), this.events.dispatch("components:set-context", { node: this }));
1520
- };
1521
- }
1522
- getChildren(t = "default") {
1523
- const e = this.children[t] || [];
1524
- return e.reduce((s, i, r) => {
1525
- const { order: o = r } = i.attributes.layout;
1526
- return s[o] ? s.splice(o, 0, i) : s[o] = i, s;
1527
- }, Array(e.length));
1528
- }
1529
- remove() {
1530
- this.parent && this.parent.removeChild(this);
1531
- }
1532
- removeChild(t) {
1533
- Object.keys(this.children).forEach((e) => {
1534
- const s = this.children[e], i = s.indexOf(t);
1535
- i > -1 && (s.splice(i, 1), this.events.dispatch("components:node-removed", {
1536
- node: t,
1537
- parentNode: this
1538
- }));
1539
- }), delete t.parent;
1540
- }
1541
- }
1542
- const zt = (n, t, e) => {
1543
- for (let s = 0, i = n.length; s < i && e(n[s]) !== !0; s++) {
1544
- const r = t[n[s].id] || "default", o = n[s].getChildren(r);
1545
- zt(o, t, e);
1546
- }
1547
- }, st = (n, t, e) => {
1548
- if (e(n) !== !0) {
1549
- const s = t[n.id] || "default", i = n.children[s];
1550
- zt(i, t, e);
1551
- }
1552
- }, B = (n, t) => {
1553
- const e = [];
1554
- return st(n, t, (s) => {
1555
- e.push(s);
1556
- }), e;
1557
- }, Re = (n, t, e) => {
1558
- let s;
1559
- return st(n, t, (i) => {
1560
- if (e(i))
1561
- return s = i, !0;
1562
- }), s;
1563
- };
1564
- class De {
1565
- constructor(t, e, s) {
1566
- this.root = t, this.switches = e, this.all = [], this.visible = [], this.detached = [], s.subscribe(
1567
- "components:node-appended",
1568
- (i, r) => {
1569
- this.all.push(r.node), this.visible = B(t, e);
1570
- }
1571
- ), s.subscribe(
1572
- "components:node-removed",
1573
- (i, r) => {
1574
- let o = this.all.indexOf(r.node);
1575
- o > -1 && this.all.splice(o, 1), o = this.visible.indexOf(r.node), o > -1 && this.visible.splice(o, 1), this.visible = B(t, e);
1576
- }
1577
- ), s.subscribe(
1578
- "components:node-switched",
1579
- (i, r) => {
1580
- this.visible = B(t, e);
1581
- }
1582
- );
1583
- }
1584
- query(t = {}) {
1585
- const e = [];
1586
- return st(this.root, this.switches, (s) => {
1587
- Object.keys(t).every((r) => t[r] === s[r]) && e.push(s);
1588
- }), e;
1589
- }
1590
- get(t) {
1591
- return Re(this.root, this.switches, (e) => e.id === t) || this.detached.find((e) => e.id === t);
1592
- }
1593
- }
1594
- class Ie {
1595
- constructor() {
1596
- this.handlers = /* @__PURE__ */ new Map();
1597
- }
1598
- add(t, e) {
1599
- this.handlers.set(t, e);
1600
- }
1601
- get(t) {
1602
- return this.handlers.get(t);
1603
- }
1604
- }
1605
- const Le = (n) => {
1606
- let t = n, e = 0;
1607
- for (; t.parent; )
1608
- e = e + 1, t = t.parent;
1609
- return e;
1610
- }, Me = (n) => n.map(([e, s]) => [Le(e), e, s]).sort(([e], [s]) => e - s).map(([, e, s]) => [e, s]), Q = (n) => n instanceof Date ? !1 : n && typeof n == "object" && !Array.isArray(n), w = (n, ...t) => {
1611
- if (!t.length)
1612
- return n;
1613
- const e = t.shift();
1614
- if (Q(n) && Q(e))
1615
- for (const s in e)
1616
- Q(e[s]) ? (n[s] || Object.assign(n, { [s]: {} }), w(n[s], e[s])) : Object.assign(n, { [s]: e[s] });
1617
- return w(n, ...t);
1618
- }, ze = (n, t) => !n || n === "all" ? !0 : n.some((e) => t.indexOf(e) > -1), Se = (n, t) => {
1619
- let e = [], s = [], i;
1620
- const r = () => {
1621
- process.env.NODE_ENV !== "production" && console.time("state-processor.flush");
1622
- const c = /* @__PURE__ */ new Map(), u = Me(e.map((a, l) => [a, s[l]])), h = (a, l) => {
1623
- var ot;
1624
- const p = c.get(a) || {}, d = l.context && !p.context, C = l.properties && !p.properties, N = l.layout && !p.layout;
1625
- c.set(a, {
1626
- context: p.context || d,
1627
- properties: p.properties || C,
1628
- layout: p.layout || N
1629
- }), C && (a.attributes.properties = {}), N && (a.attributes.layout = {}), d && (a.attributes.context = w({}, (ot = a.parent) == null ? void 0 : ot.attributes.context));
1630
- const nt = [], it = [], rt = [];
1631
- if (a.changesets.forEach((y) => {
1632
- const [f, V] = y;
1633
- ze(V.breakpoints, n.breakpoints) && (C && (typeof f.properties == "function" ? nt.push(
1634
- f.properties
1635
- ) : w(a.attributes.properties, f.properties)), N && (typeof f.layout == "function" ? it.push(f.layout) : w(a.attributes.layout, f.layout)), d && (typeof f.context == "function" ? rt.push(f.context) : w(a.attributes.context, f.context)));
1636
- }), nt.forEach((y) => {
1637
- w(a.attributes.properties, y(a.attributes.properties));
1638
- }), it.forEach((y) => {
1639
- w(a.attributes.layout, y(a.attributes.layout));
1640
- }), rt.forEach((y) => {
1641
- w(a.attributes.context, y(a.attributes.context));
1642
- }), d || l.recursive) {
1643
- const y = n.getBranch(a), f = l.recursive ? l : {
1644
- context: !!d
1645
- };
1646
- a.getChildren(y).forEach((V) => {
1647
- h(V, f);
1648
- });
1649
- }
1650
- };
1651
- process.env.NODE_ENV !== "production" && console.timeEnd("state-processor.flush"), u.forEach(([a, l]) => {
1652
- h(a, l);
1653
- }), e = [], s = [], t(c);
1654
- }, o = () => {
1655
- clearTimeout(i), i = setTimeout(r, 0);
1656
- };
1657
- return (c, u) => {
1658
- const h = e.indexOf(c);
1659
- if (h > -1) {
1660
- const a = s[h];
1661
- return u.context && (a.context = !0), u.properties && (a.properties = !0), u.layout && (a.layout = !0), u.recursive && (a.recursive = !0), o();
1662
- }
1663
- return e.push(c), s.push(u), o();
1664
- };
1665
- };
1666
- class Te {
1667
- constructor(t, e = {}) {
1668
- this.providers = e, this.breakpoints = [], this.actionsState = { handlers: [], watchers: [] }, this.switches = {}, this.changesets = [], this.subscriptions = [], this.customComponentHandler = new Ie(), this.events = t.events.createChild(this);
1669
- const s = new xt(this.events, "root");
1670
- s.name = `root-${t.name}`, this.nodes = new De(s, this.switches, this.events);
1671
- const i = this.processNode = Se(
1672
- this,
1673
- (r) => {
1674
- const o = Array.from(r.keys());
1675
- process.env.NODE_ENV !== "production" && console.info(`STATE PROCESSOR: ${o.length} node(s) processed:
1676
- ${o.map(
1677
- (c) => `${c.name || "<no name>"} (${c.id})
1678
- `
1679
- )}`), o.forEach((c) => {
1680
- const u = r.get(c);
1681
- c.parent && c.parent.type === "root" && this.events.dispatch("components:root-children-changed", { node: c }), u != null && u.context && this.events.dispatch("components:context-changed", { node: c }), u != null && u.properties && this.events.dispatch("components:properties-changed", { node: c }), u != null && u.layout && this.events.dispatch("components:layout-changed", { node: c });
1682
- }), this.events.dispatch(
1683
- "components:component-model-initialized",
1684
- {},
1685
- { bubbles: !0 }
1686
- );
1687
- }
1688
- );
1689
- Promise.all(
1690
- Object.keys(e).map((r) => e[r].load(this))
1691
- ), this.subscriptions.push(
1692
- this.events.subscribe(
1693
- "components:node-appended",
1694
- (r, o) => {
1695
- const { node: c } = o;
1696
- this.changesets.forEach((u) => {
1697
- const { changeset: h, target: a, removes: l } = u, [p, d] = h;
1698
- a.match(o.node) && (p.properties && l.push(c.writeProperties(p.properties, d)), p.context && l.push(c.writeContext(p.context, d)), p.layout && l.push(c.writeLayout(p.layout, d)));
1699
- });
1700
- }
1701
- )
1702
- ), this.subscriptions.push(
1703
- this.events.subscribe(
1704
- "components:node-appended",
1705
- (r, o) => {
1706
- i(o.node, { properties: !0, context: !0 });
1707
- }
1708
- )
1709
- ), this.subscriptions.push(
1710
- this.events.subscribe(
1711
- "components:set-properties",
1712
- (r, o) => {
1713
- i(o.node, { properties: !0 });
1714
- }
1715
- )
1716
- ), this.subscriptions.push(
1717
- this.events.subscribe(
1718
- "components:set-context",
1719
- (r, o) => {
1720
- i(o.node, { properties: !0, context: !0 });
1721
- }
1722
- )
1723
- ), this.subscriptions.push(
1724
- this.events.subscribe(
1725
- "components:set-indent",
1726
- (r, o) => {
1727
- i(o.node, { layout: !0 });
1728
- }
1729
- )
1730
- ), this.subscriptions.push(
1731
- this.events.subscribe(
1732
- "components:set-layout",
1733
- (r, o) => {
1734
- i(o.node, { layout: !0 });
1735
- }
1736
- )
1737
- ), this.subscriptions.push(
1738
- this.events.subscribe(
1739
- "components:node-switched",
1740
- (r, { node: o, branch: c }) => {
1741
- i(o, {
1742
- layout: !0,
1743
- recursive: !0,
1744
- properties: !0,
1745
- context: !0
1746
- });
1747
- }
1748
- )
1749
- ), this.subscriptions.push(
1750
- this.events.subscribe(
1751
- "components:node-removed",
1752
- (r, { parentNode: o }) => {
1753
- i(o, { properties: !0 });
1754
- }
1755
- )
1756
- ), this.events.parent && this.events.parent.dispatch("components:platform-created", {
1757
- platform: this
1758
- });
1759
- }
1760
- static getInstance(t) {
1761
- return t.getAsync("components");
1762
- }
1763
- addBreakpoint(t) {
1764
- this.breakpoints.indexOf(t) === -1 && (this.breakpoints.push(t), this.processNode(this.nodes.root, {
1765
- context: !0,
1766
- properties: !0,
1767
- layout: !0,
1768
- recursive: !0
1769
- }));
1770
- }
1771
- removeBreakpoint(t) {
1772
- const e = this.breakpoints.indexOf(t);
1773
- e > -1 && (this.breakpoints.splice(e, 1), this.processNode(this.nodes.root, {
1774
- context: !0,
1775
- properties: !0,
1776
- layout: !0,
1777
- recursive: !0
1778
- }));
1779
- }
1780
- setSwitch(t, e) {
1781
- this.switches[t.id] = e, this.events.dispatch("components:node-switched", { node: t, branch: e });
1782
- }
1783
- getBranch(t) {
1784
- return this.switches[t.id];
1785
- }
1786
- /**
1787
- * Creates a `ComponentNode` of the specified type.
1788
- * @param type Type of node.
1789
- */
1790
- createNode(t, e = {}) {
1791
- const s = new xt(this.events, t);
1792
- return e.detached && this.nodes.detached.push(s), s;
1793
- }
1794
- components() {
1795
- return new Z(this);
1796
- }
1797
- actions(t, e) {
1798
- return new tt(this, t, e);
1799
- }
1800
- write(t) {
1801
- const {
1802
- provider: e,
1803
- target: s,
1804
- attributes: i,
1805
- options: r = {},
1806
- removable: o
1807
- } = t, c = t.key || et(), h = { changeset: [i, r], target: s, removes: [] };
1808
- if (e) {
1809
- const a = this.providers[e];
1810
- a.write(c, s, i, r), h.removes.push(() => {
1811
- a.remove(c);
1812
- });
1813
- }
1814
- return this.changesets.push(h), this.nodes.all.forEach((a) => {
1815
- if (s.match(a)) {
1816
- let l = () => {
1817
- };
1818
- i.properties && (l = a.writeProperties(
1819
- i.properties,
1820
- r,
1821
- o
1822
- )), i.context && (l = a.writeContext(i.context, r, o)), i.layout && (l = a.writeContext(i.layout, r, o)), h.removes.push(l);
1823
- }
1824
- }), () => {
1825
- if (o) {
1826
- h.removes.forEach((l) => l());
1827
- const a = this.changesets.indexOf(h);
1828
- a > -1 && this.changesets.splice(a, 1);
1829
- }
1830
- };
1831
- }
1832
- addComponentHandler(t, e) {
1833
- this.customComponentHandler.add(t, e);
1834
- }
1835
- getComponentHandler(t) {
1836
- return this.customComponentHandler.get(t);
1837
- }
1838
- dispose() {
1839
- this.subscriptions.forEach((t) => t());
1840
- }
1841
- }
1842
- const Ve = (n) => {
1843
- if (Array.isArray(n)) {
1844
- const [t, ...e] = n;
1845
- return {
1846
- definitionId: t,
1847
- overrides: e
1848
- };
1849
- }
1850
- return {
1851
- definitionId: n,
1852
- overrides: []
1853
- };
1854
- }, Y = (n, t, e, s, i, r) => {
1855
- e.forEach((o) => {
1856
- const c = Ve(o), u = s[c.definitionId];
1857
- if (c.definitionId === "view") {
1858
- const h = n.createNode("view");
1859
- h.name = "view", Object.keys(i).forEach((a) => {
1860
- const l = i[a];
1861
- Y(n, h, [l.entry], s, i, a);
1862
- }), t.appendChild(h), c.overrides.forEach((a) => {
1863
- a.properties && h.writeProperties(a.properties, {
1864
- breakpoints: a.breakpoints
1865
- }), a.context && h.writeContext(a.context, { breakpoints: a.breakpoints }), a.layout && h.writeLayout(a.layout, { breakpoints: a.breakpoints });
1866
- });
1867
- } else if (n.getComponentHandler(u.type)) {
1868
- const h = n.getComponentHandler(u.type);
1869
- h && h(c, {
1870
- platform: n,
1871
- node: t,
1872
- references: e,
1873
- definitions: s,
1874
- views: i,
1875
- branch: r
1876
- });
1877
- } else {
1878
- const h = s[c.definitionId];
1879
- if (process.env.NODE_ENV !== "production" && !h) {
1880
- P.error(
1881
- `No definition found for component type '${c.definitionId}'.`
1882
- );
1883
- return;
1884
- }
1885
- const a = n.createNode(h.type);
1886
- a.name = c.definitionId, a.tags = h.tags || [], h.properties && a.writeProperties(h.properties), h.context && a.writeContext(h.context), h.layout && a.writeLayout(h.layout), t.appendChild(a, r), c.overrides.forEach((l) => {
1887
- const p = { breakpoints: l.breakpoints };
1888
- l.properties && a.writeProperties(l.properties, p), l.context && a.writeContext(l.context, p), l.layout && a.writeLayout(l.layout, p);
1889
- }), h.children && Y(n, a, h.children, s, i);
1890
- }
1891
- });
1892
- }, Ue = (n, t) => {
1893
- const { entry: e, components: s, breakpoints: i, views: r } = t, o = [];
1894
- return Object.keys(i).forEach((c) => {
1895
- const u = i[c], h = window.matchMedia(u);
1896
- h.matches && n.breakpoints.push(c);
1897
- const a = (l) => {
1898
- l.matches ? n.addBreakpoint(c) : n.removeBreakpoint(c);
1899
- };
1900
- h.addListener(a), o.push(() => h.removeListener(a));
1901
- }), Y(n, n.nodes.root, [e], s, r), () => o.forEach((c) => {
1902
- c();
1903
- });
1904
- }, Ge = (n, t) => ({
1905
- id: n.id,
1906
- type: n.type,
1907
- name: n.name,
1908
- branch: t || "default"
1909
- }), Ke = (n, t, e, s = et(), i = {}) => n.getAsync("components").then((r) => {
1910
- let o;
1911
- if (typeof t == "string") {
1912
- const h = new Z(r);
1913
- h.ofType(t), o = h;
1914
- } else
1915
- o = t;
1916
- const c = {}, u = (h) => {
1917
- const a = c[h.id];
1918
- return a ? Promise.resolve(a.controller) : Te.getInstance(n).then((l) => new Mt(l, h, s));
1919
- };
1920
- r.events.subscribe(
1921
- "components:node-enter",
1922
- (h, { node: a }) => {
1923
- o.match(a) && u(a).then((l) => {
1924
- Promise.resolve(e(l)).then((p) => {
1925
- c[a.id] = {
1926
- dispose: p,
1927
- controller: l
1928
- };
1929
- });
1930
- });
1931
- }
1932
- ), r.events.subscribe(
1933
- "components:node-exit",
1934
- (h, { node: a }) => {
1935
- const l = c[a.id];
1936
- l && (l.dispose && l.dispose(), i.reuseController || (l.controller.dispose(), delete c[a.id]));
1937
- }
1938
- );
1939
- });
1940
- class Je {
1941
- constructor(t) {
1942
- this.aliases = /* @__PURE__ */ new Map(), this.components = /* @__PURE__ */ new Map(), this.logger = new P();
1943
- const { events: e } = t.get("$widget");
1944
- this.events = e;
1945
- }
1946
- getComponent(t) {
1947
- const e = this.aliases.get(t), s = this.components.get(e || t) || null;
1948
- return process.env.NODE_ENV !== "production" && (s || this.logger.warn(
1949
- e || t,
1950
- `Unable to resolve component: "${e || t}". You most likely forgot to register the required plugin for: ${e || t}.`
1951
- )), s;
1952
- }
1953
- registerComponent(t, e) {
1954
- return this.components.set(t, e), this.events.dispatch("component-resolver:resolve", t), () => {
1955
- this.components.delete(t);
1956
- };
1957
- }
1958
- registerResolver(t, e) {
1959
- return this.events.subscribe(
1960
- "component-resolver:resolve",
1961
- (s, i) => {
1962
- if (i === t) {
1963
- const r = this.getComponent(t);
1964
- e(r);
1965
- }
1966
- }
1967
- );
1968
- }
1969
- registerAlias(t, e) {
1970
- return this.aliases.set(t, e), this.events.dispatch("component-resolver:resolve", t), () => {
1971
- this.aliases.delete(t);
1972
- };
1973
- }
1974
- }
1975
- const je = "#____version____#", St = class Tt extends Lt {
1976
- constructor(t, e = []) {
1977
- super(t, e, {
1978
- transformPluginSettings: (s, i, r) => {
1979
- const o = r.get("$settings"), c = o.plugins && i ? o.plugins[i] || {} : {};
1980
- return I(I({}, c), s);
1981
- }
1982
- });
1983
- }
1984
- createImplementation(t) {
1985
- const e = super.createImplementation(t);
1986
- return e.bindings = t.bindings, e;
1987
- }
1988
- /**
1989
- * Performs navigation for widgets matching the specified selector by invoking a
1990
- * 'navigate' command.
1991
- * @param selector Widget selector matching the widget(s) to perform navigation on.
1992
- * @param route Route name.
1993
- * @param params Route params.
1994
- */
1995
- navigate(t, e, s) {
1996
- this.widgets.query(t).forEach((i) => i.invoke("navigate", { route: e, params: s }));
1997
- }
1998
- /**
1999
- * Creates a runtime based on provided configuration.
2000
- * @param configuration Runtime configuration.
2001
- */
2002
- static create(t = {}) {
2003
- const e = [ne].concat(
2004
- t.configurationApiExtensions || []
2005
- );
2006
- return new Tt("humany", e);
2007
- }
2008
- /**
2009
- * Creates a widget runtime based on provided configuration and retains configuration handlers
2010
- * registered on global context. Use this factory to fully support the default embed script.
2011
- * Will return any existing widget runtime if available.
2012
- * @param configuration Runtime configuration.
2013
- * @param global Object to read configuration handlers from (default: window).
2014
- */
2015
- static createFromGlobal(t, e = {}) {
2016
- if (this.isRuntime(t))
2017
- return t.patch(e), t;
2018
- const s = [], i = t && t._c;
2019
- i && i.forEach(
2020
- (o) => s.push(o)
2021
- );
2022
- const r = this.create(e);
2023
- return r.container.register("$runtimecfg", s), r;
2024
- }
2025
- /**
2026
- * Determines whether the specified object is a valid widget runtime.
2027
- * @param obj Object to compare.
2028
- */
2029
- static isRuntime(t) {
2030
- return !!(t && typeof t == "object" && t.container && typeof t.container.get == "function" && t.container.get("$environment") === t && t.container.owner === t);
2031
- }
2032
- };
2033
- St.version = `${je} (${X})`;
2034
- let Xe = St;
2035
- class Ze extends Rt {
2036
- constructor() {
2037
- super(...arguments), this.bindings = [];
2038
- }
2039
- }
2040
- class ts extends ge {
2041
- constructor(t, e) {
2042
- super(t, e);
2043
- }
2044
- }
2045
- var qe = /* @__PURE__ */ ((n) => (n.open = "open", n.closed = "closed", n.hidden = "hidden", n))(qe || {});
2046
- class es extends Ee {
2047
- constructor(t) {
2048
- super(t);
2049
- }
2050
- }
2051
- export {
2052
- He as ActionResolver,
2053
- tt as ActionsController,
2054
- xt as ComponentNode,
2055
- Mt as ComponentNodeController,
2056
- Te as ComponentPlatform,
2057
- Z as ComponentQuery,
2058
- Je as ComponentResolver,
2059
- Xe as Environment,
2060
- Ze as Implementation,
2061
- ts as Plugin,
2062
- qe as WidgetRenderState,
2063
- es as WidgetType,
2064
- Ge as asDescriptor,
2065
- Qe as bootstrap,
2066
- Ye as componentConfigurationApi,
2067
- Y as createChildren,
2068
- Ue as createComponentModel,
2069
- Ae as createEventSubscriber,
2070
- Ke as extendComponent,
2071
- Re as findComponent,
2072
- B as findVisibleComponents,
2073
- st as traverseComponents,
2074
- je as version
2075
- };
2076
- //# sourceMappingURL=index.js.map