@telia-ace/widget-types-grid 1.0.25-next.13 → 1.0.25-next.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -22,10 +22,10 @@ var N = (t, n) => {
22
22
  var $ = (t, n, e) => (Z(t, typeof n != "symbol" ? n + "" : n, e), e);
23
23
  import { css as de, ThemeProvider as Oe, useTheme as Se } from "@emotion/react";
24
24
  import { asDescriptor as ce, ComponentPlatform as Ae, createComponentModel as xe, ComponentQuery as De, WidgetRenderState as O } from "@telia-ace/widget-core";
25
- import { Grid as he, useRouteData as Me, useRouter as Ne, useProperties as pe, useContext as ne, useContainer as T, useComponentNode as ie, useScroll as me, transitionComposer as Le, paddedBorderTabStyle as $e, useComponent as ke, useComponentDescriptor as Pe, filterCssPropsStyle as Re, Typography as Ve, useComponentPlatform as fe, useIsMounted as _e, useColumns as Ie, useLayout as ze, ComponentNodeContext as Be, ComponentPropertyContext as je, filterCssProps as Te } from "@telia-ace/widget-ui";
26
- import d, { useState as B, forwardRef as ge, useMemo as Ge, Suspense as He, useEffect as j } from "react";
25
+ import { Grid as he, useRouteData as Me, useRouter as Ne, useProperties as pe, useContext as ne, useContainer as j, useComponentNode as ie, useScroll as me, transitionComposer as Le, paddedBorderTabStyle as $e, useComponent as ke, useComponentDescriptor as Pe, filterCssPropsStyle as Re, Typography as Ve, useComponentPlatform as fe, useIsMounted as _e, useColumns as Ie, useLayout as ze, ComponentNodeContext as Be, ComponentPropertyContext as Te, filterCssProps as je } from "@telia-ace/widget-ui";
26
+ import d, { useState as B, forwardRef as ge, useMemo as Ge, Suspense as We, useEffect as T } from "react";
27
27
  import P from "@emotion/styled";
28
- import { appendClassNames as Y, notifyDataLoaded as We, lock as J, removeNullAndUndefinedValues as le, uuid as Fe } from "@telia-ace/widget-utilities";
28
+ import { appendClassNames as Y, notifyDataLoaded as He, lock as J, removeNullAndUndefinedValues as le, uuid as Fe } from "@telia-ace/widget-utilities";
29
29
  import { TransitionGroup as Ke, Transition as Ue } from "react-transition-group";
30
30
  import { Switch as Ye, Route as X } from "react-router";
31
31
  import { onWidgetUrl as qe } from "@telia-ace/widget-routing";
@@ -76,10 +76,10 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
76
76
  conversation: 7
77
77
  }, st = (e) => {
78
78
  var i = e, { className: t = "" } = i, n = N(i, ["className"]);
79
- const [s, o] = B("index"), [r, a] = B(te.forth), c = Me(), h = Ne(), l = pe(), u = ne(), p = T(), f = ie(), { gap: w = "0" } = u, W = l, { columns: y = 1, animation: g = "none", scrollable: b = !1 } = W, S = N(W, ["columns", "animation", "scrollable"]), [G, R] = me(b);
79
+ const [s, o] = B("index"), [r, a] = B(te.forth), c = Me(), h = Ne(), u = pe(), l = ne(), p = j(), f = ie(), { gap: w = "0" } = l, H = u, { columns: y = 1, animation: g = "none", scrollable: b = !1 } = H, S = N(H, ["columns", "animation", "scrollable"]), [G, R] = me(b);
80
80
  if (!f || !h)
81
81
  return null;
82
- const { location: H } = h;
82
+ const { location: W } = h;
83
83
  c.name !== s && c.name !== "" && g && (a(et(s, c.name, it)), o(c.name));
84
84
  const { views: x } = p.get("$settings");
85
85
  if (!Object.keys(x).length)
@@ -121,18 +121,18 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
121
121
  direction: te.forth
122
122
  }, (v, { direction: M }) => /* @__PURE__ */ d.createElement(ye, {
123
123
  views: x,
124
- location: H,
124
+ location: W,
125
125
  render: (V) => D(V, v, M)
126
126
  }))));
127
127
  }, ot = P(he)`
128
128
  ${(t) => !!t.scrollableCss && t.scrollableCss}
129
129
  `, rt = (e) => {
130
130
  var i = e, { className: t = "" } = i, n = N(i, ["className"]);
131
- const s = pe(), o = ne(), r = T(), a = ie(), { views: c } = r.get("$settings"), { gap: h = "0" } = o, g = s, { columns: l = 1, animation: u = "none", scrollable: p = !1 } = g, f = N(g, ["columns", "animation", "scrollable"]), [w, y] = me(p);
131
+ const s = pe(), o = ne(), r = j(), a = ie(), { views: c } = r.get("$settings"), { gap: h = "0" } = o, g = s, { columns: u = 1, animation: l = "none", scrollable: p = !1 } = g, f = N(g, ["columns", "animation", "scrollable"]), [w, y] = me(p);
132
132
  return a ? /* @__PURE__ */ d.createElement(ot, C(m(m({}, n), f), {
133
133
  scrollableCss: w,
134
134
  ref: y,
135
- columns: l,
135
+ columns: u,
136
136
  gap: h,
137
137
  className: Y(t, "humany-view")
138
138
  }), /* @__PURE__ */ d.createElement(ye, {
@@ -192,18 +192,18 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
192
192
  `, ut = ge(
193
193
  (s, i) => {
194
194
  var o = s, { className: t = "", children: n } = o, e = N(o, ["className", "children"]);
195
- const r = ke(), { name: a, type: c, id: h } = Pe(), l = Ge(() => r ? P(r)`
195
+ const r = ke(), { name: a, type: c, id: h } = Pe(), u = Ge(() => r ? P(r)`
196
196
  ${q}
197
197
  ${Re}
198
198
  ` : null, [r]);
199
- return typeof r == "undefined" ? null : r === null || l === null ? process.env.NODE_ENV !== "production" ? /* @__PURE__ */ d.createElement(lt, C(m({}, e), {
199
+ return typeof r == "undefined" ? null : r === null || u === null ? process.env.NODE_ENV !== "production" ? /* @__PURE__ */ d.createElement(lt, C(m({}, e), {
200
200
  title: `type: ${c}, definition-id: ${a}, instance-id: ${h}`,
201
201
  className: Y(t, "humany-non-resolved-component")
202
202
  }), /* @__PURE__ */ d.createElement(Ve, {
203
203
  variant: "h5"
204
- }, "Non Resolved Component Type")) : null : /* @__PURE__ */ d.createElement(He, {
204
+ }, "Non Resolved Component Type")) : null : /* @__PURE__ */ d.createElement(We, {
205
205
  fallback: null
206
- }, /* @__PURE__ */ d.createElement(l, C(m({
206
+ }, /* @__PURE__ */ d.createElement(u, C(m({
207
207
  ref: i
208
208
  }, e), {
209
209
  className: Y(
@@ -215,9 +215,9 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
215
215
  }
216
216
  ), dt = (t) => {
217
217
  const n = ie(t), e = fe(), [i, s] = B({}), o = _e();
218
- return j(() => {
218
+ return T(() => {
219
219
  n && o.current && s(n.attributes.properties);
220
- }, [n, t, o]), j(() => {
220
+ }, [n, t, o]), T(() => {
221
221
  if (e) {
222
222
  const r = e.events.subscribe(
223
223
  "components:properties-changed",
@@ -232,12 +232,12 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
232
232
  }, [e, o, t, n]), i;
233
233
  }, ht = (t, n) => n ? !0 : typeof t == "string" ? t === "full" : t > 0, se = ge(
234
234
  (h, c) => {
235
- var l = h, { className: t = "", id: n, branch: e, node: i, ariaLabel: s, tabIndex: o, context: r } = l, a = N(l, ["className", "id", "branch", "node", "ariaLabel", "tabIndex", "context"]);
236
- const u = fe(), p = T(), [f, w] = B(), y = Ie(), g = ne(n), b = dt(n), { size: S = "none", indent: G = 0 } = ze(n), R = ht(S, i);
237
- if (j(() => {
238
- if (u) {
235
+ var u = h, { className: t = "", id: n, branch: e, node: i, ariaLabel: s, tabIndex: o, context: r } = u, a = N(u, ["className", "id", "branch", "node", "ariaLabel", "tabIndex", "context"]);
236
+ const l = fe(), p = j(), [f, w] = B(), y = Ie(), g = ne(n), b = dt(n), { size: S = "none", indent: G = 0 } = ze(n), R = ht(S, i);
237
+ if (T(() => {
238
+ if (l) {
239
239
  if (n && !i) {
240
- const A = u.nodes.get(n);
240
+ const A = l.nodes.get(n);
241
241
  if (A && (w(ce(A, e)), R)) {
242
242
  const z = A.mount(p);
243
243
  return () => {
@@ -252,13 +252,13 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
252
252
  };
253
253
  }
254
254
  }
255
- }, [u, n, i, R]), !f || !R)
255
+ }, [l, n, i, R]), !f || !R)
256
256
  return null;
257
257
  const V = m(m({}, g), r || {}), {
258
258
  cardinal: x,
259
259
  fonts: D = {},
260
260
  accessibility: Q = {}
261
- } = V, W = N(V, [
261
+ } = V, H = N(V, [
262
262
  "cardinal",
263
263
  "fonts",
264
264
  "accessibility"
@@ -270,7 +270,7 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
270
270
  medium: D.medium || "1.2em",
271
271
  large: D.large || "1.6em",
272
272
  huge: D.huge || "2.5em"
273
- }, M = C(m({}, W), {
273
+ }, M = C(m({}, H), {
274
274
  fonts: v,
275
275
  accessibility: m({}, Q)
276
276
  });
@@ -284,7 +284,7 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
284
284
  theme: M
285
285
  }, /* @__PURE__ */ d.createElement(Be.Provider, {
286
286
  value: f
287
- }, /* @__PURE__ */ d.createElement(je.Provider, {
287
+ }, /* @__PURE__ */ d.createElement(Te.Provider, {
288
288
  value: b
289
289
  }, (() => {
290
290
  const A = m({
@@ -306,7 +306,7 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
306
306
  className: t
307
307
  }));
308
308
  default: {
309
- const z = Te(b);
309
+ const z = je(b);
310
310
  return /* @__PURE__ */ d.createElement(ut, C(m(m({
311
311
  ref: c
312
312
  }, A), z), {
@@ -317,12 +317,12 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
317
317
  })())));
318
318
  }
319
319
  ), pt = ({ builder: t }) => {
320
- const n = T(), [e, i] = B(null);
321
- return j(() => {
320
+ const n = j(), [e, i] = B(null);
321
+ return T(() => {
322
322
  n.getAsync("components").then((s) => t(s).then((o) => {
323
323
  i(o);
324
324
  }));
325
- }, []), j(() => () => {
325
+ }, []), T(() => () => {
326
326
  e && n.getAsync("components").then((s) => {
327
327
  s.nodes.detached = s.nodes.detached.filter(
328
328
  (o) => o.id !== e.id
@@ -336,15 +336,15 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
336
336
  }, mt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
337
337
  __proto__: null,
338
338
  default: pt
339
- }, Symbol.toStringTag, { value: "Module" })), ft = d.lazy(() => Promise.resolve().then(() => mt)), Ut = ({ showSearch: t = !1 }) => {
340
- const n = Se(), e = T();
339
+ }, Symbol.toStringTag, { value: "Module" })), ft = d.lazy(() => Promise.resolve().then(() => mt)), Ft = ({ showSearch: t = !1 }) => {
340
+ const n = Se(), e = j();
341
341
  return /* @__PURE__ */ d.createElement(d.Suspense, {
342
342
  fallback: null
343
343
  }, /* @__PURE__ */ d.createElement(ft, {
344
344
  builder: (i) => e.get("settings").then((s) => {
345
345
  var h;
346
346
  const { properties: o, context: r } = Object.keys(s.components).reduce(
347
- (l, u) => (s.components[u].type === "not-found" && (l.properties = s.components[u].properties, l.context = s.components[u].context), l),
347
+ (u, l) => (s.components[l].type === "not-found" && (u.properties = s.components[l].properties, u.context = s.components[l].context), u),
348
348
  { properties: {}, context: {} }
349
349
  );
350
350
  o.showSearch = t;
@@ -352,13 +352,13 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
352
352
  if (a.name = "not-found-area", a.writeLayout({
353
353
  size: "full"
354
354
  }), t) {
355
- const l = Object.keys(s.components).reduce(
355
+ const u = Object.keys(s.components).reduce(
356
356
  (p, f) => s.components[f].type === "search" ? s.components[f].properties : p,
357
357
  {}
358
- ), u = i.createNode("search", { detached: !0 });
359
- u.writeLayout({ size: "full" }), u.writeProperties(m({
358
+ ), l = i.createNode("search", { detached: !0 });
359
+ l.writeLayout({ size: "full" }), l.writeProperties(m({
360
360
  "css-margin-bottom": ((h = n == null ? void 0 : n.sizes) == null ? void 0 : h.normal) || "15px"
361
- }, l)), a.appendChild(u);
361
+ }, u)), a.appendChild(l);
362
362
  }
363
363
  const c = i.createNode("not-found", { detached: !0 });
364
364
  return c.writeLayout({ size: "full" }), c.writeProperties(o), c.writeContext(r), a.appendChild(c), a;
@@ -429,7 +429,7 @@ function be(t, n) {
429
429
  }
430
430
  var k = /* @__PURE__ */ ((t) => (t.Inline = "inline", t.Link = "link", t.Badge = "badge", t.Unsupported = "unsupported", t))(k || {});
431
431
  const Et = (t, n) => t && n ? "both" : t ? "widgetDOM" : n ? "triggerDOM" : "none", we = (t) => t ? typeof t == "boolean" && t ? "link" : typeof t == "object" && !Array.isArray(t) ? "badge" : "unsupported" : "inline", Ct = (t, n, e, i, s = !1) => {
432
- var h, l;
432
+ var h, u;
433
433
  const o = Et(
434
434
  n,
435
435
  e
@@ -448,28 +448,28 @@ const Et = (t, n) => t && n ? "both" : t ? "widgetDOM" : n ? "triggerDOM" : "non
448
448
  }
449
449
  case "widgetDOM": {
450
450
  if (c.widgetDOMElement = n || document.createElement("div"), r !== "inline") {
451
- const u = document.body.appendChild(document.createElement("a"));
452
- r === "link" && (u.innerText = t), c.triggerDOMElement = u;
451
+ const l = document.body.appendChild(document.createElement("a"));
452
+ r === "link" && (l.innerText = t), c.triggerDOMElement = l;
453
453
  }
454
454
  break;
455
455
  }
456
456
  case "triggerDOM": {
457
- const u = document.createElement("div");
458
- c.widgetDOMElement = u, r === "inline" ? (u.id = (e == null ? void 0 : e.id) || "", s ? (u.style.display = "none", (h = e == null ? void 0 : e.parentNode) == null || h.appendChild(u), c.callback = () => {
457
+ const l = document.createElement("div");
458
+ c.widgetDOMElement = l, r === "inline" ? (l.id = (e == null ? void 0 : e.id) || "", s ? (l.style.display = "none", (h = e == null ? void 0 : e.parentNode) == null || h.appendChild(l), c.callback = () => {
459
459
  var p;
460
460
  (p = e == null ? void 0 : e.parentNode) == null || p.replaceChild(
461
- u,
461
+ l,
462
462
  e
463
- ), u.style.display = (e == null ? void 0 : e.style.display) || "block";
464
- }) : (l = e == null ? void 0 : e.parentNode) == null || l.replaceChild(
465
- u,
463
+ ), l.style.display = (e == null ? void 0 : e.style.display) || "block";
464
+ }) : (u = e == null ? void 0 : e.parentNode) == null || u.replaceChild(
465
+ l,
466
466
  e
467
- ), c.cachedOriginals.widgetDOMElement = e, c.cachedOriginals.triggerDOMElement = void 0) : (c.widgetDOMElement = document.body.appendChild(u), c.triggerDOMElement = e);
467
+ ), c.cachedOriginals.widgetDOMElement = e, c.cachedOriginals.triggerDOMElement = void 0) : (c.widgetDOMElement = document.body.appendChild(l), c.triggerDOMElement = e);
468
468
  break;
469
469
  }
470
470
  case "none": {
471
- const u = document.body.appendChild(document.createElement("div"));
472
- if (c.widgetDOMElement = u, r !== "inline") {
471
+ const l = document.body.appendChild(document.createElement("div"));
472
+ if (c.widgetDOMElement = l, r !== "inline") {
473
473
  const p = document.body.appendChild(document.createElement("a"));
474
474
  r === "link" && (p.innerText = t), c.triggerDOMElement = p;
475
475
  }
@@ -493,12 +493,12 @@ class St {
493
493
  }
494
494
  render() {
495
495
  const { widgetDOMElement: n, triggerDOMElement: e } = this.options, i = this.container.get("$widget");
496
- return n.getAttribute("data-rendered") === "true" ? Promise.resolve() : (e && this.options.triggerType === k.Badge && vt(e), import("./render.f2d6da89.js").then((s) => s.default(this.container, n)).then(() => {
496
+ return n.getAttribute("data-rendered") === "true" ? Promise.resolve() : (e && this.options.triggerType === k.Badge && vt(e), import("./render.097b9f73.js").then((s) => s.default(this.container, n)).then(() => {
497
497
  if (n.setAttribute("data-rendered", "true"), e && this.options.triggerType === k.Badge) {
498
498
  const o = this.options.triggerOptions.openTooltip;
499
499
  be(e, o);
500
500
  }
501
- We(this.container, n);
501
+ He(this.container, n);
502
502
  const s = this.container.get("$environment").widgets.all();
503
503
  L(
504
504
  this.container,
@@ -520,14 +520,14 @@ class St {
520
520
  e.getAttribute("role") || e.setAttribute("role", "button");
521
521
  const { name: i } = this.container.get("$widget"), { label: s, symbol: o, ariaLabel: r, closedTooltip: a, openTooltip: c } = n, h = { closedTooltip: a, openTooltip: c };
522
522
  this.options.triggerOptions = h;
523
- const l = bt(e, {
523
+ const u = bt(e, {
524
524
  label: s,
525
525
  symbol: o,
526
526
  ariaLabel: r,
527
527
  widgetName: i,
528
528
  tooltip: a
529
529
  });
530
- this.unsubscribe.push(l);
530
+ this.unsubscribe.push(u);
531
531
  }
532
532
  dispose() {
533
533
  return import("./unmount.b0816844.js").then((n) => {
@@ -612,14 +612,7 @@ const xt = (t) => {
612
612
  c.state === Je.Deactivating && r();
613
613
  }), o;
614
614
  });
615
- }, Dt = (t, n) => () => {
616
- const e = (s) => {
617
- const o = document.createElement("a");
618
- return o.href = s, o;
619
- };
620
- let i = window.location;
621
- return t === "referrer" && document.referrer && (i = e(document.referrer)), [n ? "https:" : "", "//", i.host, i.pathname].join("");
622
- }, Mt = (t) => import("@telia-ace/widget-routing").then(({ RoutingService: n, HistoryMode: e }) => t.get("settings").then((i) => {
615
+ }, Dt = (t) => import("@telia-ace/widget-routing").then(({ RoutingService: n, HistoryMode: e }) => t.get("settings").then((i) => {
623
616
  const {
624
617
  routing: { initialPath: s = "/", mode: o = e.scopedHash, basePath: r },
625
618
  views: a
@@ -633,23 +626,8 @@ const xt = (t) => {
633
626
  })),
634
627
  basePath: r
635
628
  });
636
- })), Nt = (t) => import("@telia-ace/widget-services").then(({ StorageProvider: n }) => new n()), Lt = (t) => import("@telia-ace/knowledge-serviceclient").then(({ ServiceClient: n, ServiceProxy: e }) => t.get("settings").then((i) => {
637
- const { name: s, events: o } = t.get("$widget"), {
638
- data: { projection: r = "", site: a = "current", forceHttps: c = !1 }
639
- } = i, h = new e(r, { credentials: "same-origin" }), l = new n(
640
- h,
641
- {
642
- funnel: s.replace("_contact-method", "").replace("_contact", ""),
643
- site: Dt(a, c)
644
- },
645
- null,
646
- t
647
- );
648
- return o.subscribe("widget:settings-updated", (u, { data: p }) => {
649
- p && p.projection !== r && l.proxy.setBaseUrl(p.projection);
650
- }), l;
651
- })), $t = (t) => import("@telia-ace/widget-core").then(({ ActionResolver: n }) => new n(t)), kt = (t) => import("@telia-ace/widget-core").then(({ ComponentResolver: n }) => new n(t)), Pt = (t) => import("@telia-ace/widget-core").then(({ ComponentPlatform: n, createComponentModel: e }) => xt(t.get("$widget"))), ee = "$settings", U = "open", ue = "activeStickyWidget";
652
- class Yt extends Xe {
629
+ })), Mt = (t) => import("@telia-ace/widget-services").then(({ StorageProvider: n }) => new n()), Nt = (t) => import("@telia-ace/widget-core").then(({ ActionResolver: n }) => new n(t)), Lt = (t) => import("@telia-ace/widget-core").then(({ ComponentResolver: n }) => new n(t)), $t = (t) => import("@telia-ace/widget-core").then(({ ComponentPlatform: n, createComponentModel: e }) => xt(t.get("$widget"))), ee = "$settings", U = "open", ue = "activeStickyWidget";
630
+ class Kt extends Xe {
653
631
  constructor(e) {
654
632
  super(e);
655
633
  $(this, "outlets", /* @__PURE__ */ new Map());
@@ -667,14 +645,14 @@ class Yt extends Xe {
667
645
  ));
668
646
  });
669
647
  });
670
- this.container.registerAsync("storage", () => Nt(this.container)), this.container.registerFactory("settings", () => L(
648
+ this.container.registerAsync("storage", () => Mt(this.container)), this.container.registerFactory("settings", () => L(
671
649
  this.container,
672
650
  ee,
673
651
  E.Local
674
652
  ).then((i = {}) => m(m({}, this.container.get("$settings")), i))), Ze(this, "load", this.handleBootstrapping), this.container.registerAsync(
675
653
  "componentResolver",
676
- () => kt(this.container)
677
- ), this.container.registerAsync("matchingClient", () => Lt(this.container)), this.container.registerAsync("router", () => Mt(this.container)), this.container.registerAsync("actionResolver", () => $t(this.container)), this.container.register("matchMedia", window.matchMedia), this.container.registerAsync("components", () => Pt(this.container));
654
+ () => Lt(this.container)
655
+ ), this.container.registerAsync("router", () => Dt(this.container)), this.container.registerAsync("actionResolver", () => Nt(this.container)), this.container.register("matchMedia", window.matchMedia), this.container.registerAsync("components", () => $t(this.container));
678
656
  }
679
657
  initialize() {
680
658
  const e = this.container.getManyAsync(
@@ -687,21 +665,21 @@ class Yt extends Xe {
687
665
  var h;
688
666
  i.subscribe(
689
667
  this.widget.name,
690
- (l, u, p) => this.onAction(u, p)
668
+ (u, l, p) => this.onAction(l, p)
691
669
  );
692
- const a = (l) => {
693
- o.nodes.query({ type: "view" }).forEach((u) => {
694
- o.setSwitch(u, l);
670
+ const a = (u) => {
671
+ o.nodes.query({ type: "view" }).forEach((l) => {
672
+ o.setSwitch(l, u);
695
673
  });
696
674
  }, c = ((h = s.getInitialRoute()) == null ? void 0 : h.name) || "index";
697
- return a(c), this.events.subscribe("widget:data-loaded", (l, { element: u }) => {
675
+ return a(c), this.events.subscribe("widget:data-loaded", (u, { element: l }) => {
698
676
  this.widget.container.get("seoConfiguration") && this.events.dispatch("widget:preloaded-replaced", {
699
- element: u
677
+ element: l
700
678
  });
701
679
  }), this.events.subscribe(
702
680
  "router:change",
703
- (l, { previous: u = { routeData: {} }, next: p = { routeData: {} } }) => {
704
- const { routeData: f } = u, { routeData: w } = p, y = Object.keys(r.views).reduce((g, b) => typeof r.views[b].path == "undefined" ? b : g, "");
681
+ (u, { previous: l = { routeData: {} }, next: p = { routeData: {} } }) => {
682
+ const { routeData: f } = l, { routeData: w } = p, y = Object.keys(r.views).reduce((g, b) => typeof r.views[b].path == "undefined" ? b : g, "");
705
683
  !w.name && y ? a(y) : a(w.name), le(f && f.params), le(w && w.params), this.container.getAsync("actionResolver").then((g) => {
706
684
  g.action(this.widget.name, "routeChange", {
707
685
  next: w,
@@ -721,7 +699,7 @@ class Yt extends Xe {
721
699
  key: o = Fe(),
722
700
  triggerDOMElement: r,
723
701
  withRenderState: a
724
- } = e, h = we(i) === k.Inline && ((r == null ? void 0 : r.childElementCount) || 0) > 0, l = Ct(
702
+ } = e, h = we(i) === k.Inline && ((r == null ? void 0 : r.childElementCount) || 0) > 0, u = Ct(
725
703
  this.widget.name,
726
704
  s,
727
705
  r,
@@ -729,23 +707,23 @@ class Yt extends Xe {
729
707
  h
730
708
  );
731
709
  this.outlets.size < 1 && !a && this.setRenderState("unset");
732
- const u = () => {
733
- const y = () => g.querySelectorAll("[data-loading=true]").length === 0, [g] = this.widget.container.get("widgetDOMElements"), b = (R, H) => {
734
- y() && (l.callback && l.callback(), H.disconnect());
710
+ const l = () => {
711
+ const y = () => g.querySelectorAll("[data-loading=true]").length === 0, [g] = this.widget.container.get("widgetDOMElements"), b = (R, W) => {
712
+ y() && (u.callback && u.callback(), W.disconnect());
735
713
  }, S = {
736
714
  attributes: !0,
737
715
  subtree: !0,
738
716
  childList: !0
739
717
  };
740
- y() && l.callback && l.callback(), new MutationObserver(b).observe(g, S);
718
+ y() && u.callback && u.callback(), new MutationObserver(b).observe(g, S);
741
719
  };
742
720
  h && this.widget.container.getAsync("dataClient").then(({ events: y }) => {
743
721
  y.subscribe("data-client:fetched", (g, b) => {
744
- b.unresolvedQueries === 0 && u();
722
+ b.unresolvedQueries === 0 && l();
745
723
  });
746
724
  });
747
- const p = this.getOrCreateViewOutlet(o, l);
748
- if (this.outlets.set(o, p), this.widget.events.dispatch("widget:attached", {}, { bubbles: !0 }), l.triggerType === k.Badge && i && ((f = l.triggerDOMElement) == null || f.setAttribute("aria-expanded", "false"), p == null || p.renderBadge(i)), l.triggerType !== k.Inline && ((w = l.triggerDOMElement) == null || w.addEventListener("click", (y) => {
725
+ const p = this.getOrCreateViewOutlet(o, u);
726
+ if (this.outlets.set(o, p), this.widget.events.dispatch("widget:attached", {}, { bubbles: !0 }), u.triggerType === k.Badge && i && ((f = u.triggerDOMElement) == null || f.setAttribute("aria-expanded", "false"), p == null || p.renderBadge(i)), u.triggerType !== k.Inline && ((w = u.triggerDOMElement) == null || w.addEventListener("click", (y) => {
749
727
  y.preventDefault(), this.container.get("settings").then(({ trigger: g }) => {
750
728
  p.render().then(() => this.renderState()).then((b) => g && g.action && g.action === "hide" ? b === O.open ? this.hide() : this.open() : b === O.open ? this.close() : this.open());
751
729
  });
@@ -755,7 +733,7 @@ class Yt extends Xe {
755
733
  });
756
734
  if (a)
757
735
  return a === "storage" ? this.renderState().then((y) => {
758
- if (l.triggerType === k.Inline) {
736
+ if (u.triggerType === k.Inline) {
759
737
  this.triggerStateIfApplicable("open");
760
738
  return;
761
739
  }
@@ -969,9 +947,9 @@ class Yt extends Xe {
969
947
  export {
970
948
  se as Component,
971
949
  pt as DetachedComponent,
972
- Yt as GridWidget,
973
- Ut as NotFound,
974
- Yt as Widget,
950
+ Kt as GridWidget,
951
+ Ft as NotFound,
952
+ Kt as Widget,
975
953
  q as genericComponentStyling
976
954
  };
977
955
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/ui/determine-slide-direction.ts","../src/ui/switch.tsx","../src/ui/animated-view.tsx","../src/ui/view.tsx","../src/ui/styles.ts","../src/ui/resolvable-component.tsx","../src/ui/use-component-node-properties.ts","../src/ui/component.tsx","../src/ui/detached-component.tsx","../src/ui/not-found.tsx","../src/ui/html-element-handlers.ts","../src/ui/prepare-dom.ts","../src/ui/view-outlet.ts","../src/component-platform-factory.ts","../src/site-provider.ts","../src/services.ts","../src/widget.ts"],"sourcesContent":["export enum SlideDirection {\n back = 'back',\n forth = 'forth',\n}\n\nexport interface RouteStructure {\n name: string;\n children: RouteStructure[];\n}\n\n/**\n * Recursively find the parents of a nested route\n * @param routeName Name of route to find\n * @param routes Routes to look in\n * @param trail Trail of parents\n * @param level Level of the array currently looking in\n */\nexport const findParentRoutes = (\n routeName: string,\n routes: RouteStructure[],\n trail: string[] = [],\n level: number = 0\n): string[] | null => {\n let found: any = null;\n\n routes.forEach((route, index) => {\n if (!found) {\n if (route.name === routeName) {\n found = route;\n } else {\n trail[level] = route.name;\n found = findParentRoutes(routeName, route.children, trail, level + 1);\n }\n }\n });\n\n if (!found) {\n return null;\n }\n\n return trail;\n};\n\n/**\n * Determine if the sliding animation should back or forth\n * @param currentRouteName Name of current route\n * @param nextRouteName Name of route to transition to\n * @param routeRanking Hierarchical route ranking for the widget\n */\nexport const determineSlideDirection = (\n currentRouteName: string,\n nextRouteName: string,\n routeRanking: RouteRanking\n): SlideDirection => {\n if (\n typeof routeRanking[currentRouteName] === 'number' &&\n typeof routeRanking[nextRouteName] === 'number' &&\n routeRanking[currentRouteName] > routeRanking[nextRouteName]\n ) {\n return SlideDirection.back;\n }\n return SlideDirection.forth;\n};\n\nexport type RouteRanking = { [key: string]: number };\n","import { ViewDefinition } from '@telia-ace/widget-core';\nimport React from 'react';\nimport { Route, Switch as RouteSwitch } from 'react-router';\n\ntype Props = {\n location?: any;\n views: { [key: string]: ViewDefinition };\n render: (viewName: string) => JSX.Element | null;\n};\n\nconst Switch: React.FC<Props> = ({ views, location, render }) => {\n return (\n <RouteSwitch\n location={\n location\n ? {\n ...location,\n pathname: location.pathname.split('?')[0],\n }\n : location\n }\n >\n {[\n ...Object.keys(views).filter((key) => !!views[key].path),\n ...Object.keys(views).filter((key) => !views[key].path),\n ].map((name) => {\n const { path } = views[name];\n\n if (!path) {\n return <Route key={name} render={() => render(name)} />;\n }\n\n if (Array.isArray(path)) {\n return path.map((path: string) => (\n <Route key={name} exact path={path} render={() => render(name)} />\n ));\n }\n return <Route key={name} exact path={path} render={() => render(name)} />;\n })}\n </RouteSwitch>\n );\n};\n\nexport default Switch;\n","import styled from '@emotion/styled';\nimport { WidgetSettings } from '@telia-ace/widget-core';\nimport {\n Grid,\n transitionComposer,\n useComponentNode,\n useContainer,\n useContext,\n useProperties,\n useRouteData,\n useRouter,\n useScroll,\n} from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { useState } from 'react';\nimport { Transition, TransitionGroup } from 'react-transition-group';\nimport { TransitionStatus } from 'react-transition-group/Transition';\nimport Component from './component';\nimport { determineSlideDirection, RouteRanking, SlideDirection } from './determine-slide-direction';\nimport Switch from './switch';\n\ntype Props = {\n className?: string;\n};\n\nconst StyledViewContainer = styled.div`\n position: relative;\n width: 100%;\n flex: 1;\n`;\n\nconst StyledView = styled(Grid)<{ scrollableCss?: any; animationCss?: any }>`\n position: absolute;\n left: 0;\n right: 0;\n ${(p) => !!p.animationCss && p.animationCss}\n ${(p) => !!p.scrollableCss && p.scrollableCss}\n`;\n\nconst routeHierarchy: RouteRanking = {\n index: 1,\n search: 2,\n browse: 3,\n guide: 4,\n contact: 5,\n 'contact-method': 6,\n conversation: 7,\n};\n\nconst AnimatedView: React.FC<Props> = ({ className = '', ...other }) => {\n const [routeName, setRouteName] = useState('index');\n const [transitionDirection, setTransitionDirection] = useState(SlideDirection.forth);\n const nextRoute = useRouteData();\n const router = useRouter();\n\n const properties = useProperties();\n const context = useContext();\n const container = useContainer();\n const node = useComponentNode();\n\n const { gap = '0' } = context;\n const { columns = 1, animation = 'none', scrollable = false, ...areaProperties } = properties;\n\n const [scrollableCss, elem] = useScroll(scrollable);\n\n if (!node || !router) {\n return null;\n }\n\n const { location } = router;\n\n if (nextRoute.name !== routeName && nextRoute.name !== '' && animation) {\n setTransitionDirection(determineSlideDirection(routeName, nextRoute.name, routeHierarchy));\n setRouteName(nextRoute.name);\n }\n\n const { views }: WidgetSettings = container.get('$settings');\n\n if (!Object.keys(views).length) {\n return null;\n }\n\n const renderView = (name: string, transitionState?: any, direction?: SlideDirection) => {\n const animationStyles = getAnimation(transitionState, direction);\n const childNode = node.getChildren(name)[0];\n\n return (\n <StyledView\n {...other}\n {...areaProperties}\n scrollableCss={scrollableCss}\n ref={elem}\n columns={columns}\n gap={gap}\n {...animationStyles}\n className={appendClassNames(className, 'humany-view')}\n >\n <Component id={childNode.id} branch=\"default\" />\n </StyledView>\n );\n };\n\n const getAnimation = (transitionState?: any, direction?: SlideDirection) => {\n if (animation === 'slide' || animation === 'fade') {\n return {\n animationCss: transitionComposer.composeViewTransition(\n transitionState,\n animation,\n direction\n ),\n ['data-state']: transitionState,\n };\n }\n return;\n };\n\n return (\n <StyledViewContainer className=\"humany-animated-view\">\n <TransitionGroup\n component={null}\n childFactory={(child) =>\n React.cloneElement(child, { direction: transitionDirection })\n }\n >\n <Transition\n key={routeName}\n timeout={{ enter: 500, exit: 500 }}\n onEnter={(node: HTMLElement) => node?.clientHeight}\n unmountOnExit={true}\n direction={SlideDirection.forth}\n >\n {/* @ts-ignore */}\n {(state: TransitionStatus, { direction }: { direction: SlideDirection }) => (\n <Switch\n views={views}\n location={location}\n render={(name) => renderView(name, state, direction)}\n />\n )}\n </Transition>\n </TransitionGroup>\n </StyledViewContainer>\n );\n};\n\nexport default AnimatedView;\n","import styled from '@emotion/styled';\nimport { WidgetSettings } from '@telia-ace/widget-core';\nimport {\n Grid,\n useComponentNode,\n useContainer,\n useContext,\n useProperties,\n useScroll,\n} from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport Component from './component';\nimport Switch from './switch';\n\ntype Props = {\n className?: string;\n};\n\nconst StyledView = styled(Grid)<{ scrollableCss?: string }>`\n ${(p) => !!p.scrollableCss && p.scrollableCss}\n`;\n\nconst View: React.FC<Props> = ({ className = '', ...other }) => {\n const properties = useProperties();\n const context = useContext();\n const container = useContainer();\n const node = useComponentNode();\n\n const { views }: WidgetSettings = container.get('$settings');\n\n const { gap = '0' } = context;\n const { columns = 1, animation = 'none', scrollable = false, ...areaProperties } = properties;\n\n const [scrollableCss, elem] = useScroll(scrollable);\n\n if (!node) {\n return null;\n }\n\n return (\n <StyledView\n {...other}\n {...areaProperties}\n scrollableCss={scrollableCss}\n ref={elem}\n columns={columns}\n gap={gap}\n className={appendClassNames(className, 'humany-view')}\n >\n <Switch\n views={views}\n render={(name) => {\n const childNode = node.getChildren(name)[0];\n return <Component id={childNode.id} node={childNode} branch=\"default\" />;\n }}\n />\n </StyledView>\n );\n};\n\nexport default View;\n","import { css, Theme } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { paddedBorderTabStyle } from '@telia-ace/widget-ui';\nimport AnimatedView from './animated-view';\nimport View from './view';\n\nexport const styling = (p: { 'data-width'?: number; 'data-indent'?: number; theme: Theme }) => css`\n outline: none;\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n outline: none;\n }\n\n grid-column: ${p['data-indent']\n ? `${p['data-indent'] + 1} / ${p['data-indent'] + (p['data-width'] || 0) + 1}`\n : `span ${p['data-width']}`};\n\n ${p.theme.fonts?.type &&\n `\n font-family: ${p.theme.fonts.type};\n\n input, textarea {\n font-family: ${p.theme.fonts.type};\n }\n `}\n\n ${p.theme.fonts?.base &&\n `\n font-size: ${p.theme.fonts.base};\n `}\n\n &:focus-visible {\n ${paddedBorderTabStyle(p)};\n }\n`;\n\nexport const StyledView = styled(View)`\n ${(p) => styling(p)}\n`;\n\nexport const StyledAnimatedView = styled(AnimatedView)`\n ${(p) => styling(p)}\n`;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n filterCssPropsStyle,\n Typography,\n useComponent,\n useComponentDescriptor,\n} from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef, Suspense, useMemo } from 'react';\nimport { styling } from './styles';\n\ntype Props = {\n role?: string;\n 'data-width': number;\n 'data-indent': number;\n className?: string;\n children?: React.ReactNode;\n};\n\nconst NonResolvedComponentWrapper = styled.div<Props>`\n text-align: center;\n ${(p) =>\n typeof p.theme.colors?.warning !== 'undefined' &&\n css`\n color: ${p.theme.colors?.warning};\n border: 2px dashed ${p.theme.colors?.warning};\n `}\n ${(p) =>\n typeof p.theme.borderRadius !== 'undefined' && `border-radius: ${p.theme.borderRadius};`}\n ${(p) => styling(p)}\n`;\n\nconst ResolvableComponent = forwardRef<HTMLElement, Props>(\n ({ className = '', children, ...other }, ref) => {\n const ResolvedComponent = useComponent();\n const { name, type, id } = useComponentDescriptor();\n\n const StyledResolvableComponent = useMemo(() => {\n if (ResolvedComponent) {\n return styled(ResolvedComponent)<any>`\n ${styling}\n ${filterCssPropsStyle}\n `;\n }\n return null;\n }, [ResolvedComponent]);\n\n if (typeof ResolvedComponent === 'undefined') {\n return null;\n }\n\n if (ResolvedComponent === null || StyledResolvableComponent === null) {\n if (process.env.NODE_ENV !== 'production') {\n return (\n <NonResolvedComponentWrapper\n {...other}\n title={`type: ${type}, definition-id: ${name}, instance-id: ${id}`}\n className={appendClassNames(className, 'humany-non-resolved-component')}\n >\n <Typography variant=\"h5\">Non Resolved Component Type</Typography>\n </NonResolvedComponentWrapper>\n );\n }\n return null;\n }\n\n return (\n <Suspense fallback={null}>\n <StyledResolvableComponent\n ref={ref}\n {...other}\n className={appendClassNames(\n className,\n 'humany-component',\n `humany-component-${name}`\n )}\n >\n {children}\n </StyledResolvableComponent>\n </Suspense>\n );\n }\n);\n\nexport default ResolvableComponent;\n","import { ComponentNodeProperties } from '@telia-ace/widget-core';\nimport { useComponentNode, useComponentPlatform, useIsMounted } from '@telia-ace/widget-ui';\nimport { useEffect, useState } from 'react';\n\nexport default (id: string) => {\n const node = useComponentNode(id);\n const components = useComponentPlatform();\n const [properties, setProperties] = useState<ComponentNodeProperties>({});\n const isMounted = useIsMounted();\n\n useEffect(() => {\n if (node && isMounted.current) {\n setProperties(node.attributes.properties);\n }\n }, [node, id, isMounted]);\n\n useEffect(() => {\n if (components) {\n const unsubscribe = components.events.subscribe(\n 'components:properties-changed',\n (event, data) => {\n if (node === data.node && isMounted.current) {\n setProperties(data.node.attributes.properties);\n }\n }\n );\n\n return () => {\n unsubscribe();\n };\n }\n }, [components, isMounted, id, node]);\n\n return properties;\n};\n","import { Theme, ThemeProvider } from '@emotion/react';\nimport { asDescriptor, ComponentDescriptor, ComponentNode, Size } from '@telia-ace/widget-core';\nimport {\n ComponentNodeContext,\n ComponentPropertyContext,\n filterCssProps,\n useColumns,\n useComponentPlatform,\n useContainer,\n useContext,\n useLayout,\n} from '@telia-ace/widget-ui';\nimport React, { forwardRef, useEffect, useState } from 'react';\nimport ResolvableComponent from './resolvable-component';\nimport { StyledAnimatedView, StyledView } from './styles';\nimport useComponentNodeProperties from './use-component-node-properties';\n\ntype Props = {\n className?: string;\n id: string;\n branch: string;\n node?: ComponentNode;\n ariaLabel?: string;\n tabIndex?: number;\n context?: { [key: string]: any };\n};\n\nconst isVisible = (size: Size, node?: ComponentNode) => {\n if (node) {\n return true;\n }\n if (typeof size === 'string') {\n return size === 'full';\n }\n return size > 0;\n};\n\nconst Component = forwardRef<HTMLElement, Props>(\n (\n { className = '', id, branch, node, ariaLabel, tabIndex, context: extraContext, ...other },\n ref\n ) => {\n const components = useComponentPlatform();\n const container = useContainer();\n const [descriptor, setDescriptor] = useState<ComponentDescriptor>();\n\n const columns = useColumns();\n const context = useContext(id);\n const properties = useComponentNodeProperties(id);\n const { size = 'none', indent = 0 } = useLayout(id);\n const visible = isVisible(size, node);\n\n useEffect(() => {\n if (components) {\n if (id && !node) {\n const componentNode = components.nodes.get(id);\n if (componentNode) {\n setDescriptor(asDescriptor(componentNode, branch));\n\n if (visible) {\n const unmount = componentNode.mount(container);\n return () => {\n unmount();\n };\n }\n }\n } else if (node) {\n setDescriptor(asDescriptor(node, branch));\n const unmount = node.mount(container);\n return () => {\n unmount();\n };\n }\n }\n }, [components, id, node, visible]);\n\n if (!descriptor || !visible) {\n return null;\n }\n\n const mergedContexts = { ...context, ...(extraContext || {}) };\n const {\n cardinal,\n fonts: contextFonts = {},\n accessibility = {},\n ...restContext\n } = mergedContexts;\n\n const fonts = {\n type: contextFonts.type,\n base: contextFonts.base || '16px',\n small: contextFonts.small || '0.8em',\n normal: contextFonts.normal || '1em',\n medium: contextFonts.medium || '1.2em',\n large: contextFonts.large || '1.6em',\n huge: contextFonts.huge || '2.5em',\n };\n\n const theme: Theme = {\n ...restContext,\n fonts,\n accessibility: {\n ...accessibility,\n },\n };\n\n if (typeof cardinal === 'number') {\n theme.sizes = {\n cardinal,\n small: `${cardinal}px`,\n normal: `${cardinal * 3}px`,\n medium: `${cardinal * 5}px`,\n large: `${cardinal * 8}px`,\n };\n }\n\n return (\n <ThemeProvider theme={theme}>\n <ComponentNodeContext.Provider value={descriptor}>\n <ComponentPropertyContext.Provider value={properties}>\n {(() => {\n const props = {\n 'data-width':\n size === 'full' ? columns : Math.min(size as number, columns),\n 'data-indent': indent,\n 'data-name': descriptor.name,\n 'data-node-id': descriptor.id,\n 'data-component-type': descriptor.type,\n 'aria-label': ariaLabel,\n tabIndex: tabIndex,\n id: descriptor.id,\n role: properties && properties.role,\n ...other,\n };\n switch (descriptor.type) {\n case 'view': {\n return typeof properties.animation === 'string' &&\n properties.animation !== 'none' ? (\n <StyledAnimatedView {...props} className={className} />\n ) : (\n <StyledView {...props} className={className} />\n );\n }\n default: {\n const cssProps = filterCssProps(properties);\n\n return (\n <ResolvableComponent\n ref={ref}\n {...props}\n {...cssProps}\n className={className}\n />\n );\n }\n }\n })()}\n </ComponentPropertyContext.Provider>\n </ComponentNodeContext.Provider>\n </ThemeProvider>\n );\n }\n);\n\nexport default Component;\n","import { ComponentNode, ComponentPlatform } from '@telia-ace/widget-core';\nimport { useContainer } from '@telia-ace/widget-ui';\nimport React, { useEffect, useState } from 'react';\nimport Component from './component';\n\ntype Props = {\n builder: (components: ComponentPlatform) => Promise<ComponentNode>;\n};\nconst DetachedComponent: React.FC<Props> = ({ builder }) => {\n const container = useContainer();\n const [node, setNode] = useState<ComponentNode | null>(null);\n\n useEffect(() => {\n container.getAsync('components').then((components: ComponentPlatform) => {\n return builder(components).then((createdNode) => {\n setNode(createdNode);\n });\n });\n }, []);\n\n useEffect(() => {\n return () => {\n if (node) {\n container.getAsync('components').then((components: ComponentPlatform) => {\n components.nodes.detached = components.nodes.detached.filter(\n (n) => n.id !== node.id\n );\n });\n }\n };\n }, [node]);\n\n if (!node) {\n return null;\n }\n\n return <Component id={node.id} node={node} branch=\"default\" />;\n};\n\nexport default DetachedComponent;\n","import { useTheme } from '@emotion/react';\nimport { ComponentPlatform } from '@telia-ace/widget-core';\nimport { useContainer } from '@telia-ace/widget-ui';\nimport React from 'react';\n\nconst DetachedComponent = React.lazy(() => import('./detached-component'));\n\ntype Props = {\n showSearch?: boolean;\n};\nconst NotFound: React.FC<Props> = ({ showSearch = false }) => {\n const themeContext = useTheme();\n const container = useContainer();\n\n return (\n <React.Suspense fallback={null}>\n <DetachedComponent\n builder={(components: ComponentPlatform) => {\n return container.get('settings').then((settings: any) => {\n const { properties, context } = Object.keys(settings.components).reduce<{\n properties: any;\n context: any;\n }>(\n (acc, key) => {\n if (settings.components[key].type === 'not-found') {\n acc.properties = settings.components[key].properties;\n acc.context = settings.components[key].context;\n }\n\n return acc;\n },\n { properties: {}, context: {} }\n );\n\n properties.showSearch = showSearch;\n const node = components.createNode('area', { detached: true });\n node.name = 'not-found-area';\n node.writeLayout({\n size: 'full',\n });\n\n if (showSearch) {\n const searchComponentProps = Object.keys(settings.components).reduce(\n (acc, key) => {\n if (settings.components[key].type === 'search') {\n return settings.components[key].properties;\n }\n\n return acc;\n },\n {}\n );\n const searchNode = components.createNode('search', { detached: true });\n searchNode.writeLayout({ size: 'full' });\n searchNode.writeProperties({\n 'css-margin-bottom': themeContext?.sizes?.normal || '15px',\n ...searchComponentProps,\n });\n node.appendChild(searchNode);\n }\n\n const notFoundNode = components.createNode('not-found', { detached: true });\n notFoundNode.writeLayout({ size: 'full' });\n notFoundNode.writeProperties(properties);\n notFoundNode.writeContext(context);\n node.appendChild(notFoundNode);\n\n return node;\n });\n }}\n />\n </React.Suspense>\n );\n};\n\nexport default NotFound;\n","// tslint:disable max-line-length\nexport const renderSymbol = (symbol?: { type: string; content: string }) => {\n if (symbol) {\n const { type, content } = symbol;\n switch (type) {\n case 'FontAwesome':\n return `<i class=\"humany-icon fa fa-${content}\"></i>`;\n case 'Uri':\n return `<i class=\"humany-icon humany-custom-icon\" style=\"background: url(${content}) no-repeat center center;background-size: contain;\"></i>`;\n default:\n return '';\n }\n }\n};\n\nconst triggerTabHandler = (triggerDOMElement: HTMLElement) => {\n const toggleTabbing = (element: HTMLElement, tabbing: boolean) => {\n if (!element) {\n return;\n }\n\n if (tabbing) {\n element.classList.add('humany-tabbing');\n } else {\n element.classList.remove('humany-tabbing');\n }\n };\n\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Tab') {\n toggleTabbing(triggerDOMElement, true);\n } else if (\n !(\n e.key === 'Enter' &&\n document.activeElement &&\n document.activeElement.classList.contains('humany-trigger')\n )\n ) {\n toggleTabbing(triggerDOMElement, false);\n }\n };\n\n const handleClick = (e: MouseEvent) => {\n if (\n document.activeElement &&\n document.activeElement.classList.contains('humany-trigger') &&\n document.activeElement.classList.contains('humany-tabbing')\n ) {\n return;\n }\n toggleTabbing(triggerDOMElement, false);\n };\n\n document.addEventListener('keydown', handleKeydown);\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('keydown', handleKeydown);\n document.removeEventListener('click', handleClick);\n };\n};\n\nexport type TriggerElementOptions = {\n symbol?: { type: string; content: string };\n widgetName: string;\n label?: string;\n ariaLabel?: string;\n tooltip?: string;\n};\n\nexport function createTriggerElement(element: HTMLElement, options: TriggerElementOptions) {\n const { symbol, widgetName, label = '', ariaLabel = '', tooltip = '' } = options;\n\n element.classList.add('humany-trigger');\n element.classList.add(`humany_${widgetName}`);\n\n if (label.length) {\n element.classList.add('humany-has-text');\n }\n\n if (ariaLabel.length && !element.getAttribute('aria-label')) {\n element.setAttribute('aria-label', ariaLabel);\n }\n\n if (ariaLabel.length && !element.getAttribute('tabindex')) {\n element.setAttribute('tabindex', '0');\n }\n\n if (tooltip.length && !element.getAttribute('title')) {\n element.setAttribute('title', tooltip);\n }\n\n const symbolHtml = renderSymbol(symbol) || '';\n element.innerHTML = `${symbolHtml}\n <span class=\"humany-close\">\n <svg width=\"18\" height=\"9\" viewBox=\"0 0 18 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 9C8.81794 9.00045 8.63759 8.96634 8.46939 8.89965C8.3012 8.83295 8.14851 8.735 8.02015 8.61145L0.194523 1.12367C0.068294 0.99862 -0.00155266 0.831133 2.61958e-05 0.657285C0.00160506 0.483436 0.0744832 0.317136 0.202964 0.194202C0.331445 0.0712675 0.505249 0.00153576 0.686941 2.50649e-05C0.868634 -0.00148563 1.04368 0.0653456 1.17437 0.186125L9 7.6739L16.8256 0.186125C16.9563 0.0653456 17.1314 -0.00148563 17.3131 2.50649e-05C17.4948 0.00153576 17.6686 0.0712675 17.797 0.194202C17.9255 0.317136 17.9984 0.483436 18 0.657285C18.0016 0.831133 17.9317 0.99862 17.8055 1.12367L9.97985 8.61145C9.85149 8.735 9.6988 8.83295 9.53061 8.89965C9.36241 8.96634 9.18206 9.00045 9 9Z\" fill=\"white\"/>\n </svg>\n </span>\n <span class=\"humany-loader\">\n <svg viewBox=\"25 25 50 50\">\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"20\"\n fill=\"none\"\n stroke=\"#000\"\n stroke-width=\"2\"\n stroke-miterlimit=\"10\" />\n </svg>\n </span>\n ${label.length ? `<span>${label}</span>` : ''}`;\n\n setTimeout(() => element && (element as HTMLElement).classList.add('humany-rendered'));\n\n return triggerTabHandler(element);\n}\n\nexport function setInactive(elements: HTMLElement | HTMLElement[], title?: string) {\n if (elements instanceof HTMLElement) {\n if (title) {\n elements.setAttribute('title', title);\n }\n elements.classList.remove('humany-active');\n elements.classList.remove('humany-loading');\n } else if (elements instanceof Array) {\n elements.forEach((e) => {\n if (title) {\n e.setAttribute('title', title);\n }\n e.classList.remove('humany-active');\n e.classList.remove('humany-loading');\n });\n }\n}\nexport function setLoading(elements: HTMLElement | HTMLElement[]) {\n if (elements instanceof HTMLElement) {\n elements.classList.remove('humany-active');\n elements.classList.add('humany-loading');\n } else if (elements instanceof Array) {\n elements.forEach((e) => {\n e.classList.remove('humany-active');\n e.classList.add('humany-loading');\n });\n }\n}\nexport function setActive(elements: HTMLElement | HTMLElement[], title?: string) {\n if (elements instanceof HTMLElement) {\n if (title) {\n elements.setAttribute('title', title);\n }\n elements.classList.add('humany-active');\n elements.classList.remove('humany-loading');\n } else if (elements instanceof Array) {\n elements.forEach((e) => {\n if (title) {\n e.setAttribute('title', title);\n }\n e.classList.add('humany-active');\n e.classList.remove('humany-loading');\n });\n }\n}\n","import { ViewOutletOptions } from './view-outlet';\n\nenum ProvidedElements {\n None = 'none',\n WidgetDOM = 'widgetDOM',\n TriggerDOM = 'triggerDOM',\n Both = 'both',\n}\n\nexport enum TriggerType {\n Inline = 'inline',\n Link = 'link',\n Badge = 'badge',\n Unsupported = 'unsupported',\n}\n\nexport const determineProvidedElements = (\n widgetDOMElement?: HTMLElement,\n triggerDOMElement?: HTMLElement\n): ProvidedElements => {\n if (widgetDOMElement && triggerDOMElement) {\n return ProvidedElements.Both;\n }\n if (widgetDOMElement) {\n return ProvidedElements.WidgetDOM;\n }\n if (triggerDOMElement) {\n return ProvidedElements.TriggerDOM;\n }\n return ProvidedElements.None;\n};\n\nexport const determineTriggerType = (triggerDefinition?: any) => {\n if (!triggerDefinition) {\n return TriggerType.Inline;\n }\n if (typeof triggerDefinition === 'boolean' && triggerDefinition) {\n return TriggerType.Link;\n }\n if (typeof triggerDefinition === 'object' && !Array.isArray(triggerDefinition)) {\n return TriggerType.Badge;\n }\n return TriggerType.Unsupported;\n};\n\ntype PrepareDOMElementsOutput = ViewOutletOptions & {\n callback?: () => void;\n};\n\nexport const prepareDOMElements = (\n name: string,\n providedWidgetElement?: HTMLElement,\n providedTriggerElement?: HTMLElement,\n triggerDefinition?: any,\n waitWithReplace: boolean = false\n): PrepareDOMElementsOutput => {\n const providedElements = determineProvidedElements(\n providedWidgetElement,\n providedTriggerElement\n );\n const triggerType = determineTriggerType(triggerDefinition);\n\n const cachedOriginals = {\n widgetDOMElement: providedWidgetElement ? providedWidgetElement.cloneNode(true) : undefined,\n triggerDOMElement: providedTriggerElement\n ? providedTriggerElement.cloneNode(true)\n : undefined,\n };\n\n const output: PrepareDOMElementsOutput = {\n triggerType,\n cachedOriginals,\n widgetDOMElement: document.createElement('div'),\n };\n\n switch (providedElements) {\n case ProvidedElements.Both: {\n output.widgetDOMElement = providedWidgetElement || document.createElement('div');\n if (triggerType !== TriggerType.Inline) {\n output.triggerDOMElement = providedTriggerElement;\n }\n break;\n }\n case ProvidedElements.WidgetDOM: {\n output.widgetDOMElement = providedWidgetElement || document.createElement('div');\n if (triggerType !== TriggerType.Inline) {\n const triggerElement = document.body.appendChild(document.createElement('a'));\n if (triggerType === TriggerType.Link) {\n triggerElement.innerText = name;\n }\n output.triggerDOMElement = triggerElement;\n }\n break;\n }\n case ProvidedElements.TriggerDOM: {\n const widgetElement = document.createElement('div');\n output.widgetDOMElement = widgetElement;\n if (triggerType === TriggerType.Inline) {\n // replace with widgetDOMElement in the DOM\n widgetElement.id = providedTriggerElement?.id || '';\n if (waitWithReplace) {\n widgetElement.style.display = 'none';\n providedTriggerElement?.parentNode?.appendChild(widgetElement);\n\n output.callback = () => {\n providedTriggerElement?.parentNode?.replaceChild(\n widgetElement,\n providedTriggerElement\n );\n widgetElement.style.display =\n providedTriggerElement?.style.display || 'block';\n };\n } else {\n providedTriggerElement?.parentNode?.replaceChild(\n widgetElement,\n providedTriggerElement\n );\n }\n output.cachedOriginals.widgetDOMElement = providedTriggerElement;\n output.cachedOriginals.triggerDOMElement = undefined;\n } else {\n output.widgetDOMElement = document.body.appendChild(widgetElement);\n output.triggerDOMElement = providedTriggerElement;\n }\n break;\n }\n case ProvidedElements.None: {\n const widgetElement = document.body.appendChild(document.createElement('div'));\n output.widgetDOMElement = widgetElement;\n if (triggerType !== TriggerType.Inline) {\n const triggerElement = document.body.appendChild(document.createElement('a'));\n if (triggerType === TriggerType.Link) {\n triggerElement.innerText = name;\n }\n output.triggerDOMElement = triggerElement;\n }\n break;\n }\n }\n\n return output;\n};\n","import { readStorage, StorageMedium } from '@telia-ace/widget-services';\nimport { Symbol } from '@telia-ace/widget-ui';\nimport { notifyDataLoaded } from '@telia-ace/widget-utilities';\nimport { Container, Widget } from '@webprovisions/platform';\nimport { createTriggerElement, setActive, setLoading } from './html-element-handlers';\nimport { TriggerType } from './prepare-dom';\n\nconst MODALS_STORAGE_KEY = 'modals';\n\nexport type BadgeOptions = {\n symbol?: Symbol;\n label?: string;\n ariaLabel?: string;\n openTooltip?: string;\n closedTooltip?: string;\n};\n\nexport type ViewOutletOptions = {\n widgetDOMElement: HTMLElement;\n triggerDOMElement?: HTMLElement;\n triggerOptions?: BadgeOptions | boolean;\n triggerType: TriggerType;\n cachedOriginals: {\n widgetDOMElement?: Node;\n triggerDOMElement?: Node;\n };\n};\n\ntype Modals = {\n name: string;\n ref?: HTMLElement;\n selector?: string;\n};\n\nexport class ViewOutlet {\n container: Container;\n private unsubscribe: (() => void)[] = [];\n\n constructor(container: Container, public options: ViewOutletOptions) {\n this.container = container.createChild(this);\n this.container.register('widgetDOMElement', this.options.widgetDOMElement);\n this.container.register('triggerDOMElement', this.options.triggerDOMElement);\n\n const widget: Widget = this.container.get('$widget');\n this.options.widgetDOMElement.classList.add('humany-widget');\n this.options.widgetDOMElement.classList.add(`humany_${widget.name}`);\n\n const widgetDOMElements = container.get('widgetDOMElements') || [];\n container.register('widgetDOMElements', [\n ...widgetDOMElements,\n this.options.widgetDOMElement,\n ]);\n }\n\n /**\n * Renders the view outlet to the DOM.\n */\n render() {\n const { widgetDOMElement, triggerDOMElement } = this.options;\n\n const widget: Widget = this.container.get('$widget');\n\n if (widgetDOMElement.getAttribute('data-rendered') === 'true') {\n return Promise.resolve();\n }\n\n if (triggerDOMElement && this.options.triggerType === TriggerType.Badge) {\n setLoading(triggerDOMElement);\n }\n\n return import('./render')\n .then((module) => module.default(this.container, widgetDOMElement))\n .then(() => {\n widgetDOMElement.setAttribute('data-rendered', 'true');\n\n if (triggerDOMElement && this.options.triggerType === TriggerType.Badge) {\n const tooltip = (this.options.triggerOptions as BadgeOptions).openTooltip;\n setActive(triggerDOMElement, tooltip);\n }\n notifyDataLoaded(this.container, widgetDOMElement);\n\n const widgets = this.container.get('$environment').widgets.all();\n\n readStorage<Modals[]>(\n this.container,\n MODALS_STORAGE_KEY,\n StorageMedium.Session\n ).then((modals) => {\n if (modals) {\n modals.forEach((modal) => {\n if (\n widgets.find(\n (w: Widget) => w.name === modal.name && w.state === 'activated'\n )\n ) {\n widget.events.dispatch('widget:modal-opened', modal);\n }\n });\n }\n });\n });\n }\n\n renderBadge(options: BadgeOptions) {\n const { triggerDOMElement } = this.options;\n\n if (!triggerDOMElement) {\n return;\n }\n\n if (!triggerDOMElement.getAttribute('role')) {\n triggerDOMElement.setAttribute('role', 'button');\n }\n\n const { name }: Widget = this.container.get('$widget');\n\n const { label, symbol, ariaLabel, closedTooltip, openTooltip } = options;\n\n const triggerOptions = { closedTooltip, openTooltip };\n this.options.triggerOptions = triggerOptions;\n\n const removeTriggerListeners = createTriggerElement(triggerDOMElement, {\n label,\n symbol,\n ariaLabel,\n widgetName: name,\n tooltip: closedTooltip,\n });\n this.unsubscribe.push(removeTriggerListeners);\n }\n\n dispose() {\n return import('./unmount').then((module) => {\n const { triggerDOMElement, widgetDOMElement } = this.options;\n module.default(widgetDOMElement);\n\n if (this.options.cachedOriginals.widgetDOMElement) {\n if (widgetDOMElement) {\n widgetDOMElement.parentNode?.replaceChild(\n this.options.cachedOriginals.widgetDOMElement,\n widgetDOMElement\n );\n }\n }\n if (this.options.cachedOriginals.triggerDOMElement) {\n if (triggerDOMElement) {\n triggerDOMElement.parentNode?.replaceChild(\n this.options.cachedOriginals.triggerDOMElement,\n triggerDOMElement\n );\n }\n }\n\n this.unsubscribe.forEach((unsubscribe) => {\n unsubscribe();\n });\n\n widgetDOMElement.parentNode?.removeChild(widgetDOMElement);\n triggerDOMElement?.parentNode?.removeChild(triggerDOMElement);\n });\n }\n}\n","import {\n ChangesetOptions,\n ChangesetProvider,\n ComponentNodeAttributes,\n ComponentNodeSettings,\n ComponentPlatform,\n ComponentQuery,\n ComponentQueryRule,\n createComponentModel,\n WidgetSettings,\n} from '@telia-ace/widget-core';\nimport {\n createStorageWriter,\n readStorage,\n StorageCategory,\n StorageMedium,\n StorageWriter,\n} from '@telia-ace/widget-services';\nimport { lock } from '@telia-ace/widget-utilities';\nimport { Container, Widget, WidgetState } from '@webprovisions/platform';\n\nconst STORAGE_KEY = 'changesets';\n\ntype ChangesetItem = {\n rules: ComponentQueryRule[];\n attributes: Partial<ComponentNodeAttributes>;\n options: ChangesetOptions;\n};\n\ntype ChangesetItemBag = {\n items?: { [key: string]: ChangesetItem };\n keys?: string[];\n};\n\nconst convertSettingsToAttributes = (\n settings: Partial<ComponentNodeSettings>\n): Partial<ComponentNodeAttributes> => {\n const attributes: Partial<ComponentNodeAttributes> = { tags: settings.tags };\n if (settings.context && typeof settings.context !== 'function') {\n attributes.context = settings.context;\n }\n if (settings.properties && typeof settings.properties !== 'function') {\n attributes.properties = settings.properties;\n }\n if (settings.layout && typeof settings.layout !== 'function') {\n attributes.layout = settings.layout;\n }\n\n return attributes;\n};\n\nexport class LocalStorageChangesetProvider implements ChangesetProvider {\n constructor(private container: Container, private storageWriter: StorageWriter) {}\n\n static create(container: Container): Promise<LocalStorageChangesetProvider> {\n return createStorageWriter(container, STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n }).then((storageWriter) => new LocalStorageChangesetProvider(container, storageWriter));\n }\n\n write(\n key: string,\n target: ComponentQuery,\n attributes: Partial<ComponentNodeSettings>,\n options: ChangesetOptions\n ): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n const existingIndex = keys.indexOf(key);\n if (existingIndex > -1) {\n keys.splice(existingIndex, 1);\n }\n keys.push(key);\n items[key] = {\n options,\n attributes: convertSettingsToAttributes(attributes),\n rules: target.rules,\n };\n return this.storageWriter({ keys, items });\n });\n });\n }\n\n remove(key: string): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n const indexToRemove = keys.indexOf(key);\n if (indexToRemove > -1) {\n keys.splice(indexToRemove, 1);\n delete items[key];\n return this.storageWriter(bag);\n }\n });\n });\n }\n\n load(platform: ComponentPlatform): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n keys.forEach((key) => {\n const item = items[key];\n if (item) {\n const { rules, attributes, options } = item;\n platform.write({\n attributes,\n options,\n target: new ComponentQuery(platform, rules),\n });\n }\n });\n });\n });\n }\n}\n\nexport const createPlatform = (widget: Widget): Promise<ComponentPlatform> => {\n const { container } = widget;\n return LocalStorageChangesetProvider.create(container).then((localStorage) => {\n const settings: WidgetSettings = container.get('$settings');\n const providers = { localStorage };\n const platform = new ComponentPlatform(widget, providers);\n const destructComponentModel = createComponentModel(platform, settings);\n\n widget.events.subscribe('widget:state-change', (event, data: { state: WidgetState }) => {\n if (data.state === WidgetState.Deactivating) {\n destructComponentModel();\n }\n });\n\n return platform;\n });\n};\n","export type SiteLocation = {\n host: string;\n pathname: string;\n};\n\nexport const createSiteProvider = (\n site: 'current' | 'referrer',\n forceHttps: boolean\n): (() => string) => {\n return () => {\n const parseLocation = (href: string): SiteLocation => {\n const link = document.createElement('a');\n link.href = href;\n return link;\n };\n\n let location: SiteLocation = window.location;\n if (site === 'referrer' && document.referrer) {\n location = parseLocation(document.referrer);\n }\n return [forceHttps ? 'https:' : '', '//', location.host, location.pathname].join('');\n };\n};\n","import { WidgetSettings } from '@telia-ace/widget-core';\nimport { Container, Widget } from '@webprovisions/platform';\nimport { createPlatform } from './component-platform-factory';\nimport { createSiteProvider } from './site-provider';\n\nexport const createRoutingService = (container: Container) => {\n return import('@telia-ace/widget-routing').then(({ RoutingService, HistoryMode }) => {\n return container.get('settings').then((settings: WidgetSettings) => {\n const {\n routing: { initialPath = '/', mode = HistoryMode.scopedHash, basePath },\n views,\n } = settings;\n\n const routingService = new RoutingService(container, {\n initialPath,\n mode,\n routes: Object.keys(views).map((name) => ({\n name,\n path: views[name].path,\n })),\n basePath,\n });\n return routingService;\n });\n });\n};\n\nexport const createStorageService = (container: Container) => {\n return import('@telia-ace/widget-services').then(({ StorageProvider }) => {\n return new StorageProvider();\n });\n};\n\nexport const createServiceClient = (container: Container) => {\n return import('@telia-ace/knowledge-serviceclient').then(({ ServiceClient, ServiceProxy }) => {\n return container.get('settings').then((settings: WidgetSettings) => {\n const { name, events }: Widget = container.get('$widget');\n const {\n data: { projection = '', site = 'current', forceHttps = false },\n } = settings;\n\n const proxy = new ServiceProxy(projection, { credentials: 'same-origin' });\n\n // Replacing '_contact' & '_contact-method' while\n // still using the shadow widget concept\n const client = new ServiceClient(\n proxy,\n {\n funnel: name.replace('_contact-method', '').replace('_contact', ''),\n site: createSiteProvider(site, forceHttps),\n },\n null,\n container\n );\n\n events.subscribe('widget:settings-updated', (event, { data }: WidgetSettings) => {\n if (data && data.projection !== projection) {\n client.proxy.setBaseUrl(data.projection);\n }\n });\n\n return client;\n });\n });\n};\n\nexport const createActionResolver = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ActionResolver }) => {\n return new ActionResolver(container);\n });\n};\n\nexport const createComponentResolver = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ComponentResolver }) => {\n return new ComponentResolver(container);\n });\n};\n\nexport const createComponentPlatform = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ComponentPlatform, createComponentModel }) => {\n return createPlatform(container.get('$widget'));\n });\n};\n","import {\n ActionResolver,\n ComponentPlatform,\n WidgetRenderState,\n WidgetSettings,\n} from '@telia-ace/widget-core';\nimport { onWidgetUrl, RouteData, RoutingService } from '@telia-ace/widget-routing';\nimport {\n createStorageWriter,\n readStorage,\n StorageCategory,\n StorageMedium,\n StorageScope,\n} from '@telia-ace/widget-services';\nimport { removeNullAndUndefinedValues, uuid } from '@telia-ace/widget-utilities';\nimport { BootstrappingActivationData, supportBootstrapping } from '@webprovisions/bootstrapping';\nimport { Container, EventSubscriptionCancellation, WidgetType } from '@webprovisions/platform';\nimport { BadgeOptions, ViewOutlet, ViewOutletOptions } from '././ui/view-outlet';\nimport {\n createActionResolver,\n createComponentPlatform,\n createComponentResolver,\n createRoutingService,\n createServiceClient,\n createStorageService,\n} from './services';\nimport { setActive, setInactive } from './ui/html-element-handlers';\nimport { determineTriggerType, prepareDOMElements, TriggerType } from './ui/prepare-dom';\n\nconst SETTINGS_STORAGE_KEY = '$settings';\nconst OPEN_STORAGE_KEY = 'open';\nconst STICKY_WIDGET_STORAGE_KEY = 'activeStickyWidget';\n\nexport enum InitialRenderState {\n Open = 'open',\n Closed = 'closed',\n Hidden = 'hidden',\n Storage = 'storage',\n}\n\nexport type RenderData = {\n widgetDOMElement?: HTMLElement;\n triggerDOMElement?: HTMLElement;\n key?: string;\n open?: boolean;\n withRenderState?: InitialRenderState;\n};\n\nexport type AttachData = {\n widgetDOMElement?: HTMLElement;\n triggerDOMElement?: HTMLElement;\n key?: string;\n withRenderState?: InitialRenderState;\n};\n\nexport default class Widget extends WidgetType {\n outlets = new Map<string, ViewOutlet>();\n activated: Promise<void> | undefined = undefined;\n subs: EventSubscriptionCancellation[] = [];\n\n constructor(container: Container) {\n super(container);\n\n this.container.registerAsync('storage', () => createStorageService(this.container));\n\n this.container.registerFactory('settings', () => {\n return readStorage<Partial<WidgetSettings>>(\n this.container,\n SETTINGS_STORAGE_KEY,\n StorageMedium.Local\n ).then((settings = {}) => {\n return {\n ...this.container.get('$settings'),\n ...settings,\n };\n });\n });\n\n supportBootstrapping(this as any, 'load', this.handleBootstrapping);\n\n this.container.registerAsync('componentResolver', () =>\n createComponentResolver(this.container)\n );\n this.container.registerAsync('matchingClient', () => createServiceClient(this.container));\n this.container.registerAsync('router', () => createRoutingService(this.container));\n this.container.registerAsync('actionResolver', () => createActionResolver(this.container));\n this.container.register('matchMedia', window.matchMedia);\n this.container.registerAsync('components', () => createComponentPlatform(this.container));\n }\n\n handleBootstrapping = (activationData: BootstrappingActivationData) => {\n const options = {\n triggerDOMElement: activationData.sourceDOMElement,\n withRenderState: InitialRenderState.Storage,\n };\n\n this.container.get('settings').then((settings: any) => {\n const { activate } = settings;\n const shouldActivate =\n typeof activate === 'undefined' || activate === null || activate === true;\n\n if (shouldActivate) {\n this.activated = (this.activated || this.widget.activate()).then(() =>\n this.attach(options)\n );\n }\n });\n };\n\n initialize() {\n const promises = this.container.getManyAsync(\n 'actionResolver',\n 'router',\n 'components'\n ) as Promise<{\n actionResolver: ActionResolver;\n router: RoutingService;\n components: ComponentPlatform;\n }>;\n\n return Promise.all([promises, this.container.get('settings')]).then(\n ([{ actionResolver, router, components }, settings]) => {\n actionResolver.subscribe(this.widget.name, (origin, action, value) =>\n this.onAction(action, value)\n );\n\n const switchViewNodes = (routeName: string) => {\n components.nodes.query({ type: 'view' }).forEach((viewNode) => {\n components.setSwitch(viewNode, routeName);\n });\n };\n\n const initialRoute = router.getInitialRoute()?.name || 'index';\n switchViewNodes(initialRoute);\n\n this.events.subscribe('widget:data-loaded', (e, { element }) => {\n if (this.widget.container.get('seoConfiguration')) {\n this.events.dispatch('widget:preloaded-replaced', {\n element,\n });\n }\n });\n\n this.events.subscribe(\n 'router:change',\n (e, { previous = { routeData: {} }, next = { routeData: {} } }) => {\n const { routeData: prevData }: { routeData: RouteData } = previous;\n const { routeData: nextData }: { routeData: RouteData } = next;\n\n const notFoundView = Object.keys(settings.views).reduce((acc, key) => {\n const view = settings.views[key];\n if (typeof view.path === 'undefined') {\n return key;\n }\n return acc;\n }, '');\n\n // route not found\n if (!nextData.name && notFoundView) {\n switchViewNodes(notFoundView);\n } else {\n switchViewNodes(nextData.name);\n }\n\n removeNullAndUndefinedValues(prevData && prevData.params);\n removeNullAndUndefinedValues(nextData && nextData.params);\n\n this.container\n .getAsync('actionResolver')\n .then((actionResolver: ActionResolver) => {\n actionResolver.action(this.widget.name, 'routeChange', {\n next: nextData,\n previous: prevData,\n });\n });\n }\n );\n\n return router.initialize();\n }\n );\n }\n\n attach(attachData: AttachData = {}) {\n return this.container.get('settings').then(({ trigger }: WidgetSettings) => {\n const {\n widgetDOMElement,\n key = uuid(),\n triggerDOMElement,\n withRenderState,\n } = attachData;\n\n const triggerType = determineTriggerType(trigger);\n\n // This could probably be defined already when bootstrapping occurs,\n // Webprovisions knows when a widget is prerendered,\n // see \"queryPrerenderedTargets in @webprovisions/bootstrapping\"\n const waitWithReplace =\n triggerType === TriggerType.Inline &&\n (triggerDOMElement?.childElementCount || 0) > 0;\n\n const outletOptions = prepareDOMElements(\n this.widget.name,\n widgetDOMElement,\n triggerDOMElement,\n trigger,\n waitWithReplace\n );\n\n if (this.outlets.size < 1 && !withRenderState) {\n this.setRenderState('unset');\n }\n\n const swap = () => {\n const isReady = () =>\n widgetDOMElement.querySelectorAll('[data-loading=true]').length === 0;\n const [widgetDOMElement] = this.widget.container.get('widgetDOMElements');\n\n const watcher = (mutations: MutationRecord[], observer: MutationObserver) => {\n if (isReady()) {\n if (outletOptions.callback) {\n outletOptions.callback();\n }\n observer.disconnect();\n }\n };\n const options = {\n attributes: true,\n subtree: true,\n childList: true\n };\n\n if (isReady()) {\n outletOptions.callback && outletOptions.callback();\n }\n const observer = new MutationObserver(watcher);\n\n observer.observe(widgetDOMElement, options);\n };\n\n if (waitWithReplace) {\n this.widget.container.getAsync('dataClient').then(({ events }: any) => {\n events.subscribe('data-client:fetched', (event: any, data: any) => {\n if (data.unresolvedQueries === 0) {\n swap();\n }\n });\n });\n }\n\n const outlet = this.getOrCreateViewOutlet(key, outletOptions);\n this.outlets.set(key, outlet);\n this.widget.events.dispatch('widget:attached', {}, { bubbles: true });\n\n if (outletOptions.triggerType === TriggerType.Badge && trigger) {\n outletOptions.triggerDOMElement?.setAttribute('aria-expanded', 'false');\n outlet?.renderBadge(trigger);\n }\n\n if (outletOptions.triggerType !== TriggerType.Inline) {\n outletOptions.triggerDOMElement?.addEventListener('click', (event: any) => {\n event.preventDefault();\n this.container\n .get('settings')\n .then(({ trigger: updatedTrigger }: WidgetSettings) => {\n outlet\n .render()\n .then(() => this.renderState())\n .then((renderState) => {\n if (\n updatedTrigger &&\n updatedTrigger.action &&\n updatedTrigger.action === 'hide'\n ) {\n return renderState === WidgetRenderState.open\n ? this.hide()\n : this.open();\n }\n return renderState === WidgetRenderState.open\n ? this.close()\n : this.open();\n });\n });\n });\n }\n\n if (this.outlets.size > 1) {\n return this.renderState().then((state: WidgetRenderState) => {\n // new outlets should have the same state as existing ones\n this.triggerStateIfApplicable(state);\n });\n }\n\n if (withRenderState) {\n if (withRenderState === InitialRenderState.Storage) {\n return this.renderState().then((state: WidgetRenderState) => {\n if (outletOptions.triggerType === TriggerType.Inline) {\n this.triggerStateIfApplicable('open');\n return;\n }\n this.triggerStateIfApplicable(state);\n });\n }\n return this.triggerStateIfApplicable(withRenderState);\n }\n });\n }\n\n detach(key?: string) {\n if (key) {\n if (this.outlets.has(key)) {\n const outlet = this.outlets.get(key);\n outlet?.dispose();\n this.outlets.delete(key);\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`detach(): Could not find View Outlet with key ${key}`);\n }\n return;\n }\n this.outlets.forEach((outlet) => {\n outlet.dispose();\n });\n this.outlets.clear();\n }\n\n private triggerStateIfApplicable(input: string) {\n return this.container.getAsync('router').then((router) => {\n switch (input) {\n case 'closed':\n this.close();\n break;\n case 'open':\n this.open();\n break;\n case 'hidden':\n this.hide();\n router.start();\n break;\n default:\n return;\n }\n });\n }\n\n private getOrCreateViewOutlet(key: string, options: ViewOutletOptions): ViewOutlet {\n return (\n this.outlets.has(key) ? this.outlets.get(key) : new ViewOutlet(this.container, options)\n )!;\n }\n\n render(renderData: RenderData = {}) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('widget.render() is deprecated. Use widget.attach() instead.');\n }\n if (renderData.open) {\n const options: AttachData = {\n ...renderData,\n withRenderState: InitialRenderState.Open,\n };\n return this.attach(options);\n }\n return this.attach(renderData);\n }\n\n activate(data?: any) {\n if (data?.override) {\n this.setSettings(() => data.override);\n }\n // TODO: this is considered a hack, remove apiNotificationPriorityBy\n // when there is a better way to get notifications from backend\n if (data?.apiNotificationPriorityBy) {\n this.container.register('apiNotificationPriorityBy', data.apiNotificationPriorityBy);\n }\n }\n\n setSettings(\n fn: (settings: WidgetSettings) => Promise<Partial<WidgetSettings>>\n ): Promise<WidgetSettings> {\n return Promise.all([\n this.container.get('settings'),\n createStorageWriter(this.container, SETTINGS_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n }),\n ]).then(([settings, write]) => {\n return Promise.resolve(fn(settings)).then((override) => {\n return write(override).then(() => {\n const updated = { ...settings, ...override };\n this.widget.events.dispatch('widget:settings-updated', updated);\n return updated;\n });\n });\n });\n }\n\n clearSettings(): Promise<void> {\n return createStorageWriter(\n this.container,\n SETTINGS_STORAGE_KEY,\n StorageCategory.Necessary,\n { medium: StorageMedium.Local }\n )\n .then((write) => write())\n .then(() => this.container.get('settings'))\n .then((settings) => {\n this.widget.events.dispatch('widget:settings-updated', settings);\n });\n }\n\n action({ action, value }: { action: string; value?: any }) {\n return this.container.getAsync('actionResolver').then((actionResolver: ActionResolver) => {\n actionResolver.action(this.widget.name, action, value);\n });\n }\n\n renderState(): Promise<WidgetRenderState> {\n if (onWidgetUrl(this.container)) {\n return Promise.resolve(WidgetRenderState.open);\n }\n const readSessionOpen = () =>\n readStorage<WidgetRenderState>(\n this.container,\n OPEN_STORAGE_KEY,\n StorageMedium.Session\n ).then((value = WidgetRenderState.closed) => value);\n\n const readLocalOpen = () =>\n readStorage<WidgetRenderState>(\n this.container,\n OPEN_STORAGE_KEY,\n StorageMedium.Session\n ).then((value = WidgetRenderState.closed) => value);\n\n return this.container.getAsync('router').then((routing: RoutingService) => {\n if (routing.isSticky()) {\n return readLocalOpen().then((localOpen) => {\n return localOpen === WidgetRenderState.open ? localOpen : readSessionOpen();\n });\n }\n return readSessionOpen();\n });\n }\n\n hide(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'hide(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n this.outlets.forEach((outlet) => outlet.render());\n return this.action({ action: 'hide' }).then(() => {\n this.setTriggerState(false);\n });\n }\n\n open(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'open(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n this.outlets.forEach((outlet) => outlet.render());\n return this.action({ action: 'open' }).then(() => {\n this.widget.events.dispatch('tracking:widget-rendered', {});\n return this.onOpen();\n });\n }\n\n close(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'close(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n return this.action({ action: 'close' }).then(() => this.onClose());\n }\n\n show(): Promise<void> {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'show(): Command is deprecated and will be removed in the future. Use open() instead.'\n );\n }\n return this.open();\n }\n\n private onAction(action: string, value: any) {\n switch (action) {\n case 'close':\n case 'open':\n case 'hide':\n const newState =\n action === 'open'\n ? WidgetRenderState.open\n : action === 'close'\n ? WidgetRenderState.closed\n : WidgetRenderState.hidden;\n\n return this.setRenderState(newState).then(() => {\n this.setTriggerState(newState === WidgetRenderState.open);\n if (newState !== WidgetRenderState.hidden) {\n newState === WidgetRenderState.open ? this.onOpen() : this.onClose();\n } else {\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'false')\n );\n }\n });\n }\n }\n\n private setRenderState(newState: string): Promise<void> {\n const { invoke, events } = this.container.get('$widget');\n return Promise.all([\n createStorageWriter(this.container, OPEN_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Session,\n }),\n createStorageWriter(this.container, OPEN_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n duration: { minutes: 5 },\n }),\n this.container.getAsync('router'),\n invoke('renderState'),\n ]).then(([writeSessionOpen, writeLocalOpen, routing, previousRenderState]) => {\n if (newState === 'unset' || !newState) {\n writeLocalOpen();\n writeSessionOpen();\n } else {\n if (routing.isSticky()) {\n writeLocalOpen(newState);\n }\n writeSessionOpen(newState);\n }\n events.dispatch('widget:render-state-changed', {\n previous: previousRenderState,\n next: newState,\n });\n });\n }\n\n private onOpen(): Promise<void> {\n return this.container.getAsync('router').then((router: RoutingService) => {\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'true')\n );\n return router.start();\n });\n }\n\n private onClose(): Promise<void> {\n const services = this.container.getManyAsync('router', 'components') as Promise<{\n router: RoutingService;\n components: ComponentPlatform;\n }>;\n\n const resetActivateProp = () => {\n return this.container.get('settings').then((widgetSettings: WidgetSettings) => {\n const { activate } = this.container.get('$settings');\n if (widgetSettings.activate !== activate) {\n return this.setSettings(() => Promise.resolve({ activate }));\n }\n return Promise.resolve();\n });\n };\n\n return resetActivateProp()\n .then(() => {\n return services;\n })\n .then(\n ({\n router,\n components,\n }: {\n router: RoutingService;\n components: ComponentPlatform;\n }) => {\n const visibleNodes = components.nodes.visible;\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'false')\n );\n\n if (\n visibleNodes.filter(\n (c) =>\n c.attributes.properties.animation &&\n c.attributes.properties.animation !== 'none'\n ).length\n ) {\n return new Promise<RoutingService>((resolve) => {\n setTimeout(() => {\n resolve(router);\n }, 200);\n });\n }\n\n return Promise.resolve(router);\n }\n )\n .then((router: RoutingService) => router.stop());\n }\n\n private setTriggerState(open: boolean) {\n this.outlets.forEach((outlet) => {\n const {\n options: { triggerDOMElement, triggerOptions },\n } = outlet;\n const { openTooltip, closedTooltip } = (triggerOptions as BadgeOptions) || {};\n if (triggerDOMElement) {\n open\n ? setActive(triggerDOMElement, openTooltip)\n : setInactive(triggerDOMElement, closedTooltip);\n }\n });\n }\n\n deactivate() {\n this.subs.forEach((s) => s());\n\n const promises: Promise<void>[] = [];\n this.outlets.forEach((outlet) => promises.push(outlet.dispose()));\n\n return readStorage<string>(\n this.container,\n STICKY_WIDGET_STORAGE_KEY,\n StorageMedium.Local\n ).then((value) => {\n /**\n * Remove stored sticky widget from implementation's localStorage if applicable\n */\n if (value === this.widget.name) {\n return createStorageWriter(\n this.container,\n STICKY_WIDGET_STORAGE_KEY,\n StorageCategory.Necessary,\n {\n medium: StorageMedium.Local,\n scope: StorageScope.Implementation,\n }\n )\n .then((write) => write())\n .then(() => Promise.all(promises));\n }\n return Promise.all(promises);\n });\n }\n}\n"],"names":["SlideDirection","determineSlideDirection","currentRouteName","nextRouteName","routeRanking","Switch","views","location","render","React","RouteSwitch","__spreadProps","__spreadValues","key","name","path","Route","StyledViewContainer","styled","StyledView","Grid","p","routeHierarchy","AnimatedView","_a","_b","className","other","__objRest","routeName","setRouteName","useState","transitionDirection","setTransitionDirection","nextRoute","useRouteData","router","useRouter","properties","useProperties","context","useContext","container","useContainer","node","useComponentNode","gap","columns","animation","scrollable","areaProperties","scrollableCss","elem","useScroll","renderView","transitionState","direction","animationStyles","getAnimation","childNode","appendClassNames","Component","transitionComposer","TransitionGroup","child","Transition","state","View","styling","css","paddedBorderTabStyle","StyledAnimatedView","NonResolvedComponentWrapper","_c","ResolvableComponent","forwardRef","ref","children","ResolvedComponent","useComponent","type","id","useComponentDescriptor","StyledResolvableComponent","useMemo","filterCssPropsStyle","Typography","Suspense","useComponentNodeProperties","components","useComponentPlatform","setProperties","isMounted","useIsMounted","useEffect","unsubscribe","event","data","isVisible","size","branch","ariaLabel","tabIndex","extraContext","descriptor","setDescriptor","useColumns","indent","useLayout","visible","componentNode","asDescriptor","unmount","cardinal","contextFonts","accessibility","restContext","fonts","theme","ThemeProvider","ComponentNodeContext","ComponentPropertyContext","props","cssProps","filterCssProps","DetachedComponent","builder","setNode","createdNode","n","detachedComponent","NotFound","showSearch","themeContext","useTheme","settings","acc","searchComponentProps","searchNode","notFoundNode","renderSymbol","symbol","content","triggerTabHandler","triggerDOMElement","toggleTabbing","element","tabbing","handleKeydown","e","handleClick","createTriggerElement","options","widgetName","label","tooltip","symbolHtml","setInactive","elements","title","setLoading","setActive","TriggerType","determineProvidedElements","widgetDOMElement","determineTriggerType","triggerDefinition","prepareDOMElements","providedWidgetElement","providedTriggerElement","waitWithReplace","providedElements","triggerType","cachedOriginals","output","triggerElement","widgetElement","MODALS_STORAGE_KEY","ViewOutlet","__publicField","widget","widgetDOMElements","module","notifyDataLoaded","widgets","readStorage","StorageMedium","modals","modal","w","closedTooltip","openTooltip","triggerOptions","removeTriggerListeners","_d","STORAGE_KEY","convertSettingsToAttributes","attributes","LocalStorageChangesetProvider","storageWriter","createStorageWriter","StorageCategory","target","lock","bag","keys","items","existingIndex","indexToRemove","platform","item","rules","ComponentQuery","createPlatform","localStorage","providers","ComponentPlatform","destructComponentModel","createComponentModel","WidgetState","createSiteProvider","site","forceHttps","parseLocation","href","link","createRoutingService","RoutingService","HistoryMode","initialPath","mode","basePath","createStorageService","StorageProvider","createServiceClient","ServiceClient","ServiceProxy","events","projection","proxy","client","createActionResolver","ActionResolver","createComponentResolver","ComponentResolver","createComponentPlatform","SETTINGS_STORAGE_KEY","OPEN_STORAGE_KEY","STICKY_WIDGET_STORAGE_KEY","Widget","WidgetType","activationData","activate","supportBootstrapping","promises","actionResolver","origin","action","value","switchViewNodes","viewNode","initialRoute","previous","next","prevData","nextData","notFoundView","removeNullAndUndefinedValues","attachData","trigger","uuid","withRenderState","outletOptions","swap","isReady","watcher","mutations","observer","outlet","updatedTrigger","renderState","WidgetRenderState","input","renderData","fn","write","override","updated","onWidgetUrl","readSessionOpen","readLocalOpen","routing","localOpen","newState","invoke","writeSessionOpen","writeLocalOpen","previousRenderState","services","widgetSettings","visibleNodes","c","resolve","open","s","StorageScope"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAY,IAAAA,uBAAAA,OACRA,EAAA,OAAO,QACPA,EAAA,QAAQ,SAFAA,IAAAA,MAAA,CAAA,CAAA;AAiDL,MAAMC,KAA0B,CACnCC,GACAC,GACAC,MAGI,OAAOA,EAAaF,MAAsB,YAC1C,OAAOE,EAAaD,MAAmB,YACvCC,EAAaF,KAAoBE,EAAaD,KAEvC,SAEJ,SCnDLE,KAA0B,CAAC,EAAE,OAAAC,GAAO,UAAAC,GAAU,QAAAC,QAE3C,gBAAAC,EAAA,cAAAC,IAAA;AAAA,EACG,UACIH,KACMI,EAAAC,EAAA,IACOL,IADP;AAAA,IAEI,UAAUA,EAAS,SAAS,MAAM,GAAG,EAAE;AAAA,EAAA;AAE3C,GAGT;AAAA,EACG,GAAG,OAAO,KAAKD,CAAK,EAAE,OAAO,CAACO,MAAQ,CAAC,CAACP,EAAMO,GAAK,IAAI;AAAA,EACvD,GAAG,OAAO,KAAKP,CAAK,EAAE,OAAO,CAACO,MAAQ,CAACP,EAAMO,GAAK,IAAI;AAAA,EACxD,IAAI,CAACC,MAAS;AACN,QAAA,EAAE,MAAAC,EAAK,IAAIT,EAAMQ;AAEvB,SAAKC,IAID,MAAM,QAAQA,CAAI,IACXA,EAAK,IAAI,CAACA,MACZ,gBAAAN,EAAA,cAAAO,GAAA;AAAA,IAAM,KAAKF;AAAA,IAAM,OAAK;AAAA,IAAC,MAAMC;AAAAA,IAAM,QAAQ,MAAMP,EAAOM,CAAI;AAAA,EAAG,CAAA,CACnE,IAEG,gBAAAL,EAAA,cAAAO,GAAA;AAAA,IAAM,KAAKF;AAAA,IAAM,OAAK;AAAA,IAAC,MAAAC;AAAA,IAAY,QAAQ,MAAMP,EAAOM,CAAI;AAAA,EAAA,CAAG,IAR3D,gBAAAL,EAAA,cAAAO,GAAA;AAAA,IAAM,KAAKF;AAAA,IAAM,QAAQ,MAAMN,EAAOM,CAAI;AAAA,EAAA,CAAG;AAS5D,CAAA,CACL,GCdFG,KAAsBC,EAAO;AAAA;AAAA;AAAA;AAAA,GAM7BC,KAAaD,EAAOE,EAAI;AAAA;AAAA;AAAA;AAAA,MAIxB,CAACC,MAAM,CAAC,CAACA,EAAE,gBAAgBA,EAAE;AAAA,MAC7B,CAACA,MAAM,CAAC,CAACA,EAAE,iBAAiBA,EAAE;AAAA,GAG9BC,KAA+B;AAAA,EACjC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,cAAc;AAClB,GAEMC,KAAgC,CAACC,MAAiC;AAAjC,MAAAC,IAAAD,GAAE,aAAAE,IAAY,OAAdD,GAAqBE,IAAAC,EAArBH,GAAqB,CAAnB;AACrC,QAAM,CAACI,GAAWC,CAAY,IAAIC,EAAS,OAAO,GAC5C,CAACC,GAAqBC,CAAsB,IAAIF,EAAS/B,GAAe,KAAK,GAC7EkC,IAAYC,MACZC,IAASC,MAETC,IAAaC,MACbC,IAAUC,MACVC,IAAYC,KACZC,IAAOC,MAEP,EAAE,KAAAC,IAAM,IAAQ,IAAAN,GAC6DhB,IAAAc,GAA3E,WAAAS,IAAU,GAAG,WAAAC,IAAY,QAAQ,YAAAC,IAAa,OAA6BzB,GAAnB0B,IAAAtB,EAAmBJ,GAAnB,CAAxD,WAAa,aAAoB,gBAEnC,CAAC2B,GAAeC,CAAI,IAAIC,GAAUJ,CAAU;AAE9C,MAAA,CAACL,KAAQ,CAACR;AACH,WAAA;AAGL,QAAA,EAAE,UAAA7B,EAAa,IAAA6B;AAErB,EAAIF,EAAU,SAASL,KAAaK,EAAU,SAAS,MAAMc,MACzDf,EAAuBhC,GAAwB4B,GAAWK,EAAU,MAAMZ,EAAc,CAAC,GACzFQ,EAAaI,EAAU,IAAI;AAG/B,QAAM,EAAE,OAAA5B,EAA0B,IAAAoC,EAAU,IAAI,WAAW;AAE3D,MAAI,CAAC,OAAO,KAAKpC,CAAK,EAAE;AACb,WAAA;AAGX,QAAMgD,IAAa,CAACxC,GAAcyC,GAAuBC,MAA+B;AAC9E,UAAAC,IAAkBC,EAAaH,GAAiBC,CAAS,GACzDG,IAAYf,EAAK,YAAY9B,CAAI,EAAE;AAEzC,WACK,gBAAAL,EAAA,cAAAU,IAAAR,EAAAC,EAAAD,EAAAC,IAAA,IACOe,IACAuB,IAFP;AAAA,MAGG,eAAAC;AAAA,MACA,KAAKC;AAAA,MACL,SAAAL;AAAA,MACA,KAAAD;AAAA,QACIW,IAPP;AAAA,MAQG,WAAWG,EAAiBlC,GAAW,aAAa;AAAA,IAAA,IAEnD,gBAAAjB,EAAA,cAAAoD,IAAA;AAAA,MAAU,IAAIF,EAAU;AAAA,MAAI,QAAO;AAAA,IAAU,CAAA,CAClD;AAAA,EAAA,GAIFD,IAAe,CAACH,GAAuBC,MAA+B;AACpE,QAAAR,MAAc,WAAWA,MAAc;AAChC,aAAA;AAAA,QACH,cAAcc,GAAmB;AAAA,UAC7BP;AAAA,UACAP;AAAA,UACAQ;AAAA,QACJ;AAAA,QACA,CAAC,eAAeD;AAAA,MAAA;AAAA,EAGxB;AAGJ,SACK,gBAAA9C,EAAA,cAAAQ,IAAA;AAAA,IAAoB,WAAU;AAAA,EAAA,GAC1B,gBAAAR,EAAA,cAAAsD,IAAA;AAAA,IACG,WAAW;AAAA,IACX,cAAc,CAACC,MACXvD,EAAM,aAAauD,GAAO,EAAE,WAAWhC,GAAqB;AAAA,EAAA,GAG/D,gBAAAvB,EAAA,cAAAwD,IAAA;AAAA,IACG,KAAKpC;AAAA,IACL,SAAS,EAAE,OAAO,KAAK,MAAM,IAAI;AAAA,IACjC,SAAS,CAACe,MAAsBA,KAAAA,gBAAAA,EAAM;AAAA,IACtC,eAAe;AAAA,IACf,WAAW5C,GAAe;AAAA,EAAA,GAGzB,CAACkE,GAAyB,EAAE,WAAAV,QACxB,gBAAA/C,EAAA,cAAAJ,IAAA;AAAA,IACG,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAQ,CAACO,MAASwC,EAAWxC,GAAMoD,GAAOV,CAAS;AAAA,EAAA,CACvD,CAER,CACJ,CACJ;AAER,GC5HMrC,KAAaD,EAAOE,EAAI;AAAA,MACxB,CAACC,MAAM,CAAC,CAACA,EAAE,iBAAiBA,EAAE;AAAA,GAG9B8C,KAAwB,CAAC3C,MAAiC;AAAjC,MAAAC,IAAAD,GAAE,aAAAE,IAAY,OAAdD,GAAqBE,IAAAC,EAArBH,GAAqB,CAAnB;AAC7B,QAAMa,IAAaC,MACbC,IAAUC,MACVC,IAAYC,KACZC,IAAOC,MAEP,EAAE,OAAAvC,EAA0B,IAAAoC,EAAU,IAAI,WAAW,GAErD,EAAE,KAAAI,IAAM,IAAQ,IAAAN,GAC6DhB,IAAAc,GAA3E,WAAAS,IAAU,GAAG,WAAAC,IAAY,QAAQ,YAAAC,IAAa,OAA6BzB,GAAnB0B,IAAAtB,EAAmBJ,GAAnB,CAAxD,WAAa,aAAoB,gBAEnC,CAAC2B,GAAeC,CAAI,IAAIC,GAAUJ,CAAU;AAElD,SAAKL,IAKA,gBAAAnC,EAAA,cAAAU,IAAAR,EAAAC,IAAA,IACOe,IACAuB,IAFP;AAAA,IAGG,eAAAC;AAAA,IACA,KAAKC;AAAA,IACL,SAAAL;AAAA,IACA,KAAAD;AAAA,IACA,WAAWc,EAAiBlC,GAAW,aAAa;AAAA,EAAA,IAEnD,gBAAAjB,EAAA,cAAAJ,IAAA;AAAA,IACG,OAAAC;AAAA,IACA,QAAQ,CAACQ,MAAS;AACd,YAAM6C,IAAYf,EAAK,YAAY9B,CAAI,EAAE;AACzC,aAAQ,gBAAAL,EAAA,cAAAoD,IAAA;AAAA,QAAU,IAAIF,EAAU;AAAA,QAAI,MAAMA;AAAA,QAAW,QAAO;AAAA,MAAA,CAAU;AAAA,IAC1E;AAAA,EACJ,CAAA,CACJ,IApBO;AAsBf,GCrDaS,IAAU,CAAC/C,MAAuE;;AAAA,SAAAgD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAQ5EhD,EAAE,iBACX,GAAGA,EAAE,iBAAiB,OAAOA,EAAE,kBAAkBA,EAAE,iBAAiB,KAAK,MACzE,QAAQA,EAAE;AAAA;AAAA,QAEdG,IAAAH,EAAE,MAAM,UAAR,gBAAAG,EAAe,SACjB;AAAA,mBACeH,EAAE,MAAM,MAAM;AAAA;AAAA;AAAA,qBAGZA,EAAE,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA,QAI7BI,IAAAJ,EAAE,MAAM,UAAR,gBAAAI,EAAe,SACjB;AAAA,iBACaJ,EAAE,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA,UAIrBiD,GAAqBjD,CAAC;AAAA;AAAA;AAAA,GAInBF,KAAaD,EAAOiD,EAAI;AAAA,MAC/B,CAAC9C,MAAM+C,EAAQ/C,CAAC;AAAA,GAGTkD,KAAqBrD,EAAOK,EAAY;AAAA,MAC/C,CAACF,MAAM+C,EAAQ/C,CAAC;AAAA,GCtBhBmD,KAA8BtD,EAAO;AAAA;AAAA,MAErC,CAACG,MACC;;AAAA,kBAAOG,IAAAH,EAAE,MAAM,WAAR,gBAAAG,EAAgB,YAAY,eACnC6C;AAAA,sBACa5C,IAAAJ,EAAE,MAAM,WAAR,gBAAAI,EAAgB;AAAA,kCACJgD,IAAApD,EAAE,MAAM,WAAR,gBAAAoD,EAAgB;AAAA;AAAA;AAAA,MAE3C,CAACpD,MACC,OAAOA,EAAE,MAAM,gBAAiB,eAAe,kBAAkBA,EAAE,MAAM;AAAA,IAC7E,CAACA,MAAM+C,EAAQ/C,CAAC;AAAA,GAGdqD,KAAsBC;AAAA,EACxB,CAACnD,GAAwCoD,MAAQ;AAAhD,QAAAnD,IAAAD,GAAE,aAAAE,IAAY,IAAI,UAAAmD,MAAlBpD,GAA+BE,IAAAC,EAA/BH,GAA+B,CAA7B,aAAgB;AACf,UAAMqD,IAAoBC,MACpB,EAAE,MAAAjE,GAAM,MAAAkE,GAAM,IAAAC,MAAOC,GAAuB,GAE5CC,IAA4BC,GAAQ,MAClCN,IACO5D,EAAO4D,CAAiB;AAAA,sBACzBV;AAAA,sBACAiB;AAAA,oBAGH,MACR,CAACP,CAAiB,CAAC;AAElB,WAAA,OAAOA,KAAsB,cACtB,OAGPA,MAAsB,QAAQK,MAA8B,OACxD,QAAQ,IAAI,aAAa,eAEpB,gBAAA1E,EAAA,cAAA+D,IAAA7D,EAAAC,EAAA,IACOe,IADP;AAAA,MAEG,OAAO,SAASqD,qBAAwBlE,mBAAsBmE;AAAA,MAC9D,WAAWrB,EAAiBlC,GAAW,+BAA+B;AAAA,IAAA,IAErE,gBAAAjB,EAAA,cAAA6E,IAAA;AAAA,MAAW,SAAQ;AAAA,IAAA,GAAK,6BAA2B,CACxD,IAGD,OAIN,gBAAA7E,EAAA,cAAA8E,IAAA;AAAA,MAAS,UAAU;AAAA,IAAA,GACf,gBAAA9E,EAAA,cAAA0E,GAAAxE,EAAAC,EAAA;AAAA,MACG,KAAAgE;AAAA,OACIjD,IAFP;AAAA,MAGG,WAAWiC;AAAA,QACPlC;AAAA,QACA;AAAA,QACA,oBAAoBZ;AAAA,MACxB;AAAA,IAAA,IAEC+D,CACL,CACJ;AAAA,EAER;AACJ,GC/EeW,KAAA,CAACP,MAAe;AACrB,QAAArC,IAAOC,GAAiBoC,CAAE,GAC1BQ,IAAaC,MACb,CAACpD,GAAYqD,CAAa,IAAI5D,EAAkC,CAAE,CAAA,GAClE6D,IAAYC;AAElB,SAAAC,EAAU,MAAM;AACR,IAAAlD,KAAQgD,EAAU,WACJD,EAAA/C,EAAK,WAAW,UAAU;AAAA,EAE7C,GAAA,CAACA,GAAMqC,GAAIW,CAAS,CAAC,GAExBE,EAAU,MAAM;AACZ,QAAIL,GAAY;AACN,YAAAM,IAAcN,EAAW,OAAO;AAAA,QAClC;AAAA,QACA,CAACO,GAAOC,MAAS;AACb,UAAIrD,MAASqD,EAAK,QAAQL,EAAU,WAClBD,EAAAM,EAAK,KAAK,WAAW,UAAU;AAAA,QAErD;AAAA,MAAA;AAGJ,aAAO,MAAM;AACG,QAAAF;MAAA;AAAA,IAEpB;AAAA,KACD,CAACN,GAAYG,GAAWX,GAAIrC,CAAI,CAAC,GAE7BN;AACX,GCPM4D,KAAY,CAACC,GAAYvD,MACvBA,IACO,KAEP,OAAOuD,KAAS,WACTA,MAAS,SAEbA,IAAO,GAGZtC,KAAYc;AAAA,EACd,CACInD,GACAoD,MACC;AAFD,QAAAnD,IAAAD,GAAE,aAAAE,IAAY,IAAI,IAAAuD,GAAI,QAAAmB,GAAQ,MAAAxD,GAAM,WAAAyD,GAAW,UAAAC,GAAU,SAASC,MAAlE9E,GAAmFE,IAAAC,EAAnFH,GAAmF,CAAjF,aAAgB,MAAI,UAAQ,QAAM,aAAW,YAAU;AAGzD,UAAMgE,IAAaC,MACbhD,IAAYC,KACZ,CAAC6D,GAAYC,CAAa,IAAI1E,EAA8B,GAE5DgB,IAAU2D,MACVlE,IAAUC,GAAWwC,CAAE,GACvB3C,IAAakD,GAA2BP,CAAE,GAC1C,EAAE,MAAAkB,IAAO,QAAQ,QAAAQ,IAAS,MAAMC,GAAU3B,CAAE,GAC5C4B,IAAUX,GAAUC,GAAMvD,CAAI;AA0BhC,QAxBJkD,EAAU,MAAM;AACZ,UAAIL;AACI,YAAAR,KAAM,CAACrC,GAAM;AACb,gBAAMkE,IAAgBrB,EAAW,MAAM,IAAIR,CAAE;AAC7C,cAAI6B,MACcL,EAAAM,GAAaD,GAAeV,CAAM,CAAC,GAE7CS,IAAS;AACH,kBAAAG,IAAUF,EAAc,MAAMpE,CAAS;AAC7C,mBAAO,MAAM;AACD,cAAAsE;YAAA;AAAA,UAEhB;AAAA,mBAEGpE,GAAM;AACC,UAAA6D,EAAAM,GAAanE,GAAMwD,CAAM,CAAC;AAClC,gBAAAY,IAAUpE,EAAK,MAAMF,CAAS;AACpC,iBAAO,MAAM;AACD,YAAAsE;UAAA;AAAA,QAEhB;AAAA;AAAA,OAEL,CAACvB,GAAYR,GAAIrC,GAAMiE,CAAO,CAAC,GAE9B,CAACL,KAAc,CAACK;AACT,aAAA;AAIL,UAKFrF,IANmBZ,IAAA,IAAK4B,IAAa+D,KAAgB,CAAI,IAEzD;AAAA,gBAAAU;AAAA,MACA,OAAOC,IAAe,CAAC;AAAA,MACvB,eAAAC,IAAgB,CAAC;AAAA,QAEjB3F,GADG4F,IAAAxF,EACHJ,GADG;AAAA,MAHH;AAAA,MACA;AAAA,MACA;AAAA,QAIE6F,IAAQ;AAAA,MACV,MAAMH,EAAa;AAAA,MACnB,MAAMA,EAAa,QAAQ;AAAA,MAC3B,OAAOA,EAAa,SAAS;AAAA,MAC7B,QAAQA,EAAa,UAAU;AAAA,MAC/B,QAAQA,EAAa,UAAU;AAAA,MAC/B,OAAOA,EAAa,SAAS;AAAA,MAC7B,MAAMA,EAAa,QAAQ;AAAA,IAAA,GAGzBI,IAAe3G,EAAAC,EAAA,IACdwG,IADc;AAAA,MAEjB,OAAAC;AAAA,MACA,eAAezG,EAAA,IACRuG;AAAA,IACP;AAGA,WAAA,OAAOF,KAAa,aACpBK,EAAM,QAAQ;AAAA,MACV,UAAAL;AAAA,MACA,OAAO,GAAGA;AAAA,MACV,QAAQ,GAAGA,IAAW;AAAA,MACtB,QAAQ,GAAGA,IAAW;AAAA,MACtB,OAAO,GAAGA,IAAW;AAAA,IAAA,IAKxB,gBAAAxG,EAAA,cAAA8G,IAAA;AAAA,MAAc,OAAAD;AAAA,IACX,GAAA,gBAAA7G,EAAA,cAAC+G,GAAqB,UAArB;AAAA,MAA8B,OAAOhB;AAAA,IAClC,GAAA,gBAAA/F,EAAA,cAACgH,GAAyB,UAAzB;AAAA,MAAkC,OAAOnF;AAAA,IAAA,IACpC,MAAM;AACJ,YAAMoF,IAAQ9G,EAAA;AAAA,QACV,cACIuF,MAAS,SAASpD,IAAU,KAAK,IAAIoD,GAAgBpD,CAAO;AAAA,QAChE,eAAe4D;AAAA,QACf,aAAaH,EAAW;AAAA,QACxB,gBAAgBA,EAAW;AAAA,QAC3B,uBAAuBA,EAAW;AAAA,QAClC,cAAcH;AAAA,QACd,UAAAC;AAAA,QACA,IAAIE,EAAW;AAAA,QACf,MAAMlE,KAAcA,EAAW;AAAA,SAC5BX;AAEP,cAAQ6E,EAAW,MAAM;AAAA,QACrB,KAAK;AACD,iBAAO,OAAOlE,EAAW,aAAc,YACnCA,EAAW,cAAc,SACxB,gBAAA7B,EAAA,cAAA8D,IAAA5D,EAAAC,EAAA,IAAuB8G,IAAvB;AAAA,YAA8B,WAAAhG;AAAA,UAAA,EAAsB,IAEpD,gBAAAjB,EAAA,cAAAU,IAAAR,EAAAC,EAAA,IAAe8G,IAAf;AAAA,YAAsB,WAAAhG;AAAA,UAAA,EAAsB;AAAA,QAGrD,SAAS;AACC,gBAAAiG,IAAWC,GAAetF,CAAU;AAE1C,iBACK,gBAAA7B,EAAA,cAAAiE,IAAA/D,EAAAC,IAAA;AAAA,YACG,KAAAgE;AAAA,aACI8C,IACAC,IAHP;AAAA,YAIG,WAAAjG;AAAA,UAAA,EACJ;AAAA,QAER;AAAA,MACJ;AAAA,IAAA,GAER,CAAA,CACJ,CACJ;AAAA,EAER;AACJ,GC1JMmG,KAAqC,CAAC,EAAE,SAAAC,QAAc;AACxD,QAAMpF,IAAYC,KACZ,CAACC,GAAMmF,CAAO,IAAIhG,EAA+B,IAAI;AAsB3D,SApBA+D,EAAU,MAAM;AACZ,IAAApD,EAAU,SAAS,YAAY,EAAE,KAAK,CAAC+C,MAC5BqC,EAAQrC,CAAU,EAAE,KAAK,CAACuC,MAAgB;AAC7C,MAAAD,EAAQC,CAAW;AAAA,IAAA,CACtB,CACJ;AAAA,EACL,GAAG,CAAE,CAAA,GAELlC,EAAU,MACC,MAAM;AACT,IAAIlD,KACAF,EAAU,SAAS,YAAY,EAAE,KAAK,CAAC+C,MAAkC;AACrE,MAAAA,EAAW,MAAM,WAAWA,EAAW,MAAM,SAAS;AAAA,QAClD,CAACwC,MAAMA,EAAE,OAAOrF,EAAK;AAAA,MAAA;AAAA,IACzB,CACH;AAAA,EACL,GAEL,CAACA,CAAI,CAAC,GAEJA,IAIG,gBAAAnC,EAAA,cAAAoD,IAAA;AAAA,IAAU,IAAIjB,EAAK;AAAA,IAAI,MAAAA;AAAA,IAAY,QAAO;AAAA,EAAA,CAAU,IAHjD;AAIf;;;8CChCMiF,KAAoBpH,EAAM,KAAK,MAAM,QAA8B,QAAA,EAAA,KAAA,MAAAyH,EAAA,CAAA,GAKnEC,KAA4B,CAAC,EAAE,YAAAC,IAAa,SAAY;AAC1D,QAAMC,IAAeC,MACf5F,IAAYC;AAGd,SAAA,gBAAAlC,EAAA,cAACA,EAAM,UAAN;AAAA,IAAe,UAAU;AAAA,EAAA,GACrB,gBAAAA,EAAA,cAAAoH,IAAA;AAAA,IACG,SAAS,CAACpC,MACC/C,EAAU,IAAI,UAAU,EAAE,KAAK,CAAC6F,MAAkB;;AAC/C,YAAA,EAAE,YAAAjG,GAAY,SAAAE,MAAY,OAAO,KAAK+F,EAAS,UAAU,EAAE;AAAA,QAI7D,CAACC,GAAK3H,OACE0H,EAAS,WAAW1H,GAAK,SAAS,gBAC9B2H,EAAA,aAAaD,EAAS,WAAW1H,GAAK,YACtC2H,EAAA,UAAUD,EAAS,WAAW1H,GAAK,UAGpC2H;AAAA,QAEX,EAAE,YAAY,CAAA,GAAI,SAAS,GAAG;AAAA,MAAA;AAGlC,MAAAlG,EAAW,aAAa8F;AACxB,YAAMxF,IAAO6C,EAAW,WAAW,QAAQ,EAAE,UAAU,IAAM;AAM7D,UALA7C,EAAK,OAAO,kBACZA,EAAK,YAAY;AAAA,QACb,MAAM;AAAA,MAAA,CACT,GAEGwF,GAAY;AACZ,cAAMK,IAAuB,OAAO,KAAKF,EAAS,UAAU,EAAE;AAAA,UAC1D,CAACC,GAAK3H,MACE0H,EAAS,WAAW1H,GAAK,SAAS,WAC3B0H,EAAS,WAAW1H,GAAK,aAG7B2H;AAAA,UAEX,CAAC;AAAA,QAAA,GAECE,IAAajD,EAAW,WAAW,UAAU,EAAE,UAAU,IAAM;AACrE,QAAAiD,EAAW,YAAY,EAAE,MAAM,OAAQ,CAAA,GACvCA,EAAW,gBAAgB9H,EAAA;AAAA,UACvB,uBAAqBY,IAAA6G,KAAA,gBAAAA,EAAc,UAAd,gBAAA7G,EAAqB,WAAU;AAAA,WACjDiH,EACN,GACD7F,EAAK,YAAY8F,CAAU;AAAA,MAC/B;AAEA,YAAMC,IAAelD,EAAW,WAAW,aAAa,EAAE,UAAU,IAAM;AAC1E,aAAAkD,EAAa,YAAY,EAAE,MAAM,OAAQ,CAAA,GACzCA,EAAa,gBAAgBrG,CAAU,GACvCqG,EAAa,aAAanG,CAAO,GACjCI,EAAK,YAAY+F,CAAY,GAEtB/F;AAAA,IAAA,CACV;AAAA,EAET,CAAA,CACJ;AAER,GCxEagG,KAAe,CAACC,MAA+C;AACxE,MAAIA,GAAQ;AACF,UAAA,EAAE,MAAA7D,GAAM,SAAA8D,EAAY,IAAAD;AAC1B,YAAQ7D,GAAM;AAAA,MACV,KAAK;AACD,eAAO,+BAA+B8D;AAAA,MAC1C,KAAK;AACD,eAAO,oEAAoEA;AAAA,MAC/E;AACW,eAAA;AAAA,IACf;AAAA,EACJ;AACJ,GAEMC,KAAoB,CAACC,MAAmC;AACpD,QAAAC,IAAgB,CAACC,GAAsBC,MAAqB;AAC9D,IAAI,CAACD,MAIDC,IACQD,EAAA,UAAU,IAAI,gBAAgB,IAE9BA,EAAA,UAAU,OAAO,gBAAgB;AAAA,EAC7C,GAGEE,IAAgB,CAACC,MAAqB;AACpC,IAAAA,EAAE,QAAQ,QACVJ,EAAcD,GAAmB,EAAI,IAGjCK,EAAE,QAAQ,WACV,SAAS,iBACT,SAAS,cAAc,UAAU,SAAS,gBAAgB,KAG9DJ,EAAcD,GAAmB,EAAK;AAAA,EAC1C,GAGEM,IAAc,CAACD,MAAkB;AACnC,IACI,SAAS,iBACT,SAAS,cAAc,UAAU,SAAS,gBAAgB,KAC1D,SAAS,cAAc,UAAU,SAAS,gBAAgB,KAI9DJ,EAAcD,GAAmB,EAAK;AAAA,EAAA;AAGjC,kBAAA,iBAAiB,WAAWI,CAAa,GACzC,SAAA,iBAAiB,SAASE,CAAW,GAEvC,MAAM;AACA,aAAA,oBAAoB,WAAWF,CAAa,GAC5C,SAAA,oBAAoB,SAASE,CAAW;AAAA,EAAA;AAEzD;AAUgB,SAAAC,GAAqBL,GAAsBM,GAAgC;AACjF,QAAA,EAAE,QAAAX,GAAQ,YAAAY,GAAY,OAAAC,IAAQ,IAAI,WAAArD,IAAY,IAAI,SAAAsD,IAAU,GAAO,IAAAH;AAEjE,EAAAN,EAAA,UAAU,IAAI,gBAAgB,GAC9BA,EAAA,UAAU,IAAI,UAAUO,GAAY,GAExCC,EAAM,UACER,EAAA,UAAU,IAAI,iBAAiB,GAGvC7C,EAAU,UAAU,CAAC6C,EAAQ,aAAa,YAAY,KAC9CA,EAAA,aAAa,cAAc7C,CAAS,GAG5CA,EAAU,UAAU,CAAC6C,EAAQ,aAAa,UAAU,KAC5CA,EAAA,aAAa,YAAY,GAAG,GAGpCS,EAAQ,UAAU,CAACT,EAAQ,aAAa,OAAO,KACvCA,EAAA,aAAa,SAASS,CAAO;AAGnC,QAAAC,IAAahB,GAAaC,CAAM,KAAK;AAC3C,SAAAK,EAAQ,YAAY,GAAGU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAkBfF,EAAM,SAAS,SAASA,aAAiB,MAEjD,WAAW,MAAMR,KAAYA,EAAwB,UAAU,IAAI,iBAAiB,CAAC,GAE9EH,GAAkBG,CAAO;AACpC;AAEgB,SAAAW,GAAYC,GAAuCC,GAAgB;AAC/E,EAAID,aAAoB,eAChBC,KACSD,EAAA,aAAa,SAASC,CAAK,GAE/BD,EAAA,UAAU,OAAO,eAAe,GAChCA,EAAA,UAAU,OAAO,gBAAgB,KACnCA,aAAoB,SAClBA,EAAA,QAAQ,CAAC,MAAM;AACpB,IAAIC,KACE,EAAA,aAAa,SAASA,CAAK,GAE/B,EAAA,UAAU,OAAO,eAAe,GAChC,EAAA,UAAU,OAAO,gBAAgB;AAAA,EAAA,CACtC;AAET;AACO,SAASC,GAAWF,GAAuC;AAC9D,EAAIA,aAAoB,eACXA,EAAA,UAAU,OAAO,eAAe,GAChCA,EAAA,UAAU,IAAI,gBAAgB,KAChCA,aAAoB,SAClBA,EAAA,QAAQ,CAACT,MAAM;AAClB,IAAAA,EAAA,UAAU,OAAO,eAAe,GAChCA,EAAA,UAAU,IAAI,gBAAgB;AAAA,EAAA,CACnC;AAET;AACgB,SAAAY,GAAUH,GAAuCC,GAAgB;AAC7E,EAAID,aAAoB,eAChBC,KACSD,EAAA,aAAa,SAASC,CAAK,GAE/BD,EAAA,UAAU,IAAI,eAAe,GAC7BA,EAAA,UAAU,OAAO,gBAAgB,KACnCA,aAAoB,SAClBA,EAAA,QAAQ,CAAC,MAAM;AACpB,IAAIC,KACE,EAAA,aAAa,SAASA,CAAK,GAE/B,EAAA,UAAU,IAAI,eAAe,GAC7B,EAAA,UAAU,OAAO,gBAAgB;AAAA,EAAA,CACtC;AAET;ACzJY,IAAAG,sBAAAA,OACRA,EAAA,SAAS,UACTA,EAAA,OAAO,QACPA,EAAA,QAAQ,SACRA,EAAA,cAAc,eAJNA,IAAAA,KAAA,CAAA,CAAA;AAOC,MAAAC,KAA4B,CACrCC,GACApB,MAEIoB,KAAoBpB,IACb,SAEPoB,IACO,cAEPpB,IACO,eAEJ,QAGEqB,KAAuB,CAACC,MAC5BA,IAGD,OAAOA,KAAsB,aAAaA,IACnC,SAEP,OAAOA,KAAsB,YAAY,CAAC,MAAM,QAAQA,CAAiB,IAClE,UAEJ,gBARI,UAeFC,KAAqB,CAC9BzJ,GACA0J,GACAC,GACAH,GACAI,IAA2B,OACA;;AAC3B,QAAMC,IAAmBR;AAAA,IACrBK;AAAA,IACAC;AAAA,EAAA,GAEEG,IAAcP,GAAqBC,CAAiB,GAEpDO,IAAkB;AAAA,IACpB,kBAAkBL,IAAwBA,EAAsB,UAAU,EAAI,IAAI;AAAA,IAClF,mBAAmBC,IACbA,EAAuB,UAAU,EAAI,IACrC;AAAA,EAAA,GAGJK,IAAmC;AAAA,IACrC,aAAAF;AAAA,IACA,iBAAAC;AAAA,IACA,kBAAkB,SAAS,cAAc,KAAK;AAAA,EAAA;AAGlD,UAAQF,GAAkB;AAAA,IACtB,KAAK,QAAuB;AACxB,MAAAG,EAAO,mBAAmBN,KAAyB,SAAS,cAAc,KAAK,GAC3EI,MAAgB,aAChBE,EAAO,oBAAoBL;AAE/B;AAAA,IACJ;AAAA,IACA,KAAK,aAA4B;AAE7B,UADAK,EAAO,mBAAmBN,KAAyB,SAAS,cAAc,KAAK,GAC3EI,MAAgB,UAAoB;AACpC,cAAMG,IAAiB,SAAS,KAAK,YAAY,SAAS,cAAc,GAAG,CAAC;AAC5E,QAAIH,MAAgB,WAChBG,EAAe,YAAYjK,IAE/BgK,EAAO,oBAAoBC;AAAA,MAC/B;AACA;AAAA,IACJ;AAAA,IACA,KAAK,cAA6B;AACxB,YAAAC,IAAgB,SAAS,cAAc,KAAK;AAClD,MAAAF,EAAO,mBAAmBE,GACtBJ,MAAgB,YAEFI,EAAA,MAAKP,KAAA,gBAAAA,EAAwB,OAAM,IAC7CC,KACAM,EAAc,MAAM,UAAU,SACNxJ,IAAAiJ,KAAA,gBAAAA,EAAA,eAAA,QAAAjJ,EAAY,YAAYwJ,IAEhDF,EAAO,WAAW,MAAM;;AACpB,SAAAtJ,IAAAiJ,KAAA,gBAAAA,EAAwB,eAAxB,QAAAjJ,EAAoC;AAAA,UAChCwJ;AAAA,UACAP;AAAA,WAEJO,EAAc,MAAM,WAChBP,KAAA,gBAAAA,EAAwB,MAAM,YAAW;AAAA,MAAA,MAGjDhJ,IAAAgJ,KAAA,gBAAAA,EAAwB,eAAxB,QAAAhJ,EAAoC;AAAA,QAChCuJ;AAAA,QACAP;AAAA,SAGRK,EAAO,gBAAgB,mBAAmBL,GAC1CK,EAAO,gBAAgB,oBAAoB,WAE3CA,EAAO,mBAAmB,SAAS,KAAK,YAAYE,CAAa,GACjEF,EAAO,oBAAoBL;AAE/B;AAAA,IACJ;AAAA,IACA,KAAK,QAAuB;AACxB,YAAMO,IAAgB,SAAS,KAAK,YAAY,SAAS,cAAc,KAAK,CAAC;AAE7E,UADAF,EAAO,mBAAmBE,GACtBJ,MAAgB,UAAoB;AACpC,cAAMG,IAAiB,SAAS,KAAK,YAAY,SAAS,cAAc,GAAG,CAAC;AAC5E,QAAIH,MAAgB,WAChBG,EAAe,YAAYjK,IAE/BgK,EAAO,oBAAoBC;AAAA,MAC/B;AACA;AAAA,IACJ;AAAA,EACJ;AAEO,SAAAD;AACX,GCtIMG,KAAqB;AA2BpB,MAAMC,GAAW;AAAA,EAIpB,YAAYxI,GAA6B8G,GAA4B;AAHrE,IAAA2B,EAAA;AACQ,IAAAA,EAAA,qBAA8B,CAAA;AAEG,SAAA,UAAA3B,GAChC,KAAA,YAAY9G,EAAU,YAAY,IAAI,GAC3C,KAAK,UAAU,SAAS,oBAAoB,KAAK,QAAQ,gBAAgB,GACzE,KAAK,UAAU,SAAS,qBAAqB,KAAK,QAAQ,iBAAiB;AAE3E,UAAM0I,IAAiB,KAAK,UAAU,IAAI,SAAS;AACnD,SAAK,QAAQ,iBAAiB,UAAU,IAAI,eAAe,GAC3D,KAAK,QAAQ,iBAAiB,UAAU,IAAI,UAAUA,EAAO,MAAM;AAEnE,UAAMC,IAAoB3I,EAAU,IAAI,mBAAmB,KAAK,CAAA;AAChE,IAAAA,EAAU,SAAS,qBAAqB;AAAA,MACpC,GAAG2I;AAAA,MACH,KAAK,QAAQ;AAAA,IAAA,CAChB;AAAA,EACL;AAAA,EAKA,SAAS;AACL,UAAM,EAAE,kBAAAjB,GAAkB,mBAAApB,MAAsB,KAAK,SAE/CoC,IAAiB,KAAK,UAAU,IAAI,SAAS;AAEnD,WAAIhB,EAAiB,aAAa,eAAe,MAAM,SAC5C,QAAQ,aAGfpB,KAAqB,KAAK,QAAQ,gBAAgBkB,EAAY,SAC9DF,GAAWhB,CAAiB,GAGzB,OAAO,wBACT,KAAK,CAACsC,MAAWA,EAAO,QAAQ,KAAK,WAAWlB,CAAgB,CAAC,EACjE,KAAK,MAAM;AAGR,UAFiBA,EAAA,aAAa,iBAAiB,MAAM,GAEjDpB,KAAqB,KAAK,QAAQ,gBAAgBkB,EAAY,OAAO;AAC/D,cAAAP,IAAW,KAAK,QAAQ,eAAgC;AAC9D,QAAAM,GAAUjB,GAAmBW,CAAO;AAAA,MACxC;AACiB,MAAA4B,GAAA,KAAK,WAAWnB,CAAgB;AAEjD,YAAMoB,IAAU,KAAK,UAAU,IAAI,cAAc,EAAE,QAAQ;AAE3D,MAAAC;AAAA,QACI,KAAK;AAAA,QACLR;AAAA,QACAS,EAAc;AAAA,MAAA,EAChB,KAAK,CAACC,MAAW;AACf,QAAIA,KACOA,EAAA,QAAQ,CAACC,MAAU;AACtB,UACIJ,EAAQ;AAAA,YACJ,CAACK,MAAcA,EAAE,SAASD,EAAM,QAAQC,EAAE,UAAU;AAAA,UAAA,KAGjDT,EAAA,OAAO,SAAS,uBAAuBQ,CAAK;AAAA,QACvD,CACH;AAAA,MACL,CACH;AAAA,IAAA,CACJ;AAAA,EACT;AAAA,EAEA,YAAYpC,GAAuB;AACzB,UAAA,EAAE,mBAAAR,EAAkB,IAAI,KAAK;AAEnC,QAAI,CAACA;AACD;AAGJ,IAAKA,EAAkB,aAAa,MAAM,KACpBA,EAAA,aAAa,QAAQ,QAAQ;AAGnD,UAAM,EAAE,MAAAlI,EAAK,IAAY,KAAK,UAAU,IAAI,SAAS,GAE/C,EAAE,OAAA4I,GAAO,QAAAb,GAAQ,WAAAxC,GAAW,eAAAyF,GAAe,aAAAC,EAAgB,IAAAvC,GAE3DwC,IAAiB,EAAE,eAAAF,GAAe,aAAAC;AACxC,SAAK,QAAQ,iBAAiBC;AAExB,UAAAC,IAAyB1C,GAAqBP,GAAmB;AAAA,MACnE,OAAAU;AAAA,MACA,QAAAb;AAAA,MACA,WAAAxC;AAAA,MACA,YAAYvF;AAAA,MACZ,SAASgL;AAAA,IAAA,CACZ;AACI,SAAA,YAAY,KAAKG,CAAsB;AAAA,EAChD;AAAA,EAEA,UAAU;AACN,WAAO,OAAO,yBAAa,KAAK,CAACX,MAAW;;AACxC,YAAM,EAAE,mBAAAtC,GAAmB,kBAAAoB,MAAqB,KAAK;AACrD,MAAAkB,EAAO,QAAQlB,CAAgB,GAE3B,KAAK,QAAQ,gBAAgB,oBACzBA,OACA5I,IAAA4I,EAAiB,eAAjB,QAAA5I,EAA6B;AAAA,QACzB,KAAK,QAAQ,gBAAgB;AAAA,QAC7B4I;AAAA,UAIR,KAAK,QAAQ,gBAAgB,qBACzBpB,OACAvH,IAAAuH,EAAkB,eAAlB,QAAAvH,EAA8B;AAAA,QAC1B,KAAK,QAAQ,gBAAgB;AAAA,QAC7BuH;AAAA,UAKP,KAAA,YAAY,QAAQ,CAACjD,MAAgB;AAC1B,QAAAA;MAAA,CACf,IAEgBtB,IAAA2F,EAAA,eAAA,QAAA3F,EAAY,YAAY2F,KACtB8B,IAAAlD,KAAA,gBAAAA,EAAA,eAAA,QAAAkD,EAAY,YAAYlD;AAAA,IAAiB,CAC/D;AAAA,EACL;AACJ;AC5IA,MAAMmD,IAAc,cAadC,KAA8B,CAChC7D,MACmC;AACnC,QAAM8D,IAA+C,EAAE,MAAM9D,EAAS,KAAK;AAC3E,SAAIA,EAAS,WAAW,OAAOA,EAAS,WAAY,eAChD8D,EAAW,UAAU9D,EAAS,UAE9BA,EAAS,cAAc,OAAOA,EAAS,cAAe,eACtD8D,EAAW,aAAa9D,EAAS,aAEjCA,EAAS,UAAU,OAAOA,EAAS,UAAW,eAC9C8D,EAAW,SAAS9D,EAAS,SAG1B8D;AACX;AAEO,MAAMC,GAA2D;AAAA,EACpE,YAAoB5J,GAA8B6J,GAA8B;AAA5D,SAAA,YAAA7J,GAA8B,KAAA,gBAAA6J;AAAA,EAA+B;AAAA,EAEjF,OAAO,OAAO7J,GAA8D;AACxE,WAAO8J,EAAoB9J,GAAWyJ,GAAaM,EAAgB,WAAW;AAAA,MAC1E,QAAQf,EAAc;AAAA,IAAA,CACzB,EAAE,KAAK,CAACa,MAAkB,IAAID,GAA8B5J,GAAW6J,CAAa,CAAC;AAAA,EAC1F;AAAA,EAEA,MACI1L,GACA6L,GACAL,GACA7C,GACY;AACL,WAAAmD,EAAK,IAAI,EAAE,MACPlB;AAAA,MACH,KAAK;AAAA,MACLU;AAAA,MACAT,EAAc;AAAA,IAAA,EAChB,KAAK,CAACkB,IAAM,OAAO;AACjB,YAAM,EAAE,MAAAC,IAAO,IAAI,OAAAC,IAAQ,OAAOF,GAC5BG,IAAgBF,EAAK,QAAQhM,CAAG;AACtC,aAAIkM,IAAgB,MACXF,EAAA,OAAOE,GAAe,CAAC,GAEhCF,EAAK,KAAKhM,CAAG,GACbiM,EAAMjM,KAAO;AAAA,QACT,SAAA2I;AAAA,QACA,YAAY4C,GAA4BC,CAAU;AAAA,QAClD,OAAOK,EAAO;AAAA,MAAA,GAEX,KAAK,cAAc,EAAE,MAAAG,GAAM,OAAAC,EAAO,CAAA;AAAA,IAAA,CAC5C,CACJ;AAAA,EACL;AAAA,EAEA,OAAOjM,GAA2B;AACvB,WAAA8L,EAAK,IAAI,EAAE,MACPlB;AAAA,MACH,KAAK;AAAA,MACLU;AAAA,MACAT,EAAc;AAAA,IAAA,EAChB,KAAK,CAACkB,IAAM,OAAO;AACjB,YAAM,EAAE,MAAAC,IAAO,IAAI,OAAAC,IAAQ,OAAOF,GAC5BI,IAAgBH,EAAK,QAAQhM,CAAG;AACtC,UAAImM,IAAgB;AACX,eAAAH,EAAA,OAAOG,GAAe,CAAC,GAC5B,OAAOF,EAAMjM,IACN,KAAK,cAAc+L,CAAG;AAAA,IACjC,CACH,CACJ;AAAA,EACL;AAAA,EAEA,KAAKK,GAA2C;AACrC,WAAAN,EAAK,IAAI,EAAE,MACPlB;AAAA,MACH,KAAK;AAAA,MACLU;AAAA,MACAT,EAAc;AAAA,IAAA,EAChB,KAAK,CAACkB,IAAM,OAAO;AACjB,YAAM,EAAE,MAAAC,IAAO,IAAI,OAAAC,IAAQ,OAAOF;AAC7B,MAAAC,EAAA,QAAQ,CAAChM,MAAQ;AAClB,cAAMqM,IAAOJ,EAAMjM;AACnB,YAAIqM,GAAM;AACN,gBAAM,EAAE,OAAAC,GAAO,YAAAd,GAAY,SAAA7C,EAAA,IAAY0D;AACvC,UAAAD,EAAS,MAAM;AAAA,YACX,YAAAZ;AAAA,YACA,SAAA7C;AAAA,YACA,QAAQ,IAAI4D,GAAeH,GAAUE,CAAK;AAAA,UAAA,CAC7C;AAAA,QACL;AAAA,MAAA,CACH;AAAA,IAAA,CACJ,CACJ;AAAA,EACL;AACJ;AAEa,MAAAE,KAAiB,CAACjC,MAA+C;AACpE,QAAA,EAAE,WAAA1I,EAAc,IAAA0I;AACtB,SAAOkB,GAA8B,OAAO5J,CAAS,EAAE,KAAK,CAAC4K,MAAiB;AACpE,UAAA/E,IAA2B7F,EAAU,IAAI,WAAW,GACpD6K,IAAY,EAAE,cAAAD,KACdL,IAAW,IAAIO,GAAkBpC,GAAQmC,CAAS,GAClDE,IAAyBC,GAAqBT,GAAU1E,CAAQ;AAEtE,WAAA6C,EAAO,OAAO,UAAU,uBAAuB,CAACpF,GAAOC,MAAiC;AAChF,MAAAA,EAAK,UAAU0H,GAAY,gBACJF;IAC3B,CACH,GAEMR;AAAA,EAAA,CACV;AACL,GC7IaW,KAAqB,CAC9BC,GACAC,MAEO,MAAM;AACH,QAAAC,IAAgB,CAACC,MAA+B;AAC5C,UAAAC,IAAO,SAAS,cAAc,GAAG;AACvC,WAAAA,EAAK,OAAOD,GACLC;AAAA,EAAA;AAGX,MAAI1N,IAAyB,OAAO;AAChC,SAAAsN,MAAS,cAAc,SAAS,aACrBtN,IAAAwN,EAAc,SAAS,QAAQ,IAEvC,CAACD,IAAa,WAAW,IAAI,MAAMvN,EAAS,MAAMA,EAAS,QAAQ,EAAE,KAAK,EAAE;AAAA,GCf9E2N,KAAuB,CAACxL,MAC1B,OAAO,6BAA6B,KAAK,CAAC,EAAE,gBAAAyL,GAAgB,aAAAC,QACxD1L,EAAU,IAAI,UAAU,EAAE,KAAK,CAAC6F,MAA6B;AAC1D,QAAA;AAAA,IACF,SAAS,EAAE,aAAA8F,IAAc,KAAK,MAAAC,IAAOF,EAAY,YAAY,UAAAG,EAAS;AAAA,IACtE,OAAAjO;AAAA,EACA,IAAAiI;AAWG,SATgB,IAAI4F,EAAezL,GAAW;AAAA,IACjD,aAAA2L;AAAA,IACA,MAAAC;AAAA,IACA,QAAQ,OAAO,KAAKhO,CAAK,EAAE,IAAI,CAACQ,OAAU;AAAA,MACtC,MAAAA;AAAA,MACA,MAAMR,EAAMQ,GAAM;AAAA,IAAA,EACpB;AAAA,IACF,UAAAyN;AAAA,EAAA,CACH;AACM,CACV,CACJ,GAGQC,KAAuB,CAAC9L,MAC1B,OAAO,8BAA8B,KAAK,CAAC,EAAE,iBAAA+L,QACzC,IAAIA,EAAgB,CAC9B,GAGQC,KAAsB,CAAChM,MACzB,OAAO,sCAAsC,KAAK,CAAC,EAAE,eAAAiM,GAAe,cAAAC,QAChElM,EAAU,IAAI,UAAU,EAAE,KAAK,CAAC6F,MAA6B;AAChE,QAAM,EAAE,MAAAzH,GAAM,QAAA+N,EAAA,IAAmBnM,EAAU,IAAI,SAAS,GAClD;AAAA,IACF,MAAM,EAAE,YAAAoM,IAAa,IAAI,MAAAjB,IAAO,WAAW,YAAAC,IAAa,GAAM;AAAA,EAC9D,IAAAvF,GAEEwG,IAAQ,IAAIH,EAAaE,GAAY,EAAE,aAAa,eAAe,GAInEE,IAAS,IAAIL;AAAA,IACfI;AAAA,IACA;AAAA,MACI,QAAQjO,EAAK,QAAQ,mBAAmB,EAAE,EAAE,QAAQ,YAAY,EAAE;AAAA,MAClE,MAAM8M,GAAmBC,GAAMC,CAAU;AAAA,IAC7C;AAAA,IACA;AAAA,IACApL;AAAA,EAAA;AAGJ,SAAAmM,EAAO,UAAU,2BAA2B,CAAC7I,GAAO,EAAE,MAAAC,QAA2B;AACzE,IAAAA,KAAQA,EAAK,eAAe6I,KACrBE,EAAA,MAAM,WAAW/I,EAAK,UAAU;AAAA,EAC3C,CACH,GAEM+I;AAAA,CACV,CACJ,GAGQC,KAAuB,CAACvM,MAC1B,OAAO,0BAA0B,KAAK,CAAC,EAAE,gBAAAwM,QACrC,IAAIA,EAAexM,CAAS,CACtC,GAGQyM,KAA0B,CAACzM,MAC7B,OAAO,0BAA0B,KAAK,CAAC,EAAE,mBAAA0M,QACrC,IAAIA,EAAkB1M,CAAS,CACzC,GAGQ2M,KAA0B,CAAC3M,MAC7B,OAAO,0BAA0B,KAAK,CAAC,EAAE,mBAAA8K,GAAmB,sBAAAE,QACxDL,GAAe3K,EAAU,IAAI,SAAS,CAAC,CACjD,GCpDC4M,KAAuB,aACvBC,IAAmB,QACnBC,KAA4B;AAwBlC,MAAqBC,WAAeC,GAAW;AAAA,EAK3C,YAAYhN,GAAsB;AAC9B,UAAMA,CAAS;AALnB,IAAAyI,EAAA,qCAAc;AACd,IAAAA,EAAA;AACA,IAAAA,EAAA,cAAwC,CAAA;AAgCxC,IAAAA,EAAA,6BAAsB,CAACwE,MAAgD;AACnE,YAAMnG,IAAU;AAAA,QACZ,mBAAmBmG,EAAe;AAAA,QAClC,iBAAiB;AAAA,MAAA;AAGrB,WAAK,UAAU,IAAI,UAAU,EAAE,KAAK,CAACpH,MAAkB;AAC7C,cAAA,EAAE,UAAAqH,EAAa,IAAArH;AAIrB,SAFI,OAAOqH,KAAa,eAAeA,MAAa,QAAQA,MAAa,QAGrE,KAAK,aAAa,KAAK,aAAa,KAAK,OAAO,YAAY;AAAA,UAAK,MAC7D,KAAK,OAAOpG,CAAO;AAAA,QAAA;AAAA,MAE3B,CACH;AAAA,IAAA;AA3CD,SAAK,UAAU,cAAc,WAAW,MAAMgF,GAAqB,KAAK,SAAS,CAAC,GAE7E,KAAA,UAAU,gBAAgB,YAAY,MAChC/C;AAAA,MACH,KAAK;AAAA,MACL6D;AAAA,MACA5D,EAAc;AAAA,IAAA,EAChB,KAAK,CAACnD,IAAW,OACR3H,IAAA,IACA,KAAK,UAAU,IAAI,WAAW,IAC9B2H,EAEV,CACJ,GAEoBsH,GAAA,MAAa,QAAQ,KAAK,mBAAmB,GAElE,KAAK,UAAU;AAAA,MAAc;AAAA,MAAqB,MAC9CV,GAAwB,KAAK,SAAS;AAAA,IAAA,GAE1C,KAAK,UAAU,cAAc,kBAAkB,MAAMT,GAAoB,KAAK,SAAS,CAAC,GACxF,KAAK,UAAU,cAAc,UAAU,MAAMR,GAAqB,KAAK,SAAS,CAAC,GACjF,KAAK,UAAU,cAAc,kBAAkB,MAAMe,GAAqB,KAAK,SAAS,CAAC,GACzF,KAAK,UAAU,SAAS,cAAc,OAAO,UAAU,GACvD,KAAK,UAAU,cAAc,cAAc,MAAMI,GAAwB,KAAK,SAAS,CAAC;AAAA,EAC5F;AAAA,EAqBA,aAAa;AACH,UAAAS,IAAW,KAAK,UAAU;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAOG,WAAA,QAAQ,IAAI,CAACA,GAAU,KAAK,UAAU,IAAI,UAAU,CAAC,CAAC,EAAE;AAAA,MAC3D,CAAC,CAAC,EAAE,gBAAAC,GAAgB,QAAA3N,GAAQ,YAAAqD,EAAW,GAAG8C,CAAQ,MAAM;;AACrC,QAAAwH,EAAA;AAAA,UAAU,KAAK,OAAO;AAAA,UAAM,CAACC,GAAQC,GAAQC,MACxD,KAAK,SAASD,GAAQC,CAAK;AAAA,QAAA;AAGzB,cAAAC,IAAkB,CAACtO,MAAsB;AAChC,UAAA4D,EAAA,MAAM,MAAM,EAAE,MAAM,QAAQ,EAAE,QAAQ,CAAC2K,MAAa;AAChD,YAAA3K,EAAA,UAAU2K,GAAUvO,CAAS;AAAA,UAAA,CAC3C;AAAA,QAAA,GAGCwO,MAAe7O,IAAAY,EAAO,gBAAgB,MAAvB,gBAAAZ,EAA0B,SAAQ;AACvD,eAAA2O,EAAgBE,CAAY,GAE5B,KAAK,OAAO,UAAU,sBAAsB,CAAChH,GAAG,EAAE,SAAAH,QAAc;AAC5D,UAAI,KAAK,OAAO,UAAU,IAAI,kBAAkB,KACvC,KAAA,OAAO,SAAS,6BAA6B;AAAA,YAC9C,SAAAA;AAAA,UAAA,CACH;AAAA,QACL,CACH,GAED,KAAK,OAAO;AAAA,UACR;AAAA,UACA,CAACG,GAAG,EAAE,UAAAiH,IAAW,EAAE,WAAW,CAAA,KAAM,MAAAC,IAAO,EAAE,WAAW,CAAC,EAAA,QAAU;AACzD,kBAAA,EAAE,WAAWC,EAAuC,IAAAF,GACpD,EAAE,WAAWG,EAAuC,IAAAF,GAEpDG,IAAe,OAAO,KAAKnI,EAAS,KAAK,EAAE,OAAO,CAACC,GAAK3H,MAEtD,OADS0H,EAAS,MAAM1H,GACZ,QAAS,cACdA,IAEJ2H,GACR,EAAE;AAGD,YAAA,CAACiI,EAAS,QAAQC,IAClBP,EAAgBO,CAAY,IAE5BP,EAAgBM,EAAS,IAAI,GAGJE,GAAAH,KAAYA,EAAS,MAAM,GAC3BG,GAAAF,KAAYA,EAAS,MAAM,GAExD,KAAK,UACA,SAAS,gBAAgB,EACzB,KAAK,CAACV,MAAmC;AACtCA,cAAAA,EAAe,OAAO,KAAK,OAAO,MAAM,eAAe;AAAA,gBACnD,MAAMU;AAAA,gBACN,UAAUD;AAAA,cAAA,CACb;AAAA,YAAA,CACJ;AAAA,UACT;AAAA,QAAA,GAGGpO,EAAO;MAClB;AAAA,IAAA;AAAA,EAER;AAAA,EAEA,OAAOwO,IAAyB,IAAI;AACzB,WAAA,KAAK,UAAU,IAAI,UAAU,EAAE,KAAK,CAAC,EAAE,SAAAC,QAA8B;;AAClE,YAAA;AAAA,QACF,kBAAAzG;AAAA,QACA,KAAAvJ,IAAMiQ,GAAK;AAAA,QACX,mBAAA9H;AAAA,QACA,iBAAA+H;AAAA,MACA,IAAAH,GAOElG,IALcL,GAAqBwG,CAAO,MAM5B3G,EAAY,YAC3BlB,KAAA,gBAAAA,EAAmB,sBAAqB,KAAK,GAE5CgI,IAAgBzG;AAAA,QAClB,KAAK,OAAO;AAAA,QACZH;AAAA,QACApB;AAAA,QACA6H;AAAA,QACAnG;AAAA,MAAA;AAGJ,MAAI,KAAK,QAAQ,OAAO,KAAK,CAACqG,KAC1B,KAAK,eAAe,OAAO;AAG/B,YAAME,IAAO,MAAM;AACf,cAAMC,IAAU,MACZ9G,EAAiB,iBAAiB,qBAAqB,EAAE,WAAW,GAClE,CAACA,CAAgB,IAAI,KAAK,OAAO,UAAU,IAAI,mBAAmB,GAElE+G,IAAU,CAACC,GAA6BC,MAA+B;AACzE,UAAIH,QACIF,EAAc,YACdA,EAAc,SAAS,GAE3BK,EAAS,WAAW;AAAA,QACxB,GAEE7H,IAAU;AAAA,UACZ,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,WAAW;AAAA,QAAA;AAGf,QAAI0H,OACcF,EAAA,YAAYA,EAAc,YAE3B,IAAI,iBAAiBG,CAAO,EAEpC,QAAQ/G,GAAkBZ,CAAO;AAAA,MAAA;AAG9C,MAAIkB,KACK,KAAA,OAAO,UAAU,SAAS,YAAY,EAAE,KAAK,CAAC,EAAE,QAAAmE,QAAkB;AACnE,QAAAA,EAAO,UAAU,uBAAuB,CAAC7I,GAAYC,MAAc;AAC3D,UAAAA,EAAK,sBAAsB,KACtBgL;QACT,CACH;AAAA,MAAA,CACJ;AAGL,YAAMK,IAAS,KAAK,sBAAsBzQ,GAAKmQ,CAAa;AAoCxD,UAnCC,KAAA,QAAQ,IAAInQ,GAAKyQ,CAAM,GACvB,KAAA,OAAO,OAAO,SAAS,mBAAmB,CAAA,GAAI,EAAE,SAAS,GAAA,CAAM,GAEhEN,EAAc,gBAAgB9G,EAAY,SAAS2G,OACrCrP,IAAAwP,EAAA,sBAAA,QAAAxP,EAAmB,aAAa,iBAAiB,UAC/D8P,KAAA,QAAAA,EAAQ,YAAYT,KAGpBG,EAAc,gBAAgB9G,EAAY,YAC1CzI,IAAAuP,EAAc,sBAAd,QAAAvP,EAAiC,iBAAiB,SAAS,CAACuE,MAAe;AACvE,QAAAA,EAAM,eAAe,GAChB,KAAA,UACA,IAAI,UAAU,EACd,KAAK,CAAC,EAAE,SAASuL,QAAqC;AAE9C,UAAAD,EAAA,SACA,KAAK,MAAM,KAAK,aAAa,EAC7B,KAAK,CAACE,MAECD,KACAA,EAAe,UACfA,EAAe,WAAW,SAEnBC,MAAgBC,EAAkB,OACnC,KAAK,SACL,KAAK,SAERD,MAAgBC,EAAkB,OACnC,KAAK,UACL,KAAK,MACd;AAAA,QAAA,CACR;AAAA,MAAA,KAIT,KAAK,QAAQ,OAAO;AACpB,eAAO,KAAK,YAAA,EAAc,KAAK,CAACvN,MAA6B;AAEzD,eAAK,yBAAyBA,CAAK;AAAA,QAAA,CACtC;AAGL,UAAI6M;AACA,eAAIA,MAAoB,YACb,KAAK,YAAA,EAAc,KAAK,CAAC7M,MAA6B;AACrD,cAAA8M,EAAc,gBAAgB9G,EAAY,QAAQ;AAClD,iBAAK,yBAAyB,MAAM;AACpC;AAAA,UACJ;AACA,eAAK,yBAAyBhG,CAAK;AAAA,QAAA,CACtC,IAEE,KAAK,yBAAyB6M,CAAe;AAAA,IACxD,CACH;AAAA,EACL;AAAA,EAEA,OAAOlQ,GAAc;AACjB,QAAIA,GAAK;AACL,UAAI,KAAK,QAAQ,IAAIA,CAAG,GAAG;AACvB,cAAMyQ,IAAS,KAAK,QAAQ,IAAIzQ,CAAG;AACnC,QAAAyQ,KAAA,QAAAA,EAAQ,WACH,KAAA,QAAQ,OAAOzQ,CAAG;AACvB;AAAA,MACJ;AACI,MAAA,QAAQ,IAAI,aAAa,gBACjB,QAAA,KAAK,iDAAiDA,GAAK;AAEvE;AAAA,IACJ;AACK,SAAA,QAAQ,QAAQ,CAACyQ,MAAW;AAC7B,MAAAA,EAAO,QAAQ;AAAA,IAAA,CAClB,GACD,KAAK,QAAQ;EACjB;AAAA,EAEQ,yBAAyBI,GAAe;AAC5C,WAAO,KAAK,UAAU,SAAS,QAAQ,EAAE,KAAK,CAACtP,MAAW;AACtD,cAAQsP,GAAO;AAAA,QACX,KAAK;AACD,eAAK,MAAM;AACX;AAAA,QACJ,KAAK;AACD,eAAK,KAAK;AACV;AAAA,QACJ,KAAK;AACD,eAAK,KAAK,GACVtP,EAAO,MAAM;AACb;AAAA,QACJ;AACI;AAAA,MACR;AAAA,IAAA,CACH;AAAA,EACL;AAAA,EAEQ,sBAAsBvB,GAAa2I,GAAwC;AAC/E,WACI,KAAK,QAAQ,IAAI3I,CAAG,IAAI,KAAK,QAAQ,IAAIA,CAAG,IAAI,IAAIqK,GAAW,KAAK,WAAW1B,CAAO;AAAA,EAE9F;AAAA,EAEA,OAAOmI,IAAyB,IAAI;AAIhC,QAHI,QAAQ,IAAI,aAAa,gBACzB,QAAQ,KAAK,6DAA6D,GAE1EA,EAAW,MAAM;AACjB,YAAMnI,IAAsB7I,EAAAC,EAAA,IACrB+Q,IADqB;AAAA,QAExB,iBAAiB;AAAA,MAAA;AAEd,aAAA,KAAK,OAAOnI,CAAO;AAAA,IAC9B;AACO,WAAA,KAAK,OAAOmI,CAAU;AAAA,EACjC;AAAA,EAEA,SAAS1L,GAAY;AACjB,IAAIA,KAAA,QAAAA,EAAM,YACD,KAAA,YAAY,MAAMA,EAAK,QAAQ,GAIpCA,KAAA,QAAAA,EAAM,6BACN,KAAK,UAAU,SAAS,6BAA6BA,EAAK,yBAAyB;AAAA,EAE3F;AAAA,EAEA,YACI2L,GACuB;AACvB,WAAO,QAAQ,IAAI;AAAA,MACf,KAAK,UAAU,IAAI,UAAU;AAAA,MAC7BpF,EAAoB,KAAK,WAAW8C,IAAsB7C,EAAgB,WAAW;AAAA,QACjF,QAAQf,EAAc;AAAA,MAAA,CACzB;AAAA,IACJ,CAAA,EAAE,KAAK,CAAC,CAACnD,GAAUsJ,CAAK,MACd,QAAQ,QAAQD,EAAGrJ,CAAQ,CAAC,EAAE,KAAK,CAACuJ,MAChCD,EAAMC,CAAQ,EAAE,KAAK,MAAM;AAC9B,YAAMC,IAAUnR,IAAA,IAAK2H,IAAauJ;AAClC,kBAAK,OAAO,OAAO,SAAS,2BAA2BC,CAAO,GACvDA;AAAA,IAAA,CACV,CACJ,CACJ;AAAA,EACL;AAAA,EAEA,gBAA+B;AACpB,WAAAvF;AAAA,MACH,KAAK;AAAA,MACL8C;AAAA,MACA7C,EAAgB;AAAA,MAChB,EAAE,QAAQf,EAAc,MAAM;AAAA,MAE7B,KAAK,CAACmG,MAAUA,EAAO,CAAA,EACvB,KAAK,MAAM,KAAK,UAAU,IAAI,UAAU,CAAC,EACzC,KAAK,CAACtJ,MAAa;AAChB,WAAK,OAAO,OAAO,SAAS,2BAA2BA,CAAQ;AAAA,IAAA,CAClE;AAAA,EACT;AAAA,EAEA,OAAO,EAAE,QAAA0H,GAAQ,OAAAC,KAA0C;AACvD,WAAO,KAAK,UAAU,SAAS,gBAAgB,EAAE,KAAK,CAACH,MAAmC;AACtF,MAAAA,EAAe,OAAO,KAAK,OAAO,MAAME,GAAQC,CAAK;AAAA,IAAA,CACxD;AAAA,EACL;AAAA,EAEA,cAA0C;AAClC,QAAA8B,GAAY,KAAK,SAAS;AACnB,aAAA,QAAQ,QAAQP,EAAkB,IAAI;AAEjD,UAAMQ,IAAkB,MACpBxG;AAAA,MACI,KAAK;AAAA,MACL8D;AAAA,MACA7D,EAAc;AAAA,IAAA,EAChB,KAAK,CAACwE,IAAQuB,EAAkB,WAAWvB,CAAK,GAEhDgC,IAAgB,MAClBzG;AAAA,MACI,KAAK;AAAA,MACL8D;AAAA,MACA7D,EAAc;AAAA,IAAA,EAChB,KAAK,CAACwE,IAAQuB,EAAkB,WAAWvB,CAAK;AAEtD,WAAO,KAAK,UAAU,SAAS,QAAQ,EAAE,KAAK,CAACiC,MACvCA,EAAQ,aACDD,EAAc,EAAE,KAAK,CAACE,MAClBA,MAAcX,EAAkB,OAAOW,IAAYH,EAAgB,CAC7E,IAEEA,EAAgB,CAC1B;AAAA,EACL;AAAA,EAEA,OAAsB;AACd,WAAA,KAAK,QAAQ,OAAO,KAChB,QAAQ,IAAI,aAAa,gBACjB,QAAA;AAAA,MACJ;AAAA,IAAA,GAGD,QAAQ,cAEnB,KAAK,QAAQ,QAAQ,CAACX,MAAWA,EAAO,QAAQ,GACzC,KAAK,OAAO,EAAE,QAAQ,OAAQ,CAAA,EAAE,KAAK,MAAM;AAC9C,WAAK,gBAAgB,EAAK;AAAA,IAAA,CAC7B;AAAA,EACL;AAAA,EAEA,OAAsB;AACd,WAAA,KAAK,QAAQ,OAAO,KAChB,QAAQ,IAAI,aAAa,gBACjB,QAAA;AAAA,MACJ;AAAA,IAAA,GAGD,QAAQ,cAEnB,KAAK,QAAQ,QAAQ,CAACA,MAAWA,EAAO,QAAQ,GACzC,KAAK,OAAO,EAAE,QAAQ,OAAQ,CAAA,EAAE,KAAK,OACxC,KAAK,OAAO,OAAO,SAAS,4BAA4B,CAAE,CAAA,GACnD,KAAK,SACf;AAAA,EACL;AAAA,EAEA,QAAuB;AACf,WAAA,KAAK,QAAQ,OAAO,KAChB,QAAQ,IAAI,aAAa,gBACjB,QAAA;AAAA,MACJ;AAAA,IAAA,GAGD,QAAQ,aAEZ,KAAK,OAAO,EAAE,QAAQ,QAAA,CAAS,EAAE,KAAK,MAAM,KAAK,QAAA,CAAS;AAAA,EACrE;AAAA,EAEA,OAAsB;AACd,WAAA,QAAQ,IAAI,aAAa,gBACjB,QAAA;AAAA,MACJ;AAAA,IAAA,GAGD,KAAK;EAChB;AAAA,EAEQ,SAASrB,GAAgBC,GAAY;AACzC,YAAQD,GAAQ;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACK,cAAAoC,IACFpC,MAAW,SACLwB,EAAkB,OAClBxB,MAAW,UACXwB,EAAkB,SAClBA,EAAkB;AAE5B,eAAO,KAAK,eAAeY,CAAQ,EAAE,KAAK,MAAM;AACvC,eAAA,gBAAgBA,MAAaZ,EAAkB,IAAI,GACpDY,MAAaZ,EAAkB,SAC/BY,MAAaZ,EAAkB,OAAO,KAAK,WAAW,KAAK,YAE3D,KAAK,QAAQ;AAAA,YAAQ,CAACH,MAClB;;AAAA,sBAAA9P,IAAA8P,EAAO,QAAQ,sBAAf,gBAAA9P,EAAkC,aAAa,iBAAiB;AAAA;AAAA,UAAO;AAAA,QAE/E,CACH;AAAA,IACT;AAAA,EACJ;AAAA,EAEQ,eAAe6Q,GAAiC;AACpD,UAAM,EAAE,QAAAC,GAAQ,QAAAzD,MAAW,KAAK,UAAU,IAAI,SAAS;AACvD,WAAO,QAAQ,IAAI;AAAA,MACfrC,EAAoB,KAAK,WAAW+C,GAAkB9C,EAAgB,WAAW;AAAA,QAC7E,QAAQf,EAAc;AAAA,MAAA,CACzB;AAAA,MACDc,EAAoB,KAAK,WAAW+C,GAAkB9C,EAAgB,WAAW;AAAA,QAC7E,QAAQf,EAAc;AAAA,QACtB,UAAU,EAAE,SAAS,EAAE;AAAA,MAAA,CAC1B;AAAA,MACD,KAAK,UAAU,SAAS,QAAQ;AAAA,MAChC4G,EAAO,aAAa;AAAA,IAAA,CACvB,EAAE,KAAK,CAAC,CAACC,GAAkBC,GAAgBL,GAASM,CAAmB,MAAM;AACtE,MAAAJ,MAAa,WAAW,CAACA,KACVG,KACED,QAEbJ,EAAQ,cACRK,EAAeH,CAAQ,GAE3BE,EAAiBF,CAAQ,IAE7BxD,EAAO,SAAS,+BAA+B;AAAA,QAC3C,UAAU4D;AAAA,QACV,MAAMJ;AAAA,MAAA,CACT;AAAA,IAAA,CACJ;AAAA,EACL;AAAA,EAEQ,SAAwB;AAC5B,WAAO,KAAK,UAAU,SAAS,QAAQ,EAAE,KAAK,CAACjQ,OAC3C,KAAK,QAAQ;AAAA,MAAQ,CAACkP,MAClB;;AAAA,gBAAA9P,IAAA8P,EAAO,QAAQ,sBAAf,gBAAA9P,EAAkC,aAAa,iBAAiB;AAAA;AAAA,IAAM,GAEnEY,EAAO,QACjB;AAAA,EACL;AAAA,EAEQ,UAAyB;AAC7B,UAAMsQ,IAAW,KAAK,UAAU,aAAa,UAAU,YAAY;AAe5D,YAVmB,MACf,KAAK,UAAU,IAAI,UAAU,EAAE,KAAK,CAACC,MAAmC;AAC3E,YAAM,EAAE,UAAA/C,EAAS,IAAI,KAAK,UAAU,IAAI,WAAW;AAC/C,aAAA+C,EAAe,aAAa/C,IACrB,KAAK,YAAY,MAAM,QAAQ,QAAQ,EAAE,UAAAA,EAAU,CAAA,CAAC,IAExD,QAAQ;IAAQ,CAC1B,GAGE,EACF,KAAK,MACK8C,CACV,EACA;AAAA,MACG,CAAC;AAAA,QACG,QAAAtQ;AAAA,QACA,YAAAqD;AAAA,MAAA,MAIE;AACI,cAAAmN,IAAenN,EAAW,MAAM;AAKtC,eAJA,KAAK,QAAQ;AAAA,UAAQ,CAAC6L,MAClB;;AAAA,oBAAA9P,IAAA8P,EAAO,QAAQ,sBAAf,gBAAA9P,EAAkC,aAAa,iBAAiB;AAAA;AAAA,QAAO,GAIvEoR,EAAa;AAAA,UACT,CAACC,MACGA,EAAE,WAAW,WAAW,aACxBA,EAAE,WAAW,WAAW,cAAc;AAAA,UAC5C,SAEK,IAAI,QAAwB,CAACC,MAAY;AAC5C,qBAAW,MAAM;AACb,YAAAA,EAAQ1Q,CAAM;AAAA,aACf,GAAG;AAAA,QAAA,CACT,IAGE,QAAQ,QAAQA,CAAM;AAAA,MACjC;AAAA,MAEH,KAAK,CAACA,MAA2BA,EAAO,KAAM,CAAA;AAAA,EACvD;AAAA,EAEQ,gBAAgB2Q,GAAe;AAC9B,SAAA,QAAQ,QAAQ,CAACzB,MAAW;AACvB,YAAA;AAAA,QACF,SAAS,EAAE,mBAAAtI,GAAmB,gBAAAgD,EAAe;AAAA,MAC7C,IAAAsF,GACE,EAAE,aAAAvF,GAAa,eAAAD,MAAmBE,KAAmC,CAAA;AAC3E,MAAIhD,MACA+J,IACM9I,GAAUjB,GAAmB+C,CAAW,IACxClC,GAAYb,GAAmB8C,CAAa;AAAA,IACtD,CACH;AAAA,EACL;AAAA,EAEA,aAAa;AACT,SAAK,KAAK,QAAQ,CAACkH,MAAMA,EAAG,CAAA;AAE5B,UAAMlD,IAA4B,CAAA;AAC7B,gBAAA,QAAQ,QAAQ,CAACwB,MAAWxB,EAAS,KAAKwB,EAAO,QAAS,CAAA,CAAC,GAEzD7F;AAAA,MACH,KAAK;AAAA,MACL+D;AAAA,MACA9D,EAAc;AAAA,IAAA,EAChB,KAAK,CAACwE,MAIAA,MAAU,KAAK,OAAO,OACf1D;AAAA,MACH,KAAK;AAAA,MACLgD;AAAA,MACA/C,EAAgB;AAAA,MAChB;AAAA,QACI,QAAQf,EAAc;AAAA,QACtB,OAAOuH,GAAa;AAAA,MACxB;AAAA,IAEC,EAAA,KAAK,CAACpB,MAAUA,GAAO,EACvB,KAAK,MAAM,QAAQ,IAAI/B,CAAQ,CAAC,IAElC,QAAQ,IAAIA,CAAQ,CAC9B;AAAA,EACL;AACJ;"}
1
+ {"version":3,"file":"index.js","sources":["../src/ui/determine-slide-direction.ts","../src/ui/switch.tsx","../src/ui/animated-view.tsx","../src/ui/view.tsx","../src/ui/styles.ts","../src/ui/resolvable-component.tsx","../src/ui/use-component-node-properties.ts","../src/ui/component.tsx","../src/ui/detached-component.tsx","../src/ui/not-found.tsx","../src/ui/html-element-handlers.ts","../src/ui/prepare-dom.ts","../src/ui/view-outlet.ts","../src/component-platform-factory.ts","../src/services.ts","../src/widget.ts"],"sourcesContent":["export enum SlideDirection {\n back = 'back',\n forth = 'forth',\n}\n\nexport interface RouteStructure {\n name: string;\n children: RouteStructure[];\n}\n\n/**\n * Recursively find the parents of a nested route\n * @param routeName Name of route to find\n * @param routes Routes to look in\n * @param trail Trail of parents\n * @param level Level of the array currently looking in\n */\nexport const findParentRoutes = (\n routeName: string,\n routes: RouteStructure[],\n trail: string[] = [],\n level: number = 0\n): string[] | null => {\n let found: any = null;\n\n routes.forEach((route, index) => {\n if (!found) {\n if (route.name === routeName) {\n found = route;\n } else {\n trail[level] = route.name;\n found = findParentRoutes(routeName, route.children, trail, level + 1);\n }\n }\n });\n\n if (!found) {\n return null;\n }\n\n return trail;\n};\n\n/**\n * Determine if the sliding animation should back or forth\n * @param currentRouteName Name of current route\n * @param nextRouteName Name of route to transition to\n * @param routeRanking Hierarchical route ranking for the widget\n */\nexport const determineSlideDirection = (\n currentRouteName: string,\n nextRouteName: string,\n routeRanking: RouteRanking\n): SlideDirection => {\n if (\n typeof routeRanking[currentRouteName] === 'number' &&\n typeof routeRanking[nextRouteName] === 'number' &&\n routeRanking[currentRouteName] > routeRanking[nextRouteName]\n ) {\n return SlideDirection.back;\n }\n return SlideDirection.forth;\n};\n\nexport type RouteRanking = { [key: string]: number };\n","import { ViewDefinition } from '@telia-ace/widget-core';\nimport React from 'react';\nimport { Route, Switch as RouteSwitch } from 'react-router';\n\ntype Props = {\n location?: any;\n views: { [key: string]: ViewDefinition };\n render: (viewName: string) => JSX.Element | null;\n};\n\nconst Switch: React.FC<Props> = ({ views, location, render }) => {\n return (\n <RouteSwitch\n location={\n location\n ? {\n ...location,\n pathname: location.pathname.split('?')[0],\n }\n : location\n }\n >\n {[\n ...Object.keys(views).filter((key) => !!views[key].path),\n ...Object.keys(views).filter((key) => !views[key].path),\n ].map((name) => {\n const { path } = views[name];\n\n if (!path) {\n return <Route key={name} render={() => render(name)} />;\n }\n\n if (Array.isArray(path)) {\n return path.map((path: string) => (\n <Route key={name} exact path={path} render={() => render(name)} />\n ));\n }\n return <Route key={name} exact path={path} render={() => render(name)} />;\n })}\n </RouteSwitch>\n );\n};\n\nexport default Switch;\n","import styled from '@emotion/styled';\nimport { WidgetSettings } from '@telia-ace/widget-core';\nimport {\n Grid,\n transitionComposer,\n useComponentNode,\n useContainer,\n useContext,\n useProperties,\n useRouteData,\n useRouter,\n useScroll,\n} from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { useState } from 'react';\nimport { Transition, TransitionGroup } from 'react-transition-group';\nimport { TransitionStatus } from 'react-transition-group/Transition';\nimport Component from './component';\nimport { determineSlideDirection, RouteRanking, SlideDirection } from './determine-slide-direction';\nimport Switch from './switch';\n\ntype Props = {\n className?: string;\n};\n\nconst StyledViewContainer = styled.div`\n position: relative;\n width: 100%;\n flex: 1;\n`;\n\nconst StyledView = styled(Grid)<{ scrollableCss?: any; animationCss?: any }>`\n position: absolute;\n left: 0;\n right: 0;\n ${(p) => !!p.animationCss && p.animationCss}\n ${(p) => !!p.scrollableCss && p.scrollableCss}\n`;\n\nconst routeHierarchy: RouteRanking = {\n index: 1,\n search: 2,\n browse: 3,\n guide: 4,\n contact: 5,\n 'contact-method': 6,\n conversation: 7,\n};\n\nconst AnimatedView: React.FC<Props> = ({ className = '', ...other }) => {\n const [routeName, setRouteName] = useState('index');\n const [transitionDirection, setTransitionDirection] = useState(SlideDirection.forth);\n const nextRoute = useRouteData();\n const router = useRouter();\n\n const properties = useProperties();\n const context = useContext();\n const container = useContainer();\n const node = useComponentNode();\n\n const { gap = '0' } = context;\n const { columns = 1, animation = 'none', scrollable = false, ...areaProperties } = properties;\n\n const [scrollableCss, elem] = useScroll(scrollable);\n\n if (!node || !router) {\n return null;\n }\n\n const { location } = router;\n\n if (nextRoute.name !== routeName && nextRoute.name !== '' && animation) {\n setTransitionDirection(determineSlideDirection(routeName, nextRoute.name, routeHierarchy));\n setRouteName(nextRoute.name);\n }\n\n const { views }: WidgetSettings = container.get('$settings');\n\n if (!Object.keys(views).length) {\n return null;\n }\n\n const renderView = (name: string, transitionState?: any, direction?: SlideDirection) => {\n const animationStyles = getAnimation(transitionState, direction);\n const childNode = node.getChildren(name)[0];\n\n return (\n <StyledView\n {...other}\n {...areaProperties}\n scrollableCss={scrollableCss}\n ref={elem}\n columns={columns}\n gap={gap}\n {...animationStyles}\n className={appendClassNames(className, 'humany-view')}\n >\n <Component id={childNode.id} branch=\"default\" />\n </StyledView>\n );\n };\n\n const getAnimation = (transitionState?: any, direction?: SlideDirection) => {\n if (animation === 'slide' || animation === 'fade') {\n return {\n animationCss: transitionComposer.composeViewTransition(\n transitionState,\n animation,\n direction\n ),\n ['data-state']: transitionState,\n };\n }\n return;\n };\n\n return (\n <StyledViewContainer className=\"humany-animated-view\">\n <TransitionGroup\n component={null}\n childFactory={(child) =>\n React.cloneElement(child, { direction: transitionDirection })\n }\n >\n <Transition\n key={routeName}\n timeout={{ enter: 500, exit: 500 }}\n onEnter={(node: HTMLElement) => node?.clientHeight}\n unmountOnExit={true}\n direction={SlideDirection.forth}\n >\n {/* @ts-ignore */}\n {(state: TransitionStatus, { direction }: { direction: SlideDirection }) => (\n <Switch\n views={views}\n location={location}\n render={(name) => renderView(name, state, direction)}\n />\n )}\n </Transition>\n </TransitionGroup>\n </StyledViewContainer>\n );\n};\n\nexport default AnimatedView;\n","import styled from '@emotion/styled';\nimport { WidgetSettings } from '@telia-ace/widget-core';\nimport {\n Grid,\n useComponentNode,\n useContainer,\n useContext,\n useProperties,\n useScroll,\n} from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport Component from './component';\nimport Switch from './switch';\n\ntype Props = {\n className?: string;\n};\n\nconst StyledView = styled(Grid)<{ scrollableCss?: string }>`\n ${(p) => !!p.scrollableCss && p.scrollableCss}\n`;\n\nconst View: React.FC<Props> = ({ className = '', ...other }) => {\n const properties = useProperties();\n const context = useContext();\n const container = useContainer();\n const node = useComponentNode();\n\n const { views }: WidgetSettings = container.get('$settings');\n\n const { gap = '0' } = context;\n const { columns = 1, animation = 'none', scrollable = false, ...areaProperties } = properties;\n\n const [scrollableCss, elem] = useScroll(scrollable);\n\n if (!node) {\n return null;\n }\n\n return (\n <StyledView\n {...other}\n {...areaProperties}\n scrollableCss={scrollableCss}\n ref={elem}\n columns={columns}\n gap={gap}\n className={appendClassNames(className, 'humany-view')}\n >\n <Switch\n views={views}\n render={(name) => {\n const childNode = node.getChildren(name)[0];\n return <Component id={childNode.id} node={childNode} branch=\"default\" />;\n }}\n />\n </StyledView>\n );\n};\n\nexport default View;\n","import { css, Theme } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { paddedBorderTabStyle } from '@telia-ace/widget-ui';\nimport AnimatedView from './animated-view';\nimport View from './view';\n\nexport const styling = (p: { 'data-width'?: number; 'data-indent'?: number; theme: Theme }) => css`\n outline: none;\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n outline: none;\n }\n\n grid-column: ${p['data-indent']\n ? `${p['data-indent'] + 1} / ${p['data-indent'] + (p['data-width'] || 0) + 1}`\n : `span ${p['data-width']}`};\n\n ${p.theme.fonts?.type &&\n `\n font-family: ${p.theme.fonts.type};\n\n input, textarea {\n font-family: ${p.theme.fonts.type};\n }\n `}\n\n ${p.theme.fonts?.base &&\n `\n font-size: ${p.theme.fonts.base};\n `}\n\n &:focus-visible {\n ${paddedBorderTabStyle(p)};\n }\n`;\n\nexport const StyledView = styled(View)`\n ${(p) => styling(p)}\n`;\n\nexport const StyledAnimatedView = styled(AnimatedView)`\n ${(p) => styling(p)}\n`;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n filterCssPropsStyle,\n Typography,\n useComponent,\n useComponentDescriptor,\n} from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef, Suspense, useMemo } from 'react';\nimport { styling } from './styles';\n\ntype Props = {\n role?: string;\n 'data-width': number;\n 'data-indent': number;\n className?: string;\n children?: React.ReactNode;\n};\n\nconst NonResolvedComponentWrapper = styled.div<Props>`\n text-align: center;\n ${(p) =>\n typeof p.theme.colors?.warning !== 'undefined' &&\n css`\n color: ${p.theme.colors?.warning};\n border: 2px dashed ${p.theme.colors?.warning};\n `}\n ${(p) =>\n typeof p.theme.borderRadius !== 'undefined' && `border-radius: ${p.theme.borderRadius};`}\n ${(p) => styling(p)}\n`;\n\nconst ResolvableComponent = forwardRef<HTMLElement, Props>(\n ({ className = '', children, ...other }, ref) => {\n const ResolvedComponent = useComponent();\n const { name, type, id } = useComponentDescriptor();\n\n const StyledResolvableComponent = useMemo(() => {\n if (ResolvedComponent) {\n return styled(ResolvedComponent)<any>`\n ${styling}\n ${filterCssPropsStyle}\n `;\n }\n return null;\n }, [ResolvedComponent]);\n\n if (typeof ResolvedComponent === 'undefined') {\n return null;\n }\n\n if (ResolvedComponent === null || StyledResolvableComponent === null) {\n if (process.env.NODE_ENV !== 'production') {\n return (\n <NonResolvedComponentWrapper\n {...other}\n title={`type: ${type}, definition-id: ${name}, instance-id: ${id}`}\n className={appendClassNames(className, 'humany-non-resolved-component')}\n >\n <Typography variant=\"h5\">Non Resolved Component Type</Typography>\n </NonResolvedComponentWrapper>\n );\n }\n return null;\n }\n\n return (\n <Suspense fallback={null}>\n <StyledResolvableComponent\n ref={ref}\n {...other}\n className={appendClassNames(\n className,\n 'humany-component',\n `humany-component-${name}`\n )}\n >\n {children}\n </StyledResolvableComponent>\n </Suspense>\n );\n }\n);\n\nexport default ResolvableComponent;\n","import { ComponentNodeProperties } from '@telia-ace/widget-core';\nimport { useComponentNode, useComponentPlatform, useIsMounted } from '@telia-ace/widget-ui';\nimport { useEffect, useState } from 'react';\n\nexport default (id: string) => {\n const node = useComponentNode(id);\n const components = useComponentPlatform();\n const [properties, setProperties] = useState<ComponentNodeProperties>({});\n const isMounted = useIsMounted();\n\n useEffect(() => {\n if (node && isMounted.current) {\n setProperties(node.attributes.properties);\n }\n }, [node, id, isMounted]);\n\n useEffect(() => {\n if (components) {\n const unsubscribe = components.events.subscribe(\n 'components:properties-changed',\n (event, data) => {\n if (node === data.node && isMounted.current) {\n setProperties(data.node.attributes.properties);\n }\n }\n );\n\n return () => {\n unsubscribe();\n };\n }\n }, [components, isMounted, id, node]);\n\n return properties;\n};\n","import { Theme, ThemeProvider } from '@emotion/react';\nimport { asDescriptor, ComponentDescriptor, ComponentNode, Size } from '@telia-ace/widget-core';\nimport {\n ComponentNodeContext,\n ComponentPropertyContext,\n filterCssProps,\n useColumns,\n useComponentPlatform,\n useContainer,\n useContext,\n useLayout,\n} from '@telia-ace/widget-ui';\nimport React, { forwardRef, useEffect, useState } from 'react';\nimport ResolvableComponent from './resolvable-component';\nimport { StyledAnimatedView, StyledView } from './styles';\nimport useComponentNodeProperties from './use-component-node-properties';\n\ntype Props = {\n className?: string;\n id: string;\n branch: string;\n node?: ComponentNode;\n ariaLabel?: string;\n tabIndex?: number;\n context?: { [key: string]: any };\n};\n\nconst isVisible = (size: Size, node?: ComponentNode) => {\n if (node) {\n return true;\n }\n if (typeof size === 'string') {\n return size === 'full';\n }\n return size > 0;\n};\n\nconst Component = forwardRef<HTMLElement, Props>(\n (\n { className = '', id, branch, node, ariaLabel, tabIndex, context: extraContext, ...other },\n ref\n ) => {\n const components = useComponentPlatform();\n const container = useContainer();\n const [descriptor, setDescriptor] = useState<ComponentDescriptor>();\n\n const columns = useColumns();\n const context = useContext(id);\n const properties = useComponentNodeProperties(id);\n const { size = 'none', indent = 0 } = useLayout(id);\n const visible = isVisible(size, node);\n\n useEffect(() => {\n if (components) {\n if (id && !node) {\n const componentNode = components.nodes.get(id);\n if (componentNode) {\n setDescriptor(asDescriptor(componentNode, branch));\n\n if (visible) {\n const unmount = componentNode.mount(container);\n return () => {\n unmount();\n };\n }\n }\n } else if (node) {\n setDescriptor(asDescriptor(node, branch));\n const unmount = node.mount(container);\n return () => {\n unmount();\n };\n }\n }\n }, [components, id, node, visible]);\n\n if (!descriptor || !visible) {\n return null;\n }\n\n const mergedContexts = { ...context, ...(extraContext || {}) };\n const {\n cardinal,\n fonts: contextFonts = {},\n accessibility = {},\n ...restContext\n } = mergedContexts;\n\n const fonts = {\n type: contextFonts.type,\n base: contextFonts.base || '16px',\n small: contextFonts.small || '0.8em',\n normal: contextFonts.normal || '1em',\n medium: contextFonts.medium || '1.2em',\n large: contextFonts.large || '1.6em',\n huge: contextFonts.huge || '2.5em',\n };\n\n const theme: Theme = {\n ...restContext,\n fonts,\n accessibility: {\n ...accessibility,\n },\n };\n\n if (typeof cardinal === 'number') {\n theme.sizes = {\n cardinal,\n small: `${cardinal}px`,\n normal: `${cardinal * 3}px`,\n medium: `${cardinal * 5}px`,\n large: `${cardinal * 8}px`,\n };\n }\n\n return (\n <ThemeProvider theme={theme}>\n <ComponentNodeContext.Provider value={descriptor}>\n <ComponentPropertyContext.Provider value={properties}>\n {(() => {\n const props = {\n 'data-width':\n size === 'full' ? columns : Math.min(size as number, columns),\n 'data-indent': indent,\n 'data-name': descriptor.name,\n 'data-node-id': descriptor.id,\n 'data-component-type': descriptor.type,\n 'aria-label': ariaLabel,\n tabIndex: tabIndex,\n id: descriptor.id,\n role: properties && properties.role,\n ...other,\n };\n switch (descriptor.type) {\n case 'view': {\n return typeof properties.animation === 'string' &&\n properties.animation !== 'none' ? (\n <StyledAnimatedView {...props} className={className} />\n ) : (\n <StyledView {...props} className={className} />\n );\n }\n default: {\n const cssProps = filterCssProps(properties);\n\n return (\n <ResolvableComponent\n ref={ref}\n {...props}\n {...cssProps}\n className={className}\n />\n );\n }\n }\n })()}\n </ComponentPropertyContext.Provider>\n </ComponentNodeContext.Provider>\n </ThemeProvider>\n );\n }\n);\n\nexport default Component;\n","import { ComponentNode, ComponentPlatform } from '@telia-ace/widget-core';\nimport { useContainer } from '@telia-ace/widget-ui';\nimport React, { useEffect, useState } from 'react';\nimport Component from './component';\n\ntype Props = {\n builder: (components: ComponentPlatform) => Promise<ComponentNode>;\n};\nconst DetachedComponent: React.FC<Props> = ({ builder }) => {\n const container = useContainer();\n const [node, setNode] = useState<ComponentNode | null>(null);\n\n useEffect(() => {\n container.getAsync('components').then((components: ComponentPlatform) => {\n return builder(components).then((createdNode) => {\n setNode(createdNode);\n });\n });\n }, []);\n\n useEffect(() => {\n return () => {\n if (node) {\n container.getAsync('components').then((components: ComponentPlatform) => {\n components.nodes.detached = components.nodes.detached.filter(\n (n) => n.id !== node.id\n );\n });\n }\n };\n }, [node]);\n\n if (!node) {\n return null;\n }\n\n return <Component id={node.id} node={node} branch=\"default\" />;\n};\n\nexport default DetachedComponent;\n","import { useTheme } from '@emotion/react';\nimport { ComponentPlatform } from '@telia-ace/widget-core';\nimport { useContainer } from '@telia-ace/widget-ui';\nimport React from 'react';\n\nconst DetachedComponent = React.lazy(() => import('./detached-component'));\n\ntype Props = {\n showSearch?: boolean;\n};\nconst NotFound: React.FC<Props> = ({ showSearch = false }) => {\n const themeContext = useTheme();\n const container = useContainer();\n\n return (\n <React.Suspense fallback={null}>\n <DetachedComponent\n builder={(components: ComponentPlatform) => {\n return container.get('settings').then((settings: any) => {\n const { properties, context } = Object.keys(settings.components).reduce<{\n properties: any;\n context: any;\n }>(\n (acc, key) => {\n if (settings.components[key].type === 'not-found') {\n acc.properties = settings.components[key].properties;\n acc.context = settings.components[key].context;\n }\n\n return acc;\n },\n { properties: {}, context: {} }\n );\n\n properties.showSearch = showSearch;\n const node = components.createNode('area', { detached: true });\n node.name = 'not-found-area';\n node.writeLayout({\n size: 'full',\n });\n\n if (showSearch) {\n const searchComponentProps = Object.keys(settings.components).reduce(\n (acc, key) => {\n if (settings.components[key].type === 'search') {\n return settings.components[key].properties;\n }\n\n return acc;\n },\n {}\n );\n const searchNode = components.createNode('search', { detached: true });\n searchNode.writeLayout({ size: 'full' });\n searchNode.writeProperties({\n 'css-margin-bottom': themeContext?.sizes?.normal || '15px',\n ...searchComponentProps,\n });\n node.appendChild(searchNode);\n }\n\n const notFoundNode = components.createNode('not-found', { detached: true });\n notFoundNode.writeLayout({ size: 'full' });\n notFoundNode.writeProperties(properties);\n notFoundNode.writeContext(context);\n node.appendChild(notFoundNode);\n\n return node;\n });\n }}\n />\n </React.Suspense>\n );\n};\n\nexport default NotFound;\n","// tslint:disable max-line-length\nexport const renderSymbol = (symbol?: { type: string; content: string }) => {\n if (symbol) {\n const { type, content } = symbol;\n switch (type) {\n case 'FontAwesome':\n return `<i class=\"humany-icon fa fa-${content}\"></i>`;\n case 'Uri':\n return `<i class=\"humany-icon humany-custom-icon\" style=\"background: url(${content}) no-repeat center center;background-size: contain;\"></i>`;\n default:\n return '';\n }\n }\n};\n\nconst triggerTabHandler = (triggerDOMElement: HTMLElement) => {\n const toggleTabbing = (element: HTMLElement, tabbing: boolean) => {\n if (!element) {\n return;\n }\n\n if (tabbing) {\n element.classList.add('humany-tabbing');\n } else {\n element.classList.remove('humany-tabbing');\n }\n };\n\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Tab') {\n toggleTabbing(triggerDOMElement, true);\n } else if (\n !(\n e.key === 'Enter' &&\n document.activeElement &&\n document.activeElement.classList.contains('humany-trigger')\n )\n ) {\n toggleTabbing(triggerDOMElement, false);\n }\n };\n\n const handleClick = (e: MouseEvent) => {\n if (\n document.activeElement &&\n document.activeElement.classList.contains('humany-trigger') &&\n document.activeElement.classList.contains('humany-tabbing')\n ) {\n return;\n }\n toggleTabbing(triggerDOMElement, false);\n };\n\n document.addEventListener('keydown', handleKeydown);\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('keydown', handleKeydown);\n document.removeEventListener('click', handleClick);\n };\n};\n\nexport type TriggerElementOptions = {\n symbol?: { type: string; content: string };\n widgetName: string;\n label?: string;\n ariaLabel?: string;\n tooltip?: string;\n};\n\nexport function createTriggerElement(element: HTMLElement, options: TriggerElementOptions) {\n const { symbol, widgetName, label = '', ariaLabel = '', tooltip = '' } = options;\n\n element.classList.add('humany-trigger');\n element.classList.add(`humany_${widgetName}`);\n\n if (label.length) {\n element.classList.add('humany-has-text');\n }\n\n if (ariaLabel.length && !element.getAttribute('aria-label')) {\n element.setAttribute('aria-label', ariaLabel);\n }\n\n if (ariaLabel.length && !element.getAttribute('tabindex')) {\n element.setAttribute('tabindex', '0');\n }\n\n if (tooltip.length && !element.getAttribute('title')) {\n element.setAttribute('title', tooltip);\n }\n\n const symbolHtml = renderSymbol(symbol) || '';\n element.innerHTML = `${symbolHtml}\n <span class=\"humany-close\">\n <svg width=\"18\" height=\"9\" viewBox=\"0 0 18 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 9C8.81794 9.00045 8.63759 8.96634 8.46939 8.89965C8.3012 8.83295 8.14851 8.735 8.02015 8.61145L0.194523 1.12367C0.068294 0.99862 -0.00155266 0.831133 2.61958e-05 0.657285C0.00160506 0.483436 0.0744832 0.317136 0.202964 0.194202C0.331445 0.0712675 0.505249 0.00153576 0.686941 2.50649e-05C0.868634 -0.00148563 1.04368 0.0653456 1.17437 0.186125L9 7.6739L16.8256 0.186125C16.9563 0.0653456 17.1314 -0.00148563 17.3131 2.50649e-05C17.4948 0.00153576 17.6686 0.0712675 17.797 0.194202C17.9255 0.317136 17.9984 0.483436 18 0.657285C18.0016 0.831133 17.9317 0.99862 17.8055 1.12367L9.97985 8.61145C9.85149 8.735 9.6988 8.83295 9.53061 8.89965C9.36241 8.96634 9.18206 9.00045 9 9Z\" fill=\"white\"/>\n </svg>\n </span>\n <span class=\"humany-loader\">\n <svg viewBox=\"25 25 50 50\">\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"20\"\n fill=\"none\"\n stroke=\"#000\"\n stroke-width=\"2\"\n stroke-miterlimit=\"10\" />\n </svg>\n </span>\n ${label.length ? `<span>${label}</span>` : ''}`;\n\n setTimeout(() => element && (element as HTMLElement).classList.add('humany-rendered'));\n\n return triggerTabHandler(element);\n}\n\nexport function setInactive(elements: HTMLElement | HTMLElement[], title?: string) {\n if (elements instanceof HTMLElement) {\n if (title) {\n elements.setAttribute('title', title);\n }\n elements.classList.remove('humany-active');\n elements.classList.remove('humany-loading');\n } else if (elements instanceof Array) {\n elements.forEach((e) => {\n if (title) {\n e.setAttribute('title', title);\n }\n e.classList.remove('humany-active');\n e.classList.remove('humany-loading');\n });\n }\n}\nexport function setLoading(elements: HTMLElement | HTMLElement[]) {\n if (elements instanceof HTMLElement) {\n elements.classList.remove('humany-active');\n elements.classList.add('humany-loading');\n } else if (elements instanceof Array) {\n elements.forEach((e) => {\n e.classList.remove('humany-active');\n e.classList.add('humany-loading');\n });\n }\n}\nexport function setActive(elements: HTMLElement | HTMLElement[], title?: string) {\n if (elements instanceof HTMLElement) {\n if (title) {\n elements.setAttribute('title', title);\n }\n elements.classList.add('humany-active');\n elements.classList.remove('humany-loading');\n } else if (elements instanceof Array) {\n elements.forEach((e) => {\n if (title) {\n e.setAttribute('title', title);\n }\n e.classList.add('humany-active');\n e.classList.remove('humany-loading');\n });\n }\n}\n","import { ViewOutletOptions } from './view-outlet';\n\nenum ProvidedElements {\n None = 'none',\n WidgetDOM = 'widgetDOM',\n TriggerDOM = 'triggerDOM',\n Both = 'both',\n}\n\nexport enum TriggerType {\n Inline = 'inline',\n Link = 'link',\n Badge = 'badge',\n Unsupported = 'unsupported',\n}\n\nexport const determineProvidedElements = (\n widgetDOMElement?: HTMLElement,\n triggerDOMElement?: HTMLElement\n): ProvidedElements => {\n if (widgetDOMElement && triggerDOMElement) {\n return ProvidedElements.Both;\n }\n if (widgetDOMElement) {\n return ProvidedElements.WidgetDOM;\n }\n if (triggerDOMElement) {\n return ProvidedElements.TriggerDOM;\n }\n return ProvidedElements.None;\n};\n\nexport const determineTriggerType = (triggerDefinition?: any) => {\n if (!triggerDefinition) {\n return TriggerType.Inline;\n }\n if (typeof triggerDefinition === 'boolean' && triggerDefinition) {\n return TriggerType.Link;\n }\n if (typeof triggerDefinition === 'object' && !Array.isArray(triggerDefinition)) {\n return TriggerType.Badge;\n }\n return TriggerType.Unsupported;\n};\n\ntype PrepareDOMElementsOutput = ViewOutletOptions & {\n callback?: () => void;\n};\n\nexport const prepareDOMElements = (\n name: string,\n providedWidgetElement?: HTMLElement,\n providedTriggerElement?: HTMLElement,\n triggerDefinition?: any,\n waitWithReplace: boolean = false\n): PrepareDOMElementsOutput => {\n const providedElements = determineProvidedElements(\n providedWidgetElement,\n providedTriggerElement\n );\n const triggerType = determineTriggerType(triggerDefinition);\n\n const cachedOriginals = {\n widgetDOMElement: providedWidgetElement ? providedWidgetElement.cloneNode(true) : undefined,\n triggerDOMElement: providedTriggerElement\n ? providedTriggerElement.cloneNode(true)\n : undefined,\n };\n\n const output: PrepareDOMElementsOutput = {\n triggerType,\n cachedOriginals,\n widgetDOMElement: document.createElement('div'),\n };\n\n switch (providedElements) {\n case ProvidedElements.Both: {\n output.widgetDOMElement = providedWidgetElement || document.createElement('div');\n if (triggerType !== TriggerType.Inline) {\n output.triggerDOMElement = providedTriggerElement;\n }\n break;\n }\n case ProvidedElements.WidgetDOM: {\n output.widgetDOMElement = providedWidgetElement || document.createElement('div');\n if (triggerType !== TriggerType.Inline) {\n const triggerElement = document.body.appendChild(document.createElement('a'));\n if (triggerType === TriggerType.Link) {\n triggerElement.innerText = name;\n }\n output.triggerDOMElement = triggerElement;\n }\n break;\n }\n case ProvidedElements.TriggerDOM: {\n const widgetElement = document.createElement('div');\n output.widgetDOMElement = widgetElement;\n if (triggerType === TriggerType.Inline) {\n // replace with widgetDOMElement in the DOM\n widgetElement.id = providedTriggerElement?.id || '';\n if (waitWithReplace) {\n widgetElement.style.display = 'none';\n providedTriggerElement?.parentNode?.appendChild(widgetElement);\n\n output.callback = () => {\n providedTriggerElement?.parentNode?.replaceChild(\n widgetElement,\n providedTriggerElement\n );\n widgetElement.style.display =\n providedTriggerElement?.style.display || 'block';\n };\n } else {\n providedTriggerElement?.parentNode?.replaceChild(\n widgetElement,\n providedTriggerElement\n );\n }\n output.cachedOriginals.widgetDOMElement = providedTriggerElement;\n output.cachedOriginals.triggerDOMElement = undefined;\n } else {\n output.widgetDOMElement = document.body.appendChild(widgetElement);\n output.triggerDOMElement = providedTriggerElement;\n }\n break;\n }\n case ProvidedElements.None: {\n const widgetElement = document.body.appendChild(document.createElement('div'));\n output.widgetDOMElement = widgetElement;\n if (triggerType !== TriggerType.Inline) {\n const triggerElement = document.body.appendChild(document.createElement('a'));\n if (triggerType === TriggerType.Link) {\n triggerElement.innerText = name;\n }\n output.triggerDOMElement = triggerElement;\n }\n break;\n }\n }\n\n return output;\n};\n","import { readStorage, StorageMedium } from '@telia-ace/widget-services';\nimport { Symbol } from '@telia-ace/widget-ui';\nimport { notifyDataLoaded } from '@telia-ace/widget-utilities';\nimport { Container, Widget } from '@webprovisions/platform';\nimport { createTriggerElement, setActive, setLoading } from './html-element-handlers';\nimport { TriggerType } from './prepare-dom';\n\nconst MODALS_STORAGE_KEY = 'modals';\n\nexport type BadgeOptions = {\n symbol?: Symbol;\n label?: string;\n ariaLabel?: string;\n openTooltip?: string;\n closedTooltip?: string;\n};\n\nexport type ViewOutletOptions = {\n widgetDOMElement: HTMLElement;\n triggerDOMElement?: HTMLElement;\n triggerOptions?: BadgeOptions | boolean;\n triggerType: TriggerType;\n cachedOriginals: {\n widgetDOMElement?: Node;\n triggerDOMElement?: Node;\n };\n};\n\ntype Modals = {\n name: string;\n ref?: HTMLElement;\n selector?: string;\n};\n\nexport class ViewOutlet {\n container: Container;\n private unsubscribe: (() => void)[] = [];\n\n constructor(container: Container, public options: ViewOutletOptions) {\n this.container = container.createChild(this);\n this.container.register('widgetDOMElement', this.options.widgetDOMElement);\n this.container.register('triggerDOMElement', this.options.triggerDOMElement);\n\n const widget: Widget = this.container.get('$widget');\n this.options.widgetDOMElement.classList.add('humany-widget');\n this.options.widgetDOMElement.classList.add(`humany_${widget.name}`);\n\n const widgetDOMElements = container.get('widgetDOMElements') || [];\n container.register('widgetDOMElements', [\n ...widgetDOMElements,\n this.options.widgetDOMElement,\n ]);\n }\n\n /**\n * Renders the view outlet to the DOM.\n */\n render() {\n const { widgetDOMElement, triggerDOMElement } = this.options;\n\n const widget: Widget = this.container.get('$widget');\n\n if (widgetDOMElement.getAttribute('data-rendered') === 'true') {\n return Promise.resolve();\n }\n\n if (triggerDOMElement && this.options.triggerType === TriggerType.Badge) {\n setLoading(triggerDOMElement);\n }\n\n return import('./render')\n .then((module) => module.default(this.container, widgetDOMElement))\n .then(() => {\n widgetDOMElement.setAttribute('data-rendered', 'true');\n\n if (triggerDOMElement && this.options.triggerType === TriggerType.Badge) {\n const tooltip = (this.options.triggerOptions as BadgeOptions).openTooltip;\n setActive(triggerDOMElement, tooltip);\n }\n notifyDataLoaded(this.container, widgetDOMElement);\n\n const widgets = this.container.get('$environment').widgets.all();\n\n readStorage<Modals[]>(\n this.container,\n MODALS_STORAGE_KEY,\n StorageMedium.Session\n ).then((modals) => {\n if (modals) {\n modals.forEach((modal) => {\n if (\n widgets.find(\n (w: Widget) => w.name === modal.name && w.state === 'activated'\n )\n ) {\n widget.events.dispatch('widget:modal-opened', modal);\n }\n });\n }\n });\n });\n }\n\n renderBadge(options: BadgeOptions) {\n const { triggerDOMElement } = this.options;\n\n if (!triggerDOMElement) {\n return;\n }\n\n if (!triggerDOMElement.getAttribute('role')) {\n triggerDOMElement.setAttribute('role', 'button');\n }\n\n const { name }: Widget = this.container.get('$widget');\n\n const { label, symbol, ariaLabel, closedTooltip, openTooltip } = options;\n\n const triggerOptions = { closedTooltip, openTooltip };\n this.options.triggerOptions = triggerOptions;\n\n const removeTriggerListeners = createTriggerElement(triggerDOMElement, {\n label,\n symbol,\n ariaLabel,\n widgetName: name,\n tooltip: closedTooltip,\n });\n this.unsubscribe.push(removeTriggerListeners);\n }\n\n dispose() {\n return import('./unmount').then((module) => {\n const { triggerDOMElement, widgetDOMElement } = this.options;\n module.default(widgetDOMElement);\n\n if (this.options.cachedOriginals.widgetDOMElement) {\n if (widgetDOMElement) {\n widgetDOMElement.parentNode?.replaceChild(\n this.options.cachedOriginals.widgetDOMElement,\n widgetDOMElement\n );\n }\n }\n if (this.options.cachedOriginals.triggerDOMElement) {\n if (triggerDOMElement) {\n triggerDOMElement.parentNode?.replaceChild(\n this.options.cachedOriginals.triggerDOMElement,\n triggerDOMElement\n );\n }\n }\n\n this.unsubscribe.forEach((unsubscribe) => {\n unsubscribe();\n });\n\n widgetDOMElement.parentNode?.removeChild(widgetDOMElement);\n triggerDOMElement?.parentNode?.removeChild(triggerDOMElement);\n });\n }\n}\n","import {\n ChangesetOptions,\n ChangesetProvider,\n ComponentNodeAttributes,\n ComponentNodeSettings,\n ComponentPlatform,\n ComponentQuery,\n ComponentQueryRule,\n createComponentModel,\n WidgetSettings,\n} from '@telia-ace/widget-core';\nimport {\n createStorageWriter,\n readStorage,\n StorageCategory,\n StorageMedium,\n StorageWriter,\n} from '@telia-ace/widget-services';\nimport { lock } from '@telia-ace/widget-utilities';\nimport { Container, Widget, WidgetState } from '@webprovisions/platform';\n\nconst STORAGE_KEY = 'changesets';\n\ntype ChangesetItem = {\n rules: ComponentQueryRule[];\n attributes: Partial<ComponentNodeAttributes>;\n options: ChangesetOptions;\n};\n\ntype ChangesetItemBag = {\n items?: { [key: string]: ChangesetItem };\n keys?: string[];\n};\n\nconst convertSettingsToAttributes = (\n settings: Partial<ComponentNodeSettings>\n): Partial<ComponentNodeAttributes> => {\n const attributes: Partial<ComponentNodeAttributes> = { tags: settings.tags };\n if (settings.context && typeof settings.context !== 'function') {\n attributes.context = settings.context;\n }\n if (settings.properties && typeof settings.properties !== 'function') {\n attributes.properties = settings.properties;\n }\n if (settings.layout && typeof settings.layout !== 'function') {\n attributes.layout = settings.layout;\n }\n\n return attributes;\n};\n\nexport class LocalStorageChangesetProvider implements ChangesetProvider {\n constructor(private container: Container, private storageWriter: StorageWriter) {}\n\n static create(container: Container): Promise<LocalStorageChangesetProvider> {\n return createStorageWriter(container, STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n }).then((storageWriter) => new LocalStorageChangesetProvider(container, storageWriter));\n }\n\n write(\n key: string,\n target: ComponentQuery,\n attributes: Partial<ComponentNodeSettings>,\n options: ChangesetOptions\n ): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n const existingIndex = keys.indexOf(key);\n if (existingIndex > -1) {\n keys.splice(existingIndex, 1);\n }\n keys.push(key);\n items[key] = {\n options,\n attributes: convertSettingsToAttributes(attributes),\n rules: target.rules,\n };\n return this.storageWriter({ keys, items });\n });\n });\n }\n\n remove(key: string): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n const indexToRemove = keys.indexOf(key);\n if (indexToRemove > -1) {\n keys.splice(indexToRemove, 1);\n delete items[key];\n return this.storageWriter(bag);\n }\n });\n });\n }\n\n load(platform: ComponentPlatform): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n keys.forEach((key) => {\n const item = items[key];\n if (item) {\n const { rules, attributes, options } = item;\n platform.write({\n attributes,\n options,\n target: new ComponentQuery(platform, rules),\n });\n }\n });\n });\n });\n }\n}\n\nexport const createPlatform = (widget: Widget): Promise<ComponentPlatform> => {\n const { container } = widget;\n return LocalStorageChangesetProvider.create(container).then((localStorage) => {\n const settings: WidgetSettings = container.get('$settings');\n const providers = { localStorage };\n const platform = new ComponentPlatform(widget, providers);\n const destructComponentModel = createComponentModel(platform, settings);\n\n widget.events.subscribe('widget:state-change', (event, data: { state: WidgetState }) => {\n if (data.state === WidgetState.Deactivating) {\n destructComponentModel();\n }\n });\n\n return platform;\n });\n};\n","import { WidgetSettings } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { createPlatform } from './component-platform-factory';\n\nexport const createRoutingService = (container: Container) => {\n return import('@telia-ace/widget-routing').then(({ RoutingService, HistoryMode }) => {\n return container.get('settings').then((settings: WidgetSettings) => {\n const {\n routing: { initialPath = '/', mode = HistoryMode.scopedHash, basePath },\n views,\n } = settings;\n\n const routingService = new RoutingService(container, {\n initialPath,\n mode,\n routes: Object.keys(views).map((name) => ({\n name,\n path: views[name].path,\n })),\n basePath,\n });\n return routingService;\n });\n });\n};\n\nexport const createStorageService = (container: Container) => {\n return import('@telia-ace/widget-services').then(({ StorageProvider }) => {\n return new StorageProvider();\n });\n};\n\nexport const createActionResolver = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ActionResolver }) => {\n return new ActionResolver(container);\n });\n};\n\nexport const createComponentResolver = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ComponentResolver }) => {\n return new ComponentResolver(container);\n });\n};\n\nexport const createComponentPlatform = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ComponentPlatform, createComponentModel }) => {\n return createPlatform(container.get('$widget'));\n });\n};\n","import {\n ActionResolver,\n ComponentPlatform,\n WidgetRenderState,\n WidgetSettings,\n} from '@telia-ace/widget-core';\nimport { onWidgetUrl, RouteData, RoutingService } from '@telia-ace/widget-routing';\nimport {\n createStorageWriter,\n readStorage,\n StorageCategory,\n StorageMedium,\n StorageScope,\n} from '@telia-ace/widget-services';\nimport { removeNullAndUndefinedValues, uuid } from '@telia-ace/widget-utilities';\nimport { BootstrappingActivationData, supportBootstrapping } from '@webprovisions/bootstrapping';\nimport { Container, EventSubscriptionCancellation, WidgetType } from '@webprovisions/platform';\nimport { BadgeOptions, ViewOutlet, ViewOutletOptions } from '././ui/view-outlet';\nimport {\n createActionResolver,\n createComponentPlatform,\n createComponentResolver,\n createRoutingService,\n createStorageService,\n} from './services';\nimport { setActive, setInactive } from './ui/html-element-handlers';\nimport { determineTriggerType, prepareDOMElements, TriggerType } from './ui/prepare-dom';\n\nconst SETTINGS_STORAGE_KEY = '$settings';\nconst OPEN_STORAGE_KEY = 'open';\nconst STICKY_WIDGET_STORAGE_KEY = 'activeStickyWidget';\n\nexport enum InitialRenderState {\n Open = 'open',\n Closed = 'closed',\n Hidden = 'hidden',\n Storage = 'storage',\n}\n\nexport type RenderData = {\n widgetDOMElement?: HTMLElement;\n triggerDOMElement?: HTMLElement;\n key?: string;\n open?: boolean;\n withRenderState?: InitialRenderState;\n};\n\nexport type AttachData = {\n widgetDOMElement?: HTMLElement;\n triggerDOMElement?: HTMLElement;\n key?: string;\n withRenderState?: InitialRenderState;\n};\n\nexport default class Widget extends WidgetType {\n outlets = new Map<string, ViewOutlet>();\n activated: Promise<void> | undefined = undefined;\n subs: EventSubscriptionCancellation[] = [];\n\n constructor(container: Container) {\n super(container);\n\n this.container.registerAsync('storage', () => createStorageService(this.container));\n\n this.container.registerFactory('settings', () => {\n return readStorage<Partial<WidgetSettings>>(\n this.container,\n SETTINGS_STORAGE_KEY,\n StorageMedium.Local\n ).then((settings = {}) => {\n return {\n ...this.container.get('$settings'),\n ...settings,\n };\n });\n });\n\n supportBootstrapping(this as any, 'load', this.handleBootstrapping);\n\n this.container.registerAsync('componentResolver', () =>\n createComponentResolver(this.container)\n );\n this.container.registerAsync('router', () => createRoutingService(this.container));\n this.container.registerAsync('actionResolver', () => createActionResolver(this.container));\n this.container.register('matchMedia', window.matchMedia);\n this.container.registerAsync('components', () => createComponentPlatform(this.container));\n }\n\n handleBootstrapping = (activationData: BootstrappingActivationData) => {\n const options = {\n triggerDOMElement: activationData.sourceDOMElement,\n withRenderState: InitialRenderState.Storage,\n };\n\n this.container.get('settings').then((settings: any) => {\n const { activate } = settings;\n const shouldActivate =\n typeof activate === 'undefined' || activate === null || activate === true;\n\n if (shouldActivate) {\n this.activated = (this.activated || this.widget.activate()).then(() =>\n this.attach(options)\n );\n }\n });\n };\n\n initialize() {\n const promises = this.container.getManyAsync(\n 'actionResolver',\n 'router',\n 'components'\n ) as Promise<{\n actionResolver: ActionResolver;\n router: RoutingService;\n components: ComponentPlatform;\n }>;\n\n return Promise.all([promises, this.container.get('settings')]).then(\n ([{ actionResolver, router, components }, settings]) => {\n actionResolver.subscribe(this.widget.name, (origin, action, value) =>\n this.onAction(action, value)\n );\n\n const switchViewNodes = (routeName: string) => {\n components.nodes.query({ type: 'view' }).forEach((viewNode) => {\n components.setSwitch(viewNode, routeName);\n });\n };\n\n const initialRoute = router.getInitialRoute()?.name || 'index';\n switchViewNodes(initialRoute);\n\n this.events.subscribe('widget:data-loaded', (e, { element }) => {\n if (this.widget.container.get('seoConfiguration')) {\n this.events.dispatch('widget:preloaded-replaced', {\n element,\n });\n }\n });\n\n this.events.subscribe(\n 'router:change',\n (e, { previous = { routeData: {} }, next = { routeData: {} } }) => {\n const { routeData: prevData }: { routeData: RouteData } = previous;\n const { routeData: nextData }: { routeData: RouteData } = next;\n\n const notFoundView = Object.keys(settings.views).reduce((acc, key) => {\n const view = settings.views[key];\n if (typeof view.path === 'undefined') {\n return key;\n }\n return acc;\n }, '');\n\n // route not found\n if (!nextData.name && notFoundView) {\n switchViewNodes(notFoundView);\n } else {\n switchViewNodes(nextData.name);\n }\n\n removeNullAndUndefinedValues(prevData && prevData.params);\n removeNullAndUndefinedValues(nextData && nextData.params);\n\n this.container\n .getAsync('actionResolver')\n .then((actionResolver: ActionResolver) => {\n actionResolver.action(this.widget.name, 'routeChange', {\n next: nextData,\n previous: prevData,\n });\n });\n }\n );\n\n return router.initialize();\n }\n );\n }\n\n attach(attachData: AttachData = {}) {\n return this.container.get('settings').then(({ trigger }: WidgetSettings) => {\n const {\n widgetDOMElement,\n key = uuid(),\n triggerDOMElement,\n withRenderState,\n } = attachData;\n\n const triggerType = determineTriggerType(trigger);\n\n // This could probably be defined already when bootstrapping occurs,\n // Webprovisions knows when a widget is prerendered,\n // see \"queryPrerenderedTargets in @webprovisions/bootstrapping\"\n const waitWithReplace =\n triggerType === TriggerType.Inline &&\n (triggerDOMElement?.childElementCount || 0) > 0;\n\n const outletOptions = prepareDOMElements(\n this.widget.name,\n widgetDOMElement,\n triggerDOMElement,\n trigger,\n waitWithReplace\n );\n\n if (this.outlets.size < 1 && !withRenderState) {\n this.setRenderState('unset');\n }\n\n const swap = () => {\n const isReady = () =>\n widgetDOMElement.querySelectorAll('[data-loading=true]').length === 0;\n const [widgetDOMElement] = this.widget.container.get('widgetDOMElements');\n\n const watcher = (mutations: MutationRecord[], observer: MutationObserver) => {\n if (isReady()) {\n if (outletOptions.callback) {\n outletOptions.callback();\n }\n observer.disconnect();\n }\n };\n const options = {\n attributes: true,\n subtree: true,\n childList: true,\n };\n\n if (isReady()) {\n outletOptions.callback && outletOptions.callback();\n }\n const observer = new MutationObserver(watcher);\n\n observer.observe(widgetDOMElement, options);\n };\n\n if (waitWithReplace) {\n this.widget.container.getAsync('dataClient').then(({ events }: any) => {\n events.subscribe('data-client:fetched', (event: any, data: any) => {\n if (data.unresolvedQueries === 0) {\n swap();\n }\n });\n });\n }\n\n const outlet = this.getOrCreateViewOutlet(key, outletOptions);\n this.outlets.set(key, outlet);\n this.widget.events.dispatch('widget:attached', {}, { bubbles: true });\n\n if (outletOptions.triggerType === TriggerType.Badge && trigger) {\n outletOptions.triggerDOMElement?.setAttribute('aria-expanded', 'false');\n outlet?.renderBadge(trigger);\n }\n\n if (outletOptions.triggerType !== TriggerType.Inline) {\n outletOptions.triggerDOMElement?.addEventListener('click', (event: any) => {\n event.preventDefault();\n this.container\n .get('settings')\n .then(({ trigger: updatedTrigger }: WidgetSettings) => {\n outlet\n .render()\n .then(() => this.renderState())\n .then((renderState) => {\n if (\n updatedTrigger &&\n updatedTrigger.action &&\n updatedTrigger.action === 'hide'\n ) {\n return renderState === WidgetRenderState.open\n ? this.hide()\n : this.open();\n }\n return renderState === WidgetRenderState.open\n ? this.close()\n : this.open();\n });\n });\n });\n }\n\n if (this.outlets.size > 1) {\n return this.renderState().then((state: WidgetRenderState) => {\n // new outlets should have the same state as existing ones\n this.triggerStateIfApplicable(state);\n });\n }\n\n if (withRenderState) {\n if (withRenderState === InitialRenderState.Storage) {\n return this.renderState().then((state: WidgetRenderState) => {\n if (outletOptions.triggerType === TriggerType.Inline) {\n this.triggerStateIfApplicable('open');\n return;\n }\n this.triggerStateIfApplicable(state);\n });\n }\n return this.triggerStateIfApplicable(withRenderState);\n }\n });\n }\n\n detach(key?: string) {\n if (key) {\n if (this.outlets.has(key)) {\n const outlet = this.outlets.get(key);\n outlet?.dispose();\n this.outlets.delete(key);\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`detach(): Could not find View Outlet with key ${key}`);\n }\n return;\n }\n this.outlets.forEach((outlet) => {\n outlet.dispose();\n });\n this.outlets.clear();\n }\n\n private triggerStateIfApplicable(input: string) {\n return this.container.getAsync('router').then((router) => {\n switch (input) {\n case 'closed':\n this.close();\n break;\n case 'open':\n this.open();\n break;\n case 'hidden':\n this.hide();\n router.start();\n break;\n default:\n return;\n }\n });\n }\n\n private getOrCreateViewOutlet(key: string, options: ViewOutletOptions): ViewOutlet {\n return (\n this.outlets.has(key) ? this.outlets.get(key) : new ViewOutlet(this.container, options)\n )!;\n }\n\n render(renderData: RenderData = {}) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('widget.render() is deprecated. Use widget.attach() instead.');\n }\n if (renderData.open) {\n const options: AttachData = {\n ...renderData,\n withRenderState: InitialRenderState.Open,\n };\n return this.attach(options);\n }\n return this.attach(renderData);\n }\n\n activate(data?: any) {\n if (data?.override) {\n this.setSettings(() => data.override);\n }\n // TODO: this is considered a hack, remove apiNotificationPriorityBy\n // when there is a better way to get notifications from backend\n if (data?.apiNotificationPriorityBy) {\n this.container.register('apiNotificationPriorityBy', data.apiNotificationPriorityBy);\n }\n }\n\n setSettings(\n fn: (settings: WidgetSettings) => Promise<Partial<WidgetSettings>>\n ): Promise<WidgetSettings> {\n return Promise.all([\n this.container.get('settings'),\n createStorageWriter(this.container, SETTINGS_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n }),\n ]).then(([settings, write]) => {\n return Promise.resolve(fn(settings)).then((override) => {\n return write(override).then(() => {\n const updated = { ...settings, ...override };\n this.widget.events.dispatch('widget:settings-updated', updated);\n return updated;\n });\n });\n });\n }\n\n clearSettings(): Promise<void> {\n return createStorageWriter(\n this.container,\n SETTINGS_STORAGE_KEY,\n StorageCategory.Necessary,\n { medium: StorageMedium.Local }\n )\n .then((write) => write())\n .then(() => this.container.get('settings'))\n .then((settings) => {\n this.widget.events.dispatch('widget:settings-updated', settings);\n });\n }\n\n action({ action, value }: { action: string; value?: any }) {\n return this.container.getAsync('actionResolver').then((actionResolver: ActionResolver) => {\n actionResolver.action(this.widget.name, action, value);\n });\n }\n\n renderState(): Promise<WidgetRenderState> {\n if (onWidgetUrl(this.container)) {\n return Promise.resolve(WidgetRenderState.open);\n }\n const readSessionOpen = () =>\n readStorage<WidgetRenderState>(\n this.container,\n OPEN_STORAGE_KEY,\n StorageMedium.Session\n ).then((value = WidgetRenderState.closed) => value);\n\n const readLocalOpen = () =>\n readStorage<WidgetRenderState>(\n this.container,\n OPEN_STORAGE_KEY,\n StorageMedium.Session\n ).then((value = WidgetRenderState.closed) => value);\n\n return this.container.getAsync('router').then((routing: RoutingService) => {\n if (routing.isSticky()) {\n return readLocalOpen().then((localOpen) => {\n return localOpen === WidgetRenderState.open ? localOpen : readSessionOpen();\n });\n }\n return readSessionOpen();\n });\n }\n\n hide(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'hide(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n this.outlets.forEach((outlet) => outlet.render());\n return this.action({ action: 'hide' }).then(() => {\n this.setTriggerState(false);\n });\n }\n\n open(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'open(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n this.outlets.forEach((outlet) => outlet.render());\n return this.action({ action: 'open' }).then(() => {\n this.widget.events.dispatch('tracking:widget-rendered', {});\n return this.onOpen();\n });\n }\n\n close(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'close(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n return this.action({ action: 'close' }).then(() => this.onClose());\n }\n\n show(): Promise<void> {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'show(): Command is deprecated and will be removed in the future. Use open() instead.'\n );\n }\n return this.open();\n }\n\n private onAction(action: string, value: any) {\n switch (action) {\n case 'close':\n case 'open':\n case 'hide':\n const newState =\n action === 'open'\n ? WidgetRenderState.open\n : action === 'close'\n ? WidgetRenderState.closed\n : WidgetRenderState.hidden;\n\n return this.setRenderState(newState).then(() => {\n this.setTriggerState(newState === WidgetRenderState.open);\n if (newState !== WidgetRenderState.hidden) {\n newState === WidgetRenderState.open ? this.onOpen() : this.onClose();\n } else {\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'false')\n );\n }\n });\n }\n }\n\n private setRenderState(newState: string): Promise<void> {\n const { invoke, events } = this.container.get('$widget');\n return Promise.all([\n createStorageWriter(this.container, OPEN_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Session,\n }),\n createStorageWriter(this.container, OPEN_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n duration: { minutes: 5 },\n }),\n this.container.getAsync('router'),\n invoke('renderState'),\n ]).then(([writeSessionOpen, writeLocalOpen, routing, previousRenderState]) => {\n if (newState === 'unset' || !newState) {\n writeLocalOpen();\n writeSessionOpen();\n } else {\n if (routing.isSticky()) {\n writeLocalOpen(newState);\n }\n writeSessionOpen(newState);\n }\n events.dispatch('widget:render-state-changed', {\n previous: previousRenderState,\n next: newState,\n });\n });\n }\n\n private onOpen(): Promise<void> {\n return this.container.getAsync('router').then((router: RoutingService) => {\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'true')\n );\n return router.start();\n });\n }\n\n private onClose(): Promise<void> {\n const services = this.container.getManyAsync('router', 'components') as Promise<{\n router: RoutingService;\n components: ComponentPlatform;\n }>;\n\n const resetActivateProp = () => {\n return this.container.get('settings').then((widgetSettings: WidgetSettings) => {\n const { activate } = this.container.get('$settings');\n if (widgetSettings.activate !== activate) {\n return this.setSettings(() => Promise.resolve({ activate }));\n }\n return Promise.resolve();\n });\n };\n\n return resetActivateProp()\n .then(() => {\n return services;\n })\n .then(\n ({\n router,\n components,\n }: {\n router: RoutingService;\n components: ComponentPlatform;\n }) => {\n const visibleNodes = components.nodes.visible;\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'false')\n );\n\n if (\n visibleNodes.filter(\n (c) =>\n c.attributes.properties.animation &&\n c.attributes.properties.animation !== 'none'\n ).length\n ) {\n return new Promise<RoutingService>((resolve) => {\n setTimeout(() => {\n resolve(router);\n }, 200);\n });\n }\n\n return Promise.resolve(router);\n }\n )\n .then((router: RoutingService) => router.stop());\n }\n\n private setTriggerState(open: boolean) {\n this.outlets.forEach((outlet) => {\n const {\n options: { triggerDOMElement, triggerOptions },\n } = outlet;\n const { openTooltip, closedTooltip } = (triggerOptions as BadgeOptions) || {};\n if (triggerDOMElement) {\n open\n ? setActive(triggerDOMElement, openTooltip)\n : setInactive(triggerDOMElement, closedTooltip);\n }\n });\n }\n\n deactivate() {\n this.subs.forEach((s) => s());\n\n const promises: Promise<void>[] = [];\n this.outlets.forEach((outlet) => promises.push(outlet.dispose()));\n\n return readStorage<string>(\n this.container,\n STICKY_WIDGET_STORAGE_KEY,\n StorageMedium.Local\n ).then((value) => {\n /**\n * Remove stored sticky widget from implementation's localStorage if applicable\n */\n if (value === this.widget.name) {\n return createStorageWriter(\n this.container,\n STICKY_WIDGET_STORAGE_KEY,\n StorageCategory.Necessary,\n {\n medium: StorageMedium.Local,\n scope: StorageScope.Implementation,\n }\n )\n .then((write) => write())\n .then(() => Promise.all(promises));\n }\n return Promise.all(promises);\n });\n }\n}\n"],"names":["SlideDirection","determineSlideDirection","currentRouteName","nextRouteName","routeRanking","Switch","views","location","render","React","RouteSwitch","__spreadProps","__spreadValues","key","name","path","Route","StyledViewContainer","styled","StyledView","Grid","p","routeHierarchy","AnimatedView","_a","_b","className","other","__objRest","routeName","setRouteName","useState","transitionDirection","setTransitionDirection","nextRoute","useRouteData","router","useRouter","properties","useProperties","context","useContext","container","useContainer","node","useComponentNode","gap","columns","animation","scrollable","areaProperties","scrollableCss","elem","useScroll","renderView","transitionState","direction","animationStyles","getAnimation","childNode","appendClassNames","Component","transitionComposer","TransitionGroup","child","Transition","state","View","styling","css","paddedBorderTabStyle","StyledAnimatedView","NonResolvedComponentWrapper","_c","ResolvableComponent","forwardRef","ref","children","ResolvedComponent","useComponent","type","id","useComponentDescriptor","StyledResolvableComponent","useMemo","filterCssPropsStyle","Typography","Suspense","useComponentNodeProperties","components","useComponentPlatform","setProperties","isMounted","useIsMounted","useEffect","unsubscribe","event","data","isVisible","size","branch","ariaLabel","tabIndex","extraContext","descriptor","setDescriptor","useColumns","indent","useLayout","visible","componentNode","asDescriptor","unmount","cardinal","contextFonts","accessibility","restContext","fonts","theme","ThemeProvider","ComponentNodeContext","ComponentPropertyContext","props","cssProps","filterCssProps","DetachedComponent","builder","setNode","createdNode","n","detachedComponent","NotFound","showSearch","themeContext","useTheme","settings","acc","searchComponentProps","searchNode","notFoundNode","renderSymbol","symbol","content","triggerTabHandler","triggerDOMElement","toggleTabbing","element","tabbing","handleKeydown","e","handleClick","createTriggerElement","options","widgetName","label","tooltip","symbolHtml","setInactive","elements","title","setLoading","setActive","TriggerType","determineProvidedElements","widgetDOMElement","determineTriggerType","triggerDefinition","prepareDOMElements","providedWidgetElement","providedTriggerElement","waitWithReplace","providedElements","triggerType","cachedOriginals","output","triggerElement","widgetElement","MODALS_STORAGE_KEY","ViewOutlet","__publicField","widget","widgetDOMElements","module","notifyDataLoaded","widgets","readStorage","StorageMedium","modals","modal","w","closedTooltip","openTooltip","triggerOptions","removeTriggerListeners","_d","STORAGE_KEY","convertSettingsToAttributes","attributes","LocalStorageChangesetProvider","storageWriter","createStorageWriter","StorageCategory","target","lock","bag","keys","items","existingIndex","indexToRemove","platform","item","rules","ComponentQuery","createPlatform","localStorage","providers","ComponentPlatform","destructComponentModel","createComponentModel","WidgetState","createRoutingService","RoutingService","HistoryMode","initialPath","mode","basePath","createStorageService","StorageProvider","createActionResolver","ActionResolver","createComponentResolver","ComponentResolver","createComponentPlatform","SETTINGS_STORAGE_KEY","OPEN_STORAGE_KEY","STICKY_WIDGET_STORAGE_KEY","Widget","WidgetType","activationData","activate","supportBootstrapping","promises","actionResolver","origin","action","value","switchViewNodes","viewNode","initialRoute","previous","next","prevData","nextData","notFoundView","removeNullAndUndefinedValues","attachData","trigger","uuid","withRenderState","outletOptions","swap","isReady","watcher","mutations","observer","events","outlet","updatedTrigger","renderState","WidgetRenderState","input","renderData","fn","write","override","updated","onWidgetUrl","readSessionOpen","readLocalOpen","routing","localOpen","newState","invoke","writeSessionOpen","writeLocalOpen","previousRenderState","services","widgetSettings","visibleNodes","c","resolve","open","s","StorageScope"],"mappings":"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"}
@@ -65,4 +65,4 @@ const v = (e) => {
65
65
  export {
66
66
  F as default
67
67
  };
68
- //# sourceMappingURL=render.f2d6da89.js.map
68
+ //# sourceMappingURL=render.097b9f73.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.f2d6da89.js","sources":["../../../node_modules/react-dom/client.js","../src/ui/use-router.ts","../src/ui/wrapper.tsx","../src/ui/render.tsx"],"sourcesContent":["'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","import { RoutingService } from '@telia-ace/widget-routing';\nimport { useIsMounted } from '@telia-ace/widget-ui';\nimport { Container } from '@webprovisions/platform';\nimport { useEffect, useState } from 'react';\n\nexport default (container: Container): RoutingService | null => {\n const [router, setRouter] = useState<RoutingService | null>(null);\n const isMounted = useIsMounted();\n\n useEffect(() => {\n container.getAsync('router').then((router: RoutingService) => {\n if (isMounted.current) {\n setRouter(router);\n }\n });\n }, [container, isMounted]);\n\n return router;\n};\n","import { ContainerContext, RoutingContext, useComponentPlatform } from '@telia-ace/widget-ui';\nimport { Container } from '@webprovisions/platform';\nimport React, { useEffect, useState } from 'react';\nimport { Router } from 'react-router-dom';\nimport Component from './component';\nimport useRouter from './use-router';\n\nconst keyNavigationKeys = ['Tab', 'ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'];\n\ntype Props = {\n container: Container;\n};\n\nconst Wrapper: React.FC<Props> = ({ container }) => {\n const components = useComponentPlatform(container);\n const router = useRouter(container);\n const [entry, setEntry] = useState<string | null>(null);\n\n useEffect(() => {\n if (components) {\n setEntry(components.nodes.root.children.default[0].id || null);\n const unsubscribe = components.events.subscribe(\n 'components:root-children-changed',\n (event, { node }) => {\n if (node.parent && node.parent.type === 'root') {\n const entry = node.parent.children.default[0].id;\n setEntry(entry);\n }\n }\n );\n\n return unsubscribe;\n }\n }, [components]);\n\n if (!router || !router.history || !components) {\n return null;\n }\n\n if (!entry) {\n return null;\n }\n\n return (\n <Router history={router.history}>\n <ContainerContext.Provider value={container}>\n <RoutingContext.Provider value={router}>\n <Component id={entry} branch=\"default\" />\n </RoutingContext.Provider>\n </ContainerContext.Provider>\n </Router>\n );\n};\n\nexport default Wrapper;\n","import { Container } from '@webprovisions/platform';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport Wrapper from './wrapper';\n\nexport default (container: Container, element: HTMLElement) => {\n const root = createRoot(element);\n root.render(<Wrapper container={container} />);\n};\n"],"names":["m","require$$0","createRoot","i","c","o","useRouter","container","router","setRouter","useState","isMounted","useIsMounted","useEffect","Wrapper","components","useComponentPlatform","entry","setEntry","event","node","React","Router","ContainerContext","RoutingContext","Component","Wrapper$1","render","element"],"mappings":";;;;;;;;;;;;;;;OAEIA,IAAIC;AACR,IAAI,QAAQ,IAAI,aAAa;AAC3B,EAAAC,IAAqBF,EAAE,YACDA,EAAE;AAAA,KACnB;AACL,MAAIG,IAAIH,EAAE;AACV,EAAAE,IAAqB,SAASE,GAAGC,GAAG;AAClC,IAAAF,EAAE,wBAAwB;AAC1B,QAAI;AACF,aAAOH,EAAE,WAAWI,GAAGC,CAAC;AAAA,IAC9B,UAAc;AACR,MAAAF,EAAE,wBAAwB;AAAA,IAC3B;AAAA,EACL;AASA;ACnBA,MAAeG,IAAA,CAACC,MAAgD;AAC5D,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAgC,IAAI,GAC1DC,IAAYC;AAElB,SAAAC,EAAU,MAAM;AACZ,IAAAN,EAAU,SAAS,QAAQ,EAAE,KAAK,CAACC,MAA2B;AAC1D,MAAIG,EAAU,WACVF,EAAUD,CAAM;AAAA,IACpB,CACH;AAAA,EAAA,GACF,CAACD,GAAWI,CAAS,CAAC,GAElBH;AACX,GCLMM,IAA2B,CAAC,EAAE,WAAAP,QAAgB;AAC1C,QAAAQ,IAAaC,EAAqBT,CAAS,GAC3CC,IAASF,EAAUC,CAAS,GAC5B,CAACU,GAAOC,CAAQ,IAAIR,EAAwB,IAAI;AAuBtD,SArBAG,EAAU,MAAM;AACZ,QAAIE;AACA,aAAAG,EAASH,EAAW,MAAM,KAAK,SAAS,QAAQ,GAAG,MAAM,IAAI,GACzCA,EAAW,OAAO;AAAA,QAClC;AAAA,QACA,CAACI,GAAO,EAAE,MAAAC,QAAW;AACjB,cAAIA,EAAK,UAAUA,EAAK,OAAO,SAAS,QAAQ;AAC5C,kBAAMH,IAAQG,EAAK,OAAO,SAAS,QAAQ,GAAG;AAC9C,YAAAF,EAASD,CAAK;AAAA,UAClB;AAAA,QACJ;AAAA,MAAA;AAAA,EAIR,GACD,CAACF,CAAU,CAAC,GAEX,CAACP,KAAU,CAACA,EAAO,WAAW,CAACO,KAI/B,CAACE,IACM,OAIN,gBAAAI,EAAA,cAAAC,GAAA;AAAA,IAAO,SAASd,EAAO;AAAA,EACpB,GAAA,gBAAAa,EAAA,cAACE,EAAiB,UAAjB;AAAA,IAA0B,OAAOhB;AAAA,EAC9B,GAAA,gBAAAc,EAAA,cAACG,EAAe,UAAf;AAAA,IAAwB,OAAOhB;AAAA,EAAA,GAC3B,gBAAAa,EAAA,cAAAI,GAAA;AAAA,IAAU,IAAIR;AAAA,IAAO,QAAO;AAAA,EAAA,CAAU,CAC3C,CACJ,CACJ;AAER,GAEAS,IAAeZ,GCjDfa,IAAe,CAACpB,GAAsBqB,MAAyB;AAE3D,EADa1B,EAAW0B,CAAO,EAC1B,OAAQ,gBAAAP,EAAA,cAAAP,GAAA;AAAA,IAAQ,WAAAP;AAAA,EAAsB,CAAA,CAAE;AACjD;"}
1
+ {"version":3,"file":"render.097b9f73.js","sources":["../../../node_modules/react-dom/client.js","../src/ui/use-router.ts","../src/ui/wrapper.tsx","../src/ui/render.tsx"],"sourcesContent":["'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","import { RoutingService } from '@telia-ace/widget-routing';\nimport { useIsMounted } from '@telia-ace/widget-ui';\nimport { Container } from '@webprovisions/platform';\nimport { useEffect, useState } from 'react';\n\nexport default (container: Container): RoutingService | null => {\n const [router, setRouter] = useState<RoutingService | null>(null);\n const isMounted = useIsMounted();\n\n useEffect(() => {\n container.getAsync('router').then((router: RoutingService) => {\n if (isMounted.current) {\n setRouter(router);\n }\n });\n }, [container, isMounted]);\n\n return router;\n};\n","import { ContainerContext, RoutingContext, useComponentPlatform } from '@telia-ace/widget-ui';\nimport { Container } from '@webprovisions/platform';\nimport React, { useEffect, useState } from 'react';\nimport { Router } from 'react-router-dom';\nimport Component from './component';\nimport useRouter from './use-router';\n\nconst keyNavigationKeys = ['Tab', 'ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'];\n\ntype Props = {\n container: Container;\n};\n\nconst Wrapper: React.FC<Props> = ({ container }) => {\n const components = useComponentPlatform(container);\n const router = useRouter(container);\n const [entry, setEntry] = useState<string | null>(null);\n\n useEffect(() => {\n if (components) {\n setEntry(components.nodes.root.children.default[0].id || null);\n const unsubscribe = components.events.subscribe(\n 'components:root-children-changed',\n (event, { node }) => {\n if (node.parent && node.parent.type === 'root') {\n const entry = node.parent.children.default[0].id;\n setEntry(entry);\n }\n }\n );\n\n return unsubscribe;\n }\n }, [components]);\n\n if (!router || !router.history || !components) {\n return null;\n }\n\n if (!entry) {\n return null;\n }\n\n return (\n <Router history={router.history}>\n <ContainerContext.Provider value={container}>\n <RoutingContext.Provider value={router}>\n <Component id={entry} branch=\"default\" />\n </RoutingContext.Provider>\n </ContainerContext.Provider>\n </Router>\n );\n};\n\nexport default Wrapper;\n","import { Container } from '@webprovisions/platform';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport Wrapper from './wrapper';\n\nexport default (container: Container, element: HTMLElement) => {\n const root = createRoot(element);\n root.render(<Wrapper container={container} />);\n};\n"],"names":["m","require$$0","createRoot","i","c","o","useRouter","container","router","setRouter","useState","isMounted","useIsMounted","useEffect","Wrapper","components","useComponentPlatform","entry","setEntry","event","node","React","Router","ContainerContext","RoutingContext","Component","Wrapper$1","render","element"],"mappings":";;;;;;;;;;;;;;;OAEIA,IAAIC;AACR,IAAI,QAAQ,IAAI,aAAa;AAC3B,EAAAC,IAAqBF,EAAE,YACDA,EAAE;AAAA,KACnB;AACL,MAAIG,IAAIH,EAAE;AACV,EAAAE,IAAqB,SAASE,GAAGC,GAAG;AAClC,IAAAF,EAAE,wBAAwB;AAC1B,QAAI;AACF,aAAOH,EAAE,WAAWI,GAAGC,CAAC;AAAA,IAC9B,UAAc;AACR,MAAAF,EAAE,wBAAwB;AAAA,IAC3B;AAAA,EACL;AASA;ACnBA,MAAeG,IAAA,CAACC,MAAgD;AAC5D,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAgC,IAAI,GAC1DC,IAAYC;AAElB,SAAAC,EAAU,MAAM;AACZ,IAAAN,EAAU,SAAS,QAAQ,EAAE,KAAK,CAACC,MAA2B;AAC1D,MAAIG,EAAU,WACVF,EAAUD,CAAM;AAAA,IACpB,CACH;AAAA,EAAA,GACF,CAACD,GAAWI,CAAS,CAAC,GAElBH;AACX,GCLMM,IAA2B,CAAC,EAAE,WAAAP,QAAgB;AAC1C,QAAAQ,IAAaC,EAAqBT,CAAS,GAC3CC,IAASF,EAAUC,CAAS,GAC5B,CAACU,GAAOC,CAAQ,IAAIR,EAAwB,IAAI;AAuBtD,SArBAG,EAAU,MAAM;AACZ,QAAIE;AACA,aAAAG,EAASH,EAAW,MAAM,KAAK,SAAS,QAAQ,GAAG,MAAM,IAAI,GACzCA,EAAW,OAAO;AAAA,QAClC;AAAA,QACA,CAACI,GAAO,EAAE,MAAAC,QAAW;AACjB,cAAIA,EAAK,UAAUA,EAAK,OAAO,SAAS,QAAQ;AAC5C,kBAAMH,IAAQG,EAAK,OAAO,SAAS,QAAQ,GAAG;AAC9C,YAAAF,EAASD,CAAK;AAAA,UAClB;AAAA,QACJ;AAAA,MAAA;AAAA,EAIR,GACD,CAACF,CAAU,CAAC,GAEX,CAACP,KAAU,CAACA,EAAO,WAAW,CAACO,KAI/B,CAACE,IACM,OAIN,gBAAAI,EAAA,cAAAC,GAAA;AAAA,IAAO,SAASd,EAAO;AAAA,EACpB,GAAA,gBAAAa,EAAA,cAACE,EAAiB,UAAjB;AAAA,IAA0B,OAAOhB;AAAA,EAC9B,GAAA,gBAAAc,EAAA,cAACG,EAAe,UAAf;AAAA,IAAwB,OAAOhB;AAAA,EAAA,GAC3B,gBAAAa,EAAA,cAAAI,GAAA;AAAA,IAAU,IAAIR;AAAA,IAAO,QAAO;AAAA,EAAA,CAAU,CAC3C,CACJ,CACJ;AAER,GAEAS,IAAeZ,GCjDfa,IAAe,CAACpB,GAAsBqB,MAAyB;AAE3D,EADa1B,EAAW0B,CAAO,EAC1B,OAAQ,gBAAAP,EAAA,cAAAP,GAAA;AAAA,IAAQ,WAAAP;AAAA,EAAsB,CAAA,CAAE;AACjD;"}
@@ -1,7 +1,6 @@
1
1
  import { Container } from '@webprovisions/platform';
2
2
  export declare const createRoutingService: (container: Container) => Promise<any>;
3
3
  export declare const createStorageService: (container: Container) => Promise<import("@telia-ace/widget-services").StorageProvider>;
4
- export declare const createServiceClient: (container: Container) => Promise<any>;
5
4
  export declare const createActionResolver: (container: Container) => Promise<import("@telia-ace/widget-core").ActionResolver>;
6
5
  export declare const createComponentResolver: (container: Container) => Promise<import("@telia-ace/widget-core").ComponentResolver>;
7
6
  export declare const createComponentPlatform: (container: Container) => Promise<import("@telia-ace/widget-core").ComponentPlatform>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telia-ace/widget-types-grid",
3
- "version": "1.0.25-next.13",
3
+ "version": "1.0.25-next.14",
4
4
  "description": "Type definition for Grid widget.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
@@ -26,13 +26,12 @@
26
26
  },
27
27
  "sideEffects": false,
28
28
  "dependencies": {
29
- "@telia-ace/knowledge-serviceclient": "next",
30
- "@telia-ace/widget-core": "^1.0.16-next.13",
31
- "@telia-ace/widget-forms": "^1.0.23-next.13",
32
- "@telia-ace/widget-routing": "^1.0.17-next.13",
33
- "@telia-ace/widget-services": "^1.0.16-next.13",
34
- "@telia-ace/widget-ui": "^1.0.23-next.13",
35
- "@telia-ace/widget-utilities": "next",
29
+ "@telia-ace/widget-core": "^1.0.16-next.14",
30
+ "@telia-ace/widget-forms": "^1.0.23-next.14",
31
+ "@telia-ace/widget-routing": "^1.0.17-next.14",
32
+ "@telia-ace/widget-services": "^1.0.16-next.14",
33
+ "@telia-ace/widget-ui": "^1.0.23-next.14",
34
+ "@telia-ace/widget-utilities": "^1.0.5-next.4",
36
35
  "@webprovisions/bootstrapping": "^1.0.12",
37
36
  "@webprovisions/platform": "^1.1.2"
38
37
  },
@@ -48,6 +47,7 @@
48
47
  "devDependencies": {
49
48
  "@emotion/react": "^11.10.4",
50
49
  "@emotion/styled": "^11.10.4",
50
+ "@telia-ace/widget-developer-tools": "^1.0.11-next.6",
51
51
  "@types/react-router-dom": "^5.1.0",
52
52
  "@types/react-transition-group": "^4.4.5",
53
53
  "react": "^18.2.0",
@@ -56,5 +56,5 @@
56
56
  "react-router-dom": "^5.3.4",
57
57
  "react-transition-group": "^4.4.5"
58
58
  },
59
- "gitHead": "0520380c1c93c641ebe858d35f089f8d9af1de35"
59
+ "gitHead": "e478c7449d48be14e8207ae43e4f6cfabf78c0bd"
60
60
  }
@@ -1,5 +0,0 @@
1
- export declare type SiteLocation = {
2
- host: string;
3
- pathname: string;
4
- };
5
- export declare const createSiteProvider: (site: 'current' | 'referrer', forceHttps: boolean) => (() => string);