@telia-ace/widget-conversation 1.0.29-next.9 → 1.0.29

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversation.4aefedf8.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/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 ${StyledTextArea} {\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-child(2) {\n animation-delay: 100ms;\n }\n > div:nth-child(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,\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 { 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.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","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","StyledTimestamp","getTimestamp","raw","Timestamp","name","timestamp","output","AgentMessage","children","sender","avatar","avatarSize","StyledAgentMessage","SystemMessage","discrete","fullWidth","StyledSystemMessage","Discrete","UserMessage","userLabel","StyledUserMessage","mapActions","actions","i","ButtonList","header","StyledButtonList","item","StyledButtonListButton","ItemList","itemList","Custom","type","content","Component","useComponent","Suspense","body","UiHtml","genericHtml","LinkList","StyledLinkList","StyledLinkButton","headingElement","Separator","StyledSeparator","Text","text","StyledTypography","VideoRequest","acceptLabel","declineLabel","useMemo","StyledItemList","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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"}