@telia-ace/widget-types-grid 1.0.30-experimental.0 → 1.0.30-experimental.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/ui/determine-slide-direction.ts","../src/ui/switch.tsx","../src/ui/animated-view.tsx","../src/ui/view.tsx","../src/ui/styles.ts","../src/ui/resolvable-component.tsx","../src/ui/use-component-node-properties.ts","../src/ui/component.tsx","../src/ui/detached-component.tsx","../src/ui/not-found.tsx","../src/ui/html-element-handlers.ts","../src/ui/prepare-dom.ts","../src/ui/view-outlet.ts","../src/component-platform-factory.ts","../src/services.ts","../src/widget.ts"],"sourcesContent":["export enum SlideDirection {\n back = 'back',\n forth = 'forth',\n}\n\nexport interface RouteStructure {\n name: string;\n children: RouteStructure[];\n}\n\n/**\n * Recursively find the parents of a nested route\n * @param routeName Name of route to find\n * @param routes Routes to look in\n * @param trail Trail of parents\n * @param level Level of the array currently looking in\n */\nexport const findParentRoutes = (\n routeName: string,\n routes: RouteStructure[],\n trail: string[] = [],\n level: number = 0\n): string[] | null => {\n let found: any = null;\n\n routes.forEach((route, index) => {\n if (!found) {\n if (route.name === routeName) {\n found = route;\n } else {\n trail[level] = route.name;\n found = findParentRoutes(routeName, route.children, trail, level + 1);\n }\n }\n });\n\n if (!found) {\n return null;\n }\n\n return trail;\n};\n\n/**\n * Determine if the sliding animation should back or forth\n * @param currentRouteName Name of current route\n * @param nextRouteName Name of route to transition to\n * @param routeRanking Hierarchical route ranking for the widget\n */\nexport const determineSlideDirection = (\n currentRouteName: string,\n nextRouteName: string,\n routeRanking: RouteRanking\n): SlideDirection => {\n if (\n typeof routeRanking[currentRouteName] === 'number' &&\n typeof routeRanking[nextRouteName] === 'number' &&\n routeRanking[currentRouteName] > routeRanking[nextRouteName]\n ) {\n return SlideDirection.back;\n }\n return SlideDirection.forth;\n};\n\nexport type RouteRanking = { [key: string]: number };\n","import { ViewDefinition } from '@telia-ace/widget-core';\nimport React from 'react';\nimport { Route, Switch as RouteSwitch } from 'react-router';\n\ntype Props = {\n location?: any;\n views: { [key: string]: ViewDefinition };\n render: (viewName: string) => JSX.Element | null;\n};\n\nconst Switch: React.FC<Props> = ({ views, location, render }) => {\n return (\n <RouteSwitch\n location={\n location\n ? {\n ...location,\n pathname: location.pathname.split('?')[0],\n }\n : location\n }\n >\n {[\n ...Object.keys(views).filter((key) => !!views[key].path),\n ...Object.keys(views).filter((key) => !views[key].path),\n ].map((name) => {\n const { path } = views[name];\n\n if (!path) {\n return <Route key={name} render={() => render(name)} />;\n }\n\n if (Array.isArray(path)) {\n return path.map((path: string) => (\n <Route key={name} exact path={path} render={() => render(name)} />\n ));\n }\n return <Route key={name} exact path={path} render={() => render(name)} />;\n })}\n </RouteSwitch>\n );\n};\n\nexport default Switch;\n","import styled from '@emotion/styled';\nimport { WidgetSettings } from '@telia-ace/widget-core';\nimport {\n Grid,\n transitionComposer,\n useComponentNode,\n useContainer,\n useContext,\n useProperties,\n useRouteData,\n useRouter,\n useScroll,\n} from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { useState } from 'react';\nimport { Transition, TransitionGroup } from 'react-transition-group';\nimport { TransitionStatus } from 'react-transition-group/Transition';\nimport Component from './component';\nimport { determineSlideDirection, RouteRanking, SlideDirection } from './determine-slide-direction';\nimport Switch from './switch';\n\ntype Props = {\n className?: string;\n};\n\nconst StyledViewContainer = styled.div`\n position: relative;\n width: 100%;\n flex: 1;\n`;\n\nconst StyledView = styled(Grid)<{ scrollableCss?: any; animationCss?: any }>`\n position: absolute;\n left: 0;\n right: 0;\n ${(p) => !!p.animationCss && p.animationCss}\n ${(p) => !!p.scrollableCss && p.scrollableCss}\n`;\n\nconst routeHierarchy: RouteRanking = {\n index: 1,\n search: 2,\n browse: 3,\n guide: 4,\n contact: 5,\n 'contact-method': 6,\n conversation: 7,\n};\n\nconst AnimatedView: React.FC<Props> = ({ className = '', ...other }) => {\n const [routeName, setRouteName] = useState('index');\n const [transitionDirection, setTransitionDirection] = useState(SlideDirection.forth);\n const nextRoute = useRouteData();\n const router = useRouter();\n\n const properties = useProperties();\n const context = useContext();\n const container = useContainer();\n const node = useComponentNode();\n\n const { gap = '0' } = context;\n const { columns = 1, animation = 'none', scrollable = false, ...areaProperties } = properties;\n\n const [scrollableCss, elem] = useScroll(scrollable);\n\n if (!node || !router) {\n return null;\n }\n\n const { location } = router;\n\n if (nextRoute.name !== routeName && nextRoute.name !== '' && animation) {\n setTransitionDirection(determineSlideDirection(routeName, nextRoute.name, routeHierarchy));\n setRouteName(nextRoute.name);\n }\n\n const { views }: WidgetSettings = container.get('$settings');\n\n if (!Object.keys(views).length) {\n return null;\n }\n\n const renderView = (name: string, transitionState?: any, direction?: SlideDirection) => {\n const animationStyles = getAnimation(transitionState, direction);\n const childNode = node.getChildren(name)[0];\n\n return (\n <StyledView\n {...other}\n {...areaProperties}\n scrollableCss={scrollableCss}\n ref={elem}\n columns={columns}\n gap={gap}\n {...animationStyles}\n className={appendClassNames(className, 'humany-view')}\n >\n <Component id={childNode.id} branch=\"default\" />\n </StyledView>\n );\n };\n\n const getAnimation = (transitionState?: any, direction?: SlideDirection) => {\n if (animation === 'slide' || animation === 'fade') {\n return {\n animationCss: transitionComposer.composeViewTransition(\n transitionState,\n animation,\n direction\n ),\n ['data-state']: transitionState,\n };\n }\n return;\n };\n\n return (\n <StyledViewContainer className=\"humany-animated-view\">\n <TransitionGroup\n component={null}\n childFactory={(child) =>\n React.cloneElement(child, { direction: transitionDirection })\n }\n >\n <Transition\n key={routeName}\n timeout={{ enter: 500, exit: 500 }}\n onEnter={(node: HTMLElement) => node?.clientHeight}\n unmountOnExit={true}\n direction={SlideDirection.forth}\n >\n {/* @ts-ignore */}\n {(state: TransitionStatus, { direction }: { direction: SlideDirection }) => (\n <Switch\n views={views}\n location={location}\n render={(name) => renderView(name, state, direction)}\n />\n )}\n </Transition>\n </TransitionGroup>\n </StyledViewContainer>\n );\n};\n\nexport default AnimatedView;\n","import styled from '@emotion/styled';\nimport { WidgetSettings } from '@telia-ace/widget-core';\nimport {\n Grid,\n useComponentNode,\n useContainer,\n useContext,\n useProperties,\n useScroll,\n} from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport Component from './component';\nimport Switch from './switch';\n\ntype Props = {\n className?: string;\n};\n\nconst StyledView = styled(Grid)<{ scrollableCss?: string }>`\n ${(p) => !!p.scrollableCss && p.scrollableCss}\n`;\n\nconst View: React.FC<Props> = ({ className = '', ...other }) => {\n const properties = useProperties();\n const context = useContext();\n const container = useContainer();\n const node = useComponentNode();\n\n const { views }: WidgetSettings = container.get('$settings');\n\n const { gap = '0' } = context;\n const { columns = 1, animation = 'none', scrollable = false, ...areaProperties } = properties;\n\n const [scrollableCss, elem] = useScroll(scrollable);\n\n if (!node) {\n return null;\n }\n\n return (\n <StyledView\n {...other}\n {...areaProperties}\n scrollableCss={scrollableCss}\n ref={elem}\n columns={columns}\n gap={gap}\n className={appendClassNames(className, 'humany-view')}\n >\n <Switch\n views={views}\n render={(name) => {\n const childNode = node.getChildren(name)[0];\n return <Component id={childNode.id} node={childNode} branch=\"default\" />;\n }}\n />\n </StyledView>\n );\n};\n\nexport default View;\n","import { css, Theme } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { paddedBorderTabStyle } from '@telia-ace/widget-ui';\nimport AnimatedView from './animated-view';\nimport View from './view';\n\nexport const styling = (p: { 'data-width'?: number; 'data-indent'?: number; theme: Theme }) => css`\n outline: none;\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n outline: none;\n }\n\n grid-column: ${p['data-indent']\n ? `${p['data-indent'] + 1} / ${p['data-indent'] + (p['data-width'] || 0) + 1}`\n : `span ${p['data-width']}`};\n\n ${p.theme.fonts?.type &&\n `\n font-family: ${p.theme.fonts.type};\n\n input, textarea {\n font-family: ${p.theme.fonts.type};\n }\n `}\n\n ${p.theme.fonts?.base &&\n `\n font-size: ${p.theme.fonts.base};\n `}\n\n &:focus-visible {\n ${paddedBorderTabStyle(p)};\n }\n`;\n\nexport const StyledView = styled(View)`\n ${(p) => styling(p)}\n`;\n\nexport const StyledAnimatedView = styled(AnimatedView)`\n ${(p) => styling(p)}\n`;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n filterCssPropsStyle,\n Typography,\n useComponent,\n useComponentDescriptor,\n} from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef, Suspense, useMemo } from 'react';\nimport { styling } from './styles';\n\ntype Props = {\n role?: string;\n 'data-width': number;\n 'data-indent': number;\n className?: string;\n children?: React.ReactNode;\n};\n\nconst NonResolvedComponentWrapper = styled.div<Props>`\n text-align: center;\n ${(p) =>\n typeof p.theme.colors?.warning !== 'undefined' &&\n css`\n color: ${p.theme.colors?.warning};\n border: 2px dashed ${p.theme.colors?.warning};\n `}\n ${(p) =>\n typeof p.theme.borderRadius !== 'undefined' && `border-radius: ${p.theme.borderRadius};`}\n ${(p) => styling(p)}\n`;\n\nconst ResolvableComponent = forwardRef<HTMLElement, Props>(\n ({ className = '', children, ...other }, ref) => {\n const ResolvedComponent = useComponent();\n const { name, type, id } = useComponentDescriptor();\n\n const StyledResolvableComponent = useMemo(() => {\n if (ResolvedComponent) {\n return styled(ResolvedComponent)<any>`\n ${styling}\n ${filterCssPropsStyle}\n `;\n }\n return null;\n }, [ResolvedComponent]);\n\n if (typeof ResolvedComponent === 'undefined') {\n return null;\n }\n\n if (ResolvedComponent === null || StyledResolvableComponent === null) {\n if (process.env.NODE_ENV !== 'production') {\n return (\n <NonResolvedComponentWrapper\n {...other}\n title={`type: ${type}, definition-id: ${name}, instance-id: ${id}`}\n className={appendClassNames(className, 'humany-non-resolved-component')}\n >\n <Typography variant=\"h5\">Non Resolved Component Type</Typography>\n </NonResolvedComponentWrapper>\n );\n }\n return null;\n }\n\n return (\n <Suspense fallback={null}>\n <StyledResolvableComponent\n ref={ref}\n {...other}\n className={appendClassNames(\n className,\n 'humany-component',\n `humany-component-${name}`\n )}\n >\n {children}\n </StyledResolvableComponent>\n </Suspense>\n );\n }\n);\n\nexport default ResolvableComponent;\n","import { ComponentNodeProperties } from '@telia-ace/widget-core';\nimport { useComponentNode, useComponentPlatform, useIsMounted } from '@telia-ace/widget-ui';\nimport { useEffect, useState } from 'react';\n\nexport default (id: string) => {\n const node = useComponentNode(id);\n const components = useComponentPlatform();\n const [properties, setProperties] = useState<ComponentNodeProperties>({});\n const isMounted = useIsMounted();\n\n useEffect(() => {\n if (node && isMounted.current) {\n setProperties(node.attributes.properties);\n }\n }, [node, id, isMounted]);\n\n useEffect(() => {\n if (components) {\n const unsubscribe = components.events.subscribe(\n 'components:properties-changed',\n (event, data) => {\n if (node === data.node && isMounted.current) {\n setProperties(data.node.attributes.properties);\n }\n }\n );\n\n return () => {\n unsubscribe();\n };\n }\n }, [components, isMounted, id, node]);\n\n return properties;\n};\n","import { Theme, ThemeProvider } from '@emotion/react';\nimport { asDescriptor, ComponentDescriptor, ComponentNode, Size } from '@telia-ace/widget-core';\nimport {\n ComponentNodeContext,\n ComponentPropertyContext,\n filterCssProps,\n useColumns,\n useComponentPlatform,\n useContainer,\n useContext,\n useLayout,\n} from '@telia-ace/widget-ui';\nimport React, { forwardRef, useEffect, useState } from 'react';\nimport ResolvableComponent from './resolvable-component';\nimport { StyledAnimatedView, StyledView } from './styles';\nimport useComponentNodeProperties from './use-component-node-properties';\n\ntype Props = {\n className?: string;\n id: string;\n branch: string;\n node?: ComponentNode;\n ariaLabel?: string;\n tabIndex?: number;\n context?: { [key: string]: any };\n};\n\nconst isVisible = (size: Size, node?: ComponentNode) => {\n if (node) {\n return true;\n }\n if (typeof size === 'string') {\n return size === 'full';\n }\n return size > 0;\n};\n\nconst Component = forwardRef<HTMLElement, Props>(\n (\n { className = '', id, branch, node, ariaLabel, tabIndex, context: extraContext, ...other },\n ref\n ) => {\n const components = useComponentPlatform();\n const container = useContainer();\n const [descriptor, setDescriptor] = useState<ComponentDescriptor>();\n\n const columns = useColumns();\n const context = useContext(id);\n const properties = useComponentNodeProperties(id);\n const { size = 'none', indent = 0 } = useLayout(id);\n const visible = isVisible(size, node);\n\n useEffect(() => {\n if (components) {\n if (id && !node) {\n const componentNode = components.nodes.get(id);\n if (componentNode) {\n setDescriptor(asDescriptor(componentNode, branch));\n\n if (visible) {\n const unmount = componentNode.mount(container);\n return () => {\n unmount();\n };\n }\n }\n } else if (node) {\n setDescriptor(asDescriptor(node, branch));\n const unmount = node.mount(container);\n return () => {\n unmount();\n };\n }\n }\n }, [components, id, node, visible]);\n\n if (!descriptor || !visible) {\n return null;\n }\n\n const mergedContexts = { ...context, ...(extraContext || {}) };\n const {\n cardinal,\n fonts: contextFonts = {},\n accessibility = {},\n ...restContext\n } = mergedContexts;\n\n const fonts = {\n type: contextFonts.type,\n base: contextFonts.base || '16px',\n small: contextFonts.small || '0.8em',\n normal: contextFonts.normal || '1em',\n medium: contextFonts.medium || '1.2em',\n large: contextFonts.large || '1.6em',\n huge: contextFonts.huge || '2.5em',\n };\n\n const theme: Theme = {\n ...restContext,\n fonts,\n accessibility: {\n ...accessibility,\n },\n };\n\n if (typeof cardinal === 'number') {\n theme.sizes = {\n cardinal,\n small: `${cardinal}px`,\n normal: `${cardinal * 3}px`,\n medium: `${cardinal * 5}px`,\n large: `${cardinal * 8}px`,\n };\n }\n\n return (\n <ThemeProvider theme={theme}>\n <ComponentNodeContext.Provider value={descriptor}>\n <ComponentPropertyContext.Provider value={properties}>\n {(() => {\n const props = {\n 'data-width':\n size === 'full' ? columns : Math.min(size as number, columns),\n 'data-indent': indent,\n 'data-name': descriptor.name,\n 'data-node-id': descriptor.id,\n 'data-component-type': descriptor.type,\n 'aria-label': ariaLabel,\n tabIndex: tabIndex,\n id: descriptor.id,\n role: properties && properties.role,\n ...other,\n };\n switch (descriptor.type) {\n case 'view': {\n return typeof properties.animation === 'string' &&\n properties.animation !== 'none' ? (\n <StyledAnimatedView {...props} className={className} />\n ) : (\n <StyledView {...props} className={className} />\n );\n }\n default: {\n const cssProps = filterCssProps(properties);\n\n return (\n <ResolvableComponent\n ref={ref}\n {...props}\n {...cssProps}\n className={className}\n />\n );\n }\n }\n })()}\n </ComponentPropertyContext.Provider>\n </ComponentNodeContext.Provider>\n </ThemeProvider>\n );\n }\n);\n\nexport default Component;\n","import { ComponentNode, ComponentPlatform } from '@telia-ace/widget-core';\nimport { useContainer } from '@telia-ace/widget-ui';\nimport React, { useEffect, useState } from 'react';\nimport Component from './component';\n\ntype Props = {\n builder: (components: ComponentPlatform) => Promise<ComponentNode>;\n};\nconst DetachedComponent: React.FC<Props> = ({ builder }) => {\n const container = useContainer();\n const [node, setNode] = useState<ComponentNode | null>(null);\n\n useEffect(() => {\n container.getAsync('components').then((components: ComponentPlatform) => {\n return builder(components).then((createdNode) => {\n setNode(createdNode);\n });\n });\n }, []);\n\n useEffect(() => {\n return () => {\n if (node) {\n container.getAsync('components').then((components: ComponentPlatform) => {\n components.nodes.detached = components.nodes.detached.filter(\n (n) => n.id !== node.id\n );\n });\n }\n };\n }, [node]);\n\n if (!node) {\n return null;\n }\n\n return <Component id={node.id} node={node} branch=\"default\" />;\n};\n\nexport default DetachedComponent;\n","import { useTheme } from '@emotion/react';\nimport { ComponentPlatform } from '@telia-ace/widget-core';\nimport { useContainer } from '@telia-ace/widget-ui';\nimport React from 'react';\n\nconst DetachedComponent = React.lazy(() => import('./detached-component'));\n\ntype Props = {\n showSearch?: boolean;\n};\nconst NotFound: React.FC<Props> = ({ showSearch = false }) => {\n const themeContext = useTheme();\n const container = useContainer();\n\n return (\n <React.Suspense fallback={null}>\n <DetachedComponent\n builder={(components: ComponentPlatform) => {\n return container.get('settings').then((settings: any) => {\n const { properties, context } = Object.keys(settings.components).reduce<{\n properties: any;\n context: any;\n }>(\n (acc, key) => {\n if (settings.components[key].type === 'not-found') {\n acc.properties = settings.components[key].properties;\n acc.context = settings.components[key].context;\n }\n\n return acc;\n },\n { properties: {}, context: {} }\n );\n\n properties.showSearch = showSearch;\n const node = components.createNode('area', { detached: true });\n node.name = 'not-found-area';\n node.writeLayout({\n size: 'full',\n });\n\n if (showSearch) {\n const searchComponentProps = Object.keys(settings.components).reduce(\n (acc, key) => {\n if (settings.components[key].type === 'search') {\n return settings.components[key].properties;\n }\n\n return acc;\n },\n {}\n );\n const searchNode = components.createNode('search', { detached: true });\n searchNode.writeLayout({ size: 'full' });\n searchNode.writeProperties({\n 'css-margin-bottom': themeContext?.sizes?.normal || '15px',\n ...searchComponentProps,\n });\n node.appendChild(searchNode);\n }\n\n const notFoundNode = components.createNode('not-found', { detached: true });\n notFoundNode.writeLayout({ size: 'full' });\n notFoundNode.writeProperties(properties);\n notFoundNode.writeContext(context);\n node.appendChild(notFoundNode);\n\n return node;\n });\n }}\n />\n </React.Suspense>\n );\n};\n\nexport default NotFound;\n","// tslint:disable max-line-length\nexport const renderSymbol = (symbol?: { type: string; content: string }) => {\n if (symbol) {\n const { type, content } = symbol;\n switch (type) {\n case 'FontAwesome':\n return `<i class=\"humany-icon fa fa-${content}\"></i>`;\n case 'Uri':\n return `<i class=\"humany-icon humany-custom-icon\" style=\"background: url(${content}) no-repeat center center;background-size: contain;\"></i>`;\n default:\n return '';\n }\n }\n};\n\nconst triggerTabHandler = (triggerDOMElement: HTMLElement) => {\n const toggleTabbing = (element: HTMLElement, tabbing: boolean) => {\n if (!element) {\n return;\n }\n\n if (tabbing) {\n element.classList.add('humany-tabbing');\n } else {\n element.classList.remove('humany-tabbing');\n }\n };\n\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Tab') {\n toggleTabbing(triggerDOMElement, true);\n } else if (\n !(\n e.key === 'Enter' &&\n document.activeElement &&\n document.activeElement.classList.contains('humany-trigger')\n )\n ) {\n toggleTabbing(triggerDOMElement, false);\n }\n };\n\n const handleClick = (e: MouseEvent) => {\n if (\n document.activeElement &&\n document.activeElement.classList.contains('humany-trigger') &&\n document.activeElement.classList.contains('humany-tabbing')\n ) {\n return;\n }\n toggleTabbing(triggerDOMElement, false);\n };\n\n document.addEventListener('keydown', handleKeydown);\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('keydown', handleKeydown);\n document.removeEventListener('click', handleClick);\n };\n};\n\nexport type TriggerElementOptions = {\n symbol?: { type: string; content: string };\n widgetName: string;\n label?: string;\n ariaLabel?: string;\n tooltip?: string;\n};\n\nexport function createTriggerElement(element: HTMLElement, options: TriggerElementOptions) {\n const { symbol, widgetName, label = '', ariaLabel = '', tooltip = '' } = options;\n\n element.classList.add('humany-trigger');\n element.classList.add(`humany_${widgetName}`);\n\n if (label.length) {\n element.classList.add('humany-has-text');\n }\n\n if (ariaLabel.length && !element.getAttribute('aria-label')) {\n element.setAttribute('aria-label', ariaLabel);\n }\n\n if (ariaLabel.length && !element.getAttribute('tabindex')) {\n element.setAttribute('tabindex', '0');\n }\n\n if (tooltip.length && !element.getAttribute('title')) {\n element.setAttribute('title', tooltip);\n }\n\n const symbolHtml = renderSymbol(symbol) || '';\n element.innerHTML = `${symbolHtml}\n <span class=\"humany-close\">\n <svg width=\"18\" height=\"9\" viewBox=\"0 0 18 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 9C8.81794 9.00045 8.63759 8.96634 8.46939 8.89965C8.3012 8.83295 8.14851 8.735 8.02015 8.61145L0.194523 1.12367C0.068294 0.99862 -0.00155266 0.831133 2.61958e-05 0.657285C0.00160506 0.483436 0.0744832 0.317136 0.202964 0.194202C0.331445 0.0712675 0.505249 0.00153576 0.686941 2.50649e-05C0.868634 -0.00148563 1.04368 0.0653456 1.17437 0.186125L9 7.6739L16.8256 0.186125C16.9563 0.0653456 17.1314 -0.00148563 17.3131 2.50649e-05C17.4948 0.00153576 17.6686 0.0712675 17.797 0.194202C17.9255 0.317136 17.9984 0.483436 18 0.657285C18.0016 0.831133 17.9317 0.99862 17.8055 1.12367L9.97985 8.61145C9.85149 8.735 9.6988 8.83295 9.53061 8.89965C9.36241 8.96634 9.18206 9.00045 9 9Z\" fill=\"white\"/>\n </svg>\n </span>\n <span class=\"humany-loader\">\n <svg viewBox=\"25 25 50 50\">\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"20\"\n fill=\"none\"\n stroke=\"#000\"\n stroke-width=\"2\"\n stroke-miterlimit=\"10\" />\n </svg>\n </span>\n ${label.length ? `<span>${label}</span>` : ''}`;\n\n setTimeout(() => element && (element as HTMLElement).classList.add('humany-rendered'));\n\n return triggerTabHandler(element);\n}\n\nexport function setInactive(elements: HTMLElement | HTMLElement[], title?: string) {\n if (elements instanceof HTMLElement) {\n if (title) {\n elements.setAttribute('title', title);\n }\n elements.classList.remove('humany-active');\n elements.classList.remove('humany-loading');\n } else if (elements instanceof Array) {\n elements.forEach((e) => {\n if (title) {\n e.setAttribute('title', title);\n }\n e.classList.remove('humany-active');\n e.classList.remove('humany-loading');\n });\n }\n}\nexport function setLoading(elements: HTMLElement | HTMLElement[]) {\n if (elements instanceof HTMLElement) {\n elements.classList.remove('humany-active');\n elements.classList.add('humany-loading');\n } else if (elements instanceof Array) {\n elements.forEach((e) => {\n e.classList.remove('humany-active');\n e.classList.add('humany-loading');\n });\n }\n}\nexport function setActive(elements: HTMLElement | HTMLElement[], title?: string) {\n if (elements instanceof HTMLElement) {\n if (title) {\n elements.setAttribute('title', title);\n }\n elements.classList.add('humany-active');\n elements.classList.remove('humany-loading');\n } else if (elements instanceof Array) {\n elements.forEach((e) => {\n if (title) {\n e.setAttribute('title', title);\n }\n e.classList.add('humany-active');\n e.classList.remove('humany-loading');\n });\n }\n}\n","import { ViewOutletOptions } from './view-outlet';\n\nenum ProvidedElements {\n None = 'none',\n WidgetDOM = 'widgetDOM',\n TriggerDOM = 'triggerDOM',\n Both = 'both',\n}\n\nexport enum TriggerType {\n Inline = 'inline',\n Link = 'link',\n Badge = 'badge',\n Unsupported = 'unsupported',\n}\n\nexport const determineProvidedElements = (\n widgetDOMElement?: HTMLElement,\n triggerDOMElement?: HTMLElement\n): ProvidedElements => {\n if (widgetDOMElement && triggerDOMElement) {\n return ProvidedElements.Both;\n }\n if (widgetDOMElement) {\n return ProvidedElements.WidgetDOM;\n }\n if (triggerDOMElement) {\n return ProvidedElements.TriggerDOM;\n }\n return ProvidedElements.None;\n};\n\nexport const determineTriggerType = (triggerDefinition?: any) => {\n if (!triggerDefinition) {\n return TriggerType.Inline;\n }\n if (typeof triggerDefinition === 'boolean' && triggerDefinition) {\n return TriggerType.Link;\n }\n if (typeof triggerDefinition === 'object' && !Array.isArray(triggerDefinition)) {\n return TriggerType.Badge;\n }\n return TriggerType.Unsupported;\n};\n\ntype PrepareDOMElementsOutput = ViewOutletOptions & {\n callback?: () => void;\n};\n\nexport const prepareDOMElements = (\n name: string,\n providedWidgetElement?: HTMLElement,\n providedTriggerElement?: HTMLElement,\n triggerDefinition?: any,\n waitWithReplace: boolean = false\n): PrepareDOMElementsOutput => {\n const providedElements = determineProvidedElements(\n providedWidgetElement,\n providedTriggerElement\n );\n const triggerType = determineTriggerType(triggerDefinition);\n\n const cachedOriginals = {\n widgetDOMElement: providedWidgetElement ? providedWidgetElement.cloneNode(true) : undefined,\n triggerDOMElement: providedTriggerElement\n ? providedTriggerElement.cloneNode(true)\n : undefined,\n };\n\n const output: PrepareDOMElementsOutput = {\n triggerType,\n cachedOriginals,\n widgetDOMElement: document.createElement('div'),\n };\n\n switch (providedElements) {\n case ProvidedElements.Both: {\n output.widgetDOMElement = providedWidgetElement || document.createElement('div');\n if (triggerType !== TriggerType.Inline) {\n output.triggerDOMElement = providedTriggerElement;\n }\n break;\n }\n case ProvidedElements.WidgetDOM: {\n output.widgetDOMElement = providedWidgetElement || document.createElement('div');\n if (triggerType !== TriggerType.Inline) {\n const triggerElement = document.body.appendChild(document.createElement('a'));\n if (triggerType === TriggerType.Link) {\n triggerElement.innerText = name;\n }\n output.triggerDOMElement = triggerElement;\n }\n break;\n }\n case ProvidedElements.TriggerDOM: {\n const widgetElement = document.createElement('div');\n output.widgetDOMElement = widgetElement;\n if (triggerType === TriggerType.Inline) {\n // replace with widgetDOMElement in the DOM\n widgetElement.id = providedTriggerElement?.id || '';\n if (waitWithReplace) {\n widgetElement.style.display = 'none';\n providedTriggerElement?.parentNode?.appendChild(widgetElement);\n\n output.callback = () => {\n providedTriggerElement?.parentNode?.replaceChild(\n widgetElement,\n providedTriggerElement\n );\n widgetElement.style.display =\n providedTriggerElement?.style.display || 'block';\n };\n } else {\n providedTriggerElement?.parentNode?.replaceChild(\n widgetElement,\n providedTriggerElement\n );\n }\n output.cachedOriginals.widgetDOMElement = providedTriggerElement;\n output.cachedOriginals.triggerDOMElement = undefined;\n } else {\n output.widgetDOMElement = document.body.appendChild(widgetElement);\n output.triggerDOMElement = providedTriggerElement;\n }\n break;\n }\n case ProvidedElements.None: {\n const widgetElement = document.body.appendChild(document.createElement('div'));\n output.widgetDOMElement = widgetElement;\n if (triggerType !== TriggerType.Inline) {\n const triggerElement = document.body.appendChild(document.createElement('a'));\n if (triggerType === TriggerType.Link) {\n triggerElement.innerText = name;\n }\n output.triggerDOMElement = triggerElement;\n }\n break;\n }\n }\n\n return output;\n};\n","import { readStorage, StorageMedium } from '@telia-ace/widget-services';\nimport { Symbol } from '@telia-ace/widget-ui';\nimport { notifyDataLoaded } from '@telia-ace/widget-utilities';\nimport { Container, Widget } from '@webprovisions/platform';\nimport { createTriggerElement, setActive, setLoading } from './html-element-handlers';\nimport { TriggerType } from './prepare-dom';\n\nconst MODALS_STORAGE_KEY = 'modals';\n\nexport type BadgeOptions = {\n symbol?: Symbol;\n label?: string;\n ariaLabel?: string;\n openTooltip?: string;\n closedTooltip?: string;\n};\n\nexport type ViewOutletOptions = {\n widgetDOMElement: HTMLElement;\n triggerDOMElement?: HTMLElement;\n triggerOptions?: BadgeOptions | boolean;\n triggerType: TriggerType;\n cachedOriginals: {\n widgetDOMElement?: Node;\n triggerDOMElement?: Node;\n };\n};\n\ntype Modals = {\n name: string;\n ref?: HTMLElement;\n selector?: string;\n};\n\nexport class ViewOutlet {\n container: Container;\n private unsubscribe: (() => void)[] = [];\n\n constructor(container: Container, public options: ViewOutletOptions) {\n this.container = container.createChild(this);\n this.container.register('widgetDOMElement', this.options.widgetDOMElement);\n this.container.register('triggerDOMElement', this.options.triggerDOMElement);\n\n const widget: Widget = this.container.get('$widget');\n this.options.widgetDOMElement.classList.add('humany-widget');\n this.options.widgetDOMElement.classList.add(`humany_${widget.name}`);\n\n const widgetDOMElements = container.get('widgetDOMElements') || [];\n container.register('widgetDOMElements', [\n ...widgetDOMElements,\n this.options.widgetDOMElement,\n ]);\n }\n\n /**\n * Renders the view outlet to the DOM.\n */\n render() {\n const { widgetDOMElement, triggerDOMElement } = this.options;\n\n const widget: Widget = this.container.get('$widget');\n\n if (widgetDOMElement.getAttribute('data-rendered') === 'true') {\n return Promise.resolve();\n }\n\n if (triggerDOMElement && this.options.triggerType === TriggerType.Badge) {\n setLoading(triggerDOMElement);\n }\n\n return import('./render')\n .then((module) => module.default(this.container, widgetDOMElement))\n .then(() => {\n widgetDOMElement.setAttribute('data-rendered', 'true');\n\n if (triggerDOMElement && this.options.triggerType === TriggerType.Badge) {\n const tooltip = (this.options.triggerOptions as BadgeOptions).openTooltip;\n setActive(triggerDOMElement, tooltip);\n }\n notifyDataLoaded(this.container, widgetDOMElement);\n\n const widgets = this.container.get('$environment').widgets.all();\n\n readStorage<Modals[]>(\n this.container,\n MODALS_STORAGE_KEY,\n StorageMedium.Session\n ).then((modals) => {\n if (modals) {\n modals.forEach((modal) => {\n if (\n widgets.find(\n (w: Widget) => w.name === modal.name && w.state === 'activated'\n )\n ) {\n widget.events.dispatch('widget:modal-opened', modal);\n }\n });\n }\n });\n });\n }\n\n renderBadge(options: BadgeOptions) {\n const { triggerDOMElement } = this.options;\n\n if (!triggerDOMElement) {\n return;\n }\n\n if (!triggerDOMElement.getAttribute('role')) {\n triggerDOMElement.setAttribute('role', 'button');\n }\n\n const { name }: Widget = this.container.get('$widget');\n\n const { label, symbol, ariaLabel, closedTooltip, openTooltip } = options;\n\n const triggerOptions = { closedTooltip, openTooltip };\n this.options.triggerOptions = triggerOptions;\n\n const removeTriggerListeners = createTriggerElement(triggerDOMElement, {\n label,\n symbol,\n ariaLabel,\n widgetName: name,\n tooltip: closedTooltip,\n });\n this.unsubscribe.push(removeTriggerListeners);\n }\n\n dispose() {\n return import('./unmount').then((module) => {\n const { triggerDOMElement, widgetDOMElement } = this.options;\n module.default(widgetDOMElement);\n\n if (this.options.cachedOriginals.widgetDOMElement) {\n if (widgetDOMElement) {\n widgetDOMElement.parentNode?.replaceChild(\n this.options.cachedOriginals.widgetDOMElement,\n widgetDOMElement\n );\n }\n }\n if (this.options.cachedOriginals.triggerDOMElement) {\n if (triggerDOMElement) {\n triggerDOMElement.parentNode?.replaceChild(\n this.options.cachedOriginals.triggerDOMElement,\n triggerDOMElement\n );\n }\n }\n\n this.unsubscribe.forEach((unsubscribe) => {\n unsubscribe();\n });\n\n widgetDOMElement.parentNode?.removeChild(widgetDOMElement);\n triggerDOMElement?.parentNode?.removeChild(triggerDOMElement);\n });\n }\n}\n","import {\n ChangesetOptions,\n ChangesetProvider,\n ComponentNodeAttributes,\n ComponentNodeSettings,\n ComponentPlatform,\n ComponentQuery,\n ComponentQueryRule,\n createComponentModel,\n WidgetSettings,\n} from '@telia-ace/widget-core';\nimport {\n createStorageWriter,\n readStorage,\n StorageCategory,\n StorageMedium,\n StorageWriter,\n} from '@telia-ace/widget-services';\nimport { lock } from '@telia-ace/widget-utilities';\nimport { Container, Widget, WidgetState } from '@webprovisions/platform';\n\nconst STORAGE_KEY = 'changesets';\n\ntype ChangesetItem = {\n rules: ComponentQueryRule[];\n attributes: Partial<ComponentNodeAttributes>;\n options: ChangesetOptions;\n};\n\ntype ChangesetItemBag = {\n items?: { [key: string]: ChangesetItem };\n keys?: string[];\n};\n\nconst convertSettingsToAttributes = (\n settings: Partial<ComponentNodeSettings>\n): Partial<ComponentNodeAttributes> => {\n const attributes: Partial<ComponentNodeAttributes> = { tags: settings.tags };\n if (settings.context && typeof settings.context !== 'function') {\n attributes.context = settings.context;\n }\n if (settings.properties && typeof settings.properties !== 'function') {\n attributes.properties = settings.properties;\n }\n if (settings.layout && typeof settings.layout !== 'function') {\n attributes.layout = settings.layout;\n }\n\n return attributes;\n};\n\nexport class LocalStorageChangesetProvider implements ChangesetProvider {\n constructor(private container: Container, private storageWriter: StorageWriter) {}\n\n static create(container: Container): Promise<LocalStorageChangesetProvider> {\n return createStorageWriter(container, STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n }).then((storageWriter) => new LocalStorageChangesetProvider(container, storageWriter));\n }\n\n write(\n key: string,\n target: ComponentQuery,\n attributes: Partial<ComponentNodeSettings>,\n options: ChangesetOptions\n ): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n const existingIndex = keys.indexOf(key);\n if (existingIndex > -1) {\n keys.splice(existingIndex, 1);\n }\n keys.push(key);\n items[key] = {\n options,\n attributes: convertSettingsToAttributes(attributes),\n rules: target.rules,\n };\n return this.storageWriter({ keys, items });\n });\n });\n }\n\n remove(key: string): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n const indexToRemove = keys.indexOf(key);\n if (indexToRemove > -1) {\n keys.splice(indexToRemove, 1);\n delete items[key];\n return this.storageWriter(bag);\n }\n });\n });\n }\n\n load(platform: ComponentPlatform): Promise<any> {\n return lock(this)(() => {\n return readStorage<ChangesetItemBag>(\n this.container,\n STORAGE_KEY,\n StorageMedium.Local\n ).then((bag = {}) => {\n const { keys = [], items = {} } = bag;\n keys.forEach((key) => {\n const item = items[key];\n if (item) {\n const { rules, attributes, options } = item;\n platform.write({\n attributes,\n options,\n target: new ComponentQuery(platform, rules),\n });\n }\n });\n });\n });\n }\n}\n\nexport const createPlatform = (widget: Widget): Promise<ComponentPlatform> => {\n const { container } = widget;\n return LocalStorageChangesetProvider.create(container).then((localStorage) => {\n const settings: WidgetSettings = container.get('$settings');\n const providers = { localStorage };\n const platform = new ComponentPlatform(widget, providers);\n const destructComponentModel = createComponentModel(platform, settings);\n\n widget.events.subscribe('widget:state-change', (event, data: { state: WidgetState }) => {\n if (data.state === WidgetState.Deactivating) {\n destructComponentModel();\n }\n });\n\n return platform;\n });\n};\n","import { WidgetSettings } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { createPlatform } from './component-platform-factory';\n\nexport const createRoutingService = (container: Container) => {\n return import('@telia-ace/widget-routing').then(({ RoutingService, HistoryMode }) => {\n return container.get('settings').then((settings: WidgetSettings) => {\n const {\n routing: { initialPath = '/', mode = HistoryMode.scopedHash, basePath },\n views,\n } = settings;\n\n const routingService = new RoutingService(container, {\n initialPath,\n mode,\n routes: Object.keys(views).map((name) => ({\n name,\n path: views[name].path,\n })),\n basePath,\n });\n return routingService;\n });\n });\n};\n\nexport const createStorageService = (container: Container) => {\n return import('@telia-ace/widget-services').then(({ StorageProvider }) => {\n return new StorageProvider();\n });\n};\n\nexport const createActionResolver = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ActionResolver }) => {\n return new ActionResolver(container);\n });\n};\n\nexport const createComponentResolver = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ComponentResolver }) => {\n return new ComponentResolver(container);\n });\n};\n\nexport const createComponentPlatform = (container: Container) => {\n return import('@telia-ace/widget-core').then(({ ComponentPlatform, createComponentModel }) => {\n return createPlatform(container.get('$widget'));\n });\n};\n","import {\n ActionResolver,\n ComponentPlatform,\n WidgetRenderState,\n WidgetSettings,\n} from '@telia-ace/widget-core';\nimport { onWidgetUrl, RouteData, RoutingService } from '@telia-ace/widget-routing';\nimport {\n createStorageWriter,\n readStorage,\n StorageCategory,\n StorageMedium,\n StorageScope,\n} from '@telia-ace/widget-services';\nimport { removeNullAndUndefinedValues, uuid } from '@telia-ace/widget-utilities';\nimport { BootstrappingActivationData, supportBootstrapping } from '@webprovisions/bootstrapping';\nimport { Container, EventSubscriptionCancellation, WidgetType } from '@webprovisions/platform';\nimport { BadgeOptions, ViewOutlet, ViewOutletOptions } from '././ui/view-outlet';\nimport {\n createActionResolver,\n createComponentPlatform,\n createComponentResolver,\n createRoutingService,\n createStorageService,\n} from './services';\nimport { setActive, setInactive } from './ui/html-element-handlers';\nimport { determineTriggerType, prepareDOMElements, TriggerType } from './ui/prepare-dom';\n\nconst SETTINGS_STORAGE_KEY = '$settings';\nconst OPEN_STORAGE_KEY = 'open';\nconst STICKY_WIDGET_STORAGE_KEY = 'activeStickyWidget';\n\nexport enum InitialRenderState {\n Open = 'open',\n Closed = 'closed',\n Hidden = 'hidden',\n Storage = 'storage',\n}\n\nexport type RenderData = {\n widgetDOMElement?: HTMLElement;\n triggerDOMElement?: HTMLElement;\n key?: string;\n open?: boolean;\n withRenderState?: InitialRenderState;\n};\n\nexport type AttachData = {\n widgetDOMElement?: HTMLElement;\n triggerDOMElement?: HTMLElement;\n key?: string;\n withRenderState?: InitialRenderState;\n};\n\nexport default class Widget extends WidgetType {\n outlets = new Map<string, ViewOutlet>();\n activated: Promise<void> | undefined = undefined;\n subs: EventSubscriptionCancellation[] = [];\n\n constructor(container: Container) {\n super(container);\n\n this.container.registerAsync('storage', () => createStorageService(this.container));\n\n this.container.registerFactory('settings', () => {\n return readStorage<Partial<WidgetSettings>>(\n this.container,\n SETTINGS_STORAGE_KEY,\n StorageMedium.Local\n ).then((settings = {}) => {\n return {\n ...this.container.get('$settings'),\n ...settings,\n };\n });\n });\n\n supportBootstrapping(this as any, 'load', this.handleBootstrapping);\n\n this.container.registerAsync('componentResolver', () =>\n createComponentResolver(this.container)\n );\n this.container.registerAsync('router', () => createRoutingService(this.container));\n this.container.registerAsync('actionResolver', () => createActionResolver(this.container));\n this.container.register('matchMedia', window.matchMedia);\n this.container.registerAsync('components', () => createComponentPlatform(this.container));\n }\n\n handleBootstrapping = (activationData: BootstrappingActivationData) => {\n const options = {\n triggerDOMElement: activationData.sourceDOMElement,\n withRenderState: InitialRenderState.Storage,\n };\n\n this.container.get('settings').then((settings: any) => {\n const { activate } = settings;\n const shouldActivate =\n typeof activate === 'undefined' || activate === null || activate === true;\n\n if (shouldActivate) {\n this.activated = (this.activated || this.widget.activate()).then(() =>\n this.attach(options)\n );\n }\n });\n };\n\n initialize() {\n console.log('experimental abc123');\n debugger;\n const promises = this.container.getManyAsync(\n 'actionResolver',\n 'router',\n 'components'\n ) as Promise<{\n actionResolver: ActionResolver;\n router: RoutingService;\n components: ComponentPlatform;\n }>;\n\n return Promise.all([promises, this.container.get('settings')]).then(\n ([{ actionResolver, router, components }, settings]) => {\n actionResolver.subscribe(this.widget.name, (origin, action, value) =>\n this.onAction(action, value)\n );\n\n const switchViewNodes = (routeName: string) => {\n components.nodes.query({ type: 'view' }).forEach((viewNode) => {\n components.setSwitch(viewNode, routeName);\n });\n };\n\n const initialRoute = router.getInitialRoute()?.name || 'index';\n switchViewNodes(initialRoute);\n\n this.events.subscribe('widget:data-loaded', (e, { element }) => {\n if (this.widget.container.get('seoConfiguration')) {\n this.events.dispatch('widget:preloaded-replaced', {\n element,\n });\n }\n });\n\n this.events.subscribe(\n 'router:change',\n (e, { previous = { routeData: {} }, next = { routeData: {} } }) => {\n const { routeData: prevData }: { routeData: RouteData } = previous;\n const { routeData: nextData }: { routeData: RouteData } = next;\n\n const notFoundView = Object.keys(settings.views).reduce((acc, key) => {\n const view = settings.views[key];\n if (typeof view.path === 'undefined') {\n return key;\n }\n return acc;\n }, '');\n\n // route not found\n if (!nextData.name && notFoundView) {\n switchViewNodes(notFoundView);\n } else {\n switchViewNodes(nextData.name);\n }\n\n removeNullAndUndefinedValues(prevData && prevData.params);\n removeNullAndUndefinedValues(nextData && nextData.params);\n\n this.container\n .getAsync('actionResolver')\n .then((actionResolver: ActionResolver) => {\n actionResolver.action(this.widget.name, 'routeChange', {\n next: nextData,\n previous: prevData,\n });\n });\n }\n );\n\n return router.initialize();\n }\n );\n }\n\n attach(attachData: AttachData = {}) {\n return this.container.get('settings').then(({ trigger }: WidgetSettings) => {\n const {\n widgetDOMElement,\n key = uuid(),\n triggerDOMElement,\n withRenderState,\n } = attachData;\n\n const triggerType = determineTriggerType(trigger);\n\n // This could probably be defined already when bootstrapping occurs,\n // Webprovisions knows when a widget is prerendered,\n // see \"queryPrerenderedTargets in @webprovisions/bootstrapping\"\n const waitWithReplace =\n triggerType === TriggerType.Inline &&\n (triggerDOMElement?.childElementCount || 0) > 0;\n\n const outletOptions = prepareDOMElements(\n this.widget.name,\n widgetDOMElement,\n triggerDOMElement,\n trigger,\n waitWithReplace\n );\n\n if (this.outlets.size < 1 && !withRenderState) {\n this.setRenderState('unset');\n }\n\n const swap = () => {\n const isReady = () =>\n widgetDOMElement.querySelectorAll('[data-loading=true]').length === 0;\n const [widgetDOMElement] = this.widget.container.get('widgetDOMElements');\n\n const watcher = (mutations: MutationRecord[], observer: MutationObserver) => {\n if (isReady()) {\n if (outletOptions.callback) {\n outletOptions.callback();\n }\n observer.disconnect();\n }\n };\n const options = {\n attributes: true,\n subtree: true,\n childList: true,\n };\n\n if (isReady()) {\n outletOptions.callback && outletOptions.callback();\n }\n const observer = new MutationObserver(watcher);\n\n observer.observe(widgetDOMElement, options);\n };\n\n if (waitWithReplace) {\n this.widget.container.getAsync('dataClient').then(({ events }: any) => {\n events.subscribe('data-client:fetched', (event: any, data: any) => {\n if (data.unresolvedQueries === 0) {\n swap();\n }\n });\n });\n }\n\n const outlet = this.getOrCreateViewOutlet(key, outletOptions);\n this.outlets.set(key, outlet);\n this.widget.events.dispatch('widget:attached', {}, { bubbles: true });\n\n if (outletOptions.triggerType === TriggerType.Badge && trigger) {\n outletOptions.triggerDOMElement?.setAttribute('aria-expanded', 'false');\n outlet?.renderBadge(trigger);\n }\n\n if (outletOptions.triggerType !== TriggerType.Inline) {\n outletOptions.triggerDOMElement?.addEventListener('click', (event: any) => {\n event.preventDefault();\n this.container\n .get('settings')\n .then(({ trigger: updatedTrigger }: WidgetSettings) => {\n outlet\n .render()\n .then(() => this.renderState())\n .then((renderState) => {\n if (\n updatedTrigger &&\n updatedTrigger.action &&\n updatedTrigger.action === 'hide'\n ) {\n return renderState === WidgetRenderState.open\n ? this.hide()\n : this.open();\n }\n return renderState === WidgetRenderState.open\n ? this.close()\n : this.open();\n });\n });\n });\n }\n\n if (this.outlets.size > 1) {\n return this.renderState().then((state: WidgetRenderState) => {\n // new outlets should have the same state as existing ones\n this.triggerStateIfApplicable(state);\n });\n }\n\n if (withRenderState) {\n if (withRenderState === InitialRenderState.Storage) {\n return this.renderState().then((state: WidgetRenderState) => {\n if (outletOptions.triggerType === TriggerType.Inline) {\n this.triggerStateIfApplicable('open');\n return;\n }\n this.triggerStateIfApplicable(state);\n });\n }\n return this.triggerStateIfApplicable(withRenderState);\n }\n });\n }\n\n detach(key?: string) {\n if (key) {\n if (this.outlets.has(key)) {\n const outlet = this.outlets.get(key);\n outlet?.dispose();\n this.outlets.delete(key);\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`detach(): Could not find View Outlet with key ${key}`);\n }\n return;\n }\n this.outlets.forEach((outlet) => {\n outlet.dispose();\n });\n this.outlets.clear();\n }\n\n private triggerStateIfApplicable(input: string) {\n return this.container.getAsync('router').then((router) => {\n switch (input) {\n case 'closed':\n this.close();\n break;\n case 'open':\n this.open();\n break;\n case 'hidden':\n this.hide();\n router.start();\n break;\n default:\n return;\n }\n });\n }\n\n private getOrCreateViewOutlet(key: string, options: ViewOutletOptions): ViewOutlet {\n return (\n this.outlets.has(key) ? this.outlets.get(key) : new ViewOutlet(this.container, options)\n )!;\n }\n\n render(renderData: RenderData = {}) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('widget.render() is deprecated. Use widget.attach() instead.');\n }\n if (renderData.open) {\n const options: AttachData = {\n ...renderData,\n withRenderState: InitialRenderState.Open,\n };\n return this.attach(options);\n }\n return this.attach(renderData);\n }\n\n activate(data?: any) {\n if (data?.override) {\n this.setSettings(() => data.override);\n }\n // TODO: this is considered a hack, remove apiNotificationPriorityBy\n // when there is a better way to get notifications from backend\n if (data?.apiNotificationPriorityBy) {\n this.container.register('apiNotificationPriorityBy', data.apiNotificationPriorityBy);\n }\n }\n\n setSettings(\n fn: (settings: WidgetSettings) => Promise<Partial<WidgetSettings>>\n ): Promise<WidgetSettings> {\n return Promise.all([\n this.container.get('settings'),\n createStorageWriter(this.container, SETTINGS_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n }),\n ]).then(([settings, write]) => {\n return Promise.resolve(fn(settings)).then((override) => {\n return write(override).then(() => {\n const updated = { ...settings, ...override };\n this.widget.events.dispatch('widget:settings-updated', updated);\n return updated;\n });\n });\n });\n }\n\n clearSettings(): Promise<void> {\n return createStorageWriter(\n this.container,\n SETTINGS_STORAGE_KEY,\n StorageCategory.Necessary,\n { medium: StorageMedium.Local }\n )\n .then((write) => write())\n .then(() => this.container.get('settings'))\n .then((settings) => {\n this.widget.events.dispatch('widget:settings-updated', settings);\n });\n }\n\n action({ action, value }: { action: string; value?: any }) {\n return this.container.getAsync('actionResolver').then((actionResolver: ActionResolver) => {\n actionResolver.action(this.widget.name, action, value);\n });\n }\n\n renderState(): Promise<WidgetRenderState> {\n if (onWidgetUrl(this.container)) {\n return Promise.resolve(WidgetRenderState.open);\n }\n const readSessionOpen = () =>\n readStorage<WidgetRenderState>(\n this.container,\n OPEN_STORAGE_KEY,\n StorageMedium.Session\n ).then((value = WidgetRenderState.closed) => value);\n\n const readLocalOpen = () =>\n readStorage<WidgetRenderState>(\n this.container,\n OPEN_STORAGE_KEY,\n StorageMedium.Session\n ).then((value = WidgetRenderState.closed) => value);\n\n return this.container.getAsync('router').then((routing: RoutingService) => {\n if (routing.isSticky()) {\n return readLocalOpen().then((localOpen) => {\n return localOpen === WidgetRenderState.open ? localOpen : readSessionOpen();\n });\n }\n return readSessionOpen();\n });\n }\n\n hide(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'hide(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n this.outlets.forEach((outlet) => outlet.render());\n return this.action({ action: 'hide' }).then(() => {\n this.setTriggerState(false);\n });\n }\n\n open(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'open(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n this.outlets.forEach((outlet) => outlet.render());\n return this.action({ action: 'open' }).then(() => {\n this.widget.events.dispatch('tracking:widget-rendered', {});\n return this.onOpen();\n });\n }\n\n close(): Promise<void> {\n if (this.outlets.size < 1) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'close(): No-op as no view outlets are registered. Invoke the attach() command first.'\n );\n }\n return Promise.resolve();\n }\n return this.action({ action: 'close' }).then(() => this.onClose());\n }\n\n show(): Promise<void> {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'show(): Command is deprecated and will be removed in the future. Use open() instead.'\n );\n }\n return this.open();\n }\n\n private onAction(action: string, value: any) {\n switch (action) {\n case 'close':\n case 'open':\n case 'hide':\n const newState =\n action === 'open'\n ? WidgetRenderState.open\n : action === 'close'\n ? WidgetRenderState.closed\n : WidgetRenderState.hidden;\n\n return this.setRenderState(newState).then(() => {\n this.setTriggerState(newState === WidgetRenderState.open);\n if (newState !== WidgetRenderState.hidden) {\n newState === WidgetRenderState.open ? this.onOpen() : this.onClose();\n } else {\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'false')\n );\n }\n });\n }\n }\n\n private setRenderState(newState: string): Promise<void> {\n const { invoke, events } = this.container.get('$widget');\n return Promise.all([\n createStorageWriter(this.container, OPEN_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Session,\n }),\n createStorageWriter(this.container, OPEN_STORAGE_KEY, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n duration: { minutes: 5 },\n }),\n this.container.getAsync('router'),\n invoke('renderState'),\n ]).then(([writeSessionOpen, writeLocalOpen, routing, previousRenderState]) => {\n if (newState === 'unset' || !newState) {\n writeLocalOpen();\n writeSessionOpen();\n } else {\n if (routing.isSticky()) {\n writeLocalOpen(newState);\n }\n writeSessionOpen(newState);\n }\n events.dispatch('widget:render-state-changed', {\n previous: previousRenderState,\n next: newState,\n });\n });\n }\n\n private onOpen(): Promise<void> {\n return this.container.getAsync('router').then((router: RoutingService) => {\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'true')\n );\n return router.start();\n });\n }\n\n private onClose(): Promise<void> {\n const services = this.container.getManyAsync('router', 'components') as Promise<{\n router: RoutingService;\n components: ComponentPlatform;\n }>;\n\n const resetActivateProp = () => {\n return this.container.get('settings').then((widgetSettings: WidgetSettings) => {\n const { activate } = this.container.get('$settings');\n if (widgetSettings.activate !== activate) {\n return this.setSettings(() => Promise.resolve({ activate }));\n }\n return Promise.resolve();\n });\n };\n\n return resetActivateProp()\n .then(() => {\n return services;\n })\n .then(\n ({\n router,\n components,\n }: {\n router: RoutingService;\n components: ComponentPlatform;\n }) => {\n const visibleNodes = components.nodes.visible;\n this.outlets.forEach((outlet) =>\n outlet.options.triggerDOMElement?.setAttribute('aria-expanded', 'false')\n );\n\n if (\n visibleNodes.filter(\n (c) =>\n c.attributes.properties.animation &&\n c.attributes.properties.animation !== 'none'\n ).length\n ) {\n return new Promise<RoutingService>((resolve) => {\n setTimeout(() => {\n resolve(router);\n }, 200);\n });\n }\n\n return Promise.resolve(router);\n }\n )\n .then((router: RoutingService) => router.stop());\n }\n\n private setTriggerState(open: boolean) {\n this.outlets.forEach((outlet) => {\n const {\n options: { triggerDOMElement, triggerOptions },\n } = outlet;\n const { openTooltip, closedTooltip } = (triggerOptions as BadgeOptions) || {};\n if (triggerDOMElement) {\n open\n ? setActive(triggerDOMElement, openTooltip)\n : setInactive(triggerDOMElement, closedTooltip);\n }\n });\n }\n\n deactivate() {\n this.subs.forEach((s) => s());\n\n const promises: Promise<void>[] = [];\n this.outlets.forEach((outlet) => promises.push(outlet.dispose()));\n\n return readStorage<string>(\n this.container,\n STICKY_WIDGET_STORAGE_KEY,\n StorageMedium.Local\n ).then((value) => {\n /**\n * Remove stored sticky widget from implementation's localStorage if applicable\n */\n if (value === this.widget.name) {\n return createStorageWriter(\n this.container,\n STICKY_WIDGET_STORAGE_KEY,\n StorageCategory.Necessary,\n {\n medium: StorageMedium.Local,\n scope: StorageScope.Implementation,\n }\n )\n .then((write) => write())\n .then(() => Promise.all(promises));\n }\n return Promise.all(promises);\n });\n }\n}\n"],"names":["SlideDirection","determineSlideDirection","currentRouteName","nextRouteName","routeRanking","Switch","views","location","render","React","RouteSwitch","__spreadProps","__spreadValues","key","name","path","Route","Switch$1","StyledViewContainer","styled","StyledView","Grid","p","routeHierarchy","AnimatedView","_a","_b","className","other","__objRest","routeName","setRouteName","useState","transitionDirection","setTransitionDirection","nextRoute","useRouteData","router","useRouter","properties","useProperties","context","useContext","container","useContainer","node","useComponentNode","gap","columns","animation","scrollable","areaProperties","scrollableCss","elem","useScroll","renderView","transitionState","direction","animationStyles","getAnimation","childNode","appendClassNames","Component","transitionComposer","TransitionGroup","child","Transition","state","AnimatedView$1","View","View$1","styling","css","paddedBorderTabStyle","StyledAnimatedView","NonResolvedComponentWrapper","_c","ResolvableComponent","forwardRef","ref","children","ResolvedComponent","useComponent","type","id","useComponentDescriptor","StyledResolvableComponent","useMemo","filterCssPropsStyle","Typography","Suspense","ResolvableComponent$1","useComponentNodeProperties","components","useComponentPlatform","setProperties","isMounted","useIsMounted","useEffect","unsubscribe","event","data","isVisible","size","branch","ariaLabel","tabIndex","extraContext","descriptor","setDescriptor","useColumns","indent","useLayout","visible","componentNode","asDescriptor","unmount","cardinal","contextFonts","accessibility","restContext","fonts","theme","ThemeProvider","ComponentNodeContext","ComponentPropertyContext","props","cssProps","filterCssProps","Component$1","DetachedComponent","builder","setNode","createdNode","n","DetachedComponent$2","detachedComponent","NotFound","showSearch","themeContext","useTheme","settings","acc","searchComponentProps","searchNode","notFoundNode","NotFound$1","renderSymbol","symbol","content","triggerTabHandler","triggerDOMElement","toggleTabbing","element","tabbing","handleKeydown","e","handleClick","createTriggerElement","options","widgetName","label","tooltip","symbolHtml","setInactive","elements","title","setLoading","setActive","TriggerType","determineProvidedElements","widgetDOMElement","determineTriggerType","triggerDefinition","prepareDOMElements","providedWidgetElement","providedTriggerElement","waitWithReplace","providedElements","triggerType","cachedOriginals","output","triggerElement","widgetElement","MODALS_STORAGE_KEY","ViewOutlet","__publicField","widget","widgetDOMElements","module","notifyDataLoaded","widgets","readStorage","StorageMedium","modals","modal","w","closedTooltip","openTooltip","triggerOptions","removeTriggerListeners","_d","STORAGE_KEY","convertSettingsToAttributes","attributes","LocalStorageChangesetProvider","storageWriter","createStorageWriter","StorageCategory","target","lock","bag","keys","items","existingIndex","indexToRemove","platform","item","rules","ComponentQuery","createPlatform","localStorage","providers","ComponentPlatform","destructComponentModel","createComponentModel","WidgetState","createRoutingService","RoutingService","HistoryMode","initialPath","mode","basePath","createStorageService","StorageProvider","createActionResolver","ActionResolver","createComponentResolver","ComponentResolver","createComponentPlatform","SETTINGS_STORAGE_KEY","OPEN_STORAGE_KEY","STICKY_WIDGET_STORAGE_KEY","Widget","WidgetType","activationData","activate","supportBootstrapping","promises","actionResolver","origin","action","value","switchViewNodes","viewNode","initialRoute","previous","next","prevData","nextData","notFoundView","removeNullAndUndefinedValues","attachData","trigger","uuid","withRenderState","outletOptions","swap","isReady","watcher","mutations","observer","events","outlet","updatedTrigger","renderState","WidgetRenderState","input","renderData","fn","write","override","updated","onWidgetUrl","readSessionOpen","readLocalOpen","routing","localOpen","newState","invoke","writeSessionOpen","writeLocalOpen","previousRenderState","services","widgetSettings","visibleNodes","c","resolve","open","StorageScope"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
@@ -0,0 +1,9 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class ConsumerInterface {
3
+ }
4
+ export declare class ContextProviderInterface {
5
+ }
6
+ type Constructor<T = {}> = new (...args: any[]) => T;
7
+ export declare const ConsumerMixin: <T extends Constructor<LitElement>>(Base: T) => Constructor<ConsumerInterface> & T;
8
+ export declare const ContextProviderMixin: <T extends Constructor<LitElement>>(Base: T) => Constructor<ContextProviderInterface> & T;
9
+ export {};
@@ -0,0 +1,6 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class PendingStateInterface {
3
+ }
4
+ type Constructor<T = {}> = new (...args: any[]) => T;
5
+ export declare const PendingState: <T extends Constructor<LitElement>>(Base: T) => Constructor<PendingStateInterface> & T;
6
+ export {};
@@ -0,0 +1,7 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class ProviderInterface {
3
+ provideInstance(key: string, instance: any): void;
4
+ }
5
+ type Constructor<T = {}> = new (...args: any[]) => T;
6
+ export declare const Provider: <T extends Constructor<LitElement>>(Base: T) => Constructor<ProviderInterface> & T;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class RequesterInterface {
3
+ requestInstance(key: string): any;
4
+ }
5
+ type Constructor<T = {}> = new (...args: any[]) => T;
6
+ export declare const Requester: <T extends Constructor<LitElement>>(Base: T) => Constructor<RequesterInterface> & T;
7
+ export {};
@@ -0,0 +1,8 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class WidgetComponentInterface {
3
+ requestInstance(key: string): any;
4
+ nodeId: string;
5
+ }
6
+ type Constructor<T = {}> = new (...args: any[]) => T;
7
+ export declare const WidgetComponent: <T extends Constructor<LitElement>>(Base: T) => Constructor<WidgetComponentInterface> & T;
8
+ export {};
@@ -0,0 +1,152 @@
1
+ var p = (o, e, r) => new Promise((i, t) => {
2
+ var n = (s) => {
3
+ try {
4
+ l(r.next(s));
5
+ } catch (d) {
6
+ t(d);
7
+ }
8
+ }, a = (s) => {
9
+ try {
10
+ l(r.throw(s));
11
+ } catch (d) {
12
+ t(d);
13
+ }
14
+ }, l = (s) => s.done ? i(s.value) : Promise.resolve(s.value).then(n, a);
15
+ l((r = r.apply(o, e)).next());
16
+ });
17
+ import { ComponentPlatform as g } from "@telia-ace/widget-core";
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.c6989014.js";
20
+ import "@telia-ace/widget-ui";
21
+ import "react";
22
+ import "@emotion/react";
23
+ import "@emotion/styled";
24
+ import "@telia-ace/widget-utilities";
25
+ import "react-transition-group";
26
+ import "react-router";
27
+ import "@open-wc/lit-helpers";
28
+ import "@telia-ace/widget-routing";
29
+ import "@telia-ace/widget-services";
30
+ import "@webprovisions/bootstrapping";
31
+ import "@webprovisions/platform";
32
+ const f = (o) => {
33
+ const e = o.getRootNode();
34
+ if (o.getAttribute("widgetname"))
35
+ return window.humany.widgets.find(
36
+ o.getAttribute("widgetname")
37
+ );
38
+ if (o.classList.contains("humany-widget")) {
39
+ const r = Array.from(o.classList).reduce(
40
+ (t, n) => (n.indexOf("humany_") === 0 && (t = n.replace("humany_", "")), t),
41
+ void 0
42
+ );
43
+ return window.humany.widgets.find(r);
44
+ }
45
+ return e.host ? f(e.host) : null;
46
+ };
47
+ class C {
48
+ constructor(e) {
49
+ (this.host = e).addController(this);
50
+ }
51
+ hostConnected() {
52
+ this.widget = f(this.host);
53
+ }
54
+ }
55
+ const P = (o) => {
56
+ class e extends o {
57
+ constructor(...i) {
58
+ super(), this._instances = /* @__PURE__ */ new Map(), this.addEventListener("request-instance", (t) => {
59
+ const n = t.detail.key;
60
+ console.log("listener fired"), this._instances.has(n) && (t.detail.instance = this._instances.get(n), t.stopPropagation());
61
+ });
62
+ }
63
+ provideInstance(i, t) {
64
+ console.log("providing instance", i, t), this._instances.set(i, t);
65
+ }
66
+ }
67
+ return e;
68
+ };
69
+ var I = Object.defineProperty, L = Object.getOwnPropertyDescriptor, h = (o, e, r, i) => {
70
+ for (var t = i > 1 ? void 0 : i ? L(e, r) : e, n = o.length - 1, a; n >= 0; n--)
71
+ (a = o[n]) && (t = (i ? a(e, r, t) : a(t)) || t);
72
+ return i && t && I(e, r, t), t;
73
+ };
74
+ class c extends P(y) {
75
+ constructor() {
76
+ super(), this.controller = new C(this), this._child = null, this._entry = null;
77
+ }
78
+ connectedCallback() {
79
+ super.connectedCallback(), this.controller.widget && (this.provideInstance("container", this.controller.widget.container), Promise.all([
80
+ g.getInstance(this.controller.widget.container),
81
+ this.controller.widget.container.getAsync("componentResolver")
82
+ ]).then((e) => p(this, null, function* () {
83
+ this.platform = e[0];
84
+ const r = e[1];
85
+ if (this.unsubscribe = this.platform.events.subscribe(
86
+ "components:root-children-changed",
87
+ (i, { node: t }) => {
88
+ t.parent && t.parent.type === "root" && (this._entry = t.parent.children.default[0].id);
89
+ }
90
+ ), this._entry = this.platform.nodes.root.children.default[0].id || null, !this._entry) {
91
+ console.warn("Could not get node ID for entry node on the ComponentPlatform.");
92
+ return;
93
+ }
94
+ this._child = (yield _(this._entry, r, this.platform)) || null;
95
+ })));
96
+ }
97
+ render() {
98
+ return this._child ? v` <${b(this._child.tag)} nodeId=${this._child.nodeId} /> ` : u;
99
+ }
100
+ }
101
+ c.styles = [
102
+ w`
103
+ :host {
104
+ --gap: 0;
105
+ --fonts-type: 'Lato';
106
+ --fonts-small: 0.9em;
107
+ --fonts-normal: 1em;
108
+ --fonts-medium: 1.1em;
109
+ --fonts-huge: 1.4em;
110
+ --fonts-large: 1.1em;
111
+ --colors-accent: #fafafa;
112
+ --colors-link: #990ae3;
113
+ --colors-primary: #990ae3;
114
+ --colors-text: #333333;
115
+ --colors-textLight: #767676;
116
+ --colors-warning: #cc0000;
117
+ --accessibility-border: 2px dashed #990ae3;
118
+ --accessibility-colors-inactiveText: #990ae3;
119
+ --accessibility-colors-activeText: #ffffff;
120
+ --inputBorder: 1px solid #000000;
121
+ --border: 1px solid #000000;
122
+ --borderRadius: 5px;
123
+ --boxShadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
124
+ --cardinal: 3px;
125
+ --size-small: var(--cardinal);
126
+ --size-normal: calc(var(--cardinal) * 3);
127
+ --size-medium: calc(var(--cardinal) * 5);
128
+ --size-large: calc(var(--cardinal) * 8);
129
+ --size-huge: calc(var(--cardinal) * 12);
130
+
131
+ --typography-h1: h2;
132
+ }
133
+ `
134
+ ];
135
+ h([
136
+ m()
137
+ ], c.prototype, "_entry", 2);
138
+ h([
139
+ x()
140
+ ], c.prototype, "widgetName", 2);
141
+ h([
142
+ m()
143
+ ], c.prototype, "_child", 2);
144
+ customElements.define("widget-root", c);
145
+ const G = (o, e, r) => {
146
+ const i = document.createElement("widget-root");
147
+ i.setAttribute("widgetName", o), r.appendChild(i);
148
+ };
149
+ export {
150
+ G as default
151
+ };
152
+ //# sourceMappingURL=render.0c0b70f9.js.map
@@ -0,0 +1 @@
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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"}
File without changes
@@ -0,0 +1,3 @@
1
+ import { Container } from '@webprovisions/platform';
2
+ declare const _default: (container: Container, element: HTMLElement) => void;
3
+ export default _default;
@@ -1,6 +1,6 @@
1
1
  export { default as AnimatedView } from './animated-view';
2
- export { default as Component } from './component';
3
2
  export { prepareDOMElements, TriggerType } from './prepare-dom';
4
3
  export { default as ResolvableComponent } from './resolvable-component';
5
4
  export { default as View } from './view';
6
5
  export { default as Wrapper } from './wrapper';
6
+ export { default as Component } from './_component';
@@ -1,3 +1,4 @@
1
1
  import { Container } from '@webprovisions/platform';
2
- declare const _default: (container: Container, element: HTMLElement) => void;
2
+ import './widget-component';
3
+ declare const _default: (widgetName: string, container: Container, element: HTMLElement) => void;
3
4
  export default _default;
@@ -0,0 +1,27 @@
1
+ import { Container } from '@webprovisions/platform';
2
+ import { LitElement, nothing } from 'lit';
3
+ declare const WidgetComponent_base: (new (...args: any[]) => import("../mixins/requester").RequesterInterface) & typeof LitElement;
4
+ export declare class WidgetComponent extends WidgetComponent_base {
5
+ static styles: import("lit").CSSResult[];
6
+ container: Container | undefined;
7
+ listeners: any[];
8
+ nodeId: string;
9
+ branch: string;
10
+ protected _descriptor: any;
11
+ protected _properties: {
12
+ [key: string]: any;
13
+ };
14
+ protected _context: {
15
+ [key: string]: any;
16
+ };
17
+ protected _layout: {
18
+ [key: string]: any;
19
+ };
20
+ connectedCallback(): void;
21
+ disconnectedCallback(): void;
22
+ mapProps(): {
23
+ [key: string]: any;
24
+ };
25
+ render(): typeof nothing | import("lit").TemplateResult<1 | 2>;
26
+ }
27
+ export {};
@@ -0,0 +1,21 @@
1
+ import { ComponentPlatform } from '@telia-ace/widget-core';
2
+ import { EventSubscriptionCancellation } from '@webprovisions/platform';
3
+ import { LitElement, nothing } from 'lit';
4
+ import { WidgetController } from '../controllers/widget-controller';
5
+ declare const WidgetRoot_base: (new (...args: any[]) => import("../mixins/provider").ProviderInterface) & typeof LitElement;
6
+ export declare class WidgetRoot extends WidgetRoot_base {
7
+ controller: WidgetController;
8
+ platform: ComponentPlatform | undefined;
9
+ unsubscribe: EventSubscriptionCancellation | undefined;
10
+ static styles: import("lit").CSSResult[];
11
+ _entry: string | null;
12
+ widgetName: string;
13
+ _child: {
14
+ tag: string;
15
+ nodeId: string;
16
+ } | null;
17
+ constructor();
18
+ connectedCallback(): void;
19
+ render(): typeof nothing | import("lit").TemplateResult<1 | 2>;
20
+ }
21
+ export {};
@@ -0,0 +1 @@
1
+ export declare const componentTagFromType: (type: string) => string;
@@ -0,0 +1,3 @@
1
+ export declare const getComponentWidth: (elem: HTMLElement, layout: {
2
+ [key: string]: any;
3
+ }, definedColumns?: string) => string;
@@ -0,0 +1 @@
1
+ export declare const getWidget: (elem: HTMLElement) => any;
@@ -0,0 +1,5 @@
1
+ export declare const mapContextStyle: (ctx: {
2
+ [key: string]: any;
3
+ }) => {
4
+ [key: string]: string;
5
+ };
@@ -0,0 +1,5 @@
1
+ import { ComponentPlatform, ComponentResolver } from '@telia-ace/widget-core';
2
+ export declare const resolveComponent: (nodeId: string, resolver: ComponentResolver, platform: ComponentPlatform) => Promise<{
3
+ nodeId: string;
4
+ tag: string;
5
+ } | undefined>;