@telia-ace/widget-ui 1.0.28-experimental.12 → 1.0.28-experimental.13
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.d.ts +1 -0
- package/dist/index.js +17 -17
- package/dist/index.js.map +1 -1
- package/dist/mixins/widget-component.d.ts +3 -3
- package/package.json +5 -5
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/utils/animations.ts","../src/utils/browser.ts","../src/utils/convert-to-string-attributes.ts","../src/utils/create-empty-component.tsx","../src/utils/embedded-link-mapper.tsx","../src/utils/filter-css-props.ts","../src/utils/generic-hash-link.tsx","../src/utils/heading-styles.ts","../src/utils/process-html-string.tsx","../src/utils/render-instructions.tsx","../src/components/anchor-link.tsx","../src/components/button.tsx","../src/components/checkbox.tsx","../src/contexts/index.ts","../src/hooks/use-component-descriptor.ts","../src/hooks/use-container.ts","../src/hooks/use-action.ts","../src/hooks/use-component-node.ts","../src/hooks/use-is-mounted.ts","../src/hooks/use-component-platform.ts","../src/hooks/use-children.ts","../src/hooks/use-columns.ts","../src/hooks/use-component.ts","../src/hooks/use-context.ts","../src/hooks/use-conversation.ts","../src/hooks/use-dispatch.ts","../src/hooks/use-event-listener.ts","../src/hooks/use-events.ts","../src/hooks/use-is-tabbing.ts","../src/hooks/use-key-press.ts","../src/hooks/use-layout.ts","../src/hooks/use-previous.ts","../src/hooks/use-properties.ts","../src/hooks/use-render-state.ts","../src/hooks/use-router.ts","../src/hooks/use-route-data.ts","../src/hooks/use-scroll.ts","../src/hooks/use-settings.ts","../src/hooks/use-toggle.ts","../src/hooks/use-transition-end.ts","../src/hooks/use-widget-event.ts","../src/hooks/use-unique-menu.ts","../src/components/text.tsx","../src/styles.ts","../src/components/portal.tsx","../src/components/symbol-badge.tsx","../src/components/typography.tsx","../src/components/drawer/drawer.tsx","../src/components/dropdown/use-position.tsx","../src/components/dropdown/dropdown.tsx","../src/components/empty.tsx","../src/components/grid.tsx","../src/components/html.tsx","../src/components/icon.tsx","../src/components/input.tsx","../src/components/list.tsx","../src/components/paragraph.tsx","../src/components/item-list.tsx","../src/components/item-tree.tsx","../src/components/route-link.tsx","../src/components/link.tsx","../src/components/overlay.tsx","../src/components/loader.tsx","../src/components/zoomable-img.tsx","../src/components/lightbox.tsx","../src/components/modal/modal.tsx","../src/components/modal/confirm.tsx","../src/components/not-found.tsx","../src/components/tab-stop.tsx","../src/components/text-link.tsx","../src/components/timestamp.tsx","../src/components/tooltip.tsx","../src/components/transition-component.tsx","../src/components/widget-link.tsx","../src/components/widget-overlay-outlet.tsx","../src/create-react-component.ts","../src/create-web-component.ts","../src/components/ui-typography.ts","../src/controllers/node-connector.ts","../src/data-provider.ts","../src/mixins/context.ts","../src/mixins/pending-state.ts","../src/mixins/provider.ts","../src/mixins/requester.ts","../src/utils/map-context-style.ts","../src/mixins/widget-component.ts"],"sourcesContent":["import { css } from '@emotion/react';\nimport { TransitionStatus } from 'react-transition-group/Transition';\n\nexport type CssTransitions = {\n [key: string]: any;\n};\n\nexport type TransitionStateSettings = {\n transitionKeys: string;\n duration?: number;\n easing?: string;\n};\n\nconst inEnteringState = (status?: TransitionStatus) => {\n return status === 'entering' || status === 'entered';\n};\nconst inExitingState = (status?: TransitionStatus) => {\n return status === 'exiting' || status === 'exited';\n};\n\n/**\n * List of basic transition presets\n */\nconst partials: any = {\n fade: {\n in: 'opacity: 1;',\n out: 'opacity: 0;',\n },\n 'slide-left': {\n in: 'transform: translateX(0);',\n out: 'transform: translateX(-100%);',\n },\n 'slide-right': {\n in: 'transform: translateX(0);',\n out: 'transform: translateX(100%);',\n },\n 'slide-up': {\n in: 'transform: translateY(0);',\n out: 'transform: translateY(100%);',\n },\n 'slide-down': {\n in: 'transform: translateY(0);',\n out: 'transform: translateY(-100%);',\n },\n scale: {\n in: 'transform: scale(1);',\n out: 'transform: scale(0);',\n },\n};\n\nconst transformTransitions = ['slide-up', 'slide-down', 'slide-left', 'slide-right', 'scale'];\n\nexport const transitionComposer = {\n compose: (\n status: TransitionStatus = 'exited',\n definitions: { enter: TransitionStateSettings; exit: TransitionStateSettings }\n ) => {\n const { enter, exit } = definitions;\n const inKeys = enter.transitionKeys.split(' ');\n\n const transitionProperty =\n transformTransitions.indexOf(inKeys[0]) > -1 ? 'transform' : 'opacity';\n\n if (inEnteringState(status)) {\n if (inKeys && inKeys.length > 0) {\n return css`\n ${inKeys &&\n inKeys.length > 0 &&\n inKeys.map((key: any) => (partials[key] ? partials[key].in : ''))}\n transition: ${transitionProperty} ${enter.duration}ms ${enter.easing};\n `;\n }\n return '';\n }\n\n const inBase =\n inKeys &&\n inKeys.length > 0 &&\n css`\n ${inKeys.map((key: any) => (partials[key] ? partials[key].out : ''))}\n `;\n\n if (inExitingState(status)) {\n const outKeys = exit.transitionKeys.split(' ');\n if (outKeys && outKeys.length > 0 && status === 'exiting') {\n return css`\n ${inBase};\n ${outKeys.map((key: any) => (partials[key] ? partials[key].out : ''))}\n transition: ${transitionProperty} ${exit.duration}ms ${exit.easing};\n `;\n }\n /**\n * When a component is mounted, it starts with the 'exited' state.\n * So instead of forcing the component that utilizes this function to add the original state\n * of the to-be-animated property, we apply the out-state values of the entering transitions.\n */\n return inBase;\n }\n },\n composeViewTransition: (\n status: TransitionStatus,\n type: string,\n direction?: 'forth' | 'back'\n ) => {\n if (type === 'slide') {\n return transitionComposer.compose(status, {\n enter: {\n transitionKeys: direction === 'forth' ? 'slide-right' : 'slide-left',\n duration: 500,\n },\n exit: {\n transitionKeys: direction === 'forth' ? 'slide-left' : 'slide-right',\n duration: 500,\n },\n });\n }\n if (type === 'fade') {\n return transitionComposer.compose(status, {\n enter: {\n transitionKeys: 'fade',\n duration: 500,\n },\n exit: {\n transitionKeys: 'fade',\n duration: 500,\n },\n });\n }\n },\n get: (title: string) => {\n return partials[title];\n },\n};\n","export enum Browsers {\n Opera = 'opera',\n Chrome = 'chrome',\n Firefox = 'firefox',\n Safari = 'safari',\n Edge = 'edge',\n EdgeChromium = 'edge-chromium',\n Blink = 'blink',\n IE = 'internet-explorer',\n}\n\nexport default (): Browsers | void => {\n const {\n opr,\n opera,\n InstallTrigger,\n HTMLElement,\n safari,\n documentMode,\n StyleMedia,\n chrome,\n CSS,\n }: any = window;\n // Opera 8.0+\n const isOpera = (!!opr && !!opr.addons) || !!opera || navigator.userAgent.indexOf(' OPR/') >= 0;\n if (isOpera) {\n return Browsers.Opera;\n }\n\n // Firefox 1.0+\n if (InstallTrigger) {\n return Browsers.Firefox;\n }\n\n // Safari 3.0+ '[object HTMLElementConstructor]'\n const safariCheck = ((p: any) => {\n return p.toString() === '[object SafariRemoteNotification]';\n })(!safari || (typeof safari !== 'undefined' && safari.pushNotification));\n if (/constructor/i.test(HTMLElement) || safariCheck) {\n return Browsers.Safari;\n }\n\n // Internet Explorer 6-11\n const isIE = /*@cc_on!@*/ false || !!documentMode;\n if (isIE) {\n return Browsers.IE;\n }\n\n // Edge 20+\n if (!isIE && !!StyleMedia) {\n return Browsers.Edge;\n }\n\n // Chrome 1 - 79\n const isChrome = !!chrome && (!!chrome.webstore || !!chrome.runtime);\n if (isChrome) {\n return Browsers.Chrome;\n }\n\n // Edge (based on chromium) detection\n if (isChrome && navigator.userAgent.indexOf('Edg') !== -1) {\n return Browsers.EdgeChromium;\n }\n\n if ((isChrome || isOpera) && !!CSS) {\n return Browsers.Blink;\n }\n};\n","import { kebabCase } from '@telia-ace/widget-utilities';\n\nconst types = ['string', 'number'];\n\nexport default (props: any): object => {\n return Object.keys(props).reduce((result: { [key: string]: string }, key: string) => {\n const value = typeof props[key] === 'undefined' ? '' : props[key];\n const type = typeof value;\n if (types.indexOf(type) > -1) {\n const sub = key.substring(0, 5);\n if (sub === 'data-' || sub === 'aria-') {\n result[kebabCase(key)] = value.toString();\n } else if (key.substring(0, 4) !== 'css-') {\n result[key] = value.toString();\n }\n } else {\n result[key] = value;\n }\n return result;\n }, {});\n};\n","import { Container } from '@webprovisions/platform';\nimport React from 'react';\nimport { Empty } from '../components';\n\nconst createEmptyComponent = (container: Container, props: any) => {\n if (container.get('seoConfiguration')) {\n return <Empty {...props} />;\n }\n return null;\n};\n\nexport default createEmptyComponent;\n","import { Container, Implementation } from '@webprovisions/platform';\nimport React from 'react';\nimport { AnchorLink, WidgetLink } from '../components';\n\n// Determine if href starts with a hashtag\nconst isAnchorLink = (href: string) => {\n const re = new RegExp('^#', 'i');\n const match = re.test(href);\n\n return match;\n};\n\nconst embeddedLinkMapper =\n (container: Container) =>\n ({ children, ...props }: any) => {\n const {\n implementation,\n name: currentWidgetName,\n }: { implementation: Implementation & { bindings: [] }; name: string } =\n container.get('$widget');\n\n const { href = '' } = props;\n\n if (isAnchorLink(href)) {\n return (\n <AnchorLink smooth to={href}>\n {children}\n </AnchorLink>\n );\n }\n\n const escapedBindings = implementation.bindings\n .map((binding: string) => binding.replace(/\\./g, '\\\\.'))\n .join('|');\n const regexp = new RegExp(`^((http[s]?:)?\\/\\/)?(${escapedBindings})\\/([^\\\\s]+)`);\n\n const expArray = regexp.exec(href);\n\n if (expArray && expArray.length >= 4) {\n const targetWidgetName = expArray[4];\n const targetWidget = implementation.widgets.get(targetWidgetName);\n\n // blob links should not be treated as a widget link\n if (\n targetWidget &&\n !targetWidgetName.startsWith('blob?') &&\n !targetWidgetName.startsWith(currentWidgetName)\n ) {\n return <WidgetLink widgetName={targetWidgetName}>{children}</WidgetLink>;\n }\n }\n\n return <a {...props}>{children}</a>;\n };\n\nexport default embeddedLinkMapper;\n","import { css } from '@emotion/react';\n\nconst filterCssProps = (props: any) => {\n const cssProps: { [key: string]: any } = {};\n\n Object.keys(props).forEach((key) => {\n if (key.indexOf('css-') > -1) {\n cssProps[key] = props[key];\n }\n });\n\n return cssProps;\n};\n\ntype FilterCssPropsStyle = { [key: string]: any };\nexport const filterCssPropsStyle = (p: FilterCssPropsStyle) => {\n let styleString = '';\n Object.keys(filterCssProps(p)).forEach((key) => {\n if (key.indexOf('css-') > -1) {\n styleString += `${key.replace('css-', '')}:${p[key]};`;\n }\n });\n return css`\n ${styleString}\n `;\n};\n\nexport default filterCssProps;\n","import React from 'react';\n\nexport type Props = Merge<\n React.ComponentProps<'a'>,\n {\n disabled?: string;\n to?: string;\n smooth?: boolean;\n scroll?: Function;\n }\n>;\n\nexport const genericHashLink = (props: Props, As: any) => {\n let hashFragment = '';\n\n const reset = () => {\n hashFragment = '';\n };\n\n const getElementAndScroll = (scrollFunction: Function) => {\n const element = document.getElementById(hashFragment);\n if (element !== null) {\n scrollFunction(element);\n reset();\n return true;\n }\n return false;\n };\n\n const handleClick = (e: any) => {\n e.preventDefault();\n reset();\n if (props.onClick) props.onClick(e);\n\n // try to get hash fragment\n if (typeof props.to === 'string') {\n hashFragment = props.to.split('#').slice(1).join('#');\n }\n // if hash fragment is present\n if (hashFragment !== '') {\n getElementAndScroll(\n props.scroll ||\n ((el: any) =>\n props.smooth\n ? el.scrollIntoView({ behavior: 'smooth' })\n : el.scrollIntoView())\n );\n }\n return false;\n };\n const { scroll, smooth, to, ...filteredProps } = props;\n\n if (As === 'a') {\n filteredProps.href = 'javascript:;';\n }\n\n return (\n <As {...filteredProps} onClick={handleClick}>\n {props.children}\n </As>\n );\n};\n","import { css, Theme } from '@emotion/react';\n\nexport const headingElement = (p: { theme: Theme }) => (element: string, style: any) => {\n let defaultTag: string = element;\n let prefix = '';\n\n if (['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(element)) {\n defaultTag = element;\n } else {\n const match = element.match(/h1|h2|h3|h4|h5|h6/);\n if (match?.[0]) {\n defaultTag = match[0];\n const [pre] = element.split(defaultTag);\n prefix = pre;\n }\n }\n\n const renderTag = (element: string, pre: string, mapping: { [key: string]: string }) => {\n if (mapping[element]) {\n return `${pre}${mapping[element]}`;\n }\n return `${pre}${element}`;\n };\n\n const tag = renderTag(defaultTag, prefix, p.theme.typographyVariantMapping || {});\n\n return css`\n ${tag} {\n ${style}\n }\n `;\n};\n","import convert from 'htmr';\n\n/**\n * Converts a html chunk to managed React nodes.\n */\nexport default function parseHtmlString(html: any, instruction: any) {\n if (instruction) {\n return convert(html, instruction);\n }\n return convert(html);\n}\n","import { Container } from '@webprovisions/platform';\nimport React from 'react';\nimport { Lightbox } from '../components';\nimport embeddedLinkMapper from './embedded-link-mapper';\n\nexport const imageLightboxRenderer =\n (htmlBody: string) =>\n (\n attrs: React.DetailedHTMLProps<React.HtmlHTMLAttributes<HTMLImageElement>, HTMLImageElement>\n ) =>\n <Lightbox attrs={attrs} htmlBody={htmlBody} />;\n\nexport const defaultRenderInstructions = (container: Container, htmlBody: string) => {\n return {\n transform: {\n a: embeddedLinkMapper(container),\n img: imageLightboxRenderer(htmlBody),\n },\n };\n};\n","import React from 'react';\nimport { genericHashLink, GenericHashLinkProps } from '../utils';\n\nconst AnchorLink: React.FC<GenericHashLinkProps> = (props) => {\n return genericHashLink(props, 'a');\n};\n\nexport default AnchorLink;\n","import styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport { convertToStringAttributes } from '../utils';\n\nexport type Props = React.ComponentProps<'button'>;\n\nexport default forwardRef<HTMLButtonElement, Props>(({ className, children, ...other }, ref) => {\n return (\n <StyledButton\n type=\"button\"\n className={appendClassNames(className, 'humany-button')}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {children}\n </StyledButton>\n );\n});\n\nconst StyledButton = styled.button`\n -webkit-appearance: button;\n text-transform: none;\n overflow: visible;\n outline: none;\n border: none;\n background-color: transparent;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n line-height: normal;\n margin: 0;\n padding: 0;\n`;\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { convertToStringAttributes } from '../utils';\n\nexport type Props = Merge<\n React.ComponentProps<'input'>,\n {\n onChange?: (value: string, checked: boolean) => void;\n onEnter?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n }\n>;\n\nconst Checkbox: React.FC<Props> = ({\n onChange = () => {},\n onEnter = () => {},\n className,\n ...other\n}) => {\n return (\n <input\n className={appendClassNames(className, 'humany-checkbox')}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n onEnter(e);\n }\n }}\n onChange={(e) => onChange(e.target.value, e.currentTarget.checked)}\n {...convertToStringAttributes(other)}\n />\n );\n};\n\nexport default Checkbox;\n","import { ComponentDescriptor, ComponentNodeProperties } from '@telia-ace/widget-core';\nimport { RoutingService } from '@telia-ace/widget-routing';\nimport { Container } from '@webprovisions/platform';\nimport { createContext } from 'react';\n\nexport const ContainerContext = createContext<Container>(new Container());\n\nexport const ColumnContext = createContext<number>(1);\n\nexport const ComponentNodeContext = createContext<ComponentDescriptor>({\n id: '',\n type: '',\n name: '',\n branch: '',\n});\n\nexport const ComponentPropertyContext = createContext<ComponentNodeProperties>({});\n\nexport const RoutingContext = createContext<RoutingService | null>(null);\n\nexport const ConversationContext = createContext<{ id: string } | null>(null);\n","import { useContext } from 'react';\nimport { ComponentNodeContext } from '../contexts';\n\nconst useComponentDescriptor = () => useContext(ComponentNodeContext);\n\nexport default useComponentDescriptor;\n","import { useContext } from 'react';\nimport { ContainerContext } from '../contexts';\n\nconst useContainer = () => useContext(ContainerContext);\n\nexport default useContainer;\n","import { ActionResolver } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport useComponentDescriptor from './use-component-descriptor';\nimport useContainer from './use-container';\n\nexport type Action = (action: string, value?: any) => void;\n\nexport const useAction = (passedOrigin?: string, passedContainer?: Container): Action => {\n const origin = useComponentDescriptor().id;\n const container = useContainer();\n return (action: string, value?: any) => {\n (passedContainer || container)\n .getAsync('actionResolver')\n .then((resolver: ActionResolver) => {\n resolver.action(passedOrigin || origin, action, value);\n });\n };\n};\n\nexport default useAction;\n","import { ComponentNode } from '@telia-ace/widget-core';\nimport { useContext, useEffect, useState } from 'react';\nimport { useComponentPlatform } from '.';\nimport { ComponentNodeContext } from '../contexts';\n\n/**\n * Provides the `ComponentNode` for the current context.\n */\nconst useComponentNode = (id?: string) => {\n const descriptor = useContext(ComponentNodeContext);\n const components = useComponentPlatform();\n const [node, setNode] = useState<ComponentNode>();\n\n useEffect(() => {\n if ((id || descriptor.id) && components) {\n const node = components.nodes.get(id || descriptor.id);\n setNode(node);\n }\n }, [id, descriptor.id, components]);\n\n return node;\n};\n\nexport default useComponentNode;\n","import { useEffect, useRef } from 'react';\n\nconst useIsMounted = () => {\n const isMounted = useRef(false);\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n};\n\nexport default useIsMounted;\n","import { ComponentPlatform } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { useEffect, useState } from 'react';\nimport useContainer from './use-container';\nimport useIsMounted from './use-is-mounted';\n\nconst useComponentPlatform = (passedContainer?: Container): ComponentPlatform | null => {\n const container = useContainer();\n const [componentPlatform, setComponentPlatform] = useState<ComponentPlatform | null>(null);\n const isMounted = useIsMounted();\n\n useEffect(() => {\n ComponentPlatform.getInstance(passedContainer || container).then((platform) => {\n if (isMounted.current) {\n setComponentPlatform(platform);\n }\n });\n }, [isMounted]);\n\n return componentPlatform;\n};\n\nexport default useComponentPlatform;\n","import {\n asDescriptor,\n ComponentDescriptor,\n ComponentNode,\n createEventSubscriber,\n} from '@telia-ace/widget-core';\nimport { useCallback, useEffect, useState } from 'react';\nimport useComponentNode from './use-component-node';\nimport useComponentPlatform from './use-component-platform';\nimport useIsMounted from './use-is-mounted';\n\nexport type SetPropertiesAction<T> = (key: string, value: Partial<T>) => void;\n\nconst useChildren = (): ComponentDescriptor[] => {\n const node = useComponentNode();\n const components = useComponentPlatform();\n const [children, setChildren] = useState<ComponentDescriptor[]>([]);\n const isMounted = useIsMounted();\n\n const updateChildren = useCallback(\n (node: ComponentNode) => {\n if (components && isMounted.current && node) {\n const branch = components.getBranch(node);\n const children = node.getChildren(branch).map((child) => asDescriptor(child));\n setChildren(children);\n }\n },\n [isMounted, components, setChildren, node]\n );\n\n useEffect(() => {\n if (node) {\n updateChildren(node);\n }\n }, [node, components]);\n\n useEffect(() => {\n if (components) {\n const [subscribe, unsubscribe] = createEventSubscriber(components.events);\n\n subscribe('components:set-layout', (event, data) => {\n if (node === data.node.parent || data.node.parent === components.nodes.root) {\n updateChildren(data.node.parent);\n }\n });\n subscribe('components:node-appended', (event, data) => {\n if (node === data.node.parent || data.node.parent === components.nodes.root) {\n updateChildren(data.node.parent);\n }\n });\n subscribe('components:node-removed', (event, { parentNode }) => {\n if (parentNode === node || parentNode === components.nodes.root) {\n updateChildren(parentNode);\n }\n });\n\n return () => {\n unsubscribe();\n };\n }\n }, [node, components, updateChildren]);\n\n return children;\n};\n\nexport default useChildren;\n","import { useContext } from 'react';\nimport { ColumnContext } from '../contexts';\n\nconst useColumns = () => useContext(ColumnContext);\n\nexport default useColumns;\n","import { ComponentResolver } from '@telia-ace/widget-core';\nimport { Container, EventSubscriptionCancellation } from '@webprovisions/platform';\nimport { useEffect, useState } from 'react';\nimport useComponentDescriptor from './use-component-descriptor';\nimport useContainer from './use-container';\nimport useIsMounted from './use-is-mounted';\n\nconst useComponent = (passedType?: string, passedContainer?: Container): void | any | null => {\n const descriptor = useComponentDescriptor();\n const container = useContainer();\n const [component, setComponent] = useState<any | null>(undefined);\n const isMounted = useIsMounted();\n const type = passedType || descriptor.type || '';\n\n useEffect(() => {\n if (type) {\n let unsubscribe: EventSubscriptionCancellation;\n (passedContainer || container)\n .getAsync('componentResolver')\n .then((resolver: ComponentResolver) => {\n if (isMounted.current) {\n const component = resolver.getComponent(type);\n setComponent(component);\n }\n\n unsubscribe = resolver.registerResolver(type, (component) => {\n if (isMounted.current) {\n setComponent(component);\n }\n });\n });\n\n return () => {\n if (unsubscribe) {\n unsubscribe();\n }\n };\n }\n }, [isMounted, type, passedContainer, container]);\n\n return component;\n};\n\nexport default useComponent;\n","import { ComponentNodeContext } from '@telia-ace/widget-core';\nimport { useEffect, useState } from 'react';\nimport useComponentNode from './use-component-node';\nimport useComponentPlatform from './use-component-platform';\nimport useIsMounted from './use-is-mounted';\n\nconst useContext = <T extends ComponentNodeContext>(id?: string): T => {\n const node = useComponentNode(id);\n const components = useComponentPlatform();\n const [context, setContext] = useState<ComponentNodeContext>({});\n const isMounted = useIsMounted();\n\n useEffect(() => {\n if (node && isMounted.current) {\n setContext(node.attributes.context);\n }\n }, [isMounted, node]);\n\n useEffect(() => {\n if (components) {\n const unsubscribe = components.events.subscribe(\n 'components:context-changed',\n (event, data) => {\n if (node === data.node && isMounted.current) {\n setContext(data.node.attributes.context);\n }\n }\n );\n\n return () => {\n unsubscribe();\n };\n }\n }, [isMounted, components, node]);\n\n return <T>context;\n};\n\nexport default useContext;\n","import { useContext } from 'react';\nimport { ConversationContext } from '../contexts';\n\nconst useConversation = () => useContext(ConversationContext);\n\nexport default useConversation;\n","import { ActionsController, ComponentQuery } from '@telia-ace/widget-core';\nimport { uuid } from '@telia-ace/widget-utilities';\nimport { useEffect, useState } from 'react';\nimport useComponentDescriptor from './use-component-descriptor';\nimport useComponentPlatform from './use-component-platform';\n\nexport type DispatchAction = (key: string, data?: any) => Promise<any>;\n\ntype QueueEntry = {\n resolve: (value?: any) => void;\n reject: (reason?: any) => void;\n key: string;\n data: any;\n};\n\nconst useDispatch = (): DispatchAction => {\n const components = useComponentPlatform();\n const descriptor = useComponentDescriptor();\n const [queue, setQueue] = useState<QueueEntry[] | null>([]);\n const [actions, setActions] = useState<ActionsController>();\n\n useEffect(() => {\n if (components && descriptor) {\n const component = new ComponentQuery(components).withId(descriptor.id);\n const actions = components.actions(component, descriptor.type || uuid());\n\n setActions(actions);\n\n // process the queue and set it to null\n if (queue !== null) {\n queue.forEach((item) => {\n actions\n .dispatch(item.key, item.data)\n .then((value) => item.resolve(value))\n .catch((reason) => item.reject(reason));\n });\n setQueue(null);\n }\n }\n }, [components, descriptor.id]);\n\n return (key, data?) => {\n if (queue !== null) {\n // if queue is available the actions controller is not yet created\n return new Promise((resolve, reject) => {\n queue.push({\n key,\n data,\n resolve,\n reject,\n });\n });\n }\n return actions!.dispatch(key, data);\n };\n};\n\nexport default useDispatch;\n","import { useEffect, useRef } from 'react';\n\nexport default (\n eventName: string,\n handler: Function,\n element: HTMLElement | Window = window,\n condition: () => boolean = () => true\n) => {\n const savedHandler = useRef<Function>(() => {});\n\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element && condition();\n if (!isSupported) return;\n\n const eventListener: EventListener = (event) => savedHandler.current(event);\n\n element.addEventListener(eventName, eventListener);\n\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n};\n","import { Container, EventManager, Widget } from '@webprovisions/platform';\nimport useContainer from './use-container';\n\nconst useEvents = (passedContainer?: Container): EventManager => {\n const container = useContainer();\n const { events }: Widget = (passedContainer || container).get('$widget');\n return events;\n};\n\nexport default useEvents;\n","import { useEffect, useState } from 'react';\n\nconst useIsTabbing = () => {\n const [isTabbing, setIsTabbing] = useState(false);\n\n useEffect(() => {\n // When a click occurs, set isTabbing false.\n const handleClick = () => {\n setIsTabbing(false);\n };\n\n // When a tab occurs, set isTabbing true.\n const handleKeydown = (e: KeyboardEvent) => {\n const isTabEvent = e.keyCode === 9;\n if (isTabEvent) {\n setIsTabbing(true);\n }\n };\n\n window.addEventListener('keydown', handleKeydown);\n window.addEventListener('click', handleClick);\n return () => {\n window.removeEventListener('keydown', handleKeydown);\n window.removeEventListener('click', handleClick);\n };\n }, []);\n\n return isTabbing;\n};\n\nexport default useIsTabbing;\n","import { useCallback, useState } from 'react';\nimport useEventListener from './use-event-listener';\n\nconst useKeyPress = (targetKey: string, action?: (event: KeyboardEvent) => void) => {\n // State for keeping track of whether key is pressed\n const [keyPressed, setKeyPressed] = useState(false);\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n const { key } = event;\n if (key === targetKey) {\n setKeyPressed(true);\n\n if (action) {\n action(event);\n }\n }\n },\n [setKeyPressed, action]\n );\n\n const onKeyUp = useCallback(\n ({ key }: KeyboardEvent) => {\n if (key === targetKey) {\n setKeyPressed(false);\n }\n },\n [setKeyPressed]\n );\n\n useEventListener('keydown', onKeyDown, window);\n\n useEventListener('keyup', onKeyUp, window);\n\n return keyPressed;\n};\n\nexport default useKeyPress;\n","import { ComponentNodeLayout } from '@telia-ace/widget-core';\nimport { useEffect, useState } from 'react';\nimport useComponentNode from './use-component-node';\nimport useComponentPlatform from './use-component-platform';\nimport useIsMounted from './use-is-mounted';\n\nconst useLayout = (id?: string): ComponentNodeLayout => {\n const node = useComponentNode(id);\n const components = useComponentPlatform();\n const [layout, setLayout] = useState<ComponentNodeLayout>({});\n const isMounted = useIsMounted();\n\n useEffect(() => {\n if (node && isMounted.current) {\n setLayout(node.attributes.layout);\n }\n }, [node, isMounted]);\n\n useEffect(() => {\n if (components) {\n const unsubscribe = components.events.subscribe(\n 'components:layout-changed',\n (event, data) => {\n if (node === data.node && isMounted.current) {\n setLayout(data.node.attributes.layout);\n }\n }\n );\n\n return () => {\n unsubscribe();\n };\n }\n }, [components, isMounted, node]);\n\n return layout;\n};\n\nexport default useLayout;\n","import { useEffect, useRef } from 'react';\n\nconst usePrevious = <T>(value: T) => {\n const ref = useRef<T>();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n\nexport default usePrevious;\n","import { ComponentNodeProperties } from '@telia-ace/widget-core';\nimport { useContext } from 'react';\nimport { ComponentPropertyContext } from '../contexts';\n\ntype DataProperties = { loading?: boolean };\n\nconst useProperties = <T extends ComponentNodeProperties>(): Merge<DataProperties, T> => {\n const properties = useContext(ComponentPropertyContext);\n\n return <Merge<DataProperties, T>>properties;\n};\n\nexport default useProperties;\n","import { ActionResolver, WidgetRenderState } from '@telia-ace/widget-core';\nimport { Container, EventSubscriptionCancellation, Widget } from '@webprovisions/platform';\nimport { useEffect, useState } from 'react';\nimport useContainer from './use-container';\nimport useIsMounted from './use-is-mounted';\n\nconst useRenderState = (passedContainer?: Container): WidgetRenderState | undefined => {\n const [renderState, setRenderState] = useState<WidgetRenderState>();\n const container = useContainer();\n const isMounted = useIsMounted();\n\n useEffect(() => {\n let unsubscribe: EventSubscriptionCancellation;\n const widget = (passedContainer || container).get('$widget') as Widget;\n if (!widget) {\n return;\n }\n const { name, invoke } = widget;\n\n invoke('renderState').then((renderState: WidgetRenderState) => {\n if (isMounted.current) {\n setRenderState(renderState);\n }\n });\n\n (passedContainer || container)\n .getAsync('actionResolver')\n .then((actionResolver: ActionResolver) => {\n unsubscribe = actionResolver.subscribe(name, (origin, action) => {\n switch (action) {\n case 'close':\n case 'open':\n if (isMounted.current) {\n setRenderState(\n action === 'open'\n ? WidgetRenderState.open\n : WidgetRenderState.closed\n );\n }\n break;\n case 'hide':\n if (isMounted.current) {\n setRenderState(WidgetRenderState.hidden);\n }\n }\n });\n });\n\n return () => {\n if (unsubscribe) {\n unsubscribe();\n }\n };\n }, [isMounted]);\n\n return renderState;\n};\n\nexport default useRenderState;\n","import { RoutingService } from '@telia-ace/widget-routing';\nimport { useContext } from 'react';\nimport { RoutingContext } from '../contexts';\n\nconst useRouter = (): RoutingService | null => {\n const router = useContext(RoutingContext);\n\n return router;\n};\n\nexport default useRouter;\n","import { RouteData } from '@telia-ace/widget-routing';\nimport { removeNullAndUndefinedValues } from '@telia-ace/widget-utilities';\nimport { Container, Widget } from '@webprovisions/platform';\nimport { useEffect, useState } from 'react';\nimport useContainer from './use-container';\nimport useIsMounted from './use-is-mounted';\nimport useRouter from './use-router';\n\nconst useRouteData = (passedContainer?: Container): RouteData => {\n const container = useContainer();\n const router = useRouter();\n const [routeData, setRouteData] = useState<RouteData>({ name: '', params: {} });\n const isMounted = useIsMounted();\n\n useEffect(() => {\n const widget = (passedContainer || container).get('$widget') as Widget;\n if (!widget) {\n return;\n }\n const { events } = widget;\n const unsubscribe = events.subscribe('router:change', (e, { next: { routeData } }) => {\n if (isMounted.current) {\n const { name, params } = routeData;\n removeNullAndUndefinedValues(params);\n setRouteData({ name, params });\n }\n });\n\n return unsubscribe;\n }, [isMounted, passedContainer, container]);\n\n useEffect(() => {\n if (router && router.history && isMounted.current) {\n const routeData = router.getRouteData();\n const { name, params } = routeData;\n removeNullAndUndefinedValues(params);\n setRouteData({ name, params });\n }\n }, [router, isMounted]);\n\n return routeData;\n};\n\nexport default useRouteData;\n","import { useCallback, useRef } from 'react';\nimport { browser, Browsers } from '../utils';\nimport useEventListener from './use-event-listener';\n\nexport default (scrollable: boolean): [string, React.MutableRefObject<any>] => {\n const elem = useRef<any>();\n const previousY = useRef(0);\n\n let timeoutId: any | number;\n\n const onScroll = useCallback(() => {\n elem.current?.classList.add('humany-scrolling');\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n elem.current?.classList.remove('humany-scrolling');\n }, 500);\n }, [elem]);\n\n const onTouchStart = useCallback(\n (event: any) => {\n previousY.current = event.touches[0].clientY;\n },\n [elem]\n );\n\n const traverseScrollable = (element: HTMLElement): any => {\n if (isScrollable(element)) {\n if (element === elem.current) {\n return element;\n }\n return null;\n }\n if (element.parentElement) {\n return traverseScrollable(element.parentElement);\n }\n return null;\n };\n const isScrollable = (element: HTMLElement) => {\n return (\n element.scrollWidth > element.clientWidth || element.scrollHeight > element.clientHeight\n );\n };\n\n const onTouchMove = useCallback(\n (event: any) => {\n if (!event.cancelable) {\n return;\n }\n const top = event.touches[0].clientY;\n const firstScrollable = traverseScrollable(event.target);\n if (!firstScrollable) {\n return;\n }\n\n const scrollTop = firstScrollable.scrollTop;\n const direction = previousY.current - top < 0 ? 'up' : 'down';\n\n const isAtTop = scrollTop <= 0 && direction === 'up';\n const isAtBottom =\n scrollTop >= firstScrollable.scrollHeight - firstScrollable.offsetHeight &&\n direction === 'down';\n\n if (isAtTop || isAtBottom) {\n // Don't scroll up if already at top,\n // and don't scroll down if bottom has been reached\n event.preventDefault();\n }\n\n previousY.current = top;\n },\n [elem, previousY]\n );\n\n useEventListener('scroll', onScroll, elem.current, () => elem.current && scrollable);\n\n // This will prevent scrolling causing browser\n // to freeze on Safari / Chrome on iOS\n useEventListener('touchstart', onTouchStart, elem.current, () => elem.current && scrollable);\n\n useEventListener('touchmove', onTouchMove, elem.current, () => elem.current && scrollable);\n\n if (!scrollable) {\n return ['', elem];\n }\n\n return [styling, elem];\n};\n\nconst styling = `\n overflow-y: ${\n browser() === Browsers.Chrome || browser() === Browsers.EdgeChromium ? 'overlay' : 'auto'\n };\n overflow-x: hidden;\n -ms-overflow-style: none; /* IE 10+ */\n scrollbar-width: thin; /* Firefox */\n scrollbar-color: transparent transparent; /* Firefox */\n\n ::-webkit-scrollbar {\n width: 3px !important;\n background-color: transparent;\n border-left: none;\n }\n ::-webkit-scrollbar-thumb {\n background-color: transparent;\n }\n ::-webkit-scrollbar-track {\n -webkit-box-shadow: none !important;\n background-color: transparent;\n }\n &.humany-scrolling {\n scrollbar-color: #7F7F7F transparent;\n scrollbar-width: thin; /* Firefox */\n -ms-overflow-style: none; /* IE 10+ */\n\n ::-webkit-scrollbar-thumb {\n background-color: #7F7F7F;\n }\n }\n`;\n","import { WidgetSettings } from '@telia-ace/widget-core';\nimport { useEffect, useState } from 'react';\nimport useContainer from './use-container';\nimport useIsMounted from './use-is-mounted';\n\nconst useSettings = (): WidgetSettings | null => {\n const [settings, setSettings] = useState<WidgetSettings | null>(null);\n const container = useContainer();\n const isMounted = useIsMounted();\n\n useEffect(() => {\n container.get('settings').then((settings: WidgetSettings) => {\n if (isMounted.current) {\n setSettings(settings);\n }\n });\n }, [isMounted]);\n\n return settings;\n};\n\nexport default useSettings;\n","import { useCallback, useState } from 'react';\n\nconst useToggle = (initialValue: boolean = false): [boolean, (forced?: boolean) => void] => {\n const [value, setValue] = useState(initialValue);\n const toggle = useCallback((forced?: boolean) => {\n setValue(typeof forced === 'boolean' ? forced : (v) => !v);\n }, []);\n\n return [value, toggle];\n};\n\nexport default useToggle;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useComponentPlatform, useContainer, useEventListener, useIsMounted } from '.';\n\nexport default (handler: (...args: any[]) => void) => {\n const container = useContainer();\n const components = useComponentPlatform();\n const widgetDOMElement: HTMLElement = container.get('widgetDOMElement');\n const [viewDOMElement, setViewDOMElement] = useState<Element | null>(null);\n const [rootDOMElement, setRootDOMElement] = useState<Element | null>(null);\n const isMounted = useIsMounted();\n\n useEffect(() => {\n if (components && isMounted.current) {\n const rootArea = components.nodes.all.find((n) => n.name === 'root-area');\n const view = components.nodes.all.find((n) => n.type === 'view');\n if (\n !view?.attributes.properties.animation &&\n !rootArea?.attributes.properties.animation\n ) {\n // if view and root does not use animations, call handler on render\n handler();\n } else {\n // else add elements to state for transitionend-event handling\n const getElement = (id = '') =>\n widgetDOMElement?.querySelector(`[data-node-id=\"${id}\"]`);\n\n const viewDOMElement = getElement(view?.id);\n if (viewDOMElement) {\n setViewDOMElement(viewDOMElement);\n }\n\n const rootDOMElement = getElement(rootArea?.id);\n if (rootDOMElement) {\n setRootDOMElement(rootDOMElement);\n }\n }\n }\n }, [components, container, isMounted]);\n\n const eventListener = useCallback(\n (event: Event) => {\n if (\n isMounted.current &&\n (event.target === viewDOMElement || event.target === rootDOMElement)\n ) {\n handler();\n }\n },\n [handler, isMounted, viewDOMElement, rootDOMElement]\n );\n\n useEventListener('transitionend', eventListener, viewDOMElement as HTMLElement);\n\n useEventListener('transitionend', eventListener, rootDOMElement as HTMLElement);\n};\n","import { Container, EventListener } from '@webprovisions/platform';\nimport { useEffect } from 'react';\nimport useEvents from './use-events';\n\nconst useWidgetEvent = (\n event: string,\n callback: EventListener,\n dependencies: any[] = [],\n passedContainer?: Container\n): ((data: any) => void) => {\n const events = useEvents(passedContainer);\n\n useEffect(() => {\n if (events) {\n const unsubscribe = events.subscribe(event, callback);\n\n return () => {\n unsubscribe();\n };\n }\n }, [events].concat(dependencies));\n\n return (data) => events?.dispatch(event, data);\n};\n\nexport default useWidgetEvent;\n","import useWidgetEvent from './use-widget-event';\n\nconst useUniqueMenu = (id: string, callback: () => void): Function => {\n const dispatch = useWidgetEvent('widget:menu-toggled', (_, triggeredId) => {\n if (triggeredId !== id) {\n callback();\n }\n });\n\n return () => dispatch(id);\n};\n\nexport default useUniqueMenu;\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { convertToStringAttributes } from '../utils';\n\nexport type Props = React.ComponentProps<'span'>;\n\nconst Text: React.FC<Props> = ({ className, children, ...other }) => {\n return (\n <span\n className={appendClassNames(className, 'humany-text')}\n {...convertToStringAttributes(other)}\n >\n {children}\n </span>\n );\n};\n\nexport default Text;\n","import { css, Theme } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport Button from './components/button';\nimport Text from './components/text';\nimport { headingElement } from './utils/heading-styles';\n\ntype InvertedHoverButtonSettings = {\n primaryColor: string;\n secondaryColor: string;\n active?: boolean;\n theme: Theme;\n disabled?: boolean;\n};\n\nexport const contentBox = (p: { theme: Theme; 'data-loading'?: boolean }) => css`\n display: flex;\n justify-content: center;\n flex-direction: column;\n background: #ffffff;\n border-radius: ${p.theme.borderRadius};\n border: ${p.theme.border};\n box-shadow: ${p.theme.boxShadow || 'none'};\n ${p['data-loading'] && 'min-height: 150px;'}\n`;\n\nexport const buttonCss = (p: { theme: Partial<Theme> }) => css`\n cursor: pointer;\n text-align: center;\n border: none;\n font-weight: 300;\n padding: ${p.theme.sizes?.normal};\n border-radius: ${p.theme.borderRadius};\n font-family: ${p.theme.fonts?.type};\n font-size: ${p.theme.fonts?.normal};\n`;\n\nexport const invertedHoverButton = (p: InvertedHoverButtonSettings) => {\n const { primaryColor, secondaryColor, active, theme, disabled } = p;\n return css`\n ${buttonCss(p)}\n border: 1px solid ${active ? secondaryColor : primaryColor};\n background-color: ${active ? primaryColor : secondaryColor};\n\n color: ${active ? secondaryColor : primaryColor};\n transition: background-color 200ms ease-out, color 200ms ease-out;\n\n span,\n i,\n p,\n a {\n transition: color 200ms ease-out;\n color: ${active ? secondaryColor : primaryColor};\n font-size: ${theme.fonts?.normal};\n }\n\n ${!disabled &&\n css`\n &:hover {\n background-color: ${primaryColor};\n color: ${secondaryColor};\n\n span,\n i,\n p,\n a {\n color: ${secondaryColor};\n }\n }\n\n &:focus-visible {\n ${borderTabStyle(p)};\n }\n `}\n `;\n};\n\nexport const borderTabStyle = (p: { theme: Partial<Theme> }) => css`\n outline: ${p.theme.accessibility?.border};\n color: ${p.theme.accessibility?.colors?.inactiveText};\n border-color: transparent;\n`;\n\nexport const linkTabStyle = (p: { theme: Theme }) => css`\n ${borderTabStyle(p)}\n text-decoration: underline;\n`;\n\nexport const paddedBorderTabStyle = (p: { theme: Partial<Theme> }) => css`\n ${borderTabStyle(p)}\n outline-offset: ${p.theme.sizes?.small};\n`;\n\nexport const CloseButton = styled(Button)<any>`\n position: absolute;\n top: ${(p) => p.theme.sizes?.normal};\n right: ${(p) => p.theme.sizes?.normal};\n z-index: 1;\n\n svg {\n stroke: ${(p) => p.theme.colors?.text};\n }\n\n &:focus-visible {\n ${borderTabStyle}\n padding: ${(p) => p.theme.sizes?.small};\n height: 15px;\n box-sizing: content-box;\n }\n`;\n\nexport const StyledText = styled(Text)`\n font-size: ${(p) => p.theme.fonts?.normal};\n font-weight: normal;\n line-height: 1.2em;\n color: ${(p) => p.theme.colors?.text};\n`;\n\nexport const list = (p: { theme: Partial<Theme> }) => css`\n padding: 0;\n margin: 0;\n list-style: none;\n > li {\n margin: 0 0 ${p.theme.sizes?.normal};\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n &:focus {\n outline-offset: -2px;\n }\n > a {\n text-decoration: none;\n }\n }\n > li:last-child {\n margin: 0;\n }\n`;\n\nexport const itemList = (p: { theme: Partial<Theme> }) => css`\n > div {\n ${headingElement(p)(\n '> h1',\n css`\n margin: 0 0 ${p.theme.sizes?.normal};\n font-size: ${p.theme.fonts?.medium};\n font-weight: normal;\n line-height: 1.8em;\n color: ${p.theme.colors?.text};\n `\n )}\n }\n > ul {\n ${list(p)}\n }\n ${headingElement(p)(\n 'h1',\n css`\n display: flex;\n align-items: center;\n i {\n margin: 7px ${p.theme.sizes?.normal} 0 0;\n width: 24px;\n display: inline-block;\n vertical-align: text-bottom;\n align-self: flex-start;\n min-width: 24px;\n min-height: 24px;\n text-align: center;\n }\n `\n )}\n`;\n\nexport const genericHtml = (p: { theme: Theme }) => css`\n font-size: ${p.theme.fonts?.normal};\n font-weight: 300;\n line-height: 1.5em;\n color: ${p.theme.colors?.text};\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n word-break: break-word;\n &:first-child {\n margin-top: 0;\n }\n &:only-child {\n margin: 0;\n }\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n a {\n color: ${p.theme.colors?.link};\n &:focus-visible {\n ${linkTabStyle(p)};\n }\n }\n\n img {\n max-width: 100% !important;\n height: auto !important;\n }\n\n p {\n word-break: break-word;\n margin: ${p.theme.sizes?.normal} 0;\n }\n\n p:first-child {\n margin: 0 0 ${p.theme.sizes?.normal};\n }\n\n p:last-child {\n margin: ${p.theme.sizes?.normal} 0 0;\n }\n\n p:only-child {\n margin: 0;\n }\n`;\n","import { FC, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport type Props = {\n elementId?: string;\n parent?: Element | HTMLElement;\n children?: any;\n};\n\nconst Portal: FC<Props> = ({\n elementId = 'humany-portal-elements',\n parent = document.body,\n children,\n}) => {\n const [container] = useState(() => {\n const el = document.getElementById(elementId) || document.createElement('div');\n el.id = elementId;\n return el;\n });\n\n useEffect(() => {\n parent.appendChild(container);\n\n return () => {\n if (container.childElementCount <= 1) {\n parent.removeChild(container);\n }\n };\n }, [container]);\n\n return createPortal(children, container);\n};\n\nexport default Portal;\n","import styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { Icon } from '.';\n\nexport type Symbol = {\n type: 'Uri' | 'Svg' | 'FontAwesome' | 'Text' | string;\n content: string;\n};\n\nexport type HtmlIconProps = Merge<React.ComponentProps<'i'>, React.ComponentProps<'svg'>>;\n\nexport type Props = Merge<\n HtmlIconProps,\n {\n symbol: Symbol;\n backgroundSize?: string;\n size?: number;\n text?: string;\n elementStyle?: Object;\n }\n>;\n\nconst SymbolBadge: React.FC<Props> = ({\n text = '',\n backgroundSize = 'contain',\n size = 12,\n symbol = {\n content: '',\n type: '',\n },\n elementStyle = {},\n className,\n ...other\n}) => {\n const { type, content } = symbol;\n\n const sharedProps = {\n 'aria-label': text,\n role: 'presentation',\n };\n\n switch (type) {\n case 'Uri': {\n const style = {\n backgroundSize,\n backgroundImage: `url('${content}')`,\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center',\n backgroundAttachment: 'center',\n };\n return (\n <i\n className={appendClassNames(className, 'humany-icon', 'humany-custom-icon')}\n title={text}\n style={{ ...style, ...elementStyle }}\n {...sharedProps}\n {...(other as React.ComponentProps<'i'>)}\n />\n );\n }\n case 'Svg': {\n const svgProps = {\n className: appendClassNames(className, 'humany-icon'),\n width: `${size}`,\n fill: 'none',\n xmlns: 'http://www.w3.org/2000/svg',\n ...(other as React.ComponentProps<'svg'>),\n ref: null,\n };\n const style = { minWidth: `${size}` };\n switch (content) {\n case 'search': {\n return (\n <svg viewBox=\"0 0 32 30\" {...svgProps}>\n <circle\n cx=\"14.8457\"\n cy=\"14.5175\"\n r=\"8.14359\"\n transform=\"rotate(45 14.8457 14.5175)\"\n />\n <line x1=\"21.1001\" y1=\"20.4865\" x2=\"26.5798\" y2=\"25.9661\" />\n </svg>\n );\n }\n\n case 'clear': {\n return (\n <svg viewBox=\"0 0 27 27\" {...svgProps}>\n <circle\n cx=\"13.4351\"\n cy=\"13.435\"\n r=\"9\"\n transform=\"rotate(45 13.4351 13.435)\"\n stroke=\"black\"\n />\n <line\n x1=\"16.6172\"\n y1=\"10.2531\"\n x2=\"10.2533\"\n y2=\"16.6171\"\n stroke=\"black\"\n />\n <line\n x1=\"16.6171\"\n y1=\"16.617\"\n x2=\"10.2532\"\n y2=\"10.2531\"\n stroke=\"black\"\n />\n </svg>\n );\n }\n\n case 'close': {\n return (\n <svg viewBox=\"0 0 13 13\" {...svgProps}>\n <path d=\"M12.3068 0.50647L1.27246 11.7273\" stroke=\"black\" />\n <path d=\"M12.2812 11.9473L1.24686 0.726451\" stroke=\"black\" />\n </svg>\n );\n }\n\n case 'caret-right': {\n return (\n <svg viewBox=\"0 0 14 14\" style={style} {...svgProps}>\n <line x1=\"4.13\" y1=\"1.05\" x2=\"10.13\" y2=\"7.05\" stroke=\"black\" />\n <line x1=\"10.13\" y1=\"6.95\" x2=\"4.13\" y2=\"12.95\" stroke=\"black\" />\n </svg>\n );\n }\n\n case 'caret-left': {\n return (\n <svg viewBox=\"0 0 14 14\" style={style} {...svgProps}>\n <line x1=\"10.13\" y1=\"12.95\" x2=\"4.13\" y2=\"6.95\" stroke=\"black\" />\n <line x1=\"4.13\" y1=\"7.05\" x2=\"10.13\" y2=\"1.05\" stroke=\"black\" />\n </svg>\n );\n }\n\n case 'caret-up': {\n return (\n <CaretUp viewBox=\"0 0 14 14\" style={style} {...svgProps}>\n <line x1=\"13.09\" y1=\"3.99\" x2=\"7.1\" y2=\"9.99\" stroke=\"black\" />\n <line x1=\"7.19\" y1=\"9.99\" x2=\"1.19\" y2=\"3.99\" stroke=\"black\" />\n </CaretUp>\n );\n }\n\n case 'caret-down': {\n return (\n <svg viewBox=\"0 0 14 14\" style={style} {...svgProps}>\n <line x1=\"13.09\" y1=\"3.99\" x2=\"7.1\" y2=\"9.99\" stroke=\"black\" />\n <line x1=\"7.19\" y1=\"9.99\" x2=\"1.19\" y2=\"3.99\" stroke=\"black\" />\n </svg>\n );\n }\n\n case 'back': {\n return (\n <svg viewBox=\"0 0 18 18\" {...svgProps}>\n <line\n y1=\"-0.5\"\n x2=\"11.724\"\n y2=\"-0.5\"\n transform=\"matrix(-0.682355 -0.731021 0.682355 -0.731021 13 16.9999)\"\n stroke=\"white\"\n />\n <line\n y1=\"-0.5\"\n x2=\"11.724\"\n y2=\"-0.5\"\n transform=\"matrix(0.682355 -0.731021 0.682355 0.731021 5 9.5705)\"\n stroke=\"white\"\n />\n </svg>\n );\n }\n\n case 'alert': {\n return (\n <svg viewBox=\"0 0 19 19\" {...svgProps}>\n <circle cx=\"9.5\" cy=\"9.5\" r=\"9.5\" fill=\"#CA0813\" />\n <path\n d=\"M10.36 4.878V8.882C10.36 9.30667 10.339 9.72433 10.297 10.135C10.255 10.541 10.199 10.9727 10.129 11.43H8.96C8.89 10.9727 8.834 10.541 8.792 10.135C8.75 9.72433 8.729 9.30667 8.729 8.882V4.878H10.36ZM8.463 14.048C8.463 13.9033 8.48867 13.7657 8.54 13.635C8.596 13.5043 8.67067 13.3923 8.764 13.299C8.862 13.2057 8.97633 13.131 9.107 13.075C9.23767 13.019 9.37767 12.991 9.527 12.991C9.67167 12.991 9.80933 13.019 9.94 13.075C10.0707 13.131 10.1827 13.2057 10.276 13.299C10.3693 13.3923 10.444 13.5043 10.5 13.635C10.556 13.7657 10.584 13.9033 10.584 14.048C10.584 14.1973 10.556 14.3373 10.5 14.468C10.444 14.594 10.3693 14.7037 10.276 14.797C10.1827 14.8903 10.0707 14.9627 9.94 15.014C9.80933 15.07 9.67167 15.098 9.527 15.098C9.37767 15.098 9.23767 15.07 9.107 15.014C8.97633 14.9627 8.862 14.8903 8.764 14.797C8.67067 14.7037 8.596 14.594 8.54 14.468C8.48867 14.3373 8.463 14.1973 8.463 14.048Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n\n case 'send': {\n return (\n <svg viewBox=\"0 0 20 17\" {...svgProps}>\n <path\n d=\"M18.95 8.56428L0.949951 0.941406V7.02531L13.6351 8.47059L0.950001 9.92276L0.949951 15.9414L18.95 8.56428Z\"\n fill=\"#A6A6A6\"\n stroke=\"#A6A6A6\"\n strokeWidth=\"0.1\"\n />\n </svg>\n );\n }\n\n case 'chat': {\n return (\n <svg viewBox=\"-2 -3 40 40\" {...svgProps}>\n <path\n strokeWidth=\"0\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.9799 34C21.2676 34 25.1841 32.4256 28.1725 29.8285L34.9534 32.1994C35.7991 32.4951 36.553 31.5778 36.0892 30.8173L32.2559 24.5317C33.3474 22.3103 33.9598 19.8153 33.9598 17.1786C33.9598 7.88838 26.3576 0.357178 16.9799 0.357178C7.60216 0.357178 0 7.88838 0 17.1786C0 26.4688 7.60216 34 16.9799 34ZM30.7031 24.565C31.9094 22.3701 32.5948 19.8536 32.5948 17.1786C32.5948 8.6352 25.6038 1.70942 16.9799 1.70942C8.35601 1.70942 1.36498 8.6352 1.36498 17.1786C1.36498 25.722 8.35601 32.6478 16.9799 32.6478C21.1946 32.6478 25.0193 30.9935 27.8285 28.3047L34.3975 30.5798L30.7031 24.565Z\"\n fill=\"currentColor\"\n />\n <path\n strokeWidth=\"0\"\n d=\"M12.9395 17.1786C12.9395 18.6079 11.7809 19.7665 10.3516 19.7665C8.92237 19.7665 7.76373 18.6079 7.76373 17.1786C7.76373 15.7493 8.92237 14.5907 10.3516 14.5907C11.7809 14.5907 12.9395 15.7493 12.9395 17.1786Z\"\n fill=\"currentColor\"\n />\n <path\n strokeWidth=\"0\"\n d=\"M19.4093 17.1786C19.4093 18.6079 18.2507 19.7665 16.8214 19.7665C15.3921 19.7665 14.2335 18.6079 14.2335 17.1786C14.2335 15.7493 15.3921 14.5907 16.8214 14.5907C18.2507 14.5907 19.4093 15.7493 19.4093 17.1786Z\"\n fill=\"currentColor\"\n />\n <path\n strokeWidth=\"0\"\n d=\"M25.8791 17.1786C25.8791 18.6079 24.7204 19.7665 23.2912 19.7665C21.8619 19.7665 20.7033 18.6079 20.7033 17.1786C20.7033 15.7493 21.8619 14.5907 23.2912 14.5907C24.7204 14.5907 25.8791 15.7493 25.8791 17.1786Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n\n case 'chat-new': {\n return (\n <svg viewBox=\"0 0 26 24\" {...svgProps}>\n <path\n d=\"M22.1109 10.3813C22.3941 10.2876 22.6674 10.1722 22.9288 10.0371C23.1902 10.9797 23.33 11.9734 23.33 13C23.33 19.0751 18.4348 24 12.3962 24C9.6352 24 7.11325 22.9705 5.18893 21.2721L0.82251 22.8226C0.277922 23.0159 -0.207515 22.4161 0.0911259 21.9188L2.55952 17.8084C1.85665 16.3558 1.46233 14.7242 1.46233 13C1.46233 6.92487 6.35758 2 12.3962 2C13.4013 2 14.3747 2.13645 15.2992 2.39193C15.1628 2.65458 15.0464 2.92925 14.9519 3.21394C14.1358 2.99881 13.2793 2.88427 12.3962 2.88427C6.84301 2.88427 2.34128 7.41324 2.34128 13C2.34128 14.7493 2.78263 16.3949 3.5594 17.8302L1.18047 21.7634L5.41046 20.2757C7.21939 22.034 9.68221 23.1157 12.3962 23.1157C17.9493 23.1157 22.451 18.5868 22.451 13C22.451 12.0944 22.3328 11.2165 22.1109 10.3813Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M25.6633 4C25.6633 6.20914 23.8724 8 21.6633 8C19.4541 8 17.6633 6.20914 17.6633 4C17.6633 1.79086 19.4541 0 21.6633 0C23.8724 0 25.6633 1.79086 25.6633 4Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n case 'agent': {\n return (\n <svg viewBox=\"0 0 36 30\" {...svgProps}>\n <path\n d=\"M0.900024 15.3887C0.900024 12.9034 2.91474 10.8887 5.40002 10.8887H6.28179V20.0995H5.40002C2.91474 20.0995 0.900024 18.0848 0.900024 15.5995V15.3887Z\"\n stroke=\"white\"\n />\n <path\n d=\"M34.65 15.5996C34.65 18.0849 32.6353 20.0996 30.15 20.0996L29.2683 20.0996L29.2683 10.8888L30.15 10.8888C32.6353 10.8888 34.65 12.9035 34.65 15.3888L34.65 15.5996Z\"\n stroke=\"white\"\n />\n <path\n d=\"M29.2565 20.5974C29.2565 26.341 22.8747 26.9792 19.6838 26.9792\"\n stroke=\"white\"\n />\n <circle cx=\"17.4074\" cy=\"26.9795\" r=\"2.05271\" stroke=\"white\" />\n <path\n d=\"M6.28467 12.9396C6.28467 11.195 6.28686 18.0452 6.28467 8.47234C6.28248 -1.10049 29.2591 -1.10047 29.259 8.47234C29.259 18.0452 29.2569 11.6631 29.259 12.9396\"\n stroke=\"white\"\n />\n </svg>\n );\n }\n case 'minimize': {\n return (\n <svg viewBox=\"0 -10 22 22\" {...svgProps}>\n <path d=\"M0 1H22\" stroke=\"white\" />\n </svg>\n );\n }\n case 'sorting': {\n return (\n <svg viewBox=\"0 0 18 14\" {...svgProps}>\n <path d=\"M18 1H0M8 13H0M13 7H0\" />\n </svg>\n );\n }\n case 'copy': {\n return (\n <svg viewBox=\"0 0 19 17\" {...svgProps}>\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"11.6667\"\n height=\"11.6014\"\n rx=\"1.5\"\n fill=\"white\"\n />\n <rect\n x=\"6.83301\"\n y=\"4.89868\"\n width=\"11.6667\"\n height=\"11.6014\"\n rx=\"1.5\"\n fill=\"white\"\n />\n </svg>\n );\n }\n case 'print': {\n return (\n <svg viewBox=\"0 0 16 17\" {...svgProps}>\n <path\n d=\"M4.31592 0.999999C4.31592 0.723857 4.53977 0.5 4.81592 0.5H11.1845C11.4606 0.5 11.6845 0.723858 11.6845 1V4.53323H4.31592V0.999999Z\"\n fill=\"white\"\n stroke=\"black\"\n />\n <path\n d=\"M0.5 4.84595C0.5 4.56981 0.723858 4.34595 1 4.34595H15C15.2761 4.34595 15.5 4.5698 15.5 4.84595V10.8399C15.5 11.116 15.2761 11.3399 15 11.3399H1C0.723858 11.3399 0.5 11.116 0.5 10.8399V4.84595Z\"\n fill=\"white\"\n stroke=\"black\"\n />\n <path\n d=\"M4.31592 10.0061C4.31592 9.72996 4.53978 9.5061 4.81592 9.5061H11.1845C11.4606 9.5061 11.6845 9.72996 11.6845 10.0061V16.0001C11.6845 16.2762 11.4606 16.5001 11.1845 16.5001H4.81592C4.53978 16.5001 4.31592 16.2762 4.31592 16.0001V10.0061Z\"\n fill=\"white\"\n stroke=\"black\"\n />\n <line\n x1=\"5.29004\"\n y1=\"10.8323\"\n x2=\"10.7101\"\n y2=\"10.8323\"\n stroke=\"black\"\n />\n <line\n x1=\"5.29004\"\n y1=\"12.5242\"\n x2=\"10.7101\"\n y2=\"12.5242\"\n stroke=\"black\"\n />\n <line\n x1=\"5.29004\"\n y1=\"14.2161\"\n x2=\"10.7101\"\n y2=\"14.2161\"\n stroke=\"black\"\n />\n </svg>\n );\n }\n case 'language': {\n return (\n <svg viewBox=\"0 0 19 19\" {...svgProps}>\n <path\n d=\"M9.5 18C14.1944 18 18 14.1944 18 9.5C18 4.80558 14.1944 1 9.5 1M9.5 18C4.80558 18 1 14.1944 1 9.5C1 4.80558 4.80558 1 9.5 1M9.5 18C11.823 18 13.7062 14.1944 13.7062 9.5C13.7062 4.80558 11.823 1 9.5 1M9.5 18C7.17699 18 5.29381 14.1944 5.29381 9.5C5.29381 4.80558 7.17699 1 9.5 1M1.44333 6.78351H17.4742M1.3088 11.7784H17.6912\"\n stroke=\"black\"\n />\n </svg>\n );\n }\n case 'information': {\n return (\n <svg viewBox=\"0 0 17 17\" {...svgProps}>\n <path\n d=\"M9.72182 5.99993C10.0524 5.99993 10.3203 5.73198 10.3203 5.40145C10.3203 5.07092 10.0524 4.80297 9.72182 4.80297C9.39129 4.80297 9.12335 5.07092 9.12335 5.40145C9.12335 5.73198 9.39129 5.99993 9.72182 5.99993Z\"\n fill=\"black\"\n />\n\n <path\n d=\"M7.21887 6.67639C6.89117 6.71981 6.66072 7.02066 6.70414 7.34836C6.74756 7.67605 7.04841 7.9065 7.3761 7.86308L8.353 7.73364L7.17405 11.3945C7.11289 11.5844 7.15164 11.7825 7.26117 11.932C7.38068 12.1287 7.60875 12.2469 7.85155 12.2147L9.40669 12.0087C9.73436 11.9653 9.96479 11.6645 9.92137 11.3368C9.87795 11.0091 9.57713 10.7787 9.24947 10.8221L8.58762 10.9098L9.76774 7.24534C9.83038 7.05084 9.78821 6.84771 9.67254 6.69702C9.55085 6.50877 9.32791 6.39694 9.09093 6.42834L7.21887 6.67639Z\"\n fill=\"black\"\n />\n\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M17 8.5C17 13.1944 13.1944 17 8.5 17C3.80558 17 0 13.1944 0 8.5C0 3.80558 3.80558 0 8.5 0C13.1944 0 17 3.80558 17 8.5ZM16 8.5C16 12.8454 12.8454 16 8.5 16C4.15461 16 1 12.8454 1 8.5C1 4.15461 4.15461 1 8.5 1C12.8454 1 16 4.15461 16 8.5Z\"\n fill=\"black\"\n />\n </svg>\n );\n }\n case 'options': {\n return (\n <svg viewBox=\"0 0 16 2\" {...svgProps}>\n <circle cx=\"15\" cy=\"1\" r=\"1\" transform=\"rotate(90 15 1)\" fill=\"black\" />\n\n <circle cx=\"1\" cy=\"1\" r=\"1\" transform=\"rotate(90 1 1)\" fill=\"black\" />\n\n <circle cx=\"8\" cy=\"1\" r=\"1\" transform=\"rotate(90 8 1)\" fill=\"black\" />\n </svg>\n );\n }\n case 'browse': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"currentColor\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.16663 7.33334C6.16663 6.68901 6.68896 6.16667 7.33329 6.16667H10.25C10.8943 6.16667 11.4166 6.68901 11.4166 7.33334V10.25C11.4166 10.8943 10.8943 11.4167 10.25 11.4167H7.33329C6.68896 11.4167 6.16663 10.8943 6.16663 10.25V7.33334ZM7.33329 7.04167H10.25C10.411 7.04167 10.5416 7.17226 10.5416 7.33334V10.25C10.5416 10.4111 10.411 10.5417 10.25 10.5417H7.33329C7.17221 10.5417 7.04163 10.4111 7.04163 10.25V7.33334C7.04163 7.17226 7.17221 7.04167 7.33329 7.04167Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.16663 13.75C6.16663 13.1057 6.68896 12.5833 7.33329 12.5833H10.25C10.8943 12.5833 11.4166 13.1057 11.4166 13.75V16.6667C11.4166 17.311 10.8943 17.8333 10.25 17.8333H7.33329C6.68896 17.8333 6.16663 17.311 6.16663 16.6667V13.75ZM7.33329 13.4583H10.25C10.411 13.4583 10.5416 13.5889 10.5416 13.75V16.6667C10.5416 16.8278 10.411 16.9583 10.25 16.9583H7.33329C7.17221 16.9583 7.04163 16.8278 7.04163 16.6667V13.75C7.04163 13.5889 7.17221 13.4583 7.33329 13.4583Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.75 6.16667C13.1056 6.16667 12.5833 6.68901 12.5833 7.33334V10.25C12.5833 10.8943 13.1056 11.4167 13.75 11.4167H16.6666C17.311 11.4167 17.8333 10.8943 17.8333 10.25V7.33334C17.8333 6.68901 17.311 6.16667 16.6666 6.16667H13.75ZM16.6666 7.04167H13.75C13.5889 7.04167 13.4583 7.17226 13.4583 7.33334V10.25C13.4583 10.4111 13.5889 10.5417 13.75 10.5417H16.6666C16.8277 10.5417 16.9583 10.4111 16.9583 10.25V7.33334C16.9583 7.17226 16.8277 7.04167 16.6666 7.04167Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M17.8333 15.2083C17.8333 16.6581 16.658 17.8333 15.2083 17.8333C13.7585 17.8333 12.5833 16.6581 12.5833 15.2083C12.5833 13.7586 13.7585 12.5833 15.2083 12.5833C16.658 12.5833 17.8333 13.7586 17.8333 15.2083ZM16.9583 15.2083C16.9583 16.1748 16.1748 16.9583 15.2083 16.9583C14.2418 16.9583 13.4583 16.1748 13.4583 15.2083C13.4583 14.2418 14.2418 13.4583 15.2083 13.4583C16.1748 13.4583 16.9583 14.2418 16.9583 15.2083Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n case 'video': {\n if (style.minWidth && typeof style.minWidth === 'number') {\n style.minWidth = `${style.minWidth}px`;\n }\n return (\n <svg viewBox=\"0 0 25 25\" {...svgProps} style={style}>\n <path\n d=\"M16.8245 10.0758C18.7392 8.55799 21.3085 7.08973 21.7947 7.61552C22.5982 8.47863 22.5288 16.6929 21.7947 17.4766C21.3482 17.9627 18.7589 16.4945 16.8245 14.9866\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M2.61914 12.5385C2.61914 7.12973 4.41578 5.32715 9.80764 5.32715C15.1985 5.32715 16.9952 7.12973 16.9952 12.5385C16.9952 17.9462 15.1985 19.7497 9.80764 19.7497C4.41578 19.7497 2.61914 17.9462 2.61914 12.5385Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n case 'star-empty': {\n return (\n <svg viewBox=\"0 0 13 12\" {...svgProps}>\n <path\n d=\"M2 5.2767L5.11944 4.81796L6.70023 2L7.96487 4.81796L11 5.51699L8.75527 7.64684L9.18735 11L6.42623 9.40534L3.62295 10.7925L4.21311 7.64684L2 5.2767Z\"\n stroke=\"black\"\n />\n </svg>\n );\n }\n case 'star-filled': {\n return (\n <svg viewBox=\"0 0 13 12\" {...svgProps}>\n <path\n d=\"M2 5.2767L5.11944 4.81796L6.70023 2L7.96487 4.81796L11 5.51699L8.75527 7.64684L9.18735 11L6.42623 9.40534L3.62295 10.7925L4.21311 7.64684L2 5.2767Z\"\n fill=\"black\"\n stroke=\"black\"\n />\n </svg>\n );\n }\n case 'cog-wheel': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.273 2.68498V1C15.273 0.447715 14.8253 0 14.273 0H9.72754C9.17525 0 8.72754 0.447715 8.72754 1V2.6852C8.72754 3.20708 8.09656 3.46843 7.72754 3.09941L6.53588 1.90775C6.14536 1.51723 5.51219 1.51723 5.12167 1.90775L1.90755 5.12187C1.51702 5.5124 1.51702 6.14556 1.90755 6.53609L3.09865 7.72719C3.46767 8.09621 3.20632 8.72719 2.68444 8.72719H1C0.447715 8.72719 0 9.1749 0 9.72719V14.2726C0 14.8249 0.447715 15.2726 1 15.2726H2.68534C3.20722 15.2726 3.46857 15.9036 3.09955 16.2726L1.90793 17.4643C1.51741 17.8548 1.51741 18.488 1.90793 18.8785L5.12205 22.0926C5.51258 22.4831 6.14574 22.4831 6.53627 22.0926L7.72754 20.9013C8.09656 20.5323 8.72754 20.7937 8.72754 21.3155V23C8.72754 23.5523 9.17525 24 9.72754 24H14.273C14.8253 24 15.273 23.5523 15.273 23V21.3158C15.273 20.7939 15.904 20.5325 16.273 20.9015L17.4639 22.0924C17.8544 22.483 18.4876 22.483 18.8781 22.0924L22.0922 18.8783C22.4828 18.4878 22.4828 17.8546 22.0922 17.4641L20.9008 16.2726C20.5317 15.9036 20.7931 15.2726 21.315 15.2726H23C23.5523 15.2726 24 14.8249 24 14.2726V9.72719C24 9.1749 23.5523 8.72719 23 8.72719H21.3159C20.794 8.72719 20.5326 8.09621 20.9017 7.72719L22.0926 6.53625C22.4831 6.14572 22.4831 5.51256 22.0926 5.12203L18.8785 1.90791C18.488 1.51739 17.8548 1.51739 17.4643 1.90791L16.273 3.0992C15.904 3.46822 15.273 3.20686 15.273 2.68498ZM16.5792 4.20716C16.263 4.52345 15.7775 4.58532 15.3687 4.40375C15.2439 4.34832 15.1174 4.29587 14.9895 4.2465C14.5723 4.08555 14.273 3.69861 14.273 3.25149V2C14.273 1.44771 13.8253 1 13.273 1H10.7275C10.1753 1 9.72754 1.44772 9.72754 2V3.25116C9.72754 3.69832 9.42816 4.08528 9.01096 4.2462C8.88288 4.29561 8.75633 4.34809 8.6314 4.40357C8.22262 4.58511 7.73715 4.52323 7.42087 4.20695L6.53588 3.32196C6.14536 2.93144 5.51219 2.93144 5.12167 3.32196L3.32176 5.12187C2.93124 5.5124 2.93124 6.14556 3.32176 6.53609L4.20676 7.42109C4.52303 7.73736 4.58491 8.22283 4.40338 8.63161C4.34797 8.75638 4.29555 8.88276 4.2462 9.01067C4.08526 9.42784 3.69831 9.72719 3.25118 9.72719H2C1.44772 9.72719 1 10.1749 1 10.7272V13.2726C1 13.8249 1.44772 14.2726 2 14.2726H3.2511C3.69825 14.2726 4.0852 14.572 4.24614 14.9892C4.29556 15.1173 4.34807 15.2439 4.40357 15.3688C4.58513 15.7776 4.52327 16.2631 4.20698 16.5794L3.32215 17.4643C2.93162 17.8548 2.93162 18.488 3.32215 18.8785L5.12205 20.6784C5.51258 21.0689 6.14574 21.0689 6.53627 20.6784L7.42136 19.7933C7.73762 19.477 8.22305 19.4151 8.63183 19.5966C8.75662 19.6521 8.88302 19.7045 9.01096 19.7538C9.42816 19.9147 9.72754 20.3017 9.72754 20.7489V22C9.72754 22.5523 10.1753 23 10.7275 23H13.273C13.8253 23 14.273 22.5523 14.273 22V20.7485C14.273 20.3014 14.5723 19.9145 14.9895 19.7535C15.1173 19.7042 15.2436 19.6518 15.3682 19.5965C15.777 19.4149 16.2625 19.4768 16.5788 19.7931L17.4639 20.6782C17.8544 21.0687 18.4876 21.0687 18.8781 20.6782L20.678 18.8783C21.0685 18.4878 21.0685 17.8546 20.678 17.4641L19.7929 16.579C19.4766 16.2627 19.4147 15.7772 19.5963 15.3684C19.6517 15.2436 19.7042 15.1172 19.7535 14.9892C19.9145 14.572 20.3014 14.2726 20.7486 14.2726H22C22.5523 14.2726 23 13.8249 23 13.2726V10.7272C23 10.1749 22.5523 9.72719 22 9.72719H20.7485C20.3013 9.72719 19.9144 9.42784 19.7535 9.01067C19.7042 8.8829 19.6518 8.75665 19.5965 8.63201C19.415 8.22324 19.4768 7.7378 19.7931 7.42154L20.6784 6.53625C21.0689 6.14572 21.0689 5.51256 20.6784 5.12203L18.8785 3.32213C18.488 2.9316 17.8548 2.9316 17.4643 3.32213L16.5792 4.20716ZM16.5999 12.0001C16.5999 14.5406 14.5404 16.6001 11.9999 16.6001C9.45939 16.6001 7.3999 14.5406 7.3999 12.0001C7.3999 9.45958 9.45939 7.40009 11.9999 7.40009C14.5404 7.40009 16.5999 9.45958 16.5999 12.0001ZM17.5999 12.0001C17.5999 15.0929 15.0927 17.6001 11.9999 17.6001C8.90711 17.6001 6.3999 15.0929 6.3999 12.0001C6.3999 8.90729 8.90711 6.40009 11.9999 6.40009C15.0927 6.40009 17.5999 8.90729 17.5999 12.0001Z\"\n fill=\"black\"\n />\n </svg>\n );\n }\n case 'zoom-in': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M21.9774 20.8287L17.9149 16.7662C17.8437 16.6957 17.76 16.639 17.668 16.5992C20.7612 12.9331 20.415 7.48045 16.883 4.23507C13.3509 0.989694 7.88848 1.10517 4.49673 4.49691C1.10499 7.88866 0.98951 13.3511 4.23489 16.8831C7.48027 20.4152 12.9329 20.7614 16.599 17.6682C16.6388 17.7601 16.6955 17.8439 16.766 17.9151L20.8285 21.9776C21.1457 22.2948 21.6601 22.2948 21.9774 21.9776C22.2947 21.6603 22.2947 21.1459 21.9774 20.8287ZM10.8404 18.1531C6.80186 18.1531 3.52794 14.8792 3.52794 10.8406C3.52794 6.80204 6.80186 3.52813 10.8404 3.52813C14.879 3.52813 18.1529 6.80204 18.1529 10.8406C18.1483 14.8773 14.8771 18.1484 10.8404 18.1531Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10.8749 6.75003C11.2892 6.75003 11.6249 7.08581 11.6249 7.50003V14.25C11.6249 14.6642 11.2892 15 10.8749 15C10.4607 15 10.1249 14.6642 10.1249 14.25V7.50003C10.1249 7.08581 10.4607 6.75003 10.8749 6.75003Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.74994 10.875C6.74994 10.4608 7.08573 10.125 7.49994 10.125H14.2499C14.6642 10.125 14.9999 10.4608 14.9999 10.875C14.9999 11.2892 14.6642 11.625 14.2499 11.625H7.49994C7.08573 11.625 6.74994 11.2892 6.74994 10.875Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n case 'zoom-out': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M22.1025 20.9536L18.04 16.8911C17.9688 16.8206 17.8851 16.764 17.7931 16.7241C20.8864 13.0581 20.5401 7.60539 17.0081 4.36001C13.476 1.11463 8.0136 1.23011 4.62185 4.62185C1.23011 8.0136 1.11463 13.476 4.36001 17.0081C7.60539 20.5401 13.0581 20.8864 16.7241 17.7931C16.764 17.8851 16.8206 17.9688 16.8911 18.04L20.9536 22.1025C21.2709 22.4198 21.7853 22.4198 22.1025 22.1025C22.4198 21.7853 22.4198 21.2709 22.1025 20.9536ZM10.9656 18.2781C6.92698 18.2781 3.65306 15.0041 3.65306 10.9656C3.65306 6.92698 6.92698 3.65306 10.9656 3.65306C15.0041 3.65306 18.2781 6.92698 18.2781 10.9656C18.2734 15.0022 15.0022 18.2734 10.9656 18.2781Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.87506 11C6.87506 10.5858 7.21085 10.25 7.62506 10.25H14.3751C14.7893 10.25 15.1251 10.5858 15.1251 11C15.1251 11.4142 14.7893 11.75 14.3751 11.75H7.62506C7.21085 11.75 6.87506 11.4142 6.87506 11Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n case 'download': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M22.5 11.1346V18.4038C22.498 20.1873 21.0527 21.6326 19.2692 21.6346H4.73077C2.94731 21.6326 1.50204 20.1873 1.5 18.4038V11.1346C1.5 10.6885 1.86162 10.3269 2.30769 10.3269C2.75377 10.3269 3.11538 10.6885 3.11538 11.1346V18.4038C3.1164 19.2956 3.83904 20.0182 4.73077 20.0192H19.2692C20.161 20.0182 20.8836 19.2956 20.8846 18.4038V11.1346C20.8846 10.6885 21.2462 10.3269 21.6923 10.3269C22.1384 10.3269 22.5 10.6885 22.5 11.1346ZM11.1434 16.2663C11.6167 16.7388 12.3832 16.7388 12.8565 16.2663L17.4172 11.7057C17.7326 11.3903 17.7326 10.8789 17.4172 10.5635C17.1018 10.2481 16.5904 10.2481 16.275 10.5635L12.8076 14.0308V3.05769C12.8076 2.61162 12.446 2.25 11.9999 2.25C11.5539 2.25 11.1923 2.61162 11.1923 3.05769V14.0308L7.72485 10.5636C7.40946 10.2482 6.89812 10.2482 6.58273 10.5636C6.26734 10.8789 6.26734 11.3903 6.58273 11.7057L11.1434 16.2663Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n case 'lightbox-close': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.2621 18.1129C19.4674 18.3182 19.5475 18.6173 19.4724 18.8977C19.3973 19.178 19.1783 19.397 18.8979 19.4721C18.6176 19.5472 18.3184 19.4671 18.1132 19.2619L12.1877 13.3363L6.26214 19.2619C6.0569 19.4671 5.75776 19.5472 5.47741 19.4721C5.19705 19.397 4.97807 19.178 4.90294 18.8977C4.82782 18.6173 4.90798 18.3182 5.11321 18.1129L11.0388 12.1874L5.11321 6.26186C4.90798 6.05663 4.82782 5.75749 4.90294 5.47713C4.97807 5.19678 5.19705 4.97779 5.47741 4.90267C5.75776 4.82755 6.0569 4.9077 6.26214 5.11294L12.1877 11.0385L18.1132 5.11294C18.4305 4.79567 18.9449 4.79567 19.2621 5.11294C19.5794 5.4302 19.5794 5.9446 19.2621 6.26186L13.3366 12.1874L19.2621 18.1129Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n case 'pagination-left': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.7935 18.7087C16.0092 18.9029 16.105 19.1974 16.0447 19.4813C15.9844 19.7652 15.7772 19.9954 15.5012 20.0852C15.2251 20.1749 14.9222 20.1105 14.7065 19.9164L6.58148 12.6039C6.41027 12.4498 6.3125 12.2303 6.3125 12C6.3125 11.7697 6.41027 11.5503 6.58148 11.3962L14.7065 4.08372C15.04 3.78354 15.5536 3.81054 15.8538 4.14402C16.154 4.4775 16.127 4.99119 15.7935 5.29136L8.33939 12L15.7935 18.7087Z\"\n fill=\"#222222\"\n />\n </svg>\n );\n }\n case 'pagination-right': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\" />\n </svg>\n );\n }\n default:\n break;\n }\n\n return null;\n }\n case 'FontAwesome': {\n return (\n <Icon\n className={className}\n faIcon={content}\n title={text}\n {...(other as React.ComponentProps<'i'>)}\n />\n );\n }\n default:\n case 'Text': {\n return text ? (\n <i\n className={appendClassNames(className, 'humany-letter-symbol')}\n title={text}\n {...sharedProps}\n {...(other as React.ComponentProps<'i'>)}\n >\n {text.substring(0, 2)}\n </i>\n ) : null;\n }\n }\n};\n\nconst CaretUp = styled.svg`\n transform: rotate(180deg);\n`;\n\nexport default SymbolBadge;\n","import styled from '@emotion/styled';\nimport React from 'react';\nimport { useContext } from '../hooks';\n\nexport type TypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span';\n\nconst defaultVariantMapping: {\n [key in TypographyVariant]: TypographyVariant;\n} = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n p: 'p',\n span: 'span',\n};\n\nexport type Props = {\n variant: TypographyVariant;\n component?: React.ElementType;\n className?: string;\n children?: React.ReactNode;\n};\n\nconst Typography: React.FC<Props> = ({ variant, component, className, children }) => {\n const { typographyVariantMapping = {} } = useContext();\n\n const variantMapping = {\n ...defaultVariantMapping,\n ...typographyVariantMapping,\n };\n\n const Component = component || variantMapping[variant] || 'span';\n\n return (\n <Base className={className} as={Component}>\n {children}\n </Base>\n );\n};\n\nconst Base = styled.span``;\n\nexport default Typography;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { appendClassNames, uuid } from '@telia-ace/widget-utilities';\nimport React, { useEffect, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport {\n useEventListener,\n useKeyPress,\n usePrevious,\n useScroll,\n useToggle,\n useUniqueMenu,\n useWidgetEvent,\n} from '../../hooks';\nimport { CloseButton } from '../../styles';\nimport Portal from '../portal';\nimport SymbolBadge from '../symbol-badge';\nimport Typography from '../typography';\n\nexport enum AnimationType {\n SlideInLeft = 'slide-in-left',\n SlideInRight = 'slide-in-right',\n SlideInBottom = 'slide-in-bottom',\n SlideInTop = 'slide-in-top',\n // Fade = 'fade',\n}\n\ntype AnimationComponentProps = {\n duration: number;\n fullScreen: boolean;\n className?: string;\n clientHeight?: number;\n};\n\nexport type Props = {\n header?: string | React.ReactNode;\n className?: string;\n animation?: {\n type: AnimationType;\n duration?: number;\n };\n trigger: React.ReactElement;\n fullScreen?: boolean;\n closeButtonAriaLabel?: string;\n onToggle?: (visible: boolean) => void;\n children: React.ReactNode;\n};\n\nconst defaultDuration = 300;\n\nconst Drawer: React.FC<Props> = ({\n className,\n children,\n header,\n onToggle,\n trigger,\n fullScreen = false,\n closeButtonAriaLabel,\n animation = {\n type: AnimationType.SlideInBottom,\n },\n}) => {\n const { duration = defaultDuration } = animation;\n\n const closeButtonRef = useRef<HTMLButtonElement>();\n const triggerRef = useRef() as React.MutableRefObject<HTMLElement>;\n const [css, ref] = useScroll(true);\n const [visible, toggleVisible] = useToggle();\n const previousVisible = usePrevious(visible);\n const id = useRef(uuid());\n\n useEffect(() => {\n if (onToggle) {\n onToggle(visible);\n }\n }, [visible]);\n\n const esc = useKeyPress('Escape');\n\n useEffect(() => {\n if (esc) {\n toggleVisible(false);\n }\n }, [esc]);\n\n useEventListener(\n 'click',\n (event: MouseEvent) => {\n const { target } = event;\n\n if (!triggerRef.current || !ref.current || !target) {\n return;\n }\n\n if (\n triggerRef.current !== target &&\n ref.current !== target &&\n !ref.current.contains(target as Node) &&\n !triggerRef.current.contains(target as Node)\n ) {\n toggleVisible(false);\n }\n },\n window\n );\n\n const closeMenus = useUniqueMenu(id.current, () => {\n toggleVisible(false);\n });\n\n useWidgetEvent('router:changed', () => {\n toggleVisible(false);\n });\n\n useEffect(() => {\n if (visible && closeButtonRef.current) {\n closeButtonRef.current.focus();\n } else if (!visible && triggerRef.current && previousVisible) {\n triggerRef.current.focus();\n }\n }, [visible, closeButtonRef.current, triggerRef.current]);\n\n const WrapperWithAnimation = animations[animation.type] as any;\n\n return (\n <>\n <CSSTransition\n in={visible}\n className=\"humany-drawer-transition\"\n classNames=\"humany-drawer-transition\"\n unmountOnExit\n timeout={duration}\n >\n <Portal>\n <WrapperWithAnimation\n duration={duration}\n fullScreen={fullScreen}\n className={appendClassNames(\n className,\n 'humany-drawer',\n `humany-drawer-${id.current}`\n )}\n clientHeight={document.body.clientHeight}\n css={css}\n ref={ref}\n >\n <CloseButton\n onClick={() => toggleVisible(false)}\n tabIndex={0}\n ref={closeButtonRef}\n aria-label={closeButtonAriaLabel}\n >\n <SymbolBadge symbol={{ type: 'Svg', content: 'close' }} />\n </CloseButton>\n {!!header && (\n <Header variant=\"h1\" className=\"humany-drawer-header\">\n {header}\n </Header>\n )}\n {children}\n </WrapperWithAnimation>\n </Portal>\n </CSSTransition>\n {React.cloneElement(trigger, {\n onClick: (event: React.MouseEvent) => {\n toggleVisible();\n closeMenus();\n },\n ref: triggerRef,\n 'aria-label': trigger.props.title,\n 'aria-expanded': visible,\n })}\n </>\n );\n};\n\nexport default Drawer;\n\nconst Wrapper = styled.div<{ css?: string }>`\n font-family: ${(p) => p.theme.fonts?.type};\n font-size: ${(p) => p.theme.fonts?.normal};\n position: fixed;\n bottom: 0;\n left: 0;\n border: ${(p) => p.theme.border};\n width: 100%;\n box-shadow: ${(p) => p.theme.boxShadow};\n background: #ffffff;\n ${(p) => p.css && p.css}\n`;\n\nconst Header = styled(Typography)`\n padding: ${(p) => p.theme.sizes?.normal};\n margin: 0;\n text-align: center;\n border-bottom: #eeeeee 1px solid;\n background: #ffffff;\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: bold;\n color: ${(p) => p.theme.colors?.text};\n font-size: ${(p) => p.theme.fonts?.normal};\n line-height: 1.2em;\n`;\n\nconst AnimationBase = (p: AnimationComponentProps) => css`\n transition: ${p.duration}ms;\n`;\n\nconst WrapperWithSlideInBottom = styled(Wrapper)<AnimationComponentProps>`\n max-height: 0;\n ${AnimationBase}\n\n &.humany-drawer-transition-enter {\n max-height: 0;\n }\n &.humany-drawer-transition-enter-active,\n &.humany-drawer-transition-enter-done,\n &.humany-drawer-transition-exit {\n max-height: ${(p) => (p.fullScreen ? '100%' : '400px')};\n }\n\n &.humany-drawer-transition-exit-active,\n &.humany-drawer-transition-exit-done {\n max-height: 0;\n }\n`;\n\nconst WrapperWithSlideInRight = styled(Wrapper)<AnimationComponentProps>`\n ${AnimationBase}\n transform: translateX(100%);\n height: ${(p) => (p.fullScreen ? '100%' : 'auto')};\n\n &.humany-drawer-transition-enter {\n transform: translateX(100%);\n }\n &.humany-drawer-transition-enter-active,\n &.humany-drawer-transition-enter-done,\n &.humany-drawer-transition-exit {\n transform: translateX(0);\n }\n\n &.humany-drawer-transition-exit-active,\n &.humany-drawer-transition-exit-done {\n transform: translateX(100%);\n }\n`;\n\nconst WrapperWithSlideInLeft = styled(Wrapper)<AnimationComponentProps>`\n ${AnimationBase}\n transform: translateX(-100%);\n height: ${(p) => (p.fullScreen ? '100%' : 'auto')};\n\n &.humany-drawer-transition-enter {\n transform: translateX(-100%);\n }\n &.humany-drawer-transition-enter-active,\n &.humany-drawer-transition-enter-done,\n &.humany-drawer-transition-exit {\n transform: translateX(0);\n }\n\n &.humany-drawer-transition-exit-active,\n &.humany-drawer-transition-exit-done {\n transform: translateX(-100%);\n }\n`;\n\nconst WrapperWithSlideInTop = styled(Wrapper)<AnimationComponentProps>`\n ${AnimationBase}\n bottom: unset;\n top: 0;\n height: 0;\n\n &.humany-drawer-transition-enter {\n height: 0;\n }\n &.humany-drawer-transition-enter-active,\n &.humany-drawer-transition-enter-done,\n &.humany-drawer-transition-exit {\n height: ${(p) => p.clientHeight}px;\n }\n\n &.humany-drawer-transition-exit-active,\n &.humany-drawer-transition-exit-done {\n height: 0;\n }\n`;\n\nconst animations: { [key in AnimationType]: React.ComponentType<AnimationComponentProps> } = {\n [AnimationType.SlideInBottom]: WrapperWithSlideInBottom,\n [AnimationType.SlideInRight]: WrapperWithSlideInRight,\n [AnimationType.SlideInLeft]: WrapperWithSlideInLeft,\n [AnimationType.SlideInTop]: WrapperWithSlideInTop,\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nexport const usePosition = (\n visible: boolean,\n id: string,\n element?: HTMLDivElement\n): [{ x: number; y: number }, (event: React.MouseEvent, trigger?: HTMLElement) => void] => {\n const [posX, setPosX] = useState(0);\n const [posY, setPosY] = useState(0);\n\n const set = useCallback(\n (event: React.MouseEvent, trigger?: HTMLElement) => {\n event.preventDefault();\n if (trigger) {\n const clientRect = trigger.getBoundingClientRect();\n setPosX(Math.max(document.body.clientWidth - clientRect.right, 1));\n setPosY(clientRect.bottom + window.scrollY);\n }\n },\n [posX, posY, setPosX, setPosY]\n );\n\n useEffect(() => {\n if (!element || !visible) {\n return;\n }\n\n const clientRect = element.getBoundingClientRect();\n const newPos = {\n x: posX,\n y: posY,\n };\n\n if (clientRect.left < 0) {\n newPos.x = 0;\n }\n\n if (clientRect.bottom > window.innerHeight) {\n newPos.y = 0;\n }\n\n if (newPos.x !== posX) {\n setPosX(newPos.x);\n }\n if (newPos.y !== posY) {\n setPosY(newPos.y);\n }\n }, [element, visible, id]);\n\n return [{ x: posX, y: posY }, set];\n};\n\nexport default usePosition;\n","import styled from '@emotion/styled';\nimport { appendClassNames, uuid } from '@telia-ace/widget-utilities';\nimport React, {\n ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport {\n useEventListener,\n useKeyPress,\n usePrevious,\n useUniqueMenu,\n useWidgetEvent,\n} from '../../hooks';\nimport { CloseButton, contentBox } from '../../styles';\nimport Portal from '../portal';\nimport SymbolBadge from '../symbol-badge';\nimport usePosition from './use-position';\n\nexport type Props = {\n className?: string;\n children?: any;\n trigger: ReactElement;\n closeButtonAriaLabel?: string;\n};\n\nconst Dropdown = React.forwardRef<HTMLDivElement, Props>(\n ({ className = '', children = null, trigger, closeButtonAriaLabel, ...props }, ref) => {\n const closeButtonRef = useRef<HTMLButtonElement>();\n const triggerRef = useRef<HTMLElement>();\n const innerRef = useRef() as React.MutableRefObject<HTMLDivElement>;\n useImperativeHandle(ref, () => innerRef.current as any, [innerRef.current]);\n const id = useRef(uuid());\n const [visible, setVisible] = useState(false);\n const previousVisible = usePrevious(visible);\n const [{ x, y }, set] = usePosition(visible, id.current, innerRef.current);\n const esc = useKeyPress('Escape');\n\n useEffect(() => {\n if (esc) {\n setVisible(false);\n }\n }, [esc]);\n\n useEffect(() => {\n if (visible && closeButtonRef.current) {\n closeButtonRef.current.focus();\n } else if (!visible && triggerRef.current && previousVisible) {\n triggerRef.current.focus();\n }\n }, [visible, closeButtonRef.current, triggerRef.current]);\n\n useEventListener(\n 'click',\n (event: MouseEvent) => {\n const { target } = event;\n\n if (!innerRef.current || !target) {\n return;\n }\n\n if (innerRef.current !== target && !innerRef.current.contains(target as Node)) {\n setVisible(false);\n }\n },\n window\n );\n\n useWidgetEvent('router:changed', () => {\n setVisible(false);\n });\n\n const closeMenus = useUniqueMenu(id.current, () => {\n setVisible(false);\n });\n\n const onTriggerClick = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n set(event, triggerRef.current);\n setVisible(!visible);\n closeMenus();\n },\n [closeMenus, set, setVisible]\n );\n\n return (\n <>\n {visible && (\n <Portal>\n <StyledDropdown\n className={appendClassNames(\n 'humany-dropdown',\n `humany-dropdown-${id.current}`,\n className\n )}\n {...props}\n x={x}\n y={y}\n ref={innerRef}\n >\n <CloseButton\n onClick={() => setVisible(false)}\n tabIndex={0}\n ref={closeButtonRef}\n aria-label={closeButtonAriaLabel}\n >\n <SymbolBadge symbol={{ type: 'Svg', content: 'close' }} />\n </CloseButton>\n {children}\n </StyledDropdown>\n </Portal>\n )}\n {React.cloneElement(trigger, {\n onClick: onTriggerClick,\n ref: triggerRef,\n 'aria-label': trigger.props.title,\n 'aria-expanded': visible,\n })}\n </>\n );\n }\n);\n\nexport default Dropdown;\n\nconst StyledDropdown = styled.div<any>`\n ${contentBox}\n padding: ${(p) => p.theme.sizes?.medium};\n min-width: 150px;\n position: absolute;\n box-shadow: ${(p) => p.theme.boxShadow};\n\n ${(p: any) => {\n let css = '';\n\n if (p.y > 0) {\n css += `top: calc(${p.theme.sizes?.small || '0px'} + ${p.y || '0'}px);`;\n } else {\n css += `bottom: ${p.theme.sizes?.normal || '0px'};`;\n }\n\n if (p.x > 0) {\n css += `right: ${p.x || '0'}px;`;\n } else {\n css += `left: ${p.theme.sizes?.normal || '0px'};`;\n }\n\n return css;\n }};\n`;\n","import styled from '@emotion/styled';\nimport React from 'react';\n\nexport type Props = {};\n\nconst Empty: React.FC<Props> = ({ ...other }) => {\n return <Wrapper {...other} />;\n};\n\nexport default Empty;\n\nconst Wrapper = styled.div`\n display: none;\n`;\n","import styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport { convertToStringAttributes, filterCssProps, filterCssPropsStyle } from '../utils';\n\nexport type Props = Merge<\n React.ComponentProps<'div'>,\n {\n columns: number;\n gap: string;\n }\n>;\n\nexport default forwardRef<HTMLDivElement, Props>(\n ({ children, columns, gap, className, ...other }, ref) => {\n return (\n <Div\n className={appendClassNames(className, 'humany-grid')}\n data-columns={columns}\n data-gap={gap}\n {...filterCssProps(other)}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {children}\n </Div>\n );\n }\n);\n\nconst Div = styled.div<\n {\n 'data-columns': number;\n 'data-gap': string;\n } & any\n>`\n display: grid;\n grid-template-columns: repeat(${(p) => p['data-columns']}, 1fr);\n grid-gap: ${(p) => p['data-gap']};\n justify-content: center;\n grid-auto-rows: max-content;\n ${filterCssPropsStyle}\n`;\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef, useEffect, useState } from 'react';\nimport { useContainer } from '../hooks';\nimport { convertToStringAttributes, defaultRenderInstructions, processHtmlString } from '../utils';\n\nexport type HtmlParseInstruction = {\n transform: {\n [htmlTag: string]: (props: any) => JSX.Element;\n };\n};\n\nexport type Props = Merge<\n React.ComponentProps<'div'>,\n {\n html: string;\n htmlParseInstruction?: HtmlParseInstruction;\n }\n>;\n\nexport default forwardRef<HTMLDivElement, Props>(\n ({ htmlParseInstruction = null, className, html, ...other }, ref) => {\n const container = useContainer();\n const [processedHtml, setProcessedHtml] = useState();\n\n useEffect(() => {\n const defaultInstructions = defaultRenderInstructions(container, html);\n\n const instructions = {\n ...defaultInstructions,\n ...htmlParseInstruction,\n transform: {\n ...defaultInstructions.transform,\n ...htmlParseInstruction?.transform,\n },\n };\n const processed = processHtmlString(html, instructions);\n setProcessedHtml(processed);\n }, [html, htmlParseInstruction]);\n\n return (\n <div\n className={appendClassNames(className, 'humany-html')}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {processedHtml}\n </div>\n );\n }\n);\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { convertToStringAttributes } from '../utils';\n\nexport type Props = Merge<\n React.HTMLProps<HTMLElement>,\n {\n className?: string;\n faIcon: string;\n }\n>;\n\nconst Icon: React.FC<Props> = ({\n faIcon,\n title,\n className = '',\n role = 'presentation',\n ...other\n}) => {\n return (\n <i\n className={appendClassNames(className, `fa fa-${faIcon}`)}\n title={title}\n role={role}\n {...convertToStringAttributes(other)}\n />\n );\n};\n\nexport default Icon;\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { convertToStringAttributes } from '../utils';\n\nexport type Props = Merge<\n React.ComponentProps<'input'>,\n {\n onChange?: (value: string) => void;\n onEnter?: (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n onEscape?: (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n onFocusChange?: (focused: boolean) => void;\n selectAllOnFocus?: boolean;\n }\n>;\n\nexport default forwardRef<HTMLInputElement | HTMLTextAreaElement, Props>(\n (\n {\n className = '',\n autoFocus = false,\n onFocusChange = () => {},\n onEnter = () => {},\n onEscape = () => {},\n selectAllOnFocus,\n onChange = () => {},\n disabled = false,\n type,\n ...other\n },\n ref\n ) => {\n const [hasFocus, setHasFocus] = useState(autoFocus);\n const innerRef = useRef<HTMLInputElement | HTMLTextAreaElement>();\n useImperativeHandle(ref, () => innerRef.current as any);\n useEffect(() => {\n if (autoFocus) {\n innerRef?.current?.focus();\n }\n }, [autoFocus, ref, innerRef]);\n\n const handleFocus = (inFocus: boolean, event: any) => {\n setHasFocus(inFocus);\n onFocusChange && onFocusChange(inFocus);\n if (selectAllOnFocus && inFocus) {\n event.target.select();\n }\n };\n\n const props = {\n ...convertToStringAttributes(other),\n disabled,\n autoFocus,\n type,\n onKeyDown: (e) => {\n if (e.key === 'Enter' && hasFocus) {\n onEnter(e);\n }\n\n if (e.key === 'Escape' && hasFocus) {\n onEscape(e);\n }\n },\n onFocus: (e) => handleFocus(true, e),\n onBlur: (e) => handleFocus(false, e),\n onChange: (e) => onChange(e.target.value || ''),\n className: appendClassNames(className, 'humany-input'),\n 'data-type': type,\n } as React.ComponentProps<'input'>;\n\n return type !== 'textarea' ? (\n <input\n {...(props as React.ComponentProps<'input'>)}\n ref={innerRef as React.Ref<HTMLInputElement>}\n />\n ) : (\n <textarea\n {...(props as React.ComponentProps<'textarea'>)}\n ref={innerRef as React.Ref<HTMLTextAreaElement>}\n />\n );\n }\n);\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport { convertToStringAttributes } from '../utils';\n\nexport type ItemRenderer = (\n item: any,\n index: number,\n items: any[],\n defaultRenderer?: ItemRenderer\n) => React.ReactNode;\n\nexport type Props = Merge<\n React.ComponentProps<'ul'>,\n {\n renderItem: ItemRenderer;\n items: any[];\n renderLi?: boolean;\n }\n>;\n\nexport default forwardRef<HTMLUListElement, Props>(\n ({ className, items, renderItem, renderLi = false, ...other }, ref) => {\n return (\n <ul\n className={appendClassNames(className, 'humany-list')}\n data-item-count={items.length}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {items.map((item, index, items) =>\n renderLi ? (\n <li className=\"humany-list-item\" key={item.id || index}>\n {renderItem(item, index, items)}\n </li>\n ) : (\n renderItem(item, index, items)\n )\n )}\n </ul>\n );\n }\n);\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport { convertToStringAttributes } from '../utils';\nimport Html, { Props as HtmlProps } from './html';\nimport SymbolBadge, { Symbol } from './symbol-badge';\nimport Text from './text';\nimport Typography from './typography';\n\nexport type Props = Merge<\n HtmlProps,\n {\n text?: string;\n html?: string;\n header?: string;\n symbol?: Symbol;\n }\n>;\n\nexport default forwardRef<HTMLDivElement, Props>(\n ({ text, html, header, className, htmlParseInstruction, symbol, ...other }, ref) => {\n return (\n <div\n className={appendClassNames(className, 'humany-paragraph')}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {header ? (\n <Typography variant=\"h1\">\n {symbol ? <SymbolBadge symbol={symbol} /> : null}\n {header}\n </Typography>\n ) : null}\n {html ? <Html html={html} htmlParseInstruction={htmlParseInstruction} /> : null}\n {text ? <Text>{text}</Text> : null}\n </div>\n );\n }\n);\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport { convertToStringAttributes } from '../utils';\nimport List, { Props as ListProps } from './list';\nimport Paragraph, { Props as ParagraphProps } from './paragraph';\n\nexport type ItemListProps = {\n customHeader?: any;\n ulProps?: any;\n};\n\nexport type Props = Merge<ListProps, ParagraphProps> & ItemListProps;\n\nexport default forwardRef<HTMLDivElement, Props>(\n (\n {\n header,\n customHeader,\n text,\n html,\n className,\n children,\n symbol,\n items,\n renderItem,\n renderLi,\n ulProps,\n ...other\n },\n ref\n ) => {\n return (\n <div\n className={appendClassNames(className, 'humany-item-list')}\n data-item-count={items.length}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {customHeader ? (\n customHeader\n ) : header || text || html ? (\n <Paragraph symbol={symbol} header={header} text={text} html={html} />\n ) : null}\n {items.length ? (\n <List items={items} renderItem={renderItem} renderLi={renderLi} {...ulProps} />\n ) : null}\n {children}\n </div>\n );\n }\n);\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { ItemList } from '.';\nimport { convertToStringAttributes } from '../utils';\n\nexport type Props = {\n className?: string;\n tree?: any[];\n rootItem?: any;\n renderUnselected?: boolean;\n renderItem: (props: any, level: number, isSelected: boolean) => JSX.Element;\n renderEmpty?: boolean;\n ulProps?: any;\n liProps?: any;\n};\n\nconst ItemTree: React.FC<Props> = ({\n className = '',\n tree,\n renderItem,\n rootItem,\n renderUnselected = true,\n renderEmpty = true,\n ulProps,\n liProps,\n}) => {\n const hasSelectedChildren = (items: any[]) => {\n return !checkIfSelected(items);\n };\n\n /**\n * Checks if the selected item is actually selected or just expanded by\n * checking if any of its immediate children has selection active\n * @param items\n */\n const checkIfSelected = (items: any[]) => {\n if (!items || items.length < 1) {\n return true;\n }\n return !items.some((item) => !!item.selected);\n };\n\n const renderTreeItems = (treeItems: any, level: number) => {\n return (\n <ItemList\n className={appendClassNames(`humany-item-tree-level-${level}`)}\n items={treeItems}\n ulProps={ulProps}\n renderItem={(itemProps: any) => {\n const { id, selected, items, matches } = itemProps;\n const isSelected = selected && checkIfSelected(items);\n\n if (!renderEmpty && !matches) {\n return null;\n }\n\n return (\n <li\n {...convertToStringAttributes(liProps)}\n key={id}\n className={'humany-item-tree-item'}\n >\n {renderItem && renderItem(itemProps, level, isSelected)}\n {items &&\n (renderUnselected || isSelected) &&\n renderTreeItems(items, level + 1)}\n </li>\n );\n }}\n ></ItemList>\n );\n };\n\n return (\n <div className={appendClassNames(className, 'humany-item-tree')}>\n {rootItem && rootItem(!hasSelectedChildren(tree || []))}\n {tree && renderTreeItems(tree, 1)}\n </div>\n );\n};\n\nexport default ItemTree;\n","import styled from '@emotion/styled';\nimport { getSpecificWidgetPath, HistoryMode, Route } from '@telia-ace/widget-routing';\nimport { appendClassNames, Logger } from '@telia-ace/widget-utilities';\nimport React, { ElementType, forwardRef } from 'react';\nimport { Link } from 'react-router-dom';\nimport { useContainer, useRouter } from '../hooks';\n\nexport type Props = Merge<\n React.ComponentProps<'a'>,\n {\n disabled?: boolean;\n name?: string;\n params?: { [key: string]: any };\n to?: string;\n as?: ElementType<any>;\n }\n>;\n\nexport default forwardRef<HTMLAnchorElement, Props>(\n (\n { className, onClick = () => {}, name = '', to = '', params = {}, children, ...other },\n forwardedRef\n ) => {\n const router = useRouter();\n const container = useContainer();\n\n if (!router) {\n return null;\n }\n\n let path = '';\n\n const props = {\n onClick,\n className: appendClassNames(className, 'humany-route-link'),\n to: path,\n innerRef: forwardedRef,\n ...other,\n ref: null,\n };\n\n if (name) {\n const routes: Route[] = router.routes || [];\n\n const route: Optional<Route> = routes.find((r) => r.name === name);\n\n if (!route) {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(`Unable to create route. No route named \"${name}\" exist.`);\n }\n return (\n <Link\n {...props}\n onClick={(e) => {\n onClick(e);\n e.preventDefault();\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(`Unable to navigate. No route named \"${name}\" exist.`);\n }\n }}\n >\n {children}\n </Link>\n );\n }\n\n const encodedParams = Object.keys(params).reduce<{ [key: string]: any }>((acc, key) => {\n acc[key] =\n typeof params[key] === 'string' ? encodeURIComponent(params[key]) : params[key];\n return acc;\n }, {});\n\n try {\n path = router.generate(name, encodedParams || {});\n } catch (e) {\n return <Link {...props}>{children}</Link>;\n }\n\n if (\n path &&\n router.settings.mode &&\n router.settings.mode === HistoryMode.browser &&\n path[0] !== '/'\n ) {\n path = `/${path}`;\n }\n } else if (to && router.history) {\n path = router.history.createHref({\n hash: '',\n pathname: to,\n search: '',\n state: undefined,\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n 'Unable to generate path for route link. Either specify route name or use the \"to\" prop.'\n );\n }\n\n return null;\n }\n\n // Get the path for the specific widget\n if (router.settings && router.settings.mode === HistoryMode.scopedHash) {\n const widgetName = container.get('$widget').name;\n path = getSpecificWidgetPath(path, widgetName);\n }\n\n if (props.as) {\n return (\n <WrappedLink {...props} as={props.as}>\n {children}\n </WrappedLink>\n );\n }\n\n return (\n <Link {...props} to={path}>\n {children}\n </Link>\n );\n }\n);\n\nconst WrappedLink = styled.span``;\n","import styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { ElementType, forwardRef } from 'react';\nimport { convertToStringAttributes } from '../utils';\nimport RouteLink from './route-link';\n\nexport type Props = Merge<\n React.ComponentProps<'a'>,\n {\n disabled?: boolean;\n routeName?: string;\n params?: { [key: string]: any };\n to?: string;\n as?: ElementType<any>;\n }\n>;\n\nexport default forwardRef<HTMLAnchorElement, Props>(\n (\n {\n className,\n disabled = false,\n role = 'link',\n tabIndex = 0,\n onClick = () => {},\n onKeyDown = () => {},\n title,\n as,\n href,\n children,\n target,\n routeName,\n params,\n ...other\n },\n ref\n ) => {\n const props: Partial<Props> = {\n title,\n disabled,\n role,\n as,\n tabIndex,\n className: appendClassNames(className, 'humany-link', [!!disabled, 'humany-disabled']),\n onClick: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {\n e.persist();\n\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n onClick(e);\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLAnchorElement>) => {\n e.persist();\n\n if (disabled) {\n if (e.key !== 'Tab') {\n e.preventDefault();\n }\n return;\n }\n\n onKeyDown(e);\n },\n };\n\n return routeName ? (\n <StyledRouteLink\n name={routeName}\n params={params}\n {...props}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {children}\n </StyledRouteLink>\n ) : (\n <StyledLink\n href={href}\n target={target}\n {...props}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {children}\n </StyledLink>\n );\n }\n);\n\nconst StyledRouteLink = styled(RouteLink)<Props>`\n ${(p) =>\n p.disabled\n ? `\n pointer-events: none;\n opacity: .7;\n `\n : 'cursor: pointer;'}\n`;\n\nconst StyledLink = styled.a<Props>`\n ${(p) =>\n p.disabled\n ? `\n pointer-events: none;\n opacity: .7;\n `\n : 'cursor: pointer;'}\n`;\n","import styled from '@emotion/styled';\nimport React, { useCallback, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport Portal from './portal';\n\nexport type Props = {\n duration?: number;\n visible: boolean;\n onClick?: (e: React.MouseEvent) => void;\n children?: React.ReactNode;\n};\n\nconst Overlay: React.FC<Props> = ({\n visible,\n duration = 500,\n children,\n onClick = () => {},\n ...other\n}) => {\n const ref = useRef();\n\n const onOverlayClick = useCallback(\n (e: React.MouseEvent) => {\n if (e.target === ref.current) {\n onClick(e);\n }\n },\n [onClick]\n );\n\n return (\n <CSSTransition\n in={visible}\n className=\"humany-overlay-transition\"\n classNames=\"humany-overlay-transition\"\n unmountOnExit\n timeout={duration}\n >\n <Portal>\n <Wrapper\n className=\"humany-overlay\"\n duration={duration}\n ref={ref}\n onClick={onOverlayClick}\n {...other}\n >\n {children}\n </Wrapper>\n </Portal>\n </CSSTransition>\n );\n};\n\nconst Wrapper = styled.div<any>`\n background: rgba(0, 0, 0, 0.6);\n min-width: 100%;\n min-height: 100%;\n position: fixed;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 7;\n\n transition: ${(p) => p.duration}ms;\n opacity: 0;\n\n &.humany-overlay-transition-enter {\n opacity: 0.1;\n }\n &.humany-overlay-transition-enter-active,\n &.humany-overlay-transition-enter-done,\n &.humany-overlay-transition-exit {\n opacity: 1;\n }\n\n &.humany-overlay-transition-exit-active,\n &.humany-overlay-transition-exit-done {\n opacity: 0;\n }\n`;\n\nexport default Overlay;\n","import { keyframes } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n loading: boolean | undefined;\n};\n\nconst spin = keyframes`\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nconst dash = keyframes`\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -35px;\n }\n 100% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -124px;\n }\n`;\n\nconst SpinnerSvg = styled.svg`\n animation: ${spin} 2s linear infinite;\n height: 100%;\n transform-origin: center center;\n width: 100%;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n margin: auto;\n transition: 200ms ease-out opacity;\n`;\n\nexport const Wrapper = styled.div<{ 'data-loading': boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n height: 100%;\n width: 100%;\n pointer-events: ${(p) => (p['data-loading'] ? 'all' : 'none')};\n display: flex;\n flex-direction: column;\n justify-content: center;\n transition: 200ms ease-out opacity;\n box-sizing: border-box;\n overflow: hidden;\n svg {\n opacity: ${(p) => (p['data-loading'] ? '1' : '0')};\n }\n`;\n\nconst Spinner = styled.div`\n position: relative;\n margin: 0 auto;\n width: 100px;\n &:before {\n content: '';\n display: block;\n padding-top: 100%;\n }\n`;\n\nconst SpinnerCircle = styled.circle`\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n animation: ${dash} 1.5s ease-in-out infinite;\n stroke-linecap: round;\n stroke: ${(p) => p.theme.colors?.primary};\n stroke-width: 2px;\n`;\n\nconst Loader: React.FC<Props> = ({ className, loading = false }) => {\n return (\n <Wrapper className={appendClassNames('humany-loader', className)} data-loading={loading}>\n <Spinner className=\"humany-spinner\">\n <SpinnerSvg viewBox=\"25 25 50 50\">\n <SpinnerCircle\n cx=\"50\"\n cy=\"50\"\n r=\"20\"\n fill=\"none\"\n stroke-width=\"2\"\n stroke-miterlimit=\"10\"\n />\n </SpinnerSvg>\n </Spinner>\n </Wrapper>\n );\n};\n\nexport default Loader;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { ZoomableImage } from './lightbox';\nimport Loader from './loader';\n\nexport type Props = {\n zoomState: number;\n image: ZoomableImage;\n changeZoom: (num: number) => void;\n};\n\nconst ZoomImg: React.FC<Props & React.ComponentProps<'img'>> = ({\n zoomState,\n image,\n changeZoom,\n ...attrs\n}) => {\n const ref = useRef<HTMLImageElement>(null);\n const [loaded, setLoaded] = useState(false);\n const [initialZoom, setInitialZoom] = useState(false);\n const { width, height, ...restStyle } = attrs.style || {};\n\n const calcInitialZoom = useCallback(() => {\n const img = ref.current;\n if (img) {\n const width = window.innerWidth / img.width;\n const height = window.innerHeight / img.height;\n const ratio = Math.min(width, height);\n if (height >= 1 && width >= 1) {\n return 1; // should display pictures that fit viewport without any zoom\n }\n return ratio;\n }\n return 1;\n }, [loaded, image.src]);\n\n const imageSize = useMemo(() => {\n const img = ref.current;\n if (img) {\n if (!initialZoom) {\n setInitialZoom(true);\n const zoom = calcInitialZoom();\n changeZoom(zoom);\n }\n if (img.width >= img.height) {\n return [`${zoomState * image.originalWidth}px`, 'auto'];\n } else {\n return ['auto', `${zoomState * image.originalHeight}px`];\n }\n }\n return null;\n }, [zoomState, ref, loaded, image.src]);\n\n useEffect(() => {\n setLoaded(false);\n return function cleanup() {\n setInitialZoom(false);\n };\n }, [image.src]);\n\n return (\n <>\n <StyledLoader loading={!loaded} />\n <Img\n onLoad={() => {\n setLoaded(true);\n }}\n ref={ref}\n imageSize={imageSize}\n draggable=\"false\"\n {...attrs}\n alt={attrs.alt?.toString() || ''}\n style={restStyle}\n src={image.src}\n loaded={loaded}\n />\n <EmptyDiv />\n </>\n );\n};\n\nconst StyledLoader = styled(Loader)`\n svg circle {\n stroke: #ffffff;\n }\n`;\n\nconst Img = styled.img<{ loaded: boolean; imageSize: [string, string] | null } & any>`\n transform: none;\n\n ${(props) =>\n props.imageSize &&\n css`\n width: ${props.imageSize[0]};\n height: ${props.imageSize[1]};\n display: inline-block;\n `}\n vertical-align: middle;\n position: relative;\n ${(props) => !props.loaded && 'display:none;'}\n`;\n\nconst EmptyDiv = styled.div`\n height: 100%;\n display: inline-block;\n vertical-align: middle;\n`;\n\nexport default ZoomImg;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { FC, forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useKeyPress } from '../hooks';\nimport { borderTabStyle } from '../styles';\nimport Button from './button';\nimport Link from './link';\nimport Overlay from './overlay';\nimport SymbolBadge from './symbol-badge';\nimport Typography from './typography';\nimport ZoomImg from './zoomable-img';\n\nexport type Props = {\n attrs: React.DetailedHTMLProps<React.HtmlHTMLAttributes<HTMLImageElement>, HTMLImageElement>;\n htmlBody: string;\n children?: React.ReactNode;\n};\n\nconst useFadeOut = (): [boolean, Function] => {\n const timeOut = useRef<NodeJS.Timeout>();\n const [show, setShow] = useState(true);\n const triggerChange = useCallback(() => {\n if (!show) setShow(true);\n if (timeOut.current) {\n clearTimeout(timeOut.current);\n }\n timeOut.current = setTimeout(() => {\n setShow(false);\n }, 3000);\n\n return () => {\n if (timeOut.current) {\n clearTimeout(timeOut.current);\n }\n };\n }, [show, timeOut]);\n return [show, triggerChange];\n};\n\nexport interface ZoomableImage {\n src: string;\n originalWidth: number;\n originalHeight: number;\n}\n\nconst Lightbox: FC<Props> = ({ attrs, htmlBody }) => {\n const esc = useKeyPress('Escape');\n const left = useKeyPress('ArrowLeft');\n const right = useKeyPress('ArrowRight');\n const [zoomState, setZoomState] = useState(1);\n const [scroll, setScroll] = useState({ top: 0, left: 0, x: 0, y: 0 });\n const [scrolling, setScrolling] = useState(false);\n const [show, triggerFadeOut] = useFadeOut();\n const [openImage, setOpenImage] = useState<number | null>(null);\n const [previousDirection, setPreviousDirection] = useState<'Left' | 'Right' | null>(null);\n const imageLinkRef = useRef<HTMLAnchorElement | null>(null);\n const topButtonsRef = useRef<HTMLDivElement | null>(null);\n const navigationButtonsRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (esc) {\n setOpenImage(null);\n }\n }, [esc]);\n\n useEffect(() => {\n setZoomState(1);\n }, [openImage]);\n\n useEffect(() => {\n if (openImage === null || topButtonsRef.current === null) {\n return;\n }\n\n const firstButton = topButtonsRef.current.firstElementChild as HTMLButtonElement;\n\n const leftButton = navigationButtonsRef.current?.querySelector('.nav-left');\n const rightButton = navigationButtonsRef.current?.querySelector('.nav-right');\n if (previousDirection === 'Right') {\n if (canNavigateRight && rightButton) {\n (rightButton as any).focus();\n } else if (canNavigateLeft && leftButton) {\n (leftButton as any).focus();\n }\n } else if (previousDirection === 'Left') {\n if (canNavigateLeft && leftButton) {\n (leftButton as any).focus();\n } else if (canNavigateRight && rightButton) {\n (rightButton as any).focus();\n }\n } else {\n if (!firstButton) {\n return;\n }\n firstButton.focus();\n }\n }, [openImage, topButtonsRef, navigationButtonsRef, previousDirection]);\n\n useEffect(() => {\n if (left) {\n if (canNavigateLeft) return navLeft();\n } else if (right) if (canNavigateRight) return navRight();\n }, [left, right]);\n\n const imageList = useMemo((): ZoomableImage[] => {\n const div = document.createElement('div');\n div.innerHTML = htmlBody || '';\n const images = div.getElementsByTagName('img');\n const list = Array.from(images).reduce<ZoomableImage[]>((acc, imgElement) => {\n const src = imgElement.getAttribute('src');\n const height = imgElement.height || Number.parseInt(imgElement.style.height, 10);\n const width = imgElement.width || Number.parseInt(imgElement.style.width, 10);\n if (src) {\n const img: ZoomableImage = {\n src: src,\n originalWidth: width,\n originalHeight: height,\n };\n acc.push(img);\n }\n return acc;\n }, []);\n return list;\n }, [htmlBody]);\n\n const toggleVisible = useCallback(() => {\n const { src } = attrs as React.HTMLProps<HTMLImageElement>;\n if (src) {\n const position = imageList.findIndex((item, i) => {\n return item.src === src;\n });\n setOpenImage(position);\n }\n }, [imageList, attrs]);\n\n const overlayClick = useCallback((e: React.MouseEvent) => {\n setOpenImage(null);\n }, []);\n\n const changeZoomState = useCallback(\n (zoomIn: boolean) => {\n if (zoomIn) {\n setZoomState(zoomState + zoomState * 0.25);\n } else {\n setZoomState(zoomState - zoomState * 0.25);\n }\n },\n [setZoomState, zoomState]\n );\n\n const downloadImage = useCallback(() => {\n if (openImage !== null) {\n const { src } = imageList[openImage];\n if (src) {\n window.open(src, '_self');\n }\n }\n }, [imageList, openImage]);\n\n const mouseDownHandler = useCallback(\n (e: any) => {\n const ele = contentRef.current;\n if (ele) {\n setScroll({ top: ele.scrollTop, left: ele.scrollLeft, x: e.clientX, y: e.clientY });\n setScrolling(true);\n }\n },\n [contentRef]\n );\n\n const mouseDragHandler = useCallback(\n (e: any) => {\n const ele = contentRef.current;\n if (ele && scrolling) {\n const dx = e.clientX - scroll.x;\n const dy = e.clientY - scroll.y;\n ele.scrollTop = scroll.top - dy;\n ele.scrollLeft = scroll.left - dx;\n }\n },\n [scrolling, scroll]\n );\n\n const mouseStopDragHandler = (e: any) => {\n e.preventDefault();\n setScrolling(false);\n };\n\n const isDraggable = useMemo(() => {\n if (contentRef.current) {\n const imageElements = contentRef.current.getElementsByTagName('img');\n if (imageElements && imageElements.length) {\n const imgElement = imageElements[0];\n return (\n imgElement.width > window.innerWidth || imgElement.height > window.innerHeight\n );\n }\n }\n return false;\n }, [contentRef, zoomState]);\n\n const navLeft = () => {\n if (openImage !== null) {\n setPreviousDirection('Left');\n setOpenImage(openImage - 1);\n }\n };\n\n const navRight = () => {\n if (openImage !== null) {\n setPreviousDirection('Right');\n setOpenImage(openImage + 1);\n }\n };\n\n const canNavigateLeft = openImage !== null && openImage > 0 && imageList.length > 1;\n\n const canNavigateRight = openImage !== null && imageList.length - 1 > openImage;\n\n return (\n <>\n <Overlay visible={openImage !== null} onClick={overlayClick}>\n <DraggableArea\n onMouseDown={() => triggerFadeOut()}\n onMouseMove={() => triggerFadeOut()}\n onTouchStart={() => triggerFadeOut()}\n onKeyDown={() => triggerFadeOut()}\n >\n <TransparentBarTop show={show.toString()}>\n <TopRightButtons\n ref={topButtonsRef}\n buttons={[\n {\n id: 'download',\n onClick: downloadImage,\n icon: 'download',\n ariaLabel: 'Download image',\n },\n {\n id: 'lightbox-close',\n onClick: () => setOpenImage(null),\n icon: 'lightbox-close',\n ariaLabel: 'Close',\n },\n ]}\n />\n </TransparentBarTop>\n <Content\n scrolling={scrolling.toString()}\n isDraggable={isDraggable.toString()}\n ref={contentRef}\n onMouseMove={mouseDragHandler}\n onMouseDown={mouseDownHandler}\n onMouseUp={mouseStopDragHandler}\n >\n {openImage !== null && (\n <ZoomImg\n changeZoom={(value: number) => {\n setZoomState(value);\n }}\n zoomState={zoomState}\n {...attrs}\n image={imageList[openImage]}\n ></ZoomImg>\n )}\n </Content>\n <CenterEdgeButtons\n ref={navigationButtonsRef}\n show={show.toString()}\n buttons={[\n {\n id: 'previous',\n onClick: navLeft,\n icon: 'caret-left',\n circle: true,\n show: canNavigateLeft,\n className: 'nav-left',\n ariaLabel: 'Navigate to previous image',\n },\n {\n id: 'next',\n onClick: navRight,\n icon: 'caret-right',\n circle: true,\n show: canNavigateRight,\n className: 'nav-right',\n ariaLabel: 'Navigate to next image',\n },\n ]}\n />\n <TransparentBarBottom show={show.toString()}>\n <BottomCenterButtons\n buttons={[\n {\n id: 'zoom-out',\n onClick: () => changeZoomState(false),\n icon: 'zoom-out',\n ariaLabel: 'Zoom out',\n },\n {\n id: 'zoom-in',\n onClick: () => changeZoomState(true),\n icon: 'zoom-in',\n ariaLabel: 'Zoom in',\n },\n ]}\n />\n <ZoomLevel variant=\"span\">{Math.trunc(zoomState * 100)}%</ZoomLevel>\n </TransparentBarBottom>\n </DraggableArea>\n </Overlay>\n <StyledLink\n ref={imageLinkRef}\n onClick={toggleVisible}\n onKeyDown={(e) => {\n if (e.key !== 'Enter') {\n return;\n }\n e.preventDefault();\n toggleVisible();\n }}\n tabIndex={0}\n >\n <Thumbnail {...(attrs as any)} alt={(attrs as any).alt?.toString() || ''} />\n </StyledLink>\n </>\n );\n};\n\ntype ButtonSetProps = {\n className?: string;\n show?: string;\n buttons: {\n id: string;\n icon: string;\n onClick: React.MouseEventHandler<HTMLButtonElement>;\n circle?: boolean;\n show?: boolean;\n className?: string;\n ariaLabel?: string;\n }[];\n};\n\nconst ButtonSet = forwardRef<HTMLDivElement, ButtonSetProps>(\n ({ show = 'true', buttons, className }, ref) => {\n return (\n <ButtonSetWrapper\n ref={ref}\n show={show}\n className={appendClassNames('humany-button-set', className)}\n >\n {buttons.map(\n (\n { id, circle = false, show = true, ariaLabel, onClick, icon, className },\n index\n ) => (\n <ButtonSetButton\n key={id + index.toString()}\n circle={circle.toString()}\n onClick={onClick}\n tabIndex={!show ? -1 : undefined}\n show={show.toString()}\n icon={icon}\n className={className}\n aria-label={ariaLabel}\n >\n <SymbolBadge size={24} symbol={{ type: 'Svg', content: icon }} />\n </ButtonSetButton>\n )\n )}\n </ButtonSetWrapper>\n );\n }\n);\n\nconst FadingDiv = styled.div<{ show: string }>`\n transition: opacity 0.3s ease 0s;\n z-index: 5;\n ${(p) =>\n p.show === 'true'\n ? 'opacity: 1;'\n : css`\n opacity: 0;\n pointer-events: none;\n `}\n`;\n\nconst StyledLink = styled(Link)`\n display: inline-block !important;\n`;\n\nconst ButtonSetWrapper = styled(FadingDiv)`\n position: fixed;\n display: flex;\n gap: ${(p) => p.theme.sizes?.normal};\n`;\n\nconst BUTTON_SIZE = '39px';\n\nconst ButtonSetButton = styled(Button)<{ circle: string; show: string; icon: string }>`\n width: ${BUTTON_SIZE};\n height: ${BUTTON_SIZE};\n display: flex;\n justify-content: center;\n align-items: center;\n\n ${(p) =>\n p.icon === 'caret-left' &&\n css`\n svg {\n position: relative;\n left: -2px;\n }\n `}\n\n ${(p) =>\n p.circle === 'true'\n ? css`\n background-color: #ffffff;\n border-radius: 50%;\n\n svg {\n path,\n line {\n stroke: ${p.theme.colors?.text};\n }\n }\n\n &:focus-visible {\n ${borderTabStyle(p)}\n outline-color: #ffffff;\n background-color: transparent;\n\n svg {\n path,\n line {\n stroke: #ffffff;\n }\n }\n }\n `\n : css`\n svg {\n path,\n line {\n stroke: #ffffff;\n }\n }\n &:focus {\n outline-color: #ffffff;\n }\n &:focus-visible {\n ${borderTabStyle(p)}\n }\n `}\n\n ${(p) =>\n p.show === 'true'\n ? css`\n opacity: 0.8;\n transition: opacity 0.3s ease 0s;\n &:hover {\n opacity: 1;\n }\n `\n : css`\n opacity: 0;\n pointer-events: none;\n `}\n`;\n\nconst TopRightButtons = styled(ButtonSet)`\n top: ${(p) => p.theme.sizes?.large};\n right: ${(p) => p.theme.sizes?.large};\n`;\n\nconst BottomCenterButtons = styled(ButtonSet)`\n bottom: ${(p) => p.theme.sizes?.large};\n width: 100%;\n align-items: center;\n justify-content: center;\n`;\n\nconst CenterEdgeButtons = styled(ButtonSet)`\n display: block;\n button {\n position: fixed;\n top: calc(50% - calc(${BUTTON_SIZE} / 2));\n &:first-child {\n left: ${(p) => p.theme.sizes?.large};\n }\n &:last-child {\n right: ${(p) => p.theme.sizes?.large};\n }\n }\n`;\n\nconst ZoomLevel = styled(Typography)`\n position: fixed;\n bottom: ${(p) => p.theme.sizes?.large};\n right: ${(p) => p.theme.sizes?.large};\n color: #ffffff;\n font-size: ${(p) => p.theme.fonts?.medium};\n font-family: ${(p) => p.theme.fonts?.type};\n`;\n\nconst TransparentBar = styled(FadingDiv)`\n position: absolute;\n width: 100vw;\n height: 88px;\n left: 0px;\n z-index: 5;\n`;\n\nconst DraggableArea = styled.div`\n width: 100%;\n`;\n\nconst TransparentBarTop = styled(TransparentBar)`\n top: 0px;\n background-image: linear-gradient(to bottom, rgb(34, 34, 34, 0.8), rgba(34, 34, 34, 0));\n`;\n\nconst TransparentBarBottom = styled(TransparentBar)`\n bottom: 0px;\n background-image: linear-gradient(to top, rgb(34, 34, 34, 0.8), rgba(34, 34, 34, 0));\n`;\n\nconst Content = styled.div<{ isDraggable: string; scrolling: string }>`\n width: 100%;\n height: 100vh;\n overflow: auto;\n text-align: center;\n vertical-align: middle;\n white-space: nowrap;\n justify-content: center;\n cursor: ${(p) =>\n p.isDraggable === 'true' ? (p.scrolling === 'true' ? 'grabbing' : 'grab') : 'auto'};\n`;\n\nconst Thumbnail = styled.img`\n cursor: pointer;\n`;\n\nexport default Lightbox;\n","import styled from '@emotion/styled';\nimport { appendClassNames, uuid } from '@telia-ace/widget-utilities';\nimport React, { forwardRef, useCallback, useEffect, useImperativeHandle, useRef } from 'react';\nimport { useKeyPress, useScroll, useToggle, useUniqueMenu, useWidgetEvent } from '../../hooks';\nimport { CloseButton, contentBox } from '../../styles';\nimport Overlay from '../overlay';\nimport SymbolBadge from '../symbol-badge';\n\nexport type Props = Merge<\n {\n trigger: React.ReactElement;\n className?: string;\n onOverlayClick?: (e: React.MouseEvent) => void;\n close?: boolean;\n children?: React.ReactNode;\n },\n React.ComponentProps<'div'>\n>;\n\nconst Modal = forwardRef<any, Props>(\n ({ className, children, trigger, onOverlayClick = () => {}, close = false, ...other }, ref) => {\n const [visible, toggleVisible] = useToggle();\n const [css, innerRef] = useScroll(true);\n const closeButtonRef = useRef<HTMLButtonElement>();\n const id = useRef(uuid());\n\n const esc = useKeyPress('Escape');\n\n useEffect(() => {\n if (esc || close) {\n toggleVisible(false);\n }\n }, [esc, close]);\n\n useEffect(() => {\n if (visible && closeButtonRef.current) {\n closeButtonRef.current.focus();\n }\n }, [visible, closeButtonRef.current]);\n\n useWidgetEvent('router:changed', () => {\n toggleVisible(false);\n });\n\n const overlayClick = useCallback(\n (e: React.MouseEvent) => {\n toggleVisible(false);\n onOverlayClick(e);\n },\n [onOverlayClick, toggleVisible]\n );\n\n useImperativeHandle(ref, () => ({\n close() {\n toggleVisible(false);\n },\n }));\n\n const closeMenus = useCallback(() => {\n return useUniqueMenu(id.current, () => {\n toggleVisible(false);\n });\n }, [id.current]);\n\n return (\n <>\n <Overlay visible={visible} onClick={overlayClick}>\n <Wrapper\n className={appendClassNames(\n className,\n 'humany-modal',\n `humany-modal-${id.current}`\n )}\n css={css}\n tabIndex={-1}\n {...other}\n ref={innerRef}\n >\n <CloseButton\n onClick={() => toggleVisible(false)}\n tabIndex={0}\n ref={closeButtonRef}\n >\n <SymbolBadge symbol={{ type: 'Svg', content: 'close' }} />\n </CloseButton>\n {children}\n </Wrapper>\n </Overlay>\n {React.cloneElement(trigger, {\n onClick: (event: React.MouseEvent) => {\n toggleVisible();\n closeMenus();\n },\n })}\n </>\n );\n }\n);\n\nexport default Modal;\n\nconst Wrapper = styled.div<{ css?: string }>`\n font-family: ${(p) => p.theme.fonts?.type};\n font-size: ${(p) => p.theme.fonts?.normal};\n position: relative;\n max-width: 50%;\n min-width: 200px;\n padding: ${(p) => p.theme.sizes?.medium};\n ${(p) => contentBox(p)}\n ${(p) => p.css && p.css}\n outline: none;\n`;\n","import styled from '@emotion/styled';\nimport React, { useCallback, useRef } from 'react';\nimport { Button } from '..';\nimport { borderTabStyle, StyledText } from '../../styles';\nimport Modal, { Props as ModalProps } from './modal';\n\ntype Props = Merge<\n {\n header?: string;\n text?: string;\n onCancel?: () => void;\n onConfirm?: () => void;\n cancelLabel?: string;\n confirmLabel?: string;\n },\n ModalProps\n>;\n\nconst Confirm: React.FC<Props> = ({\n className,\n trigger,\n header = '',\n text = '',\n onCancel = () => {},\n onConfirm = () => {},\n cancelLabel = '',\n confirmLabel = '',\n}) => {\n const ref = useRef<any>();\n\n const cancel = useCallback(() => {\n onCancel();\n ref?.current?.close();\n }, [onCancel]);\n\n const confirm = useCallback(() => {\n onConfirm();\n ref?.current?.close();\n }, [onConfirm]);\n\n return (\n <StyledModal className={className} trigger={trigger} ref={ref} onOverlayClick={cancel}>\n {header && <StyledText>{header}</StyledText>}\n {text && <StyledText>{text}</StyledText>}\n {confirmLabel && (\n <StyledConfirmButton onClick={confirm}>{confirmLabel}</StyledConfirmButton>\n )}\n {cancelLabel && <StyledCancelButton onClick={cancel}>{cancelLabel}</StyledCancelButton>}\n </StyledModal>\n );\n};\n\nexport default Confirm;\n\nconst StyledModal = styled(Modal)`\n display: block;\n\n span {\n display: block;\n margin: 0 0 ${(p) => p.theme.sizes?.normal};\n\n &:first-of-type:not(:only-of-type) {\n font-weight: 700;\n margin: 0 0 ${(p) => p.theme.sizes?.small};\n }\n }\n`;\n\nconst StyledConfirmButton = styled(Button)`\n display: inline-block;\n min-width: 50px;\n ${(p) => `padding: ${p.theme.sizes?.small} ${p.theme.sizes?.normal};`}\n ${(p) => p.theme.borderRadius && `border-radius: ${p.theme.borderRadius};`}\n color: #FFFFFF;\n background-color: ${(p) => p.theme.colors?.primary};\n border: 1px solid ${(p) => p.theme.colors?.primary};\n\n margin: 0 ${(p) => p.theme.sizes?.small} 0 0;\n\n &:focus {\n background-color: transparent;\n }\n\n &:focus-visible {\n ${borderTabStyle}\n }\n`;\n\nconst StyledCancelButton = styled(Button)`\n display: inline-block;\n min-width: 50px;\n ${(p) => `padding: ${p.theme.sizes?.small} ${p.theme.sizes?.normal};`}\n ${(p) => p.theme.borderRadius && `border-radius: ${p.theme.borderRadius};`}\n background-color: transparent;\n color: ${(p) => p.theme.colors?.text};\n border: 1px solid ${(p) => p.theme.colors?.text};\n\n &:focus-visible {\n ${borderTabStyle};\n }\n`;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport React from 'react';\nimport { TextLink, Typography } from '../components';\nimport { headingElement } from '../utils/heading-styles';\n\nexport type Props = {\n header?: string;\n link?: string;\n suggestionHeader?: string;\n suggestion?: string;\n};\n\nconst NotFound: React.FC<Props> = ({\n header = '',\n link = '',\n suggestionHeader = '',\n suggestion = '',\n}) => {\n return (\n <Wrapper>\n <Status>\n <Typography variant=\"h2\">404</Typography>\n </Status>\n <Header>\n <Typography variant=\"h3\">{header}</Typography>\n <TextLink routeName=\"index\" aria-label={link} text={link} />\n </Header>\n <Content>\n <span>{suggestionHeader}</span>\n <ul>\n <li>{suggestion}</li>\n </ul>\n </Content>\n </Wrapper>\n );\n};\n\nexport default NotFound;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n`;\n\nconst Status = styled.div`\n ${(p) =>\n headingElement(p)(\n 'h2',\n css`\n padding: 0;\n margin: 0;\n color: gray;\n font-size: 7em;\n `\n )}\n`;\n\nconst Header = styled.div`\n margin-left: ${(p) => p.theme.sizes?.medium};\n\n ${(p) =>\n headingElement(p)(\n 'h3',\n css`\n text-transform: uppercase;\n font-size: ${p.theme.fonts?.normal};\n `\n )}\n\n a {\n color: ${(p) => p.theme.colors?.link};\n font-size: ${(p) => p.theme.fonts?.small};\n }\n`;\n\nconst Content = styled.div`\n margin-top: ${(p) => p.theme.sizes?.medium};\n min-width: 100%;\n\n span {\n font-weight: bold;\n }\n`;\n","import { Container } from '@webprovisions/platform';\nimport React, { Component } from 'react';\n\nexport type Props = {\n container: Container;\n};\n\ntype State = Readonly<{\n boundFocus: boolean;\n}>;\n\nclass TabStop extends Component<Props, State> {\n private node: HTMLDivElement | undefined;\n private onFocusListener: any;\n\n readonly state: State = {\n boundFocus: false,\n };\n\n componentWillMount() {\n const settings = this.props.container.get('accessibilitySettings');\n\n if (settings && settings.boundFocus) {\n this.setState({\n boundFocus: true,\n });\n }\n }\n\n componentDidMount() {\n if (!this.state.boundFocus) {\n return;\n }\n\n const widgetDOMElement = this.props.container.get('widgetDOMElement');\n\n if (this.node && widgetDOMElement) {\n this.onFocusListener = this.node.addEventListener('focus', () => {\n const focusable = widgetDOMElement.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n const filtered = [].filter.call(focusable, (el: any) => {\n if (typeof window === 'undefined') {\n return true;\n }\n\n const style = window.getComputedStyle(el);\n if (style.display === 'none' || (el.offsetWidth <= 0 && el.offsetHeight <= 0)) {\n return false;\n }\n return true;\n });\n\n const firstFocusable = filtered[0];\n\n if (firstFocusable) {\n (firstFocusable as any).focus();\n }\n });\n }\n }\n\n componentWillUnmount() {\n if (this.node) {\n this.node.removeEventListener('focus', this.onFocusListener);\n }\n }\n\n render() {\n if (!this.state.boundFocus) {\n return null;\n }\n\n return (\n <div\n style={{ opacity: 0 }}\n tabIndex={0}\n ref={(node: any) => {\n this.node = node;\n }}\n />\n );\n }\n}\n\nexport default TabStop;\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport Html from './html';\nimport Link, { Props as LinkProps } from './link';\nimport Text from './text';\n\nexport type Props = Merge<\n LinkProps,\n {\n text: string;\n description?: string;\n }\n>;\n\nexport default forwardRef<HTMLAnchorElement, Props>(\n ({ className, description, text, children, ...other }, ref) => {\n return (\n <Link className={appendClassNames(className, 'humany-text-link')} {...other} ref={ref}>\n {children}\n <Text>{text}</Text>\n {description ? <Html html={description} className=\"humany-description\" /> : null}\n </Link>\n );\n }\n);\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\n\nexport enum DateFormats {\n HH_MM = 'hh:mm',\n YYYY_MM_DD = 'yyyy-mm-dd',\n YYYY_MM_DD_HH_MM = 'yyyy-mm-dd hh:mm',\n}\n\nexport type Props = {\n timestamp: string;\n format?: DateFormats;\n className?: string;\n};\n\nconst Timestamp: React.FC<Props> = ({ className = '', format = DateFormats.HH_MM, timestamp }) => {\n return (\n <span className={appendClassNames(className, 'humany-timestamp')}>\n {formatDate(timestamp, format)}\n </span>\n );\n};\n\nexport default Timestamp;\n\nconst asTwoDigitString = (input: number) => {\n return `0${input}`.slice(-2);\n};\n\n/* formats date to hh:mm, yyyy-mm-dd or yyyy-mm-dd hh:mm format */\nfunction formatDate(unformattedDate: string, format: DateFormats) {\n const date = new Date(unformattedDate);\n\n const dateArray = date.toTimeString().split(' ')[0].split(':');\n\n const timeString = dateArray.length > 1 ? `${dateArray[0]}:${dateArray[1]}` : dateArray[0];\n\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const day = date.getDate();\n\n const dateString = `${year}-${asTwoDigitString(month)}-${asTwoDigitString(day)}`;\n\n if (format === DateFormats.YYYY_MM_DD) {\n return dateString;\n }\n\n if (format === DateFormats.HH_MM) {\n return timeString;\n }\n\n return `${dateString} ${timeString}`;\n}\n","import styled from '@emotion/styled';\nimport { appendClassNames, uuid } from '@telia-ace/widget-utilities';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useCursorPosition } from './dropdown';\nimport Portal from './portal';\n\nexport type Props = {\n className?: string;\n content: React.ReactNode;\n sticky: boolean;\n children?: React.ReactNode;\n};\n\nconst Tooltip: React.FC<Props> = ({ className, children, content, sticky = false, ...other }) => {\n const [open, setOpen] = useState(false);\n const id = useRef(uuid());\n const ref = useRef() as React.MutableRefObject<HTMLDivElement>;\n const [{ x, y }, set] = useCursorPosition(open, id.current, ref.current);\n\n const clickHandler = (event: MouseEvent) => {\n const { target } = event;\n\n if (!ref.current || !target) {\n return;\n }\n\n if (ref.current !== target && !ref.current.contains(target as Node)) {\n setOpen(false);\n }\n };\n\n useEffect(() => {\n if (!sticky) {\n return;\n }\n\n window.addEventListener('click', clickHandler);\n\n return () => {\n window.removeEventListener('click', clickHandler);\n };\n }, [open, sticky]);\n\n const handleMouseEvent = useCallback(\n (e: React.MouseEvent, value: boolean) => {\n set(e, ref.current);\n setOpen(value);\n },\n [set, setOpen]\n );\n\n return (\n <Trigger\n ref={ref}\n className=\"humany-tooltip-trigger\"\n onMouseEnter={!sticky ? (e) => handleMouseEvent(e, true) : undefined}\n onMouseLeave={!sticky ? (e) => handleMouseEvent(e, false) : undefined}\n onTouchEnd={sticky ? (e) => handleMouseEvent(e as any, !open) : undefined}\n onClick={sticky ? (e) => handleMouseEvent(e, !open) : undefined}\n >\n {children}\n {open && (\n <Portal>\n <TooltipContainer\n className={appendClassNames(className, 'humany-tooltip-container')}\n x={x}\n y={y}\n {...other}\n >\n {content}\n </TooltipContainer>\n </Portal>\n )}\n </Trigger>\n );\n};\n\nconst Trigger = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst TooltipContainer = styled.div<{\n x: number;\n y: number;\n}>`\n color: #ffffff;\n background: #161616;\n border-radius: ${(p) => p.theme.borderRadius};\n padding: calc(${(p) => p.theme.sizes?.small} * 2);\n font-size: ${(p) => p.theme.fonts?.normal};\n font-family: ${(p) => p.theme.fonts?.type};\n position: absolute;\n z-index: 10;\n\n a {\n color: ${(p) => (p.color ? p.color : 'inherit')};\n text-decoration: none;\n }\n\n i,\n svg {\n margin-right: ${(p) => p.theme.sizes?.small};\n }\n\n ${(p: any) => {\n let css = '';\n\n if (p.y > 0) {\n css += `top: calc(2px + ${p.y || '0'}px);`;\n } else {\n css += `bottom: 2px;`;\n }\n\n if (p.x > 0) {\n css += `right: calc(2px + ${p.x || '0'}px);`;\n } else {\n css += `left: 2px;`;\n }\n\n return css;\n }};\n`;\n\nexport default Tooltip;\n","import React from 'react';\nimport { Transition } from 'react-transition-group';\nimport { transitionComposer, TransitionStateSettings } from '../utils';\n\nexport type Props = {\n in: boolean;\n timeout?: number | { enter?: number; exit?: number };\n mountOnEnter?: boolean;\n unmountOnExit?: boolean;\n children?: any;\n transitions?: string | { enter: TransitionInfo; exit: TransitionInfo };\n};\n\ntype TransitionInfo = {\n type: string;\n easing?: string;\n};\n\n/**\n * Wrapper component for Transition from 'react-transition-group'\n * Controls animated enter/exit transitions of a child component bu dynamically creating\n * css that is forwarded to the child component.\n *\n * TODO:\n * Extend to accept more specific transitions (TransitionStateSettings) to enable different\n * enter and exit animations, timings and easings\n */\nconst TransitionComponent: React.FC<Props> = (props) => {\n const {\n in: inState,\n mountOnEnter = true,\n unmountOnExit = true,\n timeout,\n children,\n transitions,\n } = props;\n\n const generateTransitionDefinition = ():\n | { enter: TransitionStateSettings; exit: TransitionStateSettings }\n | undefined => {\n if (!transitions || transitions === 'none') {\n return;\n }\n if (typeof transitions === 'string') {\n return {\n enter: {\n transitionKeys: transitions,\n duration: !!timeout\n ? typeof timeout === 'number'\n ? timeout\n : timeout.enter\n : 200,\n easing: 'ease-in',\n },\n exit: {\n transitionKeys: transitions,\n duration: !!timeout\n ? typeof timeout === 'number'\n ? timeout\n : timeout.exit\n : 200,\n easing: 'ease-out',\n },\n };\n }\n if (typeof transitions === 'object') {\n const { enter, exit } = transitions;\n return {\n enter: {\n transitionKeys: transitions.enter?.type,\n duration: !!timeout\n ? typeof timeout === 'number'\n ? timeout\n : timeout.enter\n : 200,\n easing: !!enter.easing ? enter.easing : 'ease-in',\n },\n exit: {\n transitionKeys: transitions.enter?.type,\n duration: !!timeout\n ? typeof timeout === 'number'\n ? timeout\n : timeout.enter\n : 200,\n easing: !!exit.easing ? exit.easing : 'ease-out',\n },\n };\n }\n };\n\n const def = generateTransitionDefinition();\n\n return (\n <Transition\n timeout={{\n enter: (def && def.enter.duration) || 0,\n exit: (def && def.exit.duration) || 0,\n }}\n in={inState}\n appear={true}\n mountOnEnter={mountOnEnter}\n unmountOnExit={unmountOnExit}\n onEnter={(node: HTMLElement) => node.clientHeight}\n >\n {(state) => children && children(state, def && transitionComposer.compose(state, def))}\n </Transition>\n );\n};\n\nexport default TransitionComponent;\n","import { WidgetRenderState } from '@telia-ace/widget-core';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport { Widget, WidgetState } from '@webprovisions/platform';\nimport React, { forwardRef, useEffect } from 'react';\nimport { useContainer } from '../hooks';\nimport Link, { Props as LinkProps } from './link';\n\nexport type Props = Merge<\n LinkProps,\n {\n widgetName: string;\n activationOptions?: { [key: string]: any };\n }\n>;\n\nexport default forwardRef<HTMLAnchorElement, Props>(\n ({ className, children, onClick = () => {}, widgetName, activationOptions, ...other }, ref) => {\n const container = useContainer();\n const getWidget = () => {\n const { implementation }: Widget = container.get('$widget');\n return implementation.widgets.get(widgetName);\n };\n\n useEffect(() => {\n const widget = getWidget();\n widget?.activate(activationOptions).then(() => widget.invoke('attach'));\n return () => {\n widget?.deactivate();\n };\n }, [widgetName]);\n\n const openWidget = (\n e: React.MouseEvent<HTMLAnchorElement> | React.KeyboardEvent<HTMLAnchorElement>\n ) => {\n const widget = getWidget();\n const target = e.currentTarget;\n if (widget) {\n const toggle = () => {\n widget\n .invoke('renderState')\n .then((renderState) =>\n renderState === WidgetRenderState.open\n ? widget.invoke('close')\n : widget.invoke('open')\n )\n .then(() => {\n widget.events.subscribeOnce('widget:area-rendered', (event, data) => {\n const widgetDOMElement = container.get(\n 'widgetDOMElement'\n ) as HTMLElement;\n\n if (widgetDOMElement) {\n widget.events.dispatch('widget:modal-opened', {\n name: widget.name,\n ref: target,\n });\n }\n });\n });\n };\n if (widget.state === WidgetState.Deactivated) {\n widget\n .activate(activationOptions)\n .then(() => widget.invoke('attach'))\n .then(toggle);\n } else {\n toggle();\n }\n }\n };\n\n const onEnter = (e: React.KeyboardEvent<HTMLAnchorElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n openWidget(e);\n }\n };\n\n return (\n <Link\n className={appendClassNames(className, 'humany-widget-link')}\n onKeyDown={onEnter}\n onClick={(e) => {\n onClick(e);\n openWidget(e);\n }}\n {...other}\n ref={ref}\n >\n {children}\n </Link>\n );\n }\n);\n","import styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef, ReactNode, useMemo } from 'react';\nimport Portal from '../components/portal';\nimport useContainer from '../hooks/use-container';\n\ntype Props = {\n portalId: string;\n className?: string;\n children?: ReactNode;\n};\n\nexport const WidgetOverlayOutlet = forwardRef<HTMLDivElement, Props>(\n ({ portalId = 'humany-widget-overlay-portal', className, children }, ref) => {\n const container = useContainer();\n\n const parentElement = useMemo(() => {\n if (!container) return null;\n\n const widgetDOMElement: HTMLElement = container.get('widgetDOMElement');\n\n if (!widgetDOMElement || !widgetDOMElement.childElementCount) return null;\n\n return widgetDOMElement.children[0];\n }, [container]);\n\n if (!parentElement) {\n return null;\n }\n\n return (\n <Portal elementId={portalId} parent={parentElement}>\n <Wrapper\n className={appendClassNames('humany-widget-overlay-outlet', className)}\n ref={ref}\n >\n {children}\n </Wrapper>\n </Portal>\n );\n }\n);\n\nconst Wrapper = styled.div`\n background-color: #ffffff;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n z-index: 10;\n width: 100%;\n height: 100%;\n`;\n","import {\n ComponentResolver,\n extendComponent,\n ExtendComponentHandler,\n ExtendComponentOptions,\n ReactComponent,\n} from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { lazy } from 'react';\n\n/**\n * Registers a React component on the component platform.\n * @param container Container to register the component on.\n * @param type Type name to resolve the component from configuration.\n * @param reactComponent Promise resolving to the React component for rendering.\n * @param fn Handler for controlling the component.\n */\nconst createReactComponent = (\n container: Container,\n type: string,\n reactComponent: ReactComponent,\n fn?: ExtendComponentHandler,\n options?: ExtendComponentOptions\n) => {\n return container.getAsync('componentResolver').then((componentResolver: ComponentResolver) => {\n componentResolver.registerComponent(\n type,\n lazy(() => reactComponent)\n );\n return extendComponent(container, type, fn || (() => {}), type, options);\n });\n};\n\nexport default createReactComponent;\n","import {\n extendComponent,\n ExtendComponentHandler,\n ExtendComponentOptions,\n} from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\n\nconst createWebComponent = async (\n container: Container,\n type: string,\n registerComponent: any,\n fn?: ExtendComponentHandler,\n options?: ExtendComponentOptions\n) => {\n const componentResolver = await container.getAsync('componentResolver');\n // (componentResolver as any).registerWebComponent(\n // type,\n // () => registerComponent,\n // tag\n // );\n\n console.log('registering component', type, registerComponent);\n componentResolver.registerComponent(type, () => registerComponent);\n\n return await extendComponent(container, type, fn || (() => {}), type, options);\n};\n\nexport default createWebComponent;\n","import { css, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { html, unsafeStatic } from 'lit/static-html.js';\n\ntype HeadingTypes = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\nconst isHeadingElement = (input: string): input is HeadingTypes => {\n return ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(input);\n};\n// TODO: this component is just a placeholder for now\n\n@customElement('ui-typography')\nexport class Typography extends LitElement {\n static styles = [\n css`\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n p,\n span {\n margin: var(--typography-margin, 0);\n font-size: var(--typography-font-size, var(--fonts-normal));\n font-weight: var(--typography-font-weight, normal);\n line-height: var(--typography-line-height, inherit);\n color: var(--typography-color, var(--colors-text));\n }\n `,\n ];\n\n @property({ type: String }) variant = 'span';\n\n private _getTag(input: HeadingTypes) {\n const mappedValue = window.getComputedStyle(this).getPropertyValue(`--typography-${input}`);\n\n if (mappedValue) {\n return mappedValue.trim();\n }\n return input;\n }\n\n render() {\n const mappedTag = isHeadingElement(this.variant)\n ? this._getTag(this.variant)\n : this.variant;\n\n const tag = unsafeStatic(mappedTag);\n return html`\n <${tag}>\n <slot />\n </${tag}>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui-typography': Typography;\n }\n}\n","import { ReactiveController, ReactiveControllerHost } from 'lit';\n\n// used to listen for changes made on the component node\nexport class NodeConnector implements ReactiveController {\n host;\n\n constructor(host: ReactiveControllerHost /*container: Container*/) {\n (this.host = host).addController(this);\n }\n\n propertyChangeHandler(event: any) {\n const props: { [key: string]: any } = event.detail;\n\n Object.keys(props)\n .filter((key) => `_${key}` in this)\n .forEach((key: string) => (this[`_${key}` as keyof this] = props[key]));\n }\n\n hostConnected() {\n (this.host as any).addEventListener('set-properties', this.propertyChangeHandler);\n }\n\n hostDisconnected() {\n (this.host as any).removeEventListener('set-properties', this.propertyChangeHandler);\n }\n}\n","import { ComponentNode, ComponentPlatform } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\n\nexport class DataProvider {\n private _host: HTMLElement;\n node: ComponentNode | undefined;\n nodeId: string = '';\n container: Container | undefined;\n\n constructor(elem: HTMLElement) {\n this._host = elem;\n }\n\n async initialize() {\n this.nodeId = (this._host as any).getAttribute('nodeId');\n\n if (!this.nodeId) {\n console.warn('Could not get node id in DataProvider.');\n return;\n }\n\n this.container = this._requestInstance('container');\n\n if (!this.container) {\n console.warn('Could not get data in DataProvider. Container was not defined.');\n return;\n }\n const platform = await ComponentPlatform.getInstance(this.container);\n this.node = platform.nodes.get(this.nodeId);\n\n if (!this.node) {\n console.warn(`Could not get component node with ID: ${this.nodeId}.`);\n return;\n }\n }\n\n _requestInstance(key: string) {\n const event = new CustomEvent<{ key: string; instance?: any }>('request-instance', {\n detail: { key },\n bubbles: true,\n composed: true,\n cancelable: true,\n });\n (this._host as any).dispatchEvent(event);\n\n return event.detail.instance;\n }\n}\n","import { dedupeMixin } from '@open-wc/dedupe-mixin';\nimport { LitElement } from 'lit';\n\nexport declare class ConsumerInterface {}\nexport declare class ContextProviderInterface {}\n\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nconst connectEvent = 'context.connectEvent';\n\nexport const ConsumerMixin = dedupeMixin(\n <T extends Constructor<LitElement>>(Base: T) => {\n class ConsumerMixinClass extends Base {\n _injectedContexts: Map<string, any> = new Map();\n\n connectedCallback() {\n // if (super.connectedCallback) {\n super.connectedCallback();\n // }\n\n this._injectedContexts = new Map();\n\n for (const key of (this.constructor as any).inject) {\n this._injectContext(key);\n }\n }\n\n /**\n * Create an event and propagate it through the tree up, to find provider,\n * usbubscribe callback we save to injected contexts, to call them on unmount\n */\n _injectContext(key: string) {\n const callback = (value: any, oldValue: any) => {\n this._contextValueChanged(key, value, oldValue);\n };\n\n // Composed event because lit-element can work without shadow root\n const event = new CustomEvent(connectEvent, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: { key, connected: false, callback },\n });\n\n this.dispatchEvent(event);\n\n if (event.detail.connected) {\n this._injectedContexts.set(key, {\n unsubscribe: (event.detail as any).unsubscribe,\n });\n }\n }\n\n /**\n * Change value of property recieved from a context, then property changes\n */\n _contextValueChanged(key: string, value: any, oldValue: any) {\n if (value !== oldValue) {\n (this as any)[key] = value;\n }\n }\n\n disconnectedCallback() {\n for (const context of this._injectedContexts.values()) {\n context.unsubscribe();\n }\n\n // if (super.disconnectedCallback) {\n super.disconnectedCallback();\n // }\n }\n }\n return ConsumerMixinClass as Constructor<ConsumerInterface> & T;\n }\n);\n\nexport const ContextProviderMixin = dedupeMixin(\n <T extends Constructor<LitElement>>(Base: T) => {\n class ContextProviderClass extends Base {\n _providedContexts: Map<string, any> = new Map();\n\n connectedCallback() {\n // if (super.connectedCallback) {\n super.connectedCallback();\n // }\n\n this._providedContexts = new Map();\n\n for (const key of (this.constructor as any).provide) {\n this._provideContext(key);\n }\n }\n\n /**\n * Create a new instance of the event listener and save it in provided\n * contexts map to remove the listener on unmount.\n */\n _provideContext(key: string) {\n const listener = (event: any) => {\n const { detail } = event;\n\n if (detail.key === key) {\n event.stopPropagation();\n\n const context = this._providedContexts.get(key);\n\n context.callbacks.add(detail.callback);\n\n detail.connected = true;\n detail.unsubscribe = () => {\n context.callbacks.delete(detail.callback);\n };\n\n detail.callback((this as any)[key]);\n }\n };\n\n this.addEventListener(connectEvent, listener);\n\n this._providedContexts.set(key, {\n listener,\n callbacks: new Set(),\n });\n }\n\n /**\n * Trigger subscriber callback to provide new context value\n */\n _updateContextValue(key: string, value: any, oldValue: any) {\n if (this._providedContexts.has(key)) {\n const context = this._providedContexts.get(key);\n\n for (const callback of context.callbacks) {\n callback(value, oldValue);\n }\n }\n }\n\n /**\n * Notify listeners about property changes before render\n */\n shouldUpdate(changedProperties: any) {\n const shouldUpdate = super.shouldUpdate(changedProperties);\n\n for (const [key, oldValue] of changedProperties.entries()) {\n if ((this.constructor as any).provide.includes(key)) {\n this._updateContextValue(key, (this as any)[key], oldValue);\n }\n }\n\n return shouldUpdate;\n }\n\n disconnectedCallback() {\n for (const context of this._providedContexts.values()) {\n this.removeEventListener(connectEvent, context.listener);\n }\n\n // if (super.disconnectedCallback) {\n super.disconnectedCallback();\n // }\n }\n }\n return ContextProviderClass as Constructor<ContextProviderInterface> & T;\n }\n);\n","import { LitElement } from 'lit';\nimport { state } from 'lit/decorators.js';\n\nexport declare class PendingStateInterface {}\n\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nexport const PendingState = <T extends Constructor<LitElement>>(Base: T) => {\n class PendingStateClass extends Base {\n @state() hasPendingChildren = false;\n @state() pendingCount = 0;\n\n constructor(...args: any[]) {\n super();\n\n this.addEventListener('pending-state', async (event: any) => {\n this.hasPendingChildren = true;\n this.pendingCount++;\n\n await event.detail.promise;\n this.pendingCount--;\n this.hasPendingChildren = this.pendingCount !== 0;\n });\n }\n }\n\n return PendingStateClass as Constructor<PendingStateInterface> & T;\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 { 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","export const mapContextStyle = (ctx: { [key: string]: any }) => {\n const vars: { [key: string]: string } = {};\n if (ctx.cardinal) {\n vars['--cardinal'] = `${ctx.cardinal}px`;\n }\n if (ctx.gap) {\n vars['--gap'] = `${ctx.gap}`;\n }\n if (ctx.fonts?.type) {\n vars['--fonts-type'] = `${ctx.fonts.type}`;\n }\n if (ctx.fonts?.small) {\n vars['--fonts-small'] = `${ctx.fonts.small}`;\n }\n if (ctx.fonts?.normal) {\n vars['--fonts-normal'] = `${ctx.fonts.small}`;\n }\n if (ctx.fonts?.medium) {\n vars['--fonts-medium'] = `${ctx.fonts.medium}`;\n }\n if (ctx.fonts?.large) {\n vars['--fonts-large'] = `${ctx.fonts.large}`;\n }\n if (ctx.fonts?.huge) {\n vars['--fonts-huge'] = `${ctx.fonts.huge}`;\n }\n if (ctx.colors?.accent) {\n vars['--colors-accent'] = `${ctx.colors.accent}`;\n }\n if (ctx.colors?.link) {\n vars['--colors-link'] = `${ctx.colors.link}`;\n }\n if (ctx.colors?.primary) {\n vars['--colors-primary'] = `${ctx.colors.primary}`;\n }\n if (ctx.colors?.text) {\n vars['--colors-text'] = `${ctx.colors.text}`;\n }\n if (ctx.colors?.textLight) {\n vars['--colors-textLight'] = `${ctx.colors.textLight}`;\n }\n if (ctx.colors?.warning) {\n vars['--colors-warning'] = `${ctx.colors.warning}`;\n }\n if (ctx.accessibility?.border) {\n vars['--accessibility-border'] = `${ctx.accessibility.border}`;\n }\n if (ctx.accessibility?.colors?.inactiveText) {\n vars['--accessibility-colors-inactiveText'] = `${ctx.accessibility.colors.inactiveText}`;\n }\n if (ctx.accessibility?.colors?.activeText) {\n vars['--accessibility-colors-activeText'] = `${ctx.accessibility.colors.activeText}`;\n }\n if (ctx.inputBorder) {\n vars['--inputBorder'] = `${ctx.inputBorder}`;\n }\n if (ctx.borderRadius) {\n vars['--borderRadius'] = `${ctx.borderRadius}`;\n }\n if (ctx.boxShadow) {\n vars['--boxShadow'] = `${ctx.boxShadow}`;\n }\n if (ctx.border) {\n vars['--border'] = `${ctx.border}`;\n }\n if (ctx.sizes?.small) {\n vars['--size-small'] = `${ctx.sizes.small}`;\n }\n if (ctx.sizes?.normal) {\n vars['--size-normal'] = `${ctx.sizes.normal}`;\n }\n if (ctx.sizes?.medium) {\n vars['--size-medium'] = `${ctx.sizes.medium}`;\n }\n if (ctx.sizes?.large) {\n vars['--size-large'] = `${ctx.sizes.large}`;\n }\n\n if (ctx.typographyVariantMapping) {\n if (ctx.typographyVariantMapping.h1) {\n vars['--typography-h1'] = `${ctx.typographyVariantMapping.h1}`;\n }\n if (ctx.typographyVariantMapping.h2) {\n vars['--typography-h2'] = `${ctx.typographyVariantMapping.h2}`;\n }\n if (ctx.typographyVariantMapping.h3) {\n vars['--typography-h3'] = `${ctx.typographyVariantMapping.h3}`;\n }\n if (ctx.typographyVariantMapping.h4) {\n vars['--typography-h4'] = `${ctx.typographyVariantMapping.h4}`;\n }\n if (ctx.typographyVariantMapping.h5) {\n vars['--typography-h5'] = `${ctx.typographyVariantMapping.h5}`;\n }\n if (ctx.typographyVariantMapping.h6) {\n vars['--typography-h6'] = `${ctx.typographyVariantMapping.h6}`;\n }\n }\n\n return vars;\n};\n","import { asDescriptor, ComponentPlatform, ComponentResolver } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { css, html, LitElement, unsafeCSS } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { mapContextStyle } from '../utils/map-context-style';\nimport { ContextProviderMixin } from './context';\nimport { Requester } from './requester';\n\nexport declare class WidgetComponentInterface {\n requestInstance(key: string): any;\n nodeId: string;\n}\n\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nconst componentTagFromType = (type: string) => {\n const componentTagPrefix = 'w';\n return `${componentTagPrefix}-${type}`;\n};\n\nexport const WidgetComponent = <T extends Constructor<LitElement>>(Base: T) => {\n class WidgetComponentClass extends ContextProviderMixin(Requester(Base)) {\n container: Container | undefined;\n listeners: any[] = [];\n styleObserver: MutationObserver | undefined;\n\n // static properties = {\n // nodeId: { type: String },\n // branch: { type: String },\n // width: { type: String },\n // _columns: { type: Number },\n // columns: { type: Number },\n // };\n\n // constructor() {\n // super();\n // this.branch = 'default';\n // this.width = 'full';\n // this._columns = 1;\n // this.columns = 1;\n\n // }\n\n @property({ type: String })\n declare nodeId: string;\n @property({ type: String })\n declare branch;\n @property({ type: String })\n declare width;\n @property({ type: Number })\n declare _columns;\n @property({ type: Number })\n declare columns;\n\n constructor() {\n super();\n this.branch = 'default';\n this.width = 'full';\n this._columns = 1;\n this.columns = 1;\n\n this._width = 1;\n this._descriptor = null;\n this._properties = {};\n this._layout = {};\n }\n\n @state()\n declare _width;\n\n @state()\n declare _descriptor: any;\n\n @state()\n declare _properties: { [key: string]: any };\n\n @state()\n declare _context: { [key: string]: any };\n\n @state()\n declare _layout: { [key: string]: any };\n\n static get provide() {\n return ['columns', 'setColumns'];\n }\n\n setColumns = (value: number) => {\n this.columns = value;\n };\n\n setProperties(props: { [key: string]: any }) {\n if (props.columns) {\n this.columns = props.columns;\n // this._columns = props.columns;\n }\n this.dispatchEvent(\n new CustomEvent('set-properties', {\n bubbles: false,\n composed: false,\n cancelable: false,\n detail: props,\n })\n );\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.container = this.requestInstance('container');\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 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 this.setProperties(componentNode.attributes.properties);\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 this.setProperties(componentNode.attributes.properties);\n }\n }\n )\n );\n this.listeners.push(\n platform.events.subscribe(\n 'components:context-changed',\n (event, data) => {\n if (this.nodeId === data.node?.id /*&& isMounted.current*/) {\n this._context = data.node.attributes.context;\n }\n }\n )\n );\n this.listeners.push(\n platform.events.subscribe(\n 'components:layout-changed',\n (event, data) => {\n if (this.nodeId === data.node?.id /*&& isMounted.current*/) {\n this._layout = data.node.attributes.layout;\n }\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 // protected updated(\n // _changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>\n // ): void {\n // this.style.setProperty('--width', '2');\n // }\n\n _getContextStyles() {\n if (!this._context) {\n return {};\n }\n\n return mapContextStyle(this._context);\n }\n\n render() {\n const markup = super.render();\n\n const contextStyles = this._getContextStyles();\n\n const style = html`\n <style>\n :host {\n ${Object.entries(contextStyles).map(([key, value]) => {\n return css`\n ${unsafeCSS(`${key}: ${value};`)}\n `;\n })}\n }\n </style>\n `;\n\n return html`\n <style>\n :host {\n --size: ${this._layout.size || 'full'};\n --width: ${\n (this._layout.size || 'full') === 'full'\n ? 'var(--columns)'\n : `min(var(--columns), ${this._layout.size})`\n };\n grid-column: span var(--width);\n }\n </style>\n\n ${style} ${markup}\n `;\n }\n }\n\n return WidgetComponentClass as Constructor<WidgetComponentInterface> & T;\n};\n"],"names":["inEnteringState","status","inExitingState","partials","transformTransitions","transitionComposer","definitions","enter","exit","inKeys","transitionProperty","css","key","inBase","outKeys","type","direction","title","Browsers","browser","opr","opera","InstallTrigger","HTMLElement","safari","documentMode","StyleMedia","chrome","CSS","isOpera","safariCheck","p","isIE","isChrome","types","convertToStringAttributes","props","result","value","sub","kebabCase","createEmptyComponent","container","React","Empty","__spreadValues","createEmptyComponent$1","isAnchorLink","href","embeddedLinkMapper","_a","_b","children","__objRest","implementation","currentWidgetName","AnchorLink","escapedBindings","binding","expArray","targetWidgetName","WidgetLink","embeddedLinkMapper$1","filterCssProps","cssProps","filterCssPropsStyle","styleString","filterCssProps$1","genericHashLink","As","hashFragment","reset","getElementAndScroll","scrollFunction","element","handleClick","e","el","scroll","smooth","to","filteredProps","__spreadProps","headingElement","style","defaultTag","prefix","match","pre","tag","mapping","parseHtmlString","html","instruction","convert","imageLightboxRenderer","htmlBody","attrs","Lightbox","defaultRenderInstructions","AnchorLink$1","Button","forwardRef","ref","className","other","StyledButton","appendClassNames","styled","Checkbox","onChange","onEnter","Checkbox$1","ContainerContext","createContext","Container","ColumnContext","ComponentNodeContext","ComponentPropertyContext","RoutingContext","ConversationContext","useComponentDescriptor","useContext","useComponentDescriptor$1","useContainer","useContainer$1","useAction","passedOrigin","passedContainer","origin","action","resolver","useAction$1","useComponentNode","id","descriptor","components","useComponentPlatform","node","setNode","useState","useEffect","useComponentNode$1","useIsMounted","isMounted","useRef","useIsMounted$1","componentPlatform","setComponentPlatform","ComponentPlatform","platform","useComponentPlatform$1","useChildren","setChildren","updateChildren","useCallback","branch","child","asDescriptor","subscribe","unsubscribe","createEventSubscriber","event","data","parentNode","useChildren$1","useColumns","useColumns$1","useComponent","passedType","component","setComponent","useComponent$1","context","setContext","useContext$1","useConversation","useConversation$1","useDispatch","queue","setQueue","actions","setActions","ComponentQuery","uuid","item","reason","resolve","reject","useDispatch$1","useEventListener","eventName","handler","condition","savedHandler","eventListener","useEvents","events","useEvents$1","useIsTabbing","isTabbing","setIsTabbing","handleKeydown","useIsTabbing$1","useKeyPress","targetKey","keyPressed","setKeyPressed","onKeyDown","onKeyUp","useKeyPress$1","useLayout","layout","setLayout","useLayout$1","usePrevious","usePrevious$1","useProperties","useProperties$1","useRenderState","renderState","setRenderState","widget","name","invoke","actionResolver","WidgetRenderState","useRenderState$1","useRouter","useRouter$1","useRouteData","router","routeData","setRouteData","params","removeNullAndUndefinedValues","useRouteData$1","useScroll","scrollable","elem","previousY","timeoutId","onScroll","onTouchStart","traverseScrollable","isScrollable","onTouchMove","top","firstScrollable","scrollTop","isAtTop","isAtBottom","styling","useSettings","settings","setSettings","useSettings$1","useToggle","initialValue","setValue","toggle","forced","v","useToggle$1","useTransitionEnd","widgetDOMElement","viewDOMElement","setViewDOMElement","rootDOMElement","setRootDOMElement","rootArea","n","view","getElement","useWidgetEvent","callback","dependencies","useWidgetEvent$1","useUniqueMenu","dispatch","_","triggeredId","useUniqueMenu$1","Text","Text$1","contentBox","buttonCss","_c","invertedHoverButton","primaryColor","secondaryColor","active","theme","disabled","borderTabStyle","linkTabStyle","paddedBorderTabStyle","CloseButton","StyledText","list","itemList","_d","genericHtml","_e","_f","Portal","elementId","parent","createPortal","Portal$1","SymbolBadge","text","backgroundSize","size","symbol","elementStyle","content","sharedProps","svgProps","CaretUp","Icon","SymbolBadge$1","defaultVariantMapping","Typography","variant","typographyVariantMapping","variantMapping","Component","Base","Typography$2","AnimationType","defaultDuration","Drawer","header","onToggle","trigger","fullScreen","closeButtonAriaLabel","animation","duration","closeButtonRef","triggerRef","visible","toggleVisible","previousVisible","esc","target","closeMenus","WrapperWithAnimation","animations","CSSTransition","Header","Drawer$1","Wrapper","AnimationBase","WrapperWithSlideInBottom","WrapperWithSlideInRight","WrapperWithSlideInLeft","WrapperWithSlideInTop","usePosition","posX","setPosX","posY","setPosY","set","clientRect","newPos","useCursorPosition","Dropdown","innerRef","useImperativeHandle","setVisible","x","y","onTriggerClick","StyledDropdown","Dropdown$1","Empty$1","grid","columns","gap","Div","Html","htmlParseInstruction","processedHtml","setProcessedHtml","defaultInstructions","instructions","processed","processHtmlString","faIcon","role","Icon$1","input","autoFocus","onFocusChange","onEscape","selectAllOnFocus","hasFocus","setHasFocus","handleFocus","inFocus","List","items","renderItem","renderLi","index","Paragraph","ItemList","customHeader","ulProps","ItemTree","tree","rootItem","renderUnselected","renderEmpty","liProps","hasSelectedChildren","checkIfSelected","renderTreeItems","treeItems","level","itemProps","selected","matches","isSelected","ItemTree$1","RouteLink","forwardedRef","onClick","path","r","Logger","Link","encodedParams","acc","HistoryMode","widgetName","getSpecificWidgetPath","WrappedLink","tabIndex","as","routeName","StyledRouteLink","StyledLink","Overlay","onOverlayClick","Overlay$1","spin","keyframes","dash","SpinnerSvg","Spinner","SpinnerCircle","Loader","loading","Loader$1","ZoomImg","zoomState","image","changeZoom","loaded","setLoaded","initialZoom","setInitialZoom","width","height","restStyle","calcInitialZoom","img","ratio","imageSize","useMemo","zoom","StyledLoader","Img","EmptyDiv","ZoomImg$1","useFadeOut","timeOut","show","setShow","triggerChange","left","right","setZoomState","setScroll","scrolling","setScrolling","triggerFadeOut","openImage","setOpenImage","previousDirection","setPreviousDirection","imageLinkRef","topButtonsRef","navigationButtonsRef","contentRef","firstButton","leftButton","rightButton","canNavigateRight","canNavigateLeft","navLeft","navRight","imageList","div","images","imgElement","src","position","i","overlayClick","changeZoomState","zoomIn","downloadImage","mouseDownHandler","ele","mouseDragHandler","dx","dy","mouseStopDragHandler","isDraggable","imageElements","DraggableArea","TransparentBarTop","TopRightButtons","Content","CenterEdgeButtons","TransparentBarBottom","BottomCenterButtons","ZoomLevel","Thumbnail","ButtonSet","buttons","ButtonSetWrapper","circle","ariaLabel","icon","ButtonSetButton","FadingDiv","BUTTON_SIZE","TransparentBar","Lightbox$1","Modal","close","Modal$1","Confirm","onCancel","onConfirm","cancelLabel","confirmLabel","cancel","confirm","StyledModal","StyledConfirmButton","StyledCancelButton","Confirm$1","NotFound","link","suggestionHeader","suggestion","Status","TextLink","NotFound$1","TabStop","focusable","firstFocusable","TabStop$1","description","DateFormats","Timestamp","format","timestamp","formatDate","Timestamp$1","asTwoDigitString","unformattedDate","date","dateArray","timeString","year","month","day","dateString","Tooltip","sticky","open","setOpen","clickHandler","handleMouseEvent","Trigger","TooltipContainer","Tooltip$1","TransitionComponent","inState","mountOnEnter","unmountOnExit","timeout","transitions","def","Transition","state","TransitionComponent$1","activationOptions","getWidget","openWidget","WidgetState","WidgetOverlayOutlet","portalId","parentElement","createReactComponent","reactComponent","fn","options","componentResolver","lazy","extendComponent","createReactComponent$1","createWebComponent","registerComponent","__async","createWebComponent$1","isHeadingElement","LitElement","mappedValue","mappedTag","unsafeStatic","__decorateClass","property","customElement","NodeConnector","host","DataProvider","connectEvent","ConsumerMixin","dedupeMixin","ConsumerMixinClass","oldValue","ContextProviderMixin","ContextProviderClass","listener","detail","changedProperties","shouldUpdate","PendingState","PendingStateClass","args","Provider","ProviderClass","instance","Requester","RequesterClass","mapContextStyle","ctx","vars","_g","_h","_i","_j","_k","_l","_m","_o","_n","_q","_p","_r","_s","_t","_u","componentTagFromType","WidgetComponent","WidgetComponentClass","values","componentNode","unmount","componentTag","create","markup","contextStyles","unsafeCSS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAMA,KAAkB,CAACC,MACdA,MAAW,cAAcA,MAAW,WAEzCC,KAAiB,CAACD,MACbA,MAAW,aAAaA,MAAW,UAMxCE,IAAgB;AAAA,EAClB,MAAM;AAAA,IACF,IAAI;AAAA,IACJ,KAAK;AAAA,EACT;AAAA,EACA,cAAc;AAAA,IACV,IAAI;AAAA,IACJ,KAAK;AAAA,EACT;AAAA,EACA,eAAe;AAAA,IACX,IAAI;AAAA,IACJ,KAAK;AAAA,EACT;AAAA,EACA,YAAY;AAAA,IACR,IAAI;AAAA,IACJ,KAAK;AAAA,EACT;AAAA,EACA,cAAc;AAAA,IACV,IAAI;AAAA,IACJ,KAAK;AAAA,EACT;AAAA,EACA,OAAO;AAAA,IACH,IAAI;AAAA,IACJ,KAAK;AAAA,EACT;AACJ,GAEMC,KAAuB,CAAC,YAAY,cAAc,cAAc,eAAe,OAAO,GAE/EC,KAAqB;AAAA,EAC9B,SAAS,CACLJ,IAA2B,UAC3BK,MACC;AACK,UAAA,EAAE,OAAAC,GAAO,MAAAC,EAAS,IAAAF,GAClBG,IAASF,EAAM,eAAe,MAAM,GAAG,GAEvCG,IACFN,GAAqB,QAAQK,EAAO,EAAE,IAAI,KAAK,cAAc;AAE7D,QAAAT,GAAgBC,CAAM;AAClB,aAAAQ,KAAUA,EAAO,SAAS,IACnBE;AAAA,sBACDF,KACFA,EAAO,SAAS,KAChBA,EAAO,IAAI,CAACG,MAAcT,EAASS,KAAOT,EAASS,GAAK,KAAK,EAAG;AAAA,kCAClDF,KAAsBH,EAAM,cAAcA,EAAM;AAAA,oBAG/D;AAGX,UAAMM,IACFJ,KACAA,EAAO,SAAS,KAChBE;AAAA,kBACMF,EAAO,IAAI,CAACG,MAAcT,EAASS,KAAOT,EAASS,GAAK,MAAM,EAAG;AAAA;AAGvE,QAAAV,GAAeD,CAAM,GAAG;AACxB,YAAMa,IAAUN,EAAK,eAAe,MAAM,GAAG;AAC7C,aAAIM,KAAWA,EAAQ,SAAS,KAAKb,MAAW,YACrCU;AAAA,sBACDE;AAAA,sBACAC,EAAQ,IAAI,CAACF,MAAcT,EAASS,KAAOT,EAASS,GAAK,MAAM,EAAG;AAAA,kCACtDF,KAAsBF,EAAK,cAAcA,EAAK;AAAA,oBAQ7DK;AAAA,IACX;AAAA,EACJ;AAAA,EACA,uBAAuB,CACnBZ,GACAc,GACAC,MACC;AACD,QAAID,MAAS;AACF,aAAAV,GAAmB,QAAQJ,GAAQ;AAAA,QACtC,OAAO;AAAA,UACH,gBAAgBe,MAAc,UAAU,gBAAgB;AAAA,UACxD,UAAU;AAAA,QACd;AAAA,QACA,MAAM;AAAA,UACF,gBAAgBA,MAAc,UAAU,eAAe;AAAA,UACvD,UAAU;AAAA,QACd;AAAA,MAAA,CACH;AAEL,QAAID,MAAS;AACF,aAAAV,GAAmB,QAAQJ,GAAQ;AAAA,QACtC,OAAO;AAAA,UACH,gBAAgB;AAAA,UAChB,UAAU;AAAA,QACd;AAAA,QACA,MAAM;AAAA,UACF,gBAAgB;AAAA,UAChB,UAAU;AAAA,QACd;AAAA,MAAA,CACH;AAAA,EAET;AAAA,EACA,KAAK,CAACgB,MACKd,EAASc;AAExB;ACpIY,IAAAC,uBAAAA,OACRA,EAAA,QAAQ,SACRA,EAAA,SAAS,UACTA,EAAA,UAAU,WACVA,EAAA,SAAS,UACTA,EAAA,OAAO,QACPA,EAAA,eAAe,iBACfA,EAAA,QAAQ,SACRA,EAAA,KAAK,qBARGA,IAAAA,MAAA,CAAA,CAAA;AAWZ,MAAAC,KAAe,MAAuB;AAC5B,QAAA;AAAA,IACF,KAAAC;AAAA,IACA,OAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,QAAAC;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,IACA,QAAAC;AAAA,IACA,KAAAC;AAAA,EACK,IAAA,QAEHC,IAAW,CAAC,CAACT,KAAO,CAAC,CAACA,EAAI,UAAW,CAAC,CAACC,KAAS,UAAU,UAAU,QAAQ,OAAO,KAAK;AAC9F,MAAIQ;AACO,WAAA;AAIX,MAAIP;AACO,WAAA;AAIL,QAAAQ,KAAe,CAACC,MACXA,EAAE,SAAe,MAAA,qCACzB,CAACP,KAAW,OAAOA,KAAW,eAAeA,EAAO,gBAAiB;AACxE,MAAI,eAAe,KAAKD,CAAW,KAAKO;AAC7B,WAAA;AAIL,QAAAE,IAA6B,CAAC,CAACP;AACrC,MAAIO;AACO,WAAA;AAIX,MAAI,CAACA,KAAQ,CAAC,CAACN;AACJ,WAAA;AAIL,QAAAO,IAAW,CAAC,CAACN,MAAW,CAAC,CAACA,EAAO,YAAY,CAAC,CAACA,EAAO;AAC5D,MAAIM;AACO,WAAA;AAIX,MAAIA,KAAY,UAAU,UAAU,QAAQ,KAAK,MAAM;AAC5C,WAAA;AAGX,OAAKA,KAAYJ,MAAY,CAAC,CAACD;AACpB,WAAA;AAEf,GCjEMM,KAAQ,CAAC,UAAU,QAAQ,GAElBC,IAAA,CAACC,MACL,OAAO,KAAKA,CAAK,EAAE,OAAO,CAACC,GAAmCzB,MAAgB;AACjF,QAAM0B,IAAQ,OAAOF,EAAMxB,MAAS,cAAc,KAAKwB,EAAMxB,IACvDG,IAAO,OAAOuB;AACpB,MAAIJ,GAAM,QAAQnB,CAAI,IAAI,IAAI;AAC1B,UAAMwB,IAAM3B,EAAI,UAAU,GAAG,CAAC;AAC1B,IAAA2B,MAAQ,WAAWA,MAAQ,UAC3BF,EAAOG,GAAU5B,CAAG,KAAK0B,EAAM,SAAS,IACjC1B,EAAI,UAAU,GAAG,CAAC,MAAM,WACxByB,EAAAzB,KAAO0B,EAAM,SAAS;AAAA,EACjC;AAEA,IAAAD,EAAOzB,KAAO0B;AAEX,SAAAD;AACX,GAAG,CAAE,CAAA,GCfHI,KAAuB,CAACC,GAAsBN,MAC5CM,EAAU,IAAI,kBAAkB,IACzB,gBAAAC,EAAA,cAACC,IAAOC,EAAA,IAAGT,EAAO,IAEtB,MAGXU,KAAeL,ICNTM,KAAe,CAACC,MACP,IAAI,OAAO,MAAM,GAAG,EACd,KAAKA,CAAI,GAKxBC,KACF,CAACP,MACD,CAACQ,MAAgC;AAAhC,MAAAC,IAAAD,GAAE,YAAAE,MAAFD,GAAef,IAAAiB,EAAfF,GAAe,CAAb;AACO,QAAA;AAAA,IACF,gBAAAG;AAAA,IACA,MAAMC;AAAA,EAAA,IAENb,EAAU,IAAI,SAAS,GAErB,EAAE,MAAAM,IAAO,GAAO,IAAAZ;AAElB,MAAAW,GAAaC,CAAI;AACjB,2CACKQ,IAAW,EAAA,QAAM,IAAC,IAAIR,KAClBI,CACL;AAIR,QAAMK,IAAkBH,EAAe,SAClC,IAAI,CAACI,MAAoBA,EAAQ,QAAQ,OAAO,KAAK,CAAC,EACtD,KAAK,GAAG,GAGPC,IAFS,IAAI,OAAO,sBAAwBF,cAA6B,EAEvD,KAAKT,CAAI;AAE7B,MAAAW,KAAYA,EAAS,UAAU,GAAG;AAClC,UAAMC,IAAmBD,EAAS;AAK9B,QAJiBL,EAAe,QAAQ,IAAIM,CAAgB,KAK5D,CAACA,EAAiB,WAAW,OAAO,KACpC,CAACA,EAAiB,WAAWL,CAAiB;AAE9C,aAAQ,gBAAAZ,EAAA,cAAAkB,IAAA,EAAW,YAAYD,EAAA,GAAmBR,CAAS;AAAA,EAEnE;AAEA,SAAQ,gBAAAT,EAAA,cAAA,KAAAE,EAAA,IAAMT,IAAQgB,CAAS;AACnC,GAEJU,KAAeb,ICrDTc,KAAiB,CAAC3B,MAAe;AACnC,QAAM4B,IAAmC,CAAA;AAEzC,gBAAO,KAAK5B,CAAK,EAAE,QAAQ,CAACxB,MAAQ;AAChC,IAAIA,EAAI,QAAQ,MAAM,IAAI,OACtBoD,EAASpD,KAAOwB,EAAMxB;AAAA,EAC1B,CACH,GAEMoD;AACX,GAGaC,KAAsB,CAAClC,MAA2B;AAC3D,MAAImC,IAAc;AAClB,gBAAO,KAAKH,GAAehC,CAAC,CAAC,EAAE,QAAQ,CAACnB,MAAQ;AAC5C,IAAIA,EAAI,QAAQ,MAAM,IAAI,OACtBsD,KAAe,GAAGtD,EAAI,QAAQ,QAAQ,EAAE,KAAKmB,EAAEnB;AAAA,EACnD,CACH,GACMD;AAAA,UACDuD;AAAA;AAEV,GAEAC,KAAeJ,ICfFK,KAAkB,CAAChC,GAAciC,MAAY;AACtD,MAAIC,IAAe;AAEnB,QAAMC,IAAQ,MAAM;AACD,IAAAD,IAAA;AAAA,EAAA,GAGbE,IAAsB,CAACC,MAA6B;AAChD,UAAAC,IAAU,SAAS,eAAeJ,CAAY;AACpD,WAAII,MAAY,QACZD,EAAeC,CAAO,GAChBH,KACC,MAEJ;AAAA,EAAA,GAGLI,IAAc,CAACC,OACjBA,EAAE,eAAe,GACXL,KACFnC,EAAM,WAASA,EAAM,QAAQwC,CAAC,GAG9B,OAAOxC,EAAM,MAAO,aACLkC,IAAAlC,EAAM,GAAG,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,IAGpDkC,MAAiB,MACjBE;AAAA,IACIpC,EAAM,WACD,CAACyC,MACEzC,EAAM,SACAyC,EAAG,eAAe,EAAE,UAAU,SAAA,CAAU,IACxCA,EAAG,eAAe;AAAA,EAAA,GAGjC,KAEsC3B,IAAAd,GAAzC,UAAA0C,GAAQ,QAAAC,GAAQ,IAAAC,MAAyB9B,GAAlB+B,IAAA5B,EAAkBH,GAAlB,CAAvB,UAAQ,UAAQ;AAExB,SAAImB,MAAO,QACPY,EAAc,OAAO,iDAIpBZ,GAAIa,EAAArC,EAAA,IAAGoC,IAAH,EAAkB,SAASN,EAAA,IAC3BvC,EAAM,QACX;AAER,GC3Da+C,KAAiB,CAACpD,MAAwB,CAAC2C,GAAiBU,MAAe;AACpF,MAAIC,IAAqBX,GACrBY,IAAS;AAET,MAAA,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,SAASZ,CAAO;AACxC,IAAAW,IAAAX;AAAA,OACV;AACG,UAAAa,IAAQb,EAAQ,MAAM,mBAAmB;AAC/C,QAAIa,KAAA,QAAAA,EAAQ,IAAI;AACZ,MAAAF,IAAaE,EAAM;AACnB,YAAM,CAACC,CAAG,IAAId,EAAQ,MAAMW,CAAU;AAC7B,MAAAC,IAAAE;AAAA,IACb;AAAA,EACJ;AASM,QAAAC,KAPY,CAACf,GAAiBc,GAAaE,MACzCA,EAAQhB,KACD,GAAGc,IAAME,EAAQhB,OAErB,GAAGc,IAAMd,KAGEW,GAAYC,GAAQvD,EAAE,MAAM,4BAA4B,CAAA,CAAE;AAEzE,SAAApB;AAAA,UACD8E;AAAA,cACIL;AAAA;AAAA;AAGd;AC1BwB,SAAAO,GAAgBC,GAAWC,GAAkB;AACjE,SAAIA,IACOC,GAAQF,GAAMC,CAAW,IAE7BC,GAAQF,CAAI;AACvB;ACLa,MAAAG,KACT,CAACC,MACD,CACIC,MAEC,gBAAAtD,EAAA,cAAAuD,IAAA,EAAS,OAAAD,GAAc,UAAAD,GAAoB,GAEvCG,KAA4B,CAACzD,GAAsBsD,OACrD;AAAA,EACH,WAAW;AAAA,IACP,GAAG/C,GAAmBP,CAAS;AAAA,IAC/B,KAAKqD,GAAsBC,CAAQ;AAAA,EACvC;AAAA,ICdFxC,KAA6C,CAACpB,MACzCgC,GAAgBhC,GAAO,GAAG,GAGrCgE,KAAe5C,ICAf6C,KAAeC,EAAqC,CAACpD,GAAmCqD,MAAQ;AAA3C,MAAApD,IAAAD,GAAE,aAAAsD,GAAW,UAAApD,MAAbD,GAA0BsD,IAAApD,EAA1BF,GAA0B,CAAxB,aAAW;AAE1D,SAAA,gBAAAR,EAAA;AAAA,IAAC+D;AAAA,IAAAxB,EAAArC,EAAA;AAAA,MACG,MAAK;AAAA,MACL,WAAW8D,EAAiBH,GAAW,eAAe;AAAA,OAClDrE,EAA0BsE,CAAK,IAHtC;AAAA,MAIG,KAAAF;AAAA,IAAA;AAAA,IAECnD;AAAA,EAAA;AAGb,CAAC,GAEKsD,KAAeE,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCRtBC,KAA4B,CAAC3D,MAK7B;AAL6B,MAAAC,IAAAD,GAC/B;AAAA,cAAA4D,IAAW,MAAM;AAAA,IAAC;AAAA,IAClB,SAAAC,IAAU,MAAM;AAAA,IAAC;AAAA,IACjB,WAAAP;AAAA,MAH+BrD,GAI5BsD,IAAApD,EAJ4BF,GAI5B;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAII,SAAA,gBAAAR,EAAA;AAAA,IAAC;AAAA,IAAAE,EAAA;AAAA,MACG,WAAW8D,EAAiBH,GAAW,iBAAiB;AAAA,MACxD,WAAW,CAAC5B,MAAM;AACV,QAAAA,EAAE,QAAQ,WACVmC,EAAQnC,CAAC;AAAA,MAEjB;AAAA,MACA,UAAU,CAACA,MAAMkC,EAASlC,EAAE,OAAO,OAAOA,EAAE,cAAc,OAAO;AAAA,OAC7DzC,EAA0BsE,CAAK;AAAA,EAAA;AAG/C,GAEAO,KAAeH,IC3BFI,KAAmBC,EAAyB,IAAIC,IAAW,GAE3DC,KAAgBF,EAAsB,CAAC,GAEvCG,KAAuBH,EAAmC;AAAA,EACnE,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AACZ,CAAC,GAEYI,KAA2BJ,EAAuC,EAAE,GAEpEK,KAAiBL,EAAqC,IAAI,GAE1DM,KAAsBN,EAAqC,IAAI,GCjBtEO,KAAyB,MAAMC,EAAWL,EAAoB,GAEpEM,KAAeF,ICFTG,KAAe,MAAMF,EAAWT,EAAgB,GAEtDY,IAAeD,ICEFE,KAAY,CAACC,GAAuBC,MAAwC;AAC/E,QAAAC,IAASR,GAAyB,EAAA,IAClC/E,IAAYkF;AACX,SAAA,CAACM,GAAgB5F,MAAgB;AACpC,KAAC0F,KAAmBtF,GACf,SAAS,gBAAgB,EACzB,KAAK,CAACyF,MAA6B;AAChC,MAAAA,EAAS,OAAOJ,KAAgBE,GAAQC,GAAQ5F,CAAK;AAAA,IAAA,CACxD;AAAA,EAAA;AAEb,GAEA8F,KAAeN,ICXTO,KAAmB,CAACC,MAAgB;AAChC,QAAAC,IAAab,EAAWL,EAAoB,GAC5CmB,IAAaC,KACb,CAACC,GAAMC,CAAO,IAAIC,EAAwB;AAEhD,SAAAC,EAAU,MAAM;AACP,SAAAP,KAAMC,EAAW,OAAOC,GAAY;AACrC,YAAME,IAAOF,EAAW,MAAM,IAAIF,KAAMC,EAAW,EAAE;AACrD,MAAAI,EAAQD,CAAI;AAAA,IAChB;AAAA,KACD,CAACJ,GAAIC,EAAW,IAAIC,CAAU,CAAC,GAE3BE;AACX,GAEAI,KAAeT,ICrBTU,KAAe,MAAM;AACjB,QAAAC,IAAYC,EAAO,EAAK;AAC9B,SAAAJ,EAAU,OACNG,EAAU,UAAU,IACb,MAAM;AACT,IAAAA,EAAU,UAAU;AAAA,EAAA,IAEzB,CAAE,CAAA,GACEA;AACX,GAEAE,IAAeH,ICPTN,KAAuB,CAACT,MAA0D;AACpF,QAAMtF,IAAYkF,KACZ,CAACuB,GAAmBC,CAAoB,IAAIR,EAAmC,IAAI,GACnFI,IAAYD;AAElB,SAAAF,EAAU,MAAM;AACZ,IAAAQ,GAAkB,YAAYrB,KAAmBtF,CAAS,EAAE,KAAK,CAAC4G,MAAa;AAC3E,MAAIN,EAAU,WACVI,EAAqBE,CAAQ;AAAA,IACjC,CACH;AAAA,EAAA,GACF,CAACN,CAAS,CAAC,GAEPG;AACX,GAEAI,IAAed,ICTTe,KAAc,MAA6B;AAC7C,QAAMd,IAAOL,MACPG,IAAaC,KACb,CAACrF,GAAUqG,CAAW,IAAIb,EAAgC,CAAE,CAAA,GAC5DI,IAAYD,KAEZW,IAAiBC;AAAA,IACnB,CAACjB,MAAwB;AACjB,UAAAF,KAAcQ,EAAU,WAAWN,GAAM;AACnC,cAAAkB,IAASpB,EAAW,UAAUE,CAAI,GAClCtF,IAAWsF,EAAK,YAAYkB,CAAM,EAAE,IAAI,CAACC,MAAUC,GAAaD,CAAK,CAAC;AAC5E,QAAAJ,EAAYrG,CAAQ;AAAA,MACxB;AAAA,IACJ;AAAA,IACA,CAAC4F,GAAWR,GAAYiB,GAAaf,CAAI;AAAA,EAAA;AAG7C,SAAAG,EAAU,MAAM;AACZ,IAAIH,KACAgB,EAAehB,CAAI;AAAA,EACvB,GACD,CAACA,GAAMF,CAAU,CAAC,GAErBK,EAAU,MAAM;AACZ,QAAIL,GAAY;AACZ,YAAM,CAACuB,GAAWC,CAAW,IAAIC,GAAsBzB,EAAW,MAAM;AAE9D,aAAAuB,EAAA,yBAAyB,CAACG,GAAOC,MAAS;AAC5C,SAAAzB,MAASyB,EAAK,KAAK,UAAUA,EAAK,KAAK,WAAW3B,EAAW,MAAM,SACpDkB,EAAAS,EAAK,KAAK,MAAM;AAAA,MACnC,CACH,GACSJ,EAAA,4BAA4B,CAACG,GAAOC,MAAS;AAC/C,SAAAzB,MAASyB,EAAK,KAAK,UAAUA,EAAK,KAAK,WAAW3B,EAAW,MAAM,SACpDkB,EAAAS,EAAK,KAAK,MAAM;AAAA,MACnC,CACH,GACDJ,EAAU,2BAA2B,CAACG,GAAO,EAAE,YAAAE,QAAiB;AAC5D,SAAIA,MAAe1B,KAAQ0B,MAAe5B,EAAW,MAAM,SACvDkB,EAAeU,CAAU;AAAA,MAC7B,CACH,GAEM,MAAM;AACG,QAAAJ;MAAA;AAAA,IAEpB;AAAA,EACD,GAAA,CAACtB,GAAMF,GAAYkB,CAAc,CAAC,GAE9BtG;AACX,GAEAiH,KAAeb,IC9DTc,KAAa,MAAM5C,EAAWN,EAAa,GAEjDmD,KAAeD,ICETE,KAAe,CAACC,GAAqBzC,MAAmD;AAC1F,QAAMO,IAAad,MACb/E,IAAYkF,KACZ,CAAC8C,GAAWC,CAAY,IAAI/B,EAAqB,MAAS,GAC1DI,IAAYD,KACZhI,IAAO0J,KAAclC,EAAW,QAAQ;AAE9C,SAAAM,EAAU,MAAM;AACZ,QAAI9H,GAAM;AACF,UAAAiJ;AACJ,cAAChC,KAAmBtF,GACf,SAAS,mBAAmB,EAC5B,KAAK,CAACyF,MAAgC;AACnC,YAAIa,EAAU,SAAS;AACb0B,gBAAAA,IAAYvC,EAAS,aAAapH,CAAI;AAC5C,UAAA4J,EAAaD,CAAS;AAAA,QAC1B;AAEA,QAAAV,IAAc7B,EAAS,iBAAiBpH,GAAM,CAAC2J,MAAc;AACzD,UAAI1B,EAAU,WACV2B,EAAaD,CAAS;AAAA,QAC1B,CACH;AAAA,MAAA,CACJ,GAEE,MAAM;AACT,QAAIV,KACYA;MAChB;AAAA,IAER;AAAA,KACD,CAAChB,GAAWjI,GAAMiH,GAAiBtF,CAAS,CAAC,GAEzCgI;AACX,GAEAE,KAAeJ,ICrCT9C,KAAa,CAAiCY,MAAmB;AAC7D,QAAAI,IAAOL,GAAiBC,CAAE,GAC1BE,IAAaC,KACb,CAACoC,GAASC,CAAU,IAAIlC,EAA+B,CAAE,CAAA,GACzDI,IAAYD;AAElB,SAAAF,EAAU,MAAM;AACR,IAAAH,KAAQM,EAAU,WACP8B,EAAApC,EAAK,WAAW,OAAO;AAAA,EACtC,GACD,CAACM,GAAWN,CAAI,CAAC,GAEpBG,EAAU,MAAM;AACZ,QAAIL,GAAY;AACN,YAAAwB,IAAcxB,EAAW,OAAO;AAAA,QAClC;AAAA,QACA,CAAC0B,GAAOC,MAAS;AACb,UAAIzB,MAASyB,EAAK,QAAQnB,EAAU,WACrB8B,EAAAX,EAAK,KAAK,WAAW,OAAO;AAAA,QAE/C;AAAA,MAAA;AAGJ,aAAO,MAAM;AACG,QAAAH;MAAA;AAAA,IAEpB;AAAA,EACD,GAAA,CAAChB,GAAWR,GAAYE,CAAI,CAAC,GAEtBmC;AACd,GAEAE,KAAerD,ICnCTsD,KAAkB,MAAMtD,EAAWF,EAAmB,GAE5DyD,KAAeD,ICUTE,KAAc,MAAsB;AACtC,QAAM1C,IAAaC,KACbF,IAAad,MACb,CAAC0D,GAAOC,CAAQ,IAAIxC,EAA8B,CAAE,CAAA,GACpD,CAACyC,GAASC,CAAU,IAAI1C,EAA4B;AAE1D,SAAAC,EAAU,MAAM;AACZ,QAAIL,KAAcD,GAAY;AAC1B,YAAMmC,IAAY,IAAIa,GAAe/C,CAAU,EAAE,OAAOD,EAAW,EAAE,GAC/D8C,IAAU7C,EAAW,QAAQkC,GAAWnC,EAAW,QAAQiD,IAAM;AAEvE,MAAAF,EAAWD,CAAO,GAGdF,MAAU,SACJA,EAAA,QAAQ,CAACM,MAAS;AACpBJ,QAAAA,EACK,SAASI,EAAK,KAAKA,EAAK,IAAI,EAC5B,KAAK,CAACnJ,MAAUmJ,EAAK,QAAQnJ,CAAK,CAAC,EACnC,MAAM,CAACoJ,MAAWD,EAAK,OAAOC,CAAM,CAAC;AAAA,MAAA,CAC7C,GACDN,EAAS,IAAI;AAAA,IAErB;AAAA,EACD,GAAA,CAAC5C,GAAYD,EAAW,EAAE,CAAC,GAEvB,CAAC3H,GAAKuJ,MACLgB,MAAU,OAEH,IAAI,QAAQ,CAACQ,GAASC,MAAW;AACpC,IAAAT,EAAM,KAAK;AAAA,MACP,KAAAvK;AAAA,MACA,MAAAuJ;AAAA,MACA,SAAAwB;AAAA,MACA,QAAAC;AAAA,IAAA,CACH;AAAA,EAAA,CACJ,IAEEP,EAAS,SAASzK,GAAKuJ,CAAI;AAE1C,GAEA0B,KAAeX,ICvDfY,IAAe,CACXC,GACAC,GACAtH,IAAgC,QAChCuH,IAA2B,MAAM,OAChC;AACK,QAAAC,IAAejD,EAAiB,MAAM;AAAA,EAAA,CAAE;AAE9C,EAAAJ,EAAU,MAAM;AACZ,IAAAqD,EAAa,UAAUF;AAAA,EAAA,GACxB,CAACA,CAAO,CAAC,GAEZnD,EAAU,MAAM;AAEZ,QAAI,EADgBnE,KAAWuH;AACb;AAElB,UAAME,IAA+B,CAACjC,MAAUgC,EAAa,QAAQhC,CAAK;AAElE,WAAAxF,EAAA,iBAAiBqH,GAAWI,CAAa,GAE1C,MAAM;AACD,MAAAzH,EAAA,oBAAoBqH,GAAWI,CAAa;AAAA,IAAA;AAAA,EACxD,GACD,CAACJ,GAAWrH,CAAO,CAAC;AAC3B,GCvBM0H,KAAY,CAACpE,MAA8C;AAC7D,QAAMtF,IAAYkF,KACZ,EAAE,QAAAyE,EAAO,KAAarE,KAAmBtF,GAAW,IAAI,SAAS;AAChE,SAAA2J;AACX,GAEAC,KAAeF,ICPTG,KAAe,MAAM;AACvB,QAAM,CAACC,GAAWC,CAAY,IAAI7D,EAAS,EAAK;AAEhD,SAAAC,EAAU,MAAM;AAEZ,UAAMlE,IAAc,MAAM;AACtB,MAAA8H,EAAa,EAAK;AAAA,IAAA,GAIhBC,IAAgB,CAAC9H,MAAqB;AAExC,MADmBA,EAAE,YAAY,KAE7B6H,EAAa,EAAI;AAAA,IACrB;AAGG,kBAAA,iBAAiB,WAAWC,CAAa,GACzC,OAAA,iBAAiB,SAAS/H,CAAW,GACrC,MAAM;AACF,aAAA,oBAAoB,WAAW+H,CAAa,GAC5C,OAAA,oBAAoB,SAAS/H,CAAW;AAAA,IAAA;AAAA,EAEvD,GAAG,CAAE,CAAA,GAEE6H;AACX,GAEAG,KAAeJ,IC3BTK,KAAc,CAACC,GAAmB3E,MAA4C;AAEhF,QAAM,CAAC4E,GAAYC,CAAa,IAAInE,EAAS,EAAK,GAE5CoE,IAAYrD;AAAA,IACd,CAACO,MAAyB;AAChB,YAAA,EAAE,KAAAtJ,EAAQ,IAAAsJ;AAChB,MAAItJ,MAAQiM,MACRE,EAAc,EAAI,GAEd7E,KACAA,EAAOgC,CAAK;AAAA,IAGxB;AAAA,IACA,CAAC6C,GAAe7E,CAAM;AAAA,EAAA,GAGpB+E,IAAUtD;AAAA,IACZ,CAAC,EAAE,KAAA/I,EAAA,MAAyB;AACxB,MAAIA,MAAQiM,KACRE,EAAc,EAAK;AAAA,IAE3B;AAAA,IACA,CAACA,CAAa;AAAA,EAAA;AAGD,SAAAjB,EAAA,WAAWkB,GAAW,MAAM,GAE5BlB,EAAA,SAASmB,GAAS,MAAM,GAElCH;AACX,GAEAI,IAAeN,IC/BTO,KAAY,CAAC7E,MAAqC;AAC9C,QAAAI,IAAOL,GAAiBC,CAAE,GAC1BE,IAAaC,KACb,CAAC2E,GAAQC,CAAS,IAAIzE,EAA8B,CAAE,CAAA,GACtDI,IAAYD;AAElB,SAAAF,EAAU,MAAM;AACR,IAAAH,KAAQM,EAAU,WACRqE,EAAA3E,EAAK,WAAW,MAAM;AAAA,EACpC,GACD,CAACA,GAAMM,CAAS,CAAC,GAEpBH,EAAU,MAAM;AACZ,QAAIL,GAAY;AACN,YAAAwB,IAAcxB,EAAW,OAAO;AAAA,QAClC;AAAA,QACA,CAAC0B,GAAOC,MAAS;AACb,UAAIzB,MAASyB,EAAK,QAAQnB,EAAU,WACtBqE,EAAAlD,EAAK,KAAK,WAAW,MAAM;AAAA,QAE7C;AAAA,MAAA;AAGJ,aAAO,MAAM;AACG,QAAAH;MAAA;AAAA,IAEpB;AAAA,EACD,GAAA,CAACxB,GAAYQ,GAAWN,CAAI,CAAC,GAEzB0E;AACX,GAEAE,KAAeH,ICpCTI,KAAc,CAAIjL,MAAa;AACjC,QAAMiE,IAAM0C;AACZ,SAAAJ,EAAU,MAAM;AACZ,IAAAtC,EAAI,UAAUjE;AAAA,EAAA,CACjB,GACMiE,EAAI;AACf,GAEAiH,KAAeD,ICJTE,KAAgB,MACC/F,EAAWJ,EAAwB,GAK1DoG,KAAeD,ICNTE,KAAiB,CAAC3F,MAA+D;AACnF,QAAM,CAAC4F,GAAaC,CAAc,IAAIjF,EAA4B,GAC5DlG,IAAYkF,KACZoB,IAAYD;AAElB,SAAAF,EAAU,MAAM;AACR,QAAAmB;AACJ,UAAM8D,KAAU9F,KAAmBtF,GAAW,IAAI,SAAS;AAC3D,QAAI,CAACoL;AACD;AAEE,UAAA,EAAE,MAAAC,GAAM,QAAAC,EAAW,IAAAF;AAEzB,WAAAE,EAAO,aAAa,EAAE,KAAK,CAACJ,MAAmC;AAC3D,MAAI5E,EAAU,WACV6E,EAAeD,CAAW;AAAA,IAC9B,CACH,IAEA5F,KAAmBtF,GACf,SAAS,gBAAgB,EACzB,KAAK,CAACuL,MAAmC;AACtC,MAAAjE,IAAciE,EAAe,UAAUF,GAAM,CAAC9F,GAAQC,MAAW;AAC7D,gBAAQA,GAAQ;AAAA,UACZ,KAAK;AAAA,UACL,KAAK;AACD,YAAIc,EAAU,WACV6E;AAAA,cACI3F,MAAW,SACLgG,GAAkB,OAClBA,GAAkB;AAAA,YAAA;AAGhC;AAAA,UACJ,KAAK;AACD,YAAIlF,EAAU,WACV6E,EAAeK,GAAkB,MAAM;AAAA,QAEnD;AAAA,MAAA,CACH;AAAA,IAAA,CACJ,GAEE,MAAM;AACT,MAAIlE,KACYA;IAChB;AAAA,EACJ,GACD,CAAChB,CAAS,CAAC,GAEP4E;AACX,GAEAO,KAAeR,ICtDTS,KAAY,MACC1G,EAAWH,EAAc,GAK5C8G,KAAeD,ICFTE,KAAe,CAACtG,MAA2C;AAC7D,QAAMtF,IAAYkF,KACZ2G,IAASH,MACT,CAACI,GAAWC,CAAY,IAAI7F,EAAoB,EAAE,MAAM,IAAI,QAAQ,CAAC,EAAA,CAAG,GACxEI,IAAYD;AAElB,SAAAF,EAAU,MAAM;AACZ,UAAMiF,KAAU9F,KAAmBtF,GAAW,IAAI,SAAS;AAC3D,QAAI,CAACoL;AACD;AAEE,UAAA,EAAE,QAAAzB,EAAW,IAAAyB;AASZ,WARazB,EAAO,UAAU,iBAAiB,CAACzH,GAAG,EAAE,MAAM,EAAE,WAAA4J,EAAU,EAAA,MAAQ;AAClF,UAAIxF,EAAU,SAAS;AACb,cAAA,EAAE,MAAA+E,GAAM,QAAAW,EAAWF,IAAAA;AACzB,QAAAG,GAA6BD,CAAM,GACtBD,EAAA,EAAE,MAAAV,GAAM,QAAAW,EAAA,CAAQ;AAAA,MACjC;AAAA,IAAA,CACH;AAAA,EAGF,GAAA,CAAC1F,GAAWhB,GAAiBtF,CAAS,CAAC,GAE1CmG,EAAU,MAAM;AACZ,QAAI0F,KAAUA,EAAO,WAAWvF,EAAU,SAAS;AACzCwF,YAAAA,IAAYD,EAAO,gBACnB,EAAE,MAAAR,GAAM,QAAAW,EAAWF,IAAAA;AACzB,MAAAG,GAA6BD,CAAM,GACtBD,EAAA,EAAE,MAAAV,GAAM,QAAAW,EAAA,CAAQ;AAAA,IACjC;AAAA,EAAA,GACD,CAACH,GAAQvF,CAAS,CAAC,GAEfwF;AACX,GAEAI,KAAeN,ICvCAO,KAAA,CAACC,MAA+D;AAC3E,QAAMC,IAAO9F,KACP+F,IAAY/F,EAAO,CAAC;AAEtB,MAAAgG;AAEE,QAAAC,IAAWvF,EAAY,MAAM;;AAC1B,KAAAzG,IAAA6L,EAAA,YAAA,QAAA7L,EAAS,UAAU,IAAI,qBAC5B,aAAa+L,CAAS,GACtBA,IAAY,WAAW,MAAM;;AACpB,OAAA/L,IAAA6L,EAAA,YAAA,QAAA7L,EAAS,UAAU,OAAO;AAAA,OAChC,GAAG;AAAA,EAAA,GACP,CAAC6L,CAAI,CAAC,GAEHI,IAAexF;AAAA,IACjB,CAACO,MAAe;AACF,MAAA8E,EAAA,UAAU9E,EAAM,QAAQ,GAAG;AAAA,IACzC;AAAA,IACA,CAAC6E,CAAI;AAAA,EAAA,GAGHK,IAAqB,CAAC1K,MACpB2K,EAAa3K,CAAO,IAChBA,MAAYqK,EAAK,UACVrK,IAEJ,OAEPA,EAAQ,gBACD0K,EAAmB1K,EAAQ,aAAa,IAE5C,MAEL2K,IAAe,CAAC3K,MAEdA,EAAQ,cAAcA,EAAQ,eAAeA,EAAQ,eAAeA,EAAQ,cAI9E4K,IAAc3F;AAAA,IAChB,CAACO,MAAe;AACR,UAAA,CAACA,EAAM;AACP;AAEE,YAAAqF,IAAMrF,EAAM,QAAQ,GAAG,SACvBsF,IAAkBJ,EAAmBlF,EAAM,MAAM;AACvD,UAAI,CAACsF;AACD;AAGJ,YAAMC,IAAYD,EAAgB,WAC5BxO,IAAYgO,EAAU,UAAUO,IAAM,IAAI,OAAO,QAEjDG,IAAUD,KAAa,KAAKzO,MAAc,MAC1C2O,IACFF,KAAaD,EAAgB,eAAeA,EAAgB,gBAC5DxO,MAAc;AAElB,OAAI0O,KAAWC,MAGXzF,EAAM,eAAe,GAGzB8E,EAAU,UAAUO;AAAA,IACxB;AAAA,IACA,CAACR,GAAMC,CAAS;AAAA,EAAA;AAWpB,SARAlD,EAAiB,UAAUoD,GAAUH,EAAK,SAAS,MAAMA,EAAK,WAAWD,CAAU,GAInFhD,EAAiB,cAAcqD,GAAcJ,EAAK,SAAS,MAAMA,EAAK,WAAWD,CAAU,GAE3FhD,EAAiB,aAAawD,GAAaP,EAAK,SAAS,MAAMA,EAAK,WAAWD,CAAU,GAEpFA,IAIE,CAACc,IAASb,CAAI,IAHV,CAAC,IAAIA,CAAI;AAIxB,GAEMa,KAAU;AAAA,kBAERzO,GAAA,MAAcD,GAAS,UAAUC,GAAc,MAAAD,GAAS,eAAe,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCrFrF2O,KAAc,MAA6B;AAC7C,QAAM,CAACC,GAAUC,CAAW,IAAInH,EAAgC,IAAI,GAC9DlG,IAAYkF,KACZoB,IAAYD;AAElB,SAAAF,EAAU,MAAM;AACZ,IAAAnG,EAAU,IAAI,UAAU,EAAE,KAAK,CAACoN,MAA6B;AACzD,MAAI9G,EAAU,WACV+G,EAAYD,CAAQ;AAAA,IACxB,CACH;AAAA,EAAA,GACF,CAAC9G,CAAS,CAAC,GAEP8G;AACX,GAEAE,KAAeH,ICnBTI,KAAY,CAACC,IAAwB,OAAiD;AACxF,QAAM,CAAC5N,GAAO6N,CAAQ,IAAIvH,EAASsH,CAAY,GACzCE,IAASzG,EAAY,CAAC0G,MAAqB;AAC7C,IAAAF,EAAS,OAAOE,KAAW,YAAYA,IAAS,CAACC,MAAM,CAACA,CAAC;AAAA,EAC7D,GAAG,CAAE,CAAA;AAEE,SAAA,CAAChO,GAAO8N,CAAM;AACzB,GAEAG,KAAeN,ICRAO,KAAA,CAACxE,MAAsC;AAClD,QAAMtJ,IAAYkF,KACZY,IAAaC,KACbgI,IAAgC/N,EAAU,IAAI,kBAAkB,GAChE,CAACgO,GAAgBC,CAAiB,IAAI/H,EAAyB,IAAI,GACnE,CAACgI,GAAgBC,CAAiB,IAAIjI,EAAyB,IAAI,GACnEI,IAAYD;AAElB,EAAAF,EAAU,MAAM;AACR,QAAAL,KAAcQ,EAAU,SAAS;AAC3B,YAAA8H,IAAWtI,EAAW,MAAM,IAAI,KAAK,CAACuI,MAAMA,EAAE,SAAS,WAAW,GAClEC,IAAOxI,EAAW,MAAM,IAAI,KAAK,CAACuI,MAAMA,EAAE,SAAS,MAAM;AAE3D,UAAA,EAACC,KAAA,QAAAA,EAAM,WAAW,WAAW,cAC7B,EAACF,KAAA,QAAAA,EAAU,WAAW,WAAW;AAGzB,QAAA9E;WACL;AAEH,cAAMiF,IAAa,CAAC3I,IAAK,OACrBmI,KAAA,gBAAAA,EAAkB,cAAc,kBAAkBnI,QAEhDoI,IAAiBO,EAAWD,KAAA,gBAAAA,EAAM,EAAE;AAC1C,QAAIN,KACAC,EAAkBD,CAAc;AAG9BE,cAAAA,IAAiBK,EAAWH,KAAA,gBAAAA,EAAU,EAAE;AAC9C,QAAIF,KACAC,EAAkBD,CAAc;AAAA,MAExC;AAAA,IACJ;AAAA,EACD,GAAA,CAACpI,GAAY9F,GAAWsG,CAAS,CAAC;AAErC,QAAMmD,IAAgBxC;AAAA,IAClB,CAACO,MAAiB;AACd,MACIlB,EAAU,YACTkB,EAAM,WAAWwG,KAAkBxG,EAAM,WAAW0G,MAE7C5E;IAEhB;AAAA,IACA,CAACA,GAAShD,GAAW0H,GAAgBE,CAAc;AAAA,EAAA;AAGtC,EAAA9E,EAAA,iBAAiBK,GAAeuE,CAA6B,GAE7D5E,EAAA,iBAAiBK,GAAeyE,CAA6B;AAClF,GClDMM,KAAiB,CACnBhH,GACAiH,GACAC,IAAsB,CAAA,GACtBpJ,MACwB;AAClB,QAAAqE,IAASD,GAAUpE,CAAe;AAExC,SAAAa,EAAU,MAAM;AACZ,QAAIwD,GAAQ;AACR,YAAMrC,IAAcqC,EAAO,UAAUnC,GAAOiH,CAAQ;AAEpD,aAAO,MAAM;AACG,QAAAnH;MAAA;AAAA,IAEpB;AAAA,KACD,CAACqC,CAAM,EAAE,OAAO+E,CAAY,CAAC,GAEzB,CAACjH,MAASkC,KAAA,gBAAAA,EAAQ,SAASnC,GAAOC;AAC7C,GAEAkH,KAAeH,ICvBTI,KAAgB,CAAChJ,GAAY6I,MAAmC;AAClE,QAAMI,IAAWL,GAAe,uBAAuB,CAACM,GAAGC,MAAgB;AACvE,IAAIA,MAAgBnJ,KACP6I;EACb,CACH;AAEM,SAAA,MAAMI,EAASjJ,CAAE;AAC5B,GAEAoJ,KAAeJ,ICNTK,KAAwB,CAACzO,MAAsC;AAAtC,MAAAC,IAAAD,GAAE,aAAAsD,GAAW,UAAApD,MAAbD,GAA0BsD,IAAApD,EAA1BF,GAA0B,CAAxB,aAAW;AAEpC,SAAA,gBAAAR,EAAA;AAAA,IAAC;AAAA,IAAAE,EAAA;AAAA,MACG,WAAW8D,EAAiBH,GAAW,aAAa;AAAA,OAChDrE,EAA0BsE,CAAK;AAAA,IAElCrD;AAAA,EAAA;AAGb,GAEAwO,KAAeD,ICHFE,KAAa,CAAC9P,MAAkDpB;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKxDoB,EAAE,MAAM;AAAA,cACfA,EAAE,MAAM;AAAA,kBACJA,EAAE,MAAM,aAAa;AAAA,MACjCA,EAAE,mBAAmB;AAAA,GAGd+P,KAAY,CAAC/P,MAAiC;;AAAA,SAAApB;AAAA;AAAA;AAAA;AAAA;AAAA,gBAK5CuC,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA,qBACTnB,EAAE,MAAM;AAAA,oBACVoB,IAAApB,EAAE,MAAM,UAAR,gBAAAoB,EAAe;AAAA,kBACjB4O,IAAAhQ,EAAE,MAAM,UAAR,gBAAAgQ,EAAe;AAAA;AAAA,GAGnBC,KAAsB,CAACjQ,MAAmC;;AACnE,QAAM,EAAE,cAAAkQ,GAAc,gBAAAC,GAAgB,QAAAC,GAAQ,OAAAC,GAAO,UAAAC,EAAa,IAAAtQ;AAC3D,SAAApB;AAAA,UACDmR,GAAU/P,CAAC;AAAA,4BACOoQ,IAASD,IAAiBD;AAAA,4BAC1BE,IAASF,IAAeC;AAAA;AAAA,iBAEnCC,IAASD,IAAiBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAQtBE,IAASD,IAAiBD;AAAA,0BACtB/O,IAAAkP,EAAM,UAAN,gBAAAlP,EAAa;AAAA;AAAA;AAAA,UAG5B,CAACmP,KACH1R;AAAA;AAAA,oCAE4BsR;AAAA,yBACXC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAMIA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAKXI,EAAevQ,CAAC;AAAA;AAAA;AAAA;AAIlC,GAEauQ,IAAiB,CAACvQ,MAAiC;;AAAA,SAAApB;AAAA,gBACjDuC,IAAAnB,EAAE,MAAM,kBAAR,gBAAAmB,EAAuB;AAAA,cACzB6O,KAAA5O,IAAApB,EAAE,MAAM,kBAAR,gBAAAoB,EAAuB,WAAvB,gBAAA4O,EAA+B;AAAA;AAAA;AAAA,GAI/BQ,KAAe,CAACxQ,MAAwBpB;AAAA,MAC/C2R,EAAevQ,CAAC;AAAA;AAAA,GAITyQ,KAAuB,CAACzQ,MAAiC;;AAAA,SAAApB;AAAA,MAChE2R,EAAevQ,CAAC;AAAA,uBACAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,GAGxBuP,KAAc7L,EAAOP,EAAM;AAAA;AAAA,WAE7B,CAACtE,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,aACpB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA,kBAIjB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,WAAR,gBAAAmB,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,UAI/BoP;AAAA,mBACS,CAACvQ,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA,GAM5BwP,KAAa9L,EAAO+K,EAAI;AAAA,iBACpB,CAAC5P,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA,aAG1B,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,WAAR,gBAAAmB,EAAgB;AAAA;AAAA,GAGvByP,KAAO,CAAC5Q,MAAiC;;AAAA,SAAApB;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKhCuC,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAgBxB0P,KAAW,CAAC7Q,MAAiC;;AAAA,SAAApB;AAAA;AAAA,UAEhDwE,GAAepD,CAAC;AAAA,IACd;AAAA,IACApB;AAAA,+BACkBuC,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA,8BAChBC,IAAApB,EAAE,MAAM,UAAR,gBAAAoB,EAAe;AAAA;AAAA;AAAA,0BAGnB4O,IAAAhQ,EAAE,MAAM,WAAR,gBAAAgQ,EAAgB;AAAA;AAAA,EAEjC;AAAA;AAAA;AAAA,UAGEY,GAAK5Q,CAAC;AAAA;AAAA,MAEVoD,GAAepD,CAAC;AAAA,IACd;AAAA,IACApB;AAAA;AAAA;AAAA;AAAA,+BAIsBkS,IAAA9Q,EAAE,MAAM,UAAR,gBAAA8Q,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUzC;AAAA;AAAA,GAGSC,KAAc,CAAC/Q,MAAwB;;AAAA,SAAApB;AAAA,kBACnCuC,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA,cAGnBC,IAAApB,EAAE,MAAM,WAAR,gBAAAoB,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAqBZ4O,IAAAhQ,EAAE,MAAM,WAAR,gBAAAgQ,EAAgB;AAAA;AAAA,cAEnBQ,GAAaxQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAWV8Q,IAAA9Q,EAAE,MAAM,UAAR,gBAAA8Q,EAAe;AAAA;AAAA;AAAA;AAAA,uBAIXE,IAAAhR,EAAE,MAAM,UAAR,gBAAAgR,EAAe;AAAA;AAAA;AAAA;AAAA,mBAInBC,IAAAjR,EAAE,MAAM,UAAR,gBAAAiR,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GClN3BC,KAAoB,CAAC;AAAA,EACvB,WAAAC,IAAY;AAAA,EACZ,QAAAC,IAAS,SAAS;AAAA,EAClB,UAAA/P;AACJ,MAAM;AACF,QAAM,CAACV,CAAS,IAAIkG,EAAS,MAAM;AAC/B,UAAM/D,IAAK,SAAS,eAAeqO,CAAS,KAAK,SAAS,cAAc,KAAK;AAC7E,WAAArO,EAAG,KAAKqO,GACDrO;AAAA,EAAA,CACV;AAED,SAAAgE,EAAU,OACNsK,EAAO,YAAYzQ,CAAS,GAErB,MAAM;AACL,IAAAA,EAAU,qBAAqB,KAC/ByQ,EAAO,YAAYzQ,CAAS;AAAA,EAChC,IAEL,CAACA,CAAS,CAAC,GAEP0Q,GAAahQ,GAAUV,CAAS;AAC3C,GAEA2Q,KAAeJ,ICVTK,KAA+B,CAACpQ,MAWhC;AAXgC,MAAAC,IAAAD,GAClC;AAAA,UAAAqQ,IAAO;AAAA,IACP,gBAAAC,IAAiB;AAAA,IACjB,MAAAC,IAAO;AAAA,IACP,QAAAC,IAAS;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,IACV;AAAA,IACA,cAAAC,IAAe,CAAC;AAAA,IAChB,WAAAnN;AAAA,MATkCrD,GAU/BsD,IAAApD,EAV+BF,GAU/B;AAAA,IATH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAIA;AAAA,IACA;AAAA;AAGM,QAAA,EAAE,MAAApC,GAAM,SAAA6S,EAAY,IAAAF,GAEpBG,IAAc;AAAA,IAChB,cAAcN;AAAA,IACd,MAAM;AAAA,EAAA;AAGV,UAAQxS,GAAM;AAAA,IACV,KAAK,OAAO;AACR,YAAMqE,IAAQ;AAAA,QACV,gBAAAoO;AAAA,QACA,iBAAiB,QAAQI;AAAA,QACzB,kBAAkB;AAAA,QAClB,oBAAoB;AAAA,QACpB,sBAAsB;AAAA,MAAA;AAGtB,aAAA,gBAAAjR,EAAA;AAAA,QAAC;AAAA,QAAAE,IAAA;AAAA,UACG,WAAW8D,EAAiBH,GAAW,eAAe,oBAAoB;AAAA,UAC1E,OAAO+M;AAAA,UACP,OAAO1Q,IAAA,IAAKuC,IAAUuO;AAAA,WAClBE,IACCpN;AAAA,MAAA;AAAA,IAGjB;AAAA,IACA,KAAK,OAAO;AACR,YAAMqN,IAAW5O,EAAArC,EAAA;AAAA,QACb,WAAW8D,EAAiBH,GAAW,aAAa;AAAA,QACpD,OAAO,GAAGiN;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,SACHhN,IALS;AAAA,QAMb,KAAK;AAAA,MAAA,IAEHrB,IAAQ,EAAE,UAAU,GAAGqO,IAAO;AACpC,cAAQG,GAAS;AAAA,QACb,KAAK;AACD,iBACK,gBAAAjR,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,IAAG;AAAA,cACH,IAAG;AAAA,cACH,GAAE;AAAA,cACF,WAAU;AAAA,YAAA;AAAA,UACd,GACC,gBAAAA,EAAA,cAAA,QAAA,EAAK,IAAG,WAAU,IAAG,WAAU,IAAG,WAAU,IAAG,UAAA,CAAU,CAC9D;AAAA,QAIR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,IAAG;AAAA,cACH,IAAG;AAAA,cACH,GAAE;AAAA,cACF,WAAU;AAAA,cACV,QAAO;AAAA,YAAA;AAAA,UAEX,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,QAAO;AAAA,YAAA;AAAA,UAEX,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,QAAO;AAAA,YAAA;AAAA,UAAA,CAEf;AAAA,QAIR,KAAK;AACD,iDACK,OAAIE,EAAA,EAAA,SAAQ,eAAgBiR,oCACxB,QAAK,EAAA,GAAE,oCAAmC,QAAO,QAAA,CAAQ,GACzD,gBAAAnR,EAAA,cAAA,QAAA,EAAK,GAAE,qCAAoC,QAAO,SAAQ,CAC/D;AAAA,QAIR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,aAAY,OAAAuC,KAAkB0O,IACtC,gBAAAnR,EAAA,cAAA,QAAA,EAAK,IAAG,QAAO,IAAG,QAAO,IAAG,SAAQ,IAAG,QAAO,QAAO,QAAQ,CAAA,GAC7D,gBAAAA,EAAA,cAAA,QAAA,EAAK,IAAG,SAAQ,IAAG,QAAO,IAAG,QAAO,IAAG,SAAQ,QAAO,QAAQ,CAAA,CACnE;AAAA,QAIR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,aAAY,OAAAuC,KAAkB0O,IACtC,gBAAAnR,EAAA,cAAA,QAAA,EAAK,IAAG,SAAQ,IAAG,SAAQ,IAAG,QAAO,IAAG,QAAO,QAAO,QAAQ,CAAA,GAC9D,gBAAAA,EAAA,cAAA,QAAA,EAAK,IAAG,QAAO,IAAG,QAAO,IAAG,SAAQ,IAAG,QAAO,QAAO,QAAQ,CAAA,CAClE;AAAA,QAIR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAAoR,IAAAlR,EAAA,EAAQ,SAAQ,aAAY,OAAAuC,KAAkB0O,IAC1C,gBAAAnR,EAAA,cAAA,QAAA,EAAK,IAAG,SAAQ,IAAG,QAAO,IAAG,OAAM,IAAG,QAAO,QAAO,QAAQ,CAAA,GAC5D,gBAAAA,EAAA,cAAA,QAAA,EAAK,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,QAAO,QAAQ,CAAA,CACjE;AAAA,QAIR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,aAAY,OAAAuC,KAAkB0O,IACtC,gBAAAnR,EAAA,cAAA,QAAA,EAAK,IAAG,SAAQ,IAAG,QAAO,IAAG,OAAM,IAAG,QAAO,QAAO,QAAQ,CAAA,GAC5D,gBAAAA,EAAA,cAAA,QAAA,EAAK,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,QAAO,QAAQ,CAAA,CACjE;AAAA,QAIR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,WAAU;AAAA,cACV,QAAO;AAAA,YAAA;AAAA,UAEX,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,WAAU;AAAA,cACV,QAAO;AAAA,YAAA;AAAA,UAAA,CAEf;AAAA,QAIR,KAAK;AACD,iDACK,OAAIE,EAAA,EAAA,SAAQ,eAAgBiR,IACxB,gBAAAnR,EAAA,cAAA,UAAA,EAAO,IAAG,OAAM,IAAG,OAAM,GAAE,OAAM,MAAK,WAAU,GACjD,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAAA,CAEb;AAAA,QAIR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,MAAK;AAAA,cACL,QAAO;AAAA,cACP,aAAY;AAAA,YAAA;AAAA,UAAA,CAEpB;AAAA,QAIR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,iBAAkBiR,IAC3B,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,aAAY;AAAA,cACZ,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAET,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,aAAY;AAAA,cACZ,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAET,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,aAAY;AAAA,cACZ,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAET,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,aAAY;AAAA,cACZ,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAAA,CAEb;AAAA,QAIR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAET,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAAA,CAEb;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,QAAO;AAAA,YAAA;AAAA,UAEX,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,QAAO;AAAA,YAAA;AAAA,UAEX,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,QAAO;AAAA,YAAA;AAAA,UAAA,GAEV,gBAAAA,EAAA,cAAA,UAAA,EAAO,IAAG,WAAU,IAAG,WAAU,GAAE,WAAU,QAAO,QAAA,CAAQ,GAC7D,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,QAAO;AAAA,YAAA;AAAA,UAAA,CAEf;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,iBAAkBiR,IAC1B,gBAAAnR,EAAA,cAAA,QAAA,EAAK,GAAE,WAAU,QAAO,QAAQ,CAAA,CACrC;AAAA,QAGR,KAAK;AAEG,iBAAA,gBAAAA,EAAA,cAAC,OAAIE,EAAA,EAAA,SAAQ,eAAgBiR,IACxB,gBAAAnR,EAAA,cAAA,QAAA,EAAK,GAAE,wBAAwB,CAAA,CACpC;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,GAAE;AAAA,cACF,OAAM;AAAA,cACN,QAAO;AAAA,cACP,IAAG;AAAA,cACH,MAAK;AAAA,YAAA;AAAA,UAET,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,GAAE;AAAA,cACF,OAAM;AAAA,cACN,QAAO;AAAA,cACP,IAAG;AAAA,cACH,MAAK;AAAA,YAAA;AAAA,UAAA,CAEb;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,MAAK;AAAA,cACL,QAAO;AAAA,YAAA;AAAA,UAEX,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,MAAK;AAAA,cACL,QAAO;AAAA,YAAA;AAAA,UAEX,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,MAAK;AAAA,cACL,QAAO;AAAA,YAAA;AAAA,UAEX,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,QAAO;AAAA,YAAA;AAAA,UAEX,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,QAAO;AAAA,YAAA;AAAA,UAEX,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,QAAO;AAAA,YAAA;AAAA,UAAA,CAEf;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,QAAO;AAAA,YAAA;AAAA,UAAA,CAEf;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAGT,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAGT,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAAA,CAEb;AAAA,QAGR,KAAK;AAEG,iBAAA,gBAAAA,EAAA,cAAC,WAAI,SAAQ,cAAemR,IACxB,gBAAAnR,EAAA,cAAC,YAAO,IAAG,MAAK,IAAG,KAAI,GAAE,KAAI,WAAU,mBAAkB,MAAK,QAAQ,CAAA,mCAErE,UAAO,EAAA,IAAG,KAAI,IAAG,KAAI,GAAE,KAAI,WAAU,kBAAiB,MAAK,SAAQ,GAEnE,gBAAAA,EAAA,cAAA,UAAA,EAAO,IAAG,KAAI,IAAG,KAAI,GAAE,KAAI,WAAU,kBAAiB,MAAK,SAAQ,CACxE;AAAA,QAGR,KAAK;AACD,iDACK,OAAIE,EAAA,EAAA,SAAQ,eAAgBiR,IACxB,gBAAAnR,EAAA,cAAA,UAAA,EAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,gBAAe,GACnD,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAET,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAET,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAET,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAAA,CAEb;AAAA,QAGR,KAAK;AACD,iBAAIyC,EAAM,YAAY,OAAOA,EAAM,YAAa,aACtCA,EAAA,WAAW,GAAGA,EAAM,+CAGzB,OAAIF,EAAArC,EAAA,EAAA,SAAQ,eAAgBiR,IAAxB,EAAkC,OAAA1O,MACnC,gBAAAzC,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,QAAO;AAAA,cACP,aAAY;AAAA,cACZ,eAAc;AAAA,cACd,gBAAe;AAAA,YAAA;AAAA,UAEnB,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,QAAO;AAAA,cACP,aAAY;AAAA,cACZ,eAAc;AAAA,cACd,gBAAe;AAAA,YAAA;AAAA,UAAA,CAEvB;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,QAAO;AAAA,YAAA;AAAA,UAAA,CAEf;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,GAAE;AAAA,cACF,MAAK;AAAA,cACL,QAAO;AAAA,YAAA;AAAA,UAAA,CAEf;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAAA,CAEb;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAET,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAET,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAAA,CAEb;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAET,GAAA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAAA,CAEb;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAAA,CAEb;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAM;AAAA,cACN,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAAA,CAEb;AAAA,QAGR,KAAK;AACD,iBACK,gBAAAA,EAAA,cAAA,OAAAE,EAAA,EAAI,SAAQ,eAAgBiR,IACzB,gBAAAnR,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAAA,CAEb;AAAA,QAGR,KAAK;AAEG,iBAAA,gBAAAA,EAAA,cAAC,OAAIE,EAAA,EAAA,SAAQ,eAAgBiR,IACxB,gBAAAnR,EAAA,cAAA,QAAA,EAAK,GAAE,4RAA4R,CAAA,CACxS;AAAA,MAKZ;AAEO,aAAA;AAAA,IACX;AAAA,IACA,KAAK;AAEG,aAAA,gBAAAA,EAAA;AAAA,QAACqR;AAAAA,QAAAnR,EAAA;AAAA,UACG,WAAA2D;AAAA,UACA,QAAQoN;AAAA,UACR,OAAOL;AAAA,WACF9M;AAAA,MAAA;AAAA,IAIjB;AAAA,IACA,KAAK;AACD,aAAO8M,IACH,gBAAA5Q,EAAA;AAAA,QAAC;AAAA,QAAAE,IAAA;AAAA,UACG,WAAW8D,EAAiBH,GAAW,sBAAsB;AAAA,UAC7D,OAAO+M;AAAA,WACHM,IACCpN;AAAA,QAEJ8M,EAAK,UAAU,GAAG,CAAC;AAAA,MAExB,IAAA;AAAA,EAEZ;AACJ,GAEMQ,KAAUnN,EAAO;AAAA;AAAA,GAIvBqN,KAAeX,ICrlBTY,KAEF;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,MAAM;AACV,GASMC,KAA8B,CAAC,EAAE,SAAAC,GAAS,WAAA1J,GAAW,WAAAlE,GAAW,UAAApD,QAAe;AACjF,QAAM,EAAE,0BAAAiR,IAA2B,OAAO3M,GAAW,GAE/C4M,IAAiBzR,IAAA,IAChBqR,KACAG,IAGDE,IAAY7J,KAAa4J,EAAeF,MAAY;AAE1D,SACK,gBAAAzR,EAAA,cAAA6R,IAAA,EAAK,WAAAhO,GAAsB,IAAI+N,KAC3BnR,CACL;AAER,GAEMoR,KAAO5N,EAAO,QAEpB6N,IAAeN;AC1BH,IAAAO,uBAAAA,OACRA,EAAA,cAAc,iBACdA,EAAA,eAAe,kBACfA,EAAA,gBAAgB,mBAChBA,EAAA,aAAa,gBAJLA,IAAAA,MAAA,CAAA,CAAA;AA6BZ,MAAMC,KAAkB,KAElBC,KAA0B,CAAC;AAAA,EAC7B,WAAApO;AAAA,EACA,UAAApD;AAAA,EACA,QAAAyR;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,sBAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,IACR,MAAM;AAAA,EACV;AACJ,MAAM;AACI,QAAA,EAAE,UAAAC,IAAWR,GAAoB,IAAAO,GAEjCE,IAAiBnM,KACjBoM,IAAapM,KACb,CAACtI,GAAK4F,CAAG,IAAIsI,GAAU,EAAI,GAC3B,CAACyG,GAASC,CAAa,IAAItF,GAAU,GACrCuF,IAAkBjI,GAAY+H,CAAO,GACrChN,IAAKW,EAAOuC,GAAA,CAAM;AAExB,EAAA3C,EAAU,MAAM;AACZ,IAAIiM,KACAA,EAASQ,CAAO;AAAA,EACpB,GACD,CAACA,CAAO,CAAC;AAEN,QAAAG,IAAM7I,EAAY,QAAQ;AAEhC,EAAA/D,EAAU,MAAM;AACZ,IAAI4M,KACAF,EAAc,EAAK;AAAA,EACvB,GACD,CAACE,CAAG,CAAC,GAER3J;AAAA,IACI;AAAA,IACA,CAAC5B,MAAsB;AACb,YAAA,EAAE,QAAAwL,EAAW,IAAAxL;AAEnB,MAAI,CAACmL,EAAW,WAAW,CAAC9O,EAAI,WAAW,CAACmP,KAKxCL,EAAW,YAAYK,KACvBnP,EAAI,YAAYmP,KAChB,CAACnP,EAAI,QAAQ,SAASmP,CAAc,KACpC,CAACL,EAAW,QAAQ,SAASK,CAAc,KAE3CH,EAAc,EAAK;AAAA,IAE3B;AAAA,IACA;AAAA,EAAA;AAGJ,QAAMI,IAAarE,GAAchJ,EAAG,SAAS,MAAM;AAC/C,IAAAiN,EAAc,EAAK;AAAA,EAAA,CACtB;AAEDrE,EAAAA,GAAe,kBAAkB,MAAM;AACnC,IAAAqE,EAAc,EAAK;AAAA,EAAA,CACtB,GAED1M,EAAU,MAAM;AACR,IAAAyM,KAAWF,EAAe,UAC1BA,EAAe,QAAQ,UAChB,CAACE,KAAWD,EAAW,WAAWG,KACzCH,EAAW,QAAQ;EACvB,GACD,CAACC,GAASF,EAAe,SAASC,EAAW,OAAO,CAAC;AAElD,QAAAO,IAAuBC,GAAWX,EAAU;AAElD,SAEQ,gBAAAvS,EAAA,cAAAA,EAAA,UAAA,MAAA,gBAAAA,EAAA;AAAA,IAACmT;AAAA,IAAA;AAAA,MACG,IAAIR;AAAA,MACJ,WAAU;AAAA,MACV,YAAW;AAAA,MACX,eAAa;AAAA,MACb,SAASH;AAAA,IAAA;AAAA,oCAERlC,IACG,MAAA,gBAAAtQ,EAAA;AAAA,MAACiT;AAAA,MAAA;AAAA,QACG,UAAAT;AAAA,QACA,YAAAH;AAAA,QACA,WAAWrO;AAAA,UACPH;AAAA,UACA;AAAA,UACA,iBAAiB8B,EAAG;AAAA,QACxB;AAAA,QACA,cAAc,SAAS,KAAK;AAAA,QAC5B,KAAK3H;AAAAA,QACL,KAAA4F;AAAA,MAAA;AAAA,MAEA,gBAAA5D,EAAA;AAAA,QAAC8P;AAAA,QAAA;AAAA,UACG,SAAS,MAAM8C,EAAc,EAAK;AAAA,UAClC,UAAU;AAAA,UACV,KAAKH;AAAA,UACL,cAAYH;AAAA,QAAA;AAAA,QAEZ,gBAAAtS,EAAA,cAAC2Q,MAAY,QAAQ,EAAE,MAAM,OAAO,SAAS,WAAW;AAAA,MAC5D;AAAA,MACC,CAAC,CAACuB,KACC,gBAAAlS,EAAA,cAACoT,MAAO,SAAQ,MAAK,WAAU,uBAAA,GAC1BlB,CACL;AAAA,MAEHzR;AAAA,IAAA,CAET;AAAA,EAAA,GAEHT,EAAM,aAAaoS,GAAS;AAAA,IACzB,SAAS,CAAC7K,MAA4B;AACpB,MAAAqL,KACHI;IACf;AAAA,IACA,KAAKN;AAAA,IACL,cAAcN,EAAQ,MAAM;AAAA,IAC5B,iBAAiBO;AAAA,EACpB,CAAA,CACL;AAER,GAEAU,KAAepB,IAETqB,KAAUrP,EAAO;AAAA,mBACJ,CAAC7E,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,iBACxB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA,cAIzB,CAACnB,MAAMA,EAAE,MAAM;AAAA;AAAA,kBAEX,CAACA,MAAMA,EAAE,MAAM;AAAA;AAAA,MAE3B,CAACA,MAAMA,EAAE,OAAOA,EAAE;AAAA,GAGlBgU,KAASnP,EAAOuN,CAAU;AAAA,eACjB,CAACpS,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAUxB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,WAAR,gBAAAmB,EAAgB;AAAA;AAAA,iBACnB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA,GAIjCgT,KAAgB,CAACnU,MAA+BpB;AAAA,kBACpCoB,EAAE;AAAA,GAGdoU,KAA2BvP,EAAOqP,EAAO;AAAA;AAAA,MAEzCC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAQgB,CAACnU,MAAOA,EAAE,aAAa,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAShDqU,KAA0BxP,EAAOqP,EAAO;AAAA,MACxCC;AAAA;AAAA,cAEQ,CAACnU,MAAOA,EAAE,aAAa,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAiBxCsU,KAAyBzP,EAAOqP,EAAO;AAAA,MACvCC;AAAA;AAAA,cAEQ,CAACnU,MAAOA,EAAE,aAAa,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAiBxCuU,KAAwB1P,EAAOqP,EAAO;AAAA,MACtCC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAWY,CAACnU,MAAMA,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASrB8T,KAAuF;AAAA,EACzF,CAAC,oBAA8BM;AAAA,EAC/B,CAAC,mBAA6BC;AAAA,EAC9B,CAAC,kBAA4BC;AAAA,EAC7B,CAAC,iBAA2BC;AAChC,GCtSaC,KAAc,CACvBjB,GACAhN,GACA5D,MACuF;AACvF,QAAM,CAAC8R,GAAMC,CAAO,IAAI7N,EAAS,CAAC,GAC5B,CAAC8N,GAAMC,CAAO,IAAI/N,EAAS,CAAC,GAE5BgO,IAAMjN;AAAA,IACR,CAACO,GAAyB6K,MAA0B;AAEhD,UADA7K,EAAM,eAAe,GACjB6K,GAAS;AACH,cAAA8B,IAAa9B,EAAQ;AACnB,QAAA0B,EAAA,KAAK,IAAI,SAAS,KAAK,cAAcI,EAAW,OAAO,CAAC,CAAC,GACzDF,EAAAE,EAAW,SAAS,OAAO,OAAO;AAAA,MAC9C;AAAA,IACJ;AAAA,IACA,CAACL,GAAME,GAAMD,GAASE,CAAO;AAAA,EAAA;AAGjC,SAAA9N,EAAU,MAAM;AACR,QAAA,CAACnE,KAAW,CAAC4Q;AACb;AAGE,UAAAuB,IAAanS,EAAQ,yBACrBoS,IAAS;AAAA,MACX,GAAGN;AAAA,MACH,GAAGE;AAAA,IAAA;AAGH,IAAAG,EAAW,OAAO,MAClBC,EAAO,IAAI,IAGXD,EAAW,SAAS,OAAO,gBAC3BC,EAAO,IAAI,IAGXA,EAAO,MAAMN,KACbC,EAAQK,EAAO,CAAC,GAEhBA,EAAO,MAAMJ,KACbC,EAAQG,EAAO,CAAC;AAAA,EAErB,GAAA,CAACpS,GAAS4Q,GAAShN,CAAE,CAAC,GAElB,CAAC,EAAE,GAAGkO,GAAM,GAAGE,EAAA,GAAQE,CAAG;AACrC,GAEAG,KAAeR,ICvBTS,KAAWrU,EAAM;AAAA,EACnB,CAACO,GAA8EqD,MAAQ;AAAtF,QAAApD,IAAAD,GAAE,aAAAsD,IAAY,IAAI,UAAApD,IAAW,MAAM,SAAA2R,GAAS,sBAAAE,MAA5C9R,GAAqEf,IAAAiB,EAArEF,GAAqE,CAAnE,aAAgB,YAAiB,WAAS;AACzC,UAAMiS,IAAiBnM,KACjBoM,IAAapM,KACbgO,IAAWhO;AACjB,IAAAiO,GAAoB3Q,GAAK,MAAM0Q,EAAS,SAAgB,CAACA,EAAS,OAAO,CAAC;AACpE,UAAA3O,IAAKW,EAAOuC,GAAA,CAAM,GAClB,CAAC8J,GAAS6B,CAAU,IAAIvO,EAAS,EAAK,GACtC4M,IAAkBjI,GAAY+H,CAAO,GACrC,CAAC,EAAE,GAAA8B,GAAG,GAAAC,EAAA,GAAKT,CAAG,IAAIL,GAAYjB,GAAShN,EAAG,SAAS2O,EAAS,OAAO,GACnExB,IAAM7I,EAAY,QAAQ;AAEhC,IAAA/D,EAAU,MAAM;AACZ,MAAI4M,KACA0B,EAAW,EAAK;AAAA,IACpB,GACD,CAAC1B,CAAG,CAAC,GAER5M,EAAU,MAAM;AACR,MAAAyM,KAAWF,EAAe,UAC1BA,EAAe,QAAQ,UAChB,CAACE,KAAWD,EAAW,WAAWG,KACzCH,EAAW,QAAQ;IACvB,GACD,CAACC,GAASF,EAAe,SAASC,EAAW,OAAO,CAAC,GAExDvJ;AAAA,MACI;AAAA,MACA,CAAC5B,MAAsB;AACb,cAAA,EAAE,QAAAwL,EAAW,IAAAxL;AAEnB,QAAI,CAAC+M,EAAS,WAAW,CAACvB,KAItBuB,EAAS,YAAYvB,KAAU,CAACuB,EAAS,QAAQ,SAASvB,CAAc,KACxEyB,EAAW,EAAK;AAAA,MAExB;AAAA,MACA;AAAA,IAAA,GAGJjG,GAAe,kBAAkB,MAAM;AACnC,MAAAiG,EAAW,EAAK;AAAA,IAAA,CACnB;AAED,UAAMxB,IAAarE,GAAchJ,EAAG,SAAS,MAAM;AAC/C,MAAA6O,EAAW,EAAK;AAAA,IAAA,CACnB,GAEKG,IAAiB3N;AAAA,MACnB,CAACO,MAA4B;AACzB,QAAAA,EAAM,gBAAgB,GAClB0M,EAAA1M,GAAOmL,EAAW,OAAO,GAC7B8B,EAAW,CAAC7B,CAAO,GACRK;MACf;AAAA,MACA,CAACA,GAAYiB,GAAKO,CAAU;AAAA,IAAA;AAI5B,WAAA,gBAAAxU,EAAA,cAAAA,EAAA,UAAA,MACK2S,KACG,gBAAA3S,EAAA,cAACsQ,IACG,MAAA,gBAAAtQ,EAAA;AAAA,MAAC4U;AAAA,MAAArS,EAAArC,EAAA;AAAA,QACG,WAAW8D;AAAA,UACP;AAAA,UACA,mBAAmB2B,EAAG;AAAA,UACtB9B;AAAA,QACJ;AAAA,SACIpE,IANP;AAAA,QAOG,GAAAgV;AAAA,QACA,GAAAC;AAAA,QACA,KAAKJ;AAAA,MAAA;AAAA,MAEL,gBAAAtU,EAAA;AAAA,QAAC8P;AAAA,QAAA;AAAA,UACG,SAAS,MAAM0E,EAAW,EAAK;AAAA,UAC/B,UAAU;AAAA,UACV,KAAK/B;AAAA,UACL,cAAYH;AAAA,QAAA;AAAA,QAEZ,gBAAAtS,EAAA,cAAC2Q,MAAY,QAAQ,EAAE,MAAM,OAAO,SAAS,WAAW;AAAA,MAC5D;AAAA,MACClQ;AAAA,IAAA,CAET,GAEHT,EAAM,aAAaoS,GAAS;AAAA,MACzB,SAASuC;AAAA,MACT,KAAKjC;AAAA,MACL,cAAcN,EAAQ,MAAM;AAAA,MAC5B,iBAAiBO;AAAA,IACpB,CAAA,CACL;AAAA,EAER;AACJ,GAEAkC,KAAeR,IAETO,KAAiB3Q,EAAO;AAAA,MACxBiL;AAAA,eACS,CAAC9P,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA,kBAGnB,CAACnB,MAAMA,EAAE,MAAM;AAAA;AAAA,MAE3B,CAACA,MAAW;;AACV,MAAIpB,IAAM;AAEN,SAAAoB,EAAE,IAAI,IACNpB,KAAO,eAAauC,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe,UAAS,WAAWnB,EAAE,KAAK,YAE9DpB,KAAO,aAAWwC,IAAApB,EAAE,MAAM,UAAR,gBAAAoB,EAAe,WAAU,UAG3CpB,EAAE,IAAI,IACCpB,KAAA,UAAUoB,EAAE,KAAK,WAExBpB,KAAO,WAASoR,IAAAhQ,EAAE,MAAM,UAAR,gBAAAgQ,EAAe,WAAU,UAGtCpR;AACX;AAAA,GCnJEiC,KAAyB,CAACM,MAAiB;AAAjB,MAAKuD,IAAApD,EAALH,GAAK;AAC1B,SAAA,gBAAAP,EAAA,cAACsT,IAASpT,EAAA,IAAG4D,EAAO;AAC/B,GAEAgR,KAAe7U,IAETqT,KAAUrP,EAAO;AAAA;AAAA,GCEvB8Q,KAAepR;AAAA,EACX,CAACpD,GAAiDqD,MAAQ;AAAzD,QAAApD,IAAAD,GAAE,YAAAE,GAAU,SAAAuU,GAAS,KAAAC,GAAK,WAAApR,MAA1BrD,GAAwCsD,IAAApD,EAAxCF,GAAwC,CAAtC,YAAU,WAAS,OAAK;AAEnB,WAAA,gBAAAR,EAAA;AAAA,MAACkV;AAAA,MAAA3S,EAAArC,IAAA;AAAA,QACG,WAAW8D,EAAiBH,GAAW,aAAa;AAAA,QACpD,gBAAcmR;AAAA,QACd,YAAUC;AAAA,SACN7T,GAAe0C,CAAK,IACpBtE,EAA0BsE,CAAK,IALtC;AAAA,QAMG,KAAAF;AAAA,MAAA;AAAA,MAECnD;AAAA,IAAA;AAAA,EAGb;AACJ,GAEMyU,KAAMjR,EAAO;AAAA;AAAA,oCAOiB,CAAC7E,MAAMA,EAAE;AAAA,gBAC7B,CAACA,MAAMA,EAAE;AAAA;AAAA;AAAA,MAGnBkC;AAAA,GCtBN6T,KAAexR;AAAA,EACX,CAACpD,GAA4DqD,MAAQ;AAApE,QAAApD,IAAAD,GAAE,wBAAA6U,IAAuB,MAAM,WAAAvR,GAAW,MAAAZ,MAA1CzC,GAAmDsD,IAAApD,EAAnDF,GAAmD,CAAjD,wBAA6B,aAAW;AACvC,UAAMT,IAAYkF,KACZ,CAACoQ,GAAeC,CAAgB,IAAIrP,EAAS;AAEnD,WAAAC,EAAU,MAAM;AACN,YAAAqP,IAAsB/R,GAA0BzD,GAAWkD,CAAI,GAE/DuS,IAAejT,EAAArC,IAAA,IACdqV,IACAH,IAFc;AAAA,QAGjB,WAAWlV,IAAA,IACJqV,EAAoB,YACpBH,KAAA,gBAAAA,EAAsB;AAAA,MAC7B,IAEEK,IAAYC,GAAkBzS,GAAMuS,CAAY;AACtD,MAAAF,EAAiBG,CAAS;AAAA,IAAA,GAC3B,CAACxS,GAAMmS,CAAoB,CAAC,GAG3B,gBAAApV,EAAA;AAAA,MAAC;AAAA,MAAAuC,EAAArC,EAAA;AAAA,QACG,WAAW8D,EAAiBH,GAAW,aAAa;AAAA,SAChDrE,EAA0BsE,CAAK,IAFtC;AAAA,QAGG,KAAAF;AAAA,MAAA;AAAA,MAECyR;AAAA,IAAA;AAAA,EAGb;AACJ,GCrCMhE,KAAwB,CAAC9Q,MAMzB;AANyB,MAAAC,IAAAD,GAC3B;AAAA,YAAAoV;AAAA,IACA,OAAArX;AAAA,IACA,WAAAuF,IAAY;AAAA,IACZ,MAAA+R,IAAO;AAAA,MAJoBpV,GAKxBsD,IAAApD,EALwBF,GAKxB;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAII,SAAA,gBAAAR,EAAA;AAAA,IAAC;AAAA,IAAAE,EAAA;AAAA,MACG,WAAW8D,EAAiBH,GAAW,SAAS8R,GAAQ;AAAA,MACxD,OAAArX;AAAA,MACA,MAAAsX;AAAA,OACIpW,EAA0BsE,CAAK;AAAA,EAAA;AAG/C,GAEA+R,KAAexE,ICdfyE,KAAenS;AAAA,EACX,CACIpD,GAYAqD,MACC;AAbD,QAAApD,IAAAD,GACI;AAAA,iBAAAsD,IAAY;AAAA,MACZ,WAAAkS,IAAY;AAAA,MACZ,eAAAC,IAAgB,MAAM;AAAA,MAAC;AAAA,MACvB,SAAA5R,IAAU,MAAM;AAAA,MAAC;AAAA,MACjB,UAAA6R,IAAW,MAAM;AAAA,MAAC;AAAA,MAClB,kBAAAC;AAAA,MACA,UAAA/R,IAAW,MAAM;AAAA,MAAC;AAAA,MAClB,UAAAuL,IAAW;AAAA,MACX,MAAAtR;AAAA,QATJoC,GAUOsD,IAAApD,EAVPF,GAUO;AAAA,MATH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKJ,UAAM,CAAC2V,GAAUC,CAAW,IAAInQ,EAAS8P,CAAS,GAC5CzB,IAAWhO;AACG,IAAAiO,GAAA3Q,GAAK,MAAM0Q,EAAS,OAAc,GACtDpO,EAAU,MAAM;;AACZ,MAAI6P,OACAxV,IAAA+T,KAAA,gBAAAA,EAAU,YAAV,QAAA/T,EAAmB;AAAA,IAExB,GAAA,CAACwV,GAAWnS,GAAK0Q,CAAQ,CAAC;AAEvB,UAAA+B,IAAc,CAACC,GAAkB/O,MAAe;AAClD,MAAA6O,EAAYE,CAAO,GACnBN,KAAiBA,EAAcM,CAAO,GAClCJ,KAAoBI,KACpB/O,EAAM,OAAO;IACjB,GAGE9H,IAAQ8C,EAAArC,EAAA,IACPV,EAA0BsE,CAAK,IADxB;AAAA,MAEV,UAAA4L;AAAA,MACA,WAAAqG;AAAA,MACA,MAAA3X;AAAA,MACA,WAAW,CAAC6D,MAAM;AACV,QAAAA,EAAE,QAAQ,WAAWkU,KACrB/R,EAAQnC,CAAC,GAGTA,EAAE,QAAQ,YAAYkU,KACtBF,EAAShU,CAAC;AAAA,MAElB;AAAA,MACA,SAAS,CAACA,MAAMoU,EAAY,IAAMpU,CAAC;AAAA,MACnC,QAAQ,CAACA,MAAMoU,EAAY,IAAOpU,CAAC;AAAA,MACnC,UAAU,CAACA,MAAMkC,EAASlC,EAAE,OAAO,SAAS,EAAE;AAAA,MAC9C,WAAW+B,EAAiBH,GAAW,cAAc;AAAA,MACrD,aAAazF;AAAA,IAAA;AAGjB,WAAOA,MAAS,aACZ,gBAAA4B,EAAA;AAAA,MAAC;AAAA,MAAAuC,EAAArC,EAAA,IACQT,IADR;AAAA,QAEG,KAAK6U;AAAA,MAAA;AAAA,IAGT,IAAA,gBAAAtU,EAAA;AAAA,MAAC;AAAA,MAAAuC,EAAArC,EAAA,IACQT,IADR;AAAA,QAEG,KAAK6U;AAAA,MAAA;AAAA,IAAA;AAAA,EAGjB;AACJ,GC7DAiC,KAAe5S;AAAA,EACX,CAACpD,GAA8DqD,MAAQ;AAAtE,QAAApD,IAAAD,GAAE,aAAAsD,GAAW,OAAA2S,GAAO,YAAAC,GAAY,UAAAC,IAAW,OAA3ClW,GAAqDsD,IAAApD,EAArDF,GAAqD,CAAnD,aAAW,SAAO,cAAY;AAEzB,WAAA,gBAAAR,EAAA;AAAA,MAAC;AAAA,MAAAuC,EAAArC,EAAA;AAAA,QACG,WAAW8D,EAAiBH,GAAW,aAAa;AAAA,QACpD,mBAAiB2S,EAAM;AAAA,SACnBhX,EAA0BsE,CAAK,IAHtC;AAAA,QAIG,KAAAF;AAAA,MAAA;AAAA,MAEC4S,EAAM;AAAA,QAAI,CAAC1N,GAAM6N,GAAOH,MACrBE,IACK,gBAAA1W,EAAA,cAAA,MAAA,EAAG,WAAU,oBAAmB,KAAK8I,EAAK,MAAM6N,EAC5C,GAAAF,EAAW3N,GAAM6N,GAAOH,CAAK,CAClC,IAEAC,EAAW3N,GAAM6N,GAAOH,CAAK;AAAA,MAErC;AAAA,IAAA;AAAA,EAGZ;AACJ,GCvBAI,KAAejT;AAAA,EACX,CAACpD,GAA2EqD,MAAQ;AAAnF,QAAApD,IAAAD,GAAE,QAAAqQ,GAAM,MAAA3N,GAAM,QAAAiP,GAAQ,WAAArO,GAAW,sBAAAuR,GAAsB,QAAArE,MAAvDvQ,GAAkEsD,IAAApD,EAAlEF,GAAkE,CAAhE,QAAM,QAAM,UAAQ,aAAW,wBAAsB;AAEhD,WAAA,gBAAAR,EAAA;AAAA,MAAC;AAAA,MAAAuC,EAAArC,EAAA;AAAA,QACG,WAAW8D,EAAiBH,GAAW,kBAAkB;AAAA,SACrDrE,EAA0BsE,CAAK,IAFtC;AAAA,QAGG,KAAAF;AAAA,MAAA;AAAA,MAECsO,IACG,gBAAAlS,EAAA,cAACwR,GAAW,EAAA,SAAQ,KACf,GAAAT,IAAU,gBAAA/Q,EAAA,cAAA2Q,IAAA,EAAY,QAAAI,EAAgB,CAAA,IAAK,MAC3CmB,CACL,IACA;AAAA,MACHjP,IAAO,gBAAAjD,EAAA,cAACmV,IAAK,EAAA,MAAAlS,GAAY,sBAAAmS,EAA4C,CAAA,IAAK;AAAA,MAC1ExE,IAAO,gBAAA5Q,EAAA,cAACgP,IAAM,MAAA4B,CAAK,IAAU;AAAA,IAAA;AAAA,EAG1C;AACJ,GCxBAiG,KAAelT;AAAA,EACX,CACIpD,GAcAqD,MACC;AAfD,QAAApD,IAAAD,GACI;AAAA,cAAA2R;AAAA,MACA,cAAA4E;AAAA,MACA,MAAAlG;AAAA,MACA,MAAA3N;AAAA,MACA,WAAAY;AAAA,MACA,UAAApD;AAAA,MACA,QAAAsQ;AAAA,MACA,OAAAyF;AAAA,MACA,YAAAC;AAAA,MACA,UAAAC;AAAA,MACA,SAAAK;AAAA,QAXJvW,GAYOsD,IAAApD,EAZPF,GAYO;AAAA,MAXH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAMA,WAAA,gBAAAR,EAAA;AAAA,MAAC;AAAA,MAAAuC,EAAArC,EAAA;AAAA,QACG,WAAW8D,EAAiBH,GAAW,kBAAkB;AAAA,QACzD,mBAAiB2S,EAAM;AAAA,SACnBhX,EAA0BsE,CAAK,IAHtC;AAAA,QAIG,KAAAF;AAAA,MAAA;AAAA,MAECkT,MAEG5E,KAAUtB,KAAQ3N,IACjB,gBAAAjD,EAAA,cAAA4W,IAAA,EAAU,QAAA7F,GAAgB,QAAAmB,GAAgB,MAAAtB,GAAY,MAAA3N,EAAA,CAAY,IACnE;AAAA,MACHuT,EAAM,SACF,gBAAAxW,EAAA,cAAAuW,IAAArW,EAAA,EAAK,OAAAsW,GAAc,YAAAC,GAAwB,UAAAC,KAAwBK,EAAS,IAC7E;AAAA,MACHtW;AAAA,IAAA;AAAA,EAGb;AACJ,GClCMuW,KAA4B,CAAC;AAAA,EAC/B,WAAAnT,IAAY;AAAA,EACZ,MAAAoT;AAAA,EACA,YAAAR;AAAA,EACA,UAAAS;AAAA,EACA,kBAAAC,IAAmB;AAAA,EACnB,aAAAC,IAAc;AAAA,EACd,SAAAL;AAAA,EACA,SAAAM;AACJ,MAAM;AACI,QAAAC,IAAsB,CAACd,MAClB,CAACe,EAAgBf,CAAK,GAQ3Be,IAAkB,CAACf,MACjB,CAACA,KAASA,EAAM,SAAS,IAClB,KAEJ,CAACA,EAAM,KAAK,CAAC1N,MAAS,CAAC,CAACA,EAAK,QAAQ,GAG1C0O,IAAkB,CAACC,GAAgBC,MAEjC,gBAAA1X,EAAA;AAAA,IAAC6W;AAAA,IAAA;AAAA,MACG,WAAW7S,EAAiB,0BAA0B0T,GAAO;AAAA,MAC7D,OAAOD;AAAA,MACP,SAAAV;AAAA,MACA,YAAY,CAACY,MAAmB;AAC5B,cAAM,EAAE,IAAAhS,GAAI,UAAAiS,GAAU,OAAApB,GAAO,SAAAqB,MAAYF,GACnCG,IAAaF,KAAYL,EAAgBf,CAAK;AAEhD,eAAA,CAACY,KAAe,CAACS,IACV,OAIP,gBAAA7X,EAAA;AAAA,UAAC;AAAA,UAAAuC,EAAArC,EAAA,IACOV,EAA0B6X,CAAO,IADxC;AAAA,YAEG,KAAK1R;AAAA,YACL,WAAW;AAAA,UAAA;AAAA,UAEV8Q,KAAcA,EAAWkB,GAAWD,GAAOI,CAAU;AAAA,UACrDtB,MACIW,KAAoBW,MACrBN,EAAgBhB,GAAOkB,IAAQ,CAAC;AAAA,QAAA;AAAA,MAGhD;AAAA,IAAA;AAAA,EAAA;AAMR,SAAA,gBAAA1X,EAAA,cAAC,SAAI,WAAWgE,EAAiBH,GAAW,kBAAkB,EAAA,GACzDqT,KAAYA,EAAS,CAACI,EAAoBL,KAAQ,CAAA,CAAE,CAAC,GACrDA,KAAQO,EAAgBP,GAAM,CAAC,CACpC;AAER,GAEAc,KAAef,IC/DfgB,KAAerU;AAAA,EACX,CACIpD,GACA0X,MACC;AAFD,QAAAzX,IAAAD,GAAE,aAAAsD,GAAW,SAAAqU,IAAU,MAAM;AAAA,IAAC,GAAG,MAAA9M,IAAO,IAAI,IAAA/I,IAAK,IAAI,QAAA0J,IAAS,CAAI,GAAA,UAAAtL,MAAlED,GAA+EsD,IAAApD,EAA/EF,GAA+E,CAA7E,aAAW,WAAoB,QAAW,MAAS,UAAa;AAGlE,UAAMoL,IAASH,MACT1L,IAAYkF;AAElB,QAAI,CAAC2G;AACM,aAAA;AAGX,QAAIuM,IAAO;AAEX,UAAM1Y,IAAQ8C,EAAArC,EAAA;AAAA,MACV,SAAAgY;AAAA,MACA,WAAWlU,EAAiBH,GAAW,mBAAmB;AAAA,MAC1D,IAAIsU;AAAA,MACJ,UAAUF;AAAA,OACPnU,IALO;AAAA,MAMV,KAAK;AAAA,IAAA;AAGT,QAAIsH,GAAM;AAKN,UAAI,EAJoBQ,EAAO,UAAU,IAEH,KAAK,CAACwM,MAAMA,EAAE,SAAShN,CAAI;AAGzD,eAAA,QAAQ,IAAI,aAAa,gBAClBiN,GAAA,KAAK,2CAA2CjN,WAAc,GAGrE,gBAAApL,EAAA;AAAA,UAACsY;AAAAA,UAAA/V,EAAArC,EAAA,IACOT,IADP;AAAA,YAEG,SAAS,CAACwC,MAAM;AACZ,cAAAiW,EAAQjW,CAAC,GACTA,EAAE,eAAe,GACb,QAAQ,IAAI,aAAa,gBAClBoW,GAAA,KAAK,uCAAuCjN,WAAc;AAAA,YAEzE;AAAA,UAAA;AAAA,UAEC3K;AAAA,QAAA;AAKP,YAAA8X,IAAgB,OAAO,KAAKxM,CAAM,EAAE,OAA+B,CAACyM,GAAKva,OACvEua,EAAAva,KACA,OAAO8N,EAAO9N,MAAS,WAAW,mBAAmB8N,EAAO9N,EAAI,IAAI8N,EAAO9N,IACxEua,IACR,CAAE,CAAA;AAED,UAAA;AACA,QAAAL,IAAOvM,EAAO,SAASR,GAAMmN,KAAiB,CAAE,CAAA;AAAA,eAC3CtW;AACL,eAAQ,gBAAAjC,EAAA,cAAAsY,IAAApY,EAAA,IAAST,IAAQgB,CAAS;AAAA,MACtC;AAGI,MAAA0X,KACAvM,EAAO,SAAS,QAChBA,EAAO,SAAS,SAAS6M,GAAY,WACrCN,EAAK,OAAO,QAEZA,IAAO,IAAIA;AAAA,IACf,WACO9V,KAAMuJ,EAAO;AACb,MAAAuM,IAAAvM,EAAO,QAAQ,WAAW;AAAA,QAC7B,MAAM;AAAA,QACN,UAAUvJ;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA,CACV;AAAA;AAEG,aAAA,QAAQ,IAAI,aAAa,gBAClBgW,GAAA;AAAA,QACH;AAAA,MAAA,GAID;AAIX,QAAIzM,EAAO,YAAYA,EAAO,SAAS,SAAS6M,GAAY,YAAY;AACpE,YAAMC,IAAa3Y,EAAU,IAAI,SAAS,EAAE;AACrC,MAAAoY,IAAAQ,GAAsBR,GAAMO,CAAU;AAAA,IACjD;AAEA,WAAIjZ,EAAM,qCAEDmZ,IAAarW,EAAArC,EAAA,IAAGT,IAAH,EAAU,IAAIA,EAAM,OAC7BgB,CACL,oCAKH6X,IAAM/V,EAAArC,EAAA,IAAGT,IAAH,EAAU,IAAI0Y,MAChB1X,CACL;AAAA,EAER;AACJ,GAEMmY,KAAc3U,EAAO,QC5G3BqU,KAAe3U;AAAA,EACX,CACIpD,GAgBAqD,MACC;AAjBD,QAAApD,IAAAD,GACI;AAAA,iBAAAsD;AAAA,MACA,UAAA6L,IAAW;AAAA,MACX,MAAAkG,IAAO;AAAA,MACP,UAAAiD,IAAW;AAAA,MACX,SAAAX,IAAU,MAAM;AAAA,MAAC;AAAA,MACjB,WAAA7N,IAAY,MAAM;AAAA,MAAC;AAAA,MACnB,OAAA/L;AAAA,MACA,IAAAwa;AAAA,MACA,MAAAzY;AAAA,MACA,UAAAI;AAAA,MACA,QAAAsS;AAAA,MACA,WAAAgG;AAAA,MACA,QAAAhN;AAAA,QAbJvL,GAcOsD,IAAApD,EAdPF,GAcO;AAAA,MAbH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKJ,UAAMf,IAAwB;AAAA,MAC1B,OAAAnB;AAAA,MACA,UAAAoR;AAAA,MACA,MAAAkG;AAAA,MACA,IAAAkD;AAAA,MACA,UAAAD;AAAA,MACA,WAAW7U,EAAiBH,GAAW,eAAe,CAAC,CAAC,CAAC6L,GAAU,iBAAiB,CAAC;AAAA,MACrF,SAAS,CAACzN,MAAuD;AAG7D,YAFAA,EAAE,QAAQ,GAENyN,GAAU;AACV,UAAAzN,EAAE,eAAe;AACjB;AAAA,QACJ;AAEA,QAAAiW,EAAQjW,CAAC;AAAA,MACb;AAAA,MACA,WAAW,CAACA,MAA8C;AAGtD,YAFAA,EAAE,QAAQ,GAENyN,GAAU;AACN,UAAAzN,EAAE,QAAQ,SACVA,EAAE,eAAe;AAErB;AAAA,QACJ;AAEA,QAAAoI,EAAUpI,CAAC;AAAA,MACf;AAAA,IAAA;AAGJ,WAAO8W,IACH,gBAAA/Y,EAAA;AAAA,MAACgZ;AAAA,MAAAzW,EAAArC,IAAA;AAAA,QACG,MAAM6Y;AAAA,QACN,QAAAhN;AAAA,SACItM,IACAD,EAA0BsE,CAAK,IAJtC;AAAA,QAKG,KAAAF;AAAA,MAAA;AAAA,MAECnD;AAAA,IAGL,IAAA,gBAAAT,EAAA;AAAA,MAACiZ;AAAAA,MAAA1W,EAAArC,IAAA;AAAA,QACG,MAAAG;AAAA,QACA,QAAA0S;AAAA,SACItT,IACAD,EAA0BsE,CAAK,IAJtC;AAAA,QAKG,KAAAF;AAAA,MAAA;AAAA,MAECnD;AAAA,IAAA;AAAA,EAGb;AACJ,GAEMuY,KAAkB/U,EAAO+T,EAAS;AAAA,MAClC,CAAC5Y,MACCA,EAAE,WACI;AAAA;AAAA;AAAA,QAIA;AAAA,GAGR6Z,KAAahV,EAAO;AAAA,MACpB,CAAC7E,MACCA,EAAE,WACI;AAAA;AAAA;AAAA,MAIA;AAAA,GCjGR8Z,KAA2B,CAAC3Y,MAM5B;AAN4B,MAAAC,IAAAD,GAC9B;AAAA,aAAAoS;AAAA,IACA,UAAAH,IAAW;AAAA,IACX,UAAA/R;AAAA,IACA,SAAAyX,IAAU,MAAM;AAAA,IAAC;AAAA,MAJa1X,GAK3BsD,IAAApD,EAL2BF,GAK3B;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMoD,IAAM0C,KAEN6S,IAAiBnS;AAAA,IACnB,CAAC/E,MAAwB;AACjB,MAAAA,EAAE,WAAW2B,EAAI,WACjBsU,EAAQjW,CAAC;AAAA,IAEjB;AAAA,IACA,CAACiW,CAAO;AAAA,EAAA;AAIR,SAAA,gBAAAlY,EAAA;AAAA,IAACmT;AAAA,IAAA;AAAA,MACG,IAAIR;AAAA,MACJ,WAAU;AAAA,MACV,YAAW;AAAA,MACX,eAAa;AAAA,MACb,SAASH;AAAA,IAAA;AAAA,oCAERlC,IACG,MAAA,gBAAAtQ,EAAA;AAAA,MAACsT;AAAAA,MAAApT,EAAA;AAAA,QACG,WAAU;AAAA,QACV,UAAAsS;AAAA,QACA,KAAA5O;AAAA,QACA,SAASuV;AAAA,SACLrV;AAAA,MAEHrD;AAAA,IAAA,CAET;AAAA,EAAA;AAGZ,GAEM6S,KAAUrP,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAcL,CAAC7E,MAAMA,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAkB3Bga,KAAeF,IC3ETG,KAAOC;AAAA;AAAA;AAAA;AAAA,GAMPC,KAAOD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAePE,KAAavV,EAAO;AAAA,iBACToV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAaJ/F,KAAUrP,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAQR,CAAC7E,MAAOA,EAAE,kBAAkB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAQvC,CAACA,MAAOA,EAAE,kBAAkB,MAAM;AAAA;AAAA,GAI/Cqa,KAAUxV,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWjByV,KAAgBzV,EAAO;AAAA;AAAA;AAAA,iBAGZsV;AAAA;AAAA,cAEH,CAACna,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,WAAR,gBAAAmB,EAAgB;AAAA;AAAA;AAAA,GAI/BoZ,KAA0B,CAAC,EAAE,WAAA9V,GAAW,SAAA+V,IAAU,yCAE/CtG,IAAQ,EAAA,WAAWtP,EAAiB,iBAAiBH,CAAS,GAAG,gBAAc+V,EAC5E,GAAA,gBAAA5Z,EAAA,cAACyZ,MAAQ,WAAU,iBAAA,GACd,gBAAAzZ,EAAA,cAAAwZ,IAAA,EAAW,SAAQ,cAChB,GAAA,gBAAAxZ,EAAA;AAAA,EAAC0Z;AAAA,EAAA;AAAA,IACG,IAAG;AAAA,IACH,IAAG;AAAA,IACH,GAAE;AAAA,IACF,MAAK;AAAA,IACL,gBAAa;AAAA,IACb,qBAAkB;AAAA,EAAA;AAE1B,CAAA,CACJ,CACJ,GAIRG,KAAeF,IC5FTG,KAAyD,CAACvZ,MAK1D;AAL0D,MAAAC,IAAAD,GAC5D;AAAA,eAAAwZ;AAAA,IACA,OAAAC;AAAA,IACA,YAAAC;AAAA,MAH4DzZ,GAIzD8C,IAAA5C,EAJyDF,GAIzD;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;;AAGM,QAAAoD,IAAM0C,EAAyB,IAAI,GACnC,CAAC4T,GAAQC,CAAS,IAAIlU,EAAS,EAAK,GACpC,CAACmU,GAAaC,CAAc,IAAIpU,EAAS,EAAK,GACZ1F,IAAA+C,EAAM,SAAS,IAA/C,SAAAgX,GAAO,QAAAC,MAAyBha,GAAdia,IAAA9Z,EAAcH,GAAd,CAAlB,SAAO,YAETka,IAAkBzT,EAAY,MAAM;AACtC,UAAM0T,IAAM9W,EAAI;AAChB,QAAI8W,GAAK;AACCJ,YAAAA,IAAQ,OAAO,aAAaI,EAAI,OAChCH,IAAS,OAAO,cAAcG,EAAI,QAClCC,IAAQ,KAAK,IAAIL,GAAOC,CAAM;AAChCA,aAAAA,KAAU,KAAKD,KAAS,IACjB,IAEJK;AAAA,IACX;AACO,WAAA;AAAA,EACR,GAAA,CAACT,GAAQF,EAAM,GAAG,CAAC,GAEhBY,IAAYC,GAAQ,MAAM;AAC5B,UAAMH,IAAM9W,EAAI;AAChB,QAAI8W,GAAK;AACL,UAAI,CAACN,GAAa;AACd,QAAAC,EAAe,EAAI;AACnB,cAAMS,IAAOL;AACb,QAAAR,EAAWa,CAAI;AAAA,MACnB;AACI,aAAAJ,EAAI,SAASA,EAAI,SACV,CAAC,GAAGX,IAAYC,EAAM,mBAAmB,MAAM,IAE/C,CAAC,QAAQ,GAAGD,IAAYC,EAAM,kBAAkB;AAAA,IAE/D;AACO,WAAA;AAAA,EAAA,GACR,CAACD,GAAWnW,GAAKsW,GAAQF,EAAM,GAAG,CAAC;AAEtC,SAAA9T,EAAU,OACNiU,EAAU,EAAK,GACR,WAAmB;AACtB,IAAAE,EAAe,EAAK;AAAA,EAAA,IAEzB,CAACL,EAAM,GAAG,CAAC,qDAIL,gBAAAha,EAAA,cAAA+a,IAAA,EAAa,SAAS,CAACb,GAAQ,GAChC,gBAAAla,EAAA;AAAA,IAACgb;AAAA,IAAAzY,EAAArC,EAAA;AAAA,MACG,QAAQ,MAAM;AACV,QAAAia,EAAU,EAAI;AAAA,MAClB;AAAA,MACA,KAAAvW;AAAA,MACA,WAAAgX;AAAA,MACA,WAAU;AAAA,OACNtX,IAPP;AAAA,MAQG,OAAK9C,IAAA8C,EAAM,QAAN,gBAAA9C,EAAW,eAAc;AAAA,MAC9B,OAAOga;AAAA,MACP,KAAKR,EAAM;AAAA,MACX,QAAAE;AAAA,IAAA;AAAA,EACJ,GACC,gBAAAla,EAAA,cAAAib,IAAA,IAAS,CACd;AAER,GAEMF,KAAe9W,EAAO0V,EAAM;AAAA;AAAA;AAAA;AAAA,GAM5BqB,KAAM/W,EAAO;AAAA;AAAA;AAAA,MAGb,CAACxE,MACCA,EAAM,aACNzB;AAAA,qBACayB,EAAM,UAAU;AAAA,sBACfA,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,MAKhC,CAACA,MAAU,CAACA,EAAM,UAAU;AAAA,GAG5Bwb,KAAWhX,EAAO;AAAA;AAAA;AAAA;AAAA,GAMxBiX,KAAepB,IC1FTqB,KAAa,MAA2B;AAC1C,QAAMC,IAAU9U,KACV,CAAC+U,GAAMC,CAAO,IAAIrV,EAAS,EAAI,GAC/BsV,IAAgBvU,EAAY,OACzBqU,KAAMC,EAAQ,EAAI,GACnBF,EAAQ,WACR,aAAaA,EAAQ,OAAO,GAExBA,EAAA,UAAU,WAAW,MAAM;AAC/B,IAAAE,EAAQ,EAAK;AAAA,KACd,GAAI,GAEA,MAAM;AACT,IAAIF,EAAQ,WACR,aAAaA,EAAQ,OAAO;AAAA,EAChC,IAEL,CAACC,GAAMD,CAAO,CAAC;AACX,SAAA,CAACC,GAAME,CAAa;AAC/B,GAQMhY,KAAsB,CAAC,EAAE,OAAAD,GAAO,UAAAD,QAAe;;AAC3C,QAAAyP,IAAM7I,EAAY,QAAQ,GAC1BuR,IAAOvR,EAAY,WAAW,GAC9BwR,IAAQxR,EAAY,YAAY,GAChC,CAAC8P,GAAW2B,CAAY,IAAIzV,EAAS,CAAC,GACtC,CAAC9D,GAAQwZ,CAAS,IAAI1V,EAAS,EAAE,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,EAAG,CAAA,GAC9D,CAAC2V,GAAWC,CAAY,IAAI5V,EAAS,EAAK,GAC1C,CAACoV,GAAMS,CAAc,IAAIX,GAAW,GACpC,CAACY,GAAWC,CAAY,IAAI/V,EAAwB,IAAI,GACxD,CAACgW,GAAmBC,CAAoB,IAAIjW,EAAkC,IAAI,GAClFkW,IAAe7V,EAAiC,IAAI,GACpD8V,IAAgB9V,EAA8B,IAAI,GAClD+V,IAAuB/V,EAA8B,IAAI,GACzDgW,IAAahW,EAA8B,IAAI;AAErD,EAAAJ,EAAU,MAAM;AACZ,IAAI4M,KACAkJ,EAAa,IAAI;AAAA,EACrB,GACD,CAAClJ,CAAG,CAAC,GAER5M,EAAU,MAAM;AACZ,IAAAwV,EAAa,CAAC;AAAA,EAAA,GACf,CAACK,CAAS,CAAC,GAEd7V,EAAU,MAAM;;AACZ,QAAI6V,MAAc,QAAQK,EAAc,YAAY;AAChD;AAGE,UAAAG,IAAcH,EAAc,QAAQ,mBAEpCI,KAAajc,IAAA8b,EAAqB,YAArB,gBAAA9b,EAA8B,cAAc,cACzDkc,KAAcjc,IAAA6b,EAAqB,YAArB,gBAAA7b,EAA8B,cAAc;AAChE,QAAIyb,MAAsB;AACtB,MAAIS,MAAoBD,IACnBA,EAAoB,MAAM,IACpBE,MAAmBH,KACzBA,EAAmB,MAAM;AAAA,aAEvBP,MAAsB;AAC7B,MAAIU,MAAmBH,IAClBA,EAAmB,MAAM,IACnBE,MAAoBD,KAC1BA,EAAoB,MAAM;AAAA,SAE5B;AACH,UAAI,CAACF;AACD;AAEJ,MAAAA,EAAY,MAAM;AAAA,IACtB;AAAA,KACD,CAACR,GAAWK,GAAeC,GAAsBJ,CAAiB,CAAC,GAEtE/V,EAAU,MAAM;AACZ,QAAIsV;AACI,UAAAmB;AAAiB,eAAOC,GAAQ;AAAA,eAC7BnB,KAAWiB;AAAkB,aAAOG,GAAS;AAAA,EAAA,GACzD,CAACrB,GAAMC,CAAK,CAAC;AAEV,QAAAqB,IAAYjC,GAAQ,MAAuB;AACvC,UAAAkC,IAAM,SAAS,cAAc,KAAK;AACxC,IAAAA,EAAI,YAAY1Z,KAAY;AACtB,UAAA2Z,IAASD,EAAI,qBAAqB,KAAK;AAetC,WAdM,MAAM,KAAKC,CAAM,EAAE,OAAwB,CAACxE,GAAKyE,MAAe;AACnE,YAAAC,KAAMD,EAAW,aAAa,KAAK,GACnC1C,KAAS0C,EAAW,UAAU,OAAO,SAASA,EAAW,MAAM,QAAQ,EAAE,GACzE3C,KAAQ2C,EAAW,SAAS,OAAO,SAASA,EAAW,MAAM,OAAO,EAAE;AAC5E,UAAIC,IAAK;AACL,cAAMxC,KAAqB;AAAA,UACvB,KAAAwC;AAAA,UACA,eAAe5C;AAAA,UACf,gBAAgBC;AAAA,QAAA;AAEpB,QAAA/B,EAAI,KAAKkC,EAAG;AAAA,MAChB;AACO,aAAAlC;AAAA,IACX,GAAG,CAAE,CAAA;AAAA,EACE,GACR,CAACnV,CAAQ,CAAC,GAEPuP,IAAgB5L,EAAY,MAAM;AAC9B,UAAA,EAAE,KAAAkW,EAAQ,IAAA5Z;AAChB,QAAI4Z,GAAK;AACL,YAAMC,IAAWL,EAAU,UAAU,CAAChU,GAAMsU,MACjCtU,EAAK,QAAQoU,CACvB;AACD,MAAAlB,EAAamB,CAAQ;AAAA,IACzB;AAAA,EAAA,GACD,CAACL,GAAWxZ,CAAK,CAAC,GAEf+Z,KAAerW,EAAY,CAAC/E,MAAwB;AACtD,IAAA+Z,EAAa,IAAI;AAAA,EACrB,GAAG,CAAE,CAAA,GAECsB,KAAkBtW;AAAA,IACpB,CAACuW,MAAoB;AACjB,MACiB7B,EADb6B,IACaxD,IAAYA,IAAY,OAExBA,IAAYA,IAAY,IAFI;AAAA,IAIjD;AAAA,IACA,CAAC2B,GAAc3B,CAAS;AAAA,EAAA,GAGtByD,KAAgBxW,EAAY,MAAM;AACpC,QAAI+U,MAAc,MAAM;AACd,YAAA,EAAE,KAAAmB,EAAI,IAAIJ,EAAUf;AAC1B,MAAImB,KACO,OAAA,KAAKA,GAAK,OAAO;AAAA,IAEhC;AAAA,EAAA,GACD,CAACJ,GAAWf,CAAS,CAAC,GAEnB0B,KAAmBzW;AAAA,IACrB,CAAC/E,MAAW;AACR,YAAMyb,IAAMpB,EAAW;AACvB,MAAIoB,MACA/B,EAAU,EAAE,KAAK+B,EAAI,WAAW,MAAMA,EAAI,YAAY,GAAGzb,EAAE,SAAS,GAAGA,EAAE,QAAS,CAAA,GAClF4Z,EAAa,EAAI;AAAA,IAEzB;AAAA,IACA,CAACS,CAAU;AAAA,EAAA,GAGTqB,KAAmB3W;AAAA,IACrB,CAAC/E,MAAW;AACR,YAAMyb,IAAMpB,EAAW;AACvB,UAAIoB,KAAO9B,GAAW;AACZ,cAAAgC,IAAK3b,EAAE,UAAUE,EAAO,GACxB0b,IAAK5b,EAAE,UAAUE,EAAO;AAC1B,QAAAub,EAAA,YAAYvb,EAAO,MAAM0b,GACzBH,EAAA,aAAavb,EAAO,OAAOyb;AAAA,MACnC;AAAA,IACJ;AAAA,IACA,CAAChC,GAAWzZ,CAAM;AAAA,EAAA,GAGhB2b,KAAuB,CAAC7b,MAAW;AACrC,IAAAA,EAAE,eAAe,GACjB4Z,EAAa,EAAK;AAAA,EAAA,GAGhBkC,KAAclD,GAAQ,MAAM;AAC9B,QAAIyB,EAAW,SAAS;AACpB,YAAM0B,IAAgB1B,EAAW,QAAQ,qBAAqB,KAAK;AAC/D,UAAA0B,KAAiBA,EAAc,QAAQ;AACvC,cAAMf,IAAae,EAAc;AACjC,eACIf,EAAW,QAAQ,OAAO,cAAcA,EAAW,SAAS,OAAO;AAAA,MAE3E;AAAA,IACJ;AACO,WAAA;AAAA,EAAA,GACR,CAACX,GAAYvC,CAAS,CAAC,GAEpB6C,KAAU,MAAM;AAClB,IAAIb,MAAc,SACdG,EAAqB,MAAM,GAC3BF,EAAaD,IAAY,CAAC;AAAA,EAC9B,GAGEc,KAAW,MAAM;AACnB,IAAId,MAAc,SACdG,EAAqB,OAAO,GAC5BF,EAAaD,IAAY,CAAC;AAAA,EAC9B,GAGEY,KAAkBZ,MAAc,QAAQA,IAAY,KAAKe,EAAU,SAAS,GAE5EJ,KAAmBX,MAAc,QAAQe,EAAU,SAAS,IAAIf;AAEtE,2DAES,gBAAA/b,EAAA,cAAAkZ,IAAA,EAAQ,SAAS6C,MAAc,MAAM,SAASsB,GAC3C,GAAA,gBAAArd,EAAA;AAAA,IAACie;AAAA,IAAA;AAAA,MACG,aAAa,MAAMnC,EAAe;AAAA,MAClC,aAAa,MAAMA,EAAe;AAAA,MAClC,cAAc,MAAMA,EAAe;AAAA,MACnC,WAAW,MAAMA,EAAe;AAAA,IAAA;AAAA,IAE/B,gBAAA9b,EAAA,cAAAke,IAAA,EAAkB,MAAM7C,EAAK,cAC1B,gBAAArb,EAAA;AAAA,MAACme;AAAA,MAAA;AAAA,QACG,KAAK/B;AAAA,QACL,SAAS;AAAA,UACL;AAAA,YACI,IAAI;AAAA,YACJ,SAASoB;AAAA,YACT,MAAM;AAAA,YACN,WAAW;AAAA,UACf;AAAA,UACA;AAAA,YACI,IAAI;AAAA,YACJ,SAAS,MAAMxB,EAAa,IAAI;AAAA,YAChC,MAAM;AAAA,YACN,WAAW;AAAA,UACf;AAAA,QACJ;AAAA,MAAA;AAAA,IAAA,CAER;AAAA,IACA,gBAAAhc,EAAA;AAAA,MAACoe;AAAAA,MAAA;AAAA,QACG,WAAWxC,EAAU,SAAS;AAAA,QAC9B,aAAamC,GAAY,SAAS;AAAA,QAClC,KAAKzB;AAAA,QACL,aAAaqB;AAAA,QACb,aAAaF;AAAA,QACb,WAAWK;AAAA,MAAA;AAAA,MAEV/B,MAAc,QACX,gBAAA/b,EAAA;AAAA,QAAC8Z;AAAAA,QAAAvX,EAAArC,EAAA;AAAA,UACG,YAAY,CAACP,MAAkB;AAC3B,YAAA+b,EAAa/b,CAAK;AAAA,UACtB;AAAA,UACA,WAAAoa;AAAA,WACIzW,IALP;AAAA,UAMG,OAAOwZ,EAAUf;AAAA,QAAA;AAAA,MACpB;AAAA,IAET;AAAA,IACA,gBAAA/b,EAAA;AAAA,MAACqe;AAAA,MAAA;AAAA,QACG,KAAKhC;AAAA,QACL,MAAMhB,EAAK,SAAS;AAAA,QACpB,SAAS;AAAA,UACL;AAAA,YACI,IAAI;AAAA,YACJ,SAASuB;AAAA,YACT,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAMD;AAAA,YACN,WAAW;AAAA,YACX,WAAW;AAAA,UACf;AAAA,UACA;AAAA,YACI,IAAI;AAAA,YACJ,SAASE;AAAA,YACT,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAMH;AAAA,YACN,WAAW;AAAA,YACX,WAAW;AAAA,UACf;AAAA,QACJ;AAAA,MAAA;AAAA,IACJ;AAAA,IACC,gBAAA1c,EAAA,cAAAse,IAAA,EAAqB,MAAMjD,EAAK,cAC7B,gBAAArb,EAAA;AAAA,MAACue;AAAA,MAAA;AAAA,QACG,SAAS;AAAA,UACL;AAAA,YACI,IAAI;AAAA,YACJ,SAAS,MAAMjB,GAAgB,EAAK;AAAA,YACpC,MAAM;AAAA,YACN,WAAW;AAAA,UACf;AAAA,UACA;AAAA,YACI,IAAI;AAAA,YACJ,SAAS,MAAMA,GAAgB,EAAI;AAAA,YACnC,MAAM;AAAA,YACN,WAAW;AAAA,UACf;AAAA,QACJ;AAAA,MAAA;AAAA,IACJ,GACC,gBAAAtd,EAAA,cAAAwe,IAAA,EAAU,SAAQ,OAAA,GAAQ,KAAK,MAAMzE,IAAY,GAAG,GAAE,GAAC,CAC5D;AAAA,EAAA,CAER,GACA,gBAAA/Z,EAAA;AAAA,IAACiZ;AAAA,IAAA;AAAA,MACG,KAAKkD;AAAA,MACL,SAASvJ;AAAA,MACT,WAAW,CAAC3Q,MAAM;AACV,QAAAA,EAAE,QAAQ,YAGdA,EAAE,eAAe,GACH2Q;MAClB;AAAA,MACA,UAAU;AAAA,IAAA;AAAA,IAEV,gBAAA5S,EAAA,cAACye,YAAenb,MAAe,OAAM/C,KAAA+C,EAAc,QAAd,gBAAA/C,GAAmB,eAAc,GAAI,EAAA;AAAA,EAAA,CAElF;AAER,GAgBMme,KAAY/a;AAAA,EACd,CAAC,EAAE,MAAA0X,IAAO,QAAQ,SAAAsD,GAAS,WAAA9a,EAAA,GAAaD,MAEhC,gBAAA5D,EAAA;AAAA,IAAC4e;AAAA,IAAA;AAAA,MACG,KAAAhb;AAAA,MACA,MAAAyX;AAAA,MACA,WAAWrX,EAAiB,qBAAqBH,CAAS;AAAA,IAAA;AAAA,IAEzD8a,EAAQ;AAAA,MACL,CACI,EAAE,IAAAhZ,GAAI,QAAAkZ,IAAS,IAAO,MAAAxD,IAAO,IAAM,WAAAyD,GAAW,SAAA5G,GAAS,MAAA6G,GAAM,WAAAlb,EAAAA,GAC7D8S,MAEA,gBAAA3W,EAAA;AAAA,QAACgf;AAAA,QAAA;AAAA,UACG,KAAKrZ,IAAKgR,EAAM,SAAS;AAAA,UACzB,QAAQkI,EAAO,SAAS;AAAA,UACxB,SAAA3G;AAAA,UACA,UAAWmD,IAAY,SAAL;AAAA,UAClB,MAAMA,EAAK,SAAS;AAAA,UACpB,MAAA0D;AAAA,UACA,WAAWlb;AAAAA,UACX,cAAYib;AAAA,QAAA;AAAA,QAEZ,gBAAA9e,EAAA,cAAC2Q,IAAY,EAAA,MAAM,IAAI,QAAQ,EAAE,MAAM,OAAO,SAASoO,EAAQ,EAAA,CAAA;AAAA,MACnE;AAAA,IAER;AAAA,EAAA;AAIhB,GAEME,KAAYhb,EAAO;AAAA;AAAA;AAAA,MAGnB,CAAC7E,MACCA,EAAE,SAAS,SACL,gBACApB;AAAA;AAAA;AAAA;AAAA,GAMRib,KAAahV,EAAOqU,EAAI;AAAA;AAAA,GAIxBsG,KAAmB3a,EAAOgb,EAAS;AAAA;AAAA;AAAA,WAG9B,CAAC7f,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,GAG3B2e,KAAc,QAEdF,KAAkB/a,EAAOP,EAAM;AAAA,aACxBwb;AAAA,cACCA;AAAA;AAAA;AAAA;AAAA;AAAA,MAKR,CAAC9f,MACCA,EAAE,SAAS,gBACXpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOF,CAACoB,MACC;;AAAA,SAAAA,EAAE,WAAW,SACPpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qCAOsBuC,IAAAnB,EAAE,MAAM,WAAR,gBAAAmB,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,wBAK5BoP,EAAevQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAY1BpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAWU2R,EAAevQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,MAIlC,CAACA,MACCA,EAAE,SAAS,SACLpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAOAA;AAAA;AAAA;AAAA;AAAA,GAMRmgB,KAAkBla,EAAOya,EAAS;AAAA,WAC7B,CAACtf,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,aACpB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,GAG7Bge,KAAsBta,EAAOya,EAAS;AAAA,cAC9B,CAACtf,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA,GAM9B8d,KAAoBpa,EAAOya,EAAS;AAAA;AAAA;AAAA;AAAA,+BAIXQ;AAAA;AAAA,oBAEX,CAAC9f,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA,qBAGrB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA,GAKrCie,KAAYva,EAAOuN,CAAU;AAAA;AAAA,cAErB,CAACpS,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,aACvB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA,iBAElB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,mBACpB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,GAGnC4e,KAAiBlb,EAAOgb,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQjChB,KAAgBha,EAAO;AAAA;AAAA,GAIvBia,KAAoBja,EAAOkb,EAAc;AAAA;AAAA;AAAA,GAKzCb,KAAuBra,EAAOkb,EAAc;AAAA;AAAA;AAAA,GAK5Cf,KAAUna,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQT,CAAC7E,MACPA,EAAE,gBAAgB,SAAUA,EAAE,cAAc,SAAS,aAAa,SAAU;AAAA,GAG9Eqf,KAAYxa,EAAO;AAAA;AAAA,GAIzBmb,KAAe7b,IC/gBT8b,KAAQ1b;AAAA,EACV,CAACpD,GAAsFqD,MAAQ;AAA9F,QAAApD,IAAAD,GAAE,aAAAsD,GAAW,UAAApD,GAAU,SAAA2R,GAAS,gBAAA+G,IAAiB,MAAM;AAAA,IAAI,GAAA,OAAAmG,IAAQ,OAAnE9e,GAA6EsD,IAAApD,EAA7EF,GAA6E,CAA3E,aAAW,YAAU,WAAS,kBAA2B;AACxD,UAAM,CAACmS,GAASC,CAAa,IAAItF,GAAU,GACrC,CAACtP,GAAKsW,CAAQ,IAAIpI,GAAU,EAAI,GAChCuG,IAAiBnM,KACjBX,IAAKW,EAAOuC,GAAA,CAAM,GAElBiK,IAAM7I,EAAY,QAAQ;AAEhC,IAAA/D,EAAU,MAAM;AACZ,OAAI4M,KAAOwM,MACP1M,EAAc,EAAK;AAAA,IACvB,GACD,CAACE,GAAKwM,CAAK,CAAC,GAEfpZ,EAAU,MAAM;AACR,MAAAyM,KAAWF,EAAe,WAC1BA,EAAe,QAAQ;IAE5B,GAAA,CAACE,GAASF,EAAe,OAAO,CAAC,GAEpClE,GAAe,kBAAkB,MAAM;AACnC,MAAAqE,EAAc,EAAK;AAAA,IAAA,CACtB;AAED,UAAMyK,IAAerW;AAAA,MACjB,CAAC/E,MAAwB;AACrB,QAAA2Q,EAAc,EAAK,GACnBuG,EAAelX,CAAC;AAAA,MACpB;AAAA,MACA,CAACkX,GAAgBvG,CAAa;AAAA,IAAA;AAGlC,IAAA2B,GAAoB3Q,GAAK,OAAO;AAAA,MAC5B,QAAQ;AACJ,QAAAgP,EAAc,EAAK;AAAA,MACvB;AAAA,IACF,EAAA;AAEI,UAAAI,IAAahM,EAAY,MACpB2H,GAAchJ,EAAG,SAAS,MAAM;AACnC,MAAAiN,EAAc,EAAK;AAAA,IAAA,CACtB,GACF,CAACjN,EAAG,OAAO,CAAC;AAEf,WAEQ,gBAAA3F,EAAA,cAAAA,EAAA,UAAA,MAAA,gBAAAA,EAAA,cAACkZ,IAAQ,EAAA,SAAAvG,GAAkB,SAAS0K,EAChC,GAAA,gBAAArd,EAAA;AAAA,MAACsT;AAAAA,MAAA/Q,EAAArC,EAAA;AAAA,QACG,WAAW8D;AAAA,UACPH;AAAA,UACA;AAAA,UACA,gBAAgB8B,EAAG;AAAA,QACvB;AAAA,QACA,KAAA3H;AAAA,QACA,UAAU;AAAA,SACN8F,IARP;AAAA,QASG,KAAKwQ;AAAA,MAAA;AAAA,MAEL,gBAAAtU,EAAA;AAAA,QAAC8P;AAAA,QAAA;AAAA,UACG,SAAS,MAAM8C,EAAc,EAAK;AAAA,UAClC,UAAU;AAAA,UACV,KAAKH;AAAA,QAAA;AAAA,QAEL,gBAAAzS,EAAA,cAAC2Q,MAAY,QAAQ,EAAE,MAAM,OAAO,SAAS,WAAW;AAAA,MAC5D;AAAA,MACClQ;AAAA,IAAA,CAET,GACCT,EAAM,aAAaoS,GAAS;AAAA,MACzB,SAAS,CAAC7K,MAA4B;AACpB,QAAAqL,KACHI;MACf;AAAA,IACH,CAAA,CACL;AAAA,EAER;AACJ,GAEAuM,KAAeF,IAET/L,KAAUrP,EAAO;AAAA,mBACJ,CAAC7E,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,iBACxB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA,eAIxB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,MAC/B,CAACnB,MAAM8P,GAAW9P,CAAC;AAAA,MACnB,CAACA,MAAMA,EAAE,OAAOA,EAAE;AAAA;AAAA,GC3FlBogB,KAA2B,CAAC;AAAA,EAC9B,WAAA3b;AAAA,EACA,SAAAuO;AAAA,EACA,QAAAF,IAAS;AAAA,EACT,MAAAtB,IAAO;AAAA,EACP,UAAA6O,IAAW,MAAM;AAAA,EAAC;AAAA,EAClB,WAAAC,IAAY,MAAM;AAAA,EAAC;AAAA,EACnB,aAAAC,IAAc;AAAA,EACd,cAAAC,IAAe;AACnB,MAAM;AACF,QAAMhc,IAAM0C,KAENuZ,IAAS7Y,EAAY,MAAM;;AACpB,IAAAyY,MACTlf,IAAAqD,KAAA,gBAAAA,EAAK,YAAL,QAAArD,EAAc;AAAA,EAAM,GACrB,CAACkf,CAAQ,CAAC,GAEPK,IAAU9Y,EAAY,MAAM;;AACpB,IAAA0Y,MACVnf,IAAAqD,KAAA,gBAAAA,EAAK,YAAL,QAAArD,EAAc;AAAA,EAAM,GACrB,CAACmf,CAAS,CAAC;AAEd,SACK,gBAAA1f,EAAA,cAAA+f,IAAA,EAAY,WAAAlc,GAAsB,SAAAuO,GAAkB,KAAAxO,GAAU,gBAAgBic,EAC1E,GAAA3N,KAAW,gBAAAlS,EAAA,cAAA+P,IAAA,MAAYmC,CAAO,GAC9BtB,KAAS,gBAAA5Q,EAAA,cAAA+P,IAAA,MAAYa,CAAK,GAC1BgP,KACG,gBAAA5f,EAAA,cAACggB,IAAoB,EAAA,SAASF,KAAUF,CAAa,GAExDD,KAAgB,gBAAA3f,EAAA,cAAAigB,IAAA,EAAmB,SAASJ,EAAA,GAASF,CAAY,CACtE;AAER,GAEAO,KAAeV,IAETO,KAAc9b,EAAOob,EAAK;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKV,CAACjgB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA,0BAIlB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA,GAK1Cyf,KAAsB/b,EAAOP,EAAM;AAAA;AAAA;AAAA,MAGnC,CAACtE,MAAM;;AAAA,sBAAYmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe,UAASC,IAAApB,EAAE,MAAM,UAAR,gBAAAoB,EAAe;AAAA;AAAA,MAC1D,CAACpB,MAAMA,EAAE,MAAM,gBAAgB,kBAAkBA,EAAE,MAAM;AAAA;AAAA,wBAEvC,CAACA,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,WAAR,gBAAAmB,EAAgB;AAAA;AAAA,wBACvB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,WAAR,gBAAAmB,EAAgB;AAAA;AAAA;AAAA,gBAE/B,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAO5BoP;AAAA;AAAA,GAIJsQ,KAAqBhc,EAAOP,EAAM;AAAA;AAAA;AAAA,MAGlC,CAACtE,MAAM;;AAAA,sBAAYmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe,UAASC,IAAApB,EAAE,MAAM,UAAR,gBAAAoB,EAAe;AAAA;AAAA,MAC1D,CAACpB,MAAMA,EAAE,MAAM,gBAAgB,kBAAkBA,EAAE,MAAM;AAAA;AAAA,aAElD,CAACA,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,WAAR,gBAAAmB,EAAgB;AAAA;AAAA,wBACZ,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,WAAR,gBAAAmB,EAAgB;AAAA;AAAA;AAAA;AAAA,UAGrCoP;AAAA;AAAA,GCrFJwQ,KAA4B,CAAC;AAAA,EAC/B,QAAAjO,IAAS;AAAA,EACT,MAAAkO,IAAO;AAAA,EACP,kBAAAC,IAAmB;AAAA,EACnB,YAAAC,IAAa;AACjB,sCAEShN,IACG,MAAA,gBAAAtT,EAAA,cAACugB,UACI,gBAAAvgB,EAAA,cAAAwR,GAAA,EAAW,SAAQ,KAAK,GAAA,KAAG,CAChC,GACA,gBAAAxR,EAAA,cAACoT,UACI,gBAAApT,EAAA,cAAAwR,GAAA,EAAW,SAAQ,KAAM,GAAAU,CAAO,GAChC,gBAAAlS,EAAA,cAAAwgB,IAAA,EAAS,WAAU,SAAQ,cAAYJ,GAAM,MAAMA,GAAM,CAC9D,mCACChC,IACG,MAAA,gBAAApe,EAAA,cAAC,cAAMqgB,CAAiB,mCACvB,MACG,MAAA,gBAAArgB,EAAA,cAAC,YAAIsgB,CAAW,CACpB,CACJ,CACJ,GAIRG,KAAeN,IAET7M,KAAUrP,EAAO;AAAA;AAAA;AAAA,GAKjBsc,KAAStc,EAAO;AAAA,MAChB,CAAC7E,MACCoD,GAAepD,CAAC;AAAA,EACZ;AAAA,EACApB;AAAA;AAAA;AAAA;AAAA;AAAA;AAMJ;AAAA,GAGFoV,KAASnP,EAAO;AAAA,mBACH,CAAC7E,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA,MAEnC,CAACnB;;AACC,SAAAoD,GAAepD,CAAC;AAAA,IACZ;AAAA,IACApB;AAAA;AAAA,8BAEiBuC,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,EAEpC;AAAA;AAAA;AAAA;AAAA,iBAGS,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,WAAR,gBAAAmB,EAAgB;AAAA;AAAA,qBACnB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA,GAIrC6d,KAAUna,EAAO;AAAA,kBACL,CAAC7E,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AClExC,MAAMmgB,WAAgB9O,GAAwB;AAAA,EAA9C,cAAA;AAAA,UAAA,GAAA,SAAA,GAII,KAAS,QAAe;AAAA,MACpB,YAAY;AAAA,IAAA;AAAA,EAChB;AAAA,EAEA,qBAAqB;AACjB,UAAMzE,IAAW,KAAK,MAAM,UAAU,IAAI,uBAAuB;AAE7D,IAAAA,KAAYA,EAAS,cACrB,KAAK,SAAS;AAAA,MACV,YAAY;AAAA,IAAA,CACf;AAAA,EAET;AAAA,EAEA,oBAAoB;AACZ,QAAA,CAAC,KAAK,MAAM;AACZ;AAGJ,UAAMW,IAAmB,KAAK,MAAM,UAAU,IAAI,kBAAkB;AAEhE,IAAA,KAAK,QAAQA,MACb,KAAK,kBAAkB,KAAK,KAAK,iBAAiB,SAAS,MAAM;AAC7D,YAAM6S,IAAY7S,EAAiB;AAAA,QAC/B;AAAA,MAAA,GAeE8S,IAZW,CAAA,EAAG,OAAO,KAAKD,GAAW,CAACze,MACpC,OAAO,UAAW,cACX,KAIP,EADU,OAAO,iBAAiBA,CAAE,EAC9B,YAAY,UAAWA,EAAG,eAAe,KAAKA,EAAG,gBAAgB,EAI9E,EAE+B;AAEhC,MAAI0e,KACCA,EAAuB,MAAM;AAAA,IAClC,CACH;AAAA,EAET;AAAA,EAEA,uBAAuB;AACnB,IAAI,KAAK,QACL,KAAK,KAAK,oBAAoB,SAAS,KAAK,eAAe;AAAA,EAEnE;AAAA,EAEA,SAAS;AACD,WAAC,KAAK,MAAM,aAKZ,gBAAA5gB,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,OAAO,EAAE,SAAS,EAAE;AAAA,QACpB,UAAU;AAAA,QACV,KAAK,CAAC+F,MAAc;AAChB,eAAK,OAAOA;AAAA,QAChB;AAAA,MAAA;AAAA,IAAA,IATG;AAAA,EAYf;AACJ;AAEA,MAAA8a,KAAeH,ICxEfF,KAAe7c;AAAA,EACX,CAACpD,GAAsDqD,MAAQ;AAA9D,QAAApD,IAAAD,GAAE,aAAAsD,GAAW,aAAAid,GAAa,MAAAlQ,GAAM,UAAAnQ,MAAhCD,GAA6CsD,IAAApD,EAA7CF,GAA6C,CAA3C,aAAW,eAAa,QAAM;AAEzB,WAAA,gBAAAR,EAAA,cAACsY,UAAK,WAAWtU,EAAiBH,GAAW,kBAAkB,KAAOC,MAAO,KAAAF,EACxE,IAAAnD,mCACAuO,IAAM,MAAA4B,CAAK,GACXkQ,IAAe,gBAAA9gB,EAAA,cAAAmV,IAAA,EAAK,MAAM2L,GAAa,WAAU,qBAAqB,CAAA,IAAK,IAChF;AAAA,EAER;AACJ;ACrBY,IAAAC,uBAAAA,OACRA,EAAA,QAAQ,SACRA,EAAA,aAAa,cACbA,EAAA,mBAAmB,oBAHXA,IAAAA,MAAA,CAAA,CAAA;AAYZ,MAAMC,KAA6B,CAAC,EAAE,WAAAnd,IAAY,IAAI,QAAAod,IAAS,SAAmB,WAAAC,QAE1E,gBAAAlhB,EAAA,cAAC,QAAK,EAAA,WAAWgE,EAAiBH,GAAW,kBAAkB,EAC1D,GAAAsd,GAAWD,GAAWD,CAAM,CACjC,GAIRG,KAAeJ,IAETK,KAAmB,CAACvL,MACf,IAAIA,IAAQ,MAAM,EAAE;AAI/B,SAASqL,GAAWG,GAAyBL,GAAqB;AACxD,QAAAM,IAAO,IAAI,KAAKD,CAAe,GAE/BE,IAAYD,EAAK,aAAa,EAAE,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,GAEvDE,IAAaD,EAAU,SAAS,IAAI,GAAGA,EAAU,MAAMA,EAAU,OAAOA,EAAU,IAElFE,IAAOH,EAAK,eACZI,IAAQJ,EAAK,SAAA,IAAa,GAC1BK,IAAML,EAAK,WAEXM,IAAa,GAAGH,KAAQL,GAAiBM,CAAK,KAAKN,GAAiBO,CAAG;AAE7E,SAAIX,MAAW,eACJY,IAGPZ,MAAW,UACJQ,IAGJ,GAAGI,KAAcJ;AAC5B;ACvCA,MAAMK,KAA2B,CAACvhB,MAA+D;AAA/D,MAAAC,IAAAD,GAAE,aAAAsD,GAAW,UAAApD,GAAU,SAAAwQ,GAAS,QAAA8Q,IAAS,OAAzCvhB,GAAmDsD,IAAApD,EAAnDF,GAAmD,CAAjD,aAAW,YAAU,WAAS;AAC9D,QAAM,CAACwhB,GAAMC,CAAO,IAAIhc,EAAS,EAAK,GAChCN,IAAKW,EAAOuC,GAAA,CAAM,GAClBjF,IAAM0C,KACN,CAAC,EAAE,GAAAmO,GAAG,GAAAC,EAAA,GAAKT,CAAG,IAAIG,GAAkB4N,GAAMrc,EAAG,SAAS/B,EAAI,OAAO,GAEjEse,IAAe,CAAC3a,MAAsB;AAClC,UAAA,EAAE,QAAAwL,EAAW,IAAAxL;AAEnB,IAAI,CAAC3D,EAAI,WAAW,CAACmP,KAIjBnP,EAAI,YAAYmP,KAAU,CAACnP,EAAI,QAAQ,SAASmP,CAAc,KAC9DkP,EAAQ,EAAK;AAAA,EACjB;AAGJ,EAAA/b,EAAU,MAAM;AACZ,QAAI,EAAC6b;AAIE,oBAAA,iBAAiB,SAASG,CAAY,GAEtC,MAAM;AACF,eAAA,oBAAoB,SAASA,CAAY;AAAA,MAAA;AAAA,EACpD,GACD,CAACF,GAAMD,CAAM,CAAC;AAEjB,QAAMI,IAAmBnb;AAAA,IACrB,CAAC/E,GAAqBtC,MAAmB;AACjC,MAAAsU,EAAAhS,GAAG2B,EAAI,OAAO,GAClBqe,EAAQtiB,CAAK;AAAA,IACjB;AAAA,IACA,CAACsU,GAAKgO,CAAO;AAAA,EAAA;AAIb,SAAA,gBAAAjiB,EAAA;AAAA,IAACoiB;AAAA,IAAA;AAAA,MACG,KAAAxe;AAAA,MACA,WAAU;AAAA,MACV,cAAeme,IAA4C,SAAnC,CAAC9f,MAAMkgB,EAAiBlgB,GAAG,EAAI;AAAA,MACvD,cAAe8f,IAA6C,SAApC,CAAC9f,MAAMkgB,EAAiBlgB,GAAG,EAAK;AAAA,MACxD,YAAY8f,IAAS,CAAC9f,MAAMkgB,EAAiBlgB,GAAU,CAAC+f,CAAI,IAAI;AAAA,MAChE,SAASD,IAAS,CAAC9f,MAAMkgB,EAAiBlgB,GAAG,CAAC+f,CAAI,IAAI;AAAA,IAAA;AAAA,IAErDvhB;AAAA,IACAuhB,qCACI1R,IACG,MAAA,gBAAAtQ,EAAA;AAAA,MAACqiB;AAAA,MAAAniB,EAAA;AAAA,QACG,WAAW8D,EAAiBH,GAAW,0BAA0B;AAAA,QACjE,GAAA4Q;AAAA,QACA,GAAAC;AAAA,SACI5Q;AAAA,MAEHmN;AAAA,IAAA,CAET;AAAA,EAAA;AAIhB,GAEMmR,KAAUne,EAAO;AAAA;AAAA;AAAA,GAKjBoe,KAAmBpe,EAAO;AAAA;AAAA;AAAA,qBAMX,CAAC7E,MAAMA,EAAE,MAAM;AAAA,oBAChB,CAACA,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,iBACzB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA,mBACpB,CAACnB,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAKxB,CAACnB,MAAOA,EAAE,QAAQA,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAMrB,CAACA,MAAM;;AAAA,UAAAmB,IAAAnB,EAAE,MAAM,UAAR,gBAAAmB,EAAe;AAAA;AAAA;AAAA;AAAA,MAGxC,CAACnB,MAAW;AACV,MAAIpB,IAAM;AAEN,SAAAoB,EAAE,IAAI,IACCpB,KAAA,mBAAmBoB,EAAE,KAAK,YAE1BpB,KAAA,gBAGPoB,EAAE,IAAI,IACCpB,KAAA,qBAAqBoB,EAAE,KAAK,YAE5BpB,KAAA,cAGJA;AACX;AAAA,GAGJskB,KAAeR,ICjGTS,KAAuC,CAAC9iB,MAAU;AAC9C,QAAA;AAAA,IACF,IAAI+iB;AAAA,IACJ,cAAAC,IAAe;AAAA,IACf,eAAAC,IAAgB;AAAA,IAChB,SAAAC;AAAA,IACA,UAAAliB;AAAA,IACA,aAAAmiB;AAAA,EACA,IAAAnjB,GAuDEojB,KArD+B,MAElB;;AACX,QAAA,GAACD,KAAeA,MAAgB,SAGhC;AAAA,UAAA,OAAOA,KAAgB;AAChB,eAAA;AAAA,UACH,OAAO;AAAA,YACH,gBAAgBA;AAAA,YAChB,UAAYD,IACN,OAAOA,KAAY,WACfA,IACAA,EAAQ,QACZ;AAAA,YACN,QAAQ;AAAA,UACZ;AAAA,UACA,MAAM;AAAA,YACF,gBAAgBC;AAAA,YAChB,UAAYD,IACN,OAAOA,KAAY,WACfA,IACAA,EAAQ,OACZ;AAAA,YACN,QAAQ;AAAA,UACZ;AAAA,QAAA;AAGJ,UAAA,OAAOC,KAAgB,UAAU;AAC3B,cAAA,EAAE,OAAAhlB,GAAO,MAAAC,EAAS,IAAA+kB;AACjB,eAAA;AAAA,UACH,OAAO;AAAA,YACH,iBAAgBriB,IAAAqiB,EAAY,UAAZ,gBAAAriB,EAAmB;AAAA,YACnC,UAAYoiB,IACN,OAAOA,KAAY,WACfA,IACAA,EAAQ,QACZ;AAAA,YACN,QAAU/kB,EAAM,SAASA,EAAM,SAAS;AAAA,UAC5C;AAAA,UACA,MAAM;AAAA,YACF,iBAAgB4C,IAAAoiB,EAAY,UAAZ,gBAAApiB,EAAmB;AAAA,YACnC,UAAYmiB,IACN,OAAOA,KAAY,WACfA,IACAA,EAAQ,QACZ;AAAA,YACN,QAAU9kB,EAAK,SAASA,EAAK,SAAS;AAAA,UAC1C;AAAA,QAAA;AAAA,MAER;AAAA;AAAA,EAAA;AAMA,SAAA,gBAAAmC,EAAA;AAAA,IAAC8iB;AAAA,IAAA;AAAA,MACG,SAAS;AAAA,QACL,OAAQD,KAAOA,EAAI,MAAM,YAAa;AAAA,QACtC,MAAOA,KAAOA,EAAI,KAAK,YAAa;AAAA,MACxC;AAAA,MACA,IAAIL;AAAA,MACJ,QAAQ;AAAA,MACR,cAAAC;AAAA,MACA,eAAAC;AAAA,MACA,SAAS,CAAC3c,MAAsBA,EAAK;AAAA,IAAA;AAAA,IAEpC,CAACgd,MAAUtiB,KAAYA,EAASsiB,GAAOF,KAAOnlB,GAAmB,QAAQqlB,GAAOF,CAAG,CAAC;AAAA,EAAA;AAGjG,GAEAG,KAAeT,IC9FfrhB,KAAeyC;AAAA,EACX,CAACpD,GAAsFqD,MAAQ;AAA9F,QAAApD,IAAAD,GAAE,aAAAsD,GAAW,UAAApD,GAAU,SAAAyX,IAAU,MAAM;AAAA,IAAI,GAAA,YAAAQ,GAAY,mBAAAuK,MAAvDziB,GAA6EsD,IAAApD,EAA7EF,GAA6E,CAA3E,aAAW,YAAU,WAAoB,cAAY;AACpD,UAAMT,IAAYkF,KACZie,IAAY,MAAM;AACpB,YAAM,EAAE,gBAAAviB,EAA2B,IAAAZ,EAAU,IAAI,SAAS;AACnD,aAAAY,EAAe,QAAQ,IAAI+X,CAAU;AAAA,IAAA;AAGhD,IAAAxS,EAAU,MAAM;AACZ,YAAMiF,IAAS+X;AACP,aAAA/X,KAAA,QAAAA,EAAA,SAAS8X,GAAmB,KAAK,MAAM9X,EAAO,OAAO,QAAQ,IAC9D,MAAM;AACT,QAAAA,KAAA,QAAAA,EAAQ;AAAA,MAAW;AAAA,IACvB,GACD,CAACuN,CAAU,CAAC;AAET,UAAAyK,IAAa,CACflhB,MACC;AACD,YAAMkJ,IAAS+X,KACTnQ,IAAS9Q,EAAE;AACjB,UAAIkJ,GAAQ;AACR,cAAMsC,IAAS,MAAM;AAEZ,UAAAtC,EAAA,OAAO,aAAa,EACpB;AAAA,YAAK,CAACF,MACHA,MAAgBM,GAAkB,OAC5BJ,EAAO,OAAO,OAAO,IACrBA,EAAO,OAAO,MAAM;AAAA,UAC9B,EACC,KAAK,MAAM;AACR,YAAAA,EAAO,OAAO,cAAc,wBAAwB,CAAC5D,GAAOC,MAAS;AAKjE,cAJyBzH,EAAU;AAAA,gBAC/B;AAAA,cAAA,KAIOoL,EAAA,OAAO,SAAS,uBAAuB;AAAA,gBAC1C,MAAMA,EAAO;AAAA,gBACb,KAAK4H;AAAA,cAAA,CACR;AAAA,YACL,CACH;AAAA,UAAA,CACJ;AAAA,QAAA;AAEL,QAAA5H,EAAO,UAAUiY,GAAY,cAExBjY,EAAA,SAAS8X,CAAiB,EAC1B,KAAK,MAAM9X,EAAO,OAAO,QAAQ,CAAC,EAClC,KAAKsC,CAAM,IAETA;MAEf;AAAA,IAAA,GAGErJ,IAAU,CAACnC,MAA8C;AACvD,MAAAA,EAAE,QAAQ,YACVA,EAAE,eAAe,GACjBkhB,EAAWlhB,CAAC;AAAA,IAChB;AAIA,WAAA,gBAAAjC,EAAA;AAAA,MAACsY;AAAA,MAAA/V,EAAArC,EAAA;AAAA,QACG,WAAW8D,EAAiBH,GAAW,oBAAoB;AAAA,QAC3D,WAAWO;AAAA,QACX,SAAS,CAACnC,MAAM;AACZ,UAAAiW,EAAQjW,CAAC,GACTkhB,EAAWlhB,CAAC;AAAA,QAChB;AAAA,SACI6B,IAPP;AAAA,QAQG,KAAAF;AAAA,MAAA;AAAA,MAECnD;AAAA,IAAA;AAAA,EAGb;AACJ,GCjFa4iB,KAAsB1f;AAAA,EAC/B,CAAC,EAAE,UAAA2f,IAAW,gCAAgC,WAAAzf,GAAW,UAAApD,EAAA,GAAYmD,MAAQ;AACzE,UAAM7D,IAAYkF,KAEZse,IAAgB1I,GAAQ,MAAM;AAChC,UAAI,CAAC9a;AAAkB,eAAA;AAEjB,YAAA+N,IAAgC/N,EAAU,IAAI,kBAAkB;AAElE,aAAA,CAAC+N,KAAoB,CAACA,EAAiB,oBAA0B,OAE9DA,EAAiB,SAAS;AAAA,IAAA,GAClC,CAAC/N,CAAS,CAAC;AAEd,WAAKwjB,IAKA,gBAAAvjB,EAAA,cAAAsQ,IAAA,EAAO,WAAWgT,GAAU,QAAQC,KACjC,gBAAAvjB,EAAA;AAAA,MAACsT;AAAA,MAAA;AAAA,QACG,WAAWtP,EAAiB,gCAAgCH,CAAS;AAAA,QACrE,KAAAD;AAAA,MAAA;AAAA,MAECnD;AAAA,IAAA,CAET,IAXO;AAAA,EAaf;AACJ,GAEM6S,KAAUrP,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GC1BjBuf,KAAuB,CACzBzjB,GACA3B,GACAqlB,GACAC,GACAC,MAEO5jB,EAAU,SAAS,mBAAmB,EAAE,KAAK,CAAC6jB,OAC/BA,EAAA;AAAA,EACdxlB;AAAA,EACAylB,GAAK,MAAMJ,CAAc;AAAA,GAEtBK,GAAgB/jB,GAAW3B,GAAMslB,MAAO,MAAM;AAAA,IAAKtlB,GAAMulB,CAAO,EAC1E,GAGLI,KAAeP,IC1BTQ,KAAqB,CACvBjkB,GACA3B,GACA6lB,GACAP,GACAC,MACCO,GAAA;AACD,QAAMN,IAAoB,MAAM7jB,EAAU,SAAS,mBAAmB;AAO9D,iBAAA,IAAI,yBAAyB3B,GAAM6lB,CAAiB,GAC1CL,EAAA,kBAAkBxlB,GAAM,MAAM6lB,CAAiB,GAE1D,MAAMH,GAAgB/jB,GAAW3B,GAAMslB,MAAO,MAAM;AAAA,EAAA,IAAKtlB,GAAMulB,CAAO;AACjF,IAEAQ,KAAeH;;;;;;ACrBf,MAAMI,KAAmB,CAACtO,MACf,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,SAASA,CAAK;AAKjD,IAAAtE,KAAN,cAAyB6S,GAAW;AAAA,EAApC,cAAA;AAAA,UAAA,GAAA,SAAA,GAoBmC,KAAA,UAAA;AAAA,EAAA;AAAA,EAE9B,QAAQvO,GAAqB;AACjC,UAAMwO,IAAc,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,gBAAgBxO,GAAO;AAE1F,WAAIwO,IACOA,EAAY,SAEhBxO;AAAA,EACX;AAAA,EAEA,SAAS;AACC,UAAAyO,IAAYH,GAAiB,KAAK,OAAO,IACzC,KAAK,QAAQ,KAAK,OAAO,IACzB,KAAK,SAELthB,IAAM0hB,GAAaD,CAAS;AAC3B,WAAAthB;AAAA,SACNH;AAAA;AAAA,UAECA;AAAA;AAAA,EAEN;AACJ;AA3Ca0O,GACF,SAAS;AAAA,EACZxT;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAgBJ;AAE4BymB,GAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,QAAQ;AAAA,GApBjBlT,GAoBmB,WAAA,WAAA,CAAA;AApBnBA,KAANiT,GAAA;AAAA,EADNE,GAAc,eAAe;AAAA,GACjBnT,EAAA;ACTN,MAAMoT,GAA4C;AAAA,EAGrD,YAAYC,GAAuD;AAC/D,KAAC,KAAK,OAAOA,GAAM,cAAc,IAAI;AAAA,EACzC;AAAA,EAEA,sBAAsBtd,GAAY;AAC9B,UAAM9H,IAAgC8H,EAAM;AAE5C,WAAO,KAAK9H,CAAK,EACZ,OAAO,CAACxB,MAAQ,IAAIA,OAAS,IAAI,EACjC,QAAQ,CAACA,MAAiB,KAAK,IAAIA,OAAuBwB,EAAMxB,EAAK;AAAA,EAC9E;AAAA,EAEA,gBAAgB;AACX,SAAK,KAAa,iBAAiB,kBAAkB,KAAK,qBAAqB;AAAA,EACpF;AAAA,EAEA,mBAAmB;AACd,SAAK,KAAa,oBAAoB,kBAAkB,KAAK,qBAAqB;AAAA,EACvF;AACJ;ACtBO,MAAM6mB,GAAa;AAAA,EAMtB,YAAY1Y,GAAmB;AAHd,SAAA,SAAA,IAIb,KAAK,QAAQA;AAAA,EACjB;AAAA,EAEM,aAAa;AAAA,WAAA8X,GAAA;AAGX,UAFJ,KAAK,SAAU,KAAK,MAAc,aAAa,QAAQ,GAEnD,CAAC,KAAK,QAAQ;AACd,gBAAQ,KAAK,wCAAwC;AACrD;AAAA,MACJ;AAII,UAFC,KAAA,YAAY,KAAK,iBAAiB,WAAW,GAE9C,CAAC,KAAK,WAAW;AACjB,gBAAQ,KAAK,gEAAgE;AAC7E;AAAA,MACJ;AACA,YAAMvd,IAAW,MAAMD,GAAkB,YAAY,KAAK,SAAS;AAG/D,UAFJ,KAAK,OAAOC,EAAS,MAAM,IAAI,KAAK,MAAM,GAEtC,CAAC,KAAK,MAAM;AACJ,gBAAA,KAAK,yCAAyC,KAAK,SAAS;AACpE;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA,EAEA,iBAAiB1I,GAAa;AACpB,UAAAsJ,IAAQ,IAAI,YAA6C,oBAAoB;AAAA,MAC/E,QAAQ,EAAE,KAAAtJ,EAAI;AAAA,MACd,SAAS;AAAA,MACT,UAAU;AAAA,MACV,YAAY;AAAA,IAAA,CACf;AACA,gBAAK,MAAc,cAAcsJ,CAAK,GAEhCA,EAAM,OAAO;AAAA,EACxB;AACJ;ACvCA,MAAMwd,KAAe,wBAERC,KAAgBC;AAAA,EAC3B,CAAoCpT,MAAY;AAC9C,UAAMqT,UAA2BrT,EAAK;AAAA,MAAtC,cAAA;AAAA,cAAA,GAAA,SAAA,GACE,KAAA,wCAA0C;MAAI;AAAA,MAE9C,oBAAoB;AAElB,cAAM,kBAAkB,GAGnB,KAAA,wCAAwB;AAElB,mBAAA5T,KAAQ,KAAK,YAAoB;AAC1C,eAAK,eAAeA,CAAG;AAAA,MAE3B;AAAA,MAMA,eAAeA,GAAa;AACpB,cAAAuQ,IAAW,CAAC7O,GAAYwlB,MAAkB;AACzC,eAAA,qBAAqBlnB,GAAK0B,GAAOwlB,CAAQ;AAAA,QAAA,GAI1C5d,IAAQ,IAAI,YAAYwd,IAAc;AAAA,UAC1C,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,QAAQ,EAAE,KAAA9mB,GAAK,WAAW,IAAO,UAAAuQ,EAAS;AAAA,QAAA,CAC3C;AAED,aAAK,cAAcjH,CAAK,GAEpBA,EAAM,OAAO,aACV,KAAA,kBAAkB,IAAItJ,GAAK;AAAA,UAC9B,aAAcsJ,EAAM,OAAe;AAAA,QAAA,CACpC;AAAA,MAEL;AAAA,MAKA,qBAAqBtJ,GAAa0B,GAAYwlB,GAAe;AAC3D,QAAIxlB,MAAUwlB,MACX,KAAalnB,KAAO0B;AAAA,MAEzB;AAAA,MAEA,uBAAuB;AACrB,mBAAWuI,KAAW,KAAK,kBAAkB,OAAA;AAC3C,UAAAA,EAAQ,YAAY;AAItB,cAAM,qBAAqB;AAAA,MAE7B;AAAA,IACF;AACO,WAAAgd;AAAA,EACT;AACF,GAEaE,KAAuBH;AAAA,EAClC,CAAoCpT,MAAY;AAC9C,UAAMwT,UAA6BxT,EAAK;AAAA,MAAxC,cAAA;AAAA,cAAA,GAAA,SAAA,GACE,KAAA,wCAA0C;MAAI;AAAA,MAE9C,oBAAoB;AAElB,cAAM,kBAAkB,GAGnB,KAAA,wCAAwB;AAElB,mBAAA5T,KAAQ,KAAK,YAAoB;AAC1C,eAAK,gBAAgBA,CAAG;AAAA,MAE5B;AAAA,MAMA,gBAAgBA,GAAa;AACrB,cAAAqnB,IAAW,CAAC/d,MAAe;AACzB,gBAAA,EAAE,QAAAge,EAAW,IAAAhe;AAEf,cAAAge,EAAO,QAAQtnB,GAAK;AACtB,YAAAsJ,EAAM,gBAAgB;AAEtB,kBAAMW,IAAU,KAAK,kBAAkB,IAAIjK,CAAG;AAEtC,YAAAiK,EAAA,UAAU,IAAIqd,EAAO,QAAQ,GAErCA,EAAO,YAAY,IACnBA,EAAO,cAAc,MAAM;AACjB,cAAArd,EAAA,UAAU,OAAOqd,EAAO,QAAQ;AAAA,YAAA,GAGnCA,EAAA,SAAU,KAAatnB,EAAI;AAAA,UACpC;AAAA,QAAA;AAGG,aAAA,iBAAiB8mB,IAAcO,CAAQ,GAEvC,KAAA,kBAAkB,IAAIrnB,GAAK;AAAA,UAC9B,UAAAqnB;AAAA,UACA,+BAAe,IAAI;AAAA,QAAA,CACpB;AAAA,MACH;AAAA,MAKA,oBAAoBrnB,GAAa0B,GAAYwlB,GAAe;AAC1D,YAAI,KAAK,kBAAkB,IAAIlnB,CAAG,GAAG;AACnC,gBAAMiK,IAAU,KAAK,kBAAkB,IAAIjK,CAAG;AAEnC,qBAAAuQ,KAAYtG,EAAQ;AAC7B,YAAAsG,EAAS7O,GAAOwlB,CAAQ;AAAA,QAE5B;AAAA,MACF;AAAA,MAKA,aAAaK,GAAwB;AAC7B,cAAAC,IAAe,MAAM,aAAaD,CAAiB;AAEzD,mBAAW,CAACvnB,GAAKknB,CAAQ,KAAKK,EAAkB;AAC9C,UAAK,KAAK,YAAoB,QAAQ,SAASvnB,CAAG,KAChD,KAAK,oBAAoBA,GAAM,KAAaA,IAAMknB,CAAQ;AAIvD,eAAAM;AAAA,MACT;AAAA,MAEA,uBAAuB;AACrB,mBAAWvd,KAAW,KAAK,kBAAkB,OAAA;AACtC,eAAA,oBAAoB6c,IAAc7c,EAAQ,QAAQ;AAIzD,cAAM,qBAAqB;AAAA,MAE7B;AAAA,IACF;AACO,WAAAmd;AAAA,EACT;AACF;;;;;;AC9Ja,MAAAK,KAAe,CAAoC7T,MAAY;AAC1E,QAAM8T,UAA0B9T,EAAK;AAAA,IAInC,eAAe+T,GAAa;AACpB,eAJsB,KAAA,qBAAA,IACN,KAAA,eAAA,GAKjB,KAAA,iBAAiB,iBAAiB,CAAOre,MAAe2c,GAAA;AAC3D,aAAK,qBAAqB,IACrB,KAAA,gBAEL,MAAM3c,EAAM,OAAO,SACd,KAAA,gBACA,KAAA,qBAAqB,KAAK,iBAAiB;AAAA,MAAA,EACjD;AAAA,IACH;AAAA,EACF;AAfWkd,SAAAA,GAAA;AAAA,IAAR1B,EAAM;AAAA,EAAA,GADH4C,EACK,WAAA,sBAAA,CAAA,GACAlB,GAAA;AAAA,IAAR1B,EAAM;AAAA,EAAA,GAFH4C,EAEK,WAAA,gBAAA,CAAA,GAgBJA;AACT,GCnBaE,KAAW,CAAoChU,MAAY;AACtE,QAAMiU,UAAsBjU,EAAK;AAAA,IAG/B,eAAe+T,GAAa;AACpB,eAHR,KAAA,iCAAiB,OAKV,KAAA,iBAAiB,oBAAoB,CAACre,MAAe;AAClD,cAAAtJ,IAAMsJ,EAAM,OAAO;AACzB,gBAAQ,IAAI,gBAAgB,GAExB,KAAK,WAAW,IAAItJ,CAAG,MACzBsJ,EAAM,OAAO,WAAW,KAAK,WAAW,IAAItJ,CAAG,GAC/CsJ,EAAM,gBAAgB;AAAA,MACxB,CACD;AAAA,IACH;AAAA,IAEA,gBAAgBtJ,GAAa8nB,GAAe;AAClC,cAAA,IAAI,sBAAsB9nB,GAAK8nB,CAAQ,GAC1C,KAAA,WAAW,IAAI9nB,GAAK8nB,CAAQ;AAAA,IACnC;AAAA,EACF;AAEO,SAAAD;AACT,GCzBaE,KAAY,CAAoCnU,MAAY;AACvE,QAAMoU,UAAuBpU,EAAK;AAAA,IAChC,gBAAgB5T,GAAa;AACrB,YAAAsJ,IAAQ,IAAI,YAAY,oBAAoB;AAAA,QAChD,QAAQ,EAAE,KAAAtJ,EAAI;AAAA,QACd,SAAS;AAAA,QACT,UAAU;AAAA,QACV,YAAY;AAAA,MAAA,CACb;AAED,kBAAK,cAAcsJ,CAAK,GAEhBA,EAAM,OAAe;AAAA,IAC/B;AAAA,EACF;AAEO,SAAA0e;AACT,GCzBaC,KAAkB,CAACC,MAAgC;;AAC5D,QAAMC,IAAkC,CAAA;AACxC,SAAID,EAAI,aACCC,EAAA,gBAAgB,GAAGD,EAAI,eAE5BA,EAAI,QACCC,EAAA,WAAW,GAAGD,EAAI,SAEvB5lB,IAAA4lB,EAAI,UAAJ,QAAA5lB,EAAW,SACN6lB,EAAA,kBAAkB,GAAGD,EAAI,MAAM,UAEpC3lB,IAAA2lB,EAAI,UAAJ,QAAA3lB,EAAW,UACN4lB,EAAA,mBAAmB,GAAGD,EAAI,MAAM,WAErC/W,IAAA+W,EAAI,UAAJ,QAAA/W,EAAW,WACNgX,EAAA,oBAAoB,GAAGD,EAAI,MAAM,WAEtCjW,IAAAiW,EAAI,UAAJ,QAAAjW,EAAW,WACNkW,EAAA,oBAAoB,GAAGD,EAAI,MAAM,YAEtC/V,IAAA+V,EAAI,UAAJ,QAAA/V,EAAW,UACNgW,EAAA,mBAAmB,GAAGD,EAAI,MAAM,WAErC9V,IAAA8V,EAAI,UAAJ,QAAA9V,EAAW,SACN+V,EAAA,kBAAkB,GAAGD,EAAI,MAAM,UAEpCE,IAAAF,EAAI,WAAJ,QAAAE,EAAY,WACPD,EAAA,qBAAqB,GAAGD,EAAI,OAAO,YAExCG,IAAAH,EAAI,WAAJ,QAAAG,EAAY,SACPF,EAAA,mBAAmB,GAAGD,EAAI,OAAO,UAEtCI,IAAAJ,EAAI,WAAJ,QAAAI,EAAY,YACPH,EAAA,sBAAsB,GAAGD,EAAI,OAAO,aAEzCK,IAAAL,EAAI,WAAJ,QAAAK,EAAY,SACPJ,EAAA,mBAAmB,GAAGD,EAAI,OAAO,UAEtCM,IAAAN,EAAI,WAAJ,QAAAM,EAAY,cACPL,EAAA,wBAAwB,GAAGD,EAAI,OAAO,eAE3CO,IAAAP,EAAI,WAAJ,QAAAO,EAAY,YACPN,EAAA,sBAAsB,GAAGD,EAAI,OAAO,aAEzCQ,IAAAR,EAAI,kBAAJ,QAAAQ,EAAmB,WACdP,EAAA,4BAA4B,GAAGD,EAAI,cAAc,YAEtDS,KAAAC,IAAAV,EAAI,kBAAJ,gBAAAU,EAAmB,WAAnB,QAAAD,EAA2B,iBAC3BR,EAAK,yCAAyC,GAAGD,EAAI,cAAc,OAAO,kBAE1EW,KAAAC,IAAAZ,EAAI,kBAAJ,gBAAAY,EAAmB,WAAnB,QAAAD,EAA2B,eAC3BV,EAAK,uCAAuC,GAAGD,EAAI,cAAc,OAAO,eAExEA,EAAI,gBACCC,EAAA,mBAAmB,GAAGD,EAAI,gBAE/BA,EAAI,iBACCC,EAAA,oBAAoB,GAAGD,EAAI,iBAEhCA,EAAI,cACCC,EAAA,iBAAiB,GAAGD,EAAI,cAE7BA,EAAI,WACCC,EAAA,cAAc,GAAGD,EAAI,YAE1Ba,IAAAb,EAAI,UAAJ,QAAAa,EAAW,UACNZ,EAAA,kBAAkB,GAAGD,EAAI,MAAM,WAEpCc,IAAAd,EAAI,UAAJ,QAAAc,EAAW,WACNb,EAAA,mBAAmB,GAAGD,EAAI,MAAM,YAErCe,IAAAf,EAAI,UAAJ,QAAAe,EAAW,WACNd,EAAA,mBAAmB,GAAGD,EAAI,MAAM,YAErCgB,IAAAhB,EAAI,UAAJ,QAAAgB,EAAW,UACNf,EAAA,kBAAkB,GAAGD,EAAI,MAAM,UAGpCA,EAAI,6BACAA,EAAI,yBAAyB,OACxBC,EAAA,qBAAqB,GAAGD,EAAI,yBAAyB,OAE1DA,EAAI,yBAAyB,OACxBC,EAAA,qBAAqB,GAAGD,EAAI,yBAAyB,OAE1DA,EAAI,yBAAyB,OACxBC,EAAA,qBAAqB,GAAGD,EAAI,yBAAyB,OAE1DA,EAAI,yBAAyB,OACxBC,EAAA,qBAAqB,GAAGD,EAAI,yBAAyB,OAE1DA,EAAI,yBAAyB,OACxBC,EAAA,qBAAqB,GAAGD,EAAI,yBAAyB,OAE1DA,EAAI,yBAAyB,OACxBC,EAAA,qBAAqB,GAAGD,EAAI,yBAAyB,QAI3DC;AACX;;;;;;ACrFA,MAAMgB,KAAuB,CAAChpB,MAEnB,KAAyBA,KAGvBipB,KAAkB,CAAoCxV,MAAY;AAC3E,QAAMyV,UAA6BlC,GAAqBY,GAAUnU,CAAI,CAAC,EAAE;AAAA,IAiCrE,cAAc;AACJ,eAhCV,KAAA,YAAmB,IA+DnB,KAAA,aAAa,CAAClS,MAAkB;AAC5B,aAAK,UAAUA;AAAA,MAAA,GA/Bf,KAAK,SAAS,WACd,KAAK,QAAQ,QACb,KAAK,WAAW,GAChB,KAAK,UAAU,GAEf,KAAK,SAAS,GACd,KAAK,cAAc,MACnB,KAAK,cAAc,IACnB,KAAK,UAAU;IACnB;AAAA,IAiBA,WAAW,UAAU;AACV,aAAA,CAAC,WAAW,YAAY;AAAA,IACnC;AAAA,IAMA,cAAcF,GAA+B;AACzC,MAAIA,EAAM,YACN,KAAK,UAAUA,EAAM,UAGpB,KAAA;AAAA,QACD,IAAI,YAAY,kBAAkB;AAAA,UAC9B,SAAS;AAAA,UACT,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,QAAQA;AAAA,QAAA,CACX;AAAA,MAAA;AAAA,IAET;AAAA,IAEA,oBAAoB;AAChB,YAAM,kBAAkB,GACnB,KAAA,YAAY,KAAK,gBAAgB,WAAW,GAC7C,KAAK,aACL,QAAQ,IAAI;AAAA,QACRiH,GAAkB,YAAY,KAAK,SAAS;AAAA,QAC5C,KAAK,UAAU,SAAS,mBAAmB;AAAA,MAAA,CAC9C,EAAE,KAAK,CAAC6gB,MAAW;AAChB,cAAM5gB,IAAW4gB,EAAO,IAClB/hB,IAAW+hB,EAAO,IAElBC,IAAgB7gB,EAAS,MAAM,IAAI,KAAK,UAAU,EAAE;AAC1D,YAAI6gB,GAAe;AACf,eAAK,cAAcrgB,GAAaqgB,GAAe,KAAK,MAAM,GACrD,KAAA,cAAcA,EAAc,WAAW,YACvC,KAAA,WAAWA,EAAc,WAAW,SACpC,KAAA,UAAUA,EAAc,WAAW,QACnC,KAAA,cAAcA,EAAc,WAAW,UAAU,GAEtD,KAAK,UAAU;AAAA,YACX7gB,EAAS,OAAO;AAAA,cACZ;AAAA,cACA,CAACY,GAAOC,MAAS;;AACb,gBAAI,KAAK,aAAWjH,IAAAiH,EAAK,SAAL,gBAAAjH,EAAW,QACtB,KAAA,cAAciH,EAAK,KAAK,WAAW,YACnC,KAAA,cAAcggB,EAAc,WAAW,UAAU;AAAA,cAE9D;AAAA,YACJ;AAAA,UAAA,GAEJ,KAAK,UAAU;AAAA,YACX7gB,EAAS,OAAO;AAAA,cACZ;AAAA,cACA,CAACY,GAAOC,MAAS;;AACb,gBAAI,KAAK,aAAWjH,IAAAiH,EAAK,SAAL,gBAAAjH,EAAW,QACtB,KAAA,WAAWiH,EAAK,KAAK,WAAW;AAAA,cAE7C;AAAA,YACJ;AAAA,UAAA,GAEJ,KAAK,UAAU;AAAA,YACXb,EAAS,OAAO;AAAA,cACZ;AAAA,cACA,CAACY,GAAOC,MAAS;;AACb,gBAAI,KAAK,aAAWjH,IAAAiH,EAAK,SAAL,gBAAAjH,EAAW,QACtB,KAAA,UAAUiH,EAAK,KAAK,WAAW;AAAA,cAE5C;AAAA,YACJ;AAAA,UAAA;AAKJ,gBAAMigB,IAAUD,EAAc,MAAM,KAAK,SAAU;AAInD,cAHK,KAAA,UAAU,KAAKC,CAAO,GAGvB,CAACjiB,GAAU;AACH,oBAAA;AAAA,cACJ;AAAA,YAAA;AAEJ;AAAA,UACJ;AAEA,gBAAMkiB,IAAeN,GAAqB,KAAK,YAAY,IAAI;AAG3D,cAAA,eAAe,IAAIM,CAAY;AAC/B;AAGJ,gBAAMC,IAASniB,EAAS,aAAa,KAAK,YAAY,IAAI;AAC1D,cAAI,CAACmiB,GAAQ;AACT,oBAAQ,KAAK,iDAAiD;AAC9D;AAAA,UACJ;AAEA,iBAAOA,EAAO,EAAE,KAAK,CAACjoB,MAAgB;AAClC,YAAK,eAAe,IAAIgoB,CAAY,KACjB,eAAA,OAAOA,GAAchoB,EAAO,OAAO;AAAA,UACtD,CACH;AAAA,QACL;AAAA,MAAA,CACH;AAAA,IAET;AAAA,IAEA,uBAA6B;AACpB,WAAA,UAAU,QAAQ,CAAC2H,MAAgB;AACxB,QAAAA;MAAA,CACf;AAAA,IACL;AAAA,IAQA,oBAAoB;AACZ,aAAC,KAAK,WAIH6e,GAAgB,KAAK,QAAQ,IAHzB;IAIf;AAAA,IAEA,SAAS;AACC,YAAA0B,IAAS,MAAM,UAEfC,IAAgB,KAAK,qBAErBplB,IAAQQ;AAAAA;AAAAA;AAAAA,cAGZ,OAAO,QAAQ4kB,CAAa,EAAE,IAAI,CAAC,CAAC5pB,GAAK0B,CAAK,MACrC3B;AAAAA,gBACP8pB,GAAU,GAAG7pB,MAAQ0B,IAAQ;AAAA,aAEhC;AAAA;AAAA;AAAA;AAKM,aAAAsD;AAAAA;AAAAA;AAAAA,sBAGG,KAAK,QAAQ,QAAQ;AAAA,wBAE1B,KAAK,QAAQ,QAAQ,YAAY,SAC5B,mBACA,uBAAuB,KAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,UAMhDR,KAASmlB;AAAA;AAAA,IAEX;AAAA,EACJ;AAzMY,SAAAnD,EAAA;AAAA,IADPC,EAAS,EAAE,MAAM,QAAQ;AAAA,EAAA,GAtBxB4C,EAuBM,WAAA,UAAA,CAAA,GAEA7C,EAAA;AAAA,IADPC,EAAS,EAAE,MAAM,QAAQ;AAAA,EAAA,GAxBxB4C,EAyBM,WAAA,UAAA,CAAA,GAEA7C,EAAA;AAAA,IADPC,EAAS,EAAE,MAAM,QAAQ;AAAA,EAAA,GA1BxB4C,EA2BM,WAAA,SAAA,CAAA,GAEA7C,EAAA;AAAA,IADPC,EAAS,EAAE,MAAM,QAAQ;AAAA,EAAA,GA5BxB4C,EA6BM,WAAA,YAAA,CAAA,GAEA7C,EAAA;AAAA,IADPC,EAAS,EAAE,MAAM,QAAQ;AAAA,EAAA,GA9BxB4C,EA+BM,WAAA,WAAA,CAAA,GAgBA7C,EAAA;AAAA,IADP1B,EAAM;AAAA,EAAA,GA9CLuE,EA+CM,WAAA,UAAA,CAAA,GAGA7C,EAAA;AAAA,IADP1B,EAAM;AAAA,EAAA,GAjDLuE,EAkDM,WAAA,eAAA,CAAA,GAGA7C,EAAA;AAAA,IADP1B,EAAM;AAAA,EAAA,GApDLuE,EAqDM,WAAA,eAAA,CAAA,GAGA7C,EAAA;AAAA,IADP1B,EAAM;AAAA,EAAA,GAvDLuE,EAwDM,WAAA,YAAA,CAAA,GAGA7C,EAAA;AAAA,IADP1B,EAAM;AAAA,EAAA,GA1DLuE,EA2DM,WAAA,WAAA,CAAA,GAuKLA;AACX;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/utils/animations.ts","../src/utils/browser.ts","../src/utils/convert-to-string-attributes.ts","../src/utils/create-empty-component.tsx","../src/utils/embedded-link-mapper.tsx","../src/utils/filter-css-props.ts","../src/utils/generic-hash-link.tsx","../src/utils/heading-styles.ts","../src/utils/process-html-string.tsx","../src/utils/render-instructions.tsx","../src/components/anchor-link.tsx","../src/components/button.tsx","../src/components/checkbox.tsx","../src/contexts/index.ts","../src/hooks/use-component-descriptor.ts","../src/hooks/use-container.ts","../src/hooks/use-action.ts","../src/hooks/use-component-node.ts","../src/hooks/use-is-mounted.ts","../src/hooks/use-component-platform.ts","../src/hooks/use-children.ts","../src/hooks/use-columns.ts","../src/hooks/use-component.ts","../src/hooks/use-context.ts","../src/hooks/use-conversation.ts","../src/hooks/use-dispatch.ts","../src/hooks/use-event-listener.ts","../src/hooks/use-events.ts","../src/hooks/use-is-tabbing.ts","../src/hooks/use-key-press.ts","../src/hooks/use-layout.ts","../src/hooks/use-previous.ts","../src/hooks/use-properties.ts","../src/hooks/use-render-state.ts","../src/hooks/use-router.ts","../src/hooks/use-route-data.ts","../src/hooks/use-scroll.ts","../src/hooks/use-settings.ts","../src/hooks/use-toggle.ts","../src/hooks/use-transition-end.ts","../src/hooks/use-widget-event.ts","../src/hooks/use-unique-menu.ts","../src/components/text.tsx","../src/styles.ts","../src/components/portal.tsx","../src/components/symbol-badge.tsx","../src/components/typography.tsx","../src/components/drawer/drawer.tsx","../src/components/dropdown/use-position.tsx","../src/components/dropdown/dropdown.tsx","../src/components/empty.tsx","../src/components/grid.tsx","../src/components/html.tsx","../src/components/icon.tsx","../src/components/input.tsx","../src/components/list.tsx","../src/components/paragraph.tsx","../src/components/item-list.tsx","../src/components/item-tree.tsx","../src/components/route-link.tsx","../src/components/link.tsx","../src/components/overlay.tsx","../src/components/loader.tsx","../src/components/zoomable-img.tsx","../src/components/lightbox.tsx","../src/components/modal/modal.tsx","../src/components/modal/confirm.tsx","../src/components/not-found.tsx","../src/components/tab-stop.tsx","../src/components/text-link.tsx","../src/components/timestamp.tsx","../src/components/tooltip.tsx","../src/components/transition-component.tsx","../src/components/widget-link.tsx","../src/components/widget-overlay-outlet.tsx","../src/create-react-component.ts","../src/create-web-component.ts","../src/components/ui-typography.ts","../src/controllers/node-connector.ts","../src/data-provider.ts","../src/mixins/context.ts","../src/mixins/pending-state.ts","../src/mixins/provider.ts","../src/mixins/requester.ts","../src/utils/map-context-style.ts","../src/mixins/widget-component.ts"],"sourcesContent":["import { css } from '@emotion/react';\nimport { TransitionStatus } from 'react-transition-group/Transition';\n\nexport type CssTransitions = {\n [key: string]: any;\n};\n\nexport type TransitionStateSettings = {\n transitionKeys: string;\n duration?: number;\n easing?: string;\n};\n\nconst inEnteringState = (status?: TransitionStatus) => {\n return status === 'entering' || status === 'entered';\n};\nconst inExitingState = (status?: TransitionStatus) => {\n return status === 'exiting' || status === 'exited';\n};\n\n/**\n * List of basic transition presets\n */\nconst partials: any = {\n fade: {\n in: 'opacity: 1;',\n out: 'opacity: 0;',\n },\n 'slide-left': {\n in: 'transform: translateX(0);',\n out: 'transform: translateX(-100%);',\n },\n 'slide-right': {\n in: 'transform: translateX(0);',\n out: 'transform: translateX(100%);',\n },\n 'slide-up': {\n in: 'transform: translateY(0);',\n out: 'transform: translateY(100%);',\n },\n 'slide-down': {\n in: 'transform: translateY(0);',\n out: 'transform: translateY(-100%);',\n },\n scale: {\n in: 'transform: scale(1);',\n out: 'transform: scale(0);',\n },\n};\n\nconst transformTransitions = ['slide-up', 'slide-down', 'slide-left', 'slide-right', 'scale'];\n\nexport const transitionComposer = {\n compose: (\n status: TransitionStatus = 'exited',\n definitions: { enter: TransitionStateSettings; exit: TransitionStateSettings }\n ) => {\n const { enter, exit } = definitions;\n const inKeys = enter.transitionKeys.split(' ');\n\n const transitionProperty =\n transformTransitions.indexOf(inKeys[0]) > -1 ? 'transform' : 'opacity';\n\n if (inEnteringState(status)) {\n if (inKeys && inKeys.length > 0) {\n return css`\n ${inKeys &&\n inKeys.length > 0 &&\n inKeys.map((key: any) => (partials[key] ? partials[key].in : ''))}\n transition: ${transitionProperty} ${enter.duration}ms ${enter.easing};\n `;\n }\n return '';\n }\n\n const inBase =\n inKeys &&\n inKeys.length > 0 &&\n css`\n ${inKeys.map((key: any) => (partials[key] ? partials[key].out : ''))}\n `;\n\n if (inExitingState(status)) {\n const outKeys = exit.transitionKeys.split(' ');\n if (outKeys && outKeys.length > 0 && status === 'exiting') {\n return css`\n ${inBase};\n ${outKeys.map((key: any) => (partials[key] ? partials[key].out : ''))}\n transition: ${transitionProperty} ${exit.duration}ms ${exit.easing};\n `;\n }\n /**\n * When a component is mounted, it starts with the 'exited' state.\n * So instead of forcing the component that utilizes this function to add the original state\n * of the to-be-animated property, we apply the out-state values of the entering transitions.\n */\n return inBase;\n }\n },\n composeViewTransition: (\n status: TransitionStatus,\n type: string,\n direction?: 'forth' | 'back'\n ) => {\n if (type === 'slide') {\n return transitionComposer.compose(status, {\n enter: {\n transitionKeys: direction === 'forth' ? 'slide-right' : 'slide-left',\n duration: 500,\n },\n exit: {\n transitionKeys: direction === 'forth' ? 'slide-left' : 'slide-right',\n duration: 500,\n },\n });\n }\n if (type === 'fade') {\n return transitionComposer.compose(status, {\n enter: {\n transitionKeys: 'fade',\n duration: 500,\n },\n exit: {\n transitionKeys: 'fade',\n duration: 500,\n },\n });\n }\n },\n get: (title: string) => {\n return partials[title];\n },\n};\n","export enum Browsers {\n Opera = 'opera',\n Chrome = 'chrome',\n Firefox = 'firefox',\n Safari = 'safari',\n Edge = 'edge',\n EdgeChromium = 'edge-chromium',\n Blink = 'blink',\n IE = 'internet-explorer',\n}\n\nexport default (): Browsers | void => {\n const {\n opr,\n opera,\n InstallTrigger,\n HTMLElement,\n safari,\n documentMode,\n StyleMedia,\n chrome,\n CSS,\n }: any = window;\n // Opera 8.0+\n const isOpera = (!!opr && !!opr.addons) || !!opera || navigator.userAgent.indexOf(' OPR/') >= 0;\n if (isOpera) {\n return Browsers.Opera;\n }\n\n // Firefox 1.0+\n if (InstallTrigger) {\n return Browsers.Firefox;\n }\n\n // Safari 3.0+ '[object HTMLElementConstructor]'\n const safariCheck = ((p: any) => {\n return p.toString() === '[object SafariRemoteNotification]';\n })(!safari || (typeof safari !== 'undefined' && safari.pushNotification));\n if (/constructor/i.test(HTMLElement) || safariCheck) {\n return Browsers.Safari;\n }\n\n // Internet Explorer 6-11\n const isIE = /*@cc_on!@*/ false || !!documentMode;\n if (isIE) {\n return Browsers.IE;\n }\n\n // Edge 20+\n if (!isIE && !!StyleMedia) {\n return Browsers.Edge;\n }\n\n // Chrome 1 - 79\n const isChrome = !!chrome && (!!chrome.webstore || !!chrome.runtime);\n if (isChrome) {\n return Browsers.Chrome;\n }\n\n // Edge (based on chromium) detection\n if (isChrome && navigator.userAgent.indexOf('Edg') !== -1) {\n return Browsers.EdgeChromium;\n }\n\n if ((isChrome || isOpera) && !!CSS) {\n return Browsers.Blink;\n }\n};\n","import { kebabCase } from '@telia-ace/widget-utilities';\n\nconst types = ['string', 'number'];\n\nexport default (props: any): object => {\n return Object.keys(props).reduce((result: { [key: string]: string }, key: string) => {\n const value = typeof props[key] === 'undefined' ? '' : props[key];\n const type = typeof value;\n if (types.indexOf(type) > -1) {\n const sub = key.substring(0, 5);\n if (sub === 'data-' || sub === 'aria-') {\n result[kebabCase(key)] = value.toString();\n } else if (key.substring(0, 4) !== 'css-') {\n result[key] = value.toString();\n }\n } else {\n result[key] = value;\n }\n return result;\n }, {});\n};\n","import { Container } from '@webprovisions/platform';\nimport React from 'react';\nimport { Empty } from '../components';\n\nconst createEmptyComponent = (container: Container, props: any) => {\n if (container.get('seoConfiguration')) {\n return <Empty {...props} />;\n }\n return null;\n};\n\nexport default createEmptyComponent;\n","import { Container, Implementation } from '@webprovisions/platform';\nimport React from 'react';\nimport { AnchorLink, WidgetLink } from '../components';\n\n// Determine if href starts with a hashtag\nconst isAnchorLink = (href: string) => {\n const re = new RegExp('^#', 'i');\n const match = re.test(href);\n\n return match;\n};\n\nconst embeddedLinkMapper =\n (container: Container) =>\n ({ children, ...props }: any) => {\n const {\n implementation,\n name: currentWidgetName,\n }: { implementation: Implementation & { bindings: [] }; name: string } =\n container.get('$widget');\n\n const { href = '' } = props;\n\n if (isAnchorLink(href)) {\n return (\n <AnchorLink smooth to={href}>\n {children}\n </AnchorLink>\n );\n }\n\n const escapedBindings = implementation.bindings\n .map((binding: string) => binding.replace(/\\./g, '\\\\.'))\n .join('|');\n const regexp = new RegExp(`^((http[s]?:)?\\/\\/)?(${escapedBindings})\\/([^\\\\s]+)`);\n\n const expArray = regexp.exec(href);\n\n if (expArray && expArray.length >= 4) {\n const targetWidgetName = expArray[4];\n const targetWidget = implementation.widgets.get(targetWidgetName);\n\n // blob links should not be treated as a widget link\n if (\n targetWidget &&\n !targetWidgetName.startsWith('blob?') &&\n !targetWidgetName.startsWith(currentWidgetName)\n ) {\n return <WidgetLink widgetName={targetWidgetName}>{children}</WidgetLink>;\n }\n }\n\n return <a {...props}>{children}</a>;\n };\n\nexport default embeddedLinkMapper;\n","import { css } from '@emotion/react';\n\nconst filterCssProps = (props: any) => {\n const cssProps: { [key: string]: any } = {};\n\n Object.keys(props).forEach((key) => {\n if (key.indexOf('css-') > -1) {\n cssProps[key] = props[key];\n }\n });\n\n return cssProps;\n};\n\ntype FilterCssPropsStyle = { [key: string]: any };\nexport const filterCssPropsStyle = (p: FilterCssPropsStyle) => {\n let styleString = '';\n Object.keys(filterCssProps(p)).forEach((key) => {\n if (key.indexOf('css-') > -1) {\n styleString += `${key.replace('css-', '')}:${p[key]};`;\n }\n });\n return css`\n ${styleString}\n `;\n};\n\nexport default filterCssProps;\n","import React from 'react';\n\nexport type Props = Merge<\n React.ComponentProps<'a'>,\n {\n disabled?: string;\n to?: string;\n smooth?: boolean;\n scroll?: Function;\n }\n>;\n\nexport const genericHashLink = (props: Props, As: any) => {\n let hashFragment = '';\n\n const reset = () => {\n hashFragment = '';\n };\n\n const getElementAndScroll = (scrollFunction: Function) => {\n const element = document.getElementById(hashFragment);\n if (element !== null) {\n scrollFunction(element);\n reset();\n return true;\n }\n return false;\n };\n\n const handleClick = (e: any) => {\n e.preventDefault();\n reset();\n if (props.onClick) props.onClick(e);\n\n // try to get hash fragment\n if (typeof props.to === 'string') {\n hashFragment = props.to.split('#').slice(1).join('#');\n }\n // if hash fragment is present\n if (hashFragment !== '') {\n getElementAndScroll(\n props.scroll ||\n ((el: any) =>\n props.smooth\n ? el.scrollIntoView({ behavior: 'smooth' })\n : el.scrollIntoView())\n );\n }\n return false;\n };\n const { scroll, smooth, to, ...filteredProps } = props;\n\n if (As === 'a') {\n filteredProps.href = 'javascript:;';\n }\n\n return (\n <As {...filteredProps} onClick={handleClick}>\n {props.children}\n </As>\n );\n};\n","import { css, Theme } from '@emotion/react';\n\nexport const headingElement = (p: { theme: Theme }) => (element: string, style: any) => {\n let defaultTag: string = element;\n let prefix = '';\n\n if (['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(element)) {\n defaultTag = element;\n } else {\n const match = element.match(/h1|h2|h3|h4|h5|h6/);\n if (match?.[0]) {\n defaultTag = match[0];\n const [pre] = element.split(defaultTag);\n prefix = pre;\n }\n }\n\n const renderTag = (element: string, pre: string, mapping: { [key: string]: string }) => {\n if (mapping[element]) {\n return `${pre}${mapping[element]}`;\n }\n return `${pre}${element}`;\n };\n\n const tag = renderTag(defaultTag, prefix, p.theme.typographyVariantMapping || {});\n\n return css`\n ${tag} {\n ${style}\n }\n `;\n};\n","import convert from 'htmr';\n\n/**\n * Converts a html chunk to managed React nodes.\n */\nexport default function parseHtmlString(html: any, instruction: any) {\n if (instruction) {\n return convert(html, instruction);\n }\n return convert(html);\n}\n","import { Container } from '@webprovisions/platform';\nimport React from 'react';\nimport { Lightbox } from '../components';\nimport embeddedLinkMapper from './embedded-link-mapper';\n\nexport const imageLightboxRenderer =\n (htmlBody: string) =>\n (\n attrs: React.DetailedHTMLProps<React.HtmlHTMLAttributes<HTMLImageElement>, HTMLImageElement>\n ) =>\n <Lightbox attrs={attrs} htmlBody={htmlBody} />;\n\nexport const defaultRenderInstructions = (container: Container, htmlBody: string) => {\n return {\n transform: {\n a: embeddedLinkMapper(container),\n img: imageLightboxRenderer(htmlBody),\n },\n };\n};\n","import React from 'react';\nimport { genericHashLink, GenericHashLinkProps } from '../utils';\n\nconst AnchorLink: React.FC<GenericHashLinkProps> = (props) => {\n return genericHashLink(props, 'a');\n};\n\nexport default AnchorLink;\n","import styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport { convertToStringAttributes } from '../utils';\n\nexport type Props = React.ComponentProps<'button'>;\n\nexport default forwardRef<HTMLButtonElement, Props>(({ className, children, ...other }, ref) => {\n return (\n <StyledButton\n type=\"button\"\n className={appendClassNames(className, 'humany-button')}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {children}\n </StyledButton>\n );\n});\n\nconst StyledButton = styled.button`\n -webkit-appearance: button;\n text-transform: none;\n overflow: visible;\n outline: none;\n border: none;\n background-color: transparent;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n line-height: normal;\n margin: 0;\n padding: 0;\n`;\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { convertToStringAttributes } from '../utils';\n\nexport type Props = Merge<\n React.ComponentProps<'input'>,\n {\n onChange?: (value: string, checked: boolean) => void;\n onEnter?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n }\n>;\n\nconst Checkbox: React.FC<Props> = ({\n onChange = () => {},\n onEnter = () => {},\n className,\n ...other\n}) => {\n return (\n <input\n className={appendClassNames(className, 'humany-checkbox')}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n onEnter(e);\n }\n }}\n onChange={(e) => onChange(e.target.value, e.currentTarget.checked)}\n {...convertToStringAttributes(other)}\n />\n );\n};\n\nexport default Checkbox;\n","import { ComponentDescriptor, ComponentNodeProperties } from '@telia-ace/widget-core';\nimport { RoutingService } from '@telia-ace/widget-routing';\nimport { Container } from '@webprovisions/platform';\nimport { createContext } from 'react';\n\nexport const ContainerContext = createContext<Container>(new Container());\n\nexport const ColumnContext = createContext<number>(1);\n\nexport const ComponentNodeContext = createContext<ComponentDescriptor>({\n id: '',\n type: '',\n name: '',\n branch: '',\n});\n\nexport const ComponentPropertyContext = createContext<ComponentNodeProperties>({});\n\nexport const RoutingContext = createContext<RoutingService | null>(null);\n\nexport const ConversationContext = createContext<{ id: string } | null>(null);\n","import { useContext } from 'react';\nimport { ComponentNodeContext } from '../contexts';\n\nconst useComponentDescriptor = () => useContext(ComponentNodeContext);\n\nexport default useComponentDescriptor;\n","import { useContext } from 'react';\nimport { ContainerContext } from '../contexts';\n\nconst useContainer = () => useContext(ContainerContext);\n\nexport default useContainer;\n","import { ActionResolver } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport useComponentDescriptor from './use-component-descriptor';\nimport useContainer from './use-container';\n\nexport type Action = (action: string, value?: any) => void;\n\nexport const useAction = (passedOrigin?: string, passedContainer?: Container): Action => {\n const origin = useComponentDescriptor().id;\n const container = useContainer();\n return (action: string, value?: any) => {\n (passedContainer || container)\n .getAsync('actionResolver')\n .then((resolver: ActionResolver) => {\n resolver.action(passedOrigin || origin, action, value);\n });\n };\n};\n\nexport default useAction;\n","import { ComponentNode } from '@telia-ace/widget-core';\nimport { useContext, useEffect, useState } from 'react';\nimport { useComponentPlatform } from '.';\nimport { ComponentNodeContext } from '../contexts';\n\n/**\n * Provides the `ComponentNode` for the current context.\n */\nconst useComponentNode = (id?: string) => {\n const descriptor = useContext(ComponentNodeContext);\n const components = useComponentPlatform();\n const [node, setNode] = useState<ComponentNode>();\n\n useEffect(() => {\n if ((id || descriptor.id) && components) {\n const node = components.nodes.get(id || descriptor.id);\n setNode(node);\n }\n }, [id, descriptor.id, components]);\n\n return node;\n};\n\nexport default useComponentNode;\n","import { useEffect, useRef } from 'react';\n\nconst useIsMounted = () => {\n const isMounted = useRef(false);\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n};\n\nexport default useIsMounted;\n","import { ComponentPlatform } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { useEffect, useState } from 'react';\nimport useContainer from './use-container';\nimport useIsMounted from './use-is-mounted';\n\nconst useComponentPlatform = (passedContainer?: Container): ComponentPlatform | null => {\n const container = useContainer();\n const [componentPlatform, setComponentPlatform] = useState<ComponentPlatform | null>(null);\n const isMounted = useIsMounted();\n\n useEffect(() => {\n ComponentPlatform.getInstance(passedContainer || container).then((platform) => {\n if (isMounted.current) {\n setComponentPlatform(platform);\n }\n });\n }, [isMounted]);\n\n return componentPlatform;\n};\n\nexport default useComponentPlatform;\n","import {\n asDescriptor,\n ComponentDescriptor,\n ComponentNode,\n createEventSubscriber,\n} from '@telia-ace/widget-core';\nimport { useCallback, useEffect, useState } from 'react';\nimport useComponentNode from './use-component-node';\nimport useComponentPlatform from './use-component-platform';\nimport useIsMounted from './use-is-mounted';\n\nexport type SetPropertiesAction<T> = (key: string, value: Partial<T>) => void;\n\nconst useChildren = (): ComponentDescriptor[] => {\n const node = useComponentNode();\n const components = useComponentPlatform();\n const [children, setChildren] = useState<ComponentDescriptor[]>([]);\n const isMounted = useIsMounted();\n\n const updateChildren = useCallback(\n (node: ComponentNode) => {\n if (components && isMounted.current && node) {\n const branch = components.getBranch(node);\n const children = node.getChildren(branch).map((child) => asDescriptor(child));\n setChildren(children);\n }\n },\n [isMounted, components, setChildren, node]\n );\n\n useEffect(() => {\n if (node) {\n updateChildren(node);\n }\n }, [node, components]);\n\n useEffect(() => {\n if (components) {\n const [subscribe, unsubscribe] = createEventSubscriber(components.events);\n\n subscribe('components:set-layout', (event, data) => {\n if (node === data.node.parent || data.node.parent === components.nodes.root) {\n updateChildren(data.node.parent);\n }\n });\n subscribe('components:node-appended', (event, data) => {\n if (node === data.node.parent || data.node.parent === components.nodes.root) {\n updateChildren(data.node.parent);\n }\n });\n subscribe('components:node-removed', (event, { parentNode }) => {\n if (parentNode === node || parentNode === components.nodes.root) {\n updateChildren(parentNode);\n }\n });\n\n return () => {\n unsubscribe();\n };\n }\n }, [node, components, updateChildren]);\n\n return children;\n};\n\nexport default useChildren;\n","import { useContext } from 'react';\nimport { ColumnContext } from '../contexts';\n\nconst useColumns = () => useContext(ColumnContext);\n\nexport default useColumns;\n","import { ComponentResolver } from '@telia-ace/widget-core';\nimport { Container, EventSubscriptionCancellation } from '@webprovisions/platform';\nimport { useEffect, useState } from 'react';\nimport useComponentDescriptor from './use-component-descriptor';\nimport useContainer from './use-container';\nimport useIsMounted from './use-is-mounted';\n\nconst useComponent = (passedType?: string, passedContainer?: Container): void | any | null => {\n const descriptor = useComponentDescriptor();\n const container = useContainer();\n const [component, setComponent] = useState<any | null>(undefined);\n const isMounted = useIsMounted();\n const type = passedType || descriptor.type || '';\n\n useEffect(() => {\n if (type) {\n let unsubscribe: EventSubscriptionCancellation;\n (passedContainer || container)\n .getAsync('componentResolver')\n .then((resolver: ComponentResolver) => {\n if (isMounted.current) {\n const component = resolver.getComponent(type);\n setComponent(component);\n }\n\n unsubscribe = resolver.registerResolver(type, (component) => {\n if (isMounted.current) {\n setComponent(component);\n }\n });\n });\n\n return () => {\n if (unsubscribe) {\n unsubscribe();\n }\n };\n }\n }, [isMounted, type, passedContainer, container]);\n\n return component;\n};\n\nexport default useComponent;\n","import { ComponentNodeContext } from '@telia-ace/widget-core';\nimport { useEffect, useState } from 'react';\nimport useComponentNode from './use-component-node';\nimport useComponentPlatform from './use-component-platform';\nimport useIsMounted from './use-is-mounted';\n\nconst useContext = <T extends ComponentNodeContext>(id?: string): T => {\n const node = useComponentNode(id);\n const components = useComponentPlatform();\n const [context, setContext] = useState<ComponentNodeContext>({});\n const isMounted = useIsMounted();\n\n useEffect(() => {\n if (node && isMounted.current) {\n setContext(node.attributes.context);\n }\n }, [isMounted, node]);\n\n useEffect(() => {\n if (components) {\n const unsubscribe = components.events.subscribe(\n 'components:context-changed',\n (event, data) => {\n if (node === data.node && isMounted.current) {\n setContext(data.node.attributes.context);\n }\n }\n );\n\n return () => {\n unsubscribe();\n };\n }\n }, [isMounted, components, node]);\n\n return <T>context;\n};\n\nexport default useContext;\n","import { useContext } from 'react';\nimport { ConversationContext } from '../contexts';\n\nconst useConversation = () => useContext(ConversationContext);\n\nexport default useConversation;\n","import { ActionsController, ComponentQuery } from '@telia-ace/widget-core';\nimport { uuid } from '@telia-ace/widget-utilities';\nimport { useEffect, useState } from 'react';\nimport useComponentDescriptor from './use-component-descriptor';\nimport useComponentPlatform from './use-component-platform';\n\nexport type DispatchAction = (key: string, data?: any) => Promise<any>;\n\ntype QueueEntry = {\n resolve: (value?: any) => void;\n reject: (reason?: any) => void;\n key: string;\n data: any;\n};\n\nconst useDispatch = (): DispatchAction => {\n const components = useComponentPlatform();\n const descriptor = useComponentDescriptor();\n const [queue, setQueue] = useState<QueueEntry[] | null>([]);\n const [actions, setActions] = useState<ActionsController>();\n\n useEffect(() => {\n if (components && descriptor) {\n const component = new ComponentQuery(components).withId(descriptor.id);\n const actions = components.actions(component, descriptor.type || uuid());\n\n setActions(actions);\n\n // process the queue and set it to null\n if (queue !== null) {\n queue.forEach((item) => {\n actions\n .dispatch(item.key, item.data)\n .then((value) => item.resolve(value))\n .catch((reason) => item.reject(reason));\n });\n setQueue(null);\n }\n }\n }, [components, descriptor.id]);\n\n return (key, data?) => {\n if (queue !== null) {\n // if queue is available the actions controller is not yet created\n return new Promise((resolve, reject) => {\n queue.push({\n key,\n data,\n resolve,\n reject,\n });\n });\n }\n return actions!.dispatch(key, data);\n };\n};\n\nexport default useDispatch;\n","import { useEffect, useRef } from 'react';\n\nexport default (\n eventName: string,\n handler: Function,\n element: HTMLElement | Window = window,\n condition: () => boolean = () => true\n) => {\n const savedHandler = useRef<Function>(() => {});\n\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element && condition();\n if (!isSupported) return;\n\n const eventListener: EventListener = (event) => savedHandler.current(event);\n\n element.addEventListener(eventName, eventListener);\n\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n};\n","import { Container, EventManager, Widget } from '@webprovisions/platform';\nimport useContainer from './use-container';\n\nconst useEvents = (passedContainer?: Container): EventManager => {\n const container = useContainer();\n const { events }: Widget = (passedContainer || container).get('$widget');\n return events;\n};\n\nexport default useEvents;\n","import { useEffect, useState } from 'react';\n\nconst useIsTabbing = () => {\n const [isTabbing, setIsTabbing] = useState(false);\n\n useEffect(() => {\n // When a click occurs, set isTabbing false.\n const handleClick = () => {\n setIsTabbing(false);\n };\n\n // When a tab occurs, set isTabbing true.\n const handleKeydown = (e: KeyboardEvent) => {\n const isTabEvent = e.keyCode === 9;\n if (isTabEvent) {\n setIsTabbing(true);\n }\n };\n\n window.addEventListener('keydown', handleKeydown);\n window.addEventListener('click', handleClick);\n return () => {\n window.removeEventListener('keydown', handleKeydown);\n window.removeEventListener('click', handleClick);\n };\n }, []);\n\n return isTabbing;\n};\n\nexport default useIsTabbing;\n","import { useCallback, useState } from 'react';\nimport useEventListener from './use-event-listener';\n\nconst useKeyPress = (targetKey: string, action?: (event: KeyboardEvent) => void) => {\n // State for keeping track of whether key is pressed\n const [keyPressed, setKeyPressed] = useState(false);\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n const { key } = event;\n if (key === targetKey) {\n setKeyPressed(true);\n\n if (action) {\n action(event);\n }\n }\n },\n [setKeyPressed, action]\n );\n\n const onKeyUp = useCallback(\n ({ key }: KeyboardEvent) => {\n if (key === targetKey) {\n setKeyPressed(false);\n }\n },\n [setKeyPressed]\n );\n\n useEventListener('keydown', onKeyDown, window);\n\n useEventListener('keyup', onKeyUp, window);\n\n return keyPressed;\n};\n\nexport default useKeyPress;\n","import { ComponentNodeLayout } from '@telia-ace/widget-core';\nimport { useEffect, useState } from 'react';\nimport useComponentNode from './use-component-node';\nimport useComponentPlatform from './use-component-platform';\nimport useIsMounted from './use-is-mounted';\n\nconst useLayout = (id?: string): ComponentNodeLayout => {\n const node = useComponentNode(id);\n const components = useComponentPlatform();\n const [layout, setLayout] = useState<ComponentNodeLayout>({});\n const isMounted = useIsMounted();\n\n useEffect(() => {\n if (node && isMounted.current) {\n setLayout(node.attributes.layout);\n }\n }, [node, isMounted]);\n\n useEffect(() => {\n if (components) {\n const unsubscribe = components.events.subscribe(\n 'components:layout-changed',\n (event, data) => {\n if (node === data.node && isMounted.current) {\n setLayout(data.node.attributes.layout);\n }\n }\n );\n\n return () => {\n unsubscribe();\n };\n }\n }, [components, isMounted, node]);\n\n return layout;\n};\n\nexport default useLayout;\n","import { useEffect, useRef } from 'react';\n\nconst usePrevious = <T>(value: T) => {\n const ref = useRef<T>();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n\nexport default usePrevious;\n","import { ComponentNodeProperties } from '@telia-ace/widget-core';\nimport { useContext } from 'react';\nimport { ComponentPropertyContext } from '../contexts';\n\ntype DataProperties = { loading?: boolean };\n\nconst useProperties = <T extends ComponentNodeProperties>(): Merge<DataProperties, T> => {\n const properties = useContext(ComponentPropertyContext);\n\n return <Merge<DataProperties, T>>properties;\n};\n\nexport default useProperties;\n","import { ActionResolver, WidgetRenderState } from '@telia-ace/widget-core';\nimport { Container, EventSubscriptionCancellation, Widget } from '@webprovisions/platform';\nimport { useEffect, useState } from 'react';\nimport useContainer from './use-container';\nimport useIsMounted from './use-is-mounted';\n\nconst useRenderState = (passedContainer?: Container): WidgetRenderState | undefined => {\n const [renderState, setRenderState] = useState<WidgetRenderState>();\n const container = useContainer();\n const isMounted = useIsMounted();\n\n useEffect(() => {\n let unsubscribe: EventSubscriptionCancellation;\n const widget = (passedContainer || container).get('$widget') as Widget;\n if (!widget) {\n return;\n }\n const { name, invoke } = widget;\n\n invoke('renderState').then((renderState: WidgetRenderState) => {\n if (isMounted.current) {\n setRenderState(renderState);\n }\n });\n\n (passedContainer || container)\n .getAsync('actionResolver')\n .then((actionResolver: ActionResolver) => {\n unsubscribe = actionResolver.subscribe(name, (origin, action) => {\n switch (action) {\n case 'close':\n case 'open':\n if (isMounted.current) {\n setRenderState(\n action === 'open'\n ? WidgetRenderState.open\n : WidgetRenderState.closed\n );\n }\n break;\n case 'hide':\n if (isMounted.current) {\n setRenderState(WidgetRenderState.hidden);\n }\n }\n });\n });\n\n return () => {\n if (unsubscribe) {\n unsubscribe();\n }\n };\n }, [isMounted]);\n\n return renderState;\n};\n\nexport default useRenderState;\n","import { RoutingService } from '@telia-ace/widget-routing';\nimport { useContext } from 'react';\nimport { RoutingContext } from '../contexts';\n\nconst useRouter = (): RoutingService | null => {\n const router = useContext(RoutingContext);\n\n return router;\n};\n\nexport default useRouter;\n","import { RouteData } from '@telia-ace/widget-routing';\nimport { removeNullAndUndefinedValues } from '@telia-ace/widget-utilities';\nimport { Container, Widget } from '@webprovisions/platform';\nimport { useEffect, useState } from 'react';\nimport useContainer from './use-container';\nimport useIsMounted from './use-is-mounted';\nimport useRouter from './use-router';\n\nconst useRouteData = (passedContainer?: Container): RouteData => {\n const container = useContainer();\n const router = useRouter();\n const [routeData, setRouteData] = useState<RouteData>({ name: '', params: {} });\n const isMounted = useIsMounted();\n\n useEffect(() => {\n const widget = (passedContainer || container).get('$widget') as Widget;\n if (!widget) {\n return;\n }\n const { events } = widget;\n const unsubscribe = events.subscribe('router:change', (e, { next: { routeData } }) => {\n if (isMounted.current) {\n const { name, params } = routeData;\n removeNullAndUndefinedValues(params);\n setRouteData({ name, params });\n }\n });\n\n return unsubscribe;\n }, [isMounted, passedContainer, container]);\n\n useEffect(() => {\n if (router && router.history && isMounted.current) {\n const routeData = router.getRouteData();\n const { name, params } = routeData;\n removeNullAndUndefinedValues(params);\n setRouteData({ name, params });\n }\n }, [router, isMounted]);\n\n return routeData;\n};\n\nexport default useRouteData;\n","import { useCallback, useRef } from 'react';\nimport { browser, Browsers } from '../utils';\nimport useEventListener from './use-event-listener';\n\nexport default (scrollable: boolean): [string, React.MutableRefObject<any>] => {\n const elem = useRef<any>();\n const previousY = useRef(0);\n\n let timeoutId: any | number;\n\n const onScroll = useCallback(() => {\n elem.current?.classList.add('humany-scrolling');\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n elem.current?.classList.remove('humany-scrolling');\n }, 500);\n }, [elem]);\n\n const onTouchStart = useCallback(\n (event: any) => {\n previousY.current = event.touches[0].clientY;\n },\n [elem]\n );\n\n const traverseScrollable = (element: HTMLElement): any => {\n if (isScrollable(element)) {\n if (element === elem.current) {\n return element;\n }\n return null;\n }\n if (element.parentElement) {\n return traverseScrollable(element.parentElement);\n }\n return null;\n };\n const isScrollable = (element: HTMLElement) => {\n return (\n element.scrollWidth > element.clientWidth || element.scrollHeight > element.clientHeight\n );\n };\n\n const onTouchMove = useCallback(\n (event: any) => {\n if (!event.cancelable) {\n return;\n }\n const top = event.touches[0].clientY;\n const firstScrollable = traverseScrollable(event.target);\n if (!firstScrollable) {\n return;\n }\n\n const scrollTop = firstScrollable.scrollTop;\n const direction = previousY.current - top < 0 ? 'up' : 'down';\n\n const isAtTop = scrollTop <= 0 && direction === 'up';\n const isAtBottom =\n scrollTop >= firstScrollable.scrollHeight - firstScrollable.offsetHeight &&\n direction === 'down';\n\n if (isAtTop || isAtBottom) {\n // Don't scroll up if already at top,\n // and don't scroll down if bottom has been reached\n event.preventDefault();\n }\n\n previousY.current = top;\n },\n [elem, previousY]\n );\n\n useEventListener('scroll', onScroll, elem.current, () => elem.current && scrollable);\n\n // This will prevent scrolling causing browser\n // to freeze on Safari / Chrome on iOS\n useEventListener('touchstart', onTouchStart, elem.current, () => elem.current && scrollable);\n\n useEventListener('touchmove', onTouchMove, elem.current, () => elem.current && scrollable);\n\n if (!scrollable) {\n return ['', elem];\n }\n\n return [styling, elem];\n};\n\nconst styling = `\n overflow-y: ${\n browser() === Browsers.Chrome || browser() === Browsers.EdgeChromium ? 'overlay' : 'auto'\n };\n overflow-x: hidden;\n -ms-overflow-style: none; /* IE 10+ */\n scrollbar-width: thin; /* Firefox */\n scrollbar-color: transparent transparent; /* Firefox */\n\n ::-webkit-scrollbar {\n width: 3px !important;\n background-color: transparent;\n border-left: none;\n }\n ::-webkit-scrollbar-thumb {\n background-color: transparent;\n }\n ::-webkit-scrollbar-track {\n -webkit-box-shadow: none !important;\n background-color: transparent;\n }\n &.humany-scrolling {\n scrollbar-color: #7F7F7F transparent;\n scrollbar-width: thin; /* Firefox */\n -ms-overflow-style: none; /* IE 10+ */\n\n ::-webkit-scrollbar-thumb {\n background-color: #7F7F7F;\n }\n }\n`;\n","import { WidgetSettings } from '@telia-ace/widget-core';\nimport { useEffect, useState } from 'react';\nimport useContainer from './use-container';\nimport useIsMounted from './use-is-mounted';\n\nconst useSettings = (): WidgetSettings | null => {\n const [settings, setSettings] = useState<WidgetSettings | null>(null);\n const container = useContainer();\n const isMounted = useIsMounted();\n\n useEffect(() => {\n container.get('settings').then((settings: WidgetSettings) => {\n if (isMounted.current) {\n setSettings(settings);\n }\n });\n }, [isMounted]);\n\n return settings;\n};\n\nexport default useSettings;\n","import { useCallback, useState } from 'react';\n\nconst useToggle = (initialValue: boolean = false): [boolean, (forced?: boolean) => void] => {\n const [value, setValue] = useState(initialValue);\n const toggle = useCallback((forced?: boolean) => {\n setValue(typeof forced === 'boolean' ? forced : (v) => !v);\n }, []);\n\n return [value, toggle];\n};\n\nexport default useToggle;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useComponentPlatform, useContainer, useEventListener, useIsMounted } from '.';\n\nexport default (handler: (...args: any[]) => void) => {\n const container = useContainer();\n const components = useComponentPlatform();\n const widgetDOMElement: HTMLElement = container.get('widgetDOMElement');\n const [viewDOMElement, setViewDOMElement] = useState<Element | null>(null);\n const [rootDOMElement, setRootDOMElement] = useState<Element | null>(null);\n const isMounted = useIsMounted();\n\n useEffect(() => {\n if (components && isMounted.current) {\n const rootArea = components.nodes.all.find((n) => n.name === 'root-area');\n const view = components.nodes.all.find((n) => n.type === 'view');\n if (\n !view?.attributes.properties.animation &&\n !rootArea?.attributes.properties.animation\n ) {\n // if view and root does not use animations, call handler on render\n handler();\n } else {\n // else add elements to state for transitionend-event handling\n const getElement = (id = '') =>\n widgetDOMElement?.querySelector(`[data-node-id=\"${id}\"]`);\n\n const viewDOMElement = getElement(view?.id);\n if (viewDOMElement) {\n setViewDOMElement(viewDOMElement);\n }\n\n const rootDOMElement = getElement(rootArea?.id);\n if (rootDOMElement) {\n setRootDOMElement(rootDOMElement);\n }\n }\n }\n }, [components, container, isMounted]);\n\n const eventListener = useCallback(\n (event: Event) => {\n if (\n isMounted.current &&\n (event.target === viewDOMElement || event.target === rootDOMElement)\n ) {\n handler();\n }\n },\n [handler, isMounted, viewDOMElement, rootDOMElement]\n );\n\n useEventListener('transitionend', eventListener, viewDOMElement as HTMLElement);\n\n useEventListener('transitionend', eventListener, rootDOMElement as HTMLElement);\n};\n","import { Container, EventListener } from '@webprovisions/platform';\nimport { useEffect } from 'react';\nimport useEvents from './use-events';\n\nconst useWidgetEvent = (\n event: string,\n callback: EventListener,\n dependencies: any[] = [],\n passedContainer?: Container\n): ((data: any) => void) => {\n const events = useEvents(passedContainer);\n\n useEffect(() => {\n if (events) {\n const unsubscribe = events.subscribe(event, callback);\n\n return () => {\n unsubscribe();\n };\n }\n }, [events].concat(dependencies));\n\n return (data) => events?.dispatch(event, data);\n};\n\nexport default useWidgetEvent;\n","import useWidgetEvent from './use-widget-event';\n\nconst useUniqueMenu = (id: string, callback: () => void): Function => {\n const dispatch = useWidgetEvent('widget:menu-toggled', (_, triggeredId) => {\n if (triggeredId !== id) {\n callback();\n }\n });\n\n return () => dispatch(id);\n};\n\nexport default useUniqueMenu;\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { convertToStringAttributes } from '../utils';\n\nexport type Props = React.ComponentProps<'span'>;\n\nconst Text: React.FC<Props> = ({ className, children, ...other }) => {\n return (\n <span\n className={appendClassNames(className, 'humany-text')}\n {...convertToStringAttributes(other)}\n >\n {children}\n </span>\n );\n};\n\nexport default Text;\n","import { css, Theme } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport Button from './components/button';\nimport Text from './components/text';\nimport { headingElement } from './utils/heading-styles';\n\ntype InvertedHoverButtonSettings = {\n primaryColor: string;\n secondaryColor: string;\n active?: boolean;\n theme: Theme;\n disabled?: boolean;\n};\n\nexport const contentBox = (p: { theme: Theme; 'data-loading'?: boolean }) => css`\n display: flex;\n justify-content: center;\n flex-direction: column;\n background: #ffffff;\n border-radius: ${p.theme.borderRadius};\n border: ${p.theme.border};\n box-shadow: ${p.theme.boxShadow || 'none'};\n ${p['data-loading'] && 'min-height: 150px;'}\n`;\n\nexport const buttonCss = (p: { theme: Partial<Theme> }) => css`\n cursor: pointer;\n text-align: center;\n border: none;\n font-weight: 300;\n padding: ${p.theme.sizes?.normal};\n border-radius: ${p.theme.borderRadius};\n font-family: ${p.theme.fonts?.type};\n font-size: ${p.theme.fonts?.normal};\n`;\n\nexport const invertedHoverButton = (p: InvertedHoverButtonSettings) => {\n const { primaryColor, secondaryColor, active, theme, disabled } = p;\n return css`\n ${buttonCss(p)}\n border: 1px solid ${active ? secondaryColor : primaryColor};\n background-color: ${active ? primaryColor : secondaryColor};\n\n color: ${active ? secondaryColor : primaryColor};\n transition: background-color 200ms ease-out, color 200ms ease-out;\n\n span,\n i,\n p,\n a {\n transition: color 200ms ease-out;\n color: ${active ? secondaryColor : primaryColor};\n font-size: ${theme.fonts?.normal};\n }\n\n ${!disabled &&\n css`\n &:hover {\n background-color: ${primaryColor};\n color: ${secondaryColor};\n\n span,\n i,\n p,\n a {\n color: ${secondaryColor};\n }\n }\n\n &:focus-visible {\n ${borderTabStyle(p)};\n }\n `}\n `;\n};\n\nexport const borderTabStyle = (p: { theme: Partial<Theme> }) => css`\n outline: ${p.theme.accessibility?.border};\n color: ${p.theme.accessibility?.colors?.inactiveText};\n border-color: transparent;\n`;\n\nexport const linkTabStyle = (p: { theme: Theme }) => css`\n ${borderTabStyle(p)}\n text-decoration: underline;\n`;\n\nexport const paddedBorderTabStyle = (p: { theme: Partial<Theme> }) => css`\n ${borderTabStyle(p)}\n outline-offset: ${p.theme.sizes?.small};\n`;\n\nexport const CloseButton = styled(Button)<any>`\n position: absolute;\n top: ${(p) => p.theme.sizes?.normal};\n right: ${(p) => p.theme.sizes?.normal};\n z-index: 1;\n\n svg {\n stroke: ${(p) => p.theme.colors?.text};\n }\n\n &:focus-visible {\n ${borderTabStyle}\n padding: ${(p) => p.theme.sizes?.small};\n height: 15px;\n box-sizing: content-box;\n }\n`;\n\nexport const StyledText = styled(Text)`\n font-size: ${(p) => p.theme.fonts?.normal};\n font-weight: normal;\n line-height: 1.2em;\n color: ${(p) => p.theme.colors?.text};\n`;\n\nexport const list = (p: { theme: Partial<Theme> }) => css`\n padding: 0;\n margin: 0;\n list-style: none;\n > li {\n margin: 0 0 ${p.theme.sizes?.normal};\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n &:focus {\n outline-offset: -2px;\n }\n > a {\n text-decoration: none;\n }\n }\n > li:last-child {\n margin: 0;\n }\n`;\n\nexport const itemList = (p: { theme: Partial<Theme> }) => css`\n > div {\n ${headingElement(p)(\n '> h1',\n css`\n margin: 0 0 ${p.theme.sizes?.normal};\n font-size: ${p.theme.fonts?.medium};\n font-weight: normal;\n line-height: 1.8em;\n color: ${p.theme.colors?.text};\n `\n )}\n }\n > ul {\n ${list(p)}\n }\n ${headingElement(p)(\n 'h1',\n css`\n display: flex;\n align-items: center;\n i {\n margin: 7px ${p.theme.sizes?.normal} 0 0;\n width: 24px;\n display: inline-block;\n vertical-align: text-bottom;\n align-self: flex-start;\n min-width: 24px;\n min-height: 24px;\n text-align: center;\n }\n `\n )}\n`;\n\nexport const genericHtml = (p: { theme: Theme }) => css`\n font-size: ${p.theme.fonts?.normal};\n font-weight: 300;\n line-height: 1.5em;\n color: ${p.theme.colors?.text};\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n word-break: break-word;\n &:first-child {\n margin-top: 0;\n }\n &:only-child {\n margin: 0;\n }\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n a {\n color: ${p.theme.colors?.link};\n &:focus-visible {\n ${linkTabStyle(p)};\n }\n }\n\n img {\n max-width: 100% !important;\n height: auto !important;\n }\n\n p {\n word-break: break-word;\n margin: ${p.theme.sizes?.normal} 0;\n }\n\n p:first-child {\n margin: 0 0 ${p.theme.sizes?.normal};\n }\n\n p:last-child {\n margin: ${p.theme.sizes?.normal} 0 0;\n }\n\n p:only-child {\n margin: 0;\n }\n`;\n","import { FC, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport type Props = {\n elementId?: string;\n parent?: Element | HTMLElement;\n children?: any;\n};\n\nconst Portal: FC<Props> = ({\n elementId = 'humany-portal-elements',\n parent = document.body,\n children,\n}) => {\n const [container] = useState(() => {\n const el = document.getElementById(elementId) || document.createElement('div');\n el.id = elementId;\n return el;\n });\n\n useEffect(() => {\n parent.appendChild(container);\n\n return () => {\n if (container.childElementCount <= 1) {\n parent.removeChild(container);\n }\n };\n }, [container]);\n\n return createPortal(children, container);\n};\n\nexport default Portal;\n","import styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { Icon } from '.';\n\nexport type Symbol = {\n type: 'Uri' | 'Svg' | 'FontAwesome' | 'Text' | string;\n content: string;\n};\n\nexport type HtmlIconProps = Merge<React.ComponentProps<'i'>, React.ComponentProps<'svg'>>;\n\nexport type Props = Merge<\n HtmlIconProps,\n {\n symbol: Symbol;\n backgroundSize?: string;\n size?: number;\n text?: string;\n elementStyle?: Object;\n }\n>;\n\nconst SymbolBadge: React.FC<Props> = ({\n text = '',\n backgroundSize = 'contain',\n size = 12,\n symbol = {\n content: '',\n type: '',\n },\n elementStyle = {},\n className,\n ...other\n}) => {\n const { type, content } = symbol;\n\n const sharedProps = {\n 'aria-label': text,\n role: 'presentation',\n };\n\n switch (type) {\n case 'Uri': {\n const style = {\n backgroundSize,\n backgroundImage: `url('${content}')`,\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center',\n backgroundAttachment: 'center',\n };\n return (\n <i\n className={appendClassNames(className, 'humany-icon', 'humany-custom-icon')}\n title={text}\n style={{ ...style, ...elementStyle }}\n {...sharedProps}\n {...(other as React.ComponentProps<'i'>)}\n />\n );\n }\n case 'Svg': {\n const svgProps = {\n className: appendClassNames(className, 'humany-icon'),\n width: `${size}`,\n fill: 'none',\n xmlns: 'http://www.w3.org/2000/svg',\n ...(other as React.ComponentProps<'svg'>),\n ref: null,\n };\n const style = { minWidth: `${size}` };\n switch (content) {\n case 'search': {\n return (\n <svg viewBox=\"0 0 32 30\" {...svgProps}>\n <circle\n cx=\"14.8457\"\n cy=\"14.5175\"\n r=\"8.14359\"\n transform=\"rotate(45 14.8457 14.5175)\"\n />\n <line x1=\"21.1001\" y1=\"20.4865\" x2=\"26.5798\" y2=\"25.9661\" />\n </svg>\n );\n }\n\n case 'clear': {\n return (\n <svg viewBox=\"0 0 27 27\" {...svgProps}>\n <circle\n cx=\"13.4351\"\n cy=\"13.435\"\n r=\"9\"\n transform=\"rotate(45 13.4351 13.435)\"\n stroke=\"black\"\n />\n <line\n x1=\"16.6172\"\n y1=\"10.2531\"\n x2=\"10.2533\"\n y2=\"16.6171\"\n stroke=\"black\"\n />\n <line\n x1=\"16.6171\"\n y1=\"16.617\"\n x2=\"10.2532\"\n y2=\"10.2531\"\n stroke=\"black\"\n />\n </svg>\n );\n }\n\n case 'close': {\n return (\n <svg viewBox=\"0 0 13 13\" {...svgProps}>\n <path d=\"M12.3068 0.50647L1.27246 11.7273\" stroke=\"black\" />\n <path d=\"M12.2812 11.9473L1.24686 0.726451\" stroke=\"black\" />\n </svg>\n );\n }\n\n case 'caret-right': {\n return (\n <svg viewBox=\"0 0 14 14\" style={style} {...svgProps}>\n <line x1=\"4.13\" y1=\"1.05\" x2=\"10.13\" y2=\"7.05\" stroke=\"black\" />\n <line x1=\"10.13\" y1=\"6.95\" x2=\"4.13\" y2=\"12.95\" stroke=\"black\" />\n </svg>\n );\n }\n\n case 'caret-left': {\n return (\n <svg viewBox=\"0 0 14 14\" style={style} {...svgProps}>\n <line x1=\"10.13\" y1=\"12.95\" x2=\"4.13\" y2=\"6.95\" stroke=\"black\" />\n <line x1=\"4.13\" y1=\"7.05\" x2=\"10.13\" y2=\"1.05\" stroke=\"black\" />\n </svg>\n );\n }\n\n case 'caret-up': {\n return (\n <CaretUp viewBox=\"0 0 14 14\" style={style} {...svgProps}>\n <line x1=\"13.09\" y1=\"3.99\" x2=\"7.1\" y2=\"9.99\" stroke=\"black\" />\n <line x1=\"7.19\" y1=\"9.99\" x2=\"1.19\" y2=\"3.99\" stroke=\"black\" />\n </CaretUp>\n );\n }\n\n case 'caret-down': {\n return (\n <svg viewBox=\"0 0 14 14\" style={style} {...svgProps}>\n <line x1=\"13.09\" y1=\"3.99\" x2=\"7.1\" y2=\"9.99\" stroke=\"black\" />\n <line x1=\"7.19\" y1=\"9.99\" x2=\"1.19\" y2=\"3.99\" stroke=\"black\" />\n </svg>\n );\n }\n\n case 'back': {\n return (\n <svg viewBox=\"0 0 18 18\" {...svgProps}>\n <line\n y1=\"-0.5\"\n x2=\"11.724\"\n y2=\"-0.5\"\n transform=\"matrix(-0.682355 -0.731021 0.682355 -0.731021 13 16.9999)\"\n stroke=\"white\"\n />\n <line\n y1=\"-0.5\"\n x2=\"11.724\"\n y2=\"-0.5\"\n transform=\"matrix(0.682355 -0.731021 0.682355 0.731021 5 9.5705)\"\n stroke=\"white\"\n />\n </svg>\n );\n }\n\n case 'alert': {\n return (\n <svg viewBox=\"0 0 19 19\" {...svgProps}>\n <circle cx=\"9.5\" cy=\"9.5\" r=\"9.5\" fill=\"#CA0813\" />\n <path\n d=\"M10.36 4.878V8.882C10.36 9.30667 10.339 9.72433 10.297 10.135C10.255 10.541 10.199 10.9727 10.129 11.43H8.96C8.89 10.9727 8.834 10.541 8.792 10.135C8.75 9.72433 8.729 9.30667 8.729 8.882V4.878H10.36ZM8.463 14.048C8.463 13.9033 8.48867 13.7657 8.54 13.635C8.596 13.5043 8.67067 13.3923 8.764 13.299C8.862 13.2057 8.97633 13.131 9.107 13.075C9.23767 13.019 9.37767 12.991 9.527 12.991C9.67167 12.991 9.80933 13.019 9.94 13.075C10.0707 13.131 10.1827 13.2057 10.276 13.299C10.3693 13.3923 10.444 13.5043 10.5 13.635C10.556 13.7657 10.584 13.9033 10.584 14.048C10.584 14.1973 10.556 14.3373 10.5 14.468C10.444 14.594 10.3693 14.7037 10.276 14.797C10.1827 14.8903 10.0707 14.9627 9.94 15.014C9.80933 15.07 9.67167 15.098 9.527 15.098C9.37767 15.098 9.23767 15.07 9.107 15.014C8.97633 14.9627 8.862 14.8903 8.764 14.797C8.67067 14.7037 8.596 14.594 8.54 14.468C8.48867 14.3373 8.463 14.1973 8.463 14.048Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n\n case 'send': {\n return (\n <svg viewBox=\"0 0 20 17\" {...svgProps}>\n <path\n d=\"M18.95 8.56428L0.949951 0.941406V7.02531L13.6351 8.47059L0.950001 9.92276L0.949951 15.9414L18.95 8.56428Z\"\n fill=\"#A6A6A6\"\n stroke=\"#A6A6A6\"\n strokeWidth=\"0.1\"\n />\n </svg>\n );\n }\n\n case 'chat': {\n return (\n <svg viewBox=\"-2 -3 40 40\" {...svgProps}>\n <path\n strokeWidth=\"0\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.9799 34C21.2676 34 25.1841 32.4256 28.1725 29.8285L34.9534 32.1994C35.7991 32.4951 36.553 31.5778 36.0892 30.8173L32.2559 24.5317C33.3474 22.3103 33.9598 19.8153 33.9598 17.1786C33.9598 7.88838 26.3576 0.357178 16.9799 0.357178C7.60216 0.357178 0 7.88838 0 17.1786C0 26.4688 7.60216 34 16.9799 34ZM30.7031 24.565C31.9094 22.3701 32.5948 19.8536 32.5948 17.1786C32.5948 8.6352 25.6038 1.70942 16.9799 1.70942C8.35601 1.70942 1.36498 8.6352 1.36498 17.1786C1.36498 25.722 8.35601 32.6478 16.9799 32.6478C21.1946 32.6478 25.0193 30.9935 27.8285 28.3047L34.3975 30.5798L30.7031 24.565Z\"\n fill=\"currentColor\"\n />\n <path\n strokeWidth=\"0\"\n d=\"M12.9395 17.1786C12.9395 18.6079 11.7809 19.7665 10.3516 19.7665C8.92237 19.7665 7.76373 18.6079 7.76373 17.1786C7.76373 15.7493 8.92237 14.5907 10.3516 14.5907C11.7809 14.5907 12.9395 15.7493 12.9395 17.1786Z\"\n fill=\"currentColor\"\n />\n <path\n strokeWidth=\"0\"\n d=\"M19.4093 17.1786C19.4093 18.6079 18.2507 19.7665 16.8214 19.7665C15.3921 19.7665 14.2335 18.6079 14.2335 17.1786C14.2335 15.7493 15.3921 14.5907 16.8214 14.5907C18.2507 14.5907 19.4093 15.7493 19.4093 17.1786Z\"\n fill=\"currentColor\"\n />\n <path\n strokeWidth=\"0\"\n d=\"M25.8791 17.1786C25.8791 18.6079 24.7204 19.7665 23.2912 19.7665C21.8619 19.7665 20.7033 18.6079 20.7033 17.1786C20.7033 15.7493 21.8619 14.5907 23.2912 14.5907C24.7204 14.5907 25.8791 15.7493 25.8791 17.1786Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n\n case 'chat-new': {\n return (\n <svg viewBox=\"0 0 26 24\" {...svgProps}>\n <path\n d=\"M22.1109 10.3813C22.3941 10.2876 22.6674 10.1722 22.9288 10.0371C23.1902 10.9797 23.33 11.9734 23.33 13C23.33 19.0751 18.4348 24 12.3962 24C9.6352 24 7.11325 22.9705 5.18893 21.2721L0.82251 22.8226C0.277922 23.0159 -0.207515 22.4161 0.0911259 21.9188L2.55952 17.8084C1.85665 16.3558 1.46233 14.7242 1.46233 13C1.46233 6.92487 6.35758 2 12.3962 2C13.4013 2 14.3747 2.13645 15.2992 2.39193C15.1628 2.65458 15.0464 2.92925 14.9519 3.21394C14.1358 2.99881 13.2793 2.88427 12.3962 2.88427C6.84301 2.88427 2.34128 7.41324 2.34128 13C2.34128 14.7493 2.78263 16.3949 3.5594 17.8302L1.18047 21.7634L5.41046 20.2757C7.21939 22.034 9.68221 23.1157 12.3962 23.1157C17.9493 23.1157 22.451 18.5868 22.451 13C22.451 12.0944 22.3328 11.2165 22.1109 10.3813Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M25.6633 4C25.6633 6.20914 23.8724 8 21.6633 8C19.4541 8 17.6633 6.20914 17.6633 4C17.6633 1.79086 19.4541 0 21.6633 0C23.8724 0 25.6633 1.79086 25.6633 4Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n case 'agent': {\n return (\n <svg viewBox=\"0 0 36 30\" {...svgProps}>\n <path\n d=\"M0.900024 15.3887C0.900024 12.9034 2.91474 10.8887 5.40002 10.8887H6.28179V20.0995H5.40002C2.91474 20.0995 0.900024 18.0848 0.900024 15.5995V15.3887Z\"\n stroke=\"white\"\n />\n <path\n d=\"M34.65 15.5996C34.65 18.0849 32.6353 20.0996 30.15 20.0996L29.2683 20.0996L29.2683 10.8888L30.15 10.8888C32.6353 10.8888 34.65 12.9035 34.65 15.3888L34.65 15.5996Z\"\n stroke=\"white\"\n />\n <path\n d=\"M29.2565 20.5974C29.2565 26.341 22.8747 26.9792 19.6838 26.9792\"\n stroke=\"white\"\n />\n <circle cx=\"17.4074\" cy=\"26.9795\" r=\"2.05271\" stroke=\"white\" />\n <path\n d=\"M6.28467 12.9396C6.28467 11.195 6.28686 18.0452 6.28467 8.47234C6.28248 -1.10049 29.2591 -1.10047 29.259 8.47234C29.259 18.0452 29.2569 11.6631 29.259 12.9396\"\n stroke=\"white\"\n />\n </svg>\n );\n }\n case 'minimize': {\n return (\n <svg viewBox=\"0 -10 22 22\" {...svgProps}>\n <path d=\"M0 1H22\" stroke=\"white\" />\n </svg>\n );\n }\n case 'sorting': {\n return (\n <svg viewBox=\"0 0 18 14\" {...svgProps}>\n <path d=\"M18 1H0M8 13H0M13 7H0\" />\n </svg>\n );\n }\n case 'copy': {\n return (\n <svg viewBox=\"0 0 19 17\" {...svgProps}>\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"11.6667\"\n height=\"11.6014\"\n rx=\"1.5\"\n fill=\"white\"\n />\n <rect\n x=\"6.83301\"\n y=\"4.89868\"\n width=\"11.6667\"\n height=\"11.6014\"\n rx=\"1.5\"\n fill=\"white\"\n />\n </svg>\n );\n }\n case 'print': {\n return (\n <svg viewBox=\"0 0 16 17\" {...svgProps}>\n <path\n d=\"M4.31592 0.999999C4.31592 0.723857 4.53977 0.5 4.81592 0.5H11.1845C11.4606 0.5 11.6845 0.723858 11.6845 1V4.53323H4.31592V0.999999Z\"\n fill=\"white\"\n stroke=\"black\"\n />\n <path\n d=\"M0.5 4.84595C0.5 4.56981 0.723858 4.34595 1 4.34595H15C15.2761 4.34595 15.5 4.5698 15.5 4.84595V10.8399C15.5 11.116 15.2761 11.3399 15 11.3399H1C0.723858 11.3399 0.5 11.116 0.5 10.8399V4.84595Z\"\n fill=\"white\"\n stroke=\"black\"\n />\n <path\n d=\"M4.31592 10.0061C4.31592 9.72996 4.53978 9.5061 4.81592 9.5061H11.1845C11.4606 9.5061 11.6845 9.72996 11.6845 10.0061V16.0001C11.6845 16.2762 11.4606 16.5001 11.1845 16.5001H4.81592C4.53978 16.5001 4.31592 16.2762 4.31592 16.0001V10.0061Z\"\n fill=\"white\"\n stroke=\"black\"\n />\n <line\n x1=\"5.29004\"\n y1=\"10.8323\"\n x2=\"10.7101\"\n y2=\"10.8323\"\n stroke=\"black\"\n />\n <line\n x1=\"5.29004\"\n y1=\"12.5242\"\n x2=\"10.7101\"\n y2=\"12.5242\"\n stroke=\"black\"\n />\n <line\n x1=\"5.29004\"\n y1=\"14.2161\"\n x2=\"10.7101\"\n y2=\"14.2161\"\n stroke=\"black\"\n />\n </svg>\n );\n }\n case 'language': {\n return (\n <svg viewBox=\"0 0 19 19\" {...svgProps}>\n <path\n d=\"M9.5 18C14.1944 18 18 14.1944 18 9.5C18 4.80558 14.1944 1 9.5 1M9.5 18C4.80558 18 1 14.1944 1 9.5C1 4.80558 4.80558 1 9.5 1M9.5 18C11.823 18 13.7062 14.1944 13.7062 9.5C13.7062 4.80558 11.823 1 9.5 1M9.5 18C7.17699 18 5.29381 14.1944 5.29381 9.5C5.29381 4.80558 7.17699 1 9.5 1M1.44333 6.78351H17.4742M1.3088 11.7784H17.6912\"\n stroke=\"black\"\n />\n </svg>\n );\n }\n case 'information': {\n return (\n <svg viewBox=\"0 0 17 17\" {...svgProps}>\n <path\n d=\"M9.72182 5.99993C10.0524 5.99993 10.3203 5.73198 10.3203 5.40145C10.3203 5.07092 10.0524 4.80297 9.72182 4.80297C9.39129 4.80297 9.12335 5.07092 9.12335 5.40145C9.12335 5.73198 9.39129 5.99993 9.72182 5.99993Z\"\n fill=\"black\"\n />\n\n <path\n d=\"M7.21887 6.67639C6.89117 6.71981 6.66072 7.02066 6.70414 7.34836C6.74756 7.67605 7.04841 7.9065 7.3761 7.86308L8.353 7.73364L7.17405 11.3945C7.11289 11.5844 7.15164 11.7825 7.26117 11.932C7.38068 12.1287 7.60875 12.2469 7.85155 12.2147L9.40669 12.0087C9.73436 11.9653 9.96479 11.6645 9.92137 11.3368C9.87795 11.0091 9.57713 10.7787 9.24947 10.8221L8.58762 10.9098L9.76774 7.24534C9.83038 7.05084 9.78821 6.84771 9.67254 6.69702C9.55085 6.50877 9.32791 6.39694 9.09093 6.42834L7.21887 6.67639Z\"\n fill=\"black\"\n />\n\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M17 8.5C17 13.1944 13.1944 17 8.5 17C3.80558 17 0 13.1944 0 8.5C0 3.80558 3.80558 0 8.5 0C13.1944 0 17 3.80558 17 8.5ZM16 8.5C16 12.8454 12.8454 16 8.5 16C4.15461 16 1 12.8454 1 8.5C1 4.15461 4.15461 1 8.5 1C12.8454 1 16 4.15461 16 8.5Z\"\n fill=\"black\"\n />\n </svg>\n );\n }\n case 'options': {\n return (\n <svg viewBox=\"0 0 16 2\" {...svgProps}>\n <circle cx=\"15\" cy=\"1\" r=\"1\" transform=\"rotate(90 15 1)\" fill=\"black\" />\n\n <circle cx=\"1\" cy=\"1\" r=\"1\" transform=\"rotate(90 1 1)\" fill=\"black\" />\n\n <circle cx=\"8\" cy=\"1\" r=\"1\" transform=\"rotate(90 8 1)\" fill=\"black\" />\n </svg>\n );\n }\n case 'browse': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"currentColor\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.16663 7.33334C6.16663 6.68901 6.68896 6.16667 7.33329 6.16667H10.25C10.8943 6.16667 11.4166 6.68901 11.4166 7.33334V10.25C11.4166 10.8943 10.8943 11.4167 10.25 11.4167H7.33329C6.68896 11.4167 6.16663 10.8943 6.16663 10.25V7.33334ZM7.33329 7.04167H10.25C10.411 7.04167 10.5416 7.17226 10.5416 7.33334V10.25C10.5416 10.4111 10.411 10.5417 10.25 10.5417H7.33329C7.17221 10.5417 7.04163 10.4111 7.04163 10.25V7.33334C7.04163 7.17226 7.17221 7.04167 7.33329 7.04167Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.16663 13.75C6.16663 13.1057 6.68896 12.5833 7.33329 12.5833H10.25C10.8943 12.5833 11.4166 13.1057 11.4166 13.75V16.6667C11.4166 17.311 10.8943 17.8333 10.25 17.8333H7.33329C6.68896 17.8333 6.16663 17.311 6.16663 16.6667V13.75ZM7.33329 13.4583H10.25C10.411 13.4583 10.5416 13.5889 10.5416 13.75V16.6667C10.5416 16.8278 10.411 16.9583 10.25 16.9583H7.33329C7.17221 16.9583 7.04163 16.8278 7.04163 16.6667V13.75C7.04163 13.5889 7.17221 13.4583 7.33329 13.4583Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.75 6.16667C13.1056 6.16667 12.5833 6.68901 12.5833 7.33334V10.25C12.5833 10.8943 13.1056 11.4167 13.75 11.4167H16.6666C17.311 11.4167 17.8333 10.8943 17.8333 10.25V7.33334C17.8333 6.68901 17.311 6.16667 16.6666 6.16667H13.75ZM16.6666 7.04167H13.75C13.5889 7.04167 13.4583 7.17226 13.4583 7.33334V10.25C13.4583 10.4111 13.5889 10.5417 13.75 10.5417H16.6666C16.8277 10.5417 16.9583 10.4111 16.9583 10.25V7.33334C16.9583 7.17226 16.8277 7.04167 16.6666 7.04167Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M17.8333 15.2083C17.8333 16.6581 16.658 17.8333 15.2083 17.8333C13.7585 17.8333 12.5833 16.6581 12.5833 15.2083C12.5833 13.7586 13.7585 12.5833 15.2083 12.5833C16.658 12.5833 17.8333 13.7586 17.8333 15.2083ZM16.9583 15.2083C16.9583 16.1748 16.1748 16.9583 15.2083 16.9583C14.2418 16.9583 13.4583 16.1748 13.4583 15.2083C13.4583 14.2418 14.2418 13.4583 15.2083 13.4583C16.1748 13.4583 16.9583 14.2418 16.9583 15.2083Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n case 'video': {\n if (style.minWidth && typeof style.minWidth === 'number') {\n style.minWidth = `${style.minWidth}px`;\n }\n return (\n <svg viewBox=\"0 0 25 25\" {...svgProps} style={style}>\n <path\n d=\"M16.8245 10.0758C18.7392 8.55799 21.3085 7.08973 21.7947 7.61552C22.5982 8.47863 22.5288 16.6929 21.7947 17.4766C21.3482 17.9627 18.7589 16.4945 16.8245 14.9866\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M2.61914 12.5385C2.61914 7.12973 4.41578 5.32715 9.80764 5.32715C15.1985 5.32715 16.9952 7.12973 16.9952 12.5385C16.9952 17.9462 15.1985 19.7497 9.80764 19.7497C4.41578 19.7497 2.61914 17.9462 2.61914 12.5385Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n case 'star-empty': {\n return (\n <svg viewBox=\"0 0 13 12\" {...svgProps}>\n <path\n d=\"M2 5.2767L5.11944 4.81796L6.70023 2L7.96487 4.81796L11 5.51699L8.75527 7.64684L9.18735 11L6.42623 9.40534L3.62295 10.7925L4.21311 7.64684L2 5.2767Z\"\n stroke=\"black\"\n />\n </svg>\n );\n }\n case 'star-filled': {\n return (\n <svg viewBox=\"0 0 13 12\" {...svgProps}>\n <path\n d=\"M2 5.2767L5.11944 4.81796L6.70023 2L7.96487 4.81796L11 5.51699L8.75527 7.64684L9.18735 11L6.42623 9.40534L3.62295 10.7925L4.21311 7.64684L2 5.2767Z\"\n fill=\"black\"\n stroke=\"black\"\n />\n </svg>\n );\n }\n case 'cog-wheel': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.273 2.68498V1C15.273 0.447715 14.8253 0 14.273 0H9.72754C9.17525 0 8.72754 0.447715 8.72754 1V2.6852C8.72754 3.20708 8.09656 3.46843 7.72754 3.09941L6.53588 1.90775C6.14536 1.51723 5.51219 1.51723 5.12167 1.90775L1.90755 5.12187C1.51702 5.5124 1.51702 6.14556 1.90755 6.53609L3.09865 7.72719C3.46767 8.09621 3.20632 8.72719 2.68444 8.72719H1C0.447715 8.72719 0 9.1749 0 9.72719V14.2726C0 14.8249 0.447715 15.2726 1 15.2726H2.68534C3.20722 15.2726 3.46857 15.9036 3.09955 16.2726L1.90793 17.4643C1.51741 17.8548 1.51741 18.488 1.90793 18.8785L5.12205 22.0926C5.51258 22.4831 6.14574 22.4831 6.53627 22.0926L7.72754 20.9013C8.09656 20.5323 8.72754 20.7937 8.72754 21.3155V23C8.72754 23.5523 9.17525 24 9.72754 24H14.273C14.8253 24 15.273 23.5523 15.273 23V21.3158C15.273 20.7939 15.904 20.5325 16.273 20.9015L17.4639 22.0924C17.8544 22.483 18.4876 22.483 18.8781 22.0924L22.0922 18.8783C22.4828 18.4878 22.4828 17.8546 22.0922 17.4641L20.9008 16.2726C20.5317 15.9036 20.7931 15.2726 21.315 15.2726H23C23.5523 15.2726 24 14.8249 24 14.2726V9.72719C24 9.1749 23.5523 8.72719 23 8.72719H21.3159C20.794 8.72719 20.5326 8.09621 20.9017 7.72719L22.0926 6.53625C22.4831 6.14572 22.4831 5.51256 22.0926 5.12203L18.8785 1.90791C18.488 1.51739 17.8548 1.51739 17.4643 1.90791L16.273 3.0992C15.904 3.46822 15.273 3.20686 15.273 2.68498ZM16.5792 4.20716C16.263 4.52345 15.7775 4.58532 15.3687 4.40375C15.2439 4.34832 15.1174 4.29587 14.9895 4.2465C14.5723 4.08555 14.273 3.69861 14.273 3.25149V2C14.273 1.44771 13.8253 1 13.273 1H10.7275C10.1753 1 9.72754 1.44772 9.72754 2V3.25116C9.72754 3.69832 9.42816 4.08528 9.01096 4.2462C8.88288 4.29561 8.75633 4.34809 8.6314 4.40357C8.22262 4.58511 7.73715 4.52323 7.42087 4.20695L6.53588 3.32196C6.14536 2.93144 5.51219 2.93144 5.12167 3.32196L3.32176 5.12187C2.93124 5.5124 2.93124 6.14556 3.32176 6.53609L4.20676 7.42109C4.52303 7.73736 4.58491 8.22283 4.40338 8.63161C4.34797 8.75638 4.29555 8.88276 4.2462 9.01067C4.08526 9.42784 3.69831 9.72719 3.25118 9.72719H2C1.44772 9.72719 1 10.1749 1 10.7272V13.2726C1 13.8249 1.44772 14.2726 2 14.2726H3.2511C3.69825 14.2726 4.0852 14.572 4.24614 14.9892C4.29556 15.1173 4.34807 15.2439 4.40357 15.3688C4.58513 15.7776 4.52327 16.2631 4.20698 16.5794L3.32215 17.4643C2.93162 17.8548 2.93162 18.488 3.32215 18.8785L5.12205 20.6784C5.51258 21.0689 6.14574 21.0689 6.53627 20.6784L7.42136 19.7933C7.73762 19.477 8.22305 19.4151 8.63183 19.5966C8.75662 19.6521 8.88302 19.7045 9.01096 19.7538C9.42816 19.9147 9.72754 20.3017 9.72754 20.7489V22C9.72754 22.5523 10.1753 23 10.7275 23H13.273C13.8253 23 14.273 22.5523 14.273 22V20.7485C14.273 20.3014 14.5723 19.9145 14.9895 19.7535C15.1173 19.7042 15.2436 19.6518 15.3682 19.5965C15.777 19.4149 16.2625 19.4768 16.5788 19.7931L17.4639 20.6782C17.8544 21.0687 18.4876 21.0687 18.8781 20.6782L20.678 18.8783C21.0685 18.4878 21.0685 17.8546 20.678 17.4641L19.7929 16.579C19.4766 16.2627 19.4147 15.7772 19.5963 15.3684C19.6517 15.2436 19.7042 15.1172 19.7535 14.9892C19.9145 14.572 20.3014 14.2726 20.7486 14.2726H22C22.5523 14.2726 23 13.8249 23 13.2726V10.7272C23 10.1749 22.5523 9.72719 22 9.72719H20.7485C20.3013 9.72719 19.9144 9.42784 19.7535 9.01067C19.7042 8.8829 19.6518 8.75665 19.5965 8.63201C19.415 8.22324 19.4768 7.7378 19.7931 7.42154L20.6784 6.53625C21.0689 6.14572 21.0689 5.51256 20.6784 5.12203L18.8785 3.32213C18.488 2.9316 17.8548 2.9316 17.4643 3.32213L16.5792 4.20716ZM16.5999 12.0001C16.5999 14.5406 14.5404 16.6001 11.9999 16.6001C9.45939 16.6001 7.3999 14.5406 7.3999 12.0001C7.3999 9.45958 9.45939 7.40009 11.9999 7.40009C14.5404 7.40009 16.5999 9.45958 16.5999 12.0001ZM17.5999 12.0001C17.5999 15.0929 15.0927 17.6001 11.9999 17.6001C8.90711 17.6001 6.3999 15.0929 6.3999 12.0001C6.3999 8.90729 8.90711 6.40009 11.9999 6.40009C15.0927 6.40009 17.5999 8.90729 17.5999 12.0001Z\"\n fill=\"black\"\n />\n </svg>\n );\n }\n case 'zoom-in': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M21.9774 20.8287L17.9149 16.7662C17.8437 16.6957 17.76 16.639 17.668 16.5992C20.7612 12.9331 20.415 7.48045 16.883 4.23507C13.3509 0.989694 7.88848 1.10517 4.49673 4.49691C1.10499 7.88866 0.98951 13.3511 4.23489 16.8831C7.48027 20.4152 12.9329 20.7614 16.599 17.6682C16.6388 17.7601 16.6955 17.8439 16.766 17.9151L20.8285 21.9776C21.1457 22.2948 21.6601 22.2948 21.9774 21.9776C22.2947 21.6603 22.2947 21.1459 21.9774 20.8287ZM10.8404 18.1531C6.80186 18.1531 3.52794 14.8792 3.52794 10.8406C3.52794 6.80204 6.80186 3.52813 10.8404 3.52813C14.879 3.52813 18.1529 6.80204 18.1529 10.8406C18.1483 14.8773 14.8771 18.1484 10.8404 18.1531Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10.8749 6.75003C11.2892 6.75003 11.6249 7.08581 11.6249 7.50003V14.25C11.6249 14.6642 11.2892 15 10.8749 15C10.4607 15 10.1249 14.6642 10.1249 14.25V7.50003C10.1249 7.08581 10.4607 6.75003 10.8749 6.75003Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.74994 10.875C6.74994 10.4608 7.08573 10.125 7.49994 10.125H14.2499C14.6642 10.125 14.9999 10.4608 14.9999 10.875C14.9999 11.2892 14.6642 11.625 14.2499 11.625H7.49994C7.08573 11.625 6.74994 11.2892 6.74994 10.875Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n case 'zoom-out': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M22.1025 20.9536L18.04 16.8911C17.9688 16.8206 17.8851 16.764 17.7931 16.7241C20.8864 13.0581 20.5401 7.60539 17.0081 4.36001C13.476 1.11463 8.0136 1.23011 4.62185 4.62185C1.23011 8.0136 1.11463 13.476 4.36001 17.0081C7.60539 20.5401 13.0581 20.8864 16.7241 17.7931C16.764 17.8851 16.8206 17.9688 16.8911 18.04L20.9536 22.1025C21.2709 22.4198 21.7853 22.4198 22.1025 22.1025C22.4198 21.7853 22.4198 21.2709 22.1025 20.9536ZM10.9656 18.2781C6.92698 18.2781 3.65306 15.0041 3.65306 10.9656C3.65306 6.92698 6.92698 3.65306 10.9656 3.65306C15.0041 3.65306 18.2781 6.92698 18.2781 10.9656C18.2734 15.0022 15.0022 18.2734 10.9656 18.2781Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.87506 11C6.87506 10.5858 7.21085 10.25 7.62506 10.25H14.3751C14.7893 10.25 15.1251 10.5858 15.1251 11C15.1251 11.4142 14.7893 11.75 14.3751 11.75H7.62506C7.21085 11.75 6.87506 11.4142 6.87506 11Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n case 'download': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M22.5 11.1346V18.4038C22.498 20.1873 21.0527 21.6326 19.2692 21.6346H4.73077C2.94731 21.6326 1.50204 20.1873 1.5 18.4038V11.1346C1.5 10.6885 1.86162 10.3269 2.30769 10.3269C2.75377 10.3269 3.11538 10.6885 3.11538 11.1346V18.4038C3.1164 19.2956 3.83904 20.0182 4.73077 20.0192H19.2692C20.161 20.0182 20.8836 19.2956 20.8846 18.4038V11.1346C20.8846 10.6885 21.2462 10.3269 21.6923 10.3269C22.1384 10.3269 22.5 10.6885 22.5 11.1346ZM11.1434 16.2663C11.6167 16.7388 12.3832 16.7388 12.8565 16.2663L17.4172 11.7057C17.7326 11.3903 17.7326 10.8789 17.4172 10.5635C17.1018 10.2481 16.5904 10.2481 16.275 10.5635L12.8076 14.0308V3.05769C12.8076 2.61162 12.446 2.25 11.9999 2.25C11.5539 2.25 11.1923 2.61162 11.1923 3.05769V14.0308L7.72485 10.5636C7.40946 10.2482 6.89812 10.2482 6.58273 10.5636C6.26734 10.8789 6.26734 11.3903 6.58273 11.7057L11.1434 16.2663Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n case 'lightbox-close': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.2621 18.1129C19.4674 18.3182 19.5475 18.6173 19.4724 18.8977C19.3973 19.178 19.1783 19.397 18.8979 19.4721C18.6176 19.5472 18.3184 19.4671 18.1132 19.2619L12.1877 13.3363L6.26214 19.2619C6.0569 19.4671 5.75776 19.5472 5.47741 19.4721C5.19705 19.397 4.97807 19.178 4.90294 18.8977C4.82782 18.6173 4.90798 18.3182 5.11321 18.1129L11.0388 12.1874L5.11321 6.26186C4.90798 6.05663 4.82782 5.75749 4.90294 5.47713C4.97807 5.19678 5.19705 4.97779 5.47741 4.90267C5.75776 4.82755 6.0569 4.9077 6.26214 5.11294L12.1877 11.0385L18.1132 5.11294C18.4305 4.79567 18.9449 4.79567 19.2621 5.11294C19.5794 5.4302 19.5794 5.9446 19.2621 6.26186L13.3366 12.1874L19.2621 18.1129Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n case 'pagination-left': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.7935 18.7087C16.0092 18.9029 16.105 19.1974 16.0447 19.4813C15.9844 19.7652 15.7772 19.9954 15.5012 20.0852C15.2251 20.1749 14.9222 20.1105 14.7065 19.9164L6.58148 12.6039C6.41027 12.4498 6.3125 12.2303 6.3125 12C6.3125 11.7697 6.41027 11.5503 6.58148 11.3962L14.7065 4.08372C15.04 3.78354 15.5536 3.81054 15.8538 4.14402C16.154 4.4775 16.127 4.99119 15.7935 5.29136L8.33939 12L15.7935 18.7087Z\"\n fill=\"#222222\"\n />\n </svg>\n );\n }\n case 'pagination-right': {\n return (\n <svg viewBox=\"0 0 24 24\" {...svgProps}>\n <path d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\" />\n </svg>\n );\n }\n default:\n break;\n }\n\n return null;\n }\n case 'FontAwesome': {\n return (\n <Icon\n className={className}\n faIcon={content}\n title={text}\n {...(other as React.ComponentProps<'i'>)}\n />\n );\n }\n default:\n case 'Text': {\n return text ? (\n <i\n className={appendClassNames(className, 'humany-letter-symbol')}\n title={text}\n {...sharedProps}\n {...(other as React.ComponentProps<'i'>)}\n >\n {text.substring(0, 2)}\n </i>\n ) : null;\n }\n }\n};\n\nconst CaretUp = styled.svg`\n transform: rotate(180deg);\n`;\n\nexport default SymbolBadge;\n","import styled from '@emotion/styled';\nimport React from 'react';\nimport { useContext } from '../hooks';\n\nexport type TypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span';\n\nconst defaultVariantMapping: {\n [key in TypographyVariant]: TypographyVariant;\n} = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n p: 'p',\n span: 'span',\n};\n\nexport type Props = {\n variant: TypographyVariant;\n component?: React.ElementType;\n className?: string;\n children?: React.ReactNode;\n};\n\nconst Typography: React.FC<Props> = ({ variant, component, className, children }) => {\n const { typographyVariantMapping = {} } = useContext();\n\n const variantMapping = {\n ...defaultVariantMapping,\n ...typographyVariantMapping,\n };\n\n const Component = component || variantMapping[variant] || 'span';\n\n return (\n <Base className={className} as={Component}>\n {children}\n </Base>\n );\n};\n\nconst Base = styled.span``;\n\nexport default Typography;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { appendClassNames, uuid } from '@telia-ace/widget-utilities';\nimport React, { useEffect, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport {\n useEventListener,\n useKeyPress,\n usePrevious,\n useScroll,\n useToggle,\n useUniqueMenu,\n useWidgetEvent,\n} from '../../hooks';\nimport { CloseButton } from '../../styles';\nimport Portal from '../portal';\nimport SymbolBadge from '../symbol-badge';\nimport Typography from '../typography';\n\nexport enum AnimationType {\n SlideInLeft = 'slide-in-left',\n SlideInRight = 'slide-in-right',\n SlideInBottom = 'slide-in-bottom',\n SlideInTop = 'slide-in-top',\n // Fade = 'fade',\n}\n\ntype AnimationComponentProps = {\n duration: number;\n fullScreen: boolean;\n className?: string;\n clientHeight?: number;\n};\n\nexport type Props = {\n header?: string | React.ReactNode;\n className?: string;\n animation?: {\n type: AnimationType;\n duration?: number;\n };\n trigger: React.ReactElement;\n fullScreen?: boolean;\n closeButtonAriaLabel?: string;\n onToggle?: (visible: boolean) => void;\n children: React.ReactNode;\n};\n\nconst defaultDuration = 300;\n\nconst Drawer: React.FC<Props> = ({\n className,\n children,\n header,\n onToggle,\n trigger,\n fullScreen = false,\n closeButtonAriaLabel,\n animation = {\n type: AnimationType.SlideInBottom,\n },\n}) => {\n const { duration = defaultDuration } = animation;\n\n const closeButtonRef = useRef<HTMLButtonElement>();\n const triggerRef = useRef() as React.MutableRefObject<HTMLElement>;\n const [css, ref] = useScroll(true);\n const [visible, toggleVisible] = useToggle();\n const previousVisible = usePrevious(visible);\n const id = useRef(uuid());\n\n useEffect(() => {\n if (onToggle) {\n onToggle(visible);\n }\n }, [visible]);\n\n const esc = useKeyPress('Escape');\n\n useEffect(() => {\n if (esc) {\n toggleVisible(false);\n }\n }, [esc]);\n\n useEventListener(\n 'click',\n (event: MouseEvent) => {\n const { target } = event;\n\n if (!triggerRef.current || !ref.current || !target) {\n return;\n }\n\n if (\n triggerRef.current !== target &&\n ref.current !== target &&\n !ref.current.contains(target as Node) &&\n !triggerRef.current.contains(target as Node)\n ) {\n toggleVisible(false);\n }\n },\n window\n );\n\n const closeMenus = useUniqueMenu(id.current, () => {\n toggleVisible(false);\n });\n\n useWidgetEvent('router:changed', () => {\n toggleVisible(false);\n });\n\n useEffect(() => {\n if (visible && closeButtonRef.current) {\n closeButtonRef.current.focus();\n } else if (!visible && triggerRef.current && previousVisible) {\n triggerRef.current.focus();\n }\n }, [visible, closeButtonRef.current, triggerRef.current]);\n\n const WrapperWithAnimation = animations[animation.type] as any;\n\n return (\n <>\n <CSSTransition\n in={visible}\n className=\"humany-drawer-transition\"\n classNames=\"humany-drawer-transition\"\n unmountOnExit\n timeout={duration}\n >\n <Portal>\n <WrapperWithAnimation\n duration={duration}\n fullScreen={fullScreen}\n className={appendClassNames(\n className,\n 'humany-drawer',\n `humany-drawer-${id.current}`\n )}\n clientHeight={document.body.clientHeight}\n css={css}\n ref={ref}\n >\n <CloseButton\n onClick={() => toggleVisible(false)}\n tabIndex={0}\n ref={closeButtonRef}\n aria-label={closeButtonAriaLabel}\n >\n <SymbolBadge symbol={{ type: 'Svg', content: 'close' }} />\n </CloseButton>\n {!!header && (\n <Header variant=\"h1\" className=\"humany-drawer-header\">\n {header}\n </Header>\n )}\n {children}\n </WrapperWithAnimation>\n </Portal>\n </CSSTransition>\n {React.cloneElement(trigger, {\n onClick: (event: React.MouseEvent) => {\n toggleVisible();\n closeMenus();\n },\n ref: triggerRef,\n 'aria-label': trigger.props.title,\n 'aria-expanded': visible,\n })}\n </>\n );\n};\n\nexport default Drawer;\n\nconst Wrapper = styled.div<{ css?: string }>`\n font-family: ${(p) => p.theme.fonts?.type};\n font-size: ${(p) => p.theme.fonts?.normal};\n position: fixed;\n bottom: 0;\n left: 0;\n border: ${(p) => p.theme.border};\n width: 100%;\n box-shadow: ${(p) => p.theme.boxShadow};\n background: #ffffff;\n ${(p) => p.css && p.css}\n`;\n\nconst Header = styled(Typography)`\n padding: ${(p) => p.theme.sizes?.normal};\n margin: 0;\n text-align: center;\n border-bottom: #eeeeee 1px solid;\n background: #ffffff;\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: bold;\n color: ${(p) => p.theme.colors?.text};\n font-size: ${(p) => p.theme.fonts?.normal};\n line-height: 1.2em;\n`;\n\nconst AnimationBase = (p: AnimationComponentProps) => css`\n transition: ${p.duration}ms;\n`;\n\nconst WrapperWithSlideInBottom = styled(Wrapper)<AnimationComponentProps>`\n max-height: 0;\n ${AnimationBase}\n\n &.humany-drawer-transition-enter {\n max-height: 0;\n }\n &.humany-drawer-transition-enter-active,\n &.humany-drawer-transition-enter-done,\n &.humany-drawer-transition-exit {\n max-height: ${(p) => (p.fullScreen ? '100%' : '400px')};\n }\n\n &.humany-drawer-transition-exit-active,\n &.humany-drawer-transition-exit-done {\n max-height: 0;\n }\n`;\n\nconst WrapperWithSlideInRight = styled(Wrapper)<AnimationComponentProps>`\n ${AnimationBase}\n transform: translateX(100%);\n height: ${(p) => (p.fullScreen ? '100%' : 'auto')};\n\n &.humany-drawer-transition-enter {\n transform: translateX(100%);\n }\n &.humany-drawer-transition-enter-active,\n &.humany-drawer-transition-enter-done,\n &.humany-drawer-transition-exit {\n transform: translateX(0);\n }\n\n &.humany-drawer-transition-exit-active,\n &.humany-drawer-transition-exit-done {\n transform: translateX(100%);\n }\n`;\n\nconst WrapperWithSlideInLeft = styled(Wrapper)<AnimationComponentProps>`\n ${AnimationBase}\n transform: translateX(-100%);\n height: ${(p) => (p.fullScreen ? '100%' : 'auto')};\n\n &.humany-drawer-transition-enter {\n transform: translateX(-100%);\n }\n &.humany-drawer-transition-enter-active,\n &.humany-drawer-transition-enter-done,\n &.humany-drawer-transition-exit {\n transform: translateX(0);\n }\n\n &.humany-drawer-transition-exit-active,\n &.humany-drawer-transition-exit-done {\n transform: translateX(-100%);\n }\n`;\n\nconst WrapperWithSlideInTop = styled(Wrapper)<AnimationComponentProps>`\n ${AnimationBase}\n bottom: unset;\n top: 0;\n height: 0;\n\n &.humany-drawer-transition-enter {\n height: 0;\n }\n &.humany-drawer-transition-enter-active,\n &.humany-drawer-transition-enter-done,\n &.humany-drawer-transition-exit {\n height: ${(p) => p.clientHeight}px;\n }\n\n &.humany-drawer-transition-exit-active,\n &.humany-drawer-transition-exit-done {\n height: 0;\n }\n`;\n\nconst animations: { [key in AnimationType]: React.ComponentType<AnimationComponentProps> } = {\n [AnimationType.SlideInBottom]: WrapperWithSlideInBottom,\n [AnimationType.SlideInRight]: WrapperWithSlideInRight,\n [AnimationType.SlideInLeft]: WrapperWithSlideInLeft,\n [AnimationType.SlideInTop]: WrapperWithSlideInTop,\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nexport const usePosition = (\n visible: boolean,\n id: string,\n element?: HTMLDivElement\n): [{ x: number; y: number }, (event: React.MouseEvent, trigger?: HTMLElement) => void] => {\n const [posX, setPosX] = useState(0);\n const [posY, setPosY] = useState(0);\n\n const set = useCallback(\n (event: React.MouseEvent, trigger?: HTMLElement) => {\n event.preventDefault();\n if (trigger) {\n const clientRect = trigger.getBoundingClientRect();\n setPosX(Math.max(document.body.clientWidth - clientRect.right, 1));\n setPosY(clientRect.bottom + window.scrollY);\n }\n },\n [posX, posY, setPosX, setPosY]\n );\n\n useEffect(() => {\n if (!element || !visible) {\n return;\n }\n\n const clientRect = element.getBoundingClientRect();\n const newPos = {\n x: posX,\n y: posY,\n };\n\n if (clientRect.left < 0) {\n newPos.x = 0;\n }\n\n if (clientRect.bottom > window.innerHeight) {\n newPos.y = 0;\n }\n\n if (newPos.x !== posX) {\n setPosX(newPos.x);\n }\n if (newPos.y !== posY) {\n setPosY(newPos.y);\n }\n }, [element, visible, id]);\n\n return [{ x: posX, y: posY }, set];\n};\n\nexport default usePosition;\n","import styled from '@emotion/styled';\nimport { appendClassNames, uuid } from '@telia-ace/widget-utilities';\nimport React, {\n ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport {\n useEventListener,\n useKeyPress,\n usePrevious,\n useUniqueMenu,\n useWidgetEvent,\n} from '../../hooks';\nimport { CloseButton, contentBox } from '../../styles';\nimport Portal from '../portal';\nimport SymbolBadge from '../symbol-badge';\nimport usePosition from './use-position';\n\nexport type Props = {\n className?: string;\n children?: any;\n trigger: ReactElement;\n closeButtonAriaLabel?: string;\n};\n\nconst Dropdown = React.forwardRef<HTMLDivElement, Props>(\n ({ className = '', children = null, trigger, closeButtonAriaLabel, ...props }, ref) => {\n const closeButtonRef = useRef<HTMLButtonElement>();\n const triggerRef = useRef<HTMLElement>();\n const innerRef = useRef() as React.MutableRefObject<HTMLDivElement>;\n useImperativeHandle(ref, () => innerRef.current as any, [innerRef.current]);\n const id = useRef(uuid());\n const [visible, setVisible] = useState(false);\n const previousVisible = usePrevious(visible);\n const [{ x, y }, set] = usePosition(visible, id.current, innerRef.current);\n const esc = useKeyPress('Escape');\n\n useEffect(() => {\n if (esc) {\n setVisible(false);\n }\n }, [esc]);\n\n useEffect(() => {\n if (visible && closeButtonRef.current) {\n closeButtonRef.current.focus();\n } else if (!visible && triggerRef.current && previousVisible) {\n triggerRef.current.focus();\n }\n }, [visible, closeButtonRef.current, triggerRef.current]);\n\n useEventListener(\n 'click',\n (event: MouseEvent) => {\n const { target } = event;\n\n if (!innerRef.current || !target) {\n return;\n }\n\n if (innerRef.current !== target && !innerRef.current.contains(target as Node)) {\n setVisible(false);\n }\n },\n window\n );\n\n useWidgetEvent('router:changed', () => {\n setVisible(false);\n });\n\n const closeMenus = useUniqueMenu(id.current, () => {\n setVisible(false);\n });\n\n const onTriggerClick = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n set(event, triggerRef.current);\n setVisible(!visible);\n closeMenus();\n },\n [closeMenus, set, setVisible]\n );\n\n return (\n <>\n {visible && (\n <Portal>\n <StyledDropdown\n className={appendClassNames(\n 'humany-dropdown',\n `humany-dropdown-${id.current}`,\n className\n )}\n {...props}\n x={x}\n y={y}\n ref={innerRef}\n >\n <CloseButton\n onClick={() => setVisible(false)}\n tabIndex={0}\n ref={closeButtonRef}\n aria-label={closeButtonAriaLabel}\n >\n <SymbolBadge symbol={{ type: 'Svg', content: 'close' }} />\n </CloseButton>\n {children}\n </StyledDropdown>\n </Portal>\n )}\n {React.cloneElement(trigger, {\n onClick: onTriggerClick,\n ref: triggerRef,\n 'aria-label': trigger.props.title,\n 'aria-expanded': visible,\n })}\n </>\n );\n }\n);\n\nexport default Dropdown;\n\nconst StyledDropdown = styled.div<any>`\n ${contentBox}\n padding: ${(p) => p.theme.sizes?.medium};\n min-width: 150px;\n position: absolute;\n box-shadow: ${(p) => p.theme.boxShadow};\n\n ${(p: any) => {\n let css = '';\n\n if (p.y > 0) {\n css += `top: calc(${p.theme.sizes?.small || '0px'} + ${p.y || '0'}px);`;\n } else {\n css += `bottom: ${p.theme.sizes?.normal || '0px'};`;\n }\n\n if (p.x > 0) {\n css += `right: ${p.x || '0'}px;`;\n } else {\n css += `left: ${p.theme.sizes?.normal || '0px'};`;\n }\n\n return css;\n }};\n`;\n","import styled from '@emotion/styled';\nimport React from 'react';\n\nexport type Props = {};\n\nconst Empty: React.FC<Props> = ({ ...other }) => {\n return <Wrapper {...other} />;\n};\n\nexport default Empty;\n\nconst Wrapper = styled.div`\n display: none;\n`;\n","import styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport { convertToStringAttributes, filterCssProps, filterCssPropsStyle } from '../utils';\n\nexport type Props = Merge<\n React.ComponentProps<'div'>,\n {\n columns: number;\n gap: string;\n }\n>;\n\nexport default forwardRef<HTMLDivElement, Props>(\n ({ children, columns, gap, className, ...other }, ref) => {\n return (\n <Div\n className={appendClassNames(className, 'humany-grid')}\n data-columns={columns}\n data-gap={gap}\n {...filterCssProps(other)}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {children}\n </Div>\n );\n }\n);\n\nconst Div = styled.div<\n {\n 'data-columns': number;\n 'data-gap': string;\n } & any\n>`\n display: grid;\n grid-template-columns: repeat(${(p) => p['data-columns']}, 1fr);\n grid-gap: ${(p) => p['data-gap']};\n justify-content: center;\n grid-auto-rows: max-content;\n ${filterCssPropsStyle}\n`;\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef, useEffect, useState } from 'react';\nimport { useContainer } from '../hooks';\nimport { convertToStringAttributes, defaultRenderInstructions, processHtmlString } from '../utils';\n\nexport type HtmlParseInstruction = {\n transform: {\n [htmlTag: string]: (props: any) => JSX.Element;\n };\n};\n\nexport type Props = Merge<\n React.ComponentProps<'div'>,\n {\n html: string;\n htmlParseInstruction?: HtmlParseInstruction;\n }\n>;\n\nexport default forwardRef<HTMLDivElement, Props>(\n ({ htmlParseInstruction = null, className, html, ...other }, ref) => {\n const container = useContainer();\n const [processedHtml, setProcessedHtml] = useState();\n\n useEffect(() => {\n const defaultInstructions = defaultRenderInstructions(container, html);\n\n const instructions = {\n ...defaultInstructions,\n ...htmlParseInstruction,\n transform: {\n ...defaultInstructions.transform,\n ...htmlParseInstruction?.transform,\n },\n };\n const processed = processHtmlString(html, instructions);\n setProcessedHtml(processed);\n }, [html, htmlParseInstruction]);\n\n return (\n <div\n className={appendClassNames(className, 'humany-html')}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {processedHtml}\n </div>\n );\n }\n);\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { convertToStringAttributes } from '../utils';\n\nexport type Props = Merge<\n React.HTMLProps<HTMLElement>,\n {\n className?: string;\n faIcon: string;\n }\n>;\n\nconst Icon: React.FC<Props> = ({\n faIcon,\n title,\n className = '',\n role = 'presentation',\n ...other\n}) => {\n return (\n <i\n className={appendClassNames(className, `fa fa-${faIcon}`)}\n title={title}\n role={role}\n {...convertToStringAttributes(other)}\n />\n );\n};\n\nexport default Icon;\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { convertToStringAttributes } from '../utils';\n\nexport type Props = Merge<\n React.ComponentProps<'input'>,\n {\n onChange?: (value: string) => void;\n onEnter?: (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n onEscape?: (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n onFocusChange?: (focused: boolean) => void;\n selectAllOnFocus?: boolean;\n }\n>;\n\nexport default forwardRef<HTMLInputElement | HTMLTextAreaElement, Props>(\n (\n {\n className = '',\n autoFocus = false,\n onFocusChange = () => {},\n onEnter = () => {},\n onEscape = () => {},\n selectAllOnFocus,\n onChange = () => {},\n disabled = false,\n type,\n ...other\n },\n ref\n ) => {\n const [hasFocus, setHasFocus] = useState(autoFocus);\n const innerRef = useRef<HTMLInputElement | HTMLTextAreaElement>();\n useImperativeHandle(ref, () => innerRef.current as any);\n useEffect(() => {\n if (autoFocus) {\n innerRef?.current?.focus();\n }\n }, [autoFocus, ref, innerRef]);\n\n const handleFocus = (inFocus: boolean, event: any) => {\n setHasFocus(inFocus);\n onFocusChange && onFocusChange(inFocus);\n if (selectAllOnFocus && inFocus) {\n event.target.select();\n }\n };\n\n const props = {\n ...convertToStringAttributes(other),\n disabled,\n autoFocus,\n type,\n onKeyDown: (e) => {\n if (e.key === 'Enter' && hasFocus) {\n onEnter(e);\n }\n\n if (e.key === 'Escape' && hasFocus) {\n onEscape(e);\n }\n },\n onFocus: (e) => handleFocus(true, e),\n onBlur: (e) => handleFocus(false, e),\n onChange: (e) => onChange(e.target.value || ''),\n className: appendClassNames(className, 'humany-input'),\n 'data-type': type,\n } as React.ComponentProps<'input'>;\n\n return type !== 'textarea' ? (\n <input\n {...(props as React.ComponentProps<'input'>)}\n ref={innerRef as React.Ref<HTMLInputElement>}\n />\n ) : (\n <textarea\n {...(props as React.ComponentProps<'textarea'>)}\n ref={innerRef as React.Ref<HTMLTextAreaElement>}\n />\n );\n }\n);\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport { convertToStringAttributes } from '../utils';\n\nexport type ItemRenderer = (\n item: any,\n index: number,\n items: any[],\n defaultRenderer?: ItemRenderer\n) => React.ReactNode;\n\nexport type Props = Merge<\n React.ComponentProps<'ul'>,\n {\n renderItem: ItemRenderer;\n items: any[];\n renderLi?: boolean;\n }\n>;\n\nexport default forwardRef<HTMLUListElement, Props>(\n ({ className, items, renderItem, renderLi = false, ...other }, ref) => {\n return (\n <ul\n className={appendClassNames(className, 'humany-list')}\n data-item-count={items.length}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {items.map((item, index, items) =>\n renderLi ? (\n <li className=\"humany-list-item\" key={item.id || index}>\n {renderItem(item, index, items)}\n </li>\n ) : (\n renderItem(item, index, items)\n )\n )}\n </ul>\n );\n }\n);\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport { convertToStringAttributes } from '../utils';\nimport Html, { Props as HtmlProps } from './html';\nimport SymbolBadge, { Symbol } from './symbol-badge';\nimport Text from './text';\nimport Typography from './typography';\n\nexport type Props = Merge<\n HtmlProps,\n {\n text?: string;\n html?: string;\n header?: string;\n symbol?: Symbol;\n }\n>;\n\nexport default forwardRef<HTMLDivElement, Props>(\n ({ text, html, header, className, htmlParseInstruction, symbol, ...other }, ref) => {\n return (\n <div\n className={appendClassNames(className, 'humany-paragraph')}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {header ? (\n <Typography variant=\"h1\">\n {symbol ? <SymbolBadge symbol={symbol} /> : null}\n {header}\n </Typography>\n ) : null}\n {html ? <Html html={html} htmlParseInstruction={htmlParseInstruction} /> : null}\n {text ? <Text>{text}</Text> : null}\n </div>\n );\n }\n);\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport { convertToStringAttributes } from '../utils';\nimport List, { Props as ListProps } from './list';\nimport Paragraph, { Props as ParagraphProps } from './paragraph';\n\nexport type ItemListProps = {\n customHeader?: any;\n ulProps?: any;\n};\n\nexport type Props = Merge<ListProps, ParagraphProps> & ItemListProps;\n\nexport default forwardRef<HTMLDivElement, Props>(\n (\n {\n header,\n customHeader,\n text,\n html,\n className,\n children,\n symbol,\n items,\n renderItem,\n renderLi,\n ulProps,\n ...other\n },\n ref\n ) => {\n return (\n <div\n className={appendClassNames(className, 'humany-item-list')}\n data-item-count={items.length}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {customHeader ? (\n customHeader\n ) : header || text || html ? (\n <Paragraph symbol={symbol} header={header} text={text} html={html} />\n ) : null}\n {items.length ? (\n <List items={items} renderItem={renderItem} renderLi={renderLi} {...ulProps} />\n ) : null}\n {children}\n </div>\n );\n }\n);\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { ItemList } from '.';\nimport { convertToStringAttributes } from '../utils';\n\nexport type Props = {\n className?: string;\n tree?: any[];\n rootItem?: any;\n renderUnselected?: boolean;\n renderItem: (props: any, level: number, isSelected: boolean) => JSX.Element;\n renderEmpty?: boolean;\n ulProps?: any;\n liProps?: any;\n};\n\nconst ItemTree: React.FC<Props> = ({\n className = '',\n tree,\n renderItem,\n rootItem,\n renderUnselected = true,\n renderEmpty = true,\n ulProps,\n liProps,\n}) => {\n const hasSelectedChildren = (items: any[]) => {\n return !checkIfSelected(items);\n };\n\n /**\n * Checks if the selected item is actually selected or just expanded by\n * checking if any of its immediate children has selection active\n * @param items\n */\n const checkIfSelected = (items: any[]) => {\n if (!items || items.length < 1) {\n return true;\n }\n return !items.some((item) => !!item.selected);\n };\n\n const renderTreeItems = (treeItems: any, level: number) => {\n return (\n <ItemList\n className={appendClassNames(`humany-item-tree-level-${level}`)}\n items={treeItems}\n ulProps={ulProps}\n renderItem={(itemProps: any) => {\n const { id, selected, items, matches } = itemProps;\n const isSelected = selected && checkIfSelected(items);\n\n if (!renderEmpty && !matches) {\n return null;\n }\n\n return (\n <li\n {...convertToStringAttributes(liProps)}\n key={id}\n className={'humany-item-tree-item'}\n >\n {renderItem && renderItem(itemProps, level, isSelected)}\n {items &&\n (renderUnselected || isSelected) &&\n renderTreeItems(items, level + 1)}\n </li>\n );\n }}\n ></ItemList>\n );\n };\n\n return (\n <div className={appendClassNames(className, 'humany-item-tree')}>\n {rootItem && rootItem(!hasSelectedChildren(tree || []))}\n {tree && renderTreeItems(tree, 1)}\n </div>\n );\n};\n\nexport default ItemTree;\n","import styled from '@emotion/styled';\nimport { getSpecificWidgetPath, HistoryMode, Route } from '@telia-ace/widget-routing';\nimport { appendClassNames, Logger } from '@telia-ace/widget-utilities';\nimport React, { ElementType, forwardRef } from 'react';\nimport { Link } from 'react-router-dom';\nimport { useContainer, useRouter } from '../hooks';\n\nexport type Props = Merge<\n React.ComponentProps<'a'>,\n {\n disabled?: boolean;\n name?: string;\n params?: { [key: string]: any };\n to?: string;\n as?: ElementType<any>;\n }\n>;\n\nexport default forwardRef<HTMLAnchorElement, Props>(\n (\n { className, onClick = () => {}, name = '', to = '', params = {}, children, ...other },\n forwardedRef\n ) => {\n const router = useRouter();\n const container = useContainer();\n\n if (!router) {\n return null;\n }\n\n let path = '';\n\n const props = {\n onClick,\n className: appendClassNames(className, 'humany-route-link'),\n to: path,\n innerRef: forwardedRef,\n ...other,\n ref: null,\n };\n\n if (name) {\n const routes: Route[] = router.routes || [];\n\n const route: Optional<Route> = routes.find((r) => r.name === name);\n\n if (!route) {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(`Unable to create route. No route named \"${name}\" exist.`);\n }\n return (\n <Link\n {...props}\n onClick={(e) => {\n onClick(e);\n e.preventDefault();\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(`Unable to navigate. No route named \"${name}\" exist.`);\n }\n }}\n >\n {children}\n </Link>\n );\n }\n\n const encodedParams = Object.keys(params).reduce<{ [key: string]: any }>((acc, key) => {\n acc[key] =\n typeof params[key] === 'string' ? encodeURIComponent(params[key]) : params[key];\n return acc;\n }, {});\n\n try {\n path = router.generate(name, encodedParams || {});\n } catch (e) {\n return <Link {...props}>{children}</Link>;\n }\n\n if (\n path &&\n router.settings.mode &&\n router.settings.mode === HistoryMode.browser &&\n path[0] !== '/'\n ) {\n path = `/${path}`;\n }\n } else if (to && router.history) {\n path = router.history.createHref({\n hash: '',\n pathname: to,\n search: '',\n state: undefined,\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n 'Unable to generate path for route link. Either specify route name or use the \"to\" prop.'\n );\n }\n\n return null;\n }\n\n // Get the path for the specific widget\n if (router.settings && router.settings.mode === HistoryMode.scopedHash) {\n const widgetName = container.get('$widget').name;\n path = getSpecificWidgetPath(path, widgetName);\n }\n\n if (props.as) {\n return (\n <WrappedLink {...props} as={props.as}>\n {children}\n </WrappedLink>\n );\n }\n\n return (\n <Link {...props} to={path}>\n {children}\n </Link>\n );\n }\n);\n\nconst WrappedLink = styled.span``;\n","import styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { ElementType, forwardRef } from 'react';\nimport { convertToStringAttributes } from '../utils';\nimport RouteLink from './route-link';\n\nexport type Props = Merge<\n React.ComponentProps<'a'>,\n {\n disabled?: boolean;\n routeName?: string;\n params?: { [key: string]: any };\n to?: string;\n as?: ElementType<any>;\n }\n>;\n\nexport default forwardRef<HTMLAnchorElement, Props>(\n (\n {\n className,\n disabled = false,\n role = 'link',\n tabIndex = 0,\n onClick = () => {},\n onKeyDown = () => {},\n title,\n as,\n href,\n children,\n target,\n routeName,\n params,\n ...other\n },\n ref\n ) => {\n const props: Partial<Props> = {\n title,\n disabled,\n role,\n as,\n tabIndex,\n className: appendClassNames(className, 'humany-link', [!!disabled, 'humany-disabled']),\n onClick: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {\n e.persist();\n\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n onClick(e);\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLAnchorElement>) => {\n e.persist();\n\n if (disabled) {\n if (e.key !== 'Tab') {\n e.preventDefault();\n }\n return;\n }\n\n onKeyDown(e);\n },\n };\n\n return routeName ? (\n <StyledRouteLink\n name={routeName}\n params={params}\n {...props}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {children}\n </StyledRouteLink>\n ) : (\n <StyledLink\n href={href}\n target={target}\n {...props}\n {...convertToStringAttributes(other)}\n ref={ref}\n >\n {children}\n </StyledLink>\n );\n }\n);\n\nconst StyledRouteLink = styled(RouteLink)<Props>`\n ${(p) =>\n p.disabled\n ? `\n pointer-events: none;\n opacity: .7;\n `\n : 'cursor: pointer;'}\n`;\n\nconst StyledLink = styled.a<Props>`\n ${(p) =>\n p.disabled\n ? `\n pointer-events: none;\n opacity: .7;\n `\n : 'cursor: pointer;'}\n`;\n","import styled from '@emotion/styled';\nimport React, { useCallback, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport Portal from './portal';\n\nexport type Props = {\n duration?: number;\n visible: boolean;\n onClick?: (e: React.MouseEvent) => void;\n children?: React.ReactNode;\n};\n\nconst Overlay: React.FC<Props> = ({\n visible,\n duration = 500,\n children,\n onClick = () => {},\n ...other\n}) => {\n const ref = useRef();\n\n const onOverlayClick = useCallback(\n (e: React.MouseEvent) => {\n if (e.target === ref.current) {\n onClick(e);\n }\n },\n [onClick]\n );\n\n return (\n <CSSTransition\n in={visible}\n className=\"humany-overlay-transition\"\n classNames=\"humany-overlay-transition\"\n unmountOnExit\n timeout={duration}\n >\n <Portal>\n <Wrapper\n className=\"humany-overlay\"\n duration={duration}\n ref={ref}\n onClick={onOverlayClick}\n {...other}\n >\n {children}\n </Wrapper>\n </Portal>\n </CSSTransition>\n );\n};\n\nconst Wrapper = styled.div<any>`\n background: rgba(0, 0, 0, 0.6);\n min-width: 100%;\n min-height: 100%;\n position: fixed;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 7;\n\n transition: ${(p) => p.duration}ms;\n opacity: 0;\n\n &.humany-overlay-transition-enter {\n opacity: 0.1;\n }\n &.humany-overlay-transition-enter-active,\n &.humany-overlay-transition-enter-done,\n &.humany-overlay-transition-exit {\n opacity: 1;\n }\n\n &.humany-overlay-transition-exit-active,\n &.humany-overlay-transition-exit-done {\n opacity: 0;\n }\n`;\n\nexport default Overlay;\n","import { keyframes } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n loading: boolean | undefined;\n};\n\nconst spin = keyframes`\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nconst dash = keyframes`\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -35px;\n }\n 100% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -124px;\n }\n`;\n\nconst SpinnerSvg = styled.svg`\n animation: ${spin} 2s linear infinite;\n height: 100%;\n transform-origin: center center;\n width: 100%;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n margin: auto;\n transition: 200ms ease-out opacity;\n`;\n\nexport const Wrapper = styled.div<{ 'data-loading': boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n height: 100%;\n width: 100%;\n pointer-events: ${(p) => (p['data-loading'] ? 'all' : 'none')};\n display: flex;\n flex-direction: column;\n justify-content: center;\n transition: 200ms ease-out opacity;\n box-sizing: border-box;\n overflow: hidden;\n svg {\n opacity: ${(p) => (p['data-loading'] ? '1' : '0')};\n }\n`;\n\nconst Spinner = styled.div`\n position: relative;\n margin: 0 auto;\n width: 100px;\n &:before {\n content: '';\n display: block;\n padding-top: 100%;\n }\n`;\n\nconst SpinnerCircle = styled.circle`\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n animation: ${dash} 1.5s ease-in-out infinite;\n stroke-linecap: round;\n stroke: ${(p) => p.theme.colors?.primary};\n stroke-width: 2px;\n`;\n\nconst Loader: React.FC<Props> = ({ className, loading = false }) => {\n return (\n <Wrapper className={appendClassNames('humany-loader', className)} data-loading={loading}>\n <Spinner className=\"humany-spinner\">\n <SpinnerSvg viewBox=\"25 25 50 50\">\n <SpinnerCircle\n cx=\"50\"\n cy=\"50\"\n r=\"20\"\n fill=\"none\"\n stroke-width=\"2\"\n stroke-miterlimit=\"10\"\n />\n </SpinnerSvg>\n </Spinner>\n </Wrapper>\n );\n};\n\nexport default Loader;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { ZoomableImage } from './lightbox';\nimport Loader from './loader';\n\nexport type Props = {\n zoomState: number;\n image: ZoomableImage;\n changeZoom: (num: number) => void;\n};\n\nconst ZoomImg: React.FC<Props & React.ComponentProps<'img'>> = ({\n zoomState,\n image,\n changeZoom,\n ...attrs\n}) => {\n const ref = useRef<HTMLImageElement>(null);\n const [loaded, setLoaded] = useState(false);\n const [initialZoom, setInitialZoom] = useState(false);\n const { width, height, ...restStyle } = attrs.style || {};\n\n const calcInitialZoom = useCallback(() => {\n const img = ref.current;\n if (img) {\n const width = window.innerWidth / img.width;\n const height = window.innerHeight / img.height;\n const ratio = Math.min(width, height);\n if (height >= 1 && width >= 1) {\n return 1; // should display pictures that fit viewport without any zoom\n }\n return ratio;\n }\n return 1;\n }, [loaded, image.src]);\n\n const imageSize = useMemo(() => {\n const img = ref.current;\n if (img) {\n if (!initialZoom) {\n setInitialZoom(true);\n const zoom = calcInitialZoom();\n changeZoom(zoom);\n }\n if (img.width >= img.height) {\n return [`${zoomState * image.originalWidth}px`, 'auto'];\n } else {\n return ['auto', `${zoomState * image.originalHeight}px`];\n }\n }\n return null;\n }, [zoomState, ref, loaded, image.src]);\n\n useEffect(() => {\n setLoaded(false);\n return function cleanup() {\n setInitialZoom(false);\n };\n }, [image.src]);\n\n return (\n <>\n <StyledLoader loading={!loaded} />\n <Img\n onLoad={() => {\n setLoaded(true);\n }}\n ref={ref}\n imageSize={imageSize}\n draggable=\"false\"\n {...attrs}\n alt={attrs.alt?.toString() || ''}\n style={restStyle}\n src={image.src}\n loaded={loaded}\n />\n <EmptyDiv />\n </>\n );\n};\n\nconst StyledLoader = styled(Loader)`\n svg circle {\n stroke: #ffffff;\n }\n`;\n\nconst Img = styled.img<{ loaded: boolean; imageSize: [string, string] | null } & any>`\n transform: none;\n\n ${(props) =>\n props.imageSize &&\n css`\n width: ${props.imageSize[0]};\n height: ${props.imageSize[1]};\n display: inline-block;\n `}\n vertical-align: middle;\n position: relative;\n ${(props) => !props.loaded && 'display:none;'}\n`;\n\nconst EmptyDiv = styled.div`\n height: 100%;\n display: inline-block;\n vertical-align: middle;\n`;\n\nexport default ZoomImg;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { FC, forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useKeyPress } from '../hooks';\nimport { borderTabStyle } from '../styles';\nimport Button from './button';\nimport Link from './link';\nimport Overlay from './overlay';\nimport SymbolBadge from './symbol-badge';\nimport Typography from './typography';\nimport ZoomImg from './zoomable-img';\n\nexport type Props = {\n attrs: React.DetailedHTMLProps<React.HtmlHTMLAttributes<HTMLImageElement>, HTMLImageElement>;\n htmlBody: string;\n children?: React.ReactNode;\n};\n\nconst useFadeOut = (): [boolean, Function] => {\n const timeOut = useRef<NodeJS.Timeout>();\n const [show, setShow] = useState(true);\n const triggerChange = useCallback(() => {\n if (!show) setShow(true);\n if (timeOut.current) {\n clearTimeout(timeOut.current);\n }\n timeOut.current = setTimeout(() => {\n setShow(false);\n }, 3000);\n\n return () => {\n if (timeOut.current) {\n clearTimeout(timeOut.current);\n }\n };\n }, [show, timeOut]);\n return [show, triggerChange];\n};\n\nexport interface ZoomableImage {\n src: string;\n originalWidth: number;\n originalHeight: number;\n}\n\nconst Lightbox: FC<Props> = ({ attrs, htmlBody }) => {\n const esc = useKeyPress('Escape');\n const left = useKeyPress('ArrowLeft');\n const right = useKeyPress('ArrowRight');\n const [zoomState, setZoomState] = useState(1);\n const [scroll, setScroll] = useState({ top: 0, left: 0, x: 0, y: 0 });\n const [scrolling, setScrolling] = useState(false);\n const [show, triggerFadeOut] = useFadeOut();\n const [openImage, setOpenImage] = useState<number | null>(null);\n const [previousDirection, setPreviousDirection] = useState<'Left' | 'Right' | null>(null);\n const imageLinkRef = useRef<HTMLAnchorElement | null>(null);\n const topButtonsRef = useRef<HTMLDivElement | null>(null);\n const navigationButtonsRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (esc) {\n setOpenImage(null);\n }\n }, [esc]);\n\n useEffect(() => {\n setZoomState(1);\n }, [openImage]);\n\n useEffect(() => {\n if (openImage === null || topButtonsRef.current === null) {\n return;\n }\n\n const firstButton = topButtonsRef.current.firstElementChild as HTMLButtonElement;\n\n const leftButton = navigationButtonsRef.current?.querySelector('.nav-left');\n const rightButton = navigationButtonsRef.current?.querySelector('.nav-right');\n if (previousDirection === 'Right') {\n if (canNavigateRight && rightButton) {\n (rightButton as any).focus();\n } else if (canNavigateLeft && leftButton) {\n (leftButton as any).focus();\n }\n } else if (previousDirection === 'Left') {\n if (canNavigateLeft && leftButton) {\n (leftButton as any).focus();\n } else if (canNavigateRight && rightButton) {\n (rightButton as any).focus();\n }\n } else {\n if (!firstButton) {\n return;\n }\n firstButton.focus();\n }\n }, [openImage, topButtonsRef, navigationButtonsRef, previousDirection]);\n\n useEffect(() => {\n if (left) {\n if (canNavigateLeft) return navLeft();\n } else if (right) if (canNavigateRight) return navRight();\n }, [left, right]);\n\n const imageList = useMemo((): ZoomableImage[] => {\n const div = document.createElement('div');\n div.innerHTML = htmlBody || '';\n const images = div.getElementsByTagName('img');\n const list = Array.from(images).reduce<ZoomableImage[]>((acc, imgElement) => {\n const src = imgElement.getAttribute('src');\n const height = imgElement.height || Number.parseInt(imgElement.style.height, 10);\n const width = imgElement.width || Number.parseInt(imgElement.style.width, 10);\n if (src) {\n const img: ZoomableImage = {\n src: src,\n originalWidth: width,\n originalHeight: height,\n };\n acc.push(img);\n }\n return acc;\n }, []);\n return list;\n }, [htmlBody]);\n\n const toggleVisible = useCallback(() => {\n const { src } = attrs as React.HTMLProps<HTMLImageElement>;\n if (src) {\n const position = imageList.findIndex((item, i) => {\n return item.src === src;\n });\n setOpenImage(position);\n }\n }, [imageList, attrs]);\n\n const overlayClick = useCallback((e: React.MouseEvent) => {\n setOpenImage(null);\n }, []);\n\n const changeZoomState = useCallback(\n (zoomIn: boolean) => {\n if (zoomIn) {\n setZoomState(zoomState + zoomState * 0.25);\n } else {\n setZoomState(zoomState - zoomState * 0.25);\n }\n },\n [setZoomState, zoomState]\n );\n\n const downloadImage = useCallback(() => {\n if (openImage !== null) {\n const { src } = imageList[openImage];\n if (src) {\n window.open(src, '_self');\n }\n }\n }, [imageList, openImage]);\n\n const mouseDownHandler = useCallback(\n (e: any) => {\n const ele = contentRef.current;\n if (ele) {\n setScroll({ top: ele.scrollTop, left: ele.scrollLeft, x: e.clientX, y: e.clientY });\n setScrolling(true);\n }\n },\n [contentRef]\n );\n\n const mouseDragHandler = useCallback(\n (e: any) => {\n const ele = contentRef.current;\n if (ele && scrolling) {\n const dx = e.clientX - scroll.x;\n const dy = e.clientY - scroll.y;\n ele.scrollTop = scroll.top - dy;\n ele.scrollLeft = scroll.left - dx;\n }\n },\n [scrolling, scroll]\n );\n\n const mouseStopDragHandler = (e: any) => {\n e.preventDefault();\n setScrolling(false);\n };\n\n const isDraggable = useMemo(() => {\n if (contentRef.current) {\n const imageElements = contentRef.current.getElementsByTagName('img');\n if (imageElements && imageElements.length) {\n const imgElement = imageElements[0];\n return (\n imgElement.width > window.innerWidth || imgElement.height > window.innerHeight\n );\n }\n }\n return false;\n }, [contentRef, zoomState]);\n\n const navLeft = () => {\n if (openImage !== null) {\n setPreviousDirection('Left');\n setOpenImage(openImage - 1);\n }\n };\n\n const navRight = () => {\n if (openImage !== null) {\n setPreviousDirection('Right');\n setOpenImage(openImage + 1);\n }\n };\n\n const canNavigateLeft = openImage !== null && openImage > 0 && imageList.length > 1;\n\n const canNavigateRight = openImage !== null && imageList.length - 1 > openImage;\n\n return (\n <>\n <Overlay visible={openImage !== null} onClick={overlayClick}>\n <DraggableArea\n onMouseDown={() => triggerFadeOut()}\n onMouseMove={() => triggerFadeOut()}\n onTouchStart={() => triggerFadeOut()}\n onKeyDown={() => triggerFadeOut()}\n >\n <TransparentBarTop show={show.toString()}>\n <TopRightButtons\n ref={topButtonsRef}\n buttons={[\n {\n id: 'download',\n onClick: downloadImage,\n icon: 'download',\n ariaLabel: 'Download image',\n },\n {\n id: 'lightbox-close',\n onClick: () => setOpenImage(null),\n icon: 'lightbox-close',\n ariaLabel: 'Close',\n },\n ]}\n />\n </TransparentBarTop>\n <Content\n scrolling={scrolling.toString()}\n isDraggable={isDraggable.toString()}\n ref={contentRef}\n onMouseMove={mouseDragHandler}\n onMouseDown={mouseDownHandler}\n onMouseUp={mouseStopDragHandler}\n >\n {openImage !== null && (\n <ZoomImg\n changeZoom={(value: number) => {\n setZoomState(value);\n }}\n zoomState={zoomState}\n {...attrs}\n image={imageList[openImage]}\n ></ZoomImg>\n )}\n </Content>\n <CenterEdgeButtons\n ref={navigationButtonsRef}\n show={show.toString()}\n buttons={[\n {\n id: 'previous',\n onClick: navLeft,\n icon: 'caret-left',\n circle: true,\n show: canNavigateLeft,\n className: 'nav-left',\n ariaLabel: 'Navigate to previous image',\n },\n {\n id: 'next',\n onClick: navRight,\n icon: 'caret-right',\n circle: true,\n show: canNavigateRight,\n className: 'nav-right',\n ariaLabel: 'Navigate to next image',\n },\n ]}\n />\n <TransparentBarBottom show={show.toString()}>\n <BottomCenterButtons\n buttons={[\n {\n id: 'zoom-out',\n onClick: () => changeZoomState(false),\n icon: 'zoom-out',\n ariaLabel: 'Zoom out',\n },\n {\n id: 'zoom-in',\n onClick: () => changeZoomState(true),\n icon: 'zoom-in',\n ariaLabel: 'Zoom in',\n },\n ]}\n />\n <ZoomLevel variant=\"span\">{Math.trunc(zoomState * 100)}%</ZoomLevel>\n </TransparentBarBottom>\n </DraggableArea>\n </Overlay>\n <StyledLink\n ref={imageLinkRef}\n onClick={toggleVisible}\n onKeyDown={(e) => {\n if (e.key !== 'Enter') {\n return;\n }\n e.preventDefault();\n toggleVisible();\n }}\n tabIndex={0}\n >\n <Thumbnail {...(attrs as any)} alt={(attrs as any).alt?.toString() || ''} />\n </StyledLink>\n </>\n );\n};\n\ntype ButtonSetProps = {\n className?: string;\n show?: string;\n buttons: {\n id: string;\n icon: string;\n onClick: React.MouseEventHandler<HTMLButtonElement>;\n circle?: boolean;\n show?: boolean;\n className?: string;\n ariaLabel?: string;\n }[];\n};\n\nconst ButtonSet = forwardRef<HTMLDivElement, ButtonSetProps>(\n ({ show = 'true', buttons, className }, ref) => {\n return (\n <ButtonSetWrapper\n ref={ref}\n show={show}\n className={appendClassNames('humany-button-set', className)}\n >\n {buttons.map(\n (\n { id, circle = false, show = true, ariaLabel, onClick, icon, className },\n index\n ) => (\n <ButtonSetButton\n key={id + index.toString()}\n circle={circle.toString()}\n onClick={onClick}\n tabIndex={!show ? -1 : undefined}\n show={show.toString()}\n icon={icon}\n className={className}\n aria-label={ariaLabel}\n >\n <SymbolBadge size={24} symbol={{ type: 'Svg', content: icon }} />\n </ButtonSetButton>\n )\n )}\n </ButtonSetWrapper>\n );\n }\n);\n\nconst FadingDiv = styled.div<{ show: string }>`\n transition: opacity 0.3s ease 0s;\n z-index: 5;\n ${(p) =>\n p.show === 'true'\n ? 'opacity: 1;'\n : css`\n opacity: 0;\n pointer-events: none;\n `}\n`;\n\nconst StyledLink = styled(Link)`\n display: inline-block !important;\n`;\n\nconst ButtonSetWrapper = styled(FadingDiv)`\n position: fixed;\n display: flex;\n gap: ${(p) => p.theme.sizes?.normal};\n`;\n\nconst BUTTON_SIZE = '39px';\n\nconst ButtonSetButton = styled(Button)<{ circle: string; show: string; icon: string }>`\n width: ${BUTTON_SIZE};\n height: ${BUTTON_SIZE};\n display: flex;\n justify-content: center;\n align-items: center;\n\n ${(p) =>\n p.icon === 'caret-left' &&\n css`\n svg {\n position: relative;\n left: -2px;\n }\n `}\n\n ${(p) =>\n p.circle === 'true'\n ? css`\n background-color: #ffffff;\n border-radius: 50%;\n\n svg {\n path,\n line {\n stroke: ${p.theme.colors?.text};\n }\n }\n\n &:focus-visible {\n ${borderTabStyle(p)}\n outline-color: #ffffff;\n background-color: transparent;\n\n svg {\n path,\n line {\n stroke: #ffffff;\n }\n }\n }\n `\n : css`\n svg {\n path,\n line {\n stroke: #ffffff;\n }\n }\n &:focus {\n outline-color: #ffffff;\n }\n &:focus-visible {\n ${borderTabStyle(p)}\n }\n `}\n\n ${(p) =>\n p.show === 'true'\n ? css`\n opacity: 0.8;\n transition: opacity 0.3s ease 0s;\n &:hover {\n opacity: 1;\n }\n `\n : css`\n opacity: 0;\n pointer-events: none;\n `}\n`;\n\nconst TopRightButtons = styled(ButtonSet)`\n top: ${(p) => p.theme.sizes?.large};\n right: ${(p) => p.theme.sizes?.large};\n`;\n\nconst BottomCenterButtons = styled(ButtonSet)`\n bottom: ${(p) => p.theme.sizes?.large};\n width: 100%;\n align-items: center;\n justify-content: center;\n`;\n\nconst CenterEdgeButtons = styled(ButtonSet)`\n display: block;\n button {\n position: fixed;\n top: calc(50% - calc(${BUTTON_SIZE} / 2));\n &:first-child {\n left: ${(p) => p.theme.sizes?.large};\n }\n &:last-child {\n right: ${(p) => p.theme.sizes?.large};\n }\n }\n`;\n\nconst ZoomLevel = styled(Typography)`\n position: fixed;\n bottom: ${(p) => p.theme.sizes?.large};\n right: ${(p) => p.theme.sizes?.large};\n color: #ffffff;\n font-size: ${(p) => p.theme.fonts?.medium};\n font-family: ${(p) => p.theme.fonts?.type};\n`;\n\nconst TransparentBar = styled(FadingDiv)`\n position: absolute;\n width: 100vw;\n height: 88px;\n left: 0px;\n z-index: 5;\n`;\n\nconst DraggableArea = styled.div`\n width: 100%;\n`;\n\nconst TransparentBarTop = styled(TransparentBar)`\n top: 0px;\n background-image: linear-gradient(to bottom, rgb(34, 34, 34, 0.8), rgba(34, 34, 34, 0));\n`;\n\nconst TransparentBarBottom = styled(TransparentBar)`\n bottom: 0px;\n background-image: linear-gradient(to top, rgb(34, 34, 34, 0.8), rgba(34, 34, 34, 0));\n`;\n\nconst Content = styled.div<{ isDraggable: string; scrolling: string }>`\n width: 100%;\n height: 100vh;\n overflow: auto;\n text-align: center;\n vertical-align: middle;\n white-space: nowrap;\n justify-content: center;\n cursor: ${(p) =>\n p.isDraggable === 'true' ? (p.scrolling === 'true' ? 'grabbing' : 'grab') : 'auto'};\n`;\n\nconst Thumbnail = styled.img`\n cursor: pointer;\n`;\n\nexport default Lightbox;\n","import styled from '@emotion/styled';\nimport { appendClassNames, uuid } from '@telia-ace/widget-utilities';\nimport React, { forwardRef, useCallback, useEffect, useImperativeHandle, useRef } from 'react';\nimport { useKeyPress, useScroll, useToggle, useUniqueMenu, useWidgetEvent } from '../../hooks';\nimport { CloseButton, contentBox } from '../../styles';\nimport Overlay from '../overlay';\nimport SymbolBadge from '../symbol-badge';\n\nexport type Props = Merge<\n {\n trigger: React.ReactElement;\n className?: string;\n onOverlayClick?: (e: React.MouseEvent) => void;\n close?: boolean;\n children?: React.ReactNode;\n },\n React.ComponentProps<'div'>\n>;\n\nconst Modal = forwardRef<any, Props>(\n ({ className, children, trigger, onOverlayClick = () => {}, close = false, ...other }, ref) => {\n const [visible, toggleVisible] = useToggle();\n const [css, innerRef] = useScroll(true);\n const closeButtonRef = useRef<HTMLButtonElement>();\n const id = useRef(uuid());\n\n const esc = useKeyPress('Escape');\n\n useEffect(() => {\n if (esc || close) {\n toggleVisible(false);\n }\n }, [esc, close]);\n\n useEffect(() => {\n if (visible && closeButtonRef.current) {\n closeButtonRef.current.focus();\n }\n }, [visible, closeButtonRef.current]);\n\n useWidgetEvent('router:changed', () => {\n toggleVisible(false);\n });\n\n const overlayClick = useCallback(\n (e: React.MouseEvent) => {\n toggleVisible(false);\n onOverlayClick(e);\n },\n [onOverlayClick, toggleVisible]\n );\n\n useImperativeHandle(ref, () => ({\n close() {\n toggleVisible(false);\n },\n }));\n\n const closeMenus = useCallback(() => {\n return useUniqueMenu(id.current, () => {\n toggleVisible(false);\n });\n }, [id.current]);\n\n return (\n <>\n <Overlay visible={visible} onClick={overlayClick}>\n <Wrapper\n className={appendClassNames(\n className,\n 'humany-modal',\n `humany-modal-${id.current}`\n )}\n css={css}\n tabIndex={-1}\n {...other}\n ref={innerRef}\n >\n <CloseButton\n onClick={() => toggleVisible(false)}\n tabIndex={0}\n ref={closeButtonRef}\n >\n <SymbolBadge symbol={{ type: 'Svg', content: 'close' }} />\n </CloseButton>\n {children}\n </Wrapper>\n </Overlay>\n {React.cloneElement(trigger, {\n onClick: (event: React.MouseEvent) => {\n toggleVisible();\n closeMenus();\n },\n })}\n </>\n );\n }\n);\n\nexport default Modal;\n\nconst Wrapper = styled.div<{ css?: string }>`\n font-family: ${(p) => p.theme.fonts?.type};\n font-size: ${(p) => p.theme.fonts?.normal};\n position: relative;\n max-width: 50%;\n min-width: 200px;\n padding: ${(p) => p.theme.sizes?.medium};\n ${(p) => contentBox(p)}\n ${(p) => p.css && p.css}\n outline: none;\n`;\n","import styled from '@emotion/styled';\nimport React, { useCallback, useRef } from 'react';\nimport { Button } from '..';\nimport { borderTabStyle, StyledText } from '../../styles';\nimport Modal, { Props as ModalProps } from './modal';\n\ntype Props = Merge<\n {\n header?: string;\n text?: string;\n onCancel?: () => void;\n onConfirm?: () => void;\n cancelLabel?: string;\n confirmLabel?: string;\n },\n ModalProps\n>;\n\nconst Confirm: React.FC<Props> = ({\n className,\n trigger,\n header = '',\n text = '',\n onCancel = () => {},\n onConfirm = () => {},\n cancelLabel = '',\n confirmLabel = '',\n}) => {\n const ref = useRef<any>();\n\n const cancel = useCallback(() => {\n onCancel();\n ref?.current?.close();\n }, [onCancel]);\n\n const confirm = useCallback(() => {\n onConfirm();\n ref?.current?.close();\n }, [onConfirm]);\n\n return (\n <StyledModal className={className} trigger={trigger} ref={ref} onOverlayClick={cancel}>\n {header && <StyledText>{header}</StyledText>}\n {text && <StyledText>{text}</StyledText>}\n {confirmLabel && (\n <StyledConfirmButton onClick={confirm}>{confirmLabel}</StyledConfirmButton>\n )}\n {cancelLabel && <StyledCancelButton onClick={cancel}>{cancelLabel}</StyledCancelButton>}\n </StyledModal>\n );\n};\n\nexport default Confirm;\n\nconst StyledModal = styled(Modal)`\n display: block;\n\n span {\n display: block;\n margin: 0 0 ${(p) => p.theme.sizes?.normal};\n\n &:first-of-type:not(:only-of-type) {\n font-weight: 700;\n margin: 0 0 ${(p) => p.theme.sizes?.small};\n }\n }\n`;\n\nconst StyledConfirmButton = styled(Button)`\n display: inline-block;\n min-width: 50px;\n ${(p) => `padding: ${p.theme.sizes?.small} ${p.theme.sizes?.normal};`}\n ${(p) => p.theme.borderRadius && `border-radius: ${p.theme.borderRadius};`}\n color: #FFFFFF;\n background-color: ${(p) => p.theme.colors?.primary};\n border: 1px solid ${(p) => p.theme.colors?.primary};\n\n margin: 0 ${(p) => p.theme.sizes?.small} 0 0;\n\n &:focus {\n background-color: transparent;\n }\n\n &:focus-visible {\n ${borderTabStyle}\n }\n`;\n\nconst StyledCancelButton = styled(Button)`\n display: inline-block;\n min-width: 50px;\n ${(p) => `padding: ${p.theme.sizes?.small} ${p.theme.sizes?.normal};`}\n ${(p) => p.theme.borderRadius && `border-radius: ${p.theme.borderRadius};`}\n background-color: transparent;\n color: ${(p) => p.theme.colors?.text};\n border: 1px solid ${(p) => p.theme.colors?.text};\n\n &:focus-visible {\n ${borderTabStyle};\n }\n`;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport React from 'react';\nimport { TextLink, Typography } from '../components';\nimport { headingElement } from '../utils/heading-styles';\n\nexport type Props = {\n header?: string;\n link?: string;\n suggestionHeader?: string;\n suggestion?: string;\n};\n\nconst NotFound: React.FC<Props> = ({\n header = '',\n link = '',\n suggestionHeader = '',\n suggestion = '',\n}) => {\n return (\n <Wrapper>\n <Status>\n <Typography variant=\"h2\">404</Typography>\n </Status>\n <Header>\n <Typography variant=\"h3\">{header}</Typography>\n <TextLink routeName=\"index\" aria-label={link} text={link} />\n </Header>\n <Content>\n <span>{suggestionHeader}</span>\n <ul>\n <li>{suggestion}</li>\n </ul>\n </Content>\n </Wrapper>\n );\n};\n\nexport default NotFound;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n`;\n\nconst Status = styled.div`\n ${(p) =>\n headingElement(p)(\n 'h2',\n css`\n padding: 0;\n margin: 0;\n color: gray;\n font-size: 7em;\n `\n )}\n`;\n\nconst Header = styled.div`\n margin-left: ${(p) => p.theme.sizes?.medium};\n\n ${(p) =>\n headingElement(p)(\n 'h3',\n css`\n text-transform: uppercase;\n font-size: ${p.theme.fonts?.normal};\n `\n )}\n\n a {\n color: ${(p) => p.theme.colors?.link};\n font-size: ${(p) => p.theme.fonts?.small};\n }\n`;\n\nconst Content = styled.div`\n margin-top: ${(p) => p.theme.sizes?.medium};\n min-width: 100%;\n\n span {\n font-weight: bold;\n }\n`;\n","import { Container } from '@webprovisions/platform';\nimport React, { Component } from 'react';\n\nexport type Props = {\n container: Container;\n};\n\ntype State = Readonly<{\n boundFocus: boolean;\n}>;\n\nclass TabStop extends Component<Props, State> {\n private node: HTMLDivElement | undefined;\n private onFocusListener: any;\n\n readonly state: State = {\n boundFocus: false,\n };\n\n componentWillMount() {\n const settings = this.props.container.get('accessibilitySettings');\n\n if (settings && settings.boundFocus) {\n this.setState({\n boundFocus: true,\n });\n }\n }\n\n componentDidMount() {\n if (!this.state.boundFocus) {\n return;\n }\n\n const widgetDOMElement = this.props.container.get('widgetDOMElement');\n\n if (this.node && widgetDOMElement) {\n this.onFocusListener = this.node.addEventListener('focus', () => {\n const focusable = widgetDOMElement.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n const filtered = [].filter.call(focusable, (el: any) => {\n if (typeof window === 'undefined') {\n return true;\n }\n\n const style = window.getComputedStyle(el);\n if (style.display === 'none' || (el.offsetWidth <= 0 && el.offsetHeight <= 0)) {\n return false;\n }\n return true;\n });\n\n const firstFocusable = filtered[0];\n\n if (firstFocusable) {\n (firstFocusable as any).focus();\n }\n });\n }\n }\n\n componentWillUnmount() {\n if (this.node) {\n this.node.removeEventListener('focus', this.onFocusListener);\n }\n }\n\n render() {\n if (!this.state.boundFocus) {\n return null;\n }\n\n return (\n <div\n style={{ opacity: 0 }}\n tabIndex={0}\n ref={(node: any) => {\n this.node = node;\n }}\n />\n );\n }\n}\n\nexport default TabStop;\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport Html from './html';\nimport Link, { Props as LinkProps } from './link';\nimport Text from './text';\n\nexport type Props = Merge<\n LinkProps,\n {\n text: string;\n description?: string;\n }\n>;\n\nexport default forwardRef<HTMLAnchorElement, Props>(\n ({ className, description, text, children, ...other }, ref) => {\n return (\n <Link className={appendClassNames(className, 'humany-text-link')} {...other} ref={ref}>\n {children}\n <Text>{text}</Text>\n {description ? <Html html={description} className=\"humany-description\" /> : null}\n </Link>\n );\n }\n);\n","import { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\n\nexport enum DateFormats {\n HH_MM = 'hh:mm',\n YYYY_MM_DD = 'yyyy-mm-dd',\n YYYY_MM_DD_HH_MM = 'yyyy-mm-dd hh:mm',\n}\n\nexport type Props = {\n timestamp: string;\n format?: DateFormats;\n className?: string;\n};\n\nconst Timestamp: React.FC<Props> = ({ className = '', format = DateFormats.HH_MM, timestamp }) => {\n return (\n <span className={appendClassNames(className, 'humany-timestamp')}>\n {formatDate(timestamp, format)}\n </span>\n );\n};\n\nexport default Timestamp;\n\nconst asTwoDigitString = (input: number) => {\n return `0${input}`.slice(-2);\n};\n\n/* formats date to hh:mm, yyyy-mm-dd or yyyy-mm-dd hh:mm format */\nfunction formatDate(unformattedDate: string, format: DateFormats) {\n const date = new Date(unformattedDate);\n\n const dateArray = date.toTimeString().split(' ')[0].split(':');\n\n const timeString = dateArray.length > 1 ? `${dateArray[0]}:${dateArray[1]}` : dateArray[0];\n\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const day = date.getDate();\n\n const dateString = `${year}-${asTwoDigitString(month)}-${asTwoDigitString(day)}`;\n\n if (format === DateFormats.YYYY_MM_DD) {\n return dateString;\n }\n\n if (format === DateFormats.HH_MM) {\n return timeString;\n }\n\n return `${dateString} ${timeString}`;\n}\n","import styled from '@emotion/styled';\nimport { appendClassNames, uuid } from '@telia-ace/widget-utilities';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useCursorPosition } from './dropdown';\nimport Portal from './portal';\n\nexport type Props = {\n className?: string;\n content: React.ReactNode;\n sticky: boolean;\n children?: React.ReactNode;\n};\n\nconst Tooltip: React.FC<Props> = ({ className, children, content, sticky = false, ...other }) => {\n const [open, setOpen] = useState(false);\n const id = useRef(uuid());\n const ref = useRef() as React.MutableRefObject<HTMLDivElement>;\n const [{ x, y }, set] = useCursorPosition(open, id.current, ref.current);\n\n const clickHandler = (event: MouseEvent) => {\n const { target } = event;\n\n if (!ref.current || !target) {\n return;\n }\n\n if (ref.current !== target && !ref.current.contains(target as Node)) {\n setOpen(false);\n }\n };\n\n useEffect(() => {\n if (!sticky) {\n return;\n }\n\n window.addEventListener('click', clickHandler);\n\n return () => {\n window.removeEventListener('click', clickHandler);\n };\n }, [open, sticky]);\n\n const handleMouseEvent = useCallback(\n (e: React.MouseEvent, value: boolean) => {\n set(e, ref.current);\n setOpen(value);\n },\n [set, setOpen]\n );\n\n return (\n <Trigger\n ref={ref}\n className=\"humany-tooltip-trigger\"\n onMouseEnter={!sticky ? (e) => handleMouseEvent(e, true) : undefined}\n onMouseLeave={!sticky ? (e) => handleMouseEvent(e, false) : undefined}\n onTouchEnd={sticky ? (e) => handleMouseEvent(e as any, !open) : undefined}\n onClick={sticky ? (e) => handleMouseEvent(e, !open) : undefined}\n >\n {children}\n {open && (\n <Portal>\n <TooltipContainer\n className={appendClassNames(className, 'humany-tooltip-container')}\n x={x}\n y={y}\n {...other}\n >\n {content}\n </TooltipContainer>\n </Portal>\n )}\n </Trigger>\n );\n};\n\nconst Trigger = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst TooltipContainer = styled.div<{\n x: number;\n y: number;\n}>`\n color: #ffffff;\n background: #161616;\n border-radius: ${(p) => p.theme.borderRadius};\n padding: calc(${(p) => p.theme.sizes?.small} * 2);\n font-size: ${(p) => p.theme.fonts?.normal};\n font-family: ${(p) => p.theme.fonts?.type};\n position: absolute;\n z-index: 10;\n\n a {\n color: ${(p) => (p.color ? p.color : 'inherit')};\n text-decoration: none;\n }\n\n i,\n svg {\n margin-right: ${(p) => p.theme.sizes?.small};\n }\n\n ${(p: any) => {\n let css = '';\n\n if (p.y > 0) {\n css += `top: calc(2px + ${p.y || '0'}px);`;\n } else {\n css += `bottom: 2px;`;\n }\n\n if (p.x > 0) {\n css += `right: calc(2px + ${p.x || '0'}px);`;\n } else {\n css += `left: 2px;`;\n }\n\n return css;\n }};\n`;\n\nexport default Tooltip;\n","import React from 'react';\nimport { Transition } from 'react-transition-group';\nimport { transitionComposer, TransitionStateSettings } from '../utils';\n\nexport type Props = {\n in: boolean;\n timeout?: number | { enter?: number; exit?: number };\n mountOnEnter?: boolean;\n unmountOnExit?: boolean;\n children?: any;\n transitions?: string | { enter: TransitionInfo; exit: TransitionInfo };\n};\n\ntype TransitionInfo = {\n type: string;\n easing?: string;\n};\n\n/**\n * Wrapper component for Transition from 'react-transition-group'\n * Controls animated enter/exit transitions of a child component bu dynamically creating\n * css that is forwarded to the child component.\n *\n * TODO:\n * Extend to accept more specific transitions (TransitionStateSettings) to enable different\n * enter and exit animations, timings and easings\n */\nconst TransitionComponent: React.FC<Props> = (props) => {\n const {\n in: inState,\n mountOnEnter = true,\n unmountOnExit = true,\n timeout,\n children,\n transitions,\n } = props;\n\n const generateTransitionDefinition = ():\n | { enter: TransitionStateSettings; exit: TransitionStateSettings }\n | undefined => {\n if (!transitions || transitions === 'none') {\n return;\n }\n if (typeof transitions === 'string') {\n return {\n enter: {\n transitionKeys: transitions,\n duration: !!timeout\n ? typeof timeout === 'number'\n ? timeout\n : timeout.enter\n : 200,\n easing: 'ease-in',\n },\n exit: {\n transitionKeys: transitions,\n duration: !!timeout\n ? typeof timeout === 'number'\n ? timeout\n : timeout.exit\n : 200,\n easing: 'ease-out',\n },\n };\n }\n if (typeof transitions === 'object') {\n const { enter, exit } = transitions;\n return {\n enter: {\n transitionKeys: transitions.enter?.type,\n duration: !!timeout\n ? typeof timeout === 'number'\n ? timeout\n : timeout.enter\n : 200,\n easing: !!enter.easing ? enter.easing : 'ease-in',\n },\n exit: {\n transitionKeys: transitions.enter?.type,\n duration: !!timeout\n ? typeof timeout === 'number'\n ? timeout\n : timeout.enter\n : 200,\n easing: !!exit.easing ? exit.easing : 'ease-out',\n },\n };\n }\n };\n\n const def = generateTransitionDefinition();\n\n return (\n <Transition\n timeout={{\n enter: (def && def.enter.duration) || 0,\n exit: (def && def.exit.duration) || 0,\n }}\n in={inState}\n appear={true}\n mountOnEnter={mountOnEnter}\n unmountOnExit={unmountOnExit}\n onEnter={(node: HTMLElement) => node.clientHeight}\n >\n {(state) => children && children(state, def && transitionComposer.compose(state, def))}\n </Transition>\n );\n};\n\nexport default TransitionComponent;\n","import { WidgetRenderState } from '@telia-ace/widget-core';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport { Widget, WidgetState } from '@webprovisions/platform';\nimport React, { forwardRef, useEffect } from 'react';\nimport { useContainer } from '../hooks';\nimport Link, { Props as LinkProps } from './link';\n\nexport type Props = Merge<\n LinkProps,\n {\n widgetName: string;\n activationOptions?: { [key: string]: any };\n }\n>;\n\nexport default forwardRef<HTMLAnchorElement, Props>(\n ({ className, children, onClick = () => {}, widgetName, activationOptions, ...other }, ref) => {\n const container = useContainer();\n const getWidget = () => {\n const { implementation }: Widget = container.get('$widget');\n return implementation.widgets.get(widgetName);\n };\n\n useEffect(() => {\n const widget = getWidget();\n widget?.activate(activationOptions).then(() => widget.invoke('attach'));\n return () => {\n widget?.deactivate();\n };\n }, [widgetName]);\n\n const openWidget = (\n e: React.MouseEvent<HTMLAnchorElement> | React.KeyboardEvent<HTMLAnchorElement>\n ) => {\n const widget = getWidget();\n const target = e.currentTarget;\n if (widget) {\n const toggle = () => {\n widget\n .invoke('renderState')\n .then((renderState) =>\n renderState === WidgetRenderState.open\n ? widget.invoke('close')\n : widget.invoke('open')\n )\n .then(() => {\n widget.events.subscribeOnce('widget:area-rendered', (event, data) => {\n const widgetDOMElement = container.get(\n 'widgetDOMElement'\n ) as HTMLElement;\n\n if (widgetDOMElement) {\n widget.events.dispatch('widget:modal-opened', {\n name: widget.name,\n ref: target,\n });\n }\n });\n });\n };\n if (widget.state === WidgetState.Deactivated) {\n widget\n .activate(activationOptions)\n .then(() => widget.invoke('attach'))\n .then(toggle);\n } else {\n toggle();\n }\n }\n };\n\n const onEnter = (e: React.KeyboardEvent<HTMLAnchorElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n openWidget(e);\n }\n };\n\n return (\n <Link\n className={appendClassNames(className, 'humany-widget-link')}\n onKeyDown={onEnter}\n onClick={(e) => {\n onClick(e);\n openWidget(e);\n }}\n {...other}\n ref={ref}\n >\n {children}\n </Link>\n );\n }\n);\n","import styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef, ReactNode, useMemo } from 'react';\nimport Portal from '../components/portal';\nimport useContainer from '../hooks/use-container';\n\ntype Props = {\n portalId: string;\n className?: string;\n children?: ReactNode;\n};\n\nexport const WidgetOverlayOutlet = forwardRef<HTMLDivElement, Props>(\n ({ portalId = 'humany-widget-overlay-portal', className, children }, ref) => {\n const container = useContainer();\n\n const parentElement = useMemo(() => {\n if (!container) return null;\n\n const widgetDOMElement: HTMLElement = container.get('widgetDOMElement');\n\n if (!widgetDOMElement || !widgetDOMElement.childElementCount) return null;\n\n return widgetDOMElement.children[0];\n }, [container]);\n\n if (!parentElement) {\n return null;\n }\n\n return (\n <Portal elementId={portalId} parent={parentElement}>\n <Wrapper\n className={appendClassNames('humany-widget-overlay-outlet', className)}\n ref={ref}\n >\n {children}\n </Wrapper>\n </Portal>\n );\n }\n);\n\nconst Wrapper = styled.div`\n background-color: #ffffff;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n z-index: 10;\n width: 100%;\n height: 100%;\n`;\n","import {\n ComponentResolver,\n extendComponent,\n ExtendComponentHandler,\n ExtendComponentOptions,\n ReactComponent,\n} from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { lazy } from 'react';\n\n/**\n * Registers a React component on the component platform.\n * @param container Container to register the component on.\n * @param type Type name to resolve the component from configuration.\n * @param reactComponent Promise resolving to the React component for rendering.\n * @param fn Handler for controlling the component.\n */\nconst createReactComponent = (\n container: Container,\n type: string,\n reactComponent: ReactComponent,\n fn?: ExtendComponentHandler,\n options?: ExtendComponentOptions\n) => {\n return container.getAsync('componentResolver').then((componentResolver: ComponentResolver) => {\n componentResolver.registerComponent(\n type,\n lazy(() => reactComponent)\n );\n return extendComponent(container, type, fn || (() => {}), type, options);\n });\n};\n\nexport default createReactComponent;\n","import {\n extendComponent,\n ExtendComponentHandler,\n ExtendComponentOptions,\n} from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\n\nconst createWebComponent = async (\n container: Container,\n type: string,\n registerComponent: any,\n fn?: ExtendComponentHandler,\n options?: ExtendComponentOptions\n) => {\n const componentResolver = await container.getAsync('componentResolver');\n // (componentResolver as any).registerWebComponent(\n // type,\n // () => registerComponent,\n // tag\n // );\n\n console.log('registering component', type, registerComponent);\n componentResolver.registerComponent(type, () => registerComponent);\n\n return await extendComponent(container, type, fn || (() => {}), type, options);\n};\n\nexport default createWebComponent;\n","import { css, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { html, unsafeStatic } from 'lit/static-html.js';\n\ntype HeadingTypes = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\nconst isHeadingElement = (input: string): input is HeadingTypes => {\n return ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(input);\n};\n// TODO: this component is just a placeholder for now\n\n@customElement('ui-typography')\nexport class Typography extends LitElement {\n static styles = [\n css`\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n p,\n span {\n margin: var(--typography-margin, 0);\n font-size: var(--typography-font-size, var(--fonts-normal));\n font-weight: var(--typography-font-weight, normal);\n line-height: var(--typography-line-height, inherit);\n color: var(--typography-color, var(--colors-text));\n }\n `,\n ];\n\n @property({ type: String }) variant = 'span';\n\n private _getTag(input: HeadingTypes) {\n const mappedValue = window.getComputedStyle(this).getPropertyValue(`--typography-${input}`);\n\n if (mappedValue) {\n return mappedValue.trim();\n }\n return input;\n }\n\n render() {\n const mappedTag = isHeadingElement(this.variant)\n ? this._getTag(this.variant)\n : this.variant;\n\n const tag = unsafeStatic(mappedTag);\n return html`\n <${tag}>\n <slot />\n </${tag}>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui-typography': Typography;\n }\n}\n","import { ReactiveController, ReactiveControllerHost } from 'lit';\n\n// used to listen for changes made on the component node\nexport class NodeConnector implements ReactiveController {\n host;\n\n constructor(host: ReactiveControllerHost /*container: Container*/) {\n (this.host = host).addController(this);\n }\n\n propertyChangeHandler(event: any) {\n const props: { [key: string]: any } = event.detail;\n\n Object.keys(props)\n .filter((key) => `_${key}` in this)\n .forEach((key: string) => (this[`_${key}` as keyof this] = props[key]));\n }\n\n hostConnected() {\n (this.host as any).addEventListener('set-properties', this.propertyChangeHandler);\n }\n\n hostDisconnected() {\n (this.host as any).removeEventListener('set-properties', this.propertyChangeHandler);\n }\n}\n","import { ComponentNode, ComponentPlatform } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\n\nexport class DataProvider {\n private _host: HTMLElement;\n node: ComponentNode | undefined;\n nodeId: string = '';\n container: Container | undefined;\n\n constructor(elem: HTMLElement) {\n this._host = elem;\n }\n\n async initialize() {\n this.nodeId = (this._host as any).getAttribute('nodeId');\n\n if (!this.nodeId) {\n console.warn('Could not get node id in DataProvider.');\n return;\n }\n\n this.container = this._requestInstance('container');\n\n if (!this.container) {\n console.warn('Could not get data in DataProvider. Container was not defined.');\n return;\n }\n const platform = await ComponentPlatform.getInstance(this.container);\n this.node = platform.nodes.get(this.nodeId);\n\n if (!this.node) {\n console.warn(`Could not get component node with ID: ${this.nodeId}.`);\n return;\n }\n }\n\n _requestInstance(key: string) {\n const event = new CustomEvent<{ key: string; instance?: any }>('request-instance', {\n detail: { key },\n bubbles: true,\n composed: true,\n cancelable: true,\n });\n (this._host as any).dispatchEvent(event);\n\n return event.detail.instance;\n }\n}\n","import { dedupeMixin } from '@open-wc/dedupe-mixin';\nimport { LitElement } from 'lit';\n\nexport declare class ConsumerInterface {}\nexport declare class ContextProviderInterface {}\n\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nconst connectEvent = 'context.connectEvent';\n\nexport const ConsumerMixin = dedupeMixin(\n <T extends Constructor<LitElement>>(Base: T) => {\n class ConsumerMixinClass extends Base {\n _injectedContexts: Map<string, any> = new Map();\n\n connectedCallback() {\n // if (super.connectedCallback) {\n super.connectedCallback();\n // }\n\n this._injectedContexts = new Map();\n\n for (const key of (this.constructor as any).inject) {\n this._injectContext(key);\n }\n }\n\n /**\n * Create an event and propagate it through the tree up, to find provider,\n * usbubscribe callback we save to injected contexts, to call them on unmount\n */\n _injectContext(key: string) {\n const callback = (value: any, oldValue: any) => {\n this._contextValueChanged(key, value, oldValue);\n };\n\n // Composed event because lit-element can work without shadow root\n const event = new CustomEvent(connectEvent, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: { key, connected: false, callback },\n });\n\n this.dispatchEvent(event);\n\n if (event.detail.connected) {\n this._injectedContexts.set(key, {\n unsubscribe: (event.detail as any).unsubscribe,\n });\n }\n }\n\n /**\n * Change value of property recieved from a context, then property changes\n */\n _contextValueChanged(key: string, value: any, oldValue: any) {\n if (value !== oldValue) {\n (this as any)[key] = value;\n }\n }\n\n disconnectedCallback() {\n for (const context of this._injectedContexts.values()) {\n context.unsubscribe();\n }\n\n // if (super.disconnectedCallback) {\n super.disconnectedCallback();\n // }\n }\n }\n return ConsumerMixinClass as Constructor<ConsumerInterface> & T;\n }\n);\n\nexport const ContextProviderMixin = dedupeMixin(\n <T extends Constructor<LitElement>>(Base: T) => {\n class ContextProviderClass extends Base {\n _providedContexts: Map<string, any> = new Map();\n\n connectedCallback() {\n // if (super.connectedCallback) {\n super.connectedCallback();\n // }\n\n this._providedContexts = new Map();\n\n for (const key of (this.constructor as any).provide) {\n this._provideContext(key);\n }\n }\n\n /**\n * Create a new instance of the event listener and save it in provided\n * contexts map to remove the listener on unmount.\n */\n _provideContext(key: string) {\n const listener = (event: any) => {\n const { detail } = event;\n\n if (detail.key === key) {\n event.stopPropagation();\n\n const context = this._providedContexts.get(key);\n\n context.callbacks.add(detail.callback);\n\n detail.connected = true;\n detail.unsubscribe = () => {\n context.callbacks.delete(detail.callback);\n };\n\n detail.callback((this as any)[key]);\n }\n };\n\n this.addEventListener(connectEvent, listener);\n\n this._providedContexts.set(key, {\n listener,\n callbacks: new Set(),\n });\n }\n\n /**\n * Trigger subscriber callback to provide new context value\n */\n _updateContextValue(key: string, value: any, oldValue: any) {\n if (this._providedContexts.has(key)) {\n const context = this._providedContexts.get(key);\n\n for (const callback of context.callbacks) {\n callback(value, oldValue);\n }\n }\n }\n\n /**\n * Notify listeners about property changes before render\n */\n shouldUpdate(changedProperties: any) {\n const shouldUpdate = super.shouldUpdate(changedProperties);\n\n for (const [key, oldValue] of changedProperties.entries()) {\n if ((this.constructor as any).provide.includes(key)) {\n this._updateContextValue(key, (this as any)[key], oldValue);\n }\n }\n\n return shouldUpdate;\n }\n\n disconnectedCallback() {\n for (const context of this._providedContexts.values()) {\n this.removeEventListener(connectEvent, context.listener);\n }\n\n // if (super.disconnectedCallback) {\n super.disconnectedCallback();\n // }\n }\n }\n return ContextProviderClass as Constructor<ContextProviderInterface> & T;\n }\n);\n","import { LitElement } from 'lit';\nimport { state } from 'lit/decorators.js';\n\nexport declare class PendingStateInterface {}\n\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nexport const PendingState = <T extends Constructor<LitElement>>(Base: T) => {\n class PendingStateClass extends Base {\n @state() hasPendingChildren = false;\n @state() pendingCount = 0;\n\n constructor(...args: any[]) {\n super();\n\n this.addEventListener('pending-state', async (event: any) => {\n this.hasPendingChildren = true;\n this.pendingCount++;\n\n await event.detail.promise;\n this.pendingCount--;\n this.hasPendingChildren = this.pendingCount !== 0;\n });\n }\n }\n\n return PendingStateClass as Constructor<PendingStateInterface> & T;\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 { 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","export const mapContextStyle = (ctx: { [key: string]: any }) => {\n const vars: { [key: string]: string } = {};\n if (ctx.cardinal) {\n vars['--cardinal'] = `${ctx.cardinal}px`;\n }\n if (ctx.gap) {\n vars['--gap'] = `${ctx.gap}`;\n }\n if (ctx.fonts?.type) {\n vars['--fonts-type'] = `${ctx.fonts.type}`;\n }\n if (ctx.fonts?.small) {\n vars['--fonts-small'] = `${ctx.fonts.small}`;\n }\n if (ctx.fonts?.normal) {\n vars['--fonts-normal'] = `${ctx.fonts.small}`;\n }\n if (ctx.fonts?.medium) {\n vars['--fonts-medium'] = `${ctx.fonts.medium}`;\n }\n if (ctx.fonts?.large) {\n vars['--fonts-large'] = `${ctx.fonts.large}`;\n }\n if (ctx.fonts?.huge) {\n vars['--fonts-huge'] = `${ctx.fonts.huge}`;\n }\n if (ctx.colors?.accent) {\n vars['--colors-accent'] = `${ctx.colors.accent}`;\n }\n if (ctx.colors?.link) {\n vars['--colors-link'] = `${ctx.colors.link}`;\n }\n if (ctx.colors?.primary) {\n vars['--colors-primary'] = `${ctx.colors.primary}`;\n }\n if (ctx.colors?.text) {\n vars['--colors-text'] = `${ctx.colors.text}`;\n }\n if (ctx.colors?.textLight) {\n vars['--colors-textLight'] = `${ctx.colors.textLight}`;\n }\n if (ctx.colors?.warning) {\n vars['--colors-warning'] = `${ctx.colors.warning}`;\n }\n if (ctx.accessibility?.border) {\n vars['--accessibility-border'] = `${ctx.accessibility.border}`;\n }\n if (ctx.accessibility?.colors?.inactiveText) {\n vars['--accessibility-colors-inactiveText'] = `${ctx.accessibility.colors.inactiveText}`;\n }\n if (ctx.accessibility?.colors?.activeText) {\n vars['--accessibility-colors-activeText'] = `${ctx.accessibility.colors.activeText}`;\n }\n if (ctx.inputBorder) {\n vars['--inputBorder'] = `${ctx.inputBorder}`;\n }\n if (ctx.borderRadius) {\n vars['--borderRadius'] = `${ctx.borderRadius}`;\n }\n if (ctx.boxShadow) {\n vars['--boxShadow'] = `${ctx.boxShadow}`;\n }\n if (ctx.border) {\n vars['--border'] = `${ctx.border}`;\n }\n if (ctx.sizes?.small) {\n vars['--size-small'] = `${ctx.sizes.small}`;\n }\n if (ctx.sizes?.normal) {\n vars['--size-normal'] = `${ctx.sizes.normal}`;\n }\n if (ctx.sizes?.medium) {\n vars['--size-medium'] = `${ctx.sizes.medium}`;\n }\n if (ctx.sizes?.large) {\n vars['--size-large'] = `${ctx.sizes.large}`;\n }\n\n if (ctx.typographyVariantMapping) {\n if (ctx.typographyVariantMapping.h1) {\n vars['--typography-h1'] = `${ctx.typographyVariantMapping.h1}`;\n }\n if (ctx.typographyVariantMapping.h2) {\n vars['--typography-h2'] = `${ctx.typographyVariantMapping.h2}`;\n }\n if (ctx.typographyVariantMapping.h3) {\n vars['--typography-h3'] = `${ctx.typographyVariantMapping.h3}`;\n }\n if (ctx.typographyVariantMapping.h4) {\n vars['--typography-h4'] = `${ctx.typographyVariantMapping.h4}`;\n }\n if (ctx.typographyVariantMapping.h5) {\n vars['--typography-h5'] = `${ctx.typographyVariantMapping.h5}`;\n }\n if (ctx.typographyVariantMapping.h6) {\n vars['--typography-h6'] = `${ctx.typographyVariantMapping.h6}`;\n }\n }\n\n return vars;\n};\n","import { asDescriptor, ComponentPlatform, ComponentResolver } from '@telia-ace/widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { css, html, LitElement, unsafeCSS } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { mapContextStyle } from '../utils/map-context-style';\nimport { ContextProviderMixin } from './context';\nimport { Requester } from './requester';\n\nexport declare class WidgetComponentInterface {\n requestInstance(key: string): any;\n nodeId: string;\n}\n\nexport type WidgetComponentConstructor<T = {}> = new (...args: any[]) => T;\nexport type _LitElement = LitElement;\n\nconst componentTagFromType = (type: string) => {\n const componentTagPrefix = 'w';\n return `${componentTagPrefix}-${type}`;\n};\n\nexport const WidgetComponent = <T extends WidgetComponentConstructor<_LitElement>>(Base: T) => {\n class WidgetComponentClass extends ContextProviderMixin(Requester(Base)) {\n container: Container | undefined;\n listeners: any[] = [];\n styleObserver: MutationObserver | undefined;\n\n // static properties = {\n // nodeId: { type: String },\n // branch: { type: String },\n // width: { type: String },\n // _columns: { type: Number },\n // columns: { type: Number },\n // };\n\n // constructor() {\n // super();\n // this.branch = 'default';\n // this.width = 'full';\n // this._columns = 1;\n // this.columns = 1;\n\n // }\n\n @property({ type: String })\n declare nodeId: string;\n @property({ type: String })\n declare branch;\n @property({ type: String })\n declare width;\n @property({ type: Number })\n declare _columns;\n @property({ type: Number })\n declare columns;\n\n constructor() {\n super();\n this.branch = 'default';\n this.width = 'full';\n this._columns = 1;\n this.columns = 1;\n\n this._width = 1;\n this._descriptor = null;\n this._properties = {};\n this._layout = {};\n }\n\n @state()\n declare _width;\n\n @state()\n declare _descriptor: any;\n\n @state()\n declare _properties: { [key: string]: any };\n\n @state()\n declare _context: { [key: string]: any };\n\n @state()\n declare _layout: { [key: string]: any };\n\n static get provide() {\n return ['columns', 'setColumns'];\n }\n\n setColumns = (value: number) => {\n this.columns = value;\n };\n\n setProperties(props: { [key: string]: any }) {\n if (props.columns) {\n this.columns = props.columns;\n // this._columns = props.columns;\n }\n this.dispatchEvent(\n new CustomEvent('set-properties', {\n bubbles: false,\n composed: false,\n cancelable: false,\n detail: props,\n })\n );\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.container = this.requestInstance('container');\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 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 this.setProperties(componentNode.attributes.properties);\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 this.setProperties(componentNode.attributes.properties);\n }\n }\n )\n );\n this.listeners.push(\n platform.events.subscribe(\n 'components:context-changed',\n (event, data) => {\n if (this.nodeId === data.node?.id /*&& isMounted.current*/) {\n this._context = data.node.attributes.context;\n }\n }\n )\n );\n this.listeners.push(\n platform.events.subscribe(\n 'components:layout-changed',\n (event, data) => {\n if (this.nodeId === data.node?.id /*&& isMounted.current*/) {\n this._layout = data.node.attributes.layout;\n }\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 // protected updated(\n // _changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>\n // ): void {\n // this.style.setProperty('--width', '2');\n // }\n\n _getContextStyles() {\n if (!this._context) {\n return {};\n }\n\n return mapContextStyle(this._context);\n }\n\n render() {\n const markup = super.render();\n\n const contextStyles = this._getContextStyles();\n\n const style = html`\n <style>\n :host {\n ${Object.entries(contextStyles).map(([key, value]) => {\n return css`\n ${unsafeCSS(`${key}: ${value};`)}\n `;\n })}\n }\n </style>\n `;\n\n return html`\n <style>\n :host {\n --size: ${this._layout.size || 'full'};\n --width: ${(this._layout.size || 'full') === 'full'\n ? 'var(--columns)'\n : `min(var(--columns), ${this._layout.size})`};\n grid-column: span var(--width);\n }\n </style>\n\n ${style} ${markup}\n `;\n }\n }\n\n return WidgetComponentClass as WidgetComponentConstructor<WidgetComponentInterface> & T;\n};\n"],"names":["inEnteringState","status","inExitingState","partials","transformTransitions","transitionComposer","definitions","enter","exit","inKeys","transitionProperty","css","key","inBase","outKeys","type","direction","title","Browsers","browser","opr","opera","InstallTrigger","HTMLElement","safari","documentMode","StyleMedia","chrome","CSS","isOpera","safariCheck","p","isIE","isChrome","types","convertToStringAttributes","props","result","value","sub","kebabCase","createEmptyComponent","container","React","Empty","__spreadValues","createEmptyComponent$1","isAnchorLink","href","embeddedLinkMapper","_a","_b","children","__objRest","implementation","currentWidgetName","AnchorLink","escapedBindings","binding","expArray","targetWidgetName","WidgetLink","embeddedLinkMapper$1","filterCssProps","cssProps","filterCssPropsStyle","styleString","filterCssProps$1","genericHashLink","As","hashFragment","reset","getElementAndScroll","scrollFunction","element","handleClick","e","el","scroll","smooth","to","filteredProps","__spreadProps","headingElement","style","defaultTag","prefix","match","pre","tag","mapping","parseHtmlString","html","instruction","convert","imageLightboxRenderer","htmlBody","attrs","Lightbox","defaultRenderInstructions","AnchorLink$1","Button","forwardRef","ref","className","other","StyledButton","appendClassNames","styled","Checkbox","onChange","onEnter","Checkbox$1","ContainerContext","createContext","Container","ColumnContext","ComponentNodeContext","ComponentPropertyContext","RoutingContext","ConversationContext","useComponentDescriptor","useContext","useComponentDescriptor$1","useContainer","useContainer$1","useAction","passedOrigin","passedContainer","origin","action","resolver","useAction$1","useComponentNode","id","descriptor","components","useComponentPlatform","node","setNode","useState","useEffect","useComponentNode$1","useIsMounted","isMounted","useRef","useIsMounted$1","componentPlatform","setComponentPlatform","ComponentPlatform","platform","useComponentPlatform$1","useChildren","setChildren","updateChildren","useCallback","branch","child","asDescriptor","subscribe","unsubscribe","createEventSubscriber","event","data","parentNode","useChildren$1","useColumns","useColumns$1","useComponent","passedType","component","setComponent","useComponent$1","context","setContext","useContext$1","useConversation","useConversation$1","useDispatch","queue","setQueue","actions","setActions","ComponentQuery","uuid","item","reason","resolve","reject","useDispatch$1","useEventListener","eventName","handler","condition","savedHandler","eventListener","useEvents","events","useEvents$1","useIsTabbing","isTabbing","setIsTabbing","handleKeydown","useIsTabbing$1","useKeyPress","targetKey","keyPressed","setKeyPressed","onKeyDown","onKeyUp","useKeyPress$1","useLayout","layout","setLayout","useLayout$1","usePrevious","usePrevious$1","useProperties","useProperties$1","useRenderState","renderState","setRenderState","widget","name","invoke","actionResolver","WidgetRenderState","useRenderState$1","useRouter","useRouter$1","useRouteData","router","routeData","setRouteData","params","removeNullAndUndefinedValues","useRouteData$1","useScroll","scrollable","elem","previousY","timeoutId","onScroll","onTouchStart","traverseScrollable","isScrollable","onTouchMove","top","firstScrollable","scrollTop","isAtTop","isAtBottom","styling","useSettings","settings","setSettings","useSettings$1","useToggle","initialValue","setValue","toggle","forced","v","useToggle$1","useTransitionEnd","widgetDOMElement","viewDOMElement","setViewDOMElement","rootDOMElement","setRootDOMElement","rootArea","n","view","getElement","useWidgetEvent","callback","dependencies","useWidgetEvent$1","useUniqueMenu","dispatch","_","triggeredId","useUniqueMenu$1","Text","Text$1","contentBox","buttonCss","_c","invertedHoverButton","primaryColor","secondaryColor","active","theme","disabled","borderTabStyle","linkTabStyle","paddedBorderTabStyle","CloseButton","StyledText","list","itemList","_d","genericHtml","_e","_f","Portal","elementId","parent","createPortal","Portal$1","SymbolBadge","text","backgroundSize","size","symbol","elementStyle","content","sharedProps","svgProps","CaretUp","Icon","SymbolBadge$1","defaultVariantMapping","Typography","variant","typographyVariantMapping","variantMapping","Component","Base","Typography$2","AnimationType","defaultDuration","Drawer","header","onToggle","trigger","fullScreen","closeButtonAriaLabel","animation","duration","closeButtonRef","triggerRef","visible","toggleVisible","previousVisible","esc","target","closeMenus","WrapperWithAnimation","animations","CSSTransition","Header","Drawer$1","Wrapper","AnimationBase","WrapperWithSlideInBottom","WrapperWithSlideInRight","WrapperWithSlideInLeft","WrapperWithSlideInTop","usePosition","posX","setPosX","posY","setPosY","set","clientRect","newPos","useCursorPosition","Dropdown","innerRef","useImperativeHandle","setVisible","x","y","onTriggerClick","StyledDropdown","Dropdown$1","Empty$1","grid","columns","gap","Div","Html","htmlParseInstruction","processedHtml","setProcessedHtml","defaultInstructions","instructions","processed","processHtmlString","faIcon","role","Icon$1","input","autoFocus","onFocusChange","onEscape","selectAllOnFocus","hasFocus","setHasFocus","handleFocus","inFocus","List","items","renderItem","renderLi","index","Paragraph","ItemList","customHeader","ulProps","ItemTree","tree","rootItem","renderUnselected","renderEmpty","liProps","hasSelectedChildren","checkIfSelected","renderTreeItems","treeItems","level","itemProps","selected","matches","isSelected","ItemTree$1","RouteLink","forwardedRef","onClick","path","r","Logger","Link","encodedParams","acc","HistoryMode","widgetName","getSpecificWidgetPath","WrappedLink","tabIndex","as","routeName","StyledRouteLink","StyledLink","Overlay","onOverlayClick","Overlay$1","spin","keyframes","dash","SpinnerSvg","Spinner","SpinnerCircle","Loader","loading","Loader$1","ZoomImg","zoomState","image","changeZoom","loaded","setLoaded","initialZoom","setInitialZoom","width","height","restStyle","calcInitialZoom","img","ratio","imageSize","useMemo","zoom","StyledLoader","Img","EmptyDiv","ZoomImg$1","useFadeOut","timeOut","show","setShow","triggerChange","left","right","setZoomState","setScroll","scrolling","setScrolling","triggerFadeOut","openImage","setOpenImage","previousDirection","setPreviousDirection","imageLinkRef","topButtonsRef","navigationButtonsRef","contentRef","firstButton","leftButton","rightButton","canNavigateRight","canNavigateLeft","navLeft","navRight","imageList","div","images","imgElement","src","position","i","overlayClick","changeZoomState","zoomIn","downloadImage","mouseDownHandler","ele","mouseDragHandler","dx","dy","mouseStopDragHandler","isDraggable","imageElements","DraggableArea","TransparentBarTop","TopRightButtons","Content","CenterEdgeButtons","TransparentBarBottom","BottomCenterButtons","ZoomLevel","Thumbnail","ButtonSet","buttons","ButtonSetWrapper","circle","ariaLabel","icon","ButtonSetButton","FadingDiv","BUTTON_SIZE","TransparentBar","Lightbox$1","Modal","close","Modal$1","Confirm","onCancel","onConfirm","cancelLabel","confirmLabel","cancel","confirm","StyledModal","StyledConfirmButton","StyledCancelButton","Confirm$1","NotFound","link","suggestionHeader","suggestion","Status","TextLink","NotFound$1","TabStop","focusable","firstFocusable","TabStop$1","description","DateFormats","Timestamp","format","timestamp","formatDate","Timestamp$1","asTwoDigitString","unformattedDate","date","dateArray","timeString","year","month","day","dateString","Tooltip","sticky","open","setOpen","clickHandler","handleMouseEvent","Trigger","TooltipContainer","Tooltip$1","TransitionComponent","inState","mountOnEnter","unmountOnExit","timeout","transitions","def","Transition","state","TransitionComponent$1","activationOptions","getWidget","openWidget","WidgetState","WidgetOverlayOutlet","portalId","parentElement","createReactComponent","reactComponent","fn","options","componentResolver","lazy","extendComponent","createReactComponent$1","createWebComponent","registerComponent","__async","createWebComponent$1","isHeadingElement","LitElement","mappedValue","mappedTag","unsafeStatic","__decorateClass","property","customElement","NodeConnector","host","DataProvider","connectEvent","ConsumerMixin","dedupeMixin","ConsumerMixinClass","oldValue","ContextProviderMixin","ContextProviderClass","listener","detail","changedProperties","shouldUpdate","PendingState","PendingStateClass","args","Provider","ProviderClass","instance","Requester","RequesterClass","mapContextStyle","ctx","vars","_g","_h","_i","_j","_k","_l","_m","_o","_n","_q","_p","_r","_s","_t","_u","componentTagFromType","WidgetComponent","WidgetComponentClass","values","componentNode","unmount","componentTag","create","markup","contextStyles","unsafeCSS"],"mappings":"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"}
|