@telia-ace/widget-types-grid 1.0.30-experimental.6 → 1.0.30-experimental.8

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.
@@ -1003,7 +1003,7 @@ class In {
1003
1003
  }
1004
1004
  render() {
1005
1005
  const { widgetDOMElement: t, triggerDOMElement: e } = this.options, s = this.container.get("$widget");
1006
- return t.getAttribute("data-rendered") === "true" ? Promise.resolve() : (e && this.options.triggerType === T.Badge && kn(e), import("./render.fdecc0e9.js").then((i) => i.default(s.name, this.container, t)).then(() => {
1006
+ return t.getAttribute("data-rendered") === "true" ? Promise.resolve() : (e && this.options.triggerType === T.Badge && kn(e), import("./render.0c0b70f9.js").then((i) => i.default(s.name, this.container, t)).then(() => {
1007
1007
  if (t.setAttribute("data-rendered", "true"), e && this.options.triggerType === T.Badge) {
1008
1008
  const o = this.options.triggerOptions.openTooltip;
1009
1009
  Xt(e, o);
@@ -1156,7 +1156,7 @@ class ls extends He {
1156
1156
  A.Local
1157
1157
  ).then((e = {}) => f(f({}, this.container.get("$settings")), e))), Re(this, "load", this.handleBootstrapping), this.container.registerAsync(
1158
1158
  "componentResolver",
1159
- () => Un(this.container).then((e) => (this.events.dispatch("widget:component-resolver-registered", { resolver: e }), e))
1159
+ () => Un(this.container)
1160
1160
  ), this.container.registerAsync("router", () => Bn(this.container)), this.container.registerAsync("actionResolver", () => Wn(this.container)), this.container.register("matchMedia", window.matchMedia), this.container.registerAsync("components", () => Fn(this.container));
1161
1161
  }
1162
1162
  initialize() {
@@ -1462,4 +1462,4 @@ export {
1462
1462
  lt as s,
1463
1463
  ut as t
1464
1464
  };
1465
- //# sourceMappingURL=index.8409f500.js.map
1465
+ //# sourceMappingURL=index.c6989014.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.8409f500.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","../../../node_modules/.pnpm/@lit+reactive-element@1.6.0/node_modules/@lit/reactive-element/decorators/custom-element.js","../../../node_modules/.pnpm/@lit+reactive-element@1.6.0/node_modules/@lit/reactive-element/decorators/property.js","../../../node_modules/.pnpm/@lit+reactive-element@1.6.0/node_modules/@lit/reactive-element/decorators/state.js","../../../node_modules/.pnpm/@lit+reactive-element@1.6.0/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js","../../../node_modules/.pnpm/lit-html@2.6.0/node_modules/lit-html/lit-html.js","../../../node_modules/.pnpm/lit-html@2.6.0/node_modules/lit-html/static.js","../src/mixins/requester.ts","../src/ui/widget-component.ts","../src/utils/component-tag-from-type.ts","../src/utils/resolve-component.ts","../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 { determineSlideDirection, RouteRanking, SlideDirection } from './determine-slide-direction';\nimport Switch from './switch';\nimport Component from './_component';\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 Switch from './switch';\nimport Component from './_component';\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","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=e=>n=>\"function\"==typeof n?((e,n)=>(customElements.define(e,n),n))(e,n):((e,n)=>{const{kind:t,elements:s}=n;return{kind:t,elements:s,finisher(n){customElements.define(e,n)}}})(e,n);export{e as customElement};\n//# sourceMappingURL=custom-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst i=(i,e)=>\"method\"===e.kind&&e.descriptor&&!(\"value\"in e.descriptor)?{...e,finisher(n){n.createProperty(e.key,i)}}:{kind:\"field\",key:Symbol(),placement:\"own\",descriptor:{},originalKey:e.key,initializer(){\"function\"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(n){n.createProperty(e.key,i)}};function e(e){return(n,t)=>void 0!==t?((i,e,n)=>{e.constructor.createProperty(n,i)})(e,n,t):i(e,n)}export{e as property};\n//# sourceMappingURL=property.js.map\n","import{property as r}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function t(t){return r({...t,state:!0})}export{t as state};\n//# sourceMappingURL=state.js.map\n","import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var n;const e=null!=(null===(n=window.HTMLSlotElement)||void 0===n?void 0:n.prototype.assignedElements)?(o,n)=>o.assignedElements(n):(o,n)=>o.assignedNodes(n).filter((o=>o.nodeType===Node.ELEMENT_NODE));function l(n){const{slot:l,selector:t}=null!=n?n:{};return o({descriptor:o=>({get(){var o;const r=\"slot\"+(l?`[name=${l}]`:\":not([name])\"),i=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(r),s=null!=i?e(i,n):[];return t?s.filter((o=>o.matches(t))):s},enumerable:!0,configurable:!0})})}export{l as queryAssignedElements};\n//# sourceMappingURL=query-assigned-elements.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=window,s=i.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,o=`lit$${(Math.random()+\"\").slice(9)}$`,n=\"?\"+o,l=`<${n}>`,h=document,r=(t=\"\")=>h.createComment(t),d=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,c=t=>u(t)||\"function\"==typeof(null==t?void 0:t[Symbol.iterator]),v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,a=/-->/g,f=/>/g,_=RegExp(\">|[ \\t\\n\\f\\r](?:([^\\\\s\\\"'>=/]+)([ \\t\\n\\f\\r]*=[ \\t\\n\\f\\r]*(?:[^ \\t\\n\\f\\r\\\"'`<>=]|(\\\"|')|))|$)\",\"g\"),m=/'/g,p=/\"/g,$=/^(?:script|style|textarea|title)$/i,g=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),y=g(1),w=g(2),x=Symbol.for(\"lit-noChange\"),b=Symbol.for(\"lit-nothing\"),T=new WeakMap,A=h.createTreeWalker(h,129,null,!1),E=(t,i)=>{const s=t.length-1,n=[];let h,r=2===i?\"<svg>\":\"\",d=v;for(let i=0;i<s;i++){const s=t[i];let e,u,c=-1,g=0;for(;g<s.length&&(d.lastIndex=g,u=d.exec(s),null!==u);)g=d.lastIndex,d===v?\"!--\"===u[1]?d=a:void 0!==u[1]?d=f:void 0!==u[2]?($.test(u[2])&&(h=RegExp(\"</\"+u[2],\"g\")),d=_):void 0!==u[3]&&(d=_):d===_?\">\"===u[0]?(d=null!=h?h:v,c=-1):void 0===u[1]?c=-2:(c=d.lastIndex-u[2].length,e=u[1],d=void 0===u[3]?_:'\"'===u[3]?p:m):d===p||d===m?d=_:d===a||d===f?d=v:(d=_,h=void 0);const y=d===_&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=d===v?s+l:c>=0?(n.push(e),s.slice(0,c)+\"$lit$\"+s.slice(c)+o+y):s+o+(-2===c?(n.push(void 0),i):y)}const u=r+(t[s]||\"<?>\")+(2===i?\"</svg>\":\"\");if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return[void 0!==e?e.createHTML(u):u,n]};class C{constructor({strings:t,_$litType$:i},e){let l;this.parts=[];let h=0,d=0;const u=t.length-1,c=this.parts,[v,a]=E(t,i);if(this.el=C.createElement(v,e),A.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(l=A.nextNode())&&c.length<u;){if(1===l.nodeType){if(l.hasAttributes()){const t=[];for(const i of l.getAttributeNames())if(i.endsWith(\"$lit$\")||i.startsWith(o)){const s=a[d++];if(t.push(i),void 0!==s){const t=l.getAttribute(s.toLowerCase()+\"$lit$\").split(o),i=/([.?@])?(.*)/.exec(s);c.push({type:1,index:h,name:i[2],strings:t,ctor:\".\"===i[1]?M:\"?\"===i[1]?k:\"@\"===i[1]?H:S})}else c.push({type:6,index:h})}for(const i of t)l.removeAttribute(i)}if($.test(l.tagName)){const t=l.textContent.split(o),i=t.length-1;if(i>0){l.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)l.append(t[s],r()),A.nextNode(),c.push({type:2,index:++h});l.append(t[i],r())}}}else if(8===l.nodeType)if(l.data===n)c.push({type:2,index:h});else{let t=-1;for(;-1!==(t=l.data.indexOf(o,t+1));)c.push({type:7,index:h}),t+=o.length-1}h++}}static createElement(t,i){const s=h.createElement(\"template\");return s.innerHTML=t,s}}function P(t,i,s=t,e){var o,n,l,h;if(i===x)return i;let r=void 0!==e?null===(o=s._$Co)||void 0===o?void 0:o[e]:s._$Cl;const u=d(i)?void 0:i._$litDirective$;return(null==r?void 0:r.constructor)!==u&&(null===(n=null==r?void 0:r._$AO)||void 0===n||n.call(r,!1),void 0===u?r=void 0:(r=new u(t),r._$AT(t,s,e)),void 0!==e?(null!==(l=(h=s)._$Co)&&void 0!==l?l:h._$Co=[])[e]=r:s._$Cl=r),void 0!==r&&(i=P(t,r._$AS(t,i.values),r,e)),i}class V{constructor(t,i){this.u=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(t){var i;const{el:{content:s},parts:e}=this._$AD,o=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:h).importNode(s,!0);A.currentNode=o;let n=A.nextNode(),l=0,r=0,d=e[0];for(;void 0!==d;){if(l===d.index){let i;2===d.type?i=new N(n,n.nextSibling,this,t):1===d.type?i=new d.ctor(n,d.name,d.strings,this,t):6===d.type&&(i=new I(n,this,t)),this.u.push(i),d=e[++r]}l!==(null==d?void 0:d.index)&&(n=A.nextNode(),l++)}return o}p(t){let i=0;for(const s of this.u)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class N{constructor(t,i,s,e){var o;this.type=2,this._$AH=b,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cm=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cm}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=P(this,t,i),d(t)?t===b||null==t||\"\"===t?(this._$AH!==b&&this._$AR(),this._$AH=b):t!==this._$AH&&t!==x&&this.g(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):c(t)?this.k(t):this.g(t)}O(t,i=this._$AB){return this._$AA.parentNode.insertBefore(t,i)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}g(t){this._$AH!==b&&d(this._$AH)?this._$AA.nextSibling.data=t:this.T(h.createTextNode(t)),this._$AH=t}$(t){var i;const{values:s,_$litType$:e}=t,o=\"number\"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=C.createElement(e.h,this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===o)this._$AH.p(s);else{const t=new V(o,this),i=t.v(this.options);t.p(s),this.T(i),this._$AH=t}}_$AC(t){let i=T.get(t.strings);return void 0===i&&T.set(t.strings,i=new C(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const o of t)e===i.length?i.push(s=new N(this.O(r()),this.O(r()),this,this.options)):s=i[e],s._$AI(o),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cm=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class S{constructor(t,i,s,e,o){this.type=1,this._$AH=b,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=o,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=b}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=P(this,t,i,0),n=!d(t)||t!==this._$AH&&t!==x,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l<o.length-1;l++)h=P(this,e[s+l],i,l),h===x&&(h=this._$AH[l]),n||(n=!d(h)||h!==this._$AH[l]),h===b?t=b:t!==b&&(t+=(null!=h?h:\"\")+o[l+1]),this._$AH[l]=h}n&&!e&&this.j(t)}j(t){t===b?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:\"\")}}class M extends S{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===b?void 0:t}}const R=s?s.emptyScript:\"\";class k extends S{constructor(){super(...arguments),this.type=4}j(t){t&&t!==b?this.element.setAttribute(this.name,R):this.element.removeAttribute(this.name)}}class H extends S{constructor(t,i,s,e,o){super(t,i,s,e,o),this.type=5}_$AI(t,i=this){var s;if((t=null!==(s=P(this,t,i,0))&&void 0!==s?s:b)===x)return;const e=this._$AH,o=t===b&&e!==b||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,n=t!==b&&(e===b||o);o&&this.element.removeEventListener(this.name,this,e),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,s;\"function\"==typeof this._$AH?this._$AH.call(null!==(s=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==s?s:this.element,t):this._$AH.handleEvent(t)}}class I{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){P(this,t)}}const L={P:\"$lit$\",A:o,M:n,C:1,L:E,R:V,D:c,V:P,I:N,H:S,N:k,U:H,B:M,F:I},z=i.litHtmlPolyfillSupport;null==z||z(C,N),(null!==(t=i.litHtmlVersions)&&void 0!==t?t:i.litHtmlVersions=[]).push(\"2.6.0\");const Z=(t,i,s)=>{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new N(i.insertBefore(r(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l};export{L as _$LH,y as html,x as noChange,b as nothing,Z as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{html as t,svg as r}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=Symbol.for(\"\"),l=t=>{if((null==t?void 0:t.r)===e)return null==t?void 0:t._$litStatic$},o=t=>({_$litStatic$:t,r:e}),i=(t,...r)=>({_$litStatic$:r.reduce(((r,e,l)=>r+(t=>{if(void 0!==t._$litStatic$)return t._$litStatic$;throw Error(`Value passed to 'literal' function must be a 'literal' result: ${t}. Use 'unsafeStatic' to pass non-literal values, but\\n take care to ensure page security.`)})(e)+t[l+1]),t[0]),r:e}),s=new Map,a=t=>(r,...e)=>{const o=e.length;let i,a;const n=[],u=[];let c,$=0,f=!1;for(;$<o;){for(c=r[$];$<o&&void 0!==(a=e[$],i=l(a));)c+=i+r[++$],f=!0;u.push(a),n.push(c),$++}if($===o&&n.push(r[o]),f){const t=n.join(\"$$lit$$\");void 0===(r=s.get(t))&&(n.raw=n,s.set(t,r=n)),e=u}return t(r,...e)},n=a(t),u=a(r);export{n as html,i as literal,u as svg,o as unsafeStatic,a as withStatic};\n//# sourceMappingURL=static.js.map\n","import { LitElement } from 'lit';\n\nexport declare class RequesterInterface {\n requestInstance(key: string): any;\n}\n\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nexport const Requester = <T extends Constructor<LitElement>>(Base: T) => {\n class RequesterClass extends Base {\n requestInstance(key: string) {\n const event = new CustomEvent('request-instance', {\n detail: { key },\n bubbles: true,\n composed: true,\n cancelable: true,\n });\n\n this.dispatchEvent(event);\n\n return (event.detail as any).instance;\n }\n }\n\n return RequesterClass as Constructor<RequesterInterface> & T;\n};\n","import { spread } from '@open-wc/lit-helpers';\nimport { asDescriptor, ComponentPlatform, ComponentResolver } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { css, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { html, unsafeStatic } from 'lit/static-html.js';\nimport { Requester } from '../mixins/requester';\n\nconst componentTagFromType = (type: string) => {\n const componentTagPrefix = 'w';\n return `${componentTagPrefix}-${type}`;\n};\n\nconst getWidth = (size: any = 'none', columns: number = 1) => {\n return size === 'full' ? columns : Math.min(size as number, columns);\n};\n\n@customElement('widget-component')\nexport class WidgetComponent extends Requester(LitElement) {\n static styles = [\n css`\n :host {\n outline: none;\n box-sizing: border-box;\n }\n\n * {\n box-sizing: border-box;\n outline: none;\n }\n\n grid-column: var(--gridColumn);\n `,\n ];\n\n container: Container | undefined;\n listeners: any[] = [];\n\n @property({ type: String }) nodeId!: string;\n @property({ type: String }) branch = 'default';\n\n @state()\n protected _descriptor: any = null;\n\n @state()\n protected _properties: { [key: string]: any } = {};\n\n @state()\n protected _context: { [key: string]: any } = {};\n\n @state()\n protected _layout: { [key: string]: any } = {};\n\n connectedCallback() {\n super.connectedCallback();\n this.container = this.requestInstance('container');\n\n if (this.container) {\n Promise.all([\n ComponentPlatform.getInstance(this.container),\n this.container.getAsync('componentResolver'),\n ]).then((values) => {\n const platform = values[0];\n const resolver = values[1] as ComponentResolver;\n\n const componentNode = platform.nodes.get(this.nodeId || '');\n\n if (componentNode) {\n this._descriptor = asDescriptor(componentNode, this.branch);\n this._properties = componentNode.attributes.properties;\n this._context = componentNode.attributes.context;\n this._layout = componentNode.attributes.layout;\n\n const columns = this.style.getPropertyValue('--columns')\n ? +this.style.getPropertyValue('--columns')\n : 1;\n const width = getWidth(this._layout.size, columns);\n\n const gridColumn =\n typeof this._layout.indent !== 'undefined'\n ? `${this._layout.indent + 1} / ${\n this._layout.indent + (width || 0) + 1\n }`\n : `span ${width}`;\n this.style.setProperty('--gridColumn', gridColumn);\n\n this.listeners.push(\n platform.events.subscribe(\n 'components:properties-changed',\n (event, data) => {\n if (this.nodeId === data.node?.id /*&& isMounted.current*/) {\n this._properties = data.node.attributes.properties;\n }\n }\n )\n );\n this.listeners.push(\n platform.events.subscribe('components:context-changed', (event, data) => {\n // TODO: merge contexts with parents\n if (this.nodeId === data.node?.id /*&& isMounted.current*/) {\n this._context = data.node.attributes.context;\n }\n })\n );\n this.listeners.push(\n platform.events.subscribe('components:layout-changed', (event, data) => {\n if (this.nodeId === data.node?.id /*&& isMounted.current*/) {\n this._layout = data.node.attributes.layout;\n }\n })\n );\n\n // TODO: missing, is visible needed?\n // if (visible) {\n const unmount = componentNode.mount(this.container!);\n this.listeners.push(unmount);\n // }\n\n if (!resolver) {\n console.warn(\n 'Could not find resolver. Make sure it is registered on the container.'\n );\n return;\n }\n\n const componentTag = componentTagFromType(this._descriptor.type);\n\n // if its already resolved\n if (customElements.get(componentTag)) {\n return;\n }\n\n const create = resolver.getComponent(this._descriptor.type);\n if (!create) {\n console.warn('Component is missing or using incorrect import.');\n return;\n }\n\n return create().then((result: any) => {\n if (!customElements.get(componentTag)) {\n customElements.define(componentTag, result.default);\n }\n });\n }\n });\n }\n }\n\n disconnectedCallback(): void {\n this.listeners.forEach((unsubscribe) => {\n unsubscribe();\n });\n }\n\n mapProps() {\n // https://open-wc.org/docs/development/lit-helpers/#spread\n // lit does not support spreading properties, so this helper is used\n // example:\n // const obj = {\n // 'my-attribute': 'foo',\n // '?my-boolean-attribute': true,\n // '@my-event': () => console.log('my-event fired'),\n // '.myProperty': { foo: 'bar' },\n // };\n\n const columns = this.style.getPropertyValue('--columns')\n ? +this.style.getPropertyValue('--columns')\n : 1;\n\n return Object.entries(this._properties).reduce<{ [key: string]: any }>(\n (acc, [key, value]) => {\n if (typeof value === 'object') {\n acc[`.${key}`] = value;\n } else {\n acc[key] = value;\n }\n return acc;\n },\n {\n 'data-width': getWidth(this._layout.size, columns),\n // 'data-width': // TODO: remove when verified that columns work\n // size === 'full' ? columns : Math.min(size as number, columns),\n 'data-indent': this._layout.indent ?? 0,\n id: this._descriptor.id,\n 'data-name': this._descriptor.name,\n 'data-component-type': this._descriptor.type,\n 'data-node-id': this.nodeId,\n // 'aria-label': ariaLabel,\n // tabIndex: tabIndex,\n }\n );\n }\n\n render() {\n if (!this._descriptor) {\n return nothing;\n }\n\n const tag = `w-${this._descriptor.type}`;\n\n const props = this.mapProps();\n\n return html`\n <${unsafeStatic(tag)}\n ${spread(props)}\n .layout=${this._layout}\n .context=${this._context}\n />\n `;\n }\n}\n","export const componentTagFromType = (type: string) => {\n const componentTagPrefix = 'w';\n return `${componentTagPrefix}-${type}`;\n};\n","import { asDescriptor, ComponentPlatform, ComponentResolver } from '@telia-ace/widget-core';\nimport { componentTagFromType } from './component-tag-from-type';\n\nexport const resolveComponent = async (\n nodeId: string,\n resolver: ComponentResolver,\n platform: ComponentPlatform\n) => {\n const node = platform.nodes.get(nodeId);\n\n if (!resolver) {\n console.warn('Could not find resolver. Make sure it is registered on the container.');\n return;\n }\n\n if (!node) {\n console.warn(`Unable to find node with id: ${nodeId}`);\n return;\n }\n\n const descriptor = asDescriptor(node);\n if (!descriptor?.type) {\n console.warn(`Could not get descriptor for: ${node.name}`);\n return;\n }\n\n const componentTag = componentTagFromType(descriptor.type);\n\n // if its already resolved\n if (customElements.get(componentTag)) {\n return;\n }\n\n const create = resolver.getComponent(descriptor.type);\n if (!create) {\n console.warn('Component is missing or using incorrect import.');\n return;\n }\n\n const result = await create();\n\n if (!customElements.get(componentTag)) {\n try {\n customElements.define(componentTag, result.default);\n } catch (error) {\n console.log('error', error);\n }\n }\n\n return customElements.whenDefined(componentTag).then(() => {\n return {\n nodeId: nodeId,\n tag: componentTag,\n };\n });\n\n // return {\n // nodeId: nodeId,\n // tag: componentTag,\n // };\n};\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(widget.name, this.container, widgetDOMElement))\n .then(() => {\n widgetDOMElement.setAttribute('data-rendered', 'true');\n\n if (triggerDOMElement && this.options.triggerType === TriggerType.Badge) {\n const tooltip = (this.options.triggerOptions as BadgeOptions).openTooltip;\n setActive(triggerDOMElement, tooltip);\n }\n notifyDataLoaded(this.container, widgetDOMElement);\n\n const widgets = this.container.get('$environment').widgets.all();\n\n readStorage<Modals[]>(\n this.container,\n MODALS_STORAGE_KEY,\n StorageMedium.Session\n ).then((modals) => {\n if (modals) {\n modals.forEach((modal) => {\n if (\n widgets.find(\n (w: Widget) => w.name === modal.name && w.state === 'activated'\n )\n ) {\n widget.events.dispatch('widget:modal-opened', modal);\n }\n });\n }\n });\n });\n }\n\n renderBadge(options: BadgeOptions) {\n const { triggerDOMElement } = this.options;\n\n if (!triggerDOMElement) {\n return;\n }\n\n if (!triggerDOMElement.getAttribute('role')) {\n triggerDOMElement.setAttribute('role', 'button');\n }\n\n const { name }: Widget = this.container.get('$widget');\n\n const { label, symbol, ariaLabel, closedTooltip, openTooltip } = options;\n\n const triggerOptions = { closedTooltip, openTooltip };\n this.options.triggerOptions = triggerOptions;\n\n const removeTriggerListeners = createTriggerElement(triggerDOMElement, {\n label,\n symbol,\n ariaLabel,\n widgetName: name,\n tooltip: closedTooltip,\n });\n this.unsubscribe.push(removeTriggerListeners);\n }\n\n dispose() {\n return import('./unmount').then((module) => {\n const { triggerDOMElement, widgetDOMElement } = this.options;\n module.default(widgetDOMElement);\n\n if (this.options.cachedOriginals.widgetDOMElement) {\n if (widgetDOMElement) {\n widgetDOMElement.parentNode?.replaceChild(\n this.options.cachedOriginals.widgetDOMElement,\n widgetDOMElement\n );\n }\n }\n if (this.options.cachedOriginals.triggerDOMElement) {\n if (triggerDOMElement) {\n triggerDOMElement.parentNode?.replaceChild(\n this.options.cachedOriginals.triggerDOMElement,\n triggerDOMElement\n );\n }\n }\n\n this.unsubscribe.forEach((unsubscribe) => {\n unsubscribe();\n });\n\n widgetDOMElement.parentNode?.removeChild(widgetDOMElement);\n triggerDOMElement?.parentNode?.removeChild(triggerDOMElement);\n });\n }\n}\n","import {\n ChangesetOptions,\n ChangesetProvider,\n ComponentNodeAttributes,\n ComponentNodeSettings,\n ComponentPlatform,\n ComponentQuery,\n ComponentQueryRule,\n createComponentModel,\n WidgetSettings,\n} from '@telia-ace/widget-core';\nimport {\n createStorageWriter,\n readStorage,\n StorageCategory,\n StorageMedium,\n StorageWriter,\n} from '@telia-ace/widget-services';\nimport { lock } from '@telia-ace/widget-utilities';\nimport { Container, Widget, WidgetState } from '@webprovisions/platform';\n\nconst STORAGE_KEY = 'changesets';\n\ntype ChangesetItem = {\n rules: ComponentQueryRule[];\n attributes: Partial<ComponentNodeAttributes>;\n options: ChangesetOptions;\n};\n\ntype ChangesetItemBag = {\n items?: { [key: string]: ChangesetItem };\n keys?: string[];\n};\n\nconst convertSettingsToAttributes = (\n settings: Partial<ComponentNodeSettings>\n): Partial<ComponentNodeAttributes> => {\n const attributes: Partial<ComponentNodeAttributes> = { tags: settings.tags };\n if (settings.context && typeof settings.context !== 'function') {\n attributes.context = settings.context;\n }\n if (settings.properties && typeof settings.properties !== 'function') {\n attributes.properties = settings.properties;\n }\n if (settings.layout && typeof settings.layout !== 'function') {\n attributes.layout = settings.layout;\n }\n\n return attributes;\n};\n\nexport class LocalStorageChangesetProvider implements ChangesetProvider {\n constructor(private container: Container, private storageWriter: StorageWriter) {}\n\n static create(container: Container): Promise<LocalStorageChangesetProvider> {\n return createStorageWriter(container, STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n }).then((storageWriter) => new LocalStorageChangesetProvider(container, storageWriter));\n }\n\n write(\n key: string,\n target: ComponentQuery,\n attributes: Partial<ComponentNodeSettings>,\n options: ChangesetOptions\n ): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n const existingIndex = keys.indexOf(key);\n if (existingIndex > -1) {\n keys.splice(existingIndex, 1);\n }\n keys.push(key);\n items[key] = {\n options,\n attributes: convertSettingsToAttributes(attributes),\n rules: target.rules,\n };\n return this.storageWriter({ keys, items });\n });\n });\n }\n\n remove(key: string): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n const indexToRemove = keys.indexOf(key);\n if (indexToRemove > -1) {\n keys.splice(indexToRemove, 1);\n delete items[key];\n return this.storageWriter(bag);\n }\n });\n });\n }\n\n load(platform: ComponentPlatform): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n keys.forEach((key) => {\n const item = items[key];\n if (item) {\n const { rules, attributes, options } = item;\n platform.write({\n attributes,\n options,\n target: new ComponentQuery(platform, rules),\n });\n }\n });\n });\n });\n }\n}\n\nexport const createPlatform = (widget: Widget): Promise<ComponentPlatform> => {\n const { container } = widget;\n return LocalStorageChangesetProvider.create(container).then((localStorage) => {\n const settings: WidgetSettings = container.get('$settings');\n const providers = { localStorage };\n const platform = new ComponentPlatform(widget, providers);\n const destructComponentModel = createComponentModel(platform, settings);\n\n widget.events.subscribe('widget:state-change', (event, data: { state: WidgetState }) => {\n if (data.state === WidgetState.Deactivating) {\n destructComponentModel();\n }\n });\n\n return platform;\n });\n};\n","import { WidgetSettings } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { createPlatform } from './component-platform-factory';\n\nexport const createRoutingService = (container: Container) => {\n return import('@telia-ace/widget-routing').then(({ RoutingService, HistoryMode }) => {\n return container.get('settings').then((settings: WidgetSettings) => {\n const {\n routing: { initialPath = '/', mode = HistoryMode.scopedHash, basePath },\n views,\n } = settings;\n\n const routingService = new RoutingService(container, {\n initialPath,\n mode,\n routes: Object.keys(views).map((name) => ({\n name,\n path: views[name].path,\n })),\n basePath,\n });\n return routingService;\n });\n });\n};\n\nexport const createStorageService = (container: Container) => {\n return import('@telia-ace/widget-services').then(({ StorageProvider }) => {\n return new StorageProvider();\n });\n};\n\nexport const createActionResolver = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ActionResolver }) => {\n return new ActionResolver(container);\n });\n};\n\nexport const createComponentResolver = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ComponentResolver }) => {\n return new ComponentResolver(container);\n });\n};\n\nexport const createComponentPlatform = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ComponentPlatform, createComponentModel }) => {\n return createPlatform(container.get('$widget'));\n });\n};\n","import {\n ActionResolver,\n ComponentPlatform,\n WidgetRenderState,\n WidgetSettings,\n} from '@telia-ace/widget-core';\nimport { onWidgetUrl, RouteData, RoutingService } from '@telia-ace/widget-routing';\nimport {\n createStorageWriter,\n readStorage,\n StorageCategory,\n StorageMedium,\n StorageScope,\n} from '@telia-ace/widget-services';\nimport { removeNullAndUndefinedValues, uuid } from '@telia-ace/widget-utilities';\nimport { BootstrappingActivationData, supportBootstrapping } from '@webprovisions/bootstrapping';\nimport { Container, EventSubscriptionCancellation, WidgetType } from '@webprovisions/platform';\nimport { BadgeOptions, ViewOutlet, ViewOutletOptions } from '././ui/view-outlet';\nimport {\n createActionResolver,\n createComponentPlatform,\n createComponentResolver,\n createRoutingService,\n createStorageService,\n} from './services';\nimport { setActive, setInactive } from './ui/html-element-handlers';\nimport { determineTriggerType, prepareDOMElements, TriggerType } from './ui/prepare-dom';\n\nconst SETTINGS_STORAGE_KEY = '$settings';\nconst OPEN_STORAGE_KEY = 'open';\nconst STICKY_WIDGET_STORAGE_KEY = 'activeStickyWidget';\n\nexport enum InitialRenderState {\n Open = 'open',\n Closed = 'closed',\n Hidden = 'hidden',\n Storage = 'storage',\n}\n\nexport type RenderData = {\n widgetDOMElement?: HTMLElement;\n triggerDOMElement?: HTMLElement;\n key?: string;\n open?: boolean;\n withRenderState?: InitialRenderState;\n};\n\nexport type AttachData = {\n widgetDOMElement?: HTMLElement;\n triggerDOMElement?: HTMLElement;\n key?: string;\n withRenderState?: InitialRenderState;\n};\n\nexport default class Widget extends WidgetType {\n outlets = new Map<string, ViewOutlet>();\n activated: Promise<void> | undefined = undefined;\n subs: EventSubscriptionCancellation[] = [];\n\n constructor(container: Container) {\n super(container);\n\n this.container.registerAsync('storage', () => createStorageService(this.container));\n\n this.container.registerFactory('settings', () => {\n return readStorage<Partial<WidgetSettings>>(\n this.container,\n SETTINGS_STORAGE_KEY,\n StorageMedium.Local\n ).then((settings = {}) => {\n return {\n ...this.container.get('$settings'),\n ...settings,\n };\n });\n });\n\n supportBootstrapping(this as any, 'load', this.handleBootstrapping);\n\n this.container.registerAsync('componentResolver', () =>\n createComponentResolver(this.container).then((resolver) => {\n this.events.dispatch('widget:component-resolver-registered', { resolver });\n return resolver;\n })\n );\n this.container.registerAsync('router', () => createRoutingService(this.container));\n this.container.registerAsync('actionResolver', () => createActionResolver(this.container));\n this.container.register('matchMedia', window.matchMedia);\n this.container.registerAsync('components', () => createComponentPlatform(this.container));\n }\n\n handleBootstrapping = (activationData: BootstrappingActivationData) => {\n const options = {\n triggerDOMElement: activationData.sourceDOMElement,\n withRenderState: InitialRenderState.Storage,\n };\n\n this.container.get('settings').then((settings: any) => {\n const { activate } = settings;\n const shouldActivate =\n typeof activate === 'undefined' || activate === null || activate === true;\n\n if (shouldActivate) {\n this.activated = (this.activated || this.widget.activate()).then(() =>\n this.attach(options)\n );\n }\n });\n };\n\n initialize() {\n const promises = this.container.getManyAsync(\n 'actionResolver',\n 'router',\n 'components'\n ) as Promise<{\n actionResolver: ActionResolver;\n router: RoutingService;\n components: ComponentPlatform;\n }>;\n\n return Promise.all([promises, this.container.get('settings')]).then(\n ([{ actionResolver, router, components }, settings]) => {\n actionResolver.subscribe(this.widget.name, (origin, action, value) =>\n this.onAction(action, value)\n );\n\n const switchViewNodes = (routeName: string) => {\n components.nodes.query({ type: 'view' }).forEach((viewNode) => {\n components.setSwitch(viewNode, routeName);\n });\n };\n\n const initialRoute = router.getInitialRoute()?.name || 'index';\n switchViewNodes(initialRoute);\n\n this.events.subscribe('widget:data-loaded', (e, { element }) => {\n if (this.widget.container.get('seoConfiguration')) {\n this.events.dispatch('widget:preloaded-replaced', {\n element,\n });\n }\n });\n\n this.events.subscribe(\n 'router:change',\n (e, { previous = { routeData: {} }, next = { routeData: {} } }) => {\n const { routeData: prevData }: { routeData: RouteData } = previous;\n const { routeData: nextData }: { routeData: RouteData } = next;\n\n const notFoundView = Object.keys(settings.views).reduce((acc, key) => {\n const view = settings.views[key];\n if (typeof view.path === 'undefined') {\n return key;\n }\n return acc;\n }, '');\n\n // route not found\n if (!nextData.name && notFoundView) {\n switchViewNodes(notFoundView);\n } else {\n switchViewNodes(nextData.name);\n }\n\n removeNullAndUndefinedValues(prevData && prevData.params);\n removeNullAndUndefinedValues(nextData && nextData.params);\n\n this.container\n .getAsync('actionResolver')\n .then((actionResolver: ActionResolver) => {\n actionResolver.action(this.widget.name, 'routeChange', {\n next: nextData,\n previous: prevData,\n });\n });\n }\n );\n\n return router.initialize();\n }\n );\n }\n\n attach(attachData: AttachData = {}) {\n return this.container.get('settings').then(({ trigger }: WidgetSettings) => {\n const {\n widgetDOMElement,\n key = uuid(),\n triggerDOMElement,\n withRenderState,\n } = attachData;\n\n const triggerType = determineTriggerType(trigger);\n\n // This could probably be defined already when bootstrapping occurs,\n // Webprovisions knows when a widget is prerendered,\n // see \"queryPrerenderedTargets in @webprovisions/bootstrapping\"\n const waitWithReplace =\n triggerType === TriggerType.Inline &&\n (triggerDOMElement?.childElementCount || 0) > 0;\n\n const outletOptions = prepareDOMElements(\n this.widget.name,\n widgetDOMElement,\n triggerDOMElement,\n trigger,\n waitWithReplace\n );\n\n if (this.outlets.size < 1 && !withRenderState) {\n this.setRenderState('unset');\n }\n\n const swap = () => {\n const isReady = () =>\n widgetDOMElement.querySelectorAll('[data-loading=true]').length === 0;\n const [widgetDOMElement] = this.widget.container.get('widgetDOMElements');\n\n const watcher = (mutations: MutationRecord[], observer: MutationObserver) => {\n if (isReady()) {\n if (outletOptions.callback) {\n outletOptions.callback();\n }\n observer.disconnect();\n }\n };\n const options = {\n attributes: true,\n subtree: true,\n childList: true,\n };\n\n if (isReady()) {\n outletOptions.callback && outletOptions.callback();\n }\n const observer = new MutationObserver(watcher);\n\n observer.observe(widgetDOMElement, options);\n };\n\n if (waitWithReplace) {\n this.widget.container.getAsync('dataClient').then(({ events }: any) => {\n events.subscribe('data-client:fetched', (event: any, data: any) => {\n if (data.unresolvedQueries === 0) {\n swap();\n }\n });\n });\n }\n\n const outlet = this.getOrCreateViewOutlet(key, outletOptions);\n this.outlets.set(key, outlet);\n this.widget.events.dispatch('widget:attached', {}, { bubbles: true });\n\n if (outletOptions.triggerType === TriggerType.Badge && trigger) {\n outletOptions.triggerDOMElement?.setAttribute('aria-expanded', 'false');\n outlet?.renderBadge(trigger);\n }\n\n if (outletOptions.triggerType !== TriggerType.Inline) {\n outletOptions.triggerDOMElement?.addEventListener('click', (event: any) => {\n event.preventDefault();\n this.container\n .get('settings')\n .then(({ trigger: updatedTrigger }: WidgetSettings) => {\n outlet\n .render()\n .then(() => this.renderState())\n .then((renderState) => {\n if (\n updatedTrigger &&\n updatedTrigger.action &&\n updatedTrigger.action === 'hide'\n ) {\n return renderState === WidgetRenderState.open\n ? this.hide()\n : this.open();\n }\n return renderState === WidgetRenderState.open\n ? this.close()\n : this.open();\n });\n });\n });\n }\n\n if (this.outlets.size > 1) {\n return this.renderState().then((state: WidgetRenderState) => {\n // new outlets should have the same state as existing ones\n this.triggerStateIfApplicable(state);\n });\n }\n\n if (withRenderState) {\n if (withRenderState === InitialRenderState.Storage) {\n return this.renderState().then((state: WidgetRenderState) => {\n if (outletOptions.triggerType === TriggerType.Inline) {\n this.triggerStateIfApplicable('open');\n return;\n }\n this.triggerStateIfApplicable(state);\n });\n }\n return this.triggerStateIfApplicable(withRenderState);\n }\n });\n }\n\n detach(key?: string) {\n if (key) {\n if (this.outlets.has(key)) {\n const outlet = this.outlets.get(key);\n outlet?.dispose();\n this.outlets.delete(key);\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`detach(): Could not find View Outlet with key ${key}`);\n }\n return;\n }\n this.outlets.forEach((outlet) => {\n outlet.dispose();\n });\n this.outlets.clear();\n }\n\n private triggerStateIfApplicable(input: string) {\n return this.container.getAsync('router').then((router) => {\n switch (input) {\n case 'closed':\n this.close();\n break;\n case 'open':\n this.open();\n break;\n case 'hidden':\n this.hide();\n router.start();\n break;\n default:\n return;\n }\n });\n }\n\n private getOrCreateViewOutlet(key: string, options: ViewOutletOptions): ViewOutlet {\n return (\n this.outlets.has(key) ? this.outlets.get(key) : new ViewOutlet(this.container, options)\n )!;\n }\n\n render(renderData: RenderData = {}) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('widget.render() is deprecated. Use widget.attach() instead.');\n }\n if (renderData.open) {\n const options: AttachData = {\n ...renderData,\n withRenderState: InitialRenderState.Open,\n };\n return this.attach(options);\n }\n return this.attach(renderData);\n }\n\n activate(data?: any) {\n if (data?.override) {\n this.setSettings(() => data.override);\n }\n // TODO: this is considered a hack, remove apiNotificationPriorityBy\n // when there is a better way to get notifications from backend\n if (data?.apiNotificationPriorityBy) {\n this.container.register('apiNotificationPriorityBy', data.apiNotificationPriorityBy);\n }\n }\n\n setSettings(\n fn: (settings: WidgetSettings) => Promise<Partial<WidgetSettings>>\n ): Promise<WidgetSettings> {\n return Promise.all([\n this.container.get('settings'),\n createStorageWriter(this.container, SETTINGS_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n }),\n ]).then(([settings, write]) => {\n return Promise.resolve(fn(settings)).then((override) => {\n return write(override).then(() => {\n const updated = { ...settings, ...override };\n this.widget.events.dispatch('widget:settings-updated', updated);\n return updated;\n });\n });\n });\n }\n\n clearSettings(): Promise<void> {\n return createStorageWriter(\n this.container,\n SETTINGS_STORAGE_KEY,\n StorageCategory.Necessary,\n { medium: StorageMedium.Local }\n )\n .then((write) => write())\n .then(() => this.container.get('settings'))\n .then((settings) => {\n this.widget.events.dispatch('widget:settings-updated', settings);\n });\n }\n\n action({ action, value }: { action: string; value?: any }) {\n return this.container.getAsync('actionResolver').then((actionResolver: ActionResolver) => {\n actionResolver.action(this.widget.name, action, value);\n });\n }\n\n renderState(): Promise<WidgetRenderState> {\n if (onWidgetUrl(this.container)) {\n return Promise.resolve(WidgetRenderState.open);\n }\n const readSessionOpen = () =>\n readStorage<WidgetRenderState>(\n this.container,\n OPEN_STORAGE_KEY,\n StorageMedium.Session\n ).then((value = WidgetRenderState.closed) => value);\n\n const readLocalOpen = () =>\n readStorage<WidgetRenderState>(\n this.container,\n OPEN_STORAGE_KEY,\n StorageMedium.Session\n ).then((value = WidgetRenderState.closed) => value);\n\n return this.container.getAsync('router').then((routing: RoutingService) => {\n if (routing.isSticky()) {\n return readLocalOpen().then((localOpen) => {\n return localOpen === WidgetRenderState.open ? localOpen : readSessionOpen();\n });\n }\n return readSessionOpen();\n });\n }\n\n hide(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'hide(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n this.outlets.forEach((outlet) => outlet.render());\n return this.action({ action: 'hide' }).then(() => {\n this.setTriggerState(false);\n });\n }\n\n open(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'open(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n this.outlets.forEach((outlet) => outlet.render());\n return this.action({ action: 'open' }).then(() => {\n this.widget.events.dispatch('tracking:widget-rendered', {});\n return this.onOpen();\n });\n }\n\n close(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'close(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n return this.action({ action: 'close' }).then(() => this.onClose());\n }\n\n show(): Promise<void> {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'show(): Command is deprecated and will be removed in the future. Use open() instead.'\n );\n }\n return this.open();\n }\n\n private onAction(action: string, value: any) {\n switch (action) {\n case 'close':\n case 'open':\n case 'hide':\n const newState =\n action === 'open'\n ? WidgetRenderState.open\n : action === 'close'\n ? WidgetRenderState.closed\n : WidgetRenderState.hidden;\n\n return this.setRenderState(newState).then(() => {\n this.setTriggerState(newState === WidgetRenderState.open);\n if (newState !== WidgetRenderState.hidden) {\n newState === WidgetRenderState.open ? this.onOpen() : this.onClose();\n } else {\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'false')\n );\n }\n });\n }\n }\n\n private setRenderState(newState: string): Promise<void> {\n const { invoke, events } = this.container.get('$widget');\n return Promise.all([\n createStorageWriter(this.container, OPEN_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Session,\n }),\n createStorageWriter(this.container, OPEN_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n duration: { minutes: 5 },\n }),\n this.container.getAsync('router'),\n invoke('renderState'),\n ]).then(([writeSessionOpen, writeLocalOpen, routing, previousRenderState]) => {\n if (newState === 'unset' || !newState) {\n writeLocalOpen();\n writeSessionOpen();\n } else {\n if (routing.isSticky()) {\n writeLocalOpen(newState);\n }\n writeSessionOpen(newState);\n }\n events.dispatch('widget:render-state-changed', {\n previous: previousRenderState,\n next: newState,\n });\n });\n }\n\n private onOpen(): Promise<void> {\n return this.container.getAsync('router').then((router: RoutingService) => {\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'true')\n );\n return router.start();\n });\n }\n\n private onClose(): Promise<void> {\n const services = this.container.getManyAsync('router', 'components') as Promise<{\n router: RoutingService;\n components: ComponentPlatform;\n }>;\n\n const resetActivateProp = () => {\n return this.container.get('settings').then((widgetSettings: WidgetSettings) => {\n const { activate } = this.container.get('$settings');\n if (widgetSettings.activate !== activate) {\n return this.setSettings(() => Promise.resolve({ activate }));\n }\n return Promise.resolve();\n });\n };\n\n return resetActivateProp()\n .then(() => {\n return services;\n })\n .then(\n ({\n router,\n components,\n }: {\n router: RoutingService;\n components: ComponentPlatform;\n }) => {\n const visibleNodes = components.nodes.visible;\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'false')\n );\n\n if (\n visibleNodes.filter(\n (c) =>\n c.attributes.properties.animation &&\n c.attributes.properties.animation !== 'none'\n ).length\n ) {\n return new Promise<RoutingService>((resolve) => {\n setTimeout(() => {\n resolve(router);\n }, 200);\n });\n }\n\n return Promise.resolve(router);\n }\n )\n .then((router: RoutingService) => router.stop());\n }\n\n private setTriggerState(open: boolean) {\n this.outlets.forEach((outlet) => {\n const {\n options: { triggerDOMElement, triggerOptions },\n } = outlet;\n const { openTooltip, closedTooltip } = (triggerOptions as BadgeOptions) || {};\n if (triggerDOMElement) {\n open\n ? setActive(triggerDOMElement, openTooltip)\n : setInactive(triggerDOMElement, closedTooltip);\n }\n });\n }\n\n deactivate() {\n this.subs.forEach((s) => s());\n\n const promises: Promise<void>[] = [];\n this.outlets.forEach((outlet) => promises.push(outlet.dispose()));\n\n return readStorage<string>(\n this.container,\n STICKY_WIDGET_STORAGE_KEY,\n StorageMedium.Local\n ).then((value) => {\n /**\n * Remove stored sticky widget from implementation's localStorage if applicable\n */\n if (value === this.widget.name) {\n return createStorageWriter(\n this.container,\n STICKY_WIDGET_STORAGE_KEY,\n StorageCategory.Necessary,\n {\n medium: StorageMedium.Local,\n scope: StorageScope.Implementation,\n }\n )\n .then((write) => write())\n .then(() => Promise.all(promises));\n }\n return Promise.all(promises);\n });\n }\n}\n"],"names":["SlideDirection","determineSlideDirection","currentRouteName","nextRouteName","routeRanking","Switch","views","location","render","React","RouteSwitch","__spreadProps","__spreadValues","key","name","path","Route","Switch$1","StyledViewContainer","styled","StyledView","Grid","p","routeHierarchy","AnimatedView","_a","_b","className","other","__objRest","routeName","setRouteName","useState","transitionDirection","setTransitionDirection","nextRoute","useRouteData","router","useRouter","properties","useProperties","context","useContext","container","useContainer","node","useComponentNode","gap","columns","animation","scrollable","areaProperties","scrollableCss","elem","useScroll","renderView","transitionState","direction","animationStyles","getAnimation","childNode","appendClassNames","Component","transitionComposer","TransitionGroup","child","Transition","state","AnimatedView$1","View","View$1","styling","css","paddedBorderTabStyle","StyledAnimatedView","NonResolvedComponentWrapper","_c","ResolvableComponent","forwardRef","ref","children","ResolvedComponent","useComponent","type","id","useComponentDescriptor","StyledResolvableComponent","useMemo","filterCssPropsStyle","Typography","Suspense","ResolvableComponent$1","useComponentNodeProperties","components","useComponentPlatform","setProperties","isMounted","useIsMounted","useEffect","unsubscribe","event","data","isVisible","size","branch","ariaLabel","tabIndex","extraContext","descriptor","setDescriptor","useColumns","indent","useLayout","visible","componentNode","asDescriptor","unmount","cardinal","contextFonts","accessibility","restContext","fonts","theme","ThemeProvider","ComponentNodeContext","ComponentPropertyContext","props","cssProps","filterCssProps","Component$1","DetachedComponent","builder","setNode","createdNode","n","DetachedComponent$2","detachedComponent","NotFound","showSearch","themeContext","useTheme","settings","acc","searchComponentProps","searchNode","notFoundNode","NotFound$1","e","t","s","i","r","o","l","h","d","u","c","v","a","f","_","m","$","g","y","x","T","A","E","C","M","k","H","S","P","V","N","I","R","z","Requester","Base","RequesterClass","componentTagFromType","getWidth","WidgetComponent","LitElement","ComponentPlatform","values","platform","resolver","width","gridColumn","componentTag","create","result","value","nothing","tag","html","unsafeStatic","spread","__decorateClass","property","customElement","resolveComponent","nodeId","__async","error","renderSymbol","symbol","content","triggerTabHandler","triggerDOMElement","toggleTabbing","element","tabbing","handleKeydown","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","item","rules","ComponentQuery","createPlatform","localStorage","providers","destructComponentModel","createComponentModel","WidgetState","createRoutingService","RoutingService","HistoryMode","initialPath","mode","basePath","createStorageService","StorageProvider","createActionResolver","ActionResolver","createComponentResolver","ComponentResolver","createComponentPlatform","SETTINGS_STORAGE_KEY","OPEN_STORAGE_KEY","STICKY_WIDGET_STORAGE_KEY","Widget","WidgetType","activationData","activate","supportBootstrapping","promises","actionResolver","origin","action","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","resolve","open","StorageScope"],"mappings":"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"}
1
+ {"version":3,"file":"index.c6989014.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","../../../node_modules/.pnpm/@lit+reactive-element@1.6.0/node_modules/@lit/reactive-element/decorators/custom-element.js","../../../node_modules/.pnpm/@lit+reactive-element@1.6.0/node_modules/@lit/reactive-element/decorators/property.js","../../../node_modules/.pnpm/@lit+reactive-element@1.6.0/node_modules/@lit/reactive-element/decorators/state.js","../../../node_modules/.pnpm/@lit+reactive-element@1.6.0/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js","../../../node_modules/.pnpm/lit-html@2.6.0/node_modules/lit-html/lit-html.js","../../../node_modules/.pnpm/lit-html@2.6.0/node_modules/lit-html/static.js","../src/mixins/requester.ts","../src/ui/widget-component.ts","../src/utils/component-tag-from-type.ts","../src/utils/resolve-component.ts","../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 { determineSlideDirection, RouteRanking, SlideDirection } from './determine-slide-direction';\nimport Switch from './switch';\nimport Component from './_component';\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 Switch from './switch';\nimport Component from './_component';\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","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=e=>n=>\"function\"==typeof n?((e,n)=>(customElements.define(e,n),n))(e,n):((e,n)=>{const{kind:t,elements:s}=n;return{kind:t,elements:s,finisher(n){customElements.define(e,n)}}})(e,n);export{e as customElement};\n//# sourceMappingURL=custom-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst i=(i,e)=>\"method\"===e.kind&&e.descriptor&&!(\"value\"in e.descriptor)?{...e,finisher(n){n.createProperty(e.key,i)}}:{kind:\"field\",key:Symbol(),placement:\"own\",descriptor:{},originalKey:e.key,initializer(){\"function\"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(n){n.createProperty(e.key,i)}};function e(e){return(n,t)=>void 0!==t?((i,e,n)=>{e.constructor.createProperty(n,i)})(e,n,t):i(e,n)}export{e as property};\n//# sourceMappingURL=property.js.map\n","import{property as r}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function t(t){return r({...t,state:!0})}export{t as state};\n//# sourceMappingURL=state.js.map\n","import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var n;const e=null!=(null===(n=window.HTMLSlotElement)||void 0===n?void 0:n.prototype.assignedElements)?(o,n)=>o.assignedElements(n):(o,n)=>o.assignedNodes(n).filter((o=>o.nodeType===Node.ELEMENT_NODE));function l(n){const{slot:l,selector:t}=null!=n?n:{};return o({descriptor:o=>({get(){var o;const r=\"slot\"+(l?`[name=${l}]`:\":not([name])\"),i=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(r),s=null!=i?e(i,n):[];return t?s.filter((o=>o.matches(t))):s},enumerable:!0,configurable:!0})})}export{l as queryAssignedElements};\n//# sourceMappingURL=query-assigned-elements.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=window,s=i.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,o=`lit$${(Math.random()+\"\").slice(9)}$`,n=\"?\"+o,l=`<${n}>`,h=document,r=(t=\"\")=>h.createComment(t),d=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,c=t=>u(t)||\"function\"==typeof(null==t?void 0:t[Symbol.iterator]),v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,a=/-->/g,f=/>/g,_=RegExp(\">|[ \\t\\n\\f\\r](?:([^\\\\s\\\"'>=/]+)([ \\t\\n\\f\\r]*=[ \\t\\n\\f\\r]*(?:[^ \\t\\n\\f\\r\\\"'`<>=]|(\\\"|')|))|$)\",\"g\"),m=/'/g,p=/\"/g,$=/^(?:script|style|textarea|title)$/i,g=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),y=g(1),w=g(2),x=Symbol.for(\"lit-noChange\"),b=Symbol.for(\"lit-nothing\"),T=new WeakMap,A=h.createTreeWalker(h,129,null,!1),E=(t,i)=>{const s=t.length-1,n=[];let h,r=2===i?\"<svg>\":\"\",d=v;for(let i=0;i<s;i++){const s=t[i];let e,u,c=-1,g=0;for(;g<s.length&&(d.lastIndex=g,u=d.exec(s),null!==u);)g=d.lastIndex,d===v?\"!--\"===u[1]?d=a:void 0!==u[1]?d=f:void 0!==u[2]?($.test(u[2])&&(h=RegExp(\"</\"+u[2],\"g\")),d=_):void 0!==u[3]&&(d=_):d===_?\">\"===u[0]?(d=null!=h?h:v,c=-1):void 0===u[1]?c=-2:(c=d.lastIndex-u[2].length,e=u[1],d=void 0===u[3]?_:'\"'===u[3]?p:m):d===p||d===m?d=_:d===a||d===f?d=v:(d=_,h=void 0);const y=d===_&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=d===v?s+l:c>=0?(n.push(e),s.slice(0,c)+\"$lit$\"+s.slice(c)+o+y):s+o+(-2===c?(n.push(void 0),i):y)}const u=r+(t[s]||\"<?>\")+(2===i?\"</svg>\":\"\");if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return[void 0!==e?e.createHTML(u):u,n]};class C{constructor({strings:t,_$litType$:i},e){let l;this.parts=[];let h=0,d=0;const u=t.length-1,c=this.parts,[v,a]=E(t,i);if(this.el=C.createElement(v,e),A.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(l=A.nextNode())&&c.length<u;){if(1===l.nodeType){if(l.hasAttributes()){const t=[];for(const i of l.getAttributeNames())if(i.endsWith(\"$lit$\")||i.startsWith(o)){const s=a[d++];if(t.push(i),void 0!==s){const t=l.getAttribute(s.toLowerCase()+\"$lit$\").split(o),i=/([.?@])?(.*)/.exec(s);c.push({type:1,index:h,name:i[2],strings:t,ctor:\".\"===i[1]?M:\"?\"===i[1]?k:\"@\"===i[1]?H:S})}else c.push({type:6,index:h})}for(const i of t)l.removeAttribute(i)}if($.test(l.tagName)){const t=l.textContent.split(o),i=t.length-1;if(i>0){l.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)l.append(t[s],r()),A.nextNode(),c.push({type:2,index:++h});l.append(t[i],r())}}}else if(8===l.nodeType)if(l.data===n)c.push({type:2,index:h});else{let t=-1;for(;-1!==(t=l.data.indexOf(o,t+1));)c.push({type:7,index:h}),t+=o.length-1}h++}}static createElement(t,i){const s=h.createElement(\"template\");return s.innerHTML=t,s}}function P(t,i,s=t,e){var o,n,l,h;if(i===x)return i;let r=void 0!==e?null===(o=s._$Co)||void 0===o?void 0:o[e]:s._$Cl;const u=d(i)?void 0:i._$litDirective$;return(null==r?void 0:r.constructor)!==u&&(null===(n=null==r?void 0:r._$AO)||void 0===n||n.call(r,!1),void 0===u?r=void 0:(r=new u(t),r._$AT(t,s,e)),void 0!==e?(null!==(l=(h=s)._$Co)&&void 0!==l?l:h._$Co=[])[e]=r:s._$Cl=r),void 0!==r&&(i=P(t,r._$AS(t,i.values),r,e)),i}class V{constructor(t,i){this.u=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(t){var i;const{el:{content:s},parts:e}=this._$AD,o=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:h).importNode(s,!0);A.currentNode=o;let n=A.nextNode(),l=0,r=0,d=e[0];for(;void 0!==d;){if(l===d.index){let i;2===d.type?i=new N(n,n.nextSibling,this,t):1===d.type?i=new d.ctor(n,d.name,d.strings,this,t):6===d.type&&(i=new I(n,this,t)),this.u.push(i),d=e[++r]}l!==(null==d?void 0:d.index)&&(n=A.nextNode(),l++)}return o}p(t){let i=0;for(const s of this.u)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class N{constructor(t,i,s,e){var o;this.type=2,this._$AH=b,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cm=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cm}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=P(this,t,i),d(t)?t===b||null==t||\"\"===t?(this._$AH!==b&&this._$AR(),this._$AH=b):t!==this._$AH&&t!==x&&this.g(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):c(t)?this.k(t):this.g(t)}O(t,i=this._$AB){return this._$AA.parentNode.insertBefore(t,i)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}g(t){this._$AH!==b&&d(this._$AH)?this._$AA.nextSibling.data=t:this.T(h.createTextNode(t)),this._$AH=t}$(t){var i;const{values:s,_$litType$:e}=t,o=\"number\"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=C.createElement(e.h,this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===o)this._$AH.p(s);else{const t=new V(o,this),i=t.v(this.options);t.p(s),this.T(i),this._$AH=t}}_$AC(t){let i=T.get(t.strings);return void 0===i&&T.set(t.strings,i=new C(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const o of t)e===i.length?i.push(s=new N(this.O(r()),this.O(r()),this,this.options)):s=i[e],s._$AI(o),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cm=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class S{constructor(t,i,s,e,o){this.type=1,this._$AH=b,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=o,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=b}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=P(this,t,i,0),n=!d(t)||t!==this._$AH&&t!==x,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l<o.length-1;l++)h=P(this,e[s+l],i,l),h===x&&(h=this._$AH[l]),n||(n=!d(h)||h!==this._$AH[l]),h===b?t=b:t!==b&&(t+=(null!=h?h:\"\")+o[l+1]),this._$AH[l]=h}n&&!e&&this.j(t)}j(t){t===b?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:\"\")}}class M extends S{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===b?void 0:t}}const R=s?s.emptyScript:\"\";class k extends S{constructor(){super(...arguments),this.type=4}j(t){t&&t!==b?this.element.setAttribute(this.name,R):this.element.removeAttribute(this.name)}}class H extends S{constructor(t,i,s,e,o){super(t,i,s,e,o),this.type=5}_$AI(t,i=this){var s;if((t=null!==(s=P(this,t,i,0))&&void 0!==s?s:b)===x)return;const e=this._$AH,o=t===b&&e!==b||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,n=t!==b&&(e===b||o);o&&this.element.removeEventListener(this.name,this,e),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,s;\"function\"==typeof this._$AH?this._$AH.call(null!==(s=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==s?s:this.element,t):this._$AH.handleEvent(t)}}class I{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){P(this,t)}}const L={P:\"$lit$\",A:o,M:n,C:1,L:E,R:V,D:c,V:P,I:N,H:S,N:k,U:H,B:M,F:I},z=i.litHtmlPolyfillSupport;null==z||z(C,N),(null!==(t=i.litHtmlVersions)&&void 0!==t?t:i.litHtmlVersions=[]).push(\"2.6.0\");const Z=(t,i,s)=>{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new N(i.insertBefore(r(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l};export{L as _$LH,y as html,x as noChange,b as nothing,Z as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{html as t,svg as r}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=Symbol.for(\"\"),l=t=>{if((null==t?void 0:t.r)===e)return null==t?void 0:t._$litStatic$},o=t=>({_$litStatic$:t,r:e}),i=(t,...r)=>({_$litStatic$:r.reduce(((r,e,l)=>r+(t=>{if(void 0!==t._$litStatic$)return t._$litStatic$;throw Error(`Value passed to 'literal' function must be a 'literal' result: ${t}. Use 'unsafeStatic' to pass non-literal values, but\\n take care to ensure page security.`)})(e)+t[l+1]),t[0]),r:e}),s=new Map,a=t=>(r,...e)=>{const o=e.length;let i,a;const n=[],u=[];let c,$=0,f=!1;for(;$<o;){for(c=r[$];$<o&&void 0!==(a=e[$],i=l(a));)c+=i+r[++$],f=!0;u.push(a),n.push(c),$++}if($===o&&n.push(r[o]),f){const t=n.join(\"$$lit$$\");void 0===(r=s.get(t))&&(n.raw=n,s.set(t,r=n)),e=u}return t(r,...e)},n=a(t),u=a(r);export{n as html,i as literal,u as svg,o as unsafeStatic,a as withStatic};\n//# sourceMappingURL=static.js.map\n","import { LitElement } from 'lit';\n\nexport declare class RequesterInterface {\n requestInstance(key: string): any;\n}\n\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nexport const Requester = <T extends Constructor<LitElement>>(Base: T) => {\n class RequesterClass extends Base {\n requestInstance(key: string) {\n const event = new CustomEvent('request-instance', {\n detail: { key },\n bubbles: true,\n composed: true,\n cancelable: true,\n });\n\n this.dispatchEvent(event);\n\n return (event.detail as any).instance;\n }\n }\n\n return RequesterClass as Constructor<RequesterInterface> & T;\n};\n","import { spread } from '@open-wc/lit-helpers';\nimport { asDescriptor, ComponentPlatform, ComponentResolver } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { css, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { html, unsafeStatic } from 'lit/static-html.js';\nimport { Requester } from '../mixins/requester';\n\nconst componentTagFromType = (type: string) => {\n const componentTagPrefix = 'w';\n return `${componentTagPrefix}-${type}`;\n};\n\nconst getWidth = (size: any = 'none', columns: number = 1) => {\n return size === 'full' ? columns : Math.min(size as number, columns);\n};\n\n@customElement('widget-component')\nexport class WidgetComponent extends Requester(LitElement) {\n static styles = [\n css`\n :host {\n outline: none;\n box-sizing: border-box;\n }\n\n * {\n box-sizing: border-box;\n outline: none;\n }\n\n grid-column: var(--gridColumn);\n `,\n ];\n\n container: Container | undefined;\n listeners: any[] = [];\n\n @property({ type: String }) nodeId!: string;\n @property({ type: String }) branch = 'default';\n\n @state()\n protected _descriptor: any = null;\n\n @state()\n protected _properties: { [key: string]: any } = {};\n\n @state()\n protected _context: { [key: string]: any } = {};\n\n @state()\n protected _layout: { [key: string]: any } = {};\n\n connectedCallback() {\n super.connectedCallback();\n this.container = this.requestInstance('container');\n\n if (this.container) {\n Promise.all([\n ComponentPlatform.getInstance(this.container),\n this.container.getAsync('componentResolver'),\n ]).then((values) => {\n const platform = values[0];\n const resolver = values[1] as ComponentResolver;\n\n const componentNode = platform.nodes.get(this.nodeId || '');\n\n if (componentNode) {\n this._descriptor = asDescriptor(componentNode, this.branch);\n this._properties = componentNode.attributes.properties;\n this._context = componentNode.attributes.context;\n this._layout = componentNode.attributes.layout;\n\n const columns = this.style.getPropertyValue('--columns')\n ? +this.style.getPropertyValue('--columns')\n : 1;\n const width = getWidth(this._layout.size, columns);\n\n const gridColumn =\n typeof this._layout.indent !== 'undefined'\n ? `${this._layout.indent + 1} / ${\n this._layout.indent + (width || 0) + 1\n }`\n : `span ${width}`;\n this.style.setProperty('--gridColumn', gridColumn);\n\n this.listeners.push(\n platform.events.subscribe(\n 'components:properties-changed',\n (event, data) => {\n if (this.nodeId === data.node?.id /*&& isMounted.current*/) {\n this._properties = data.node.attributes.properties;\n }\n }\n )\n );\n this.listeners.push(\n platform.events.subscribe('components:context-changed', (event, data) => {\n // TODO: merge contexts with parents\n if (this.nodeId === data.node?.id /*&& isMounted.current*/) {\n this._context = data.node.attributes.context;\n }\n })\n );\n this.listeners.push(\n platform.events.subscribe('components:layout-changed', (event, data) => {\n if (this.nodeId === data.node?.id /*&& isMounted.current*/) {\n this._layout = data.node.attributes.layout;\n }\n })\n );\n\n // TODO: missing, is visible needed?\n // if (visible) {\n const unmount = componentNode.mount(this.container!);\n this.listeners.push(unmount);\n // }\n\n if (!resolver) {\n console.warn(\n 'Could not find resolver. Make sure it is registered on the container.'\n );\n return;\n }\n\n const componentTag = componentTagFromType(this._descriptor.type);\n\n // if its already resolved\n if (customElements.get(componentTag)) {\n return;\n }\n\n const create = resolver.getComponent(this._descriptor.type);\n if (!create) {\n console.warn('Component is missing or using incorrect import.');\n return;\n }\n\n return create().then((result: any) => {\n if (!customElements.get(componentTag)) {\n customElements.define(componentTag, result.default);\n }\n });\n }\n });\n }\n }\n\n disconnectedCallback(): void {\n this.listeners.forEach((unsubscribe) => {\n unsubscribe();\n });\n }\n\n mapProps() {\n // https://open-wc.org/docs/development/lit-helpers/#spread\n // lit does not support spreading properties, so this helper is used\n // example:\n // const obj = {\n // 'my-attribute': 'foo',\n // '?my-boolean-attribute': true,\n // '@my-event': () => console.log('my-event fired'),\n // '.myProperty': { foo: 'bar' },\n // };\n\n const columns = this.style.getPropertyValue('--columns')\n ? +this.style.getPropertyValue('--columns')\n : 1;\n\n return Object.entries(this._properties).reduce<{ [key: string]: any }>(\n (acc, [key, value]) => {\n if (typeof value === 'object') {\n acc[`.${key}`] = value;\n } else {\n acc[key] = value;\n }\n return acc;\n },\n {\n 'data-width': getWidth(this._layout.size, columns),\n // 'data-width': // TODO: remove when verified that columns work\n // size === 'full' ? columns : Math.min(size as number, columns),\n 'data-indent': this._layout.indent ?? 0,\n id: this._descriptor.id,\n 'data-name': this._descriptor.name,\n 'data-component-type': this._descriptor.type,\n 'data-node-id': this.nodeId,\n // 'aria-label': ariaLabel,\n // tabIndex: tabIndex,\n }\n );\n }\n\n render() {\n if (!this._descriptor) {\n return nothing;\n }\n\n const tag = `w-${this._descriptor.type}`;\n\n const props = this.mapProps();\n\n return html`\n <${unsafeStatic(tag)}\n ${spread(props)}\n .layout=${this._layout}\n .context=${this._context}\n />\n `;\n }\n}\n","export const componentTagFromType = (type: string) => {\n const componentTagPrefix = 'w';\n return `${componentTagPrefix}-${type}`;\n};\n","import { asDescriptor, ComponentPlatform, ComponentResolver } from '@telia-ace/widget-core';\nimport { componentTagFromType } from './component-tag-from-type';\n\nexport const resolveComponent = async (\n nodeId: string,\n resolver: ComponentResolver,\n platform: ComponentPlatform\n) => {\n const node = platform.nodes.get(nodeId);\n\n if (!resolver) {\n console.warn('Could not find resolver. Make sure it is registered on the container.');\n return;\n }\n\n if (!node) {\n console.warn(`Unable to find node with id: ${nodeId}`);\n return;\n }\n\n const descriptor = asDescriptor(node);\n if (!descriptor?.type) {\n console.warn(`Could not get descriptor for: ${node.name}`);\n return;\n }\n\n const componentTag = componentTagFromType(descriptor.type);\n\n // if its already resolved\n if (customElements.get(componentTag)) {\n return;\n }\n\n const create = resolver.getComponent(descriptor.type);\n if (!create) {\n console.warn('Component is missing or using incorrect import.');\n return;\n }\n\n const result = await create();\n\n if (!customElements.get(componentTag)) {\n try {\n customElements.define(componentTag, result.default);\n } catch (error) {\n console.log('error', error);\n }\n }\n\n return customElements.whenDefined(componentTag).then(() => {\n return {\n nodeId: nodeId,\n tag: componentTag,\n };\n });\n\n // return {\n // nodeId: nodeId,\n // tag: componentTag,\n // };\n};\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(widget.name, this.container, widgetDOMElement))\n .then(() => {\n widgetDOMElement.setAttribute('data-rendered', 'true');\n\n if (triggerDOMElement && this.options.triggerType === TriggerType.Badge) {\n const tooltip = (this.options.triggerOptions as BadgeOptions).openTooltip;\n setActive(triggerDOMElement, tooltip);\n }\n notifyDataLoaded(this.container, widgetDOMElement);\n\n const widgets = this.container.get('$environment').widgets.all();\n\n readStorage<Modals[]>(\n this.container,\n MODALS_STORAGE_KEY,\n StorageMedium.Session\n ).then((modals) => {\n if (modals) {\n modals.forEach((modal) => {\n if (\n widgets.find(\n (w: Widget) => w.name === modal.name && w.state === 'activated'\n )\n ) {\n widget.events.dispatch('widget:modal-opened', modal);\n }\n });\n }\n });\n });\n }\n\n renderBadge(options: BadgeOptions) {\n const { triggerDOMElement } = this.options;\n\n if (!triggerDOMElement) {\n return;\n }\n\n if (!triggerDOMElement.getAttribute('role')) {\n triggerDOMElement.setAttribute('role', 'button');\n }\n\n const { name }: Widget = this.container.get('$widget');\n\n const { label, symbol, ariaLabel, closedTooltip, openTooltip } = options;\n\n const triggerOptions = { closedTooltip, openTooltip };\n this.options.triggerOptions = triggerOptions;\n\n const removeTriggerListeners = createTriggerElement(triggerDOMElement, {\n label,\n symbol,\n ariaLabel,\n widgetName: name,\n tooltip: closedTooltip,\n });\n this.unsubscribe.push(removeTriggerListeners);\n }\n\n dispose() {\n return import('./unmount').then((module) => {\n const { triggerDOMElement, widgetDOMElement } = this.options;\n module.default(widgetDOMElement);\n\n if (this.options.cachedOriginals.widgetDOMElement) {\n if (widgetDOMElement) {\n widgetDOMElement.parentNode?.replaceChild(\n this.options.cachedOriginals.widgetDOMElement,\n widgetDOMElement\n );\n }\n }\n if (this.options.cachedOriginals.triggerDOMElement) {\n if (triggerDOMElement) {\n triggerDOMElement.parentNode?.replaceChild(\n this.options.cachedOriginals.triggerDOMElement,\n triggerDOMElement\n );\n }\n }\n\n this.unsubscribe.forEach((unsubscribe) => {\n unsubscribe();\n });\n\n widgetDOMElement.parentNode?.removeChild(widgetDOMElement);\n triggerDOMElement?.parentNode?.removeChild(triggerDOMElement);\n });\n }\n}\n","import {\n ChangesetOptions,\n ChangesetProvider,\n ComponentNodeAttributes,\n ComponentNodeSettings,\n ComponentPlatform,\n ComponentQuery,\n ComponentQueryRule,\n createComponentModel,\n WidgetSettings,\n} from '@telia-ace/widget-core';\nimport {\n createStorageWriter,\n readStorage,\n StorageCategory,\n StorageMedium,\n StorageWriter,\n} from '@telia-ace/widget-services';\nimport { lock } from '@telia-ace/widget-utilities';\nimport { Container, Widget, WidgetState } from '@webprovisions/platform';\n\nconst STORAGE_KEY = 'changesets';\n\ntype ChangesetItem = {\n rules: ComponentQueryRule[];\n attributes: Partial<ComponentNodeAttributes>;\n options: ChangesetOptions;\n};\n\ntype ChangesetItemBag = {\n items?: { [key: string]: ChangesetItem };\n keys?: string[];\n};\n\nconst convertSettingsToAttributes = (\n settings: Partial<ComponentNodeSettings>\n): Partial<ComponentNodeAttributes> => {\n const attributes: Partial<ComponentNodeAttributes> = { tags: settings.tags };\n if (settings.context && typeof settings.context !== 'function') {\n attributes.context = settings.context;\n }\n if (settings.properties && typeof settings.properties !== 'function') {\n attributes.properties = settings.properties;\n }\n if (settings.layout && typeof settings.layout !== 'function') {\n attributes.layout = settings.layout;\n }\n\n return attributes;\n};\n\nexport class LocalStorageChangesetProvider implements ChangesetProvider {\n constructor(private container: Container, private storageWriter: StorageWriter) {}\n\n static create(container: Container): Promise<LocalStorageChangesetProvider> {\n return createStorageWriter(container, STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n }).then((storageWriter) => new LocalStorageChangesetProvider(container, storageWriter));\n }\n\n write(\n key: string,\n target: ComponentQuery,\n attributes: Partial<ComponentNodeSettings>,\n options: ChangesetOptions\n ): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n const existingIndex = keys.indexOf(key);\n if (existingIndex > -1) {\n keys.splice(existingIndex, 1);\n }\n keys.push(key);\n items[key] = {\n options,\n attributes: convertSettingsToAttributes(attributes),\n rules: target.rules,\n };\n return this.storageWriter({ keys, items });\n });\n });\n }\n\n remove(key: string): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n const indexToRemove = keys.indexOf(key);\n if (indexToRemove > -1) {\n keys.splice(indexToRemove, 1);\n delete items[key];\n return this.storageWriter(bag);\n }\n });\n });\n }\n\n load(platform: ComponentPlatform): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n keys.forEach((key) => {\n const item = items[key];\n if (item) {\n const { rules, attributes, options } = item;\n platform.write({\n attributes,\n options,\n target: new ComponentQuery(platform, rules),\n });\n }\n });\n });\n });\n }\n}\n\nexport const createPlatform = (widget: Widget): Promise<ComponentPlatform> => {\n const { container } = widget;\n return LocalStorageChangesetProvider.create(container).then((localStorage) => {\n const settings: WidgetSettings = container.get('$settings');\n const providers = { localStorage };\n const platform = new ComponentPlatform(widget, providers);\n const destructComponentModel = createComponentModel(platform, settings);\n\n widget.events.subscribe('widget:state-change', (event, data: { state: WidgetState }) => {\n if (data.state === WidgetState.Deactivating) {\n destructComponentModel();\n }\n });\n\n return platform;\n });\n};\n","import { WidgetSettings } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { createPlatform } from './component-platform-factory';\n\nexport const createRoutingService = (container: Container) => {\n return import('@telia-ace/widget-routing').then(({ RoutingService, HistoryMode }) => {\n return container.get('settings').then((settings: WidgetSettings) => {\n const {\n routing: { initialPath = '/', mode = HistoryMode.scopedHash, basePath },\n views,\n } = settings;\n\n const routingService = new RoutingService(container, {\n initialPath,\n mode,\n routes: Object.keys(views).map((name) => ({\n name,\n path: views[name].path,\n })),\n basePath,\n });\n return routingService;\n });\n });\n};\n\nexport const createStorageService = (container: Container) => {\n return import('@telia-ace/widget-services').then(({ StorageProvider }) => {\n return new StorageProvider();\n });\n};\n\nexport const createActionResolver = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ActionResolver }) => {\n return new ActionResolver(container);\n });\n};\n\nexport const createComponentResolver = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ComponentResolver }) => {\n return new ComponentResolver(container);\n });\n};\n\nexport const createComponentPlatform = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ComponentPlatform, createComponentModel }) => {\n return createPlatform(container.get('$widget'));\n });\n};\n","import {\n ActionResolver,\n ComponentPlatform,\n WidgetRenderState,\n WidgetSettings,\n} from '@telia-ace/widget-core';\nimport { onWidgetUrl, RouteData, RoutingService } from '@telia-ace/widget-routing';\nimport {\n createStorageWriter,\n readStorage,\n StorageCategory,\n StorageMedium,\n StorageScope,\n} from '@telia-ace/widget-services';\nimport { removeNullAndUndefinedValues, uuid } from '@telia-ace/widget-utilities';\nimport { BootstrappingActivationData, supportBootstrapping } from '@webprovisions/bootstrapping';\nimport { Container, EventSubscriptionCancellation, WidgetType } from '@webprovisions/platform';\nimport { BadgeOptions, ViewOutlet, ViewOutletOptions } from '././ui/view-outlet';\nimport {\n createActionResolver,\n createComponentPlatform,\n createComponentResolver,\n createRoutingService,\n createStorageService,\n} from './services';\nimport { setActive, setInactive } from './ui/html-element-handlers';\nimport { determineTriggerType, prepareDOMElements, TriggerType } from './ui/prepare-dom';\n\nconst SETTINGS_STORAGE_KEY = '$settings';\nconst OPEN_STORAGE_KEY = 'open';\nconst STICKY_WIDGET_STORAGE_KEY = 'activeStickyWidget';\n\nexport enum InitialRenderState {\n Open = 'open',\n Closed = 'closed',\n Hidden = 'hidden',\n Storage = 'storage',\n}\n\nexport type RenderData = {\n widgetDOMElement?: HTMLElement;\n triggerDOMElement?: HTMLElement;\n key?: string;\n open?: boolean;\n withRenderState?: InitialRenderState;\n};\n\nexport type AttachData = {\n widgetDOMElement?: HTMLElement;\n triggerDOMElement?: HTMLElement;\n key?: string;\n withRenderState?: InitialRenderState;\n};\n\nexport default class Widget extends WidgetType {\n outlets = new Map<string, ViewOutlet>();\n activated: Promise<void> | undefined = undefined;\n subs: EventSubscriptionCancellation[] = [];\n\n constructor(container: Container) {\n super(container);\n\n this.container.registerAsync('storage', () => createStorageService(this.container));\n\n this.container.registerFactory('settings', () => {\n return readStorage<Partial<WidgetSettings>>(\n this.container,\n SETTINGS_STORAGE_KEY,\n StorageMedium.Local\n ).then((settings = {}) => {\n return {\n ...this.container.get('$settings'),\n ...settings,\n };\n });\n });\n\n supportBootstrapping(this as any, 'load', this.handleBootstrapping);\n\n this.container.registerAsync('componentResolver', () =>\n createComponentResolver(this.container)\n );\n this.container.registerAsync('router', () => createRoutingService(this.container));\n this.container.registerAsync('actionResolver', () => createActionResolver(this.container));\n this.container.register('matchMedia', window.matchMedia);\n this.container.registerAsync('components', () => createComponentPlatform(this.container));\n }\n\n handleBootstrapping = (activationData: BootstrappingActivationData) => {\n const options = {\n triggerDOMElement: activationData.sourceDOMElement,\n withRenderState: InitialRenderState.Storage,\n };\n\n this.container.get('settings').then((settings: any) => {\n const { activate } = settings;\n const shouldActivate =\n typeof activate === 'undefined' || activate === null || activate === true;\n\n if (shouldActivate) {\n this.activated = (this.activated || this.widget.activate()).then(() =>\n this.attach(options)\n );\n }\n });\n };\n\n initialize() {\n const promises = this.container.getManyAsync(\n 'actionResolver',\n 'router',\n 'components'\n ) as Promise<{\n actionResolver: ActionResolver;\n router: RoutingService;\n components: ComponentPlatform;\n }>;\n\n return Promise.all([promises, this.container.get('settings')]).then(\n ([{ actionResolver, router, components }, settings]) => {\n actionResolver.subscribe(this.widget.name, (origin, action, value) =>\n this.onAction(action, value)\n );\n\n const switchViewNodes = (routeName: string) => {\n components.nodes.query({ type: 'view' }).forEach((viewNode) => {\n components.setSwitch(viewNode, routeName);\n });\n };\n\n const initialRoute = router.getInitialRoute()?.name || 'index';\n switchViewNodes(initialRoute);\n\n this.events.subscribe('widget:data-loaded', (e, { element }) => {\n if (this.widget.container.get('seoConfiguration')) {\n this.events.dispatch('widget:preloaded-replaced', {\n element,\n });\n }\n });\n\n this.events.subscribe(\n 'router:change',\n (e, { previous = { routeData: {} }, next = { routeData: {} } }) => {\n const { routeData: prevData }: { routeData: RouteData } = previous;\n const { routeData: nextData }: { routeData: RouteData } = next;\n\n const notFoundView = Object.keys(settings.views).reduce((acc, key) => {\n const view = settings.views[key];\n if (typeof view.path === 'undefined') {\n return key;\n }\n return acc;\n }, '');\n\n // route not found\n if (!nextData.name && notFoundView) {\n switchViewNodes(notFoundView);\n } else {\n switchViewNodes(nextData.name);\n }\n\n removeNullAndUndefinedValues(prevData && prevData.params);\n removeNullAndUndefinedValues(nextData && nextData.params);\n\n this.container\n .getAsync('actionResolver')\n .then((actionResolver: ActionResolver) => {\n actionResolver.action(this.widget.name, 'routeChange', {\n next: nextData,\n previous: prevData,\n });\n });\n }\n );\n\n return router.initialize();\n }\n );\n }\n\n attach(attachData: AttachData = {}) {\n return this.container.get('settings').then(({ trigger }: WidgetSettings) => {\n const {\n widgetDOMElement,\n key = uuid(),\n triggerDOMElement,\n withRenderState,\n } = attachData;\n\n const triggerType = determineTriggerType(trigger);\n\n // This could probably be defined already when bootstrapping occurs,\n // Webprovisions knows when a widget is prerendered,\n // see \"queryPrerenderedTargets in @webprovisions/bootstrapping\"\n const waitWithReplace =\n triggerType === TriggerType.Inline &&\n (triggerDOMElement?.childElementCount || 0) > 0;\n\n const outletOptions = prepareDOMElements(\n this.widget.name,\n widgetDOMElement,\n triggerDOMElement,\n trigger,\n waitWithReplace\n );\n\n if (this.outlets.size < 1 && !withRenderState) {\n this.setRenderState('unset');\n }\n\n const swap = () => {\n const isReady = () =>\n widgetDOMElement.querySelectorAll('[data-loading=true]').length === 0;\n const [widgetDOMElement] = this.widget.container.get('widgetDOMElements');\n\n const watcher = (mutations: MutationRecord[], observer: MutationObserver) => {\n if (isReady()) {\n if (outletOptions.callback) {\n outletOptions.callback();\n }\n observer.disconnect();\n }\n };\n const options = {\n attributes: true,\n subtree: true,\n childList: true,\n };\n\n if (isReady()) {\n outletOptions.callback && outletOptions.callback();\n }\n const observer = new MutationObserver(watcher);\n\n observer.observe(widgetDOMElement, options);\n };\n\n if (waitWithReplace) {\n this.widget.container.getAsync('dataClient').then(({ events }: any) => {\n events.subscribe('data-client:fetched', (event: any, data: any) => {\n if (data.unresolvedQueries === 0) {\n swap();\n }\n });\n });\n }\n\n const outlet = this.getOrCreateViewOutlet(key, outletOptions);\n this.outlets.set(key, outlet);\n this.widget.events.dispatch('widget:attached', {}, { bubbles: true });\n\n if (outletOptions.triggerType === TriggerType.Badge && trigger) {\n outletOptions.triggerDOMElement?.setAttribute('aria-expanded', 'false');\n outlet?.renderBadge(trigger);\n }\n\n if (outletOptions.triggerType !== TriggerType.Inline) {\n outletOptions.triggerDOMElement?.addEventListener('click', (event: any) => {\n event.preventDefault();\n this.container\n .get('settings')\n .then(({ trigger: updatedTrigger }: WidgetSettings) => {\n outlet\n .render()\n .then(() => this.renderState())\n .then((renderState) => {\n if (\n updatedTrigger &&\n updatedTrigger.action &&\n updatedTrigger.action === 'hide'\n ) {\n return renderState === WidgetRenderState.open\n ? this.hide()\n : this.open();\n }\n return renderState === WidgetRenderState.open\n ? this.close()\n : this.open();\n });\n });\n });\n }\n\n if (this.outlets.size > 1) {\n return this.renderState().then((state: WidgetRenderState) => {\n // new outlets should have the same state as existing ones\n this.triggerStateIfApplicable(state);\n });\n }\n\n if (withRenderState) {\n if (withRenderState === InitialRenderState.Storage) {\n return this.renderState().then((state: WidgetRenderState) => {\n if (outletOptions.triggerType === TriggerType.Inline) {\n this.triggerStateIfApplicable('open');\n return;\n }\n this.triggerStateIfApplicable(state);\n });\n }\n return this.triggerStateIfApplicable(withRenderState);\n }\n });\n }\n\n detach(key?: string) {\n if (key) {\n if (this.outlets.has(key)) {\n const outlet = this.outlets.get(key);\n outlet?.dispose();\n this.outlets.delete(key);\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`detach(): Could not find View Outlet with key ${key}`);\n }\n return;\n }\n this.outlets.forEach((outlet) => {\n outlet.dispose();\n });\n this.outlets.clear();\n }\n\n private triggerStateIfApplicable(input: string) {\n return this.container.getAsync('router').then((router) => {\n switch (input) {\n case 'closed':\n this.close();\n break;\n case 'open':\n this.open();\n break;\n case 'hidden':\n this.hide();\n router.start();\n break;\n default:\n return;\n }\n });\n }\n\n private getOrCreateViewOutlet(key: string, options: ViewOutletOptions): ViewOutlet {\n return (\n this.outlets.has(key) ? this.outlets.get(key) : new ViewOutlet(this.container, options)\n )!;\n }\n\n render(renderData: RenderData = {}) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('widget.render() is deprecated. Use widget.attach() instead.');\n }\n if (renderData.open) {\n const options: AttachData = {\n ...renderData,\n withRenderState: InitialRenderState.Open,\n };\n return this.attach(options);\n }\n return this.attach(renderData);\n }\n\n activate(data?: any) {\n if (data?.override) {\n this.setSettings(() => data.override);\n }\n // TODO: this is considered a hack, remove apiNotificationPriorityBy\n // when there is a better way to get notifications from backend\n if (data?.apiNotificationPriorityBy) {\n this.container.register('apiNotificationPriorityBy', data.apiNotificationPriorityBy);\n }\n }\n\n setSettings(\n fn: (settings: WidgetSettings) => Promise<Partial<WidgetSettings>>\n ): Promise<WidgetSettings> {\n return Promise.all([\n this.container.get('settings'),\n createStorageWriter(this.container, SETTINGS_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n }),\n ]).then(([settings, write]) => {\n return Promise.resolve(fn(settings)).then((override) => {\n return write(override).then(() => {\n const updated = { ...settings, ...override };\n this.widget.events.dispatch('widget:settings-updated', updated);\n return updated;\n });\n });\n });\n }\n\n clearSettings(): Promise<void> {\n return createStorageWriter(\n this.container,\n SETTINGS_STORAGE_KEY,\n StorageCategory.Necessary,\n { medium: StorageMedium.Local }\n )\n .then((write) => write())\n .then(() => this.container.get('settings'))\n .then((settings) => {\n this.widget.events.dispatch('widget:settings-updated', settings);\n });\n }\n\n action({ action, value }: { action: string; value?: any }) {\n return this.container.getAsync('actionResolver').then((actionResolver: ActionResolver) => {\n actionResolver.action(this.widget.name, action, value);\n });\n }\n\n renderState(): Promise<WidgetRenderState> {\n if (onWidgetUrl(this.container)) {\n return Promise.resolve(WidgetRenderState.open);\n }\n const readSessionOpen = () =>\n readStorage<WidgetRenderState>(\n this.container,\n OPEN_STORAGE_KEY,\n StorageMedium.Session\n ).then((value = WidgetRenderState.closed) => value);\n\n const readLocalOpen = () =>\n readStorage<WidgetRenderState>(\n this.container,\n OPEN_STORAGE_KEY,\n StorageMedium.Session\n ).then((value = WidgetRenderState.closed) => value);\n\n return this.container.getAsync('router').then((routing: RoutingService) => {\n if (routing.isSticky()) {\n return readLocalOpen().then((localOpen) => {\n return localOpen === WidgetRenderState.open ? localOpen : readSessionOpen();\n });\n }\n return readSessionOpen();\n });\n }\n\n hide(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'hide(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n this.outlets.forEach((outlet) => outlet.render());\n return this.action({ action: 'hide' }).then(() => {\n this.setTriggerState(false);\n });\n }\n\n open(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'open(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n this.outlets.forEach((outlet) => outlet.render());\n return this.action({ action: 'open' }).then(() => {\n this.widget.events.dispatch('tracking:widget-rendered', {});\n return this.onOpen();\n });\n }\n\n close(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'close(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n return this.action({ action: 'close' }).then(() => this.onClose());\n }\n\n show(): Promise<void> {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'show(): Command is deprecated and will be removed in the future. Use open() instead.'\n );\n }\n return this.open();\n }\n\n private onAction(action: string, value: any) {\n switch (action) {\n case 'close':\n case 'open':\n case 'hide':\n const newState =\n action === 'open'\n ? WidgetRenderState.open\n : action === 'close'\n ? WidgetRenderState.closed\n : WidgetRenderState.hidden;\n\n return this.setRenderState(newState).then(() => {\n this.setTriggerState(newState === WidgetRenderState.open);\n if (newState !== WidgetRenderState.hidden) {\n newState === WidgetRenderState.open ? this.onOpen() : this.onClose();\n } else {\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'false')\n );\n }\n });\n }\n }\n\n private setRenderState(newState: string): Promise<void> {\n const { invoke, events } = this.container.get('$widget');\n return Promise.all([\n createStorageWriter(this.container, OPEN_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Session,\n }),\n createStorageWriter(this.container, OPEN_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n duration: { minutes: 5 },\n }),\n this.container.getAsync('router'),\n invoke('renderState'),\n ]).then(([writeSessionOpen, writeLocalOpen, routing, previousRenderState]) => {\n if (newState === 'unset' || !newState) {\n writeLocalOpen();\n writeSessionOpen();\n } else {\n if (routing.isSticky()) {\n writeLocalOpen(newState);\n }\n writeSessionOpen(newState);\n }\n events.dispatch('widget:render-state-changed', {\n previous: previousRenderState,\n next: newState,\n });\n });\n }\n\n private onOpen(): Promise<void> {\n return this.container.getAsync('router').then((router: RoutingService) => {\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'true')\n );\n return router.start();\n });\n }\n\n private onClose(): Promise<void> {\n const services = this.container.getManyAsync('router', 'components') as Promise<{\n router: RoutingService;\n components: ComponentPlatform;\n }>;\n\n const resetActivateProp = () => {\n return this.container.get('settings').then((widgetSettings: WidgetSettings) => {\n const { activate } = this.container.get('$settings');\n if (widgetSettings.activate !== activate) {\n return this.setSettings(() => Promise.resolve({ activate }));\n }\n return Promise.resolve();\n });\n };\n\n return resetActivateProp()\n .then(() => {\n return services;\n })\n .then(\n ({\n router,\n components,\n }: {\n router: RoutingService;\n components: ComponentPlatform;\n }) => {\n const visibleNodes = components.nodes.visible;\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'false')\n );\n\n if (\n visibleNodes.filter(\n (c) =>\n c.attributes.properties.animation &&\n c.attributes.properties.animation !== 'none'\n ).length\n ) {\n return new Promise<RoutingService>((resolve) => {\n setTimeout(() => {\n resolve(router);\n }, 200);\n });\n }\n\n return Promise.resolve(router);\n }\n )\n .then((router: RoutingService) => router.stop());\n }\n\n private setTriggerState(open: boolean) {\n this.outlets.forEach((outlet) => {\n const {\n options: { triggerDOMElement, triggerOptions },\n } = outlet;\n const { openTooltip, closedTooltip } = (triggerOptions as BadgeOptions) || {};\n if (triggerDOMElement) {\n open\n ? setActive(triggerDOMElement, openTooltip)\n : setInactive(triggerDOMElement, closedTooltip);\n }\n });\n }\n\n deactivate() {\n this.subs.forEach((s) => s());\n\n const promises: Promise<void>[] = [];\n this.outlets.forEach((outlet) => promises.push(outlet.dispose()));\n\n return readStorage<string>(\n this.container,\n STICKY_WIDGET_STORAGE_KEY,\n StorageMedium.Local\n ).then((value) => {\n /**\n * Remove stored sticky widget from implementation's localStorage if applicable\n */\n if (value === this.widget.name) {\n return createStorageWriter(\n this.container,\n STICKY_WIDGET_STORAGE_KEY,\n StorageCategory.Necessary,\n {\n medium: StorageMedium.Local,\n scope: StorageScope.Implementation,\n }\n )\n .then((write) => write())\n .then(() => Promise.all(promises));\n }\n return Promise.all(promises);\n });\n }\n}\n"],"names":["SlideDirection","determineSlideDirection","currentRouteName","nextRouteName","routeRanking","Switch","views","location","render","React","RouteSwitch","__spreadProps","__spreadValues","key","name","path","Route","Switch$1","StyledViewContainer","styled","StyledView","Grid","p","routeHierarchy","AnimatedView","_a","_b","className","other","__objRest","routeName","setRouteName","useState","transitionDirection","setTransitionDirection","nextRoute","useRouteData","router","useRouter","properties","useProperties","context","useContext","container","useContainer","node","useComponentNode","gap","columns","animation","scrollable","areaProperties","scrollableCss","elem","useScroll","renderView","transitionState","direction","animationStyles","getAnimation","childNode","appendClassNames","Component","transitionComposer","TransitionGroup","child","Transition","state","AnimatedView$1","View","View$1","styling","css","paddedBorderTabStyle","StyledAnimatedView","NonResolvedComponentWrapper","_c","ResolvableComponent","forwardRef","ref","children","ResolvedComponent","useComponent","type","id","useComponentDescriptor","StyledResolvableComponent","useMemo","filterCssPropsStyle","Typography","Suspense","ResolvableComponent$1","useComponentNodeProperties","components","useComponentPlatform","setProperties","isMounted","useIsMounted","useEffect","unsubscribe","event","data","isVisible","size","branch","ariaLabel","tabIndex","extraContext","descriptor","setDescriptor","useColumns","indent","useLayout","visible","componentNode","asDescriptor","unmount","cardinal","contextFonts","accessibility","restContext","fonts","theme","ThemeProvider","ComponentNodeContext","ComponentPropertyContext","props","cssProps","filterCssProps","Component$1","DetachedComponent","builder","setNode","createdNode","n","DetachedComponent$2","detachedComponent","NotFound","showSearch","themeContext","useTheme","settings","acc","searchComponentProps","searchNode","notFoundNode","NotFound$1","e","t","s","i","r","o","l","h","d","u","c","v","a","f","_","m","$","g","y","x","T","A","E","C","M","k","H","S","P","V","N","I","R","z","Requester","Base","RequesterClass","componentTagFromType","getWidth","WidgetComponent","LitElement","ComponentPlatform","values","platform","resolver","width","gridColumn","componentTag","create","result","value","nothing","tag","html","unsafeStatic","spread","__decorateClass","property","customElement","resolveComponent","nodeId","__async","error","renderSymbol","symbol","content","triggerTabHandler","triggerDOMElement","toggleTabbing","element","tabbing","handleKeydown","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","item","rules","ComponentQuery","createPlatform","localStorage","providers","destructComponentModel","createComponentModel","WidgetState","createRoutingService","RoutingService","HistoryMode","initialPath","mode","basePath","createStorageService","StorageProvider","createActionResolver","ActionResolver","createComponentResolver","ComponentResolver","createComponentPlatform","SETTINGS_STORAGE_KEY","OPEN_STORAGE_KEY","STICKY_WIDGET_STORAGE_KEY","Widget","WidgetType","activationData","activate","supportBootstrapping","promises","actionResolver","origin","action","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","resolve","open","StorageScope"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C as D, D as N, a as f, N as h, a as u, W as v, s as x, r as y } from "./index.8409f500.js";
1
+ import { C as D, D as N, a as f, N as h, a as u, W as v, s as x, r as y } from "./index.c6989014.js";
2
2
  import "@telia-ace/widget-ui";
3
3
  import "react";
4
4
  import "@emotion/react";
@@ -16,7 +16,7 @@ var p = (o, e, r) => new Promise((i, t) => {
16
16
  });
17
17
  import { ComponentPlatform as g } from "@telia-ace/widget-core";
18
18
  import { nothing as u, css as w, LitElement as y } from "lit";
19
- import { r as _, n as v, o as b, t as m, e as x } from "./index.8409f500.js";
19
+ import { r as _, n as v, o as b, t as m, e as x } from "./index.c6989014.js";
20
20
  import "@telia-ace/widget-ui";
21
21
  import "react";
22
22
  import "@emotion/react";
@@ -149,4 +149,4 @@ const G = (o, e, r) => {
149
149
  export {
150
150
  G as default
151
151
  };
152
- //# sourceMappingURL=render.fdecc0e9.js.map
152
+ //# sourceMappingURL=render.0c0b70f9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.fdecc0e9.js","sources":["../src/utils/get-widget.ts","../src/controllers/widget-controller.ts","../src/mixins/provider.ts","../src/ui/widget-root.ts","../src/ui/render.ts"],"sourcesContent":["// export const getWidget = (elem: HTMLElement) => {\n// const widgetEl = elem.closest('.humany-widget');\n// console.log('elem', widgetEl);\n\n// if (!widgetEl) {\n// return;\n// }\n\n// const widgetName = Array.from(widgetEl.classList).reduce<string | undefined>(\n// (acc, className) => {\n// if (className.indexOf('humany_') === 0) {\n// acc = className.replace('humany_', '');\n// }\n// return acc;\n// },\n// undefined\n// );\n\n// if (!widgetName) {\n// return;\n// }\n\n// const widget = (window as any).humany.widgets.find(widgetName);\n// return widget;\n// };\n\nexport const getWidget = (elem: HTMLElement): any => {\n const root = elem.getRootNode() as any;\n\n if (elem.getAttribute('widgetname')) {\n const widget = (window as any).humany.widgets.find(\n elem.getAttribute('widgetname')\n );\n\n return widget;\n } else if (elem.classList.contains('humany-widget')) {\n const widgetName = Array.from(elem.classList).reduce<string | undefined>(\n (acc, className) => {\n if (className.indexOf('humany_') === 0) {\n acc = className.replace('humany_', '');\n }\n return acc;\n },\n undefined\n );\n const widget = (window as any).humany.widgets.find(widgetName);\n\n return widget;\n }\n\n if (!root.host) {\n return null;\n }\n\n return getWidget(root.host);\n\n // const widgetEl = elem.closest('.humany-widget');\n // console.log('elem', widgetEl);\n\n // if (!widgetEl) {\n // return;\n // }\n\n // const widgetName = Array.from(widgetEl.classList).reduce<string | undefined>(\n // (acc, className) => {\n // if (className.indexOf('humany_') === 0) {\n // acc = className.replace('humany_', '');\n // }\n // return acc;\n // },\n // undefined\n // );\n\n // if (!widgetName) {\n // return;\n // }\n\n // const widget = (window as any).humany.widgets.find(widgetName);\n // return widget;\n};\n","import { Widget } from '@webprovisions/platform';\nimport { getWidget } from '../utils/get-widget';\n\nexport class WidgetController {\n host: any;\n widget: Widget | undefined;\n\n constructor(host: any) {\n (this.host = host).addController(this);\n }\n\n hostConnected() {\n this.widget = getWidget(this.host);\n }\n}\n","import { LitElement } from 'lit';\n\nexport declare class ProviderInterface {\n provideInstance(key: string, instance: any): void;\n}\n\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nexport const Provider = <T extends Constructor<LitElement>>(Base: T) => {\n class ProviderClass extends Base {\n _instances = new Map();\n\n constructor(...args: any[]) {\n super();\n\n this.addEventListener('request-instance', (event: any) => {\n const key = event.detail.key;\n console.log('listener fired');\n\n if (this._instances.has(key)) {\n event.detail.instance = this._instances.get(key);\n event.stopPropagation();\n }\n });\n }\n\n provideInstance(key: string, instance: any) {\n console.log('providing instance', key, instance);\n this._instances.set(key, instance);\n }\n }\n\n return ProviderClass as Constructor<ProviderInterface> & T;\n};\n","import { ComponentPlatform, ComponentResolver } from '@telia-ace/widget-core';\nimport { EventSubscriptionCancellation } from '@webprovisions/platform';\nimport { css, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { html, unsafeStatic } from 'lit/static-html.js';\nimport { WidgetController } from '../controllers/widget-controller';\nimport { Provider } from '../mixins/provider';\nimport { resolveComponent } from '../utils/resolve-component';\n// import {\n// GuideList,\n// Paragraph,\n// ItemList,\n// List,\n// SymbolBadge,\n// Text,\n// Html,\n// Button,\n// Typography,\n// TextLink,\n// } from 'ui'; // TODO: this is not how we want to register the ui elements\n\n// @customElement('widget-root')\nexport class WidgetRoot extends Provider(LitElement) {\n controller = new WidgetController(this);\n platform: ComponentPlatform | undefined;\n unsubscribe: EventSubscriptionCancellation | undefined;\n\n static styles = [\n css`\n :host {\n --gap: 0;\n --fonts-type: 'Lato';\n --fonts-small: 0.9em;\n --fonts-normal: 1em;\n --fonts-medium: 1.1em;\n --fonts-huge: 1.4em;\n --fonts-large: 1.1em;\n --colors-accent: #fafafa;\n --colors-link: #990ae3;\n --colors-primary: #990ae3;\n --colors-text: #333333;\n --colors-textLight: #767676;\n --colors-warning: #cc0000;\n --accessibility-border: 2px dashed #990ae3;\n --accessibility-colors-inactiveText: #990ae3;\n --accessibility-colors-activeText: #ffffff;\n --inputBorder: 1px solid #000000;\n --border: 1px solid #000000;\n --borderRadius: 5px;\n --boxShadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n --cardinal: 3px;\n --size-small: var(--cardinal);\n --size-normal: calc(var(--cardinal) * 3);\n --size-medium: calc(var(--cardinal) * 5);\n --size-large: calc(var(--cardinal) * 8);\n --size-huge: calc(var(--cardinal) * 12);\n\n --typography-h1: h2;\n }\n `,\n ];\n\n @state()\n declare _entry: string | null;\n @property()\n declare widgetName: string;\n\n @state()\n declare _child: { tag: string; nodeId: string } | null;\n\n constructor() {\n super();\n this._child = null;\n this._entry = null;\n // this._installRoutes();\n }\n\n // _installRoutes() {\n // page('/browse', this._browseRoute);\n // page('*', this._notFoundRoute);\n // page();\n // }\n\n // _browseRoute() {\n // console.log('browse route');\n // }\n\n // _notFoundRoute() {\n // console.log('not found route');\n // }\n\n connectedCallback() {\n super.connectedCallback();\n\n if (this.controller.widget) {\n this.provideInstance('container', this.controller.widget.container);\n\n Promise.all([\n ComponentPlatform.getInstance(this.controller.widget.container),\n this.controller.widget.container.getAsync('componentResolver'),\n ]).then(async (values) => {\n this.platform = values[0];\n const resolver: ComponentResolver = values[1];\n\n this.unsubscribe = this.platform.events.subscribe(\n 'components:root-children-changed',\n (event: any, { node }: any) => {\n if (node.parent && node.parent.type === 'root') {\n this._entry = node.parent.children.default[0].id;\n }\n }\n );\n\n this._entry = this.platform.nodes.root.children.default[0].id || null;\n\n if (!this._entry) {\n console.warn('Could not get node ID for entry node on the ComponentPlatform.');\n return;\n }\n\n this._child =\n (await resolveComponent(this._entry, resolver, this.platform)) || null;\n });\n }\n }\n\n render() {\n // return html`<div>WidgetRootx</div>`;\n if (!this._child) {\n return nothing;\n }\n\n return html` <${unsafeStatic(this._child.tag)} nodeId=${this._child.nodeId} /> `;\n }\n}\n","import { Container } from '@webprovisions/platform';\nimport './widget-component';\nimport { WidgetRoot } from './widget-root';\n\ncustomElements.define('widget-root', WidgetRoot);\n\nexport default (widgetName: string, container: Container, element: HTMLElement) => {\n const root = document.createElement('widget-root');\n root.setAttribute('widgetName', widgetName);\n element.appendChild(root);\n};\n"],"names":["getWidget","elem","root","widgetName","acc","className","WidgetController","host","Provider","Base","ProviderClass","args","event","key","instance","WidgetRoot","LitElement","ComponentPlatform","values","__async","resolver","node","resolveComponent","html","unsafeStatic","nothing","css","__decorateClass","state","property","render","container","element"],"mappings":"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"}
1
+ {"version":3,"file":"render.0c0b70f9.js","sources":["../src/utils/get-widget.ts","../src/controllers/widget-controller.ts","../src/mixins/provider.ts","../src/ui/widget-root.ts","../src/ui/render.ts"],"sourcesContent":["// export const getWidget = (elem: HTMLElement) => {\n// const widgetEl = elem.closest('.humany-widget');\n// console.log('elem', widgetEl);\n\n// if (!widgetEl) {\n// return;\n// }\n\n// const widgetName = Array.from(widgetEl.classList).reduce<string | undefined>(\n// (acc, className) => {\n// if (className.indexOf('humany_') === 0) {\n// acc = className.replace('humany_', '');\n// }\n// return acc;\n// },\n// undefined\n// );\n\n// if (!widgetName) {\n// return;\n// }\n\n// const widget = (window as any).humany.widgets.find(widgetName);\n// return widget;\n// };\n\nexport const getWidget = (elem: HTMLElement): any => {\n const root = elem.getRootNode() as any;\n\n if (elem.getAttribute('widgetname')) {\n const widget = (window as any).humany.widgets.find(\n elem.getAttribute('widgetname')\n );\n\n return widget;\n } else if (elem.classList.contains('humany-widget')) {\n const widgetName = Array.from(elem.classList).reduce<string | undefined>(\n (acc, className) => {\n if (className.indexOf('humany_') === 0) {\n acc = className.replace('humany_', '');\n }\n return acc;\n },\n undefined\n );\n const widget = (window as any).humany.widgets.find(widgetName);\n\n return widget;\n }\n\n if (!root.host) {\n return null;\n }\n\n return getWidget(root.host);\n\n // const widgetEl = elem.closest('.humany-widget');\n // console.log('elem', widgetEl);\n\n // if (!widgetEl) {\n // return;\n // }\n\n // const widgetName = Array.from(widgetEl.classList).reduce<string | undefined>(\n // (acc, className) => {\n // if (className.indexOf('humany_') === 0) {\n // acc = className.replace('humany_', '');\n // }\n // return acc;\n // },\n // undefined\n // );\n\n // if (!widgetName) {\n // return;\n // }\n\n // const widget = (window as any).humany.widgets.find(widgetName);\n // return widget;\n};\n","import { Widget } from '@webprovisions/platform';\nimport { getWidget } from '../utils/get-widget';\n\nexport class WidgetController {\n host: any;\n widget: Widget | undefined;\n\n constructor(host: any) {\n (this.host = host).addController(this);\n }\n\n hostConnected() {\n this.widget = getWidget(this.host);\n }\n}\n","import { LitElement } from 'lit';\n\nexport declare class ProviderInterface {\n provideInstance(key: string, instance: any): void;\n}\n\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nexport const Provider = <T extends Constructor<LitElement>>(Base: T) => {\n class ProviderClass extends Base {\n _instances = new Map();\n\n constructor(...args: any[]) {\n super();\n\n this.addEventListener('request-instance', (event: any) => {\n const key = event.detail.key;\n console.log('listener fired');\n\n if (this._instances.has(key)) {\n event.detail.instance = this._instances.get(key);\n event.stopPropagation();\n }\n });\n }\n\n provideInstance(key: string, instance: any) {\n console.log('providing instance', key, instance);\n this._instances.set(key, instance);\n }\n }\n\n return ProviderClass as Constructor<ProviderInterface> & T;\n};\n","import { ComponentPlatform, ComponentResolver } from '@telia-ace/widget-core';\nimport { EventSubscriptionCancellation } from '@webprovisions/platform';\nimport { css, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { html, unsafeStatic } from 'lit/static-html.js';\nimport { WidgetController } from '../controllers/widget-controller';\nimport { Provider } from '../mixins/provider';\nimport { resolveComponent } from '../utils/resolve-component';\n// import {\n// GuideList,\n// Paragraph,\n// ItemList,\n// List,\n// SymbolBadge,\n// Text,\n// Html,\n// Button,\n// Typography,\n// TextLink,\n// } from 'ui'; // TODO: this is not how we want to register the ui elements\n\n// @customElement('widget-root')\nexport class WidgetRoot extends Provider(LitElement) {\n controller = new WidgetController(this);\n platform: ComponentPlatform | undefined;\n unsubscribe: EventSubscriptionCancellation | undefined;\n\n static styles = [\n css`\n :host {\n --gap: 0;\n --fonts-type: 'Lato';\n --fonts-small: 0.9em;\n --fonts-normal: 1em;\n --fonts-medium: 1.1em;\n --fonts-huge: 1.4em;\n --fonts-large: 1.1em;\n --colors-accent: #fafafa;\n --colors-link: #990ae3;\n --colors-primary: #990ae3;\n --colors-text: #333333;\n --colors-textLight: #767676;\n --colors-warning: #cc0000;\n --accessibility-border: 2px dashed #990ae3;\n --accessibility-colors-inactiveText: #990ae3;\n --accessibility-colors-activeText: #ffffff;\n --inputBorder: 1px solid #000000;\n --border: 1px solid #000000;\n --borderRadius: 5px;\n --boxShadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n --cardinal: 3px;\n --size-small: var(--cardinal);\n --size-normal: calc(var(--cardinal) * 3);\n --size-medium: calc(var(--cardinal) * 5);\n --size-large: calc(var(--cardinal) * 8);\n --size-huge: calc(var(--cardinal) * 12);\n\n --typography-h1: h2;\n }\n `,\n ];\n\n @state()\n declare _entry: string | null;\n @property()\n declare widgetName: string;\n\n @state()\n declare _child: { tag: string; nodeId: string } | null;\n\n constructor() {\n super();\n this._child = null;\n this._entry = null;\n // this._installRoutes();\n }\n\n // _installRoutes() {\n // page('/browse', this._browseRoute);\n // page('*', this._notFoundRoute);\n // page();\n // }\n\n // _browseRoute() {\n // console.log('browse route');\n // }\n\n // _notFoundRoute() {\n // console.log('not found route');\n // }\n\n connectedCallback() {\n super.connectedCallback();\n\n if (this.controller.widget) {\n this.provideInstance('container', this.controller.widget.container);\n\n Promise.all([\n ComponentPlatform.getInstance(this.controller.widget.container),\n this.controller.widget.container.getAsync('componentResolver'),\n ]).then(async (values) => {\n this.platform = values[0];\n const resolver: ComponentResolver = values[1];\n\n this.unsubscribe = this.platform.events.subscribe(\n 'components:root-children-changed',\n (event: any, { node }: any) => {\n if (node.parent && node.parent.type === 'root') {\n this._entry = node.parent.children.default[0].id;\n }\n }\n );\n\n this._entry = this.platform.nodes.root.children.default[0].id || null;\n\n if (!this._entry) {\n console.warn('Could not get node ID for entry node on the ComponentPlatform.');\n return;\n }\n\n this._child =\n (await resolveComponent(this._entry, resolver, this.platform)) || null;\n });\n }\n }\n\n render() {\n if (!this._child) {\n return nothing;\n }\n\n return html` <${unsafeStatic(this._child.tag)} nodeId=${this._child.nodeId} /> `;\n }\n}\n","import { Container } from '@webprovisions/platform';\nimport './widget-component';\nimport { WidgetRoot } from './widget-root';\n\ncustomElements.define('widget-root', WidgetRoot);\n\nexport default (widgetName: string, container: Container, element: HTMLElement) => {\n const root = document.createElement('widget-root');\n root.setAttribute('widgetName', widgetName);\n element.appendChild(root);\n};\n"],"names":["getWidget","elem","root","widgetName","acc","className","WidgetController","host","Provider","Base","ProviderClass","args","event","key","instance","WidgetRoot","LitElement","ComponentPlatform","values","__async","resolver","node","resolveComponent","html","unsafeStatic","nothing","css","__decorateClass","state","property","render","container","element"],"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.30-experimental.6",
3
+ "version": "1.0.30-experimental.8",
4
4
  "description": "Type definition for Grid widget.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
@@ -23,12 +23,12 @@
23
23
  "dependencies": {
24
24
  "@open-wc/dedupe-mixin": "^1.3.1",
25
25
  "@open-wc/lit-helpers": "^0.5.1",
26
- "@telia-ace/widget-core": "1.0.21-experimental.6",
27
- "@telia-ace/widget-forms": "1.0.28-experimental.6",
28
- "@telia-ace/widget-routing": "1.0.22-experimental.6",
29
- "@telia-ace/widget-services": "1.0.21-experimental.6",
30
- "@telia-ace/widget-ui": "1.0.28-experimental.6",
31
- "@telia-ace/widget-utilities": "1.0.10-experimental.6",
26
+ "@telia-ace/widget-core": "1.0.21-experimental.8",
27
+ "@telia-ace/widget-forms": "1.0.28-experimental.8",
28
+ "@telia-ace/widget-routing": "1.0.22-experimental.8",
29
+ "@telia-ace/widget-services": "1.0.21-experimental.8",
30
+ "@telia-ace/widget-ui": "1.0.28-experimental.8",
31
+ "@telia-ace/widget-utilities": "1.0.10-experimental.8",
32
32
  "@webprovisions/bootstrapping": "^1.0.12",
33
33
  "@webprovisions/platform": "^1.1.2",
34
34
  "lit": "^2.6.0",
@@ -48,7 +48,7 @@
48
48
  "@emotion/cache": "^11.10.5",
49
49
  "@emotion/react": "^11.10.5",
50
50
  "@emotion/styled": "^11.10.5",
51
- "@telia-ace/widget-developer-tools": "1.0.16-experimental.6",
51
+ "@telia-ace/widget-developer-tools": "1.0.16-experimental.8",
52
52
  "@types/react": "^18.0.26",
53
53
  "@types/react-dom": "^18.0.10",
54
54
  "@types/react-router": "^5.1.20",