@telia-ace/widget-conversation 1.0.39 → 1.0.40-next.0
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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-9e73f101.js","sources":["../src/components/conversation/ui/input.tsx","../src/components/conversation/ui/styles.tsx","../src/components/conversation/ui/loader.tsx","../src/components/conversation/ui/message-types/timestamp.tsx","../src/components/conversation/ui/message-types/agent.tsx","../src/components/conversation/ui/message-types/system.tsx","../src/components/conversation/ui/message-types/user.tsx","../src/utils/map-actions.ts","../src/components/conversation/ui/message-list-items/button-list.tsx","../src/components/conversation/ui/message-list-items/custom.tsx","../src/components/conversation/ui/message-list-items/html.tsx","../src/components/conversation/ui/message-list-items/item-list.tsx","../src/components/conversation/ui/message-list-items/link-list.tsx","../src/components/conversation/ui/message-list-items/separator.tsx","../src/components/conversation/ui/message-list-items/text.tsx","../src/components/conversation/ui/message-list-items/video-request.tsx","../src/components/conversation/ui/message-types/message-list.tsx","../src/components/conversation/ui/message.tsx","../src/components/conversation/ui/content.tsx","../src/components/conversation/ui/overlay-outlets.tsx","../src/components/conversation/conversation.tsx"],"sourcesContent":["import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n borderTabStyle,\n Button,\n Input,\n SymbolBadge,\n useDispatch,\n useIsTabbing,\n useProperties,\n useScroll,\n} from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { useEffect, useState } from 'react';\nimport { ConversationComponentProperties } from '../plugin';\n\ntype Props = {\n className?: string;\n};\n\nconst ConversationInput: React.FC<Props> = ({ className }) => {\n const [inputText, setInputText] = useState('');\n const [inputFocus, setInputFocus] = useState(false);\n const [calculatedLineHeight, setCalculatedLineHeight] = useState(0);\n const [textareaMaxHeight, setTextareaMaxHeight] = useState(0);\n const isTabbing = useIsTabbing();\n const dispatch = useDispatch();\n const {\n inputPlaceholder = 'Type your message',\n inputHidden = false,\n inputDisabled = false,\n sendButtonLabel = 'Send message',\n inputMultiline: multiline = true,\n secondaryAction,\n } = useProperties<ConversationComponentProperties>();\n const [scrollableCss, inputRef] = useScroll(true);\n\n useEffect(() => {\n if (inputRef.current) {\n const { lineHeight, maxHeight } = getComputedStyle(inputRef.current);\n if (lineHeight && lineHeight.indexOf('px') > -1) {\n const lineHeightNumber = lineHeight.split('px');\n const calcLH = parseInt(lineHeightNumber[0], 10);\n setCalculatedLineHeight(calcLH);\n const maxHeightNumber = maxHeight.split('px');\n setTextareaMaxHeight(parseInt(maxHeightNumber[0], 10));\n }\n }\n }, [inputRef.current]);\n\n const submit = (e: any) => {\n if (!e.shiftKey || !multiline) {\n e.preventDefault();\n if (inputText && inputText.length > 0) {\n dispatch('user-submit', { text: inputText });\n setInputText('');\n onChange('');\n }\n } else if (inputText.length < 1) {\n e.preventDefault();\n }\n };\n\n const onSecondaryActionButtonClick = (e: any) => {\n if (!secondaryAction) {\n return;\n }\n e.preventDefault();\n dispatch('action', {\n actionKey: secondaryAction.action,\n ...secondaryAction,\n });\n };\n\n const calculateHeight = (value: string) => {\n if (multiline && inputRef.current) {\n const scrollHeight = inputRef.current.scrollHeight;\n if (scrollHeight > calculatedLineHeight) {\n inputRef.current.style.height = 'auto';\n let areaHeight = scrollHeight;\n if (value.length < 1) {\n areaHeight = calculatedLineHeight;\n }\n inputRef.current.style.height = `${areaHeight}px`;\n\n if (areaHeight >= textareaMaxHeight) {\n inputRef.current.style.overflowY = 'scroll';\n } else {\n inputRef.current.style.overflowY = 'hidden';\n }\n }\n }\n };\n\n const onChange = (value: string) => {\n calculateHeight(value);\n setInputText(value);\n if (value && value.length > 0) {\n dispatch('user-typing', { textLength: value.length });\n }\n };\n\n if (inputHidden) {\n return null;\n }\n\n return (\n <Wrapper\n grow={multiline}\n className={appendClassNames('humany-conversation-input', className)}\n data-has-focus={inputFocus}\n scrollableCss={scrollableCss}\n isTabbing={isTabbing}\n >\n {secondaryAction && (\n <SecondaryActionButton\n disabled={inputDisabled}\n onClick={onSecondaryActionButtonClick}\n title={secondaryAction.label}\n aria-label={secondaryAction.label}\n >\n <SymbolBadge\n size={24}\n symbol={{ type: 'Svg', content: secondaryAction.icon || 'browse' }}\n />\n </SecondaryActionButton>\n )}\n {multiline ? (\n <StyledTextArea\n value={inputText}\n onChange={onChange}\n onEnter={submit}\n disabled={inputDisabled}\n aria-label={inputPlaceholder}\n placeholder={inputPlaceholder}\n onFocusChange={setInputFocus}\n type={'textarea'}\n rows={1}\n ref={inputRef}\n />\n ) : (\n <StyledInput\n value={inputText}\n onChange={onChange}\n onEnter={submit}\n disabled={inputDisabled}\n aria-label={inputPlaceholder}\n placeholder={inputPlaceholder}\n onFocusChange={setInputFocus}\n />\n )}\n <StyledButton\n disabled={inputDisabled}\n onClick={submit}\n title={sendButtonLabel}\n aria-label={sendButtonLabel}\n >\n <SendSymbol\n size={22}\n symbol={{ type: 'Svg', content: 'send' }}\n hasContent={!!inputText && !!inputText.length}\n />\n </StyledButton>\n </Wrapper>\n );\n};\n\nconst StyledTextArea = styled(Input)<any>`\n resize: none;\n flex: 1;\n flex-shrink: 1;\n min-height: 1.2em;\n max-height: 148px;\n line-height: 1.2em;\n height: 1.2em;\n padding: 0;\n margin: ${(p) => p.theme.sizes?.medium};\n font-size: ${(p) => p.theme.fonts?.normal};\n border: none;\n transition: height 200ms linear;\n outline: none;\n`;\n\nconst StyledInput = styled(Input)<any>`\n flex: 1;\n border: none;\n background-color: transparent;\n font-weight: 300;\n font-size: ${(p) => p.theme.fonts?.normal};\n line-height: 1.2em;\n outline: none;\n padding: ${(p) => p.theme.sizes?.medium};\n color: ${(p) => p.theme.colors?.text};\n &::placeholder {\n color: ${(p) => p.theme.colors?.textLight};\n font-style: italic;\n }\n`;\n\nconst StyledButton = styled(Button)<any>`\n flex: 0 0 50px;\n align-self: stretch;\n background-color: transparent;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n color: #a6a6a6;\n &:focus-visible {\n ${borderTabStyle};\n }\n`;\n\nconst SecondaryActionButton = styled(StyledButton)`\n border-right: ${(p) => p.theme.border};\n margin: ${(p) => p.theme.sizes?.normal} 0;\n`;\n\nconst Wrapper = styled.div<{ 'data-has-focus': boolean } & any>`\n ${(p) =>\n p.grow\n ? css`\n min-height: 50px;\n max-height: 150px;\n `\n : css`\n height: 50px;\n `}\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n background-color: ${(p) => p.theme.colors?.accent};\n border-top: ${(p) => p.theme.inputBorder};\n ${(p) => p['data-has-focus'] && p.isTabbing && borderTabStyle}\n textarea {\n ${(p) => !!p.scrollableCss && p.scrollableCss}\n }\n`;\n\nconst SendSymbol = styled(\n ({\n hasContent,\n ...other\n }: {\n hasContent: boolean;\n size: number;\n symbol: { type: string; content: string };\n }) => <SymbolBadge {...other} />\n)`\n line,\n path {\n stroke: ${(p) => (p.hasContent ? p.theme.colors?.primary : '#a6a6a6')};\n fill: ${(p) => (p.hasContent ? p.theme.colors?.primary : '#a6a6a6')};\n }\n`;\n\nexport default ConversationInput;\n","import { css, keyframes, Theme } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { FormComponent } from '@telia-ace/widget-forms';\nimport {\n borderTabStyle,\n buttonCss,\n Html,\n invertedHoverButton,\n List,\n Typography,\n} from '@telia-ace/widget-ui';\n\nexport const Avatar = styled.div<any>`\n width: ${(p) => p.avatarSize || '32px'};\n height: ${(p) => p.avatarSize || '32px'};\n border-radius: 50%;\n background-color: ${(p) => p.theme.colors?.accent};\n border: ${(p) => p.theme.border};\n grid-area: avatar;\n align-self: flex-end;\n justify-self: center;\n overflow: hidden;\n margin-right: 10px;\n display: flex;\n justify-content: center;\n align-items: center;\n color: ${(p) => p.theme.colors?.text};\n\n > img {\n height: 100%;\n width: 100%;\n object-fit: cover;\n }\n\n > svg {\n width: 90%;\n height: 90%;\n padding: 10%;\n color: ${(p) => p.theme.colors?.text};\n\n line,\n path,\n circle,\n fill {\n stroke: ${(p) => p.theme.colors?.text};\n }\n }\n`;\n\nexport const LoaderAnimation = keyframes`\n 0% {\n opacity: 0;\n }\n 75% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n`;\n\nexport const Loader = styled.div`\n display: flex;\n justify-content: center;\n > div {\n height: 10px;\n width: 10px;\n border-radius: 50%;\n margin: 5px;\n background-color: ${(p) => p.theme.colors?.text};\n animation: ${LoaderAnimation} 1s infinite;\n }\n > div:nth-of-type(2) {\n animation-delay: 100ms;\n }\n > div:nth-of-type(3) {\n animation-delay: 200ms;\n }\n`;\n\nexport const ContentBundle = styled.div`\n grid-area: content;\n max-width: 100%;\n overflow: hidden;\n`;\n\nexport const MessageTitle = styled(Typography)`\n font-size: ${(p) => p.theme.fonts?.normal};\n font-weight: normal;\n margin: 0;\n`;\n\nexport const MessageContainer = styled.div<{ left?: boolean; center?: boolean; right?: boolean }>`\n display: flex;\n ${(p) => p.left && 'justify-content: start;'};\n ${(p) => p.center && 'justify-content: center;'};\n ${(p) => p.right && 'justify-content: end;'};\n`;\n\nexport type Stacked = 'first' | 'last' | 'middle';\n\nexport const MessageContent = styled.div<{\n user?: boolean;\n fullWidth?: boolean;\n stacked?: Stacked;\n padded?: boolean;\n}>`\n ${(p) => p.padded && `padding: ${p.theme.sizes?.medium};`}\n ${(p) => !p.user && p.stacked && nonUserMessageStyling(p.stacked, p.theme)}\n ${(p) => p.user && p.stacked && userMessageStyling(p.stacked, p.theme)}\n\n display: inline-block;\n margin-top: ${(p) => p.theme.sizes?.normal};\n && > * {\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-all;\n word-break: break-word;\n hyphens: auto;\n }\n max-width: 100%;\n ${(p) => p.fullWidth && 'width: 100%;'}\n`;\n\nconst nonUserMessageStyling = (stacked: Stacked, theme: any) => {\n const colors = css`\n background-color: ${theme.colors?.accent};\n color: ${theme.colors?.text};\n ${theme.border && `border: ${theme.border};`};\n `;\n\n if (!theme.borderRadius) {\n return colors;\n }\n\n return css`\n ${colors}\n\n border-top-right-radius: ${theme.borderRadius};\n border-bottom-right-radius: ${theme.borderRadius};\n\n ${stacked === 'first' &&\n `\n border-top-left-radius: ${theme.borderRadius};\n `}\n\n ${stacked === 'last' &&\n `\n border-bottom-left-radius: ${theme.borderRadius};\n `}\n `;\n};\n\nconst userMessageStyling = (stacked: Stacked, theme: any) => {\n const colors = css`\n background-color: ${theme.colors?.primary};\n color: ${theme.colors?.accent};\n `;\n\n if (!theme.borderRadius) {\n return colors;\n }\n\n return css`\n ${colors}\n\n border-top-left-radius: ${theme.borderRadius};\n border-bottom-left-radius: ${theme.borderRadius};\n\n ${stacked === 'first' &&\n `\n border-top-right-radius: ${theme.borderRadius};\n `}\n\n ${stacked === 'last' &&\n `\n border-bottom-right-radius: ${theme.borderRadius};\n `}\n `;\n};\n\nexport const MessageContentPart = styled.div`\n margin-bottom: ${(p) => p.theme.sizes?.normal};\n &:last-child {\n margin-bottom: 0;\n }\n`;\n\nexport const messageContentPadding = (p: { theme: Theme }) => css`\n margin: ${p.theme.sizes?.medium} 0;\n padding: 0 ${p.theme.sizes?.medium};\n`;\n\nexport const StyledForm = styled(FormComponent)`\n & button.humany-form-component-button {\n ${(p) =>\n p.theme.colors?.primary &&\n p.theme.colors?.accent &&\n invertedHoverButton({\n active: false,\n primaryColor: p.theme.colors?.primary,\n secondaryColor: p.theme.colors?.accent,\n theme: p.theme,\n })};\n display: block;\n width: 100%;\n margin-bottom: ${(p) => p.theme.sizes?.normal};\n }\n & button.humany-form-component-submit {\n width: 100%;\n margin: 0;\n :not(:last-child) {\n margin-bottom: ${(p) => p.theme.sizes?.normal};\n }\n }\n`;\n\nexport const StyledHtml = styled(Html)<any>`\n white-space: pre-wrap;\n a {\n color: ${(p) => p.theme.colors.link};\n &:focus {\n ${(p) => p.theme.accessibility?.isTabbing && borderTabStyle};\n }\n }\n`;\n\nexport const StyledActionList = styled(List)`\n padding: 0;\n list-style: none;\n margin: 0 -${(p) => p.theme.sizes?.normal};\n > li {\n margin: ${(p) => p.theme.sizes?.normal};\n }\n`;\n\nexport const StyledActionButton = styled.button`\n ${(p) => buttonCss(p)};\n display: block;\n background-color: ${(p) => p.theme.colors?.primary};\n width: 100%;\n color: #fff;\n &:focus-visible {\n ${borderTabStyle}\n background-color: transparent;\n }\n`;\n","import React, { forwardRef } from 'react';\nimport { ConversationMessageSender } from '../../../types';\nimport { ContentBundle, Loader, MessageContainer, MessageContent } from './styles';\n\ntype Props = {\n className?: string;\n agentData?: ConversationMessageSender;\n boxed?: boolean;\n};\n\nconst ConversationLoader = forwardRef<HTMLDivElement, Props>(\n ({ boxed, className, agentData }, ref) => {\n return (\n <ContentBundle ref={ref}>\n <MessageContainer left={boxed} center={!boxed}>\n <MessageContent padded={!!boxed} stacked={boxed ? 'first' : undefined}>\n <Loader>\n <div />\n <div />\n <div />\n </Loader>\n </MessageContent>\n </MessageContainer>\n </ContentBundle>\n );\n }\n);\n\nexport default ConversationLoader;\n","import styled from '@emotion/styled';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n name?: string;\n timestamp?: number | null;\n};\n\nconst StyledTimestamp = styled.p`\n && {\n font-size: ${(p) => p.theme.fonts?.small};\n font-weight: 300;\n }\n margin: 0;\n line-height: 1.5em;\n grid-area: info;\n color: ${(p) => p.theme.colors?.text};\n`;\n\nconst getTimestamp = (raw: number) => {\n return new Date(raw).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\n};\n\nconst Timestamp: React.FC<Props> = ({ className, name, timestamp }) => {\n if (!name && !timestamp) {\n return null;\n }\n\n let output = '';\n if (name) {\n if (timestamp) {\n output = `${name}: ${getTimestamp(timestamp)}`;\n } else {\n output = name;\n }\n } else if (timestamp) {\n output = getTimestamp(timestamp);\n }\n\n return <StyledTimestamp>{output}</StyledTimestamp>;\n};\n\nexport default Timestamp;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { SymbolBadge, useProperties } from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { ConversationMessageSender } from '../../../../types';\nimport { ConversationComponentProperties } from '../../plugin';\nimport { Avatar } from '../styles';\nimport Timestamp from './timestamp';\n\ntype Props = {\n className?: string;\n children: any;\n sender: ConversationMessageSender;\n timestamp: number | null;\n};\n\nconst AgentMessage: React.FC<Props> = ({ className, children, sender, timestamp }) => {\n const { avatar, name } = sender;\n const { avatarSize } = useProperties<ConversationComponentProperties>();\n\n return (\n <StyledAgentMessage\n hasAvatar={!!avatar}\n className={appendClassNames(className, 'humany-conversation-agent-message')}\n >\n {avatar && (\n <Avatar avatarSize={avatarSize}>\n {typeof avatar === 'string' ? (\n <img src={avatar} />\n ) : (\n <SymbolBadge symbol={avatar} />\n )}\n </Avatar>\n )}\n {children}\n <Timestamp name={name} timestamp={timestamp}></Timestamp>\n </StyledAgentMessage>\n );\n};\n\nexport const StyledAgentMessage = styled.div<any>`\n display: grid;\n margin-right: 10%;\n width: 90%;\n ${(p) =>\n p.hasAvatar\n ? css`\n grid-template-columns: auto 1fr;\n grid-template-rows: 1fr auto;\n grid-template-areas:\n 'avatar content'\n '. info';\n `\n : css`\n grid-template-columns: 1fr;\n grid-template-rows: 1fr auto;\n grid-template-areas:\n 'content'\n 'info';\n `};\n`;\n\nexport default AgentMessage;\n","import styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport Timestamp from './timestamp';\n\nexport type Props = {\n className?: string;\n timestamp: number;\n discrete?: boolean;\n fullWidth?: boolean;\n children: any;\n};\n\nconst SystemMessage = forwardRef<HTMLDivElement, Props>(\n ({ className, children, timestamp, discrete, fullWidth }, ref) => {\n return (\n <StyledSystemMessage\n ref={ref}\n className={appendClassNames(className, 'humany-conversation-system-message')}\n fullWidth={fullWidth}\n >\n {discrete ? (\n <Discrete className=\"humany-conversation-discrete-message\">\n {children}\n <Timestamp timestamp={timestamp}></Timestamp>\n </Discrete>\n ) : (\n <>\n {children}\n <Timestamp timestamp={timestamp}></Timestamp>\n </>\n )}\n </StyledSystemMessage>\n );\n }\n);\n\nexport const StyledSystemMessage = styled.div<any>`\n ${(p) => p.fullWidth && 'width: 100%'};\n padding: 0 ${(p) => p.theme.sizes?.large};\n overflow: auto;\n`;\n\nexport const Discrete = styled.div`\n text-align: center;\n word-wrap: break-word;\n font-size: ${(p) => p.theme.fonts?.normal};\n color: ${(p) => p.theme.colors?.text};\n > p {\n margin: 0;\n }\n`;\n\nexport default SystemMessage;\n","import styled from '@emotion/styled';\nimport { useProperties } from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { ConversationComponentProperties } from '../../plugin';\nimport Timestamp from './timestamp';\n\nexport type Props = {\n className?: string;\n timestamp: number;\n children: any;\n};\n\nconst UserMessage: React.FC<Props> = ({ className, children, timestamp }) => {\n const { userLabel = '' } = useProperties<ConversationComponentProperties>();\n return (\n <StyledUserMessage\n className={appendClassNames(className, 'humany-conversation-user-message')}\n >\n {children}\n <Timestamp name={userLabel} timestamp={timestamp}></Timestamp>\n </StyledUserMessage>\n );\n};\n\nconst StyledUserMessage = styled.div`\n margin-left: 10%;\n width: 90%;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\n\nexport default UserMessage;\n","export const mapActions = (actions: any) =>\n Array.isArray(actions)\n ? actions\n : Object.keys(actions).map((i) => {\n return {\n label: actions[i],\n actionKey: i,\n };\n });\n","import styled from '@emotion/styled';\nimport {\n borderTabStyle,\n Button,\n buttonCss,\n DispatchAction,\n ItemList,\n itemList,\n SymbolBadge,\n} from '@telia-ace/widget-ui';\nimport React, { FC } from 'react';\nimport { ButtonListProperties } from '../../../../types';\nimport { mapActions } from '../../../../utils/map-actions';\nimport { messageContentPadding } from '../styles';\n\ntype Props = { dispatch: DispatchAction } & ButtonListProperties;\n\nexport const ButtonList: FC<Props> = ({ header, actions, dispatch }) => {\n return (\n <StyledButtonList\n className=\"humany-conversation-button-list\"\n header={header}\n items={mapActions(actions)}\n renderItem={(item: any) => {\n return (\n <li key={item.actionKey}>\n <StyledButtonListButton\n onClick={() => {\n dispatch('action', item);\n }}\n aria-label={item.label}\n title={item.label}\n >\n <SymbolBadge symbol={item.symbol} />\n {item.label}\n </StyledButtonListButton>\n </li>\n );\n }}\n />\n );\n};\n\nconst StyledButtonList = styled(ItemList)`\n ${itemList}\n > ul {\n display: flex;\n flex-wrap: wrap;\n gap: ${(p) => p.theme.sizes?.normal};\n > li {\n margin: 0;\n }\n }\n ${messageContentPadding}\n`;\n\nconst StyledButtonListButton = styled(Button)`\n ${buttonCss};\n\n display: block;\n padding: ${(p) => p.theme.sizes?.normal};\n background-color: ${(p) => p.theme.colors?.primary};\n width: 100%;\n color: #ffffff;\n overflow: hidden;\n text-overflow: ellipsis;\n &:focus-visible {\n ${borderTabStyle}\n background-color: transparent;\n }\n\n i,\n svg {\n margin-right: ${(p) => p.theme.sizes?.small};\n }\n`;\n","import { useComponent } from '@telia-ace/widget-ui';\nimport React, { Suspense } from 'react';\n\ntype Props = {\n type: string;\n content?: { [key: string]: any };\n};\nexport const Custom: React.FC<Props> = ({ type, content = {} }) => {\n const Component = useComponent(type);\n\n if (!Component || !type) {\n return null;\n }\n return (\n <Suspense fallback={null}>\n <Component {...content} />\n </Suspense>\n );\n};\n","import styled from '@emotion/styled';\nimport { borderTabStyle, genericHtml, Html as UiHtml } from '@telia-ace/widget-ui';\nimport React, { FC } from 'react';\nimport { HtmlProperties } from '../../../../types';\nimport { messageContentPadding } from '../styles';\n\ntype Props = HtmlProperties;\n\nexport const Html: FC<Props> = ({ body }) => {\n return <StyledHtml html={body} />;\n};\n\nconst StyledHtml = styled(UiHtml)<any>`\n ${genericHtml}\n color: inherit;\n white-space: pre-wrap;\n ${messageContentPadding}\n a {\n color: ${(p) => p.theme.colors.link};\n &:focus-visible {\n ${borderTabStyle};\n }\n }\n`;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n borderTabStyle,\n Button,\n DispatchAction,\n headingElement,\n itemList,\n ItemList as ItemListUi,\n SymbolBadge,\n} from '@telia-ace/widget-ui';\nimport React, { FC } from 'react';\nimport { LinkListProperties } from '../../../../types';\nimport { mapActions } from '../../../../utils/map-actions';\nimport { messageContentPadding } from '../styles';\n\ntype Props = { dispatch: DispatchAction } & LinkListProperties;\n\nexport const ItemList: FC<Props> = ({ header, actions, dispatch }) => {\n return (\n <StyledItemList\n className=\"humany-conversation-item-list\"\n header={header}\n items={mapActions(actions)}\n renderItem={(item: any) => {\n return (\n <li key={item.actionKey}>\n <ListItem>\n {item.symbol?.content && (\n <div className=\"item-icon\">\n <SymbolBadge\n size={22}\n symbol={{\n type: item.symbol.type,\n content: item.symbol.content,\n }}\n />\n </div>\n )}\n <div className=\"item-body\">\n <Button\n onClick={() => {\n dispatch('action', item);\n }}\n aria-label={item.label}\n title={item.label}\n >\n {item.label}\n </Button>\n\n {item.description && <p>{item.description}</p>}\n </div>\n </ListItem>\n </li>\n );\n }}\n />\n );\n};\n\nconst StyledItemList = styled(ItemListUi)`\n ${itemList}\n\n > .humany-paragraph {\n ${messageContentPadding}\n margin-bottom: 0;\n\n h1 {\n margin: 0;\n }\n }\n\n ${(p) =>\n headingElement(p)(\n 'h1',\n css`\n white-space: normal;\n `\n )}\n\n > ul {\n display: flex;\n flex-direction: column;\n gap: ${(p) => p.theme.sizes?.normal};\n > li {\n margin: 0;\n }\n }\n\n li {\n border-bottom: ${(p) => p.theme.border};\n\n &:last-of-type {\n border-bottom: none;\n }\n }\n`;\n\nconst ListItem = styled.div`\n display: flex;\n gap: ${(p) => p.theme.sizes?.medium};\n ${messageContentPadding}\n\n .item-icon {\n }\n\n .item-body {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: ${(p) => p.theme.sizes?.normal};\n\n p {\n margin: 0;\n white-space: normal;\n }\n }\n\n button {\n background: transparent;\n border: none;\n font-family: inherit;\n font-size: ${(p) => p.theme.fonts?.normal};\n cursor: pointer;\n padding: 0;\n margin: 0;\n\n &:focus-visible {\n ${borderTabStyle}\n span {\n color: ${(p) => p.theme.colors?.primary};\n text-decoration: underline;\n }\n }\n }\n`;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n borderTabStyle,\n Button,\n DispatchAction,\n headingElement,\n itemList,\n ItemList,\n SymbolBadge,\n} from '@telia-ace/widget-ui';\nimport React, { FC } from 'react';\nimport { LinkListProperties } from '../../../../types';\nimport { mapActions } from '../../../../utils/map-actions';\nimport { messageContentPadding } from '../styles';\n\ntype Props = { dispatch: DispatchAction } & LinkListProperties;\n\nexport const LinkList: FC<Props> = ({ header, actions, dispatch }) => {\n return (\n <StyledLinkList\n className=\"humany-conversation-link-list\"\n header={header}\n items={mapActions(actions)}\n renderItem={(item: any) => {\n return (\n <li key={item.actionKey}>\n <StyledLinkButton\n help={item.actionKey === 'help'}\n onClick={() => {\n dispatch('action', item);\n }}\n aria-label={item.label}\n title={item.label}\n >\n {item.label}\n {item.actionKey === 'help' && (\n <SymbolBadge\n size={14}\n symbol={{\n type: 'Svg',\n content: 'caret-down',\n }}\n />\n )}\n </StyledLinkButton>\n </li>\n );\n }}\n />\n );\n};\n\nconst StyledLinkList = styled(ItemList)`\n ${itemList}\n ${messageContentPadding}\n\n ${(p) =>\n headingElement(p)(\n 'h1',\n css`\n white-space: normal;\n `\n )}\n\n > ul {\n display: flex;\n flex-direction: column;\n gap: ${(p) => p.theme.sizes?.normal};\n > li {\n margin: 0;\n }\n }\n`;\n\nconst StyledLinkButton = styled(Button)<{ help: boolean }>`\n display: block;\n text-align: left;\n font-weight: 300;\n color: ${(p) => p.theme.colors?.primary};\n max-width: 100%;\n text-overflow: ellipsis;\n overflow: hidden;\n\n ${(p) =>\n p.help &&\n css`\n color: ${p.theme.colors?.text};\n text-decoration: underline;\n\n i,\n svg {\n margin-left: ${p.theme.sizes?.small};\n }\n `}\n\n &:focus-visible {\n ${borderTabStyle}\n span {\n color: ${(p) => p.theme.colors?.primary};\n text-decoration: underline;\n }\n }\n`;\n","import styled from '@emotion/styled';\nimport React, { FC } from 'react';\n\nexport const Separator: FC = () => {\n return <StyledSeparator className=\"humany-conversation-separator\" />;\n};\n\nconst StyledSeparator = styled.div`\n ${(p) => p.theme.border && `border-bottom: ${p.theme.border};`}\n width: 100%;\n`;\n","import styled from '@emotion/styled';\nimport { Typography } from '@telia-ace/widget-ui';\nimport React, { FC } from 'react';\nimport { messageContentPadding } from '../styles';\n\ntype Props = { text: string };\n\nexport const Text: FC<Props> = ({ text }) => {\n return (\n <StyledTypography className=\"humany-conversation-text\" variant=\"span\">\n {text}\n </StyledTypography>\n );\n};\n\nconst StyledTypography = styled(Typography)`\n ${messageContentPadding}\n`;\n","import styled from '@emotion/styled';\nimport {\n borderTabStyle,\n Button,\n buttonCss,\n DispatchAction,\n ItemList,\n itemList,\n SymbolBadge,\n} from '@telia-ace/widget-ui';\nimport React, { FC, useMemo } from 'react';\nimport { VideoRequestProperties } from '../../../../types';\nimport { messageContentPadding } from '../styles';\n\ntype Props = { dispatch: DispatchAction } & VideoRequestProperties;\n\nexport const VideoRequest: FC<Props> = ({\n header = 'Video call',\n acceptLabel = 'Accept',\n declineLabel = 'Decline',\n dispatch,\n}) => {\n const actions = useMemo(() => {\n return [\n {\n label: acceptLabel,\n actionKey: 'accept-video-call',\n symbol: {\n type: 'Svg',\n content: 'video',\n },\n },\n {\n label: declineLabel,\n actionKey: 'decline-video-call',\n symbol: {\n type: 'Svg',\n content: 'close',\n },\n },\n ];\n }, [acceptLabel, declineLabel]);\n return (\n <StyledItemList\n className=\"humany-conversation-video-request\"\n header={header}\n items={actions}\n renderItem={(item: any) => {\n const bgColor = item.actionKey === 'accept-video-call' ? '#70c48e' : '#da5c85';\n return (\n <li key={item.actionKey}>\n <StyledButton\n onClick={() => {\n dispatch('action', item);\n }}\n aria-label={item.label}\n title={item.label}\n bgColor={bgColor}\n >\n <SymbolBadge symbol={item.symbol} size={25} />\n </StyledButton>\n </li>\n );\n }}\n />\n );\n};\n\nconst StyledItemList = styled(ItemList)`\n ${(p) => itemList(p)}\n > ul {\n display: flex;\n flex-wrap: wrap;\n gap: ${(p) => p.theme.sizes?.normal};\n > li {\n margin: 0;\n }\n }\n ${(p) => messageContentPadding(p)}\n`;\n\nconst StyledButton = styled(Button)<{ bgColor: string }>`\n ${buttonCss};\n\n background-color: ${(p) => p.bgColor};\n display: flex;\n justify-content: center;\n align-items: center;\n color: #ffffff;\n width: 46px;\n height: 46px;\n border-radius: 100%;\n\n &:focus-visible {\n ${borderTabStyle}\n background-color: transparent;\n\n i,\n svg {\n color: ${(p) => p.theme.colors?.primary};\n\n path {\n stroke: ${(p) => p.theme.colors?.primary};\n }\n }\n }\n\n i,\n svg {\n color: #fff;\n\n path {\n stroke: #fff;\n }\n }\n`;\n","import React, { FC } from 'react';\n\nimport styled from '@emotion/styled';\nimport { DispatchAction, List, list } from '@telia-ace/widget-ui';\nimport { ConversationMessageListItemType, ConverstationMessageItem } from '../../../../types';\nimport { ButtonList } from '../message-list-items/button-list';\nimport { Custom } from '../message-list-items/custom';\nimport { Html } from '../message-list-items/html';\nimport { ItemList } from '../message-list-items/item-list';\nimport { LinkList } from '../message-list-items/link-list';\nimport { Separator } from '../message-list-items/separator';\nimport { Text } from '../message-list-items/text';\nimport { VideoRequest } from '../message-list-items/video-request';\n\ntype Props = {\n items: ConverstationMessageItem<any>[];\n dispatch: DispatchAction;\n};\n\nconst mapItem = ([type, content]: ConverstationMessageItem<any>) => {\n return { type, content };\n};\n\nexport const MessageList: FC<Props> = ({ items, dispatch }) => {\n return (\n <StyledList\n className=\"humany-message-list\"\n items={items.map(mapItem)}\n renderLi\n renderItem={(item: any) => {\n switch (item.type) {\n case ConversationMessageListItemType.Text: {\n return <Text text={item.content} />;\n }\n case ConversationMessageListItemType.HTML: {\n return <Html {...item.content} />;\n }\n case ConversationMessageListItemType.Separator: {\n return <Separator {...item.content} />;\n }\n case ConversationMessageListItemType.ItemList: {\n return <ItemList {...item.content} dispatch={dispatch} />;\n }\n case ConversationMessageListItemType.LinkList: {\n return <LinkList {...item.content} dispatch={dispatch} />;\n }\n case ConversationMessageListItemType.ButtonList: {\n return <ButtonList {...item.content} dispatch={dispatch} />;\n }\n case ConversationMessageListItemType.VideoRequest: {\n return <VideoRequest {...item.content} dispatch={dispatch} />;\n }\n default: {\n return <Custom type={item.type} content={item.content} />;\n }\n }\n }}\n />\n );\n};\n\nconst StyledList = styled(List)<any>`\n ${list}\n\n > li {\n margin: 0;\n }\n`;\n","import { Html, useDispatch } from '@telia-ace/widget-ui';\nimport React, { forwardRef, useCallback } from 'react';\nimport { ConversationMessageType } from '../../../conversation-controller';\nimport { ConversationMessageContent } from '../../../types';\nimport { BundledConversationMessage } from '../plugin';\nimport { AgentMessage, SystemMessage, UserMessage } from './message-types';\nimport { MessageList } from './message-types/message-list';\nimport {\n ContentBundle,\n MessageContainer,\n MessageContent,\n MessageContentPart,\n MessageTitle,\n Stacked,\n StyledActionButton,\n StyledActionList,\n StyledForm,\n StyledHtml,\n} from './styles';\n\ntype Props = {\n className?: string;\n} & BundledConversationMessage;\n\nexport const ConversationMessage = forwardRef<HTMLDivElement, Props>(\n ({ className, timestamp, sender, type, content }, ref) => {\n const getMessageStackPosition = useCallback(\n (index: number): Stacked => {\n let messageOrder: Stacked = 'first';\n if (content.length > 1) {\n messageOrder =\n index === 0 ? 'first' : index + 1 === content.length ? 'last' : 'middle';\n }\n return messageOrder;\n },\n [content]\n );\n\n const createSystemMessage = () => {\n return (\n <>\n {content.map((item) => {\n const { key, body, title, form, actions } = item;\n const discrete = !!body && !title && !form && !actions;\n return (\n <SystemMessage\n className={className}\n key={key}\n discrete={discrete}\n ref={ref}\n timestamp={timestamp}\n fullWidth={!!form || !!actions}\n >\n {discrete && body ? (\n <Html html={body} />\n ) : (\n <Message isSystem content={item} />\n )}\n </SystemMessage>\n );\n })}\n </>\n );\n };\n\n const createAgentMessage = () => {\n return (\n <AgentMessage sender={sender} timestamp={timestamp} className={className}>\n <ContentBundle className=\"humany-message-content-bundle\">\n {content.map((item, index) => {\n return (\n <MessageContainer\n className=\"humany-message-container\"\n left\n key={item.key}\n ref={ref}\n >\n <Message\n content={item}\n stacked={getMessageStackPosition(index)}\n />\n </MessageContainer>\n );\n })}\n </ContentBundle>\n </AgentMessage>\n );\n };\n\n const createUserMessage = () => {\n return (\n <UserMessage timestamp={timestamp} className={className}>\n <ContentBundle className=\"humany-message-content-bundle\">\n {content.map((item, index) => {\n return (\n <MessageContainer\n className=\"humany-message-container\"\n right\n key={item.key}\n ref={ref}\n >\n <Message\n isUser\n content={item}\n stacked={getMessageStackPosition(index)}\n />\n </MessageContainer>\n );\n })}\n </ContentBundle>\n </UserMessage>\n );\n };\n\n switch (type) {\n case ConversationMessageType.System:\n return createSystemMessage();\n case ConversationMessageType.Agent:\n return createAgentMessage();\n case ConversationMessageType.User:\n return createUserMessage();\n default:\n return null;\n }\n }\n);\n\ntype MessageContentProps = {\n className?: string;\n content: ConversationMessageContent;\n isUser?: boolean;\n isSystem?: boolean;\n stacked?: Stacked;\n CustomComponent?: any;\n};\n\nconst Message: React.FC<MessageContentProps> = ({ content, isUser, isSystem, stacked }) => {\n const dispatch = useDispatch();\n const { title, body, actions, form, items } = content;\n\n // Using print(string) or print(object) is considered legacy in favor of print(array).\n const isLegacyMessage = !items;\n if (isLegacyMessage) {\n return (\n <MessageContent\n className=\"humany-message-content\"\n padded={!isSystem}\n user={!!isUser}\n stacked={stacked}\n fullWidth={!!form || !!actions}\n >\n {title && (\n <MessageContentPart>\n <MessageTitle variant=\"h2\">{title}</MessageTitle>\n </MessageContentPart>\n )}\n {body && (\n <MessageContentPart>\n <StyledHtml html={body} />\n </MessageContentPart>\n )}\n {form && (\n <MessageContentPart>\n <StyledForm\n {...form}\n onChange={(key: string, data: any) => {\n dispatch('form', {\n data,\n formKey: form.schema.id,\n actionKey: key,\n });\n }}\n />\n </MessageContentPart>\n )}\n {actions && (\n <MessageContentPart>\n <StyledActionList\n items={Object.keys(actions).map((i: any) => {\n return { label: actions[i], actionKey: i };\n })}\n renderItem={(item: any) => {\n return (\n <li key={item.actionKey}>\n <StyledActionButton\n onClick={() => {\n dispatch('action', item.actionKey);\n }}\n >\n {item.label}\n </StyledActionButton>\n </li>\n );\n }}\n />\n </MessageContentPart>\n )}\n </MessageContent>\n );\n }\n\n return (\n <MessageContent className=\"humany-message-content\" user={!!isUser} stacked={stacked}>\n <MessageList items={items} dispatch={dispatch} />\n </MessageContent>\n );\n};\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { borderTabStyle, headingElement, useProperties, useScroll } from '@telia-ace/widget-ui';\nimport React, { useCallback } from 'react';\nimport { ConversationMessageSender } from '../../../types';\nimport { BundledConversationMessage, ConversationComponentProperties } from '../plugin';\nimport ConversationInput from './input';\nimport ConversationLoader from './loader';\nimport { ConversationMessage } from './message';\nimport { AgentMessage } from './message-types';\n\nexport const ConversationContent: React.FC = () => {\n const setLastEntryRef = useCallback((node: HTMLDivElement) => {\n if (node) {\n setTimeout(() => {\n node.scrollIntoView({\n block: 'start',\n behavior: 'smooth',\n });\n }, 250);\n }\n }, []);\n\n const [scrollableCss, viewElem] = useScroll(true);\n const {\n messages,\n loading,\n typingActors = [],\n } = useProperties<ConversationComponentProperties>();\n\n const renderTypingActors = () => {\n if (typingActors && typingActors.length) {\n return typingActors.map((actor: ConversationMessageSender, index) => {\n return (\n <MessageEntry id={`typing_${actor.name}`} key={`typing_${actor.name}`}>\n <AgentMessage timestamp={Date.now()} sender={actor}>\n <ConversationLoader boxed ref={setLastEntryRef}></ConversationLoader>\n </AgentMessage>\n </MessageEntry>\n );\n });\n }\n return null;\n };\n\n return (\n <>\n <Scrollable tabIndex={0} scrollableCss={scrollableCss} ref={viewElem}>\n {messages && messages.length\n ? messages.map((message: BundledConversationMessage, index) => {\n const { type, timestamp, sender, content } = message;\n return (\n <MessageEntry\n className={'humany-conversation-entry'}\n tabIndex={-1}\n key={`${type}_${sender?.name}_${timestamp}_${content[0].key}`}\n >\n <ConversationMessage {...message} ref={setLastEntryRef} />\n </MessageEntry>\n );\n })\n : null}\n {renderTypingActors()}\n {loading && (\n <MessageEntry>\n <ConversationLoader ref={setLastEntryRef} />\n </MessageEntry>\n )}\n </Scrollable>\n <ConversationInput />\n </>\n );\n};\n\nconst Scrollable = styled.div<{ scrolling: boolean } & any>`\n display: flex;\n flex-direction: column;\n align-items: stretch;\n flex: 0 1 100%;\n padding: 0 ${(p) => p.theme.sizes?.medium};\n ${(p) => !!p.scrollableCss && p.scrollableCss};\n &:focus-visible {\n ${(p) => borderTabStyle(p)};\n }\n`;\n\nconst MessageEntry = styled.div`\n margin: 0;\n margin-bottom: ${(p) => p.theme.sizes?.medium};\n\n &:first-of-type {\n margin-top: ${(p) => p.theme.sizes?.medium};\n }\n\n &:last-of-type {\n padding-bottom: ${(p) => p.theme.sizes?.medium};\n }\n\n & span,\n p,\n a,\n div {\n font-weight: 300;\n }\n\n & b,\n h1 {\n font-weight: normal;\n }\n ${(p) =>\n headingElement(p)(\n 'h1',\n css`\n font-weight: normal;\n `\n )}\n`;\n","import styled from '@emotion/styled';\nimport {\n borderTabStyle,\n Button,\n DispatchAction,\n SymbolBadge,\n Typography,\n WidgetOverlayOutlet,\n} from '@telia-ace/widget-ui';\nimport React, { FC, useEffect, useRef } from 'react';\nimport { ConversationContent } from './content';\n\ntype OverlayOutletProps = {\n dispatch: DispatchAction;\n};\n\nexport const OverlayOutlet: FC<OverlayOutletProps> = ({ dispatch }) => {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (wrapperRef.current && wrapperRef.current.parentNode) {\n dispatch('overlay-mounted', wrapperRef.current);\n }\n }, [wrapperRef]);\n\n return (\n <WidgetOverlayOutlet\n portalId=\"humany-conversation-overlay-portal\"\n className=\"humany-conversation-overlay-outlet\"\n ref={wrapperRef}\n />\n );\n};\n\ntype ConversationOverlayProps = {\n dispatch: DispatchAction;\n header?: string;\n buttonLabel?: string;\n};\n\nexport const ConversationOverlayOutlet: FC<ConversationOverlayProps> = ({\n dispatch,\n header,\n buttonLabel,\n}) => {\n return (\n <StyledWidgetOverlayOutlet\n portalId=\"humany-conversation-portal\"\n className=\"humany-conversation-outlet\"\n >\n <ConversationOverlayHead className=\"humany-conversation-outlet-head\">\n <ConversationOverlayHeadButton\n className=\"humany-conversation-outlet-head-button\"\n aria-label={buttonLabel}\n title={buttonLabel}\n onClick={() => dispatch('hide-overlay-conversation')}\n >\n <SymbolBadge\n symbol={{\n type: 'Svg',\n content: 'caret-down',\n }}\n size={20}\n />\n </ConversationOverlayHeadButton>\n {header && (\n <ConversationOverlayHeader\n className=\"humany-conversation-outlet-header\"\n variant=\"h1\"\n >\n {header}\n </ConversationOverlayHeader>\n )}\n </ConversationOverlayHead>\n <ConversationContent />\n </StyledWidgetOverlayOutlet>\n );\n};\n\nconst StyledWidgetOverlayOutlet = styled(WidgetOverlayOutlet)`\n z-index: 11;\n top: auto;\n height: 65%;\n background-color: #ffffff;\n display: flex;\n flex-direction: column;\n border-top-right-radius: ${(p) => p.theme.sizes?.large};\n border-top-left-radius: ${(p) => p.theme.sizes?.large};\n`;\n\nconst ConversationOverlayHead = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: ${(p) => p.theme.sizes?.normal};\n padding: ${(p) => p.theme.sizes?.normal};\n ${(p) => p.theme.border && `border-bottom: ${p.theme.border};`}\n`;\n\nconst ConversationOverlayHeader = styled(Typography)`\n font-size: ${(p) => p.theme.fonts?.medium};\n color: ${(p) => p.theme.colors?.text};\n margin: 0;\n`;\n\nconst ConversationOverlayHeadButton = styled(Button)`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ${(p) => p.theme.sizes?.small} ${(p) => p.theme.sizes?.medium};\n ${(p) => p.theme.borderRadius && `border-radius: ${p.theme.borderRadius};`}\n\n &:focus-visible {\n ${borderTabStyle};\n }\n\n svg line {\n stroke: ${(p) => p.theme.colors?.text};\n }\n`;\n","import styled from '@emotion/styled';\nimport { ConversationContext, useDispatch, useProperties } from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { ConversationComponentProperties } from './plugin';\nimport { ConversationContent } from './ui/content';\nimport { ConversationOverlayOutlet, OverlayOutlet } from './ui/overlay-outlets';\n\ntype Props = {\n className: string;\n};\n\nconst Conversation: React.FC<Props> = ({ className, ...other }) => {\n const {\n overlay,\n overlayConversationHeader,\n overlayConversationCloseLabel,\n conversationControllerId,\n } = useProperties<ConversationComponentProperties>();\n const dispatch = useDispatch();\n\n return (\n <ConversationContext.Provider\n value={conversationControllerId ? { id: conversationControllerId } : null}\n >\n <Wrapper\n {...other}\n className={appendClassNames(className, 'humany-conversation-component')}\n >\n <ConversationContent />\n </Wrapper>\n {overlay && (\n <>\n <OverlayOutlet dispatch={dispatch} />\n {overlay.conversation && (\n <ConversationOverlayOutlet\n dispatch={dispatch}\n header={overlayConversationHeader}\n buttonLabel={overlayConversationCloseLabel}\n />\n )}\n </>\n )}\n </ConversationContext.Provider>\n );\n};\n\nconst Wrapper = styled.div`\n position: absolute;\n right: 0;\n left: 0;\n bottom: 0;\n top: 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n`;\n\nexport default Conversation;\n"],"names":["ConversationInput","className","inputText","setInputText","useState","inputFocus","setInputFocus","calculatedLineHeight","setCalculatedLineHeight","textareaMaxHeight","setTextareaMaxHeight","isTabbing","useIsTabbing","dispatch","useDispatch","inputPlaceholder","inputHidden","inputDisabled","sendButtonLabel","multiline","secondaryAction","useProperties","scrollableCss","inputRef","useScroll","useEffect","lineHeight","maxHeight","lineHeightNumber","calcLH","maxHeightNumber","submit","e","onChange","onSecondaryActionButtonClick","__spreadValues","calculateHeight","value","scrollHeight","areaHeight","React","Wrapper","appendClassNames","SecondaryActionButton","SymbolBadge","StyledTextArea","StyledInput","StyledButton","SendSymbol","styled","Input","p","_a","Button","borderTabStyle","css","_b","hasContent","other","__objRest","ConversationInput$1","Avatar","LoaderAnimation","keyframes","Loader","ContentBundle","MessageTitle","Typography","MessageContainer","MessageContent","nonUserMessageStyling","userMessageStyling","stacked","theme","colors","MessageContentPart","messageContentPadding","StyledForm","FormComponent","invertedHoverButton","_c","_d","StyledHtml","Html","StyledActionList","List","StyledActionButton","buttonCss","ConversationLoader","forwardRef","boxed","agentData","ref","ConversationLoader$1","StyledTimestamp","getTimestamp","raw","Timestamp","name","timestamp","output","Timestamp$1","AgentMessage","children","sender","avatar","avatarSize","StyledAgentMessage","AgentMessage$1","SystemMessage","discrete","fullWidth","StyledSystemMessage","Discrete","SystemMessage$1","UserMessage","userLabel","StyledUserMessage","UserMessage$1","mapActions","actions","i","ButtonList","header","StyledButtonList","item","StyledButtonListButton","ItemList","itemList","Custom","type","content","Component","useComponent","Suspense","body","UiHtml","genericHtml","StyledItemList","ListItem","ItemListUi","headingElement","LinkList","StyledLinkList","StyledLinkButton","Separator","StyledSeparator","Text","text","StyledTypography","VideoRequest","acceptLabel","declineLabel","useMemo","bgColor","mapItem","MessageList","items","StyledList","ConversationMessageListItemType","__spreadProps","list","ConversationMessage","getMessageStackPosition","useCallback","index","messageOrder","createSystemMessage","key","title","form","Message","createAgentMessage","createUserMessage","ConversationMessageType","isUser","isSystem","data","ConversationContent","setLastEntryRef","node","viewElem","messages","loading","typingActors","renderTypingActors","actor","MessageEntry","Scrollable","message","OverlayOutlet","wrapperRef","useRef","WidgetOverlayOutlet","ConversationOverlayOutlet","buttonLabel","StyledWidgetOverlayOutlet","ConversationOverlayHead","ConversationOverlayHeadButton","ConversationOverlayHeader","Conversation","overlay","overlayConversationHeader","overlayConversationCloseLabel","conversationControllerId","ConversationContext"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -857,7 +857,7 @@ const he = (n, e) => n.reduce((t, s, r) => {
|
|
|
857
857
|
]).then(([e, t]) => U(
|
|
858
858
|
n,
|
|
859
859
|
"conversation",
|
|
860
|
-
import("./conversation-
|
|
860
|
+
import("./conversation-9e73f101.js"),
|
|
861
861
|
(s) => g(void 0, null, function* () {
|
|
862
862
|
const { rehydrate: r = !1 } = s.properties(), a = t.getRouteData().params.id || s.node.name || "component", o = yield e.createController(a, { rehydrate: r }), c = e.registerController(o, s), h = 3 * 60 * 1e3, l = (p) => {
|
|
863
863
|
const { providers: u = [] } = p;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telia-ace/widget-conversation",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.40-next.0",
|
|
4
4
|
"description": "ACE Widget Conversation Platform",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"author": "Telia Company AB",
|
|
@@ -21,19 +21,19 @@
|
|
|
21
21
|
},
|
|
22
22
|
"sideEffects": false,
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@telia-ace/widget-core": "1.0.
|
|
25
|
-
"@telia-ace/widget-forms": "1.0.
|
|
26
|
-
"@telia-ace/widget-plugins": "1.0.
|
|
27
|
-
"@telia-ace/widget-routing": "1.0.
|
|
28
|
-
"@telia-ace/widget-services": "1.0.
|
|
29
|
-
"@telia-ace/widget-ui": "1.0.
|
|
30
|
-
"@telia-ace/widget-utilities": "1.0.
|
|
24
|
+
"@telia-ace/widget-core": "1.0.27-next.0",
|
|
25
|
+
"@telia-ace/widget-forms": "1.0.34-next.0",
|
|
26
|
+
"@telia-ace/widget-plugins": "1.0.28-next.0",
|
|
27
|
+
"@telia-ace/widget-routing": "1.0.28-next.0",
|
|
28
|
+
"@telia-ace/widget-services": "1.0.27-next.0",
|
|
29
|
+
"@telia-ace/widget-ui": "1.0.34-next.0",
|
|
30
|
+
"@telia-ace/widget-utilities": "1.0.16-next.0",
|
|
31
31
|
"@webprovisions/platform": "^1.1.3-rc.3"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@emotion/react": "^11.10.5",
|
|
35
35
|
"@emotion/styled": "^11.10.5",
|
|
36
|
-
"@telia-ace/widget-developer-tools": "1.0.
|
|
36
|
+
"@telia-ace/widget-developer-tools": "1.0.22-next.0",
|
|
37
37
|
"@types/react": "^18.0.27",
|
|
38
38
|
"react": "^18.2.0"
|
|
39
39
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-23bae0c6.js","sources":["../src/components/conversation/ui/input.tsx","../src/components/conversation/ui/styles.tsx","../src/components/conversation/ui/loader.tsx","../src/components/conversation/ui/message-types/timestamp.tsx","../src/components/conversation/ui/message-types/agent.tsx","../src/components/conversation/ui/message-types/system.tsx","../src/components/conversation/ui/message-types/user.tsx","../src/utils/map-actions.ts","../src/components/conversation/ui/message-list-items/button-list.tsx","../src/components/conversation/ui/message-list-items/custom.tsx","../src/components/conversation/ui/message-list-items/html.tsx","../src/components/conversation/ui/message-list-items/item-list.tsx","../src/components/conversation/ui/message-list-items/link-list.tsx","../src/components/conversation/ui/message-list-items/separator.tsx","../src/components/conversation/ui/message-list-items/text.tsx","../src/components/conversation/ui/message-list-items/video-request.tsx","../src/components/conversation/ui/message-types/message-list.tsx","../src/components/conversation/ui/message.tsx","../src/components/conversation/ui/content.tsx","../src/components/conversation/ui/overlay-outlets.tsx","../src/components/conversation/conversation.tsx"],"sourcesContent":["import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n borderTabStyle,\n Button,\n Input,\n SymbolBadge,\n useDispatch,\n useIsTabbing,\n useProperties,\n useScroll,\n} from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { useEffect, useState } from 'react';\nimport { ConversationComponentProperties } from '../plugin';\n\ntype Props = {\n className?: string;\n};\n\nconst ConversationInput: React.FC<Props> = ({ className }) => {\n const [inputText, setInputText] = useState('');\n const [inputFocus, setInputFocus] = useState(false);\n const [calculatedLineHeight, setCalculatedLineHeight] = useState(0);\n const [textareaMaxHeight, setTextareaMaxHeight] = useState(0);\n const isTabbing = useIsTabbing();\n const dispatch = useDispatch();\n const {\n inputPlaceholder = 'Type your message',\n inputHidden = false,\n inputDisabled = false,\n sendButtonLabel = 'Send message',\n inputMultiline: multiline = true,\n secondaryAction,\n } = useProperties<ConversationComponentProperties>();\n const [scrollableCss, inputRef] = useScroll(true);\n\n useEffect(() => {\n if (inputRef.current) {\n const { lineHeight, maxHeight } = getComputedStyle(inputRef.current);\n if (lineHeight && lineHeight.indexOf('px') > -1) {\n const lineHeightNumber = lineHeight.split('px');\n const calcLH = parseInt(lineHeightNumber[0], 10);\n setCalculatedLineHeight(calcLH);\n const maxHeightNumber = maxHeight.split('px');\n setTextareaMaxHeight(parseInt(maxHeightNumber[0], 10));\n }\n }\n }, [inputRef.current]);\n\n const submit = (e: any) => {\n if (!e.shiftKey || !multiline) {\n e.preventDefault();\n if (inputText && inputText.length > 0) {\n dispatch('user-submit', { text: inputText });\n setInputText('');\n onChange('');\n }\n } else if (inputText.length < 1) {\n e.preventDefault();\n }\n };\n\n const onSecondaryActionButtonClick = (e: any) => {\n if (!secondaryAction) {\n return;\n }\n e.preventDefault();\n dispatch('action', {\n actionKey: secondaryAction.action,\n ...secondaryAction,\n });\n };\n\n const calculateHeight = (value: string) => {\n if (multiline && inputRef.current) {\n const scrollHeight = inputRef.current.scrollHeight;\n if (scrollHeight > calculatedLineHeight) {\n inputRef.current.style.height = 'auto';\n let areaHeight = scrollHeight;\n if (value.length < 1) {\n areaHeight = calculatedLineHeight;\n }\n inputRef.current.style.height = `${areaHeight}px`;\n\n if (areaHeight >= textareaMaxHeight) {\n inputRef.current.style.overflowY = 'scroll';\n } else {\n inputRef.current.style.overflowY = 'hidden';\n }\n }\n }\n };\n\n const onChange = (value: string) => {\n calculateHeight(value);\n setInputText(value);\n if (value && value.length > 0) {\n dispatch('user-typing', { textLength: value.length });\n }\n };\n\n if (inputHidden) {\n return null;\n }\n\n return (\n <Wrapper\n grow={multiline}\n className={appendClassNames('humany-conversation-input', className)}\n data-has-focus={inputFocus}\n scrollableCss={scrollableCss}\n isTabbing={isTabbing}\n >\n {secondaryAction && (\n <SecondaryActionButton\n disabled={inputDisabled}\n onClick={onSecondaryActionButtonClick}\n title={secondaryAction.label}\n aria-label={secondaryAction.label}\n >\n <SymbolBadge\n size={24}\n symbol={{ type: 'Svg', content: secondaryAction.icon || 'browse' }}\n />\n </SecondaryActionButton>\n )}\n {multiline ? (\n <StyledTextArea\n value={inputText}\n onChange={onChange}\n onEnter={submit}\n disabled={inputDisabled}\n aria-label={inputPlaceholder}\n placeholder={inputPlaceholder}\n onFocusChange={setInputFocus}\n type={'textarea'}\n rows={1}\n ref={inputRef}\n />\n ) : (\n <StyledInput\n value={inputText}\n onChange={onChange}\n onEnter={submit}\n disabled={inputDisabled}\n aria-label={inputPlaceholder}\n placeholder={inputPlaceholder}\n onFocusChange={setInputFocus}\n />\n )}\n <StyledButton\n disabled={inputDisabled}\n onClick={submit}\n title={sendButtonLabel}\n aria-label={sendButtonLabel}\n >\n <SendSymbol\n size={22}\n symbol={{ type: 'Svg', content: 'send' }}\n hasContent={!!inputText && !!inputText.length}\n />\n </StyledButton>\n </Wrapper>\n );\n};\n\nconst StyledTextArea = styled(Input)<any>`\n resize: none;\n flex: 1;\n flex-shrink: 1;\n min-height: 1.2em;\n max-height: 148px;\n line-height: 1.2em;\n height: 1.2em;\n padding: 0;\n margin: ${(p) => p.theme.sizes?.medium};\n font-size: ${(p) => p.theme.fonts?.normal};\n border: none;\n transition: height 200ms linear;\n outline: none;\n`;\n\nconst StyledInput = styled(Input)<any>`\n flex: 1;\n border: none;\n background-color: transparent;\n font-weight: 300;\n font-size: ${(p) => p.theme.fonts?.normal};\n line-height: 1.2em;\n outline: none;\n padding: ${(p) => p.theme.sizes?.medium};\n color: ${(p) => p.theme.colors?.text};\n &::placeholder {\n color: ${(p) => p.theme.colors?.textLight};\n font-style: italic;\n }\n`;\n\nconst StyledButton = styled(Button)<any>`\n flex: 0 0 50px;\n align-self: stretch;\n background-color: transparent;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n color: #a6a6a6;\n &:focus-visible {\n ${borderTabStyle};\n }\n`;\n\nconst SecondaryActionButton = styled(StyledButton)`\n border-right: ${(p) => p.theme.border};\n margin: ${(p) => p.theme.sizes?.normal} 0;\n`;\n\nconst Wrapper = styled.div<{ 'data-has-focus': boolean } & any>`\n ${(p) =>\n p.grow\n ? css`\n min-height: 50px;\n max-height: 150px;\n `\n : css`\n height: 50px;\n `}\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n background-color: ${(p) => p.theme.colors?.accent};\n border-top: ${(p) => p.theme.inputBorder};\n ${(p) => p['data-has-focus'] && p.isTabbing && borderTabStyle}\n textarea {\n ${(p) => !!p.scrollableCss && p.scrollableCss}\n }\n`;\n\nconst SendSymbol = styled(\n ({\n hasContent,\n ...other\n }: {\n hasContent: boolean;\n size: number;\n symbol: { type: string; content: string };\n }) => <SymbolBadge {...other} />\n)`\n line,\n path {\n stroke: ${(p) => (p.hasContent ? p.theme.colors?.primary : '#a6a6a6')};\n fill: ${(p) => (p.hasContent ? p.theme.colors?.primary : '#a6a6a6')};\n }\n`;\n\nexport default ConversationInput;\n","import { css, keyframes, Theme } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { FormComponent } from '@telia-ace/widget-forms';\nimport {\n borderTabStyle,\n buttonCss,\n Html,\n invertedHoverButton,\n List,\n Typography,\n} from '@telia-ace/widget-ui';\n\nexport const Avatar = styled.div<any>`\n width: ${(p) => p.avatarSize || '32px'};\n height: ${(p) => p.avatarSize || '32px'};\n border-radius: 50%;\n background-color: ${(p) => p.theme.colors?.accent};\n border: ${(p) => p.theme.border};\n grid-area: avatar;\n align-self: flex-end;\n justify-self: center;\n overflow: hidden;\n margin-right: 10px;\n display: flex;\n justify-content: center;\n align-items: center;\n color: ${(p) => p.theme.colors?.text};\n\n > img {\n height: 100%;\n width: 100%;\n object-fit: cover;\n }\n\n > svg {\n width: 90%;\n height: 90%;\n padding: 10%;\n color: ${(p) => p.theme.colors?.text};\n\n line,\n path,\n circle,\n fill {\n stroke: ${(p) => p.theme.colors?.text};\n }\n }\n`;\n\nexport const LoaderAnimation = keyframes`\n 0% {\n opacity: 0;\n }\n 75% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n`;\n\nexport const Loader = styled.div`\n display: flex;\n justify-content: center;\n > div {\n height: 10px;\n width: 10px;\n border-radius: 50%;\n margin: 5px;\n background-color: ${(p) => p.theme.colors?.text};\n animation: ${LoaderAnimation} 1s infinite;\n }\n > div:nth-of-type(2) {\n animation-delay: 100ms;\n }\n > div:nth-of-type(3) {\n animation-delay: 200ms;\n }\n`;\n\nexport const ContentBundle = styled.div`\n grid-area: content;\n max-width: 100%;\n overflow: hidden;\n`;\n\nexport const MessageTitle = styled(Typography)`\n font-size: ${(p) => p.theme.fonts?.normal};\n font-weight: normal;\n margin: 0;\n`;\n\nexport const MessageContainer = styled.div<{ left?: boolean; center?: boolean; right?: boolean }>`\n display: flex;\n ${(p) => p.left && 'justify-content: start;'};\n ${(p) => p.center && 'justify-content: center;'};\n ${(p) => p.right && 'justify-content: end;'};\n`;\n\nexport type Stacked = 'first' | 'last' | 'middle';\n\nexport const MessageContent = styled.div<{\n user?: boolean;\n fullWidth?: boolean;\n stacked?: Stacked;\n padded?: boolean;\n}>`\n ${(p) => p.padded && `padding: ${p.theme.sizes?.medium};`}\n ${(p) => !p.user && p.stacked && nonUserMessageStyling(p.stacked, p.theme)}\n ${(p) => p.user && p.stacked && userMessageStyling(p.stacked, p.theme)}\n\n display: inline-block;\n margin-top: ${(p) => p.theme.sizes?.normal};\n && > * {\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-all;\n word-break: break-word;\n hyphens: auto;\n }\n max-width: 100%;\n ${(p) => p.fullWidth && 'width: 100%;'}\n`;\n\nconst nonUserMessageStyling = (stacked: Stacked, theme: any) => {\n const colors = css`\n background-color: ${theme.colors?.accent};\n color: ${theme.colors?.text};\n ${theme.border && `border: ${theme.border};`};\n `;\n\n if (!theme.borderRadius) {\n return colors;\n }\n\n return css`\n ${colors}\n\n border-top-right-radius: ${theme.borderRadius};\n border-bottom-right-radius: ${theme.borderRadius};\n\n ${stacked === 'first' &&\n `\n border-top-left-radius: ${theme.borderRadius};\n `}\n\n ${stacked === 'last' &&\n `\n border-bottom-left-radius: ${theme.borderRadius};\n `}\n `;\n};\n\nconst userMessageStyling = (stacked: Stacked, theme: any) => {\n const colors = css`\n background-color: ${theme.colors?.primary};\n color: ${theme.colors?.accent};\n `;\n\n if (!theme.borderRadius) {\n return colors;\n }\n\n return css`\n ${colors}\n\n border-top-left-radius: ${theme.borderRadius};\n border-bottom-left-radius: ${theme.borderRadius};\n\n ${stacked === 'first' &&\n `\n border-top-right-radius: ${theme.borderRadius};\n `}\n\n ${stacked === 'last' &&\n `\n border-bottom-right-radius: ${theme.borderRadius};\n `}\n `;\n};\n\nexport const MessageContentPart = styled.div`\n margin-bottom: ${(p) => p.theme.sizes?.normal};\n &:last-child {\n margin-bottom: 0;\n }\n`;\n\nexport const messageContentPadding = (p: { theme: Theme }) => css`\n margin: ${p.theme.sizes?.medium} 0;\n padding: 0 ${p.theme.sizes?.medium};\n`;\n\nexport const StyledForm = styled(FormComponent)`\n & button.humany-form-component-button {\n ${(p) =>\n p.theme.colors?.primary &&\n p.theme.colors?.accent &&\n invertedHoverButton({\n active: false,\n primaryColor: p.theme.colors?.primary,\n secondaryColor: p.theme.colors?.accent,\n theme: p.theme,\n })};\n display: block;\n width: 100%;\n margin-bottom: ${(p) => p.theme.sizes?.normal};\n }\n & button.humany-form-component-submit {\n width: 100%;\n margin: 0;\n :not(:last-child) {\n margin-bottom: ${(p) => p.theme.sizes?.normal};\n }\n }\n`;\n\nexport const StyledHtml = styled(Html)<any>`\n white-space: pre-wrap;\n a {\n color: ${(p) => p.theme.colors.link};\n &:focus {\n ${(p) => p.theme.accessibility?.isTabbing && borderTabStyle};\n }\n }\n`;\n\nexport const StyledActionList = styled(List)`\n padding: 0;\n list-style: none;\n margin: 0 -${(p) => p.theme.sizes?.normal};\n > li {\n margin: ${(p) => p.theme.sizes?.normal};\n }\n`;\n\nexport const StyledActionButton = styled.button`\n ${(p) => buttonCss(p)};\n display: block;\n background-color: ${(p) => p.theme.colors?.primary};\n width: 100%;\n color: #fff;\n &:focus-visible {\n ${borderTabStyle}\n background-color: transparent;\n }\n`;\n","import React, { forwardRef } from 'react';\nimport { ConversationMessageSender } from '../../../types';\nimport { ContentBundle, Loader, MessageContainer, MessageContent } from './styles';\n\ntype Props = {\n className?: string;\n agentData?: ConversationMessageSender;\n boxed?: boolean;\n};\n\nconst ConversationLoader = forwardRef<HTMLDivElement, Props>(\n ({ boxed, className, agentData }, ref) => {\n return (\n <ContentBundle ref={ref}>\n <MessageContainer left={boxed} center={!boxed}>\n <MessageContent padded={!!boxed} stacked={boxed ? 'first' : undefined}>\n <Loader>\n <div />\n <div />\n <div />\n </Loader>\n </MessageContent>\n </MessageContainer>\n </ContentBundle>\n );\n }\n);\n\nexport default ConversationLoader;\n","import styled from '@emotion/styled';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n name?: string;\n timestamp?: number | null;\n};\n\nconst StyledTimestamp = styled.p`\n && {\n font-size: ${(p) => p.theme.fonts?.small};\n font-weight: 300;\n }\n margin: 0;\n line-height: 1.5em;\n grid-area: info;\n color: ${(p) => p.theme.colors?.text};\n`;\n\nconst getTimestamp = (raw: number) => {\n return new Date(raw).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\n};\n\nconst Timestamp: React.FC<Props> = ({ className, name, timestamp }) => {\n if (!name && !timestamp) {\n return null;\n }\n\n let output = '';\n if (name) {\n if (timestamp) {\n output = `${name}: ${getTimestamp(timestamp)}`;\n } else {\n output = name;\n }\n } else if (timestamp) {\n output = getTimestamp(timestamp);\n }\n\n return <StyledTimestamp>{output}</StyledTimestamp>;\n};\n\nexport default Timestamp;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { SymbolBadge, useProperties } from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { ConversationMessageSender } from '../../../../types';\nimport { ConversationComponentProperties } from '../../plugin';\nimport { Avatar } from '../styles';\nimport Timestamp from './timestamp';\n\ntype Props = {\n className?: string;\n children: any;\n sender: ConversationMessageSender;\n timestamp: number | null;\n};\n\nconst AgentMessage: React.FC<Props> = ({ className, children, sender, timestamp }) => {\n const { avatar, name } = sender;\n const { avatarSize } = useProperties<ConversationComponentProperties>();\n\n return (\n <StyledAgentMessage\n hasAvatar={!!avatar}\n className={appendClassNames(className, 'humany-conversation-agent-message')}\n >\n {avatar && (\n <Avatar avatarSize={avatarSize}>\n {typeof avatar === 'string' ? (\n <img src={avatar} />\n ) : (\n <SymbolBadge symbol={avatar} />\n )}\n </Avatar>\n )}\n {children}\n <Timestamp name={name} timestamp={timestamp}></Timestamp>\n </StyledAgentMessage>\n );\n};\n\nexport const StyledAgentMessage = styled.div<any>`\n display: grid;\n margin-right: 10%;\n width: 90%;\n ${(p) =>\n p.hasAvatar\n ? css`\n grid-template-columns: auto 1fr;\n grid-template-rows: 1fr auto;\n grid-template-areas:\n 'avatar content'\n '. info';\n `\n : css`\n grid-template-columns: 1fr;\n grid-template-rows: 1fr auto;\n grid-template-areas:\n 'content'\n 'info';\n `};\n`;\n\nexport default AgentMessage;\n","import styled from '@emotion/styled';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { forwardRef } from 'react';\nimport Timestamp from './timestamp';\n\nexport type Props = {\n className?: string;\n timestamp: number;\n discrete?: boolean;\n fullWidth?: boolean;\n children: any;\n};\n\nconst SystemMessage = forwardRef<HTMLDivElement, Props>(\n ({ className, children, timestamp, discrete, fullWidth }, ref) => {\n return (\n <StyledSystemMessage\n ref={ref}\n className={appendClassNames(className, 'humany-conversation-system-message')}\n fullWidth={fullWidth}\n >\n {discrete ? (\n <Discrete className=\"humany-conversation-discrete-message\">\n {children}\n <Timestamp timestamp={timestamp}></Timestamp>\n </Discrete>\n ) : (\n <>\n {children}\n <Timestamp timestamp={timestamp}></Timestamp>\n </>\n )}\n </StyledSystemMessage>\n );\n }\n);\n\nexport const StyledSystemMessage = styled.div<any>`\n ${(p) => p.fullWidth && 'width: 100%'};\n padding: 0 ${(p) => p.theme.sizes?.large};\n overflow: auto;\n`;\n\nexport const Discrete = styled.div`\n text-align: center;\n word-wrap: break-word;\n font-size: ${(p) => p.theme.fonts?.normal};\n color: ${(p) => p.theme.colors?.text};\n > p {\n margin: 0;\n }\n`;\n\nexport default SystemMessage;\n","import styled from '@emotion/styled';\nimport { useProperties } from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { ConversationComponentProperties } from '../../plugin';\nimport Timestamp from './timestamp';\n\nexport type Props = {\n className?: string;\n timestamp: number;\n children: any;\n};\n\nconst UserMessage: React.FC<Props> = ({ className, children, timestamp }) => {\n const { userLabel = '' } = useProperties<ConversationComponentProperties>();\n return (\n <StyledUserMessage\n className={appendClassNames(className, 'humany-conversation-user-message')}\n >\n {children}\n <Timestamp name={userLabel} timestamp={timestamp}></Timestamp>\n </StyledUserMessage>\n );\n};\n\nconst StyledUserMessage = styled.div`\n margin-left: 10%;\n width: 90%;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\n\nexport default UserMessage;\n","export const mapActions = (actions: any) =>\n Array.isArray(actions)\n ? actions\n : Object.keys(actions).map((i) => {\n return {\n label: actions[i],\n actionKey: i,\n };\n });\n","import styled from '@emotion/styled';\nimport {\n borderTabStyle,\n Button,\n buttonCss,\n DispatchAction,\n ItemList,\n itemList,\n SymbolBadge,\n} from '@telia-ace/widget-ui';\nimport React, { FC } from 'react';\nimport { ButtonListProperties } from '../../../../types';\nimport { mapActions } from '../../../../utils/map-actions';\nimport { messageContentPadding } from '../styles';\n\ntype Props = { dispatch: DispatchAction } & ButtonListProperties;\n\nexport const ButtonList: FC<Props> = ({ header, actions, dispatch }) => {\n return (\n <StyledButtonList\n header={header}\n items={mapActions(actions)}\n renderItem={(item: any) => {\n return (\n <li key={item.actionKey}>\n <StyledButtonListButton\n onClick={() => {\n dispatch('action', item);\n }}\n aria-label={item.label}\n title={item.label}\n >\n <SymbolBadge symbol={item.symbol} />\n {item.label}\n </StyledButtonListButton>\n </li>\n );\n }}\n />\n );\n};\n\nconst StyledButtonList = styled(ItemList)`\n ${itemList}\n > ul {\n display: flex;\n flex-wrap: wrap;\n gap: ${(p) => p.theme.sizes?.normal};\n > li {\n margin: 0;\n }\n }\n ${messageContentPadding}\n`;\n\nconst StyledButtonListButton = styled(Button)`\n ${buttonCss};\n\n display: block;\n padding: ${(p) => p.theme.sizes?.normal};\n background-color: ${(p) => p.theme.colors?.primary};\n width: 100%;\n color: #ffffff;\n overflow: hidden;\n text-overflow: ellipsis;\n &:focus-visible {\n ${borderTabStyle}\n background-color: transparent;\n }\n\n i,\n svg {\n margin-right: ${(p) => p.theme.sizes?.small};\n }\n`;\n","import { useComponent } from '@telia-ace/widget-ui';\nimport React, { Suspense } from 'react';\n\ntype Props = {\n type: string;\n content?: { [key: string]: any };\n};\nexport const Custom: React.FC<Props> = ({ type, content = {} }) => {\n const Component = useComponent(type);\n\n if (!Component || !type) {\n return null;\n }\n return (\n <Suspense fallback={null}>\n <Component {...content} />\n </Suspense>\n );\n};\n","import styled from '@emotion/styled';\nimport { borderTabStyle, genericHtml, Html as UiHtml } from '@telia-ace/widget-ui';\nimport React, { FC } from 'react';\nimport { HtmlProperties } from '../../../../types';\nimport { messageContentPadding } from '../styles';\n\ntype Props = HtmlProperties;\n\nexport const Html: FC<Props> = ({ body }) => {\n return <StyledHtml html={body} />;\n};\n\nconst StyledHtml = styled(UiHtml)<any>`\n ${genericHtml}\n color: inherit;\n white-space: pre-wrap;\n ${messageContentPadding}\n a {\n color: ${(p) => p.theme.colors.link};\n &:focus-visible {\n ${borderTabStyle};\n }\n }\n`;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n borderTabStyle,\n Button,\n DispatchAction,\n headingElement,\n itemList,\n ItemList as ItemListUi,\n SymbolBadge,\n} from '@telia-ace/widget-ui';\nimport React, { FC } from 'react';\nimport { LinkListProperties } from '../../../../types';\nimport { mapActions } from '../../../../utils/map-actions';\nimport { messageContentPadding } from '../styles';\n\ntype Props = { dispatch: DispatchAction } & LinkListProperties;\n\nexport const ItemList: FC<Props> = ({ header, actions, dispatch }) => {\n return (\n <StyledItemList\n header={header}\n items={mapActions(actions)}\n renderItem={(item: any) => {\n return (\n <li key={item.actionKey}>\n <ListItem>\n {item.symbol?.content && (\n <div className=\"item-icon\">\n <SymbolBadge\n size={22}\n symbol={{\n type: item.symbol.type,\n content: item.symbol.content,\n }}\n />\n </div>\n )}\n <div className=\"item-body\">\n <Button\n onClick={() => {\n dispatch('action', item);\n }}\n aria-label={item.label}\n title={item.label}\n >\n {item.label}\n </Button>\n\n {item.description && <p>{item.description}</p>}\n </div>\n </ListItem>\n </li>\n );\n }}\n />\n );\n};\n\nconst StyledItemList = styled(ItemListUi)`\n ${itemList}\n\n > .humany-paragraph {\n ${messageContentPadding}\n margin-bottom: 0;\n\n h1 {\n margin: 0;\n }\n }\n\n ${(p) =>\n headingElement(p)(\n 'h1',\n css`\n white-space: normal;\n `\n )}\n\n > ul {\n display: flex;\n flex-direction: column;\n gap: ${(p) => p.theme.sizes?.normal};\n > li {\n margin: 0;\n }\n }\n\n li {\n border-bottom: ${(p) => p.theme.border};\n\n &:last-of-type {\n border-bottom: none;\n }\n }\n`;\n\nconst ListItem = styled.div`\n display: flex;\n gap: ${(p) => p.theme.sizes?.medium};\n ${messageContentPadding}\n\n .item-icon {\n }\n\n .item-body {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: ${(p) => p.theme.sizes?.normal};\n\n p {\n margin: 0;\n white-space: normal;\n }\n }\n\n button {\n background: transparent;\n border: none;\n font-family: inherit;\n font-size: ${(p) => p.theme.fonts?.normal};\n cursor: pointer;\n padding: 0;\n margin: 0;\n\n &:focus-visible {\n ${borderTabStyle}\n span {\n color: ${(p) => p.theme.colors?.primary};\n text-decoration: underline;\n }\n }\n }\n`;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n borderTabStyle,\n Button,\n DispatchAction,\n headingElement,\n itemList,\n ItemList,\n SymbolBadge,\n} from '@telia-ace/widget-ui';\nimport React, { FC } from 'react';\nimport { LinkListProperties } from '../../../../types';\nimport { mapActions } from '../../../../utils/map-actions';\nimport { messageContentPadding } from '../styles';\n\ntype Props = { dispatch: DispatchAction } & LinkListProperties;\n\nexport const LinkList: FC<Props> = ({ header, actions, dispatch }) => {\n return (\n <StyledLinkList\n header={header}\n items={mapActions(actions)}\n renderItem={(item: any) => {\n return (\n <li key={item.actionKey}>\n <StyledLinkButton\n help={item.actionKey === 'help'}\n onClick={() => {\n dispatch('action', item);\n }}\n aria-label={item.label}\n title={item.label}\n >\n {item.label}\n {item.actionKey === 'help' && (\n <SymbolBadge\n size={14}\n symbol={{\n type: 'Svg',\n content: 'caret-down',\n }}\n />\n )}\n </StyledLinkButton>\n </li>\n );\n }}\n />\n );\n};\n\nconst StyledLinkList = styled(ItemList)`\n ${itemList}\n ${messageContentPadding}\n\n ${(p) =>\n headingElement(p)(\n 'h1',\n css`\n white-space: normal;\n `\n )}\n\n > ul {\n display: flex;\n flex-direction: column;\n gap: ${(p) => p.theme.sizes?.normal};\n > li {\n margin: 0;\n }\n }\n`;\n\nconst StyledLinkButton = styled(Button)<{ help: boolean }>`\n display: block;\n text-align: left;\n font-weight: 300;\n color: ${(p) => p.theme.colors?.primary};\n max-width: 100%;\n text-overflow: ellipsis;\n overflow: hidden;\n\n ${(p) =>\n p.help &&\n css`\n color: ${p.theme.colors?.text};\n text-decoration: underline;\n\n i,\n svg {\n margin-left: ${p.theme.sizes?.small};\n }\n `}\n\n &:focus-visible {\n ${borderTabStyle}\n span {\n color: ${(p) => p.theme.colors?.primary};\n text-decoration: underline;\n }\n }\n`;\n","import styled from '@emotion/styled';\nimport React, { FC } from 'react';\n\nexport const Separator: FC = () => {\n return <StyledSeparator />;\n};\n\nconst StyledSeparator = styled.div`\n ${(p) => p.theme.border && `border-bottom: ${p.theme.border};`}\n width: 100%;\n`;\n","import styled from '@emotion/styled';\nimport { Typography } from '@telia-ace/widget-ui';\nimport React, { FC } from 'react';\nimport { messageContentPadding } from '../styles';\n\ntype Props = { text: string };\n\nexport const Text: FC<Props> = ({ text }) => {\n return <StyledTypography variant=\"span\">{text}</StyledTypography>;\n};\n\nconst StyledTypography = styled(Typography)`\n ${messageContentPadding}\n`;\n","import styled from '@emotion/styled';\nimport {\n borderTabStyle,\n Button,\n buttonCss,\n DispatchAction,\n ItemList,\n itemList,\n SymbolBadge,\n} from '@telia-ace/widget-ui';\nimport React, { FC, useMemo } from 'react';\nimport { VideoRequestProperties } from '../../../../types';\nimport { messageContentPadding } from '../styles';\n\ntype Props = { dispatch: DispatchAction } & VideoRequestProperties;\n\nexport const VideoRequest: FC<Props> = ({\n header = 'Video call',\n acceptLabel = 'Accept',\n declineLabel = 'Decline',\n dispatch,\n}) => {\n const actions = useMemo(() => {\n return [\n {\n label: acceptLabel,\n actionKey: 'accept-video-call',\n symbol: {\n type: 'Svg',\n content: 'video',\n },\n },\n {\n label: declineLabel,\n actionKey: 'decline-video-call',\n symbol: {\n type: 'Svg',\n content: 'close',\n },\n },\n ];\n }, [acceptLabel, declineLabel]);\n return (\n <StyledItemList\n header={header}\n items={actions}\n renderItem={(item: any) => {\n const bgColor = item.actionKey === 'accept-video-call' ? '#70c48e' : '#da5c85';\n return (\n <li key={item.actionKey}>\n <StyledButton\n onClick={() => {\n dispatch('action', item);\n }}\n aria-label={item.label}\n title={item.label}\n bgColor={bgColor}\n >\n <SymbolBadge symbol={item.symbol} size={25} />\n </StyledButton>\n </li>\n );\n }}\n />\n );\n};\n\nconst StyledItemList = styled(ItemList)`\n ${(p) => itemList(p)}\n > ul {\n display: flex;\n flex-wrap: wrap;\n gap: ${(p) => p.theme.sizes?.normal};\n > li {\n margin: 0;\n }\n }\n ${(p) => messageContentPadding(p)}\n`;\n\nconst StyledButton = styled(Button)<{ bgColor: string }>`\n ${buttonCss};\n\n background-color: ${(p) => p.bgColor};\n display: flex;\n justify-content: center;\n align-items: center;\n color: #ffffff;\n width: 46px;\n height: 46px;\n border-radius: 100%;\n\n &:focus-visible {\n ${borderTabStyle}\n background-color: transparent;\n\n i,\n svg {\n color: ${(p) => p.theme.colors?.primary};\n\n path {\n stroke: ${(p) => p.theme.colors?.primary};\n }\n }\n }\n\n i,\n svg {\n color: #fff;\n\n path {\n stroke: #fff;\n }\n }\n`;\n","import React, { FC } from 'react';\n\nimport styled from '@emotion/styled';\nimport { DispatchAction, List, list } from '@telia-ace/widget-ui';\nimport { ConversationMessageListItemType, ConverstationMessageItem } from '../../../../types';\nimport { ButtonList } from '../message-list-items/button-list';\nimport { Custom } from '../message-list-items/custom';\nimport { Html } from '../message-list-items/html';\nimport { ItemList } from '../message-list-items/item-list';\nimport { LinkList } from '../message-list-items/link-list';\nimport { Separator } from '../message-list-items/separator';\nimport { Text } from '../message-list-items/text';\nimport { VideoRequest } from '../message-list-items/video-request';\n\ntype Props = {\n items: ConverstationMessageItem<any>[];\n dispatch: DispatchAction;\n};\n\nconst mapItem = ([type, content]: ConverstationMessageItem<any>) => {\n return { type, content };\n};\n\nexport const MessageList: FC<Props> = ({ items, dispatch }) => {\n return (\n <StyledList\n items={items.map(mapItem)}\n renderLi\n renderItem={(item: any) => {\n switch (item.type) {\n case ConversationMessageListItemType.Text: {\n return <Text text={item.content} />;\n }\n case ConversationMessageListItemType.HTML: {\n return <Html {...item.content} />;\n }\n case ConversationMessageListItemType.Separator: {\n return <Separator {...item.content} />;\n }\n case ConversationMessageListItemType.ItemList: {\n return <ItemList {...item.content} dispatch={dispatch} />;\n }\n case ConversationMessageListItemType.LinkList: {\n return <LinkList {...item.content} dispatch={dispatch} />;\n }\n case ConversationMessageListItemType.ButtonList: {\n return <ButtonList {...item.content} dispatch={dispatch} />;\n }\n case ConversationMessageListItemType.VideoRequest: {\n return <VideoRequest {...item.content} dispatch={dispatch} />;\n }\n default: {\n return <Custom type={item.type} content={item.content} />;\n }\n }\n }}\n />\n );\n};\n\nconst StyledList = styled(List)<any>`\n ${list}\n\n > li {\n margin: 0;\n }\n`;\n","import { Html, useDispatch } from '@telia-ace/widget-ui';\nimport React, { forwardRef, useCallback } from 'react';\nimport { ConversationMessageType } from '../../../conversation-controller';\nimport { ConversationMessageContent } from '../../../types';\nimport { BundledConversationMessage } from '../plugin';\nimport { AgentMessage, SystemMessage, UserMessage } from './message-types';\nimport { MessageList } from './message-types/message-list';\nimport {\n ContentBundle,\n MessageContainer,\n MessageContent,\n MessageContentPart,\n MessageTitle,\n Stacked,\n StyledActionButton,\n StyledActionList,\n StyledForm,\n StyledHtml,\n} from './styles';\n\ntype Props = {\n className?: string;\n} & BundledConversationMessage;\n\nexport const ConversationMessage = forwardRef<HTMLDivElement, Props>(\n ({ className, timestamp, sender, type, content }, ref) => {\n const getMessageStackPosition = useCallback(\n (index: number): Stacked => {\n let messageOrder: Stacked = 'first';\n if (content.length > 1) {\n messageOrder =\n index === 0 ? 'first' : index + 1 === content.length ? 'last' : 'middle';\n }\n return messageOrder;\n },\n [content]\n );\n\n const createSystemMessage = () => {\n return (\n <>\n {content.map((item) => {\n const { key, body, title, form, actions } = item;\n const discrete = !!body && !title && !form && !actions;\n return (\n <SystemMessage\n className={className}\n key={key}\n discrete={discrete}\n ref={ref}\n timestamp={timestamp}\n fullWidth={!!form || !!actions}\n >\n {discrete && body ? (\n <Html html={body} />\n ) : (\n <Message isSystem content={item} />\n )}\n </SystemMessage>\n );\n })}\n </>\n );\n };\n\n const createAgentMessage = () => {\n return (\n <AgentMessage sender={sender} timestamp={timestamp} className={className}>\n <ContentBundle>\n {content.map((item, index) => {\n return (\n <MessageContainer left key={item.key} ref={ref}>\n <Message\n content={item}\n stacked={getMessageStackPosition(index)}\n />\n </MessageContainer>\n );\n })}\n </ContentBundle>\n </AgentMessage>\n );\n };\n\n const createUserMessage = () => {\n return (\n <UserMessage timestamp={timestamp} className={className}>\n <ContentBundle>\n {content.map((item, index) => {\n return (\n <MessageContainer right key={item.key} ref={ref}>\n <Message\n isUser\n content={item}\n stacked={getMessageStackPosition(index)}\n />\n </MessageContainer>\n );\n })}\n </ContentBundle>\n </UserMessage>\n );\n };\n\n switch (type) {\n case ConversationMessageType.System:\n return createSystemMessage();\n case ConversationMessageType.Agent:\n return createAgentMessage();\n case ConversationMessageType.User:\n return createUserMessage();\n default:\n return null;\n }\n }\n);\n\ntype MessageContentProps = {\n className?: string;\n content: ConversationMessageContent;\n isUser?: boolean;\n isSystem?: boolean;\n stacked?: Stacked;\n CustomComponent?: any;\n};\n\nconst Message: React.FC<MessageContentProps> = ({ content, isUser, isSystem, stacked }) => {\n const dispatch = useDispatch();\n const { title, body, actions, form, items } = content;\n\n // Using print(string) or print(object) is considered legacy in favor of print(array).\n const isLegacyMessage = !items;\n if (isLegacyMessage) {\n return (\n <MessageContent\n padded={!isSystem}\n user={!!isUser}\n stacked={stacked}\n fullWidth={!!form || !!actions}\n >\n {title && (\n <MessageContentPart>\n <MessageTitle variant=\"h2\">{title}</MessageTitle>\n </MessageContentPart>\n )}\n {body && (\n <MessageContentPart>\n <StyledHtml html={body} />\n </MessageContentPart>\n )}\n {form && (\n <MessageContentPart>\n <StyledForm\n {...form}\n onChange={(key: string, data: any) => {\n dispatch('form', {\n data,\n formKey: form.schema.id,\n actionKey: key,\n });\n }}\n />\n </MessageContentPart>\n )}\n {actions && (\n <MessageContentPart>\n <StyledActionList\n items={Object.keys(actions).map((i: any) => {\n return { label: actions[i], actionKey: i };\n })}\n renderItem={(item: any) => {\n return (\n <li key={item.actionKey}>\n <StyledActionButton\n onClick={() => {\n dispatch('action', item.actionKey);\n }}\n >\n {item.label}\n </StyledActionButton>\n </li>\n );\n }}\n />\n </MessageContentPart>\n )}\n </MessageContent>\n );\n }\n\n return (\n <MessageContent user={!!isUser} stacked={stacked}>\n <MessageList items={items} dispatch={dispatch} />\n </MessageContent>\n );\n};\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { borderTabStyle, headingElement, useProperties, useScroll } from '@telia-ace/widget-ui';\nimport React, { useCallback } from 'react';\nimport { ConversationMessageSender } from '../../../types';\nimport { BundledConversationMessage, ConversationComponentProperties } from '../plugin';\nimport ConversationInput from './input';\nimport ConversationLoader from './loader';\nimport { ConversationMessage } from './message';\nimport { AgentMessage } from './message-types';\n\nexport const ConversationContent: React.FC = () => {\n const setLastEntryRef = useCallback((node: HTMLDivElement) => {\n if (node) {\n setTimeout(() => {\n node.scrollIntoView({\n block: 'start',\n behavior: 'smooth',\n });\n }, 250);\n }\n }, []);\n\n const [scrollableCss, viewElem] = useScroll(true);\n const {\n messages,\n loading,\n typingActors = [],\n } = useProperties<ConversationComponentProperties>();\n\n const renderTypingActors = () => {\n if (typingActors && typingActors.length) {\n return typingActors.map((actor: ConversationMessageSender, index) => {\n return (\n <MessageEntry id={`typing_${actor.name}`} key={`typing_${actor.name}`}>\n <AgentMessage timestamp={Date.now()} sender={actor}>\n <ConversationLoader boxed ref={setLastEntryRef}></ConversationLoader>\n </AgentMessage>\n </MessageEntry>\n );\n });\n }\n return null;\n };\n\n return (\n <>\n <Scrollable tabIndex={0} scrollableCss={scrollableCss} ref={viewElem}>\n {messages && messages.length\n ? messages.map((message: BundledConversationMessage, index) => {\n const { type, timestamp, sender, content } = message;\n return (\n <MessageEntry\n className={'humany-conversation-entry'}\n tabIndex={-1}\n key={`${type}_${sender?.name}_${timestamp}_${content[0].key}`}\n >\n <ConversationMessage {...message} ref={setLastEntryRef} />\n </MessageEntry>\n );\n })\n : null}\n {renderTypingActors()}\n {loading && (\n <MessageEntry>\n <ConversationLoader ref={setLastEntryRef} />\n </MessageEntry>\n )}\n </Scrollable>\n <ConversationInput />\n </>\n );\n};\n\nconst Scrollable = styled.div<{ scrolling: boolean } & any>`\n display: flex;\n flex-direction: column;\n align-items: stretch;\n flex: 0 1 100%;\n padding: 0 ${(p) => p.theme.sizes?.medium};\n ${(p) => !!p.scrollableCss && p.scrollableCss};\n &:focus-visible {\n ${(p) => borderTabStyle(p)};\n }\n`;\n\nconst MessageEntry = styled.div`\n margin: 0;\n margin-bottom: ${(p) => p.theme.sizes?.medium};\n\n &:first-of-type {\n margin-top: ${(p) => p.theme.sizes?.medium};\n }\n\n &:last-of-type {\n padding-bottom: ${(p) => p.theme.sizes?.medium};\n }\n\n & span,\n p,\n a,\n div {\n font-weight: 300;\n }\n\n & b,\n h1 {\n font-weight: normal;\n }\n ${(p) =>\n headingElement(p)(\n 'h1',\n css`\n font-weight: normal;\n `\n )}\n`;\n","import styled from '@emotion/styled';\nimport {\n borderTabStyle,\n Button,\n DispatchAction,\n SymbolBadge,\n Typography,\n WidgetOverlayOutlet,\n} from '@telia-ace/widget-ui';\nimport React, { FC, useEffect, useRef } from 'react';\nimport { ConversationContent } from './content';\n\ntype OverlayOutletProps = {\n dispatch: DispatchAction;\n};\n\nexport const OverlayOutlet: FC<OverlayOutletProps> = ({ dispatch }) => {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (wrapperRef.current && wrapperRef.current.parentNode) {\n dispatch('overlay-mounted', wrapperRef.current);\n }\n }, [wrapperRef]);\n\n return (\n <WidgetOverlayOutlet\n portalId=\"humany-conversation-overlay-portal\"\n className=\"humany-conversation-overlay-outlet\"\n ref={wrapperRef}\n />\n );\n};\n\ntype ConversationOverlayProps = {\n dispatch: DispatchAction;\n header?: string;\n buttonLabel?: string;\n};\n\nexport const ConversationOverlayOutlet: FC<ConversationOverlayProps> = ({\n dispatch,\n header,\n buttonLabel,\n}) => {\n return (\n <StyledWidgetOverlayOutlet\n portalId=\"humany-conversation-portal\"\n className=\"humany-conversation-outlet\"\n >\n <ConversationOverlayHead className=\"humany-conversation-outlet-head\">\n <ConversationOverlayHeadButton\n className=\"humany-conversation-outlet-head-button\"\n aria-label={buttonLabel}\n title={buttonLabel}\n onClick={() => dispatch('hide-overlay-conversation')}\n >\n <SymbolBadge\n symbol={{\n type: 'Svg',\n content: 'caret-down',\n }}\n size={20}\n />\n </ConversationOverlayHeadButton>\n {header && (\n <ConversationOverlayHeader\n className=\"humany-conversation-outlet-header\"\n variant=\"h1\"\n >\n {header}\n </ConversationOverlayHeader>\n )}\n </ConversationOverlayHead>\n <ConversationContent />\n </StyledWidgetOverlayOutlet>\n );\n};\n\nconst StyledWidgetOverlayOutlet = styled(WidgetOverlayOutlet)`\n z-index: 11;\n top: auto;\n height: 65%;\n background-color: #ffffff;\n display: flex;\n flex-direction: column;\n border-top-right-radius: ${(p) => p.theme.sizes?.large};\n border-top-left-radius: ${(p) => p.theme.sizes?.large};\n`;\n\nconst ConversationOverlayHead = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: ${(p) => p.theme.sizes?.normal};\n padding: ${(p) => p.theme.sizes?.normal};\n ${(p) => p.theme.border && `border-bottom: ${p.theme.border};`}\n`;\n\nconst ConversationOverlayHeader = styled(Typography)`\n font-size: ${(p) => p.theme.fonts?.medium};\n color: ${(p) => p.theme.colors?.text};\n margin: 0;\n`;\n\nconst ConversationOverlayHeadButton = styled(Button)`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ${(p) => p.theme.sizes?.small} ${(p) => p.theme.sizes?.medium};\n ${(p) => p.theme.borderRadius && `border-radius: ${p.theme.borderRadius};`}\n\n &:focus-visible {\n ${borderTabStyle};\n }\n\n svg line {\n stroke: ${(p) => p.theme.colors?.text};\n }\n`;\n","import styled from '@emotion/styled';\nimport { ConversationContext, useDispatch, useProperties } from '@telia-ace/widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React from 'react';\nimport { ConversationComponentProperties } from './plugin';\nimport { ConversationContent } from './ui/content';\nimport { ConversationOverlayOutlet, OverlayOutlet } from './ui/overlay-outlets';\n\ntype Props = {\n className: string;\n};\n\nconst Conversation: React.FC<Props> = ({ className, ...other }) => {\n const {\n overlay,\n overlayConversationHeader,\n overlayConversationCloseLabel,\n conversationControllerId,\n } = useProperties<ConversationComponentProperties>();\n const dispatch = useDispatch();\n\n return (\n <ConversationContext.Provider\n value={conversationControllerId ? { id: conversationControllerId } : null}\n >\n <Wrapper\n {...other}\n className={appendClassNames(className, 'humany-conversation-component')}\n >\n <ConversationContent />\n </Wrapper>\n {overlay && (\n <>\n <OverlayOutlet dispatch={dispatch} />\n {overlay.conversation && (\n <ConversationOverlayOutlet\n dispatch={dispatch}\n header={overlayConversationHeader}\n buttonLabel={overlayConversationCloseLabel}\n />\n )}\n </>\n )}\n </ConversationContext.Provider>\n );\n};\n\nconst Wrapper = styled.div`\n position: absolute;\n right: 0;\n left: 0;\n bottom: 0;\n top: 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n`;\n\nexport default Conversation;\n"],"names":["ConversationInput","className","inputText","setInputText","useState","inputFocus","setInputFocus","calculatedLineHeight","setCalculatedLineHeight","textareaMaxHeight","setTextareaMaxHeight","isTabbing","useIsTabbing","dispatch","useDispatch","inputPlaceholder","inputHidden","inputDisabled","sendButtonLabel","multiline","secondaryAction","useProperties","scrollableCss","inputRef","useScroll","useEffect","lineHeight","maxHeight","lineHeightNumber","calcLH","maxHeightNumber","submit","e","onChange","onSecondaryActionButtonClick","__spreadValues","calculateHeight","value","scrollHeight","areaHeight","React","Wrapper","appendClassNames","SecondaryActionButton","SymbolBadge","StyledTextArea","StyledInput","StyledButton","SendSymbol","styled","Input","p","_a","Button","borderTabStyle","css","_b","hasContent","other","__objRest","ConversationInput$1","Avatar","LoaderAnimation","keyframes","Loader","ContentBundle","MessageTitle","Typography","MessageContainer","MessageContent","nonUserMessageStyling","userMessageStyling","stacked","theme","colors","MessageContentPart","messageContentPadding","StyledForm","FormComponent","invertedHoverButton","_c","_d","StyledHtml","Html","StyledActionList","List","StyledActionButton","buttonCss","ConversationLoader","forwardRef","boxed","agentData","ref","ConversationLoader$1","StyledTimestamp","getTimestamp","raw","Timestamp","name","timestamp","output","Timestamp$1","AgentMessage","children","sender","avatar","avatarSize","StyledAgentMessage","AgentMessage$1","SystemMessage","discrete","fullWidth","StyledSystemMessage","Discrete","SystemMessage$1","UserMessage","userLabel","StyledUserMessage","UserMessage$1","mapActions","actions","i","ButtonList","header","StyledButtonList","item","StyledButtonListButton","ItemList","itemList","Custom","type","content","Component","useComponent","Suspense","body","UiHtml","genericHtml","StyledItemList","ListItem","ItemListUi","headingElement","LinkList","StyledLinkList","StyledLinkButton","Separator","StyledSeparator","Text","text","StyledTypography","VideoRequest","acceptLabel","declineLabel","useMemo","bgColor","mapItem","MessageList","items","StyledList","ConversationMessageListItemType","__spreadProps","list","ConversationMessage","getMessageStackPosition","useCallback","index","messageOrder","createSystemMessage","key","title","form","Message","createAgentMessage","createUserMessage","ConversationMessageType","isUser","isSystem","data","ConversationContent","setLastEntryRef","node","viewElem","messages","loading","typingActors","renderTypingActors","actor","MessageEntry","Scrollable","message","OverlayOutlet","wrapperRef","useRef","WidgetOverlayOutlet","ConversationOverlayOutlet","buttonLabel","StyledWidgetOverlayOutlet","ConversationOverlayHead","ConversationOverlayHeadButton","ConversationOverlayHeader","Conversation","overlay","overlayConversationHeader","overlayConversationCloseLabel","conversationControllerId","ConversationContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAMA,KAAqC,CAAC,EAAE,WAAAC,QAAgB;AAC1D,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAE,GACvC,CAACC,GAAYC,CAAa,IAAIF,EAAS,EAAK,GAC5C,CAACG,GAAsBC,CAAuB,IAAIJ,EAAS,CAAC,GAC5D,CAACK,GAAmBC,CAAoB,IAAIN,EAAS,CAAC,GACtDO,IAAYC,MACZC,IAAWC,KACX;AAAA,IACF,kBAAAC,IAAmB;AAAA,IACnB,aAAAC,IAAc;AAAA,IACd,eAAAC,IAAgB;AAAA,IAChB,iBAAAC,IAAkB;AAAA,IAClB,gBAAgBC,IAAY;AAAA,IAC5B,iBAAAC;AAAA,MACAC,EAA+C,GAC7C,CAACC,IAAeC,CAAQ,IAAIC,GAAU,EAAI;AAEhD,EAAAC,GAAU,MAAM;AACZ,QAAIF,EAAS,SAAS;AAClB,YAAM,EAAE,YAAAG,GAAY,WAAAC,EAAA,IAAc,iBAAiBJ,EAAS,OAAO;AACnE,UAAIG,KAAcA,EAAW,QAAQ,IAAI,IAAI,IAAI;AACvC,cAAAE,IAAmBF,EAAW,MAAM,IAAI,GACxCG,KAAS,SAASD,EAAiB,CAAC,GAAG,EAAE;AAC/C,QAAApB,EAAwBqB,EAAM;AACxB,cAAAC,KAAkBH,EAAU,MAAM,IAAI;AAC5C,QAAAjB,EAAqB,SAASoB,GAAgB,CAAC,GAAG,EAAE,CAAC;AAAA;AAAA;AAAA,EAE7D,GACD,CAACP,EAAS,OAAO,CAAC;AAEf,QAAAQ,IAAS,CAACC,MAAW;AACvB,IAAI,CAACA,EAAE,YAAY,CAACb,KAChBa,EAAE,eAAe,GACb9B,KAAaA,EAAU,SAAS,MAChCW,EAAS,eAAe,EAAE,MAAMX,EAAW,CAAA,GAC3CC,EAAa,EAAE,GACf8B,EAAS,EAAE,MAER/B,EAAU,SAAS,KAC1B8B,EAAE,eAAe;AAAA,EACrB,GAGEE,KAA+B,CAACF,MAAW;AAC7C,IAAKZ,MAGLY,EAAE,eAAe,GACjBnB,EAAS,UAAUsB,EAAA;AAAA,MACf,WAAWf,EAAgB;AAAA,OACxBA,EACN;AAAA,EAAA,GAGCgB,KAAkB,CAACC,MAAkB;AACnC,QAAAlB,KAAaI,EAAS,SAAS;AACzB,YAAAe,IAAef,EAAS,QAAQ;AACtC,UAAIe,IAAe/B,GAAsB;AAC5B,QAAAgB,EAAA,QAAQ,MAAM,SAAS;AAChC,YAAIgB,IAAaD;AACb,QAAAD,EAAM,SAAS,MACFE,IAAAhC,IAERgB,EAAA,QAAQ,MAAM,SAAS,GAAGgB,OAE/BA,KAAc9B,IACLc,EAAA,QAAQ,MAAM,YAAY,WAE1BA,EAAA,QAAQ,MAAM,YAAY;AAAA;AAAA;AAAA,EAG/C,GAGEU,IAAW,CAACI,MAAkB;AAChC,IAAAD,GAAgBC,CAAK,GACrBlC,EAAakC,CAAK,GACdA,KAASA,EAAM,SAAS,KACxBxB,EAAS,eAAe,EAAE,YAAYwB,EAAM,OAAQ,CAAA;AAAA,EACxD;AAGJ,SAAIrB,IACO,OAIP,gBAAAwB,EAAA;AAAA,IAACC;AAAAA,IAAA;AAAA,MACG,MAAMtB;AAAA,MACN,WAAWuB,EAAiB,6BAA6BzC,CAAS;AAAA,MAClE,kBAAgBI;AAAA,MAChB,eAAAiB;AAAA,MACA,WAAAX;AAAA,IAAA;AAAA,IAECS,KACG,gBAAAoB,EAAA;AAAA,MAACG;AAAA,MAAA;AAAA,QACG,UAAU1B;AAAA,QACV,SAASiB;AAAA,QACT,OAAOd,EAAgB;AAAA,QACvB,cAAYA,EAAgB;AAAA,MAAA;AAAA,MAE5B,gBAAAoB,EAAA;AAAA,QAACI;AAAA,QAAA;AAAA,UACG,MAAM;AAAA,UACN,QAAQ,EAAE,MAAM,OAAO,SAASxB,EAAgB,QAAQ,SAAS;AAAA,QAAA;AAAA,MACrE;AAAA,IACJ;AAAA,IAEHD,IACG,gBAAAqB,EAAA;AAAA,MAACK;AAAA,MAAA;AAAA,QACG,OAAO3C;AAAA,QACP,UAAA+B;AAAA,QACA,SAASF;AAAA,QACT,UAAUd;AAAA,QACV,cAAYF;AAAA,QACZ,aAAaA;AAAA,QACb,eAAeT;AAAA,QACf,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAKiB;AAAA,MAAA;AAAA,IAGT,IAAA,gBAAAiB,EAAA;AAAA,MAACM;AAAA,MAAA;AAAA,QACG,OAAO5C;AAAA,QACP,UAAA+B;AAAA,QACA,SAASF;AAAA,QACT,UAAUd;AAAA,QACV,cAAYF;AAAA,QACZ,aAAaA;AAAA,QACb,eAAeT;AAAA,MAAA;AAAA,IACnB;AAAA,IAEJ,gBAAAkC,EAAA;AAAA,MAACO;AAAAA,MAAA;AAAA,QACG,UAAU9B;AAAA,QACV,SAASc;AAAA,QACT,OAAOb;AAAA,QACP,cAAYA;AAAA,MAAA;AAAA,MAEZ,gBAAAsB,EAAA;AAAA,QAACQ;AAAA,QAAA;AAAA,UACG,MAAM;AAAA,UACN,QAAQ,EAAE,MAAM,OAAO,SAAS,OAAO;AAAA,UACvC,YAAY,CAAC,CAAC9C,KAAa,CAAC,CAACA,EAAU;AAAA,QAAA;AAAA,MAC3C;AAAA,IACJ;AAAA,EAAA;AAGZ,GAEM2C,KAAiBI,EAAOC,EAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cASrB,CAACC,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,iBACnB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA,GAMjCN,KAAcG,EAAOC,EAAK;AAAA;AAAA;AAAA;AAAA;AAAA,iBAKf,CAACC,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA,eAGxB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,aACxB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA,iBAEnB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA,GAKlCL,KAAeE,EAAOI,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUxBC;AAAA;AAAA,GAIJX,KAAwBM,EAAOF,EAAY;AAAA,oBAC7B,CAACI,MAAMA,EAAE,MAAM;AAAA,cACrB,CAACA,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,GAG9BX,KAAUQ,EAAO;AAAA,MACjB,CAACE,MACCA,EAAE,OACII;AAAA;AAAA;AAAA,kBAIAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAMU,CAACJ,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA,kBAC7B,CAACD,MAAMA,EAAE,MAAM;AAAA,MAC3B,CAACA,MAAMA,EAAE,gBAAgB,KAAKA,EAAE,aAAaG;AAAA;AAAA,UAEzC,CAACH,MAAM,CAAC,CAACA,EAAE,iBAAiBA,EAAE;AAAA;AAAA,GAIlCH,KAAaC;AAAA,EACf,CAACG,MAOK;AAPL,QAAAI,IAAAJ,GACG;AAAA,kBAAAK;AAAA,QADHD,GAEME,IAAAC,EAFNH,GAEM;AAAA,MADH;AAAA;AAME,2BAAAhB,EAAA,cAACI,GAAaT,EAAA,IAAGuB,EAAO;AAAA;AAClC;AAAA;AAAA;AAAA,kBAGkB,CAACP,MAAO;;AAAA,SAAAA,EAAE,cAAaC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB,UAAU;AAAA;AAAA,gBACnD,CAACD,MAAO;;AAAA,SAAAA,EAAE,cAAaC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB,UAAU;AAAA;AAAA;AAAA,GAIjEQ,KAAe5D,ICpPF6D,KAASZ,EAAO;AAAA,aAChB,CAACE,MAAMA,EAAE,cAAc;AAAA,cACtB,CAACA,MAAMA,EAAE,cAAc;AAAA;AAAA,wBAEb,CAACA,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA,cACjC,CAACD,MAAMA,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAShB,CAACA,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAYnB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAMlB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA,GAKhCU,KAAkBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYlBC,KAASf,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAQD,CAACE,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA,qBAC9BU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAURG,IAAgBhB,EAAO;AAAA;AAAA;AAAA;AAAA,GAMvBiB,KAAejB,EAAOkB,CAAU;AAAA,iBAC5B,CAAChB,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA,GAK1BgB,IAAmBnB,EAAO;AAAA;AAAA,MAEjC,CAACE,MAAMA,EAAE,QAAQ;AAAA,MACjB,CAACA,MAAMA,EAAE,UAAU;AAAA,MACnB,CAACA,MAAMA,EAAE,SAAS;AAAA,GAKXkB,IAAiBpB,EAAO;AAAA,MAM/B,CAACE,MAAM;;AAAA,SAAAA,EAAE,UAAU,aAAYC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,MAC9C,CAACD,MAAM,CAACA,EAAE,QAAQA,EAAE,WAAWmB,GAAsBnB,EAAE,SAASA,EAAE,KAAK;AAAA,MACvE,CAACA,MAAMA,EAAE,QAAQA,EAAE,WAAWoB,GAAmBpB,EAAE,SAASA,EAAE,KAAK;AAAA;AAAA;AAAA,kBAGvD,CAACA,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASlC,CAACD,MAAMA,EAAE,aAAa;AAAA,GAGtBmB,KAAwB,CAACE,GAAkBC,MAAe;;AAC5D,QAAMC,IAASnB;AAAA,6BACSH,IAAAqB,EAAM,WAAN,gBAAArB,EAAc;AAAA,kBACzBI,IAAAiB,EAAM,WAAN,gBAAAjB,EAAc;AAAA,UACrBiB,EAAM,UAAU,WAAWA,EAAM;AAAA;AAGnC,SAACA,EAAM,eAIJlB;AAAA,UACDmB;AAAA;AAAA,mCAEyBD,EAAM;AAAA,sCACHA,EAAM;AAAA;AAAA,UAElCD,MAAY,WACd;AAAA,sCAC8BC,EAAM;AAAA;AAAA;AAAA,UAGlCD,MAAY,UACd;AAAA,yCACiCC,EAAM;AAAA;AAAA,QAhBhCC;AAmBf,GAEMH,KAAqB,CAACC,GAAkBC,MAAe;;AACzD,QAAMC,IAASnB;AAAA,6BACSH,IAAAqB,EAAM,WAAN,gBAAArB,EAAc;AAAA,kBACzBI,IAAAiB,EAAM,WAAN,gBAAAjB,EAAc;AAAA;AAGvB,SAACiB,EAAM,eAIJlB;AAAA,UACDmB;AAAA;AAAA,kCAEwBD,EAAM;AAAA,qCACHA,EAAM;AAAA;AAAA,UAEjCD,MAAY,WACd;AAAA,uCAC+BC,EAAM;AAAA;AAAA;AAAA,UAGnCD,MAAY,UACd;AAAA,0CACkCC,EAAM;AAAA;AAAA,QAhBjCC;AAmBf,GAEaC,IAAqB1B,EAAO;AAAA,qBACpB,CAACE,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA,GAM9BwB,IAAwB,CAACzB,MAAwB;;AAAA,SAAAI;AAAA,eAChDH,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA,kBACZI,IAAAL,EAAE,MAAM,UAAR,gBAAAK,EAAe;AAAA;AAAA,GAGnBqB,KAAa5B,EAAO6B,EAAa;AAAA;AAAA,UAEpC,CAAC3B,MACC;;AAAA,WAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB,cAChBI,IAAAL,EAAE,MAAM,WAAR,gBAAAK,EAAgB,WAChBuB,GAAoB;AAAA,IAChB,QAAQ;AAAA,IACR,eAAcC,IAAA7B,EAAE,MAAM,WAAR,gBAAA6B,EAAgB;AAAA,IAC9B,iBAAgBC,IAAA9B,EAAE,MAAM,WAAR,gBAAA8B,EAAgB;AAAA,IAChC,OAAO9B,EAAE;AAAA,EACb,CAAC;AAAA;AAAA;AAAA;AAAA,yBAGY,CAACA,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAMlB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA,GAKtC8B,KAAajC,EAAOkC,CAAI;AAAA;AAAA;AAAA,iBAGpB,CAAChC,MAAMA,EAAE,MAAM,OAAO;AAAA;AAAA,cAEzB,CAACA,MAAA;;AAAM,WAAAC,IAAAD,EAAE,MAAM,kBAAR,gBAAAC,EAAuB,cAAaE;AAAA;AAAA;AAAA;AAAA,GAK5C8B,KAAmBnC,EAAOoC,EAAI;AAAA;AAAA;AAAA,iBAG1B,CAAClC,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA,kBAErB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA,GAI3BkC,KAAqBrC,EAAO;AAAA,MACnC,CAACE,MAAMoC,EAAUpC,CAAC;AAAA;AAAA,wBAEA,CAACA,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,UAIrCE;AAAA;AAAA;AAAA,GCzOJkC,KAAqBC;AAAA,EACvB,CAAC,EAAE,OAAAC,GAAO,WAAAzF,GAAW,WAAA0F,EAAA,GAAaC,MAEzB,gBAAApD,EAAA,cAAAyB,GAAA,EAAc,KAAA2B,KACX,gBAAApD,EAAA,cAAC4B,KAAiB,MAAMsB,GAAO,QAAQ,CAACA,KACpC,gBAAAlD,EAAA,cAAC6B,GAAe,EAAA,QAAQ,CAAC,CAACqB,GAAO,SAASA,IAAQ,UAAU,UACvD,gBAAAlD,EAAA,cAAAwB,IAAA,sCACI,OAAI,IAAA,GACJ,gBAAAxB,EAAA,cAAA,OAAA,IAAI,GACJ,gBAAAA,EAAA,cAAA,OAAA,IAAI,CACT,CACJ,CACJ,CACJ;AAGZ,GAEAqD,KAAeL,ICnBTM,KAAkB7C,EAAO;AAAA;AAAA,qBAEV,CAACE,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAM9B,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA,GAG9B2C,KAAe,CAACC,MACX,IAAI,KAAKA,CAAG,EAAE,mBAAmB,CAAA,GAAI,EAAE,MAAM,WAAW,QAAQ,UAAW,CAAA,GAGhFC,KAA6B,CAAC,EAAE,WAAAhG,GAAW,MAAAiG,GAAM,WAAAC,QAAgB;AAC/D,MAAA,CAACD,KAAQ,CAACC;AACH,WAAA;AAGX,MAAIC,IAAS;AACb,SAAIF,IACIC,IACSC,IAAA,GAAGF,MAASH,GAAaI,CAAS,MAElCC,IAAAF,IAENC,MACPC,IAASL,GAAaI,CAAS,IAG5B,gBAAA3D,EAAA,cAACsD,UAAiBM,CAAO;AACpC,GAEAC,IAAeJ,IC1BTK,KAAgC,CAAC,EAAE,WAAArG,GAAW,UAAAsG,GAAU,QAAAC,GAAQ,WAAAL,QAAgB;AAC5E,QAAA,EAAE,QAAAM,GAAQ,MAAAP,EAAS,IAAAM,GACnB,EAAE,YAAAE,MAAerF;AAGnB,SAAA,gBAAAmB,EAAA;AAAA,IAACmE;AAAA,IAAA;AAAA,MACG,WAAW,CAAC,CAACF;AAAA,MACb,WAAW/D,EAAiBzC,GAAW,mCAAmC;AAAA,IAAA;AAAA,IAEzEwG,KACI,gBAAAjE,EAAA,cAAAqB,IAAA,EAAO,YAAA6C,EACH,GAAA,OAAOD,KAAW,WACf,gBAAAjE,EAAA,cAAC,OAAI,EAAA,KAAKiE,EAAQ,CAAA,IAElB,gBAAAjE,EAAA,cAACI,GAAY,EAAA,QAAQ6D,GAAQ,CAErC;AAAA,IAEHF;AAAA,IACD,gBAAA/D,EAAA,cAACyD,GAAU,EAAA,MAAAC,GAAY,WAAAC,EAAsB,CAAA;AAAA,EAAA;AAGzD,GAEaQ,KAAqB1D,EAAO;AAAA;AAAA;AAAA;AAAA,MAInC,CAACE,MACCA,EAAE,YACII;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAOAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASdqD,KAAeN,IClDTO,KAAgBpB;AAAA,EAClB,CAAC,EAAE,WAAAxF,GAAW,UAAAsG,GAAU,WAAAJ,GAAW,UAAAW,GAAU,WAAAC,KAAanB,MAElD,gBAAApD,EAAA;AAAA,IAACwE;AAAA,IAAA;AAAA,MACG,KAAApB;AAAA,MACA,WAAWlD,EAAiBzC,GAAW,oCAAoC;AAAA,MAC3E,WAAA8G;AAAA,IAAA;AAAA,IAECD,IACI,gBAAAtE,EAAA,cAAAyE,IAAA,EAAS,WAAU,uCAAA,GACfV,GACA,gBAAA/D,EAAA,cAAAyD,GAAA,EAAU,WAAAE,EAAsB,CAAA,CACrC,IAGK,gBAAA3D,EAAA,cAAAA,EAAA,UAAA,MAAA+D,GACA,gBAAA/D,EAAA,cAAAyD,GAAA,EAAU,WAAAE,EAAsB,CAAA,CACrC;AAAA,EAAA;AAKpB,GAEaa,KAAsB/D,EAAO;AAAA,MACpC,CAACE,MAAMA,EAAE,aAAa;AAAA,iBACX,CAACA,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA,GAI1B6D,KAAWhE,EAAO;AAAA;AAAA;AAAA,iBAGd,CAACE,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,aAC1B,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,GAMpC8D,KAAeL,ICxCTM,KAA+B,CAAC,EAAE,WAAAlH,GAAW,UAAAsG,GAAU,WAAAJ,QAAgB;AACzE,QAAM,EAAE,WAAAiB,IAAY,GAAG,IAAI/F,EAA+C;AAEtE,SAAA,gBAAAmB,EAAA;AAAA,IAAC6E;AAAA,IAAA;AAAA,MACG,WAAW3E,EAAiBzC,GAAW,kCAAkC;AAAA,IAAA;AAAA,IAExEsG;AAAA,IACA,gBAAA/D,EAAA,cAAAyD,GAAA,EAAU,MAAMmB,GAAW,WAAAjB,GAAsB;AAAA,EAAA;AAG9D,GAEMkB,KAAoBpE,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQjCqE,KAAeH,ICjCFI,KAAa,CAACC,MACvB,MAAM,QAAQA,CAAO,IACfA,IACA,OAAO,KAAKA,CAAO,EAAE,IAAI,CAACC,OACf;AAAA,EACH,OAAOD,EAAQC,CAAC;AAAA,EAChB,WAAWA;AAAA,EAElB,GCSEC,KAAwB,CAAC,EAAE,QAAAC,GAAQ,SAAAH,GAAS,UAAA3G,QAEjD,gBAAA2B,EAAA;AAAA,EAACoF;AAAA,EAAA;AAAA,IACG,QAAAD;AAAA,IACA,OAAOJ,GAAWC,CAAO;AAAA,IACzB,YAAY,CAACK,MAEJ,gBAAArF,EAAA,cAAA,MAAA,EAAG,KAAKqF,EAAK,aACV,gBAAArF,EAAA;AAAA,MAACsF;AAAA,MAAA;AAAA,QACG,SAAS,MAAM;AACX,UAAAjH,EAAS,UAAUgH,CAAI;AAAA,QAC3B;AAAA,QACA,cAAYA,EAAK;AAAA,QACjB,OAAOA,EAAK;AAAA,MAAA;AAAA,MAEX,gBAAArF,EAAA,cAAAI,GAAA,EAAY,QAAQiF,EAAK,QAAQ;AAAA,MACjCA,EAAK;AAAA,IAAA,CAEd;AAAA,EAER;AAAA,GAKND,KAAmB3E,EAAO8E,CAAQ;AAAA,MAClCC;AAAA;AAAA;AAAA;AAAA,eAIS,CAAC7E,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAK/BwB;AAAA,GAGAkD,KAAyB7E,EAAOI,CAAM;AAAA,MACtCkC;AAAA;AAAA;AAAA,eAGS,CAACpC,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,wBACb,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMrCE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAMc,CAACH,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA,GCjEjC6E,KAA0B,CAAC,EAAE,MAAAC,GAAM,SAAAC,IAAU,SAAS;AACzD,QAAAC,IAAYC,GAAaH,CAAI;AAE/B,SAAA,CAACE,KAAa,CAACF,IACR,OAGP,gBAAA1F,EAAA,cAAC8F,MAAS,UAAU,KAAA,mCACfF,GAAWjG,EAAA,IAAGgG,EAAS,CAC5B;AAER,GCVahD,KAAkB,CAAC,EAAE,MAAAoD,QACvB,gBAAA/F,EAAA,cAAC0C,IAAW,EAAA,MAAMqD,EAAM,CAAA,GAG7BrD,KAAajC,EAAOuF,CAAM;AAAA,MAC1BC;AAAA;AAAA;AAAA,MAGA7D;AAAA;AAAA,iBAEW,CAACzB,MAAMA,EAAE,MAAM,OAAO;AAAA;AAAA,cAEzBG;AAAA;AAAA;AAAA,GCFDyE,KAAsB,CAAC,EAAE,QAAAJ,GAAQ,SAAAH,GAAS,UAAA3G,QAE/C,gBAAA2B,EAAA;AAAA,EAACkG;AAAAA,EAAA;AAAA,IACG,QAAAf;AAAA,IACA,OAAOJ,GAAWC,CAAO;AAAA,IACzB,YAAY,CAACK,MAAc;;AACvB,aACK,gBAAArF,EAAA,cAAA,MAAA,EAAG,KAAKqF,EAAK,UACV,GAAA,gBAAArF,EAAA,cAACmG,IACI,QAAAvF,IAAAyE,EAAK,WAAL,gBAAAzE,EAAa,YACT,gBAAAZ,EAAA,cAAA,OAAA,EAAI,WAAU,eACX,gBAAAA,EAAA;AAAA,QAACI;AAAA,QAAA;AAAA,UACG,MAAM;AAAA,UACN,QAAQ;AAAA,YACJ,MAAMiF,EAAK,OAAO;AAAA,YAClB,SAASA,EAAK,OAAO;AAAA,UACzB;AAAA,QAAA;AAAA,MAAA,CAER,GAEH,gBAAArF,EAAA,cAAA,OAAA,EAAI,WAAU,YACX,GAAA,gBAAAA,EAAA;AAAA,QAACa;AAAA,QAAA;AAAA,UACG,SAAS,MAAM;AACX,YAAAxC,EAAS,UAAUgH,CAAI;AAAA,UAC3B;AAAA,UACA,cAAYA,EAAK;AAAA,UACjB,OAAOA,EAAK;AAAA,QAAA;AAAA,QAEXA,EAAK;AAAA,MACV,GAECA,EAAK,eAAe,gBAAArF,EAAA,cAAC,WAAGqF,EAAK,WAAY,CAC9C,CACJ,CACJ;AAAA,IAER;AAAA,EAAA;AAAA,GAKNa,KAAiBzF,EAAO2F,CAAU;AAAA,MAClCZ;AAAA;AAAA;AAAA,UAGIpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQJ,CAACzB,MACC0F,EAAe1F,CAAC;AAAA,EACZ;AAAA,EACAI;AAAA;AAAA;AAGJ;AAAA;AAAA;AAAA;AAAA;AAAA,eAKO,CAACJ,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAOZ,CAACD,MAAMA,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQlCwF,KAAW1F,EAAO;AAAA;AAAA,WAEb,CAACE,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,MAC3BwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eASS,CAACzB,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAYhB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAM7BE;AAAA;AAAA,yBAEW,CAACH,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GC/GnC0F,KAAsB,CAAC,EAAE,QAAAnB,GAAQ,SAAAH,GAAS,UAAA3G,QAE/C,gBAAA2B,EAAA;AAAA,EAACuG;AAAA,EAAA;AAAA,IACG,QAAApB;AAAA,IACA,OAAOJ,GAAWC,CAAO;AAAA,IACzB,YAAY,CAACK,MAEJ,gBAAArF,EAAA,cAAA,MAAA,EAAG,KAAKqF,EAAK,aACV,gBAAArF,EAAA;AAAA,MAACwG;AAAA,MAAA;AAAA,QACG,MAAMnB,EAAK,cAAc;AAAA,QACzB,SAAS,MAAM;AACX,UAAAhH,EAAS,UAAUgH,CAAI;AAAA,QAC3B;AAAA,QACA,cAAYA,EAAK;AAAA,QACjB,OAAOA,EAAK;AAAA,MAAA;AAAA,MAEXA,EAAK;AAAA,MACLA,EAAK,cAAc,UAChB,gBAAArF,EAAA;AAAA,QAACI;AAAA,QAAA;AAAA,UACG,MAAM;AAAA,UACN,QAAQ;AAAA,YACJ,MAAM;AAAA,YACN,SAAS;AAAA,UACb;AAAA,QAAA;AAAA,MACJ;AAAA,IAAA,CAGZ;AAAA,EAER;AAAA,GAKNmG,KAAiB9F,EAAO8E,CAAQ;AAAA,MAChCC;AAAA,MACApD;AAAA;AAAA,MAEA,CAACzB,MACC0F,EAAe1F,CAAC;AAAA,EACZ;AAAA,EACAI;AAAA;AAAA;AAGJ;AAAA;AAAA;AAAA;AAAA;AAAA,eAKO,CAACJ,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAO/B4F,KAAmB/F,EAAOI,CAAM;AAAA;AAAA;AAAA;AAAA,aAIzB,CAACF,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAK9B,CAACD,MACC;;AAAA,SAAAA,EAAE,QACFI;AAAA,sBACaH,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,gCAKNI,IAAAL,EAAE,MAAM,UAAR,gBAAAK,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAKpCF;AAAA;AAAA,qBAEW,CAACH,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,GC/F/B6F,KAAgB,sCACjBC,IAAgB,IAAA,GAGtBA,KAAkBjG,EAAO;AAAA,MACzB,CAACE,MAAMA,EAAE,MAAM,UAAU,kBAAkBA,EAAE,MAAM;AAAA;AAAA,GCD5CgG,KAAkB,CAAC,EAAE,MAAAC,QACtB,gBAAA5G,EAAA,cAAA6G,IAAA,EAAiB,SAAQ,OAAA,GAAQD,CAAK,GAG5CC,KAAmBpG,EAAOkB,CAAU;AAAA,MACpCS;AAAA,GCIO0E,KAA0B,CAAC;AAAA,EACpC,QAAA3B,IAAS;AAAA,EACT,aAAA4B,IAAc;AAAA,EACd,cAAAC,IAAe;AAAA,EACf,UAAA3I;AACJ,MAAM;AACI,QAAA2G,IAAUiC,GAAQ,MACb;AAAA,IACH;AAAA,MACI,OAAOF;AAAA,MACP,WAAW;AAAA,MACX,QAAQ;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,MACb;AAAA,IACJ;AAAA,IACA;AAAA,MACI,OAAOC;AAAA,MACP,WAAW;AAAA,MACX,QAAQ;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,MACb;AAAA,IACJ;AAAA,EAAA,GAEL,CAACD,GAAaC,CAAY,CAAC;AAE1B,SAAA,gBAAAhH,EAAA;AAAA,IAACkG;AAAA,IAAA;AAAA,MACG,QAAAf;AAAA,MACA,OAAOH;AAAA,MACP,YAAY,CAACK,MAAc;AACvB,cAAM6B,IAAU7B,EAAK,cAAc,sBAAsB,YAAY;AACrE,eACK,gBAAArF,EAAA,cAAA,MAAA,EAAG,KAAKqF,EAAK,aACV,gBAAArF,EAAA;AAAA,UAACO;AAAA,UAAA;AAAA,YACG,SAAS,MAAM;AACX,cAAAlC,EAAS,UAAUgH,CAAI;AAAA,YAC3B;AAAA,YACA,cAAYA,EAAK;AAAA,YACjB,OAAOA,EAAK;AAAA,YACZ,SAAA6B;AAAA,UAAA;AAAA,0CAEC9G,GAAY,EAAA,QAAQiF,EAAK,QAAQ,MAAM,IAAI;AAAA,QAAA,CAEpD;AAAA,MAER;AAAA,IAAA;AAAA,EAAA;AAGZ,GAEMa,KAAiBzF,EAAO8E,CAAQ;AAAA,MAChC,CAAC5E,MAAM6E,EAAS7E,CAAC;AAAA;AAAA;AAAA;AAAA,eAIR,CAACA,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAK/B,CAACD,MAAMyB,EAAsBzB,CAAC;AAAA,GAG9BJ,KAAeE,EAAOI,CAAM;AAAA,MAC5BkC;AAAA;AAAA,wBAEkB,CAACpC,MAAMA,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUvBG;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKW,CAACH,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA,0BAGlB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GClF3CuG,KAAU,CAAC,CAACzB,GAAMC,CAAO,OACpB,EAAE,MAAAD,GAAM,SAAAC,MAGNyB,KAAyB,CAAC,EAAE,OAAAC,GAAO,UAAAhJ,QAExC,gBAAA2B,EAAA;AAAA,EAACsH;AAAA,EAAA;AAAA,IACG,OAAOD,EAAM,IAAIF,EAAO;AAAA,IACxB,UAAQ;AAAA,IACR,YAAY,CAAC9B,MAAc;AACvB,cAAQA,EAAK,MAAM;AAAA,QACf,KAAKkC,EAAgC;AACjC,iBAAQ,gBAAAvH,EAAA,cAAA2G,IAAA,EAAK,MAAMtB,EAAK,QAAS,CAAA;AAAA,QAErC,KAAKkC,EAAgC;AACjC,iBAAQ,gBAAAvH,EAAA,cAAA2C,IAAAhD,EAAA,IAAS0F,EAAK,QAAS;AAAA,QAEnC,KAAKkC,EAAgC;AACjC,iBAAQ,gBAAAvH,EAAA,cAAAyG,IAAA9G,EAAA,IAAc0F,EAAK,QAAS;AAAA,QAExC,KAAKkC,EAAgC;AACjC,iBAAQ,gBAAAvH,EAAA,cAAAuF,IAAAiC,EAAA7H,EAAA,IAAa0F,EAAK,UAAlB,EAA2B,UAAAhH,EAAoB,EAAA;AAAA,QAE3D,KAAKkJ,EAAgC;AACjC,iBAAQ,gBAAAvH,EAAA,cAAAsG,IAAAkB,EAAA7H,EAAA,IAAa0F,EAAK,UAAlB,EAA2B,UAAAhH,EAAoB,EAAA;AAAA,QAE3D,KAAKkJ,EAAgC;AACjC,iBAAQ,gBAAAvH,EAAA,cAAAkF,IAAAsC,EAAA7H,EAAA,IAAe0F,EAAK,UAApB,EAA6B,UAAAhH,EAAoB,EAAA;AAAA,QAE7D,KAAKkJ,EAAgC;AACjC,iBAAQ,gBAAAvH,EAAA,cAAA8G,IAAAU,EAAA7H,EAAA,IAAiB0F,EAAK,UAAtB,EAA+B,UAAAhH,EAAoB,EAAA;AAAA,QAE/D;AACI,iDAAQoH,IAAO,EAAA,MAAMJ,EAAK,MAAM,SAASA,EAAK,QAAS,CAAA;AAAA,MAE/D;AAAA,IACJ;AAAA,EAAA;AAAA,GAKNiC,KAAa7G,EAAOoC,EAAI;AAAA,MACxB4E;AAAA;AAAA;AAAA;AAAA;AAAA,GCrCOC,KAAsBzE;AAAA,EAC/B,CAAC,EAAE,WAAAxF,GAAW,WAAAkG,GAAW,QAAAK,GAAQ,MAAA0B,GAAM,SAAAC,KAAWvC,MAAQ;AACtD,UAAMuE,IAA0BC;AAAA,MAC5B,CAACC,MAA2B;AACxB,YAAIC,IAAwB;AACxB,eAAAnC,EAAQ,SAAS,MACjBmC,IACID,MAAU,IAAI,UAAUA,IAAQ,MAAMlC,EAAQ,SAAS,SAAS,WAEjEmC;AAAA,MACX;AAAA,MACA,CAACnC,CAAO;AAAA,IAAA,GAGNoC,IAAsB,MAGf,gBAAA/H,EAAA,cAAAA,EAAA,UAAA,MAAA2F,EAAQ,IAAI,CAACN,MAAS;AACnB,YAAM,EAAE,KAAA2C,GAAK,MAAAjC,GAAM,OAAAkC,GAAO,MAAAC,GAAM,SAAAlD,EAAY,IAAAK,GACtCf,IAAW,CAAC,CAACyB,KAAQ,CAACkC,KAAS,CAACC,KAAQ,CAAClD;AAE3C,aAAA,gBAAAhF,EAAA;AAAA,QAACqE;AAAAA,QAAA;AAAA,UACG,WAAA5G;AAAA,UACA,KAAAuK;AAAA,UACA,UAAA1D;AAAA,UACA,KAAAlB;AAAA,UACA,WAAAO;AAAA,UACA,WAAW,CAAC,CAACuE,KAAQ,CAAC,CAAClD;AAAA,QAAA;AAAA,QAEtBV,KAAYyB,IACR,gBAAA/F,EAAA,cAAA2C,GAAA,EAAK,MAAMoD,EAAM,CAAA,IAElB,gBAAA/F,EAAA,cAACmI,GAAQ,EAAA,UAAQ,IAAC,SAAS9C,GAAM;AAAA,MAAA;AAAA,IAIhD,CAAA,CACL,GAIF+C,IAAqB,MAEnB,gBAAApI,EAAA,cAAC8D,IAAa,EAAA,QAAAE,GAAgB,WAAAL,GAAsB,WAAAlG,EAAA,GAC/C,gBAAAuC,EAAA,cAAAyB,GAAA,MACIkE,EAAQ,IAAI,CAACN,GAAMwC,sCAEXjG,GAAiB,EAAA,MAAI,IAAC,KAAKyD,EAAK,KAAK,KAAAjC,EAClC,GAAA,gBAAApD,EAAA;AAAA,MAACmI;AAAA,MAAA;AAAA,QACG,SAAS9C;AAAA,QACT,SAASsC,EAAwBE,CAAK;AAAA,MAAA;AAAA,IAAA,CAE9C,CAEP,CACL,CACJ,GAIFQ,IAAoB,MAElB,gBAAArI,EAAA,cAAC2E,IAAY,EAAA,WAAAhB,GAAsB,WAAAlG,EAC/B,GAAA,gBAAAuC,EAAA,cAACyB,SACIkE,EAAQ,IAAI,CAACN,GAAMwC,sCAEXjG,GAAiB,EAAA,OAAK,IAAC,KAAKyD,EAAK,KAAK,KAAAjC,EACnC,GAAA,gBAAApD,EAAA;AAAA,MAACmI;AAAA,MAAA;AAAA,QACG,QAAM;AAAA,QACN,SAAS9C;AAAA,QACT,SAASsC,EAAwBE,CAAK;AAAA,MAAA;AAAA,IAAA,CAE9C,CAEP,CACL,CACJ;AAIR,YAAQnC,GAAM;AAAA,MACV,KAAK4C,EAAwB;AACzB,eAAOP,EAAoB;AAAA,MAC/B,KAAKO,EAAwB;AACzB,eAAOF,EAAmB;AAAA,MAC9B,KAAKE,EAAwB;AACzB,eAAOD,EAAkB;AAAA,MAC7B;AACW,eAAA;AAAA,IACf;AAAA,EACJ;AACJ,GAWMF,IAAyC,CAAC,EAAE,SAAAxC,GAAS,QAAA4C,GAAQ,UAAAC,GAAU,SAAAxG,QAAc;AACvF,QAAM3D,IAAWC,KACX,EAAE,OAAA2J,GAAO,MAAAlC,GAAM,SAAAf,GAAS,MAAAkD,GAAM,OAAAb,EAAU,IAAA1B;AAI9C,SADyB0B,IA4DrB,gBAAArH,EAAA,cAAC6B,GAAe,EAAA,MAAM,CAAC,CAAC0G,GAAQ,SAAAvG,EAAA,GAC3B,gBAAAhC,EAAA,cAAAoH,IAAA,EAAY,OAAAC,GAAc,UAAAhJ,EAAoB,CAAA,CACnD,IA3DI,gBAAA2B,EAAA;AAAA,IAAC6B;AAAA,IAAA;AAAA,MACG,QAAQ,CAAC2G;AAAA,MACT,MAAM,CAAC,CAACD;AAAA,MACR,SAAAvG;AAAA,MACA,WAAW,CAAC,CAACkG,KAAQ,CAAC,CAAClD;AAAA,IAAA;AAAA,IAEtBiD,qCACI9F,GACG,MAAA,gBAAAnC,EAAA,cAAC0B,MAAa,SAAQ,KAAA,GAAMuG,CAAM,CACtC;AAAA,IAEHlC,KACI,gBAAA/F,EAAA,cAAAmC,GAAA,sCACIO,IAAW,EAAA,MAAMqD,EAAM,CAAA,CAC5B;AAAA,IAEHmC,qCACI/F,GACG,MAAA,gBAAAnC,EAAA;AAAA,MAACqC;AAAA,MAAAmF,EAAA7H,EAAA,IACOuI,IADP;AAAA,QAEG,UAAU,CAACF,GAAaS,MAAc;AAClC,UAAApK,EAAS,QAAQ;AAAA,YACb,MAAAoK;AAAA,YACA,SAASP,EAAK,OAAO;AAAA,YACrB,WAAWF;AAAA,UAAA,CACd;AAAA,QACL;AAAA,MAAA;AAAA,IAAA,CAER;AAAA,IAEHhD,qCACI7C,GACG,MAAA,gBAAAnC,EAAA;AAAA,MAAC4C;AAAA,MAAA;AAAA,QACG,OAAO,OAAO,KAAKoC,CAAO,EAAE,IAAI,CAAC,OACtB,EAAE,OAAOA,EAAQ,CAAC,GAAG,WAAW,IAC1C;AAAA,QACD,YAAY,CAACK,MAEJ,gBAAArF,EAAA,cAAA,MAAA,EAAG,KAAKqF,EAAK,aACV,gBAAArF,EAAA;AAAA,UAAC8C;AAAA,UAAA;AAAA,YACG,SAAS,MAAM;AACF,cAAAzE,EAAA,UAAUgH,EAAK,SAAS;AAAA,YACrC;AAAA,UAAA;AAAA,UAECA,EAAK;AAAA,QAAA,CAEd;AAAA,MAER;AAAA,IAAA,CAER;AAAA,EAAA;AAWpB,GCxLaqD,KAAgC,MAAM;AACzC,QAAAC,IAAkBf,GAAY,CAACgB,MAAyB;AAC1D,IAAIA,KACA,WAAW,MAAM;AACb,MAAAA,EAAK,eAAe;AAAA,QAChB,OAAO;AAAA,QACP,UAAU;AAAA,MAAA,CACb;AAAA,OACF,GAAG;AAAA,EAEd,GAAG,CAAE,CAAA,GAEC,CAAC9J,GAAe+J,CAAQ,IAAI7J,GAAU,EAAI,GAC1C;AAAA,IACF,UAAA8J;AAAA,IACA,SAAAC;AAAA,IACA,cAAAC,IAAe,CAAC;AAAA,MAChBnK,EAA+C,GAE7CoK,IAAqB,MACnBD,KAAgBA,EAAa,SACtBA,EAAa,IAAI,CAACE,GAAkCrB,MAEnD,gBAAA7H,EAAA,cAACmJ,GAAa,EAAA,IAAI,UAAUD,EAAM,QAAQ,KAAK,UAAUA,EAAM,OAAA,GAC1D,gBAAAlJ,EAAA,cAAA8D,IAAA,EAAa,WAAW,KAAK,IAAO,GAAA,QAAQoF,EACzC,GAAA,gBAAAlJ,EAAA,cAACgD,IAAmB,EAAA,OAAK,IAAC,KAAK2F,EAAiB,CAAA,CACpD,CACJ,CAEP,IAEE;AAGX,SAEQ,gBAAA3I,EAAA,cAAAA,EAAA,UAAA,MAAA,gBAAAA,EAAA,cAACoJ,IAAW,EAAA,UAAU,GAAG,eAAAtK,GAA8B,KAAK+J,KACvDC,KAAYA,EAAS,SAChBA,EAAS,IAAI,CAACO,GAAqCxB,MAAU;AACzD,UAAM,EAAE,MAAAnC,GAAM,WAAA/B,GAAW,QAAAK,GAAQ,SAAA2B,MAAY0D;AAEzC,WAAA,gBAAArJ,EAAA;AAAA,MAACmJ;AAAA,MAAA;AAAA,QACG,WAAW;AAAA,QACX,UAAU;AAAA,QACV,KAAK,GAAGzD,KAAQ1B,KAAA,gBAAAA,EAAQ,QAAQL,KAAagC,EAAQ,CAAC,EAAE;AAAA,MAAA;AAAA,MAEvD,gBAAA3F,EAAA,cAAA0H,IAAAF,EAAA7H,EAAA,IAAwB0J,IAAxB,EAAiC,KAAKV,IAAiB;AAAA,IAAA;AAAA,EAC5D,CAEP,IACD,MACLM,EAAmB,GACnBF,KACI,gBAAA/I,EAAA,cAAAmJ,GAAA,MACI,gBAAAnJ,EAAA,cAAAgD,IAAA,EAAmB,KAAK2F,EAAiB,CAAA,CAC9C,CAER,GACA,gBAAA3I,EAAA,cAACxC,QAAkB,CACvB;AAER,GAEM4L,KAAa3I,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,iBAKT,CAACE,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,MACjC,CAACD,MAAM,CAAC,CAACA,EAAE,iBAAiBA,EAAE;AAAA;AAAA,UAE1B,CAACA,MAAMG,EAAeH,CAAC;AAAA;AAAA,GAI3BwI,IAAe1I,EAAO;AAAA;AAAA,qBAEP,CAACE,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA,sBAGrB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA,0BAIlB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAc1C,CAACD,MACC0F,EAAe1F,CAAC;AAAA,EACZ;AAAA,EACAI;AAAA;AAAA;AAGJ;AAAA,GCnGKuI,KAAwC,CAAC,EAAE,UAAAjL,QAAe;AAC7D,QAAAkL,IAAaC,GAAuB,IAAI;AAE9C,SAAAvK,GAAU,MAAM;AACZ,IAAIsK,EAAW,WAAWA,EAAW,QAAQ,cAChClL,EAAA,mBAAmBkL,EAAW,OAAO;AAAA,EAClD,GACD,CAACA,CAAU,CAAC,GAGX,gBAAAvJ,EAAA;AAAA,IAACyJ;AAAA,IAAA;AAAA,MACG,UAAS;AAAA,MACT,WAAU;AAAA,MACV,KAAKF;AAAA,IAAA;AAAA,EAAA;AAGjB,GAQaG,KAA0D,CAAC;AAAA,EACpE,UAAArL;AAAA,EACA,QAAA8G;AAAA,EACA,aAAAwE;AACJ,MAEQ,gBAAA3J,EAAA;AAAA,EAAC4J;AAAA,EAAA;AAAA,IACG,UAAS;AAAA,IACT,WAAU;AAAA,EAAA;AAAA,EAEV,gBAAA5J,EAAA,cAAC6J,IAAwB,EAAA,WAAU,kCAC/B,GAAA,gBAAA7J,EAAA;AAAA,IAAC8J;AAAA,IAAA;AAAA,MACG,WAAU;AAAA,MACV,cAAYH;AAAA,MACZ,OAAOA;AAAA,MACP,SAAS,MAAMtL,EAAS,2BAA2B;AAAA,IAAA;AAAA,IAEnD,gBAAA2B,EAAA;AAAA,MAACI;AAAA,MAAA;AAAA,QACG,QAAQ;AAAA,UACJ,MAAM;AAAA,UACN,SAAS;AAAA,QACb;AAAA,QACA,MAAM;AAAA,MAAA;AAAA,IACV;AAAA,EAAA,GAEH+E,KACG,gBAAAnF,EAAA;AAAA,IAAC+J;AAAA,IAAA;AAAA,MACG,WAAU;AAAA,MACV,SAAQ;AAAA,IAAA;AAAA,IAEP5E;AAAA,EAAA,CAGb;AAAA,kCACCuD,IAAoB,IAAA;AAAA,GAK3BkB,KAA4BnJ,EAAOgJ,EAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAO7B,CAAC9I,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,8BACvB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,GAG9CiJ,KAA0BpJ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,WAK5B,CAACE,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,eAClB,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,MAC/B,CAACD,MAAMA,EAAE,MAAM,UAAU,kBAAkBA,EAAE,MAAM;AAAA,GAGnDoJ,KAA4BtJ,EAAOkB,CAAU;AAAA,iBAClC,CAAChB,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,aAC1B,CAACD,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA,GAI9BkJ,KAAgCrJ,EAAOI,CAAM;AAAA;AAAA;AAAA;AAAA,eAIpC,CAACF,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA,KAAS,CAACD,MAAA;;AAAM,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA,MAC9D,CAACD,MAAMA,EAAE,MAAM,gBAAgB,kBAAkBA,EAAE,MAAM;AAAA;AAAA;AAAA,UAGrDG;AAAA;AAAA;AAAA;AAAA,kBAIQ,CAACH,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,WAAR,gBAAAC,EAAgB;AAAA;AAAA;AAAA,GC1GnCoJ,KAAgC,CAACpJ,MAA4B;AAA5B,MAAAI,IAAAJ,GAAE,aAAAnD,MAAFuD,GAAgBE,IAAAC,EAAhBH,GAAgB,CAAd;AAC/B,QAAA;AAAA,IACF,SAAAiJ;AAAA,IACA,2BAAAC;AAAA,IACA,+BAAAC;AAAA,IACA,0BAAAC;AAAA,MACAvL,EAA+C,GAC7CR,IAAWC;AAGb,SAAA,gBAAA0B,EAAA;AAAA,IAACqK,GAAoB;AAAA,IAApB;AAAA,MACG,OAAOD,IAA2B,EAAE,IAAIA,EAA6B,IAAA;AAAA,IAAA;AAAA,IAErE,gBAAApK,EAAA;AAAA,MAACC;AAAA,MAAAuH,EAAA7H,EAAA,IACOuB,IADP;AAAA,QAEG,WAAWhB,EAAiBzC,GAAW,+BAA+B;AAAA,MAAA;AAAA,sCAErEiL,IAAoB,IAAA;AAAA,IACzB;AAAA,IACCuB,KAEO,gBAAAjK,EAAA,cAAAA,EAAA,UAAA,MAAA,gBAAAA,EAAA,cAACsJ,MAAc,UAAAjL,EAAoB,CAAA,GAClC4L,EAAQ,gBACL,gBAAAjK,EAAA;AAAA,MAAC0J;AAAA,MAAA;AAAA,QACG,UAAArL;AAAA,QACA,QAAQ6L;AAAA,QACR,aAAaC;AAAA,MAAA;AAAA,IAAA,CAGzB;AAAA,EAAA;AAIhB,GAEMlK,KAAUQ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|