@telia-ace/widget-types-grid 1.0.36-next.1 → 1.0.36

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
@@ -10,7 +10,7 @@ var ie = (t, e, n) => e in t ? we(t, e, { enumerable: !0, configurable: !0, writ
10
10
  re.call(e, n) && ie(t, n, e[n]);
11
11
  return t;
12
12
  }, C = (t, e) => ve(t, Ee(e));
13
- var M = (t, e) => {
13
+ var N = (t, e) => {
14
14
  var n = {};
15
15
  for (var s in t)
16
16
  oe.call(t, s) && e.indexOf(s) < 0 && (n[s] = t[s]);
@@ -21,7 +21,7 @@ var M = (t, e) => {
21
21
  };
22
22
  import { css as ue, ThemeProvider as Ce, useTheme as Oe } from "@emotion/react";
23
23
  import { asDescriptor as ae, ComponentPlatform as Se, createComponentModel as Ae, ComponentQuery as De, WidgetRenderState as O } from "@telia-ace/widget-core";
24
- import { Grid as de, useRouteData as Ne, useRouter as xe, useProperties as he, useContext as X, useContainer as T, useComponentNode as ee, useScroll as pe, transitionComposer as Me, paddedBorderTabStyle as $e, useComponent as Le, useComponentDescriptor as ke, filterCssPropsStyle as Pe, Typography as Re, useComponentPlatform as me, useIsMounted as Ve, useColumns as _e, useLayout as Ie, ComponentNodeContext as ze, ComponentPropertyContext as Be, filterCssProps as Te } from "@telia-ace/widget-ui";
24
+ import { Grid as de, useRouteData as xe, useRouter as Me, useProperties as he, useContext as X, useContainer as T, useComponentNode as ee, useScroll as pe, transitionComposer as Ne, paddedBorderTabStyle as $e, useComponent as Le, useComponentDescriptor as ke, filterCssPropsStyle as Pe, Typography as Re, useComponentPlatform as me, useIsMounted as Ve, useColumns as _e, useLayout as Ie, ComponentNodeContext as ze, ComponentPropertyContext as Be, filterCssProps as Te } from "@telia-ace/widget-ui";
25
25
  import d, { useState as z, forwardRef as fe, useMemo as je, Suspense as Ge, useEffect as B } from "react";
26
26
  import P from "@emotion/styled";
27
27
  import { appendClassNames as K, notifyDataLoaded as We, lock as q, removeNullAndUndefinedValues as ce, uuid as Fe } from "@telia-ace/widget-utilities";
@@ -65,8 +65,8 @@ const Xe = (t, e, n) => typeof n[t] == "number" && typeof n[e] == "number" && n[
65
65
  "contact-method": 6,
66
66
  conversation: 7
67
67
  }, it = (n) => {
68
- var s = n, { className: t = "" } = s, e = M(s, ["className"]);
69
- const [i, o] = z("index"), [r, c] = z(J.forth), a = Ne(), u = xe(), h = he(), l = X(), g = T(), f = ee(), { gap: m = "0" } = l, G = h, { columns: y = 1, animation: b = "none", scrollable: w = !1 } = G, A = M(G, ["columns", "animation", "scrollable"]), [j, L] = pe(w);
68
+ var s = n, { className: t = "" } = s, e = N(s, ["className"]);
69
+ const [i, o] = z("index"), [r, c] = z(J.forth), a = xe(), u = Me(), h = he(), l = X(), g = T(), f = ee(), { gap: m = "0" } = l, G = h, { columns: y = 1, animation: b = "none", scrollable: w = !1 } = G, A = N(G, ["columns", "animation", "scrollable"]), [j, L] = pe(w);
70
70
  if (!f || !u)
71
71
  return null;
72
72
  const { location: se } = u;
@@ -74,8 +74,8 @@ const Xe = (t, e, n) => typeof n[t] == "number" && typeof n[e] == "number" && n[
74
74
  const { views: D } = g.get("$settings");
75
75
  if (!Object.keys(D).length)
76
76
  return null;
77
- const N = (v, x, R) => {
78
- const S = Y(x, R), I = f.getChildren(v)[0];
77
+ const x = (v, M, R) => {
78
+ const S = Y(M, R), I = f.getChildren(v)[0];
79
79
  return /* @__PURE__ */ d.createElement(
80
80
  nt,
81
81
  C(p(C(p(p({}, e), A), {
@@ -88,13 +88,13 @@ const Xe = (t, e, n) => typeof n[t] == "number" && typeof n[e] == "number" && n[
88
88
  }),
89
89
  /* @__PURE__ */ d.createElement(te, { id: I.id, branch: "default" })
90
90
  );
91
- }, Y = (v, x) => {
91
+ }, Y = (v, M) => {
92
92
  if (b === "slide" || b === "fade")
93
93
  return {
94
- animationCss: Me.composeViewTransition(
94
+ animationCss: Ne.composeViewTransition(
95
95
  v,
96
96
  b,
97
- x
97
+ M
98
98
  ),
99
99
  ["data-state"]: v
100
100
  };
@@ -114,12 +114,12 @@ const Xe = (t, e, n) => typeof n[t] == "number" && typeof n[e] == "number" && n[
114
114
  unmountOnExit: !0,
115
115
  direction: J.forth
116
116
  },
117
- (v, { direction: x }) => /* @__PURE__ */ d.createElement(
117
+ (v, { direction: M }) => /* @__PURE__ */ d.createElement(
118
118
  ge,
119
119
  {
120
120
  views: D,
121
121
  location: se,
122
- render: (R) => N(R, v, x)
122
+ render: (R) => x(R, v, M)
123
123
  }
124
124
  )
125
125
  )
@@ -127,8 +127,8 @@ const Xe = (t, e, n) => typeof n[t] == "number" && typeof n[e] == "number" && n[
127
127
  }, ot = it, rt = P(de)`
128
128
  ${(t) => !!t.scrollableCss && t.scrollableCss}
129
129
  `, at = (n) => {
130
- var s = n, { className: t = "" } = s, e = M(s, ["className"]);
131
- const i = he(), o = X(), r = T(), c = ee(), { views: a } = r.get("$settings"), { gap: u = "0" } = o, b = i, { columns: h = 1, animation: l = "none", scrollable: g = !1 } = b, f = M(b, ["columns", "animation", "scrollable"]), [m, y] = pe(g);
130
+ var s = n, { className: t = "" } = s, e = N(s, ["className"]);
131
+ const i = he(), o = X(), r = T(), c = ee(), { views: a } = r.get("$settings"), { gap: u = "0" } = o, b = i, { columns: h = 1, animation: l = "none", scrollable: g = !1 } = b, f = N(b, ["columns", "animation", "scrollable"]), [m, y] = pe(g);
132
132
  return c ? /* @__PURE__ */ d.createElement(
133
133
  rt,
134
134
  C(p(p({}, e), f), {
@@ -194,7 +194,7 @@ const Xe = (t, e, n) => typeof n[t] == "number" && typeof n[e] == "number" && n[
194
194
  ${(t) => U(t)}
195
195
  `, ht = fe(
196
196
  (i, s) => {
197
- var o = i, { className: t = "", children: e } = o, n = M(o, ["className", "children"]);
197
+ var o = i, { className: t = "", children: e } = o, n = N(o, ["className", "children"]);
198
198
  const r = Le(), { name: c, type: a, id: u } = ke(), h = je(() => r ? P(r)`
199
199
  ${U}
200
200
  ${Pe}
@@ -239,7 +239,7 @@ const Xe = (t, e, n) => typeof n[t] == "number" && typeof n[e] == "number" && n[
239
239
  }, [n, o, t, e]), s;
240
240
  }, ft = (t, e) => e ? !0 : typeof t == "string" ? t === "full" : t > 0, gt = fe(
241
241
  (u, a) => {
242
- var h = u, { className: t = "", id: e, branch: n, node: s, ariaLabel: i, tabIndex: o, context: r } = h, c = M(h, ["className", "id", "branch", "node", "ariaLabel", "tabIndex", "context"]);
242
+ var h = u, { className: t = "", id: e, branch: n, node: s, ariaLabel: i, tabIndex: o, context: r } = h, c = N(h, ["className", "id", "branch", "node", "ariaLabel", "tabIndex", "context"]);
243
243
  const l = me(), g = T(), [f, m] = z(), y = _e(), b = X(e), w = mt(e), { size: A = "none", indent: j = 0 } = Ie(e), L = ft(A, s);
244
244
  if (B(() => {
245
245
  if (l) {
@@ -263,31 +263,31 @@ const Xe = (t, e, n) => typeof n[t] == "number" && typeof n[e] == "number" && n[
263
263
  return null;
264
264
  const R = p(p({}, b), r || {}), {
265
265
  cardinal: D,
266
- fonts: N = {},
266
+ fonts: x = {},
267
267
  accessibility: Y = {}
268
- } = R, G = M(R, [
268
+ } = R, G = N(R, [
269
269
  "cardinal",
270
270
  "fonts",
271
271
  "accessibility"
272
272
  ]), v = {
273
- type: N.type,
274
- base: N.base || "16px",
275
- small: N.small || "0.8em",
276
- normal: N.normal || "1em",
277
- medium: N.medium || "1.2em",
278
- large: N.large || "1.6em",
279
- huge: N.huge || "2.5em"
280
- }, x = C(p({}, G), {
273
+ type: x.type,
274
+ base: x.base || "16px",
275
+ small: x.small || "0.8em",
276
+ normal: x.normal || "1em",
277
+ medium: x.medium || "1.2em",
278
+ large: x.large || "1.6em",
279
+ huge: x.huge || "2.5em"
280
+ }, M = C(p({}, G), {
281
281
  fonts: v,
282
282
  accessibility: p({}, Y)
283
283
  });
284
- return typeof D == "number" && (x.sizes = {
284
+ return typeof D == "number" && (M.sizes = {
285
285
  cardinal: D,
286
286
  small: `${D}px`,
287
287
  normal: `${D * 3}px`,
288
288
  medium: `${D * 5}px`,
289
289
  large: `${D * 8}px`
290
- }), /* @__PURE__ */ d.createElement(Ce, { theme: x }, /* @__PURE__ */ d.createElement(ze.Provider, { value: f }, /* @__PURE__ */ d.createElement(Be.Provider, { value: w }, (() => {
290
+ }), /* @__PURE__ */ d.createElement(Ce, { theme: M }, /* @__PURE__ */ d.createElement(ze.Provider, { value: f }, /* @__PURE__ */ d.createElement(Be.Provider, { value: w }, (() => {
291
291
  const S = p({
292
292
  "data-width": A === "full" ? y : Math.min(A, y),
293
293
  "data-indent": j,
@@ -425,9 +425,9 @@ function be(t, e) {
425
425
  });
426
426
  }
427
427
  var k = /* @__PURE__ */ ((t) => (t.Inline = "inline", t.Link = "link", t.Badge = "badge", t.Unsupported = "unsupported", t))(k || {});
428
- const Nt = (t, e) => t && e ? "both" : t ? "widgetDOM" : e ? "triggerDOM" : "none", ye = (t) => t ? typeof t == "boolean" && t ? "link" : typeof t == "object" && !Array.isArray(t) ? "badge" : "unsupported" : "inline", xt = (t, e, n, s, i = !1) => {
428
+ const xt = (t, e) => t && e ? "both" : t ? "widgetDOM" : e ? "triggerDOM" : "none", ye = (t) => t ? typeof t == "boolean" && t ? "link" : typeof t == "object" && !Array.isArray(t) ? "badge" : "unsupported" : "inline", Mt = (t, e, n, s, i = !1) => {
429
429
  var u, h;
430
- const o = Nt(
430
+ const o = xt(
431
431
  e,
432
432
  n
433
433
  ), r = ye(s), c = {
@@ -474,7 +474,7 @@ const Nt = (t, e) => t && e ? "both" : t ? "widgetDOM" : e ? "triggerDOM" : "non
474
474
  }
475
475
  }
476
476
  return a;
477
- }, Mt = "modals";
477
+ }, Nt = "modals";
478
478
  class $t {
479
479
  constructor(e, n) {
480
480
  this.options = n, this.unsubscribe = [], this.container = e.createChild(this), this.container.register("widgetDOMElement", this.options.widgetDOMElement), this.container.register("triggerDOMElement", this.options.triggerDOMElement);
@@ -500,7 +500,7 @@ class $t {
500
500
  const i = this.container.get("$environment").widgets.all();
501
501
  $(
502
502
  this.container,
503
- Mt,
503
+ Nt,
504
504
  E.Session
505
505
  ).then((o) => {
506
506
  o && o.forEach((r) => {
@@ -654,7 +654,7 @@ class Jt extends Je {
654
654
  "router",
655
655
  "components"
656
656
  ), n = this.container.get("csp");
657
- return n && (window.webprovisionsEnvironmentVariables || (window.webprovisionsEnvironmentVariables = {}), window.webprovisionsEnvironmentVariables.cspNonce = n.cspNonce), Promise.all([e, this.container.get("settings")]).then(
657
+ return n && (window.webprovisionsEnvironmentVariables || (window.webprovisionsEnvironmentVariables = {}), window.webprovisionsEnvironmentVariables.cspNonce = n.nonce), Promise.all([e, this.container.get("settings")]).then(
658
658
  ([{ actionResolver: s, router: i, components: o }, r]) => {
659
659
  var u;
660
660
  s.subscribe(
@@ -693,7 +693,7 @@ class Jt extends Je {
693
693
  key: i = Fe(),
694
694
  triggerDOMElement: o,
695
695
  withRenderState: r
696
- } = e, a = ye(n) === k.Inline && ((o == null ? void 0 : o.childElementCount) || 0) > 0, u = xt(
696
+ } = e, a = ye(n) === k.Inline && ((o == null ? void 0 : o.childElementCount) || 0) > 0, u = Mt(
697
697
  this.widget.name,
698
698
  s,
699
699
  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 { RouteData, RoutingService, onWidgetUrl } from '@telia-ace/widget-routing';\nimport {\n StorageCategory,\n StorageMedium,\n StorageScope,\n createStorageWriter,\n readStorage,\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 { TriggerType, determineTriggerType, prepareDOMElements } 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 const cspSettings = this.container.get('csp');\n if (cspSettings) {\n if (!(window as any).webprovisionsEnvironmentVariables) {\n (window as any).webprovisionsEnvironmentVariables = {};\n }\n (window as any).webprovisionsEnvironmentVariables['cspNonce'] = cspSettings.cspNonce;\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","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","cspSettings","actionResolver","origin","action","value","switchViewNodes","viewNode","initialRoute","previous","next","prevData","nextData","notFoundView","removeNullAndUndefinedValues","attachData","trigger","uuid","withRenderState","outletOptions","swap","isReady","watcher","mutations","observer","events","outlet","updatedTrigger","renderState","WidgetRenderState","input","renderData","fn","write","override","updated","onWidgetUrl","readSessionOpen","readLocalOpen","routing","localOpen","newState","invoke","writeSessionOpen","writeLocalOpen","previousRenderState","services","widgetSettings","visibleNodes","c","resolve","open","s","StorageScope"],"mappings":"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"}
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 { RouteData, RoutingService, onWidgetUrl } from '@telia-ace/widget-routing';\nimport {\n StorageCategory,\n StorageMedium,\n StorageScope,\n createStorageWriter,\n readStorage,\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 { TriggerType, determineTriggerType, prepareDOMElements } 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 const cspSettings: { nonce: string } | undefined = this.container.get('csp');\n if (cspSettings) {\n if (!(window as any).webprovisionsEnvironmentVariables) {\n (window as any).webprovisionsEnvironmentVariables = {};\n }\n (window as any).webprovisionsEnvironmentVariables['cspNonce'] = cspSettings.nonce;\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","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","cspSettings","actionResolver","origin","action","value","switchViewNodes","viewNode","initialRoute","previous","next","prevData","nextData","notFoundView","removeNullAndUndefinedValues","attachData","trigger","uuid","withRenderState","outletOptions","swap","isReady","watcher","mutations","observer","events","outlet","updatedTrigger","renderState","WidgetRenderState","input","renderData","fn","write","override","updated","onWidgetUrl","readSessionOpen","readLocalOpen","routing","localOpen","newState","invoke","writeSessionOpen","writeLocalOpen","previousRenderState","services","widgetSettings","visibleNodes","c","resolve","open","s","StorageScope"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telia-ace/widget-types-grid",
3
- "version": "1.0.36-next.1",
3
+ "version": "1.0.36",
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.27-next.1",
25
- "@telia-ace/widget-forms": "1.0.34-next.1",
26
- "@telia-ace/widget-routing": "1.0.28-next.1",
27
- "@telia-ace/widget-services": "1.0.27-next.1",
28
- "@telia-ace/widget-ui": "1.0.34-next.1",
29
- "@telia-ace/widget-utilities": "1.0.16-next.1",
24
+ "@telia-ace/widget-core": "1.0.27",
25
+ "@telia-ace/widget-forms": "1.0.34",
26
+ "@telia-ace/widget-routing": "1.0.28",
27
+ "@telia-ace/widget-services": "1.0.27",
28
+ "@telia-ace/widget-ui": "1.0.34",
29
+ "@telia-ace/widget-utilities": "1.0.16",
30
30
  "@webprovisions/bootstrapping": "^1.0.13",
31
31
  "@webprovisions/platform": "^1.1.3"
32
32
  },
@@ -44,7 +44,7 @@
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.22-next.1",
47
+ "@telia-ace/widget-developer-tools": "1.0.22",
48
48
  "@types/react": "^18.0.27",
49
49
  "@types/react-dom": "^18.0.10",
50
50
  "@types/react-router": "^5.1.20",