@telia-ace/widget-types-grid 1.0.28 → 1.0.29-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -33,30 +33,21 @@ import { readStorage as $, StorageMedium as E, createStorageWriter as _, Storage
33
33
  import { supportBootstrapping as Ze } from "@webprovisions/bootstrapping";
34
34
  import { WidgetState as Je, WidgetType as Xe } from "@webprovisions/platform";
35
35
  var te = /* @__PURE__ */ ((t) => (t.back = "back", t.forth = "forth", t))(te || {});
36
- const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[t] > e[n] ? "back" : "forth", tt = ({ views: t, location: n, render: e }) => /* @__PURE__ */ d.createElement(Ye, {
37
- location: n && C(m({}, n), {
38
- pathname: n.pathname.split("?")[0]
36
+ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[t] > e[n] ? "back" : "forth", tt = ({ views: t, location: n, render: e }) => /* @__PURE__ */ d.createElement(
37
+ Ye,
38
+ {
39
+ location: n && C(m({}, n), {
40
+ pathname: n.pathname.split("?")[0]
41
+ })
42
+ },
43
+ [
44
+ ...Object.keys(t).filter((s) => !!t[s].path),
45
+ ...Object.keys(t).filter((s) => !t[s].path)
46
+ ].map((s) => {
47
+ const { path: i } = t[s];
48
+ return i ? Array.isArray(i) ? i.map((o) => /* @__PURE__ */ d.createElement(X, { key: s, exact: !0, path: o, render: () => e(s) })) : /* @__PURE__ */ d.createElement(X, { key: s, exact: !0, path: i, render: () => e(s) }) : /* @__PURE__ */ d.createElement(X, { key: s, render: () => e(s) });
39
49
  })
40
- }, [
41
- ...Object.keys(t).filter((s) => !!t[s].path),
42
- ...Object.keys(t).filter((s) => !t[s].path)
43
- ].map((s) => {
44
- const { path: i } = t[s];
45
- return i ? Array.isArray(i) ? i.map((o) => /* @__PURE__ */ d.createElement(X, {
46
- key: s,
47
- exact: !0,
48
- path: o,
49
- render: () => e(s)
50
- })) : /* @__PURE__ */ d.createElement(X, {
51
- key: s,
52
- exact: !0,
53
- path: i,
54
- render: () => e(s)
55
- }) : /* @__PURE__ */ d.createElement(X, {
56
- key: s,
57
- render: () => e(s)
58
- });
59
- })), ye = tt, nt = P.div`
50
+ ), ye = tt, nt = P.div`
60
51
  position: relative;
61
52
  width: 100%;
62
53
  flex: 1;
@@ -86,17 +77,18 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
86
77
  return null;
87
78
  const x = (v, M, V) => {
88
79
  const A = Q(M, V), z = f.getChildren(v)[0];
89
- return /* @__PURE__ */ d.createElement(st, C(m(C(m(m({}, n), S), {
90
- scrollableCss: G,
91
- ref: R,
92
- columns: y,
93
- gap: w
94
- }), A), {
95
- className: Y(t, "humany-view")
96
- }), /* @__PURE__ */ d.createElement(ie, {
97
- id: z.id,
98
- branch: "default"
99
- }));
80
+ return /* @__PURE__ */ d.createElement(
81
+ st,
82
+ C(m(C(m(m({}, n), S), {
83
+ scrollableCss: G,
84
+ ref: R,
85
+ columns: y,
86
+ gap: w
87
+ }), A), {
88
+ className: Y(t, "humany-view")
89
+ }),
90
+ /* @__PURE__ */ d.createElement(ie, { id: z.id, branch: "default" })
91
+ );
100
92
  }, Q = (v, M) => {
101
93
  if (g === "slide" || g === "fade")
102
94
  return {
@@ -108,44 +100,56 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
108
100
  ["data-state"]: v
109
101
  };
110
102
  };
111
- return /* @__PURE__ */ d.createElement(nt, {
112
- className: "humany-animated-view"
113
- }, /* @__PURE__ */ d.createElement(Ke, {
114
- component: null,
115
- childFactory: (v) => d.cloneElement(v, { direction: r })
116
- }, /* @__PURE__ */ d.createElement(Ue, {
117
- key: i,
118
- timeout: { enter: 500, exit: 500 },
119
- onEnter: (v) => v == null ? void 0 : v.clientHeight,
120
- unmountOnExit: !0,
121
- direction: te.forth
122
- }, (v, { direction: M }) => /* @__PURE__ */ d.createElement(ye, {
123
- views: D,
124
- location: W,
125
- render: (V) => x(V, v, M)
126
- }))));
103
+ return /* @__PURE__ */ d.createElement(nt, { className: "humany-animated-view" }, /* @__PURE__ */ d.createElement(
104
+ Ke,
105
+ {
106
+ component: null,
107
+ childFactory: (v) => d.cloneElement(v, { direction: r })
108
+ },
109
+ /* @__PURE__ */ d.createElement(
110
+ Ue,
111
+ {
112
+ key: i,
113
+ timeout: { enter: 500, exit: 500 },
114
+ onEnter: (v) => v == null ? void 0 : v.clientHeight,
115
+ unmountOnExit: !0,
116
+ direction: te.forth
117
+ },
118
+ (v, { direction: M }) => /* @__PURE__ */ d.createElement(
119
+ ye,
120
+ {
121
+ views: D,
122
+ location: W,
123
+ render: (V) => x(V, v, M)
124
+ }
125
+ )
126
+ )
127
+ ));
127
128
  }, rt = ot, at = P(he)`
128
129
  ${(t) => !!t.scrollableCss && t.scrollableCss}
129
130
  `, ct = (e) => {
130
131
  var s = e, { className: t = "" } = s, n = N(s, ["className"]);
131
132
  const i = pe(), o = ne(), r = j(), a = se(), { views: c } = r.get("$settings"), { gap: h = "0" } = o, g = i, { columns: u = 1, animation: l = "none", scrollable: p = !1 } = g, f = N(g, ["columns", "animation", "scrollable"]), [w, y] = me(p);
132
- return a ? /* @__PURE__ */ d.createElement(at, C(m(m({}, n), f), {
133
- scrollableCss: w,
134
- ref: y,
135
- columns: u,
136
- gap: h,
137
- className: Y(t, "humany-view")
138
- }), /* @__PURE__ */ d.createElement(ye, {
139
- views: c,
140
- render: (b) => {
141
- const S = a.getChildren(b)[0];
142
- return /* @__PURE__ */ d.createElement(ie, {
143
- id: S.id,
144
- node: S,
145
- branch: "default"
146
- });
147
- }
148
- })) : null;
133
+ return a ? /* @__PURE__ */ d.createElement(
134
+ at,
135
+ C(m(m({}, n), f), {
136
+ scrollableCss: w,
137
+ ref: y,
138
+ columns: u,
139
+ gap: h,
140
+ className: Y(t, "humany-view")
141
+ }),
142
+ /* @__PURE__ */ d.createElement(
143
+ ye,
144
+ {
145
+ views: c,
146
+ render: (b) => {
147
+ const S = a.getChildren(b)[0];
148
+ return /* @__PURE__ */ d.createElement(ie, { id: S.id, node: S, branch: "default" });
149
+ }
150
+ }
151
+ )
152
+ ) : null;
149
153
  }, lt = ct, q = (t) => {
150
154
  var n, e;
151
155
  return de`
@@ -196,22 +200,26 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
196
200
  ${q}
197
201
  ${Re}
198
202
  ` : null, [r]);
199
- return typeof r == "undefined" ? null : r === null || u === null ? process.env.NODE_ENV !== "production" ? /* @__PURE__ */ d.createElement(ht, C(m({}, e), {
200
- title: `type: ${c}, definition-id: ${a}, instance-id: ${h}`,
201
- className: Y(t, "humany-non-resolved-component")
202
- }), /* @__PURE__ */ d.createElement(Ve, {
203
- variant: "h5"
204
- }, "Non Resolved Component Type")) : null : /* @__PURE__ */ d.createElement(We, {
205
- fallback: null
206
- }, /* @__PURE__ */ d.createElement(u, C(m({
207
- ref: s
208
- }, e), {
209
- className: Y(
210
- t,
211
- "humany-component",
212
- `humany-component-${a}`
213
- )
214
- }), n));
203
+ return typeof r == "undefined" ? null : r === null || u === null ? process.env.NODE_ENV !== "production" ? /* @__PURE__ */ d.createElement(
204
+ ht,
205
+ C(m({}, e), {
206
+ title: `type: ${c}, definition-id: ${a}, instance-id: ${h}`,
207
+ className: Y(t, "humany-non-resolved-component")
208
+ }),
209
+ /* @__PURE__ */ d.createElement(Ve, { variant: "h5" }, "Non Resolved Component Type")
210
+ ) : null : /* @__PURE__ */ d.createElement(We, { fallback: null }, /* @__PURE__ */ d.createElement(
211
+ u,
212
+ C(m({
213
+ ref: s
214
+ }, e), {
215
+ className: Y(
216
+ t,
217
+ "humany-component",
218
+ `humany-component-${a}`
219
+ )
220
+ }),
221
+ n
222
+ ));
215
223
  }
216
224
  ), mt = pt, ft = (t) => {
217
225
  const n = se(t), e = fe(), [s, i] = B({}), o = _e();
@@ -280,13 +288,7 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
280
288
  normal: `${D * 3}px`,
281
289
  medium: `${D * 5}px`,
282
290
  large: `${D * 8}px`
283
- }), /* @__PURE__ */ d.createElement(Oe, {
284
- theme: M
285
- }, /* @__PURE__ */ d.createElement(Be.Provider, {
286
- value: f
287
- }, /* @__PURE__ */ d.createElement(Te.Provider, {
288
- value: b
289
- }, (() => {
291
+ }), /* @__PURE__ */ d.createElement(Oe, { theme: M }, /* @__PURE__ */ d.createElement(Be.Provider, { value: f }, /* @__PURE__ */ d.createElement(Te.Provider, { value: b }, (() => {
290
292
  const A = m({
291
293
  "data-width": S === "full" ? y : Math.min(S, y),
292
294
  "data-indent": G,
@@ -300,18 +302,17 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
300
302
  }, a);
301
303
  switch (f.type) {
302
304
  case "view":
303
- return typeof b.animation == "string" && b.animation !== "none" ? /* @__PURE__ */ d.createElement(dt, C(m({}, A), {
304
- className: t
305
- })) : /* @__PURE__ */ d.createElement(ut, C(m({}, A), {
306
- className: t
307
- }));
305
+ return typeof b.animation == "string" && b.animation !== "none" ? /* @__PURE__ */ d.createElement(dt, C(m({}, A), { className: t })) : /* @__PURE__ */ d.createElement(ut, C(m({}, A), { className: t }));
308
306
  default: {
309
307
  const z = je(b);
310
- return /* @__PURE__ */ d.createElement(mt, C(m(m({
311
- ref: c
312
- }, A), z), {
313
- className: t
314
- }));
308
+ return /* @__PURE__ */ d.createElement(
309
+ mt,
310
+ C(m(m({
311
+ ref: c
312
+ }, A), z), {
313
+ className: t
314
+ })
315
+ );
315
316
  }
316
317
  }
317
318
  })())));
@@ -328,42 +329,39 @@ const et = (t, n, e) => typeof e[t] == "number" && typeof e[n] == "number" && e[
328
329
  (o) => o.id !== e.id
329
330
  );
330
331
  });
331
- }, [e]), e ? /* @__PURE__ */ d.createElement(ie, {
332
- id: e.id,
333
- node: e,
334
- branch: "default"
335
- }) : null;
332
+ }, [e]), e ? /* @__PURE__ */ d.createElement(ie, { id: e.id, node: e, branch: "default" }) : null;
336
333
  }, wt = bt, vt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
337
334
  __proto__: null,
338
335
  default: wt
339
336
  }, Symbol.toStringTag, { value: "Module" })), Et = d.lazy(() => Promise.resolve().then(() => vt)), Ct = ({ showSearch: t = !1 }) => {
340
337
  const n = Se(), e = j();
341
- return /* @__PURE__ */ d.createElement(d.Suspense, {
342
- fallback: null
343
- }, /* @__PURE__ */ d.createElement(Et, {
344
- builder: (s) => e.get("settings").then((i) => {
345
- var h;
346
- const { properties: o, context: r } = Object.keys(i.components).reduce(
347
- (u, l) => (i.components[l].type === "not-found" && (u.properties = i.components[l].properties, u.context = i.components[l].context), u),
348
- { properties: {}, context: {} }
349
- );
350
- o.showSearch = t;
351
- const a = s.createNode("area", { detached: !0 });
352
- if (a.name = "not-found-area", a.writeLayout({
353
- size: "full"
354
- }), t) {
355
- const u = Object.keys(i.components).reduce(
356
- (p, f) => i.components[f].type === "search" ? i.components[f].properties : p,
357
- {}
358
- ), l = s.createNode("search", { detached: !0 });
359
- l.writeLayout({ size: "full" }), l.writeProperties(m({
360
- "css-margin-bottom": ((h = n == null ? void 0 : n.sizes) == null ? void 0 : h.normal) || "15px"
361
- }, u)), a.appendChild(l);
362
- }
363
- const c = s.createNode("not-found", { detached: !0 });
364
- return c.writeLayout({ size: "full" }), c.writeProperties(o), c.writeContext(r), a.appendChild(c), a;
365
- })
366
- }));
338
+ return /* @__PURE__ */ d.createElement(d.Suspense, { fallback: null }, /* @__PURE__ */ d.createElement(
339
+ Et,
340
+ {
341
+ builder: (s) => e.get("settings").then((i) => {
342
+ var h;
343
+ const { properties: o, context: r } = Object.keys(i.components).reduce(
344
+ (u, l) => (i.components[l].type === "not-found" && (u.properties = i.components[l].properties, u.context = i.components[l].context), u),
345
+ { properties: {}, context: {} }
346
+ );
347
+ o.showSearch = t;
348
+ const a = s.createNode("area", { detached: !0 });
349
+ if (a.name = "not-found-area", a.writeLayout({
350
+ size: "full"
351
+ }), t) {
352
+ const u = Object.keys(i.components).reduce(
353
+ (p, f) => i.components[f].type === "search" ? i.components[f].properties : p,
354
+ {}
355
+ ), l = s.createNode("search", { detached: !0 });
356
+ l.writeLayout({ size: "full" }), l.writeProperties(m({
357
+ "css-margin-bottom": ((h = n == null ? void 0 : n.sizes) == null ? void 0 : h.normal) || "15px"
358
+ }, u)), a.appendChild(l);
359
+ }
360
+ const c = s.createNode("not-found", { detached: !0 });
361
+ return c.writeLayout({ size: "full" }), c.writeProperties(o), c.writeContext(r), a.appendChild(c), a;
362
+ })
363
+ }
364
+ ));
367
365
  }, Jt = Ct, Ot = (t) => {
368
366
  if (t) {
369
367
  const { type: n, content: e } = t;
@@ -493,7 +491,7 @@ class Lt {
493
491
  }
494
492
  render() {
495
493
  const { widgetDOMElement: n, triggerDOMElement: e } = this.options, s = this.container.get("$widget");
496
- return n.getAttribute("data-rendered") === "true" ? Promise.resolve() : (e && this.options.triggerType === k.Badge && xt(e), import("./render.e827eb22.js").then((i) => i.default(this.container, n)).then(() => {
494
+ return n.getAttribute("data-rendered") === "true" ? Promise.resolve() : (e && this.options.triggerType === k.Badge && xt(e), import("./render.0b9431cd.js").then((i) => i.default(this.container, n)).then(() => {
497
495
  if (n.setAttribute("data-rendered", "true"), e && this.options.triggerType === k.Badge) {
498
496
  const o = this.options.triggerOptions.openTooltip;
499
497
  be(e, o);
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/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","Switch$1","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","AnimatedView$1","View","View$1","styling","css","paddedBorderTabStyle","StyledAnimatedView","NonResolvedComponentWrapper","_c","ResolvableComponent","forwardRef","ref","children","ResolvedComponent","useComponent","type","id","useComponentDescriptor","StyledResolvableComponent","useMemo","filterCssPropsStyle","Typography","Suspense","ResolvableComponent$1","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","Component$1","DetachedComponent","builder","setNode","createdNode","n","DetachedComponent$2","detachedComponent","NotFound","showSearch","themeContext","useTheme","settings","acc","searchComponentProps","searchNode","notFoundNode","NotFound$1","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","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,GAIRG,KAAeZ,IClBTa,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,EAAShC,GAAe,KAAK,GAC7EmC,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,UAAA9B,EAAa,IAAA8B;AAErB,EAAIF,EAAU,SAASL,KAAaK,EAAU,SAAS,MAAMc,MACzDf,EAAuBjC,GAAwB6B,GAAWK,EAAU,MAAMZ,EAAc,CAAC,GACzFQ,EAAaI,EAAU,IAAI;AAG/B,QAAM,EAAE,OAAA7B,EAA0B,IAAAqC,EAAU,IAAI,WAAW;AAE3D,MAAI,CAAC,OAAO,KAAKrC,CAAK,EAAE;AACb,WAAA;AAGX,QAAMiD,IAAa,CAACzC,GAAc0C,GAAuBC,MAA+B;AAC9E,UAAAC,IAAkBC,EAAaH,GAAiBC,CAAS,GACzDG,IAAYf,EAAK,YAAY/B,CAAI,EAAE;AAEzC,WACK,gBAAAL,EAAA,cAAAW,IAAAT,EAAAC,EAAAD,EAAAC,IAAA,IACOgB,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,gBAAAlB,EAAA,cAAAqD,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,gBAAA/C,EAAA,cAAAS,IAAA;AAAA,IAAoB,WAAU;AAAA,EAAA,GAC1B,gBAAAT,EAAA,cAAAuD,IAAA;AAAA,IACG,WAAW;AAAA,IACX,cAAc,CAACC,MACXxD,EAAM,aAAawD,GAAO,EAAE,WAAWhC,GAAqB;AAAA,EAAA,GAG/D,gBAAAxB,EAAA,cAAAyD,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,WAAW7C,GAAe;AAAA,EAAA,GAGzB,CAACmE,GAAyB,EAAE,WAAAV,QACxB,gBAAAhD,EAAA,cAAAJ,IAAA;AAAA,IACG,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAQ,CAACO,MAASyC,EAAWzC,GAAMqD,GAAOV,CAAS;AAAA,EAAA,CACvD,CAER,CACJ,CACJ;AAER,GAEAW,KAAe5C,IC9HTJ,KAAaD,EAAOE,EAAI;AAAA,MACxB,CAACC,MAAM,CAAC,CAACA,EAAE,iBAAiBA,EAAE;AAAA,GAG9B+C,KAAwB,CAAC5C,MAAiC;AAAjC,MAAAC,IAAAD,GAAE,aAAAE,IAAY,OAAdD,GAAqBE,IAAAC,EAArBH,GAAqB,CAAnB;AAC7B,QAAMa,IAAaC,MACbC,IAAUC,MACVC,IAAYC,KACZC,IAAOC,MAEP,EAAE,OAAAxC,EAA0B,IAAAqC,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,gBAAApC,EAAA,cAAAW,IAAAT,EAAAC,IAAA,IACOgB,IACAuB,IAFP;AAAA,IAGG,eAAAC;AAAA,IACA,KAAKC;AAAA,IACL,SAAAL;AAAA,IACA,KAAAD;AAAA,IACA,WAAWc,EAAiBlC,GAAW,aAAa;AAAA,EAAA,IAEnD,gBAAAlB,EAAA,cAAAJ,IAAA;AAAA,IACG,OAAAC;AAAA,IACA,QAAQ,CAACQ,MAAS;AACd,YAAM8C,IAAYf,EAAK,YAAY/B,CAAI,EAAE;AACzC,aAAQ,gBAAAL,EAAA,cAAAqD,IAAA;AAAA,QAAU,IAAIF,EAAU;AAAA,QAAI,MAAMA;AAAA,QAAW,QAAO;AAAA,MAAA,CAAU;AAAA,IAC1E;AAAA,EACJ,CAAA,CACJ,IApBO;AAsBf,GAEAU,KAAeD,ICvDFE,IAAU,CAACjD,MAAuE;;AAAA,SAAAkD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAQ5ElD,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,UAIrBmD,GAAqBnD,CAAC;AAAA;AAAA;AAAA,GAInBF,KAAaD,EAAOkD,EAAI;AAAA,MAC/B,CAAC/C,MAAMiD,EAAQjD,CAAC;AAAA,GAGToD,KAAqBvD,EAAOK,EAAY;AAAA,MAC/C,CAACF,MAAMiD,EAAQjD,CAAC;AAAA,GCtBhBqD,KAA8BxD,EAAO;AAAA;AAAA,MAErC,CAACG,MACC;;AAAA,kBAAOG,IAAAH,EAAE,MAAM,WAAR,gBAAAG,EAAgB,YAAY,eACnC+C;AAAA,sBACa9C,IAAAJ,EAAE,MAAM,WAAR,gBAAAI,EAAgB;AAAA,kCACJkD,IAAAtD,EAAE,MAAM,WAAR,gBAAAsD,EAAgB;AAAA;AAAA;AAAA,MAE3C,CAACtD,MACC,OAAOA,EAAE,MAAM,gBAAiB,eAAe,kBAAkBA,EAAE,MAAM;AAAA,IAC7E,CAACA,MAAMiD,EAAQjD,CAAC;AAAA,GAGduD,KAAsBC;AAAA,EACxB,CAACrD,GAAwCsD,MAAQ;AAAhD,QAAArD,IAAAD,GAAE,aAAAE,IAAY,IAAI,UAAAqD,MAAlBtD,GAA+BE,IAAAC,EAA/BH,GAA+B,CAA7B,aAAgB;AACf,UAAMuD,IAAoBC,MACpB,EAAE,MAAApE,GAAM,MAAAqE,GAAM,IAAAC,MAAOC,GAAuB,GAE5CC,IAA4BC,GAAQ,MAClCN,IACO9D,EAAO8D,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,gBAAA7E,EAAA,cAAAkE,IAAAhE,EAAAC,EAAA,IACOgB,IADP;AAAA,MAEG,OAAO,SAASuD,qBAAwBrE,mBAAsBsE;AAAA,MAC9D,WAAWvB,EAAiBlC,GAAW,+BAA+B;AAAA,IAAA,IAErE,gBAAAlB,EAAA,cAAAgF,IAAA;AAAA,MAAW,SAAQ;AAAA,IAAA,GAAK,6BAA2B,CACxD,IAGD,OAIN,gBAAAhF,EAAA,cAAAiF,IAAA;AAAA,MAAS,UAAU;AAAA,IAAA,GACf,gBAAAjF,EAAA,cAAA6E,GAAA3E,EAAAC,EAAA;AAAA,MACG,KAAAmE;AAAA,OACInD,IAFP;AAAA,MAGG,WAAWiC;AAAA,QACPlC;AAAA,QACA;AAAA,QACA,oBAAoBb;AAAA,MACxB;AAAA,IAAA,IAECkE,CACL,CACJ;AAAA,EAER;AACJ,GAEAW,KAAed,ICjFAe,KAAA,CAACR,MAAe;AACrB,QAAAvC,IAAOC,GAAiBsC,CAAE,GAC1BS,IAAaC,MACb,CAACvD,GAAYwD,CAAa,IAAI/D,EAAkC,CAAE,CAAA,GAClEgE,IAAYC;AAElB,SAAAC,EAAU,MAAM;AACR,IAAArD,KAAQmD,EAAU,WACJD,EAAAlD,EAAK,WAAW,UAAU;AAAA,EAE7C,GAAA,CAACA,GAAMuC,GAAIY,CAAS,CAAC,GAExBE,EAAU,MAAM;AACZ,QAAIL,GAAY;AACN,YAAAM,IAAcN,EAAW,OAAO;AAAA,QAClC;AAAA,QACA,CAACO,GAAOC,MAAS;AACb,UAAIxD,MAASwD,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,GAAWZ,GAAIvC,CAAI,CAAC,GAE7BN;AACX,GCPM+D,KAAY,CAACC,GAAY1D,MACvBA,IACO,KAEP,OAAO0D,KAAS,WACTA,MAAS,SAEbA,IAAO,GAGZzC,KAAYgB;AAAA,EACd,CACIrD,GACAsD,MACC;AAFD,QAAArD,IAAAD,GAAE,aAAAE,IAAY,IAAI,IAAAyD,GAAI,QAAAoB,GAAQ,MAAA3D,GAAM,WAAA4D,GAAW,UAAAC,GAAU,SAASC,MAAlEjF,GAAmFE,IAAAC,EAAnFH,GAAmF,CAAjF,aAAgB,MAAI,UAAQ,QAAM,aAAW,YAAU;AAGzD,UAAMmE,IAAaC,MACbnD,IAAYC,KACZ,CAACgE,GAAYC,CAAa,IAAI7E,EAA8B,GAE5DgB,IAAU8D,MACVrE,IAAUC,GAAW0C,CAAE,GACvB7C,IAAaqD,GAA2BR,CAAE,GAC1C,EAAE,MAAAmB,IAAO,QAAQ,QAAAQ,IAAS,MAAMC,GAAU5B,CAAE,GAC5C6B,IAAUX,GAAUC,GAAM1D,CAAI;AA0BhC,QAxBJqD,EAAU,MAAM;AACZ,UAAIL;AACI,YAAAT,KAAM,CAACvC,GAAM;AACb,gBAAMqE,IAAgBrB,EAAW,MAAM,IAAIT,CAAE;AAC7C,cAAI8B,MACcL,EAAAM,GAAaD,GAAeV,CAAM,CAAC,GAE7CS,IAAS;AACH,kBAAAG,IAAUF,EAAc,MAAMvE,CAAS;AAC7C,mBAAO,MAAM;AACD,cAAAyE;YAAA;AAAA,UAEhB;AAAA,mBAEGvE,GAAM;AACC,UAAAgE,EAAAM,GAAatE,GAAM2D,CAAM,CAAC;AAClC,gBAAAY,IAAUvE,EAAK,MAAMF,CAAS;AACpC,iBAAO,MAAM;AACD,YAAAyE;UAAA;AAAA,QAEhB;AAAA;AAAA,OAEL,CAACvB,GAAYT,GAAIvC,GAAMoE,CAAO,CAAC,GAE9B,CAACL,KAAc,CAACK;AACT,aAAA;AAIL,UAKFxF,IANmBb,IAAA,IAAK6B,IAAakE,KAAgB,CAAI,IAEzD;AAAA,gBAAAU;AAAA,MACA,OAAOC,IAAe,CAAC;AAAA,MACvB,eAAAC,IAAgB,CAAC;AAAA,QAEjB9F,GADG+F,IAAA3F,EACHJ,GADG;AAAA,MAHH;AAAA,MACA;AAAA,MACA;AAAA,QAIEgG,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,IAAe/G,EAAAC,EAAA,IACd4G,IADc;AAAA,MAEjB,OAAAC;AAAA,MACA,eAAe7G,EAAA,IACR2G;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,gBAAA5G,EAAA,cAAAkH,IAAA;AAAA,MAAc,OAAAD;AAAA,IACX,GAAA,gBAAAjH,EAAA,cAACmH,GAAqB,UAArB;AAAA,MAA8B,OAAOhB;AAAA,IAClC,GAAA,gBAAAnG,EAAA,cAACoH,GAAyB,UAAzB;AAAA,MAAkC,OAAOtF;AAAA,IAAA,IACpC,MAAM;AACJ,YAAMuF,IAAQlH,EAAA;AAAA,QACV,cACI2F,MAAS,SAASvD,IAAU,KAAK,IAAIuD,GAAgBvD,CAAO;AAAA,QAChE,eAAe+D;AAAA,QACf,aAAaH,EAAW;AAAA,QACxB,gBAAgBA,EAAW;AAAA,QAC3B,uBAAuBA,EAAW;AAAA,QAClC,cAAcH;AAAA,QACd,UAAAC;AAAA,QACA,IAAIE,EAAW;AAAA,QACf,MAAMrE,KAAcA,EAAW;AAAA,SAC5BX;AAEP,cAAQgF,EAAW,MAAM;AAAA,QACrB,KAAK;AACD,iBAAO,OAAOrE,EAAW,aAAc,YACnCA,EAAW,cAAc,SACxB,gBAAA9B,EAAA,cAAAiE,IAAA/D,EAAAC,EAAA,IAAuBkH,IAAvB;AAAA,YAA8B,WAAAnG;AAAA,UAAA,EAAsB,IAEpD,gBAAAlB,EAAA,cAAAW,IAAAT,EAAAC,EAAA,IAAekH,IAAf;AAAA,YAAsB,WAAAnG;AAAA,UAAA,EAAsB;AAAA,QAGrD,SAAS;AACC,gBAAAoG,IAAWC,GAAezF,CAAU;AAE1C,iBACK,gBAAA9B,EAAA,cAAAoE,IAAAlE,EAAAC,IAAA;AAAA,YACG,KAAAmE;AAAA,aACI+C,IACAC,IAHP;AAAA,YAIG,WAAApG;AAAA,UAAA,EACJ;AAAA,QAER;AAAA,MACJ;AAAA,IAAA,GAER,CAAA,CACJ,CACJ;AAAA,EAER;AACJ,GAEAsG,KAAenE,IC5JToE,KAAqC,CAAC,EAAE,SAAAC,QAAc;AACxD,QAAMxF,IAAYC,KACZ,CAACC,GAAMuF,CAAO,IAAIpG,EAA+B,IAAI;AAsB3D,SApBAkE,EAAU,MAAM;AACZ,IAAAvD,EAAU,SAAS,YAAY,EAAE,KAAK,CAACkD,MAC5BsC,EAAQtC,CAAU,EAAE,KAAK,CAACwC,MAAgB;AAC7C,MAAAD,EAAQC,CAAW;AAAA,IAAA,CACtB,CACJ;AAAA,EACL,GAAG,CAAE,CAAA,GAELnC,EAAU,MACC,MAAM;AACT,IAAIrD,KACAF,EAAU,SAAS,YAAY,EAAE,KAAK,CAACkD,MAAkC;AACrE,MAAAA,EAAW,MAAM,WAAWA,EAAW,MAAM,SAAS;AAAA,QAClD,CAACyC,MAAMA,EAAE,OAAOzF,EAAK;AAAA,MAAA;AAAA,IACzB,CACH;AAAA,EACL,GAEL,CAACA,CAAI,CAAC,GAEJA,IAIG,gBAAApC,EAAA,cAAAqD,IAAA;AAAA,IAAU,IAAIjB,EAAK;AAAA,IAAI,MAAAA;AAAA,IAAY,QAAO;AAAA,EAAA,CAAU,IAHjD;AAIf,GAEA0F,KAAeL;;;8CClCTA,KAAoBzH,EAAM,KAAK,MAAM,QAA8B,QAAA,EAAA,KAAA,MAAA+H,EAAA,CAAA,GAKnEC,KAA4B,CAAC,EAAE,YAAAC,IAAa,SAAY;AAC1D,QAAMC,IAAeC,MACfjG,IAAYC;AAGd,SAAA,gBAAAnC,EAAA,cAACA,EAAM,UAAN;AAAA,IAAe,UAAU;AAAA,EAAA,GACrB,gBAAAA,EAAA,cAAAyH,IAAA;AAAA,IACG,SAAS,CAACrC,MACClD,EAAU,IAAI,UAAU,EAAE,KAAK,CAACkG,MAAkB;;AAC/C,YAAA,EAAE,YAAAtG,GAAY,SAAAE,MAAY,OAAO,KAAKoG,EAAS,UAAU,EAAE;AAAA,QAI7D,CAACC,GAAKjI,OACEgI,EAAS,WAAWhI,GAAK,SAAS,gBAC9BiI,EAAA,aAAaD,EAAS,WAAWhI,GAAK,YACtCiI,EAAA,UAAUD,EAAS,WAAWhI,GAAK,UAGpCiI;AAAA,QAEX,EAAE,YAAY,CAAA,GAAI,SAAS,GAAG;AAAA,MAAA;AAGlC,MAAAvG,EAAW,aAAamG;AACxB,YAAM7F,IAAOgD,EAAW,WAAW,QAAQ,EAAE,UAAU,IAAM;AAM7D,UALAhD,EAAK,OAAO,kBACZA,EAAK,YAAY;AAAA,QACb,MAAM;AAAA,MAAA,CACT,GAEG6F,GAAY;AACZ,cAAMK,IAAuB,OAAO,KAAKF,EAAS,UAAU,EAAE;AAAA,UAC1D,CAACC,GAAKjI,MACEgI,EAAS,WAAWhI,GAAK,SAAS,WAC3BgI,EAAS,WAAWhI,GAAK,aAG7BiI;AAAA,UAEX,CAAC;AAAA,QAAA,GAECE,IAAanD,EAAW,WAAW,UAAU,EAAE,UAAU,IAAM;AACrE,QAAAmD,EAAW,YAAY,EAAE,MAAM,OAAQ,CAAA,GACvCA,EAAW,gBAAgBpI,EAAA;AAAA,UACvB,uBAAqBa,IAAAkH,KAAA,gBAAAA,EAAc,UAAd,gBAAAlH,EAAqB,WAAU;AAAA,WACjDsH,EACN,GACDlG,EAAK,YAAYmG,CAAU;AAAA,MAC/B;AAEA,YAAMC,IAAepD,EAAW,WAAW,aAAa,EAAE,UAAU,IAAM;AAC1E,aAAAoD,EAAa,YAAY,EAAE,MAAM,OAAQ,CAAA,GACzCA,EAAa,gBAAgB1G,CAAU,GACvC0G,EAAa,aAAaxG,CAAO,GACjCI,EAAK,YAAYoG,CAAY,GAEtBpG;AAAA,IAAA,CACV;AAAA,EAET,CAAA,CACJ;AAER,GAEAqG,KAAeT,IC1EFU,KAAe,CAACC,MAA+C;AACxE,MAAIA,GAAQ;AACF,UAAA,EAAE,MAAAjE,GAAM,SAAAkE,EAAY,IAAAD;AAC1B,YAAQjE,GAAM;AAAA,MACV,KAAK;AACD,eAAO,+BAA+BkE;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,WAAAxD,IAAY,IAAI,SAAAyD,IAAU,GAAO,IAAAH;AAEjE,EAAAN,EAAA,UAAU,IAAI,gBAAgB,GAC9BA,EAAA,UAAU,IAAI,UAAUO,GAAY,GAExCC,EAAM,UACER,EAAA,UAAU,IAAI,iBAAiB,GAGvChD,EAAU,UAAU,CAACgD,EAAQ,aAAa,YAAY,KAC9CA,EAAA,aAAa,cAAchD,CAAS,GAG5CA,EAAU,UAAU,CAACgD,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,CAC9BhK,GACAiK,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,YAAYxK,IAE/BuK,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,SACN9J,IAAAuJ,KAAA,gBAAAA,EAAA,eAAA,QAAAvJ,EAAY,YAAY8J,IAEhDF,EAAO,WAAW,MAAM;;AACpB,SAAA5J,IAAAuJ,KAAA,gBAAAA,EAAwB,eAAxB,QAAAvJ,EAAoC;AAAA,UAChC8J;AAAA,UACAP;AAAA,WAEJO,EAAc,MAAM,WAChBP,KAAA,gBAAAA,EAAwB,MAAM,YAAW;AAAA,MAAA,MAGjDtJ,IAAAsJ,KAAA,gBAAAA,EAAwB,eAAxB,QAAAtJ,EAAoC;AAAA,QAChC6J;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,YAAYxK,IAE/BuK,EAAO,oBAAoBC;AAAA,MAC/B;AACA;AAAA,IACJ;AAAA,EACJ;AAEO,SAAAD;AACX,GCtIMG,KAAqB;AA2BpB,MAAMC,GAAW;AAAA,EAIpB,YAAY9I,GAA6BoH,GAA4B;AAHrE,IAAA2B,EAAA;AACQ,IAAAA,EAAA,qBAA8B,CAAA;AAEG,SAAA,UAAA3B,GAChC,KAAA,YAAYpH,EAAU,YAAY,IAAI,GAC3C,KAAK,UAAU,SAAS,oBAAoB,KAAK,QAAQ,gBAAgB,GACzE,KAAK,UAAU,SAAS,qBAAqB,KAAK,QAAQ,iBAAiB;AAE3E,UAAMgJ,IAAiB,KAAK,UAAU,IAAI,SAAS;AACnD,SAAK,QAAQ,iBAAiB,UAAU,IAAI,eAAe,GAC3D,KAAK,QAAQ,iBAAiB,UAAU,IAAI,UAAUA,EAAO,MAAM;AAEnE,UAAMC,IAAoBjJ,EAAU,IAAI,mBAAmB,KAAK,CAAA;AAChE,IAAAA,EAAU,SAAS,qBAAqB;AAAA,MACpC,GAAGiJ;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,MAAAzI,EAAK,IAAY,KAAK,UAAU,IAAI,SAAS,GAE/C,EAAE,OAAAmJ,GAAO,QAAAb,GAAQ,WAAA3C,GAAW,eAAA4F,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,WAAA3C;AAAA,MACA,YAAY3F;AAAA,MACZ,SAASuL;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,OACAlJ,IAAAkJ,EAAiB,eAAjB,QAAAlJ,EAA6B;AAAA,QACzB,KAAK,QAAQ,gBAAgB;AAAA,QAC7BkJ;AAAA,UAIR,KAAK,QAAQ,gBAAgB,qBACzBpB,OACA7H,IAAA6H,EAAkB,eAAlB,QAAA7H,EAA8B;AAAA,QAC1B,KAAK,QAAQ,gBAAgB;AAAA,QAC7B6H;AAAA,UAKP,KAAA,YAAY,QAAQ,CAACpD,MAAgB;AAC1B,QAAAA;MAAA,CACf,IAEgBvB,IAAA+F,EAAA,eAAA,QAAA/F,EAAY,YAAY+F,KACtB8B,IAAAlD,KAAA,gBAAAA,EAAA,eAAA,QAAAkD,EAAY,YAAYlD;AAAA,IAAiB,CAC/D;AAAA,EACL;AACJ;AC5IA,MAAMmD,IAAc,cAadC,KAA8B,CAChC9D,MACmC;AACnC,QAAM+D,IAA+C,EAAE,MAAM/D,EAAS,KAAK;AAC3E,SAAIA,EAAS,WAAW,OAAOA,EAAS,WAAY,eAChD+D,EAAW,UAAU/D,EAAS,UAE9BA,EAAS,cAAc,OAAOA,EAAS,cAAe,eACtD+D,EAAW,aAAa/D,EAAS,aAEjCA,EAAS,UAAU,OAAOA,EAAS,UAAW,eAC9C+D,EAAW,SAAS/D,EAAS,SAG1B+D;AACX;AAEO,MAAMC,GAA2D;AAAA,EACpE,YAAoBlK,GAA8BmK,GAA8B;AAA5D,SAAA,YAAAnK,GAA8B,KAAA,gBAAAmK;AAAA,EAA+B;AAAA,EAEjF,OAAO,OAAOnK,GAA8D;AACxE,WAAOoK,EAAoBpK,GAAW+J,GAAaM,EAAgB,WAAW;AAAA,MAC1E,QAAQf,EAAc;AAAA,IAAA,CACzB,EAAE,KAAK,CAACa,MAAkB,IAAID,GAA8BlK,GAAWmK,CAAa,CAAC;AAAA,EAC1F;AAAA,EAEA,MACIjM,GACAoM,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,QAAQvM,CAAG;AACtC,aAAIyM,IAAgB,MACXF,EAAA,OAAOE,GAAe,CAAC,GAEhCF,EAAK,KAAKvM,CAAG,GACbwM,EAAMxM,KAAO;AAAA,QACT,SAAAkJ;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,OAAOxM,GAA2B;AACvB,WAAAqM,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,QAAQvM,CAAG;AACtC,UAAI0M,IAAgB;AACX,eAAAH,EAAA,OAAOG,GAAe,CAAC,GAC5B,OAAOF,EAAMxM,IACN,KAAK,cAAcsM,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,CAACvM,MAAQ;AAClB,cAAM4M,IAAOJ,EAAMxM;AACnB,YAAI4M,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,WAAAhJ,EAAc,IAAAgJ;AACtB,SAAOkB,GAA8B,OAAOlK,CAAS,EAAE,KAAK,CAACkL,MAAiB;AACpE,UAAAhF,IAA2BlG,EAAU,IAAI,WAAW,GACpDmL,IAAY,EAAE,cAAAD,KACdL,IAAW,IAAIO,GAAkBpC,GAAQmC,CAAS,GAClDE,IAAyBC,GAAqBT,GAAU3E,CAAQ;AAEtE,WAAA8C,EAAO,OAAO,UAAU,uBAAuB,CAACvF,GAAOC,MAAiC;AAChF,MAAAA,EAAK,UAAU6H,GAAY,gBACJF;IAC3B,CACH,GAEMR;AAAA,EAAA,CACV;AACL,GC9IaW,KAAuB,CAACxL,MAC1B,OAAO,6BAA6B,KAAK,CAAC,EAAE,gBAAAyL,GAAgB,aAAAC,QACxD1L,EAAU,IAAI,UAAU,EAAE,KAAK,CAACkG,MAA6B;AAC1D,QAAA;AAAA,IACF,SAAS,EAAE,aAAAyF,IAAc,KAAK,MAAAC,IAAOF,EAAY,YAAY,UAAAG,EAAS;AAAA,IACtE,OAAAlO;AAAA,EACA,IAAAuI;AAWG,SATgB,IAAIuF,EAAezL,GAAW;AAAA,IACjD,aAAA2L;AAAA,IACA,MAAAC;AAAA,IACA,QAAQ,OAAO,KAAKjO,CAAK,EAAE,IAAI,CAACQ,OAAU;AAAA,MACtC,MAAAA;AAAA,MACA,MAAMR,EAAMQ,GAAM;AAAA,IAAA,EACpB;AAAA,IACF,UAAA0N;AAAA,EAAA,CACH;AACM,CACV,CACJ,GAGQC,KAAuB,CAAC9L,MAC1B,OAAO,8BAA8B,KAAK,CAAC,EAAE,iBAAA+L,QACzC,IAAIA,EAAgB,CAC9B,GAGQC,KAAuB,CAAChM,MAC1B,OAAO,0BAA0B,KAAK,CAAC,EAAE,gBAAAiM,QACrC,IAAIA,EAAejM,CAAS,CACtC,GAGQkM,KAA0B,CAAClM,MAC7B,OAAO,0BAA0B,KAAK,CAAC,EAAE,mBAAAmM,QACrC,IAAIA,EAAkBnM,CAAS,CACzC,GAGQoM,KAA0B,CAACpM,MAC7B,OAAO,0BAA0B,KAAK,CAAC,EAAE,mBAAAoL,GAAmB,sBAAAE,QACxDL,GAAejL,EAAU,IAAI,SAAS,CAAC,CACjD,GCnBCqM,KAAuB,aACvBC,IAAmB,QACnBC,KAA4B;AAwBlC,MAAqBC,WAAeC,GAAW;AAAA,EAK3C,YAAYzM,GAAsB;AAC9B,UAAMA,CAAS;AALnB,IAAA+I,EAAA,qCAAc;AACd,IAAAA,EAAA;AACA,IAAAA,EAAA,cAAwC,CAAA;AA+BxC,IAAAA,EAAA,6BAAsB,CAAC2D,MAAgD;AACnE,YAAMtF,IAAU;AAAA,QACZ,mBAAmBsF,EAAe;AAAA,QAClC,iBAAiB;AAAA,MAAA;AAGrB,WAAK,UAAU,IAAI,UAAU,EAAE,KAAK,CAACxG,MAAkB;AAC7C,cAAA,EAAE,UAAAyG,EAAa,IAAAzG;AAIrB,SAFI,OAAOyG,KAAa,eAAeA,MAAa,QAAQA,MAAa,QAGrE,KAAK,aAAa,KAAK,aAAa,KAAK,OAAO,YAAY;AAAA,UAAK,MAC7D,KAAK,OAAOvF,CAAO;AAAA,QAAA;AAAA,MAE3B,CACH;AAAA,IAAA;AA1CD,SAAK,UAAU,cAAc,WAAW,MAAM0E,GAAqB,KAAK,SAAS,CAAC,GAE7E,KAAA,UAAU,gBAAgB,YAAY,MAChCzC;AAAA,MACH,KAAK;AAAA,MACLgD;AAAA,MACA/C,EAAc;AAAA,IAAA,EAChB,KAAK,CAACpD,IAAW,OACRjI,IAAA,IACA,KAAK,UAAU,IAAI,WAAW,IAC9BiI,EAEV,CACJ,GAEoB0G,GAAA,MAAa,QAAQ,KAAK,mBAAmB,GAElE,KAAK,UAAU;AAAA,MAAc;AAAA,MAAqB,MAC9CV,GAAwB,KAAK,SAAS;AAAA,IAAA,GAE1C,KAAK,UAAU,cAAc,UAAU,MAAMV,GAAqB,KAAK,SAAS,CAAC,GACjF,KAAK,UAAU,cAAc,kBAAkB,MAAMQ,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,QAAApN,GAAQ,YAAAwD,EAAW,GAAGgD,CAAQ,MAAM;;AACrC,QAAA4G,EAAA;AAAA,UAAU,KAAK,OAAO;AAAA,UAAM,CAACC,GAAQC,GAAQC,MACxD,KAAK,SAASD,GAAQC,CAAK;AAAA,QAAA;AAGzB,cAAAC,IAAkB,CAAC/N,MAAsB;AAChC,UAAA+D,EAAA,MAAM,MAAM,EAAE,MAAM,QAAQ,EAAE,QAAQ,CAACiK,MAAa;AAChD,YAAAjK,EAAA,UAAUiK,GAAUhO,CAAS;AAAA,UAAA,CAC3C;AAAA,QAAA,GAGCiO,MAAetO,IAAAY,EAAO,gBAAgB,MAAvB,gBAAAZ,EAA0B,SAAQ;AACvD,eAAAoO,EAAgBE,CAAY,GAE5B,KAAK,OAAO,UAAU,sBAAsB,CAACnG,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,UAAAoG,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,KAAKvH,EAAS,KAAK,EAAE,OAAO,CAACC,GAAKjI,MAEtD,OADSgI,EAAS,MAAMhI,GACZ,QAAS,cACdA,IAEJiI,GACR,EAAE;AAGD,YAAA,CAACqH,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,GAGG7N,EAAO;MAClB;AAAA,IAAA;AAAA,EAER;AAAA,EAEA,OAAOiO,IAAyB,IAAI;AACzB,WAAA,KAAK,UAAU,IAAI,UAAU,EAAE,KAAK,CAAC,EAAE,SAAAC,QAA8B;;AAClE,YAAA;AAAA,QACF,kBAAA5F;AAAA,QACA,KAAA9J,IAAM2P,GAAK;AAAA,QACX,mBAAAjH;AAAA,QACA,iBAAAkH;AAAA,MACA,IAAAH,GAOErF,IALcL,GAAqB2F,CAAO,MAM5B9F,EAAY,YAC3BlB,KAAA,gBAAAA,EAAmB,sBAAqB,KAAK,GAE5CmH,IAAgB5F;AAAA,QAClB,KAAK,OAAO;AAAA,QACZH;AAAA,QACApB;AAAA,QACAgH;AAAA,QACAtF;AAAA,MAAA;AAGJ,MAAI,KAAK,QAAQ,OAAO,KAAK,CAACwF,KAC1B,KAAK,eAAe,OAAO;AAG/B,YAAME,IAAO,MAAM;AACf,cAAMC,IAAU,MACZjG,EAAiB,iBAAiB,qBAAqB,EAAE,WAAW,GAClE,CAACA,CAAgB,IAAI,KAAK,OAAO,UAAU,IAAI,mBAAmB,GAElEkG,IAAU,CAACC,GAA6BC,MAA+B;AACzE,UAAIH,QACIF,EAAc,YACdA,EAAc,SAAS,GAE3BK,EAAS,WAAW;AAAA,QACxB,GAEEhH,IAAU;AAAA,UACZ,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,WAAW;AAAA,QAAA;AAGf,QAAI6G,OACcF,EAAA,YAAYA,EAAc,YAE3B,IAAI,iBAAiBG,CAAO,EAEpC,QAAQlG,GAAkBZ,CAAO;AAAA,MAAA;AAG9C,MAAIkB,KACK,KAAA,OAAO,UAAU,SAAS,YAAY,EAAE,KAAK,CAAC,EAAE,QAAA+F,QAAkB;AACnE,QAAAA,EAAO,UAAU,uBAAuB,CAAC5K,GAAYC,MAAc;AAC3D,UAAAA,EAAK,sBAAsB,KACtBsK;QACT,CACH;AAAA,MAAA,CACJ;AAGL,YAAMM,IAAS,KAAK,sBAAsBpQ,GAAK6P,CAAa;AAoCxD,UAnCC,KAAA,QAAQ,IAAI7P,GAAKoQ,CAAM,GACvB,KAAA,OAAO,OAAO,SAAS,mBAAmB,CAAA,GAAI,EAAE,SAAS,GAAA,CAAM,GAEhEP,EAAc,gBAAgBjG,EAAY,SAAS8F,OACrC9O,IAAAiP,EAAA,sBAAA,QAAAjP,EAAmB,aAAa,iBAAiB,UAC/DwP,KAAA,QAAAA,EAAQ,YAAYV,KAGpBG,EAAc,gBAAgBjG,EAAY,YAC1C/I,IAAAgP,EAAc,sBAAd,QAAAhP,EAAiC,iBAAiB,SAAS,CAAC0E,MAAe;AACvE,QAAAA,EAAM,eAAe,GAChB,KAAA,UACA,IAAI,UAAU,EACd,KAAK,CAAC,EAAE,SAAS8K,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,CAACjN,MAA6B;AAEzD,eAAK,yBAAyBA,CAAK;AAAA,QAAA,CACtC;AAGL,UAAIsM;AACA,eAAIA,MAAoB,YACb,KAAK,YAAA,EAAc,KAAK,CAACtM,MAA6B;AACrD,cAAAuM,EAAc,gBAAgBjG,EAAY,QAAQ;AAClD,iBAAK,yBAAyB,MAAM;AACpC;AAAA,UACJ;AACA,eAAK,yBAAyBtG,CAAK;AAAA,QAAA,CACtC,IAEE,KAAK,yBAAyBsM,CAAe;AAAA,IACxD,CACH;AAAA,EACL;AAAA,EAEA,OAAO5P,GAAc;AACjB,QAAIA,GAAK;AACL,UAAI,KAAK,QAAQ,IAAIA,CAAG,GAAG;AACvB,cAAMoQ,IAAS,KAAK,QAAQ,IAAIpQ,CAAG;AACnC,QAAAoQ,KAAA,QAAAA,EAAQ,WACH,KAAA,QAAQ,OAAOpQ,CAAG;AACvB;AAAA,MACJ;AACI,MAAA,QAAQ,IAAI,aAAa,gBACjB,QAAA,KAAK,iDAAiDA,GAAK;AAEvE;AAAA,IACJ;AACK,SAAA,QAAQ,QAAQ,CAACoQ,MAAW;AAC7B,MAAAA,EAAO,QAAQ;AAAA,IAAA,CAClB,GACD,KAAK,QAAQ;EACjB;AAAA,EAEQ,yBAAyBI,GAAe;AAC5C,WAAO,KAAK,UAAU,SAAS,QAAQ,EAAE,KAAK,CAAChP,MAAW;AACtD,cAAQgP,GAAO;AAAA,QACX,KAAK;AACD,eAAK,MAAM;AACX;AAAA,QACJ,KAAK;AACD,eAAK,KAAK;AACV;AAAA,QACJ,KAAK;AACD,eAAK,KAAK,GACVhP,EAAO,MAAM;AACb;AAAA,QACJ;AACI;AAAA,MACR;AAAA,IAAA,CACH;AAAA,EACL;AAAA,EAEQ,sBAAsBxB,GAAakJ,GAAwC;AAC/E,WACI,KAAK,QAAQ,IAAIlJ,CAAG,IAAI,KAAK,QAAQ,IAAIA,CAAG,IAAI,IAAI4K,GAAW,KAAK,WAAW1B,CAAO;AAAA,EAE9F;AAAA,EAEA,OAAOuH,IAAyB,IAAI;AAIhC,QAHI,QAAQ,IAAI,aAAa,gBACzB,QAAQ,KAAK,6DAA6D,GAE1EA,EAAW,MAAM;AACjB,YAAMvH,IAAsBpJ,EAAAC,EAAA,IACrB0Q,IADqB;AAAA,QAExB,iBAAiB;AAAA,MAAA;AAEd,aAAA,KAAK,OAAOvH,CAAO;AAAA,IAC9B;AACO,WAAA,KAAK,OAAOuH,CAAU;AAAA,EACjC;AAAA,EAEA,SAASjL,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,YACIkL,GACuB;AACvB,WAAO,QAAQ,IAAI;AAAA,MACf,KAAK,UAAU,IAAI,UAAU;AAAA,MAC7BxE,EAAoB,KAAK,WAAWiC,IAAsBhC,EAAgB,WAAW;AAAA,QACjF,QAAQf,EAAc;AAAA,MAAA,CACzB;AAAA,IACJ,CAAA,EAAE,KAAK,CAAC,CAACpD,GAAU2I,CAAK,MACd,QAAQ,QAAQD,EAAG1I,CAAQ,CAAC,EAAE,KAAK,CAAC4I,MAChCD,EAAMC,CAAQ,EAAE,KAAK,MAAM;AAC9B,YAAMC,IAAU9Q,IAAA,IAAKiI,IAAa4I;AAClC,kBAAK,OAAO,OAAO,SAAS,2BAA2BC,CAAO,GACvDA;AAAA,IAAA,CACV,CACJ,CACJ;AAAA,EACL;AAAA,EAEA,gBAA+B;AACpB,WAAA3E;AAAA,MACH,KAAK;AAAA,MACLiC;AAAA,MACAhC,EAAgB;AAAA,MAChB,EAAE,QAAQf,EAAc,MAAM;AAAA,MAE7B,KAAK,CAACuF,MAAUA,EAAO,CAAA,EACvB,KAAK,MAAM,KAAK,UAAU,IAAI,UAAU,CAAC,EACzC,KAAK,CAAC3I,MAAa;AAChB,WAAK,OAAO,OAAO,SAAS,2BAA2BA,CAAQ;AAAA,IAAA,CAClE;AAAA,EACT;AAAA,EAEA,OAAO,EAAE,QAAA8G,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,QAAA+B,GAAY,KAAK,SAAS;AACnB,aAAA,QAAQ,QAAQP,EAAkB,IAAI;AAEjD,UAAMQ,IAAkB,MACpB5F;AAAA,MACI,KAAK;AAAA,MACLiD;AAAA,MACAhD,EAAc;AAAA,IAAA,EAChB,KAAK,CAAC2D,IAAQwB,EAAkB,WAAWxB,CAAK,GAEhDiC,IAAgB,MAClB7F;AAAA,MACI,KAAK;AAAA,MACLiD;AAAA,MACAhD,EAAc;AAAA,IAAA,EAChB,KAAK,CAAC2D,IAAQwB,EAAkB,WAAWxB,CAAK;AAEtD,WAAO,KAAK,UAAU,SAAS,QAAQ,EAAE,KAAK,CAACkC,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,SAAStB,GAAgBC,GAAY;AACzC,YAAQD,GAAQ;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACK,cAAAqC,IACFrC,MAAW,SACLyB,EAAkB,OAClBzB,MAAW,UACXyB,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,sBAAAxP,IAAAwP,EAAO,QAAQ,sBAAf,gBAAAxP,EAAkC,aAAa,iBAAiB;AAAA;AAAA,UAAO;AAAA,QAE/E,CACH;AAAA,IACT;AAAA,EACJ;AAAA,EAEQ,eAAeuQ,GAAiC;AACpD,UAAM,EAAE,QAAAC,GAAQ,QAAAjB,MAAW,KAAK,UAAU,IAAI,SAAS;AACvD,WAAO,QAAQ,IAAI;AAAA,MACfjE,EAAoB,KAAK,WAAWkC,GAAkBjC,EAAgB,WAAW;AAAA,QAC7E,QAAQf,EAAc;AAAA,MAAA,CACzB;AAAA,MACDc,EAAoB,KAAK,WAAWkC,GAAkBjC,EAAgB,WAAW;AAAA,QAC7E,QAAQf,EAAc;AAAA,QACtB,UAAU,EAAE,SAAS,EAAE;AAAA,MAAA,CAC1B;AAAA,MACD,KAAK,UAAU,SAAS,QAAQ;AAAA,MAChCgG,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,IAE7BhB,EAAO,SAAS,+BAA+B;AAAA,QAC3C,UAAUoB;AAAA,QACV,MAAMJ;AAAA,MAAA,CACT;AAAA,IAAA,CACJ;AAAA,EACL;AAAA,EAEQ,SAAwB;AAC5B,WAAO,KAAK,UAAU,SAAS,QAAQ,EAAE,KAAK,CAAC3P,OAC3C,KAAK,QAAQ;AAAA,MAAQ,CAAC4O,MAClB;;AAAA,gBAAAxP,IAAAwP,EAAO,QAAQ,sBAAf,gBAAAxP,EAAkC,aAAa,iBAAiB;AAAA;AAAA,IAAM,GAEnEY,EAAO,QACjB;AAAA,EACL;AAAA,EAEQ,UAAyB;AAC7B,UAAMgQ,IAAW,KAAK,UAAU,aAAa,UAAU,YAAY;AAe5D,YAVmB,MACf,KAAK,UAAU,IAAI,UAAU,EAAE,KAAK,CAACC,MAAmC;AAC3E,YAAM,EAAE,UAAAhD,EAAS,IAAI,KAAK,UAAU,IAAI,WAAW;AAC/C,aAAAgD,EAAe,aAAahD,IACrB,KAAK,YAAY,MAAM,QAAQ,QAAQ,EAAE,UAAAA,EAAU,CAAA,CAAC,IAExD,QAAQ;IAAQ,CAC1B,GAGE,EACF,KAAK,MACK+C,CACV,EACA;AAAA,MACG,CAAC;AAAA,QACG,QAAAhQ;AAAA,QACA,YAAAwD;AAAA,MAAA,MAIE;AACI,cAAA0M,IAAe1M,EAAW,MAAM;AAKtC,eAJA,KAAK,QAAQ;AAAA,UAAQ,CAACoL,MAClB;;AAAA,oBAAAxP,IAAAwP,EAAO,QAAQ,sBAAf,gBAAAxP,EAAkC,aAAa,iBAAiB;AAAA;AAAA,QAAO,GAIvE8Q,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,EAAQpQ,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,gBAAgBqQ,GAAe;AAC9B,SAAA,QAAQ,QAAQ,CAACzB,MAAW;AACvB,YAAA;AAAA,QACF,SAAS,EAAE,mBAAA1H,GAAmB,gBAAAgD,EAAe;AAAA,MAC7C,IAAA0E,GACE,EAAE,aAAA3E,GAAa,eAAAD,MAAmBE,KAAmC,CAAA;AAC3E,MAAIhD,MACAmJ,IACMlI,GAAUjB,GAAmB+C,CAAW,IACxClC,GAAYb,GAAmB8C,CAAa;AAAA,IACtD,CACH;AAAA,EACL;AAAA,EAEA,aAAa;AACT,SAAK,KAAK,QAAQ,CAAC,MAAM,EAAG,CAAA;AAE5B,UAAMmD,IAA4B,CAAA;AAC7B,gBAAA,QAAQ,QAAQ,CAACyB,MAAWzB,EAAS,KAAKyB,EAAO,QAAS,CAAA,CAAC,GAEzDjF;AAAA,MACH,KAAK;AAAA,MACLkD;AAAA,MACAjD,EAAc;AAAA,IAAA,EAChB,KAAK,CAAC2D,MAIAA,MAAU,KAAK,OAAO,OACf7C;AAAA,MACH,KAAK;AAAA,MACLmC;AAAA,MACAlC,EAAgB;AAAA,MAChB;AAAA,QACI,QAAQf,EAAc;AAAA,QACtB,OAAO0G,GAAa;AAAA,MACxB;AAAA,IAEC,EAAA,KAAK,CAACnB,MAAUA,GAAO,EACvB,KAAK,MAAM,QAAQ,IAAIhC,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","Switch$1","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","AnimatedView$1","View","View$1","styling","css","paddedBorderTabStyle","StyledAnimatedView","NonResolvedComponentWrapper","_c","ResolvableComponent","forwardRef","ref","children","ResolvedComponent","useComponent","type","id","useComponentDescriptor","StyledResolvableComponent","useMemo","filterCssPropsStyle","Typography","Suspense","ResolvableComponent$1","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","Component$1","DetachedComponent","builder","setNode","createdNode","n","DetachedComponent$2","detachedComponent","NotFound","showSearch","themeContext","useTheme","settings","acc","searchComponentProps","searchNode","notFoundNode","NotFound$1","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","StorageScope"],"mappings":"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"}
@@ -51,24 +51,11 @@ const b = (t) => {
51
51
  }
52
52
  }
53
53
  );
54
- }, [e]), !r || !r.history || !e || !n ? null : /* @__PURE__ */ o.createElement(E, {
55
- value: P
56
- }, /* @__PURE__ */ o.createElement(_, {
57
- history: r.history
58
- }, /* @__PURE__ */ o.createElement(v.Provider, {
59
- value: t
60
- }, /* @__PURE__ */ o.createElement(R.Provider, {
61
- value: r
62
- }, /* @__PURE__ */ o.createElement(C, {
63
- id: n,
64
- branch: "default"
65
- })))));
54
+ }, [e]), !r || !r.history || !e || !n ? null : /* @__PURE__ */ o.createElement(E, { value: P }, /* @__PURE__ */ o.createElement(_, { history: r.history }, /* @__PURE__ */ o.createElement(v.Provider, { value: t }, /* @__PURE__ */ o.createElement(R.Provider, { value: r }, /* @__PURE__ */ o.createElement(C, { id: n, branch: "default" })))));
66
55
  }, N = g, j = (t, e) => {
67
- c(e).render(/* @__PURE__ */ o.createElement(N, {
68
- container: t
69
- }));
56
+ c(e).render(/* @__PURE__ */ o.createElement(N, { container: t }));
70
57
  };
71
58
  export {
72
59
  j as default
73
60
  };
74
- //# sourceMappingURL=render.e827eb22.js.map
61
+ //# sourceMappingURL=render.0b9431cd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.e827eb22.js","sources":["../../../node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/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","\nimport createCache from '@emotion/cache';\nimport { CacheProvider } from '@emotion/react';\nimport { 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 cacheProvider = createCache({\n key: 'css',\n prepend: true,\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 <CacheProvider value={cacheProvider}>\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 </CacheProvider>\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","cacheProvider","createCache","Wrapper","components","useComponentPlatform","entry","setEntry","event","node","React","CacheProvider","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,GCFMM,IAAgBC,EAAY;AAAA,EAC9B,KAAK;AAAA,EACL,SAAS;AACb,CAAC,GAEKC,IAA2B,CAAC,EAAE,WAAAT,QAAgB;AAC1C,QAAAU,IAAaC,EAAqBX,CAAS,GAC3CC,IAASF,EAAUC,CAAS,GAC5B,CAACY,GAAOC,CAAQ,IAAIV,EAAwB,IAAI;AAuBtD,SArBAG,EAAU,MAAM;AACZ,QAAII;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,CAACT,KAAU,CAACA,EAAO,WAAW,CAACS,KAI/B,CAACE,IACM,OAIN,gBAAAI,EAAA,cAAAC,GAAA;AAAA,IAAc,OAAOV;AAAA,EAAA,GACjB,gBAAAS,EAAA,cAAAE,GAAA;AAAA,IAAO,SAASjB,EAAO;AAAA,EACpB,GAAA,gBAAAe,EAAA,cAACG,EAAiB,UAAjB;AAAA,IAA0B,OAAOnB;AAAA,EAC9B,GAAA,gBAAAgB,EAAA,cAACI,EAAe,UAAf;AAAA,IAAwB,OAAOnB;AAAA,EAAA,GAC3B,gBAAAe,EAAA,cAAAK,GAAA;AAAA,IAAU,IAAIT;AAAA,IAAO,QAAO;AAAA,EAAA,CAAU,CAC3C,CACJ,CACJ,CACJ;AAER,GAEAU,IAAeb,GC3Dfc,IAAe,CAACvB,GAAsBwB,MAAyB;AAE3D,EADa7B,EAAW6B,CAAO,EAC1B,OAAQ,gBAAAR,EAAA,cAAAP,GAAA;AAAA,IAAQ,WAAAT;AAAA,EAAsB,CAAA,CAAE;AACjD;"}
1
+ {"version":3,"file":"render.0b9431cd.js","sources":["../../../node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/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","\nimport createCache from '@emotion/cache';\nimport { CacheProvider } from '@emotion/react';\nimport { 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 cacheProvider = createCache({\n key: 'css',\n prepend: true,\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 <CacheProvider value={cacheProvider}>\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 </CacheProvider>\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","cacheProvider","createCache","Wrapper","components","useComponentPlatform","entry","setEntry","event","node","React","CacheProvider","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,GCFMM,IAAgBC,EAAY;AAAA,EAC9B,KAAK;AAAA,EACL,SAAS;AACb,CAAC,GAEKC,IAA2B,CAAC,EAAE,WAAAT,QAAgB;AAC1C,QAAAU,IAAaC,EAAqBX,CAAS,GAC3CC,IAASF,EAAUC,CAAS,GAC5B,CAACY,GAAOC,CAAQ,IAAIV,EAAwB,IAAI;AAuBtD,SArBAG,EAAU,MAAM;AACZ,QAAII;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,CAACT,KAAU,CAACA,EAAO,WAAW,CAACS,KAI/B,CAACE,IACM,OAIN,gBAAAI,EAAA,cAAAC,GAAA,EAAc,OAAOV,EAAA,GACjB,gBAAAS,EAAA,cAAAE,GAAA,EAAO,SAASjB,EAAO,QACpB,GAAA,gBAAAe,EAAA,cAACG,EAAiB,UAAjB,EAA0B,OAAOnB,KAC7B,gBAAAgB,EAAA,cAAAI,EAAe,UAAf,EAAwB,OAAOnB,EAAA,GAC3B,gBAAAe,EAAA,cAAAK,GAAA,EAAU,IAAIT,GAAO,QAAO,WAAU,CAC3C,CACJ,CACJ,CACJ;AAER,GAEAU,IAAeb,GC3Dfc,IAAe,CAACvB,GAAsBwB,MAAyB;AAE3D,EADa7B,EAAW6B,CAAO,EAC1B,OAAO,gBAAAR,EAAA,cAACP,GAAQ,EAAA,WAAAT,EAAsB,CAAA,CAAE;AACjD;"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- declare type Props = {
2
+ type Props = {
3
3
  className?: string;
4
4
  };
5
5
  declare const AnimatedView: React.FC<Props>;
@@ -1,6 +1,6 @@
1
1
  import { ComponentNode } from '@telia-ace/widget-core';
2
2
  import React from 'react';
3
- declare type Props = {
3
+ type Props = {
4
4
  className?: string;
5
5
  id: string;
6
6
  branch: string;
@@ -1,6 +1,6 @@
1
1
  import { ComponentNode, ComponentPlatform } from '@telia-ace/widget-core';
2
2
  import React from 'react';
3
- declare type Props = {
3
+ type Props = {
4
4
  builder: (components: ComponentPlatform) => Promise<ComponentNode>;
5
5
  };
6
6
  declare const DetachedComponent: React.FC<Props>;
@@ -21,6 +21,6 @@ export declare const findParentRoutes: (routeName: string, routes: RouteStructur
21
21
  * @param routeRanking Hierarchical route ranking for the widget
22
22
  */
23
23
  export declare const determineSlideDirection: (currentRouteName: string, nextRouteName: string, routeRanking: RouteRanking) => SlideDirection;
24
- export declare type RouteRanking = {
24
+ export type RouteRanking = {
25
25
  [key: string]: number;
26
26
  };
@@ -2,7 +2,7 @@ export declare const renderSymbol: (symbol?: {
2
2
  type: string;
3
3
  content: string;
4
4
  }) => string | undefined;
5
- export declare type TriggerElementOptions = {
5
+ export type TriggerElementOptions = {
6
6
  symbol?: {
7
7
  type: string;
8
8
  content: string;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- declare type Props = {
2
+ type Props = {
3
3
  showSearch?: boolean;
4
4
  };
5
5
  declare const NotFound: React.FC<Props>;
@@ -13,7 +13,7 @@ export declare enum TriggerType {
13
13
  }
14
14
  export declare const determineProvidedElements: (widgetDOMElement?: HTMLElement, triggerDOMElement?: HTMLElement) => ProvidedElements;
15
15
  export declare const determineTriggerType: (triggerDefinition?: any) => TriggerType;
16
- declare type PrepareDOMElementsOutput = ViewOutletOptions & {
16
+ type PrepareDOMElementsOutput = ViewOutletOptions & {
17
17
  callback?: () => void;
18
18
  };
19
19
  export declare const prepareDOMElements: (name: string, providedWidgetElement?: HTMLElement, providedTriggerElement?: HTMLElement, triggerDefinition?: any, waitWithReplace?: boolean) => PrepareDOMElementsOutput;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- declare type Props = {
2
+ type Props = {
3
3
  role?: string;
4
4
  'data-width': number;
5
5
  'data-indent': number;
@@ -1,6 +1,6 @@
1
1
  import { ViewDefinition } from '@telia-ace/widget-core';
2
2
  import React from 'react';
3
- declare type Props = {
3
+ type Props = {
4
4
  location?: any;
5
5
  views: {
6
6
  [key: string]: ViewDefinition;
@@ -1,14 +1,14 @@
1
1
  import { Symbol } from '@telia-ace/widget-ui';
2
2
  import { Container } from '@webprovisions/platform';
3
3
  import { TriggerType } from './prepare-dom';
4
- export declare type BadgeOptions = {
4
+ export type BadgeOptions = {
5
5
  symbol?: Symbol;
6
6
  label?: string;
7
7
  ariaLabel?: string;
8
8
  openTooltip?: string;
9
9
  closedTooltip?: string;
10
10
  };
11
- export declare type ViewOutletOptions = {
11
+ export type ViewOutletOptions = {
12
12
  widgetDOMElement: HTMLElement;
13
13
  triggerDOMElement?: HTMLElement;
14
14
  triggerOptions?: BadgeOptions | boolean;
package/dist/ui/view.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- declare type Props = {
2
+ type Props = {
3
3
  className?: string;
4
4
  };
5
5
  declare const View: React.FC<Props>;
@@ -1,6 +1,6 @@
1
1
  import { Container } from '@webprovisions/platform';
2
2
  import React from 'react';
3
- declare type Props = {
3
+ type Props = {
4
4
  container: Container;
5
5
  };
6
6
  declare const Wrapper: React.FC<Props>;
package/dist/widget.d.ts CHANGED
@@ -8,14 +8,14 @@ export declare enum InitialRenderState {
8
8
  Hidden = "hidden",
9
9
  Storage = "storage"
10
10
  }
11
- export declare type RenderData = {
11
+ export type RenderData = {
12
12
  widgetDOMElement?: HTMLElement;
13
13
  triggerDOMElement?: HTMLElement;
14
14
  key?: string;
15
15
  open?: boolean;
16
16
  withRenderState?: InitialRenderState;
17
17
  };
18
- export declare type AttachData = {
18
+ export type AttachData = {
19
19
  widgetDOMElement?: HTMLElement;
20
20
  triggerDOMElement?: HTMLElement;
21
21
  key?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telia-ace/widget-types-grid",
3
- "version": "1.0.28",
3
+ "version": "1.0.29-next.3",
4
4
  "description": "Type definition for Grid widget.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
@@ -21,12 +21,12 @@
21
21
  },
22
22
  "sideEffects": false,
23
23
  "dependencies": {
24
- "@telia-ace/widget-core": "^1.0.19",
25
- "@telia-ace/widget-forms": "^1.0.26",
26
- "@telia-ace/widget-routing": "^1.0.20",
27
- "@telia-ace/widget-services": "^1.0.19",
28
- "@telia-ace/widget-ui": "^1.0.26",
29
- "@telia-ace/widget-utilities": "^1.0.8",
24
+ "@telia-ace/widget-core": "1.0.20-next.3",
25
+ "@telia-ace/widget-forms": "1.0.27-next.3",
26
+ "@telia-ace/widget-routing": "1.0.21-next.3",
27
+ "@telia-ace/widget-services": "1.0.20-next.3",
28
+ "@telia-ace/widget-ui": "1.0.27-next.3",
29
+ "@telia-ace/widget-utilities": "1.0.9-next.3",
30
30
  "@webprovisions/bootstrapping": "^1.0.12",
31
31
  "@webprovisions/platform": "^1.1.2"
32
32
  },
@@ -44,10 +44,10 @@
44
44
  "@emotion/cache": "^11.10.5",
45
45
  "@emotion/react": "^11.10.5",
46
46
  "@emotion/styled": "^11.10.5",
47
- "@telia-ace/widget-developer-tools": "^1.0.14",
48
- "@types/react": "^18.0.25",
49
- "@types/react-dom": "^18.0.8",
50
- "@types/react-router": "^5.1.19",
47
+ "@telia-ace/widget-developer-tools": "1.0.15-next.3",
48
+ "@types/react": "^18.0.26",
49
+ "@types/react-dom": "^18.0.10",
50
+ "@types/react-router": "^5.1.20",
51
51
  "@types/react-router-dom": "^5.3.3",
52
52
  "@types/react-transition-group": "^4.4.5",
53
53
  "react": "^18.2.0",