@pega/cosmos-react-work 9.0.0-build.27.1 → 9.0.0-build.27.2
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAICoach.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GenAICoach.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.tsx"],"names":[],"mappings":"AAuGA,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,GAAG,CAAC;AAmBhF,eAAO,MAAM,SAAS,+CA2GrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,+CAQ5B,CAAC;iCAqkDyB,eAAe;;;AAQ1C,wBAA6D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
+
import { getLuminance } from 'polished';
|
|
3
4
|
import { Button, Flex, Icon, MenuButton, Progress, Text, createUID, menuHelpers, useI18n, useSpeechRecognition, useTestIds, useTheme, withTestIds, registerIcon, usePrevious, getFocusables, isMenuGroupProps, ErrorState, useArrows, useFocusTrap, useLiveLog, useOuterEvent, ThemeOverride, hasProp, getActiveElement, useElement, Actions, useFullscreenContext, useBreakpoint, Grid, useRefMap, VisuallyHiddenText, FileList, Lightbox, FormField, useUID, SpeechToTextButton, Toaster, useToaster, throttle } from '@pega/cosmos-react-core';
|
|
4
5
|
import * as caretUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-up.icon';
|
|
5
6
|
import * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';
|
|
@@ -25,11 +26,13 @@ import Questionnaire from './Questionnaire';
|
|
|
25
26
|
import { GenAIMessage, InitialSuggestedMessage } from '.';
|
|
26
27
|
registerIcon(caretUpIcon, timesIcon, caretDownIcon, minusIcon, polarisSolidIcon, paperClipIcon, warnSolidIcon, squareSolidIcon, sendSolidIcon, plusIcon, dockIcon, undockIcon, caretLeftIcon, caretRightIcon);
|
|
27
28
|
export const AgentIcon = () => {
|
|
29
|
+
const theme = useTheme();
|
|
28
30
|
const uid = useUID();
|
|
29
31
|
const idA = `agent-gradient-a-${uid}`;
|
|
30
32
|
const idB = `agent-gradient-b-${uid}`;
|
|
31
33
|
const idC = `agent-clip-${uid}`;
|
|
32
|
-
|
|
34
|
+
const isLightTheme = getLuminance(theme.base.palette['foreground-color']) < 0.5;
|
|
35
|
+
return isLightTheme ? (_jsxs(StyledAgentIcon, { xmlns: 'http://www.w3.org/2000/svg', filter: 'drop-shadow(0 .125rem .125rem rgba(0,0,0,.03)) drop-shadow(.125rem .5rem .5rem rgba(0,0,0,.05)) drop-shadow(.125rem 1rem 1rem rgba(0,0,0,.08))', viewBox: '0 0 60 60', children: [_jsxs("linearGradient", { id: idA, x1: '30.586', x2: '3.059', y1: '58.111', y2: '30.584', gradientUnits: 'userSpaceOnUse', children: [_jsx("stop", { offset: '.115', stopColor: '#681fc3' }), _jsx("stop", { offset: '.418', stopColor: '#9795f3' }), _jsx("stop", { offset: '.591', stopColor: '#b3d2ff' }), _jsx("stop", { offset: '.966', stopColor: '#a467f0' })] }), _jsxs("linearGradient", { id: idB, x1: '7.137', x2: '29.565', y1: '0', y2: '60.151', gradientUnits: 'userSpaceOnUse', children: [_jsx("stop", { offset: '.457', stopColor: '#8165d2', stopOpacity: '0' }), _jsx("stop", { offset: '.524', stopColor: '#280096', stopOpacity: '.4' })] }), _jsx("clipPath", { id: idC, children: _jsx("path", { d: 'M0 0h60v60H0z' }) }), _jsxs("g", { fillRule: 'evenodd', clipPath: `url(#${idC})`, clipRule: 'evenodd', children: [_jsx("path", { fill: `url(#${idA})`, d: 'M60 30.002c-9.023.937-16.054 3.632-20.86 8.203C33.633 43.242 30.586 50.508 30 60c-1.173-9.61-4.453-16.875-9.727-21.914C15.35 33.516 8.555 30.82 0 30c9.023-.703 16.054-3.515 21.093-8.438C26.132 16.523 29.063 9.376 29.999 0c.704 10.43 4.102 18.164 10.313 23.202C45.352 27.186 51.914 29.413 60 30zm-3.75-18.75c-2.228.235-3.984.936-5.391 2.226-1.289 1.289-1.992 3.047-2.109 5.274-.235-2.227-.937-3.983-2.108-5.155-1.289-1.288-3.048-2.109-5.391-2.344 2.227-.116 3.867-.82 5.156-1.991 1.288-1.289 2.108-3.164 2.343-5.508.117 2.46.937 4.336 2.344 5.508 1.288 1.171 2.93 1.875 5.156 1.991zM18.75 48.75c-2.345.236-4.103.937-5.392 2.227-1.288 1.172-1.992 2.93-2.108 5.274-.235-2.46-1.055-4.218-2.46-5.507-1.056-1.055-2.812-1.758-5.04-1.992 1.993-.116 3.633-.703 4.804-1.758 1.524-1.172 2.46-3.047 2.696-5.743.116 1.992.703 3.751 1.875 5.156 1.172 1.288 3.047 2.108 5.626 2.344z' }), _jsx("path", { fill: `url(#${idB})`, d: 'M60 30.002c-9.023.937-16.054 3.632-20.86 8.203C33.633 43.242 30.586 50.508 30 60c-1.173-9.61-4.453-16.875-9.727-21.914C15.35 33.516 8.555 30.82 0 30c9.023-.703 16.054-3.515 21.093-8.438C26.132 16.523 29.063 9.376 29.999 0c.704 10.43 4.102 18.164 10.313 23.202C45.352 27.186 51.914 29.413 60 30zm-3.75-18.75c-2.228.235-3.984.936-5.391 2.226-1.289 1.289-1.992 3.047-2.109 5.274-.235-2.227-.937-3.983-2.108-5.155-1.289-1.288-3.048-2.109-5.391-2.344 2.227-.116 3.867-.82 5.156-1.991 1.288-1.289 2.108-3.164 2.343-5.508.117 2.46.937 4.336 2.344 5.508 1.288 1.171 2.93 1.875 5.156 1.991zM18.75 48.75c-2.345.236-4.103.937-5.392 2.227-1.288 1.172-1.992 2.93-2.108 5.274-.235-2.46-1.055-4.218-2.46-5.507-1.056-1.055-2.812-1.758-5.04-1.992 1.993-.116 3.633-.703 4.804-1.758 1.524-1.172 2.46-3.047 2.696-5.743.116 1.992.703 3.751 1.875 5.156 1.172 1.288 3.047 2.108 5.626 2.344z' })] })] })) : (_jsxs(StyledAgentIcon, { width: '26', height: '26', viewBox: '0 0 26 26', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', children: [_jsxs("g", { clipPath: `url(#${idC})`, children: [_jsx("path", { fillRule: 'evenodd', clipRule: 'evenodd', d: 'M26 13C22.0904 13.4036 19.0422 14.5723 16.9639 16.5542C14.5783 18.7349 13.259 21.8855 13 26C12.494 21.8374 11.0723 18.6867 8.78313 16.506C6.6506 14.5241 3.70482 13.3554 0 13C3.90964 12.6928 6.95783 11.4759 9.13855 9.34337C11.3193 7.16265 12.5904 4.06024 13 0C13.3072 4.51807 14.7771 7.87349 17.4699 10.0542C19.6506 11.7831 22.494 12.747 26 13ZM24.3735 4.87349C23.4096 4.9759 22.6446 5.27711 22.0361 5.83735C21.4759 6.39759 21.1747 7.15663 21.1205 8.12048C21.0181 7.15663 20.7169 6.39157 20.2048 5.88554C19.6446 5.3253 18.8855 4.96988 17.8675 4.86747C18.8313 4.81928 19.5422 4.51205 20.1024 4.00602C20.6627 3.44578 21.0181 2.63253 21.1205 1.62048C21.1687 2.68675 21.5241 3.5 22.1386 4.00602C22.6988 4.51205 23.4096 4.81928 24.3735 4.86747V4.87349ZM8.12651 21.1265C7.10843 21.2289 6.3494 21.5301 5.78916 22.0904C5.22892 22.5964 4.92771 23.3614 4.87349 24.3735C4.77108 23.3072 4.41566 22.5482 3.80723 21.988C3.3494 21.5301 2.59036 21.2289 1.62651 21.1265C2.48795 21.0783 3.1988 20.8193 3.71084 20.3675C4.37349 19.8614 4.77711 19.0482 4.87952 17.8795C4.92771 18.741 5.18675 19.506 5.69277 20.1145C6.1988 20.6747 7.01205 21.0301 8.13253 21.1325L8.12651 21.1265Z', fill: `url(#${idA})` }), _jsx("path", { fillRule: 'evenodd', clipRule: 'evenodd', d: 'M26 13C22.0904 13.4036 19.0422 14.5723 16.9639 16.5542C14.5783 18.7349 13.259 21.8855 13 26C12.494 21.8373 11.0723 18.6867 8.78313 16.506C6.6506 14.5241 3.70482 13.3554 0 13C3.90964 12.6928 6.95783 11.4759 9.13855 9.34337C11.3193 7.16265 12.5904 4.06024 13 0C13.3072 4.51807 14.7771 7.87349 17.4699 10.0542C19.6506 11.7831 22.494 12.747 26 13ZM24.3735 4.87349C23.4096 4.9759 22.6446 5.27711 22.0361 5.83735C21.4759 6.39759 21.1747 7.15663 21.1205 8.12048C21.0181 7.15663 20.7169 6.39157 20.2048 5.88554C19.6446 5.3253 18.8855 4.96988 17.8675 4.86747C18.8313 4.81928 19.5422 4.51205 20.1024 4.00602C20.6627 3.44578 21.0181 2.63253 21.1205 1.62048C21.1687 2.68675 21.5241 3.5 22.1386 4.00602C22.6988 4.51205 23.4096 4.81928 24.3735 4.86747V4.87349ZM8.12651 21.1265C7.10843 21.2289 6.3494 21.5301 5.78916 22.0904C5.22892 22.5964 4.92771 23.3614 4.87349 24.3735C4.77108 23.3072 4.41566 22.5482 3.80723 21.988C3.3494 21.5301 2.59036 21.2289 1.62651 21.1265C2.48795 21.0783 3.1988 20.8193 3.71084 20.3675C4.37349 19.8614 4.77711 19.0482 4.87952 17.8795C4.92771 18.741 5.18675 19.506 5.69277 20.1145C6.1988 20.6747 7.01205 21.0301 8.13253 21.1325L8.12651 21.1265Z', fill: `url(#${idB})` })] }), _jsxs("defs", { children: [_jsxs("linearGradient", { id: idA, x1: '19.2169', y1: '19.2169', x2: '7.28916', y2: '7.28916', gradientUnits: 'userSpaceOnUse', children: [_jsx("stop", { offset: '0.12', stopColor: '#D4B1FF' }), _jsx("stop", { offset: '0.42', stopColor: '#AE9AFE' }), _jsx("stop", { offset: '0.59', stopColor: '#AEB7FC' }), _jsx("stop", { offset: '0.97', stopColor: '#E4CAFF' })] }), _jsxs("linearGradient", { id: idB, x1: '7.53614', y1: '-1.65663', x2: '17.253', y2: '24.4096', gradientUnits: 'userSpaceOnUse', children: [_jsx("stop", { offset: '0.46', stopColor: '#8165D2', stopOpacity: '0' }), _jsx("stop", { offset: '0.52', stopColor: '#5B39B9', stopOpacity: '0.4' })] }), _jsx("clipPath", { id: idC, children: _jsx("rect", { width: '26', height: '26', fill: 'white' }) })] })] }));
|
|
33
36
|
};
|
|
34
37
|
export const AISuggestedBadge = () => {
|
|
35
38
|
const t = useI18n();
|
|
@@ -84,6 +87,7 @@ const GenAICoachContent = ({ testId, coachOptions: coachOptionsProps, onCoachCha
|
|
|
84
87
|
const genAICoachRef = useRef(null);
|
|
85
88
|
const [messageEls, getMessageCbRef] = useRefMap();
|
|
86
89
|
const focusInMessageListRef = useRef(false);
|
|
90
|
+
const mouseTriggeredFocusRef = useRef(false);
|
|
87
91
|
const isUserTriggered = useRef(false);
|
|
88
92
|
const lastFocusedMessageRef = useRef(null);
|
|
89
93
|
const initialFocusedElementRef = useRef(null);
|
|
@@ -757,7 +761,21 @@ const GenAICoachContent = ({ testId, coachOptions: coachOptionsProps, onCoachCha
|
|
|
757
761
|
}
|
|
758
762
|
isUserTriggered.current = true;
|
|
759
763
|
textAreaRef.current?.focus();
|
|
760
|
-
}, testId: initialSuggestedMessage.id }))) })), fullPageAndInitialScreen && !guidedMode && !suggestionCardsView && genAIFooter] })) : (_jsx(Flex, { as: StyledMessagesList, ref: conversationRef, "aria-label": `${t('conversation')} ${t('view')}`, container: { direction: 'column' },
|
|
764
|
+
}, testId: initialSuggestedMessage.id }))) })), fullPageAndInitialScreen && !guidedMode && !suggestionCardsView && genAIFooter] })) : (_jsx(Flex, { as: StyledMessagesList, ref: conversationRef, "aria-label": `${t('conversation')} ${t('view')}`, container: { direction: 'column' }, onMouseDown: (e) => {
|
|
765
|
+
mouseTriggeredFocusRef.current = true;
|
|
766
|
+
const target = e.target instanceof Element ? e.target : null;
|
|
767
|
+
const clickedMessage = getMessageContainingElement(target);
|
|
768
|
+
if (clickedMessage) {
|
|
769
|
+
lastFocusedMessageRef.current = clickedMessage;
|
|
770
|
+
}
|
|
771
|
+
}, onMouseUp: () => {
|
|
772
|
+
mouseTriggeredFocusRef.current = false;
|
|
773
|
+
}, onFocus: () => {
|
|
774
|
+
if (mouseTriggeredFocusRef.current) {
|
|
775
|
+
mouseTriggeredFocusRef.current = false;
|
|
776
|
+
focusInMessageListRef.current = true;
|
|
777
|
+
return;
|
|
778
|
+
}
|
|
761
779
|
if (!focusInMessageListRef.current) {
|
|
762
780
|
focusInMessageListRef.current = true;
|
|
763
781
|
const target = lastFocusedMessageRef.current ??
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAICoach.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { ChangeEvent, KeyboardEvent } from 'react';\n\nimport {\n Button,\n Flex,\n Icon,\n MenuButton,\n Progress,\n Text,\n createUID,\n menuHelpers,\n useI18n,\n useSpeechRecognition,\n useTestIds,\n useTheme,\n withTestIds,\n registerIcon,\n usePrevious,\n getFocusables,\n isMenuGroupProps,\n ErrorState,\n useArrows,\n useFocusTrap,\n useLiveLog,\n useOuterEvent,\n ThemeOverride,\n hasProp,\n getActiveElement,\n useElement,\n Actions,\n useFullscreenContext,\n useBreakpoint,\n Grid,\n useRefMap,\n VisuallyHiddenText,\n FileList,\n Lightbox,\n FormField,\n useUID,\n SpeechToTextButton,\n Toaster,\n useToaster,\n throttle\n} from '@pega/cosmos-react-core';\nimport type { Action, ActionsProps, MenuItemProps, MenuProps } from '@pega/cosmos-react-core';\nimport * as caretUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-up.icon';\nimport * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';\nimport * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as minusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/minus.icon';\nimport * as polarisSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/polaris-solid.icon';\nimport * as paperClipIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/paper-clip.icon';\nimport * as warnSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/warn-solid.icon';\nimport * as sendSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/send-solid.icon';\nimport * as squareSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/square-solid.icon';\nimport * as plusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/plus.icon';\nimport * as dockIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/dock.icon';\nimport * as undockIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/undock.icon';\nimport * as caretLeftIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-left.icon';\nimport * as caretRightIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-right.icon';\nimport type { UseSpeechRecognitionProps } from '@pega/cosmos-react-core/lib/hooks/useSpeechRecognition';\n\nimport { getGenAICoachTestIds } from './GenAICoach.test-ids';\nimport { isCoachMessage, isInUtilities, isUserMessage } from './GenAICoach.utils';\nimport {\n StyledMessagesContainer,\n StyledDisclaimerText,\n StyledGenAICoachContainer,\n StyledGenAIOptionsMenu,\n StyledInitialMessageContainer,\n StyledInputContainer,\n StyledMenuSuggestions,\n StyledMessagesList,\n StyledGridContainer,\n StyledFlexWrapper,\n StyledErrorContainer,\n StyledInput,\n StyledGuidedSuggestions,\n StyledComposerSection,\n StyledSendButton,\n StyledStopGeneratingButton,\n StyledGenAIFormControl,\n StyledGenAITextArea,\n StyledInitialMessageGrid,\n StyledGenAIFooter,\n StyledAgentIcon,\n StyledActionsContainer,\n StyledFullscreenWrapper,\n StyledScrollButton,\n StyledSuggestionCardsView,\n StyledSuggestionCardsBottomHalf,\n StyledStickyComposer,\n StyledAISuggestedBadge,\n StyledSalutation,\n StyledComposerWrapper\n} from './GenAICoach.styles';\nimport ActiveCases from './ActiveCases';\nimport CaseWorkflow from './CaseWorkflow';\nimport ConversationHistory from './ConversationHistory';\nimport type { FormAnswer, GenAICoachScrollState, Tool } from './GenAICoach.types';\nimport Questionnaire from './Questionnaire';\n\nimport { GenAIMessage, InitialSuggestedMessage, type GenAICoachProps } from '.';\n\nregisterIcon(\n caretUpIcon,\n timesIcon,\n caretDownIcon,\n minusIcon,\n polarisSolidIcon,\n paperClipIcon,\n warnSolidIcon,\n squareSolidIcon,\n sendSolidIcon,\n plusIcon,\n dockIcon,\n undockIcon,\n caretLeftIcon,\n caretRightIcon\n);\n\nexport const AgentIcon = () => {\n const uid = useUID();\n const idA = `agent-gradient-a-${uid}`;\n const idB = `agent-gradient-b-${uid}`;\n const idC = `agent-clip-${uid}`;\n\n return (\n <StyledAgentIcon\n xmlns='http://www.w3.org/2000/svg'\n filter='drop-shadow(0 .125rem .125rem rgba(0,0,0,.03)) drop-shadow(.125rem .5rem .5rem rgba(0,0,0,.05)) drop-shadow(.125rem 1rem 1rem rgba(0,0,0,.08))'\n viewBox='0 0 60 60'\n >\n <linearGradient\n id={idA}\n x1='30.586'\n x2='3.059'\n y1='58.111'\n y2='30.584'\n gradientUnits='userSpaceOnUse'\n >\n <stop offset='.115' stopColor='#681fc3' />\n <stop offset='.418' stopColor='#9795f3' />\n <stop offset='.591' stopColor='#b3d2ff' />\n <stop offset='.966' stopColor='#a467f0' />\n </linearGradient>\n <linearGradient\n id={idB}\n x1='7.137'\n x2='29.565'\n y1='0'\n y2='60.151'\n gradientUnits='userSpaceOnUse'\n >\n <stop offset='.457' stopColor='#8165d2' stopOpacity='0' />\n <stop offset='.524' stopColor='#280096' stopOpacity='.4' />\n </linearGradient>\n <clipPath id={idC}>\n <path d='M0 0h60v60H0z' />\n </clipPath>\n <g fillRule='evenodd' clipPath={`url(#${idC})`} clipRule='evenodd'>\n <path\n fill={`url(#${idA})`}\n d='M60 30.002c-9.023.937-16.054 3.632-20.86 8.203C33.633 43.242 30.586 50.508 30 60c-1.173-9.61-4.453-16.875-9.727-21.914C15.35 33.516 8.555 30.82 0 30c9.023-.703 16.054-3.515 21.093-8.438C26.132 16.523 29.063 9.376 29.999 0c.704 10.43 4.102 18.164 10.313 23.202C45.352 27.186 51.914 29.413 60 30zm-3.75-18.75c-2.228.235-3.984.936-5.391 2.226-1.289 1.289-1.992 3.047-2.109 5.274-.235-2.227-.937-3.983-2.108-5.155-1.289-1.288-3.048-2.109-5.391-2.344 2.227-.116 3.867-.82 5.156-1.991 1.288-1.289 2.108-3.164 2.343-5.508.117 2.46.937 4.336 2.344 5.508 1.288 1.171 2.93 1.875 5.156 1.991zM18.75 48.75c-2.345.236-4.103.937-5.392 2.227-1.288 1.172-1.992 2.93-2.108 5.274-.235-2.46-1.055-4.218-2.46-5.507-1.056-1.055-2.812-1.758-5.04-1.992 1.993-.116 3.633-.703 4.804-1.758 1.524-1.172 2.46-3.047 2.696-5.743.116 1.992.703 3.751 1.875 5.156 1.172 1.288 3.047 2.108 5.626 2.344z'\n />\n <path\n fill={`url(#${idB})`}\n d='M60 30.002c-9.023.937-16.054 3.632-20.86 8.203C33.633 43.242 30.586 50.508 30 60c-1.173-9.61-4.453-16.875-9.727-21.914C15.35 33.516 8.555 30.82 0 30c9.023-.703 16.054-3.515 21.093-8.438C26.132 16.523 29.063 9.376 29.999 0c.704 10.43 4.102 18.164 10.313 23.202C45.352 27.186 51.914 29.413 60 30zm-3.75-18.75c-2.228.235-3.984.936-5.391 2.226-1.289 1.289-1.992 3.047-2.109 5.274-.235-2.227-.937-3.983-2.108-5.155-1.289-1.288-3.048-2.109-5.391-2.344 2.227-.116 3.867-.82 5.156-1.991 1.288-1.289 2.108-3.164 2.343-5.508.117 2.46.937 4.336 2.344 5.508 1.288 1.171 2.93 1.875 5.156 1.991zM18.75 48.75c-2.345.236-4.103.937-5.392 2.227-1.288 1.172-1.992 2.93-2.108 5.274-.235-2.46-1.055-4.218-2.46-5.507-1.056-1.055-2.812-1.758-5.04-1.992 1.993-.116 3.633-.703 4.804-1.758 1.524-1.172 2.46-3.047 2.696-5.743.116 1.992.703 3.751 1.875 5.156 1.172 1.288 3.047 2.108 5.626 2.344z'\n />\n </g>\n </StyledAgentIcon>\n );\n};\n\nexport const AISuggestedBadge = () => {\n const t = useI18n();\n return (\n <StyledAISuggestedBadge container={{ alignItems: 'center', gap: 0.5 }}>\n <Icon name='polaris-solid' aria-hidden />\n <Text>{t('ai_suggestion')}</Text>\n </StyledAISuggestedBadge>\n );\n};\n\ninterface HeaderActionsProps {\n actions?: ActionsProps;\n allowFullScreen: boolean;\n variant: GenAICoachProps['variant'];\n isUserTriggeredRef: { current: boolean };\n isFullscreen: boolean;\n onFullscreenToggle?: () => void;\n selectedCoach?: string;\n actionsTestId?: string;\n}\n\nconst HeaderActions = ({\n actions,\n allowFullScreen,\n variant,\n isUserTriggeredRef,\n onFullscreenToggle,\n isFullscreen,\n selectedCoach,\n actionsTestId\n}: HeaderActionsProps) => {\n const t = useI18n();\n const fullscreenIcon = isFullscreen ? 'dock' : 'undock';\n\n const extraItems: Action[] = [\n ...(allowFullScreen\n ? [\n {\n id: 'fullscreen',\n text: isFullscreen ? t('exit_fullscreen') : t('fullscreen'),\n visual: <Icon name={fullscreenIcon} />,\n onClick: onFullscreenToggle\n }\n ]\n : []),\n ...(isInUtilities(variant) && !isFullscreen\n ? [\n {\n id: 'minimize',\n text: t('minimize'),\n visual: <Icon name='minus' />,\n onClick: () => {\n variant.onStateChange('minimized');\n isUserTriggeredRef.current = true;\n }\n }\n ]\n : [])\n ];\n\n const mergedItems = [...(actions?.items ?? []), ...extraItems];\n if (mergedItems.length === 0) return null;\n\n return (\n <Actions\n {...(actions ?? {})}\n menuAt={1}\n data-testid={actionsTestId}\n contextualLabel={selectedCoach}\n items={mergedItems}\n />\n );\n};\n\nconst GenAICoachContent = ({\n testId,\n coachOptions: coachOptionsProps,\n onCoachChange: onCoachChangeProp,\n messages = [],\n onSend,\n initialSuggestedMessages,\n suggestions,\n loading,\n error,\n variant,\n onOpen,\n guidedMode = false,\n actions,\n onNewChat,\n conversationHistory,\n onLayoutChange,\n onAddAttachment,\n attachments,\n attachmentsError,\n lightboxPreviewProps,\n allowFullScreen = true,\n isInLandingPageUtilities,\n stopProcess,\n voiceToTextProps,\n salutation,\n showSalutation = true,\n isPortalAgent = false,\n pagePanel,\n suggestionCardsView,\n draftMessage,\n caseWorkflow,\n activeCases,\n onStop,\n isCreatingConversation,\n questionnaireData,\n ...restProps\n}: GenAICoachProps) => {\n const scrollTolerancePx = 2;\n const scrollThresholdPx = 50;\n const streamBufferLh = 20;\n const bufferExtensionLh = 2;\n const scrollThrottleMs = 50;\n const resizeThrottleMs = 33;\n\n const theme = useTheme();\n const t = useI18n();\n const testIds = useTestIds(testId, getGenAICoachTestIds);\n const { announcePolite } = useLiveLog();\n\n const elementRef = useRef<HTMLElement | null>(null);\n const conversationRef = useRef<HTMLUListElement>(null);\n const genAICoachRef = useRef<HTMLDivElement>(null);\n const [messageEls, getMessageCbRef] = useRefMap<HTMLLIElement>();\n\n const focusInMessageListRef = useRef(false);\n const isUserTriggered = useRef(false);\n const lastFocusedMessageRef = useRef<HTMLElement | null>(null);\n const initialFocusedElementRef = useRef<HTMLElement | null>(null);\n const inputContainerRef = useRef<HTMLDivElement | null>(null);\n const messageContainerRef = useRef<HTMLDivElement | null>(null);\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n const [suggestionMenuButton, setSuggestionMenuButton] = useElement<HTMLButtonElement>(null);\n const isGeneratingResponse = useRef(false);\n const focusTextArea = useRef(false);\n const historyViewRef = useRef<HTMLUListElement>(null);\n const fileUploadInputRef = useRef<HTMLInputElement>(null);\n const attachmentsAdded = useRef(false);\n const pendingResult = useRef(false);\n\n const scrollStateRef = useRef<GenAICoachScrollState>({\n userAtBottom: false,\n isStreamingActive: false,\n initialBufferApplied: false,\n smoothScrollOnEnd: false,\n ignoreNextScrollEvent: false,\n lastScrollTop: null,\n bufferMinHeight: null\n });\n\n const observersRef = useRef<{\n inputContainer: ResizeObserver | null;\n messageContainer: ResizeObserver | null;\n streamingMessage: ResizeObserver | null;\n }>({\n inputContainer: null,\n messageContainer: null,\n streamingMessage: null\n });\n\n const isSmallOrAbove = useBreakpoint('sm', {\n breakpointRef: genAICoachRef\n });\n\n const [message, setMessage] = useState('');\n\n const [interimMessage, setInterimMessage] = useState('');\n const [coachOptions, setCoachOptions] = useState<MenuProps['items']>(coachOptionsProps);\n\n const [focusedInMessage, setFocusedInMessage] = useState(false);\n const scrollButtonRef = useRef<HTMLButtonElement>(null);\n const trapRef = useRef<HTMLElement | null>(null);\n\n const [animationInitialCursorPos, setAnimationInitialCursorPos] = useState(0);\n const [focused, setFocused] = useState(false);\n const [formAnswers, setFormAnswers] = useState<Record<string, FormAnswer> | undefined>();\n const [questionnaireDismissed, setQuestionnaireDismissed] = useState(false);\n\n const [ctxFullscreen, toggleFullscreen] = useFullscreenContext() ?? [];\n const fullScreen = !!ctxFullscreen;\n\n const questionnaireKey = questionnaireData?.questions?.map(q => q.field).join(',') ?? '';\n\n const [showScrollToBottom, setShowScrollToBottom] = useState(false);\n\n const prevFullScreen = usePrevious(fullScreen);\n const prevIsSmallOrAbove = usePrevious(isSmallOrAbove);\n const previousMessages = usePrevious(messages);\n\n const composerId = useUID();\n\n const handleFormChange = useCallback((answers: Record<string, FormAnswer>) => {\n setFormAnswers(answers);\n }, []);\n\n const handleFormCancel = () => {\n setFormAnswers(undefined);\n setQuestionnaireDismissed(true);\n textAreaRef.current?.focus();\n };\n\n const latestMessage = messages.at(-1);\n const isLatestAgentMessageStreaming =\n !!latestMessage && isCoachMessage(latestMessage) && !!latestMessage.loading;\n\n const shouldKeepSplitLayoutDuringFullscreenToggle =\n !!conversationHistory &&\n variant.placement === 'fullpage' &&\n prevFullScreen !== undefined &&\n prevFullScreen !== fullScreen &&\n !!prevIsSmallOrAbove;\n\n const shouldRenderSideBySideHistory =\n !!conversationHistory &&\n (fullScreen ||\n (variant.placement === 'fullpage' &&\n (isSmallOrAbove || shouldKeepSplitLayoutDuringFullscreenToggle)));\n\n const condition =\n !shouldRenderSideBySideHistory &&\n (variant.placement === 'dialog' ||\n variant.placement === 'utilities' ||\n (variant.placement === 'fullpage' && !isSmallOrAbove) ||\n !conversationHistory);\n\n const applyBuffer = useCallback(() => {\n const container = messageContainerRef.current;\n const conversationEl = conversationRef.current;\n\n const scrollState = scrollStateRef.current;\n\n if (!container || !conversationEl) return;\n\n const contentHeight = Array.from(conversationEl.children).reduce((sum, child) => {\n if (child instanceof HTMLElement) return sum + child.offsetHeight;\n return sum;\n }, 0);\n\n const computedStyle = window.getComputedStyle(conversationEl);\n const lineHeightPx = parseFloat(computedStyle.lineHeight) || 20;\n const bufferSizePx = streamBufferLh * lineHeightPx;\n\n const currentBuffer = scrollState.bufferMinHeight ?? 0;\n\n const distanceToBufferEnd = currentBuffer - contentHeight;\n const extensionThreshold = bufferExtensionLh * lineHeightPx;\n\n if (currentBuffer === 0 || distanceToBufferEnd < extensionThreshold) {\n const newBuffer = contentHeight + bufferSizePx;\n scrollState.bufferMinHeight = newBuffer;\n\n conversationEl.style.setProperty('--stream-buffer', `${newBuffer}px`);\n }\n }, []);\n\n const manageBuffer = useCallback(\n (action: 'extend' | 'clear' | 'init') => {\n const container = messageContainerRef.current;\n const conversationEl = conversationRef.current;\n\n const scrollState = scrollStateRef.current;\n\n if (!container || !conversationEl) return;\n\n if (action === 'clear') {\n conversationEl.style.removeProperty('--stream-buffer');\n scrollState.bufferMinHeight = null;\n return;\n }\n\n if (action === 'init') {\n applyBuffer();\n return;\n }\n\n if (!scrollState.isStreamingActive || !scrollState.userAtBottom) return;\n\n applyBuffer();\n },\n [applyBuffer]\n );\n\n const followStreamingMessage = useCallback(() => {\n const container = messageContainerRef.current;\n const scrollState = scrollStateRef.current;\n\n if (\n !container ||\n !scrollState.isStreamingActive ||\n !scrollState.userAtBottom ||\n (scrollState.lastScrollTop !== null &&\n container.scrollTop < scrollState.lastScrollTop - scrollTolerancePx)\n )\n return;\n\n manageBuffer('extend');\n\n const targetScroll = container.scrollHeight - container.clientHeight;\n const currentScroll = container.scrollTop;\n\n if (Math.abs(currentScroll - targetScroll) > scrollTolerancePx) {\n scrollState.ignoreNextScrollEvent = true;\n container.scrollTo({ top: targetScroll, behavior: 'auto' });\n }\n }, [manageBuffer]);\n\n const scrollToLatest = useCallback(\n (behavior: ScrollBehavior = 'auto', preferLast: boolean = true) => {\n const container = messageContainerRef.current;\n const conversationEl = conversationRef.current;\n const lastMessage = conversationEl?.lastElementChild;\n\n if (!container) return;\n\n const scrollState = scrollStateRef.current;\n\n if (preferLast && lastMessage && lastMessage instanceof HTMLElement) {\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n const targetScrollTop = scrollHeight - clientHeight - scrollThresholdPx / 2;\n\n if (targetScrollTop > container.scrollTop) {\n scrollState.ignoreNextScrollEvent = true;\n container.scrollTo({ top: targetScrollTop, behavior: 'auto' });\n }\n\n return;\n }\n\n scrollState.ignoreNextScrollEvent = true;\n container.scrollTo({ top: container.scrollHeight, behavior });\n },\n []\n );\n\n const updateScrollState = useCallback(\n (isScrollEvent: boolean = false) => {\n const container = messageContainerRef.current;\n const conversationEl = conversationRef.current;\n\n if (!container || !conversationEl) {\n setShowScrollToBottom(false);\n return;\n }\n\n const state = scrollStateRef.current;\n\n if (state.initialBufferApplied) {\n scrollToLatest('auto', true);\n setShowScrollToBottom(false);\n state.initialBufferApplied = false;\n return;\n }\n\n if (state.smoothScrollOnEnd) {\n scrollToLatest('smooth', false);\n setShowScrollToBottom(false);\n state.smoothScrollOnEnd = false;\n return;\n }\n\n if (isScrollEvent && state.ignoreNextScrollEvent) {\n state.ignoreNextScrollEvent = false;\n return;\n }\n\n const isUserScroll = isScrollEvent;\n const { clientHeight, scrollHeight, scrollTop } = container;\n\n const trueContentHeight = Array.from(conversationEl.children).reduce(\n (sum, child) => (child instanceof HTMLElement ? sum + child.offsetHeight : sum),\n 0\n );\n\n const hasOverflow = trueContentHeight > clientHeight + scrollTolerancePx;\n const distanceFromBufferedBottom = scrollHeight - scrollTop - clientHeight;\n const isAtBufferedBottom = distanceFromBufferedBottom <= scrollThresholdPx;\n\n if (!state.isStreamingActive) {\n const distanceFromBottom = trueContentHeight - scrollTop - clientHeight;\n const isAtBottom = distanceFromBottom <= scrollThresholdPx;\n setShowScrollToBottom(hasOverflow && !isAtBottom);\n\n return;\n }\n\n if (isUserScroll) {\n const previousScrollTop = state.lastScrollTop;\n state.lastScrollTop = scrollTop;\n\n if (previousScrollTop !== null && scrollTop < previousScrollTop - scrollTolerancePx) {\n state.userAtBottom = false;\n } else if (isAtBufferedBottom) {\n state.userAtBottom = true;\n }\n }\n\n if (state.userAtBottom && isAtBufferedBottom) {\n followStreamingMessage();\n setShowScrollToBottom(false);\n } else {\n setShowScrollToBottom(hasOverflow && !isAtBufferedBottom);\n }\n },\n [followStreamingMessage, scrollToLatest]\n );\n\n const updateScrollStateOnResize = useMemo(\n () => throttle(() => updateScrollState(false), resizeThrottleMs),\n [updateScrollState]\n );\n\n const updateScrollStateOnScrollEvent = useMemo(\n () => throttle(() => updateScrollState(true), scrollThrottleMs),\n [updateScrollState]\n );\n\n const handleScrollToBottomClick = useCallback(() => {\n const scrollState = scrollStateRef.current;\n const isStreaming = scrollState.isStreamingActive;\n\n scrollToLatest(isStreaming ? 'auto' : 'smooth', false);\n\n if (isStreaming) {\n scrollState.userAtBottom = true;\n }\n\n setShowScrollToBottom(false);\n\n const lastMessage = conversationRef.current?.lastElementChild;\n if (lastMessage instanceof HTMLElement) {\n lastFocusedMessageRef.current = lastMessage;\n focusInMessageListRef.current = true;\n lastMessage.focus();\n }\n }, [scrollToLatest]);\n\n const setInputContainerRef = useCallback((el: HTMLDivElement | null) => {\n if (inputContainerRef.current === el) return;\n\n observersRef.current.inputContainer?.disconnect();\n observersRef.current.inputContainer = null;\n\n inputContainerRef.current = el;\n if (!el) return;\n\n const ro = new ResizeObserver(entries => {\n const entry = entries[0];\n if (entry && genAICoachRef.current) {\n const height = Math.round(entry.contentRect.height);\n genAICoachRef.current.style.setProperty('--composer-height', `${height}px`);\n }\n });\n\n ro.observe(el);\n observersRef.current.inputContainer = ro;\n }, []);\n\n const setMessageContainerRef = useCallback((el: HTMLDivElement | null) => {\n messageContainerRef.current = el;\n }, []);\n\n const onCoachChange = (id: MenuItemProps['id']) => {\n setCoachOptions(cur => {\n return cur.map(coach => {\n return {\n ...coach,\n selected: coach.id === id\n };\n });\n });\n onCoachChangeProp?.(id);\n };\n\n const selectedCoach = useMemo(() => {\n const selected = menuHelpers.getSelected(coachOptions)[0];\n if (selected) return selected.primary;\n\n if (coachOptions[0]) {\n if (isMenuGroupProps(coachOptions[0])) {\n return coachOptions[0].items[0].primary;\n }\n return coachOptions[0].primary;\n }\n }, [coachOptions]);\n\n const onResult: UseSpeechRecognitionProps['onResult'] = useCallback(value => {\n pendingResult.current = false;\n setMessage(prevMessage => {\n return prevMessage ? `${prevMessage} ${value}` : value;\n });\n setInterimMessage('');\n }, []);\n\n const onInterimResult: NonNullable<UseSpeechRecognitionProps['onInterimResult']> = useCallback(\n value => {\n if (value) {\n pendingResult.current = true;\n setInterimMessage(message ? ` ${value}` : value);\n }\n },\n [message]\n );\n\n const {\n supported,\n active,\n start,\n stop,\n error: voiceToTextError\n } = useSpeechRecognition({\n onResult,\n onInterimResult,\n langCode: voiceToTextProps?.langCode\n });\n\n const handleSendMessage = useCallback(() => {\n const hasFormAnswers =\n !!questionnaireData &&\n formAnswers &&\n Object.values(formAnswers).some(v => v.value.length > 0);\n const isMessageAndAttachmentsEmpty = !message && (!attachments || attachments.length === 0);\n const hasAttachmentsError =\n attachments &&\n attachments.length > 0 &&\n (attachmentsError || attachments.some(attachment => attachment.error));\n const isCoachMessageLoading =\n latestMessage && isCoachMessage(latestMessage) && latestMessage.loading;\n if (\n (isMessageAndAttachmentsEmpty && !hasFormAnswers) ||\n hasAttachmentsError ||\n isCoachMessageLoading ||\n (latestMessage && isCoachMessage(latestMessage) && latestMessage.isToolConfirmation)\n )\n return;\n\n onSend({\n id: createUID(),\n message,\n fromComposer: true,\n attachmentIds: attachments?.map(({ id }) => id),\n formAnswers: hasFormAnswers ? formAnswers : undefined\n });\n setFormAnswers(undefined);\n setMessage('');\n if (active) {\n stop();\n }\n }, [message, latestMessage, attachments, attachmentsError, formAnswers, questionnaireData]);\n\n const handleEnterKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n handleSendMessage();\n }\n };\n\n const handleTextAreaChange = useCallback(\n (e: ChangeEvent<HTMLTextAreaElement>) => {\n setMessage(e.currentTarget.value);\n },\n [setMessage]\n );\n\n const renderCoachOptions = useMemo(() => {\n if (coachOptions.length === 0 || !selectedCoach) {\n return null;\n }\n if (coachOptions.length === 1) {\n return (\n <Text variant={isPortalAgent && !pagePanel?.visible ? 'h1' : 'h2'}>{selectedCoach}</Text>\n );\n }\n return (\n <MenuButton\n text={selectedCoach}\n aria-label={t('agent_switcher', [selectedCoach])}\n variant='text'\n as={StyledGenAIOptionsMenu}\n menu={{\n mode: 'single-select',\n items: coachOptions,\n onItemClick: onCoachChange\n }}\n />\n );\n }, [coachOptions, selectedCoach, isPortalAgent, pagePanel?.visible]);\n\n const headerContent = useMemo(() => {\n return isInUtilities(variant) && variant.state === 'minimized' ? (\n <>\n <Text variant='h2'>{selectedCoach}</Text>\n <Flex container={{ alignItems: 'center' }}>\n <Button\n icon\n label={t('maximize')}\n aria-label={t('agent_noun', [t('maximize')])}\n variant='simple'\n onClick={() => {\n variant.onStateChange('maximized');\n isUserTriggered.current = true;\n }}\n >\n <Icon name='caret-up' />\n </Button>\n </Flex>\n </>\n ) : (\n <>\n {renderCoachOptions}\n\n <Flex container={{ gap: 0.5 }} as={StyledActionsContainer}>\n {activeCases && <ActiveCases activeCases={activeCases} />}\n\n {onNewChat && (\n <Button\n icon\n variant='simple'\n label={t('new_chat')}\n aria-label={t('new_chat')}\n onClick={onNewChat}\n >\n <Icon name='plus' />\n </Button>\n )}\n\n <HeaderActions\n actions={actions}\n allowFullScreen={allowFullScreen}\n variant={variant}\n isUserTriggeredRef={isUserTriggered}\n onFullscreenToggle={toggleFullscreen}\n isFullscreen={fullScreen}\n selectedCoach={selectedCoach}\n actionsTestId={testIds.actions}\n />\n\n {variant.placement === 'dialog' && !fullScreen && (\n <Button\n icon\n label={t('close')}\n aria-label={t('close_chat_with_ai')}\n variant='simple'\n onClick={variant.onClose}\n >\n <Icon name='times' />\n </Button>\n )}\n </Flex>\n </>\n );\n }, [variant, coachOptions, activeCases, actions, allowFullScreen, onNewChat]);\n\n const getMessageContainingElement = (element: Element | null) => {\n if (element) return Array.from(messageEls.values()).find(el => el && el.contains(element));\n return null;\n };\n\n const setLastFocusableElement = () => {\n focusInMessageListRef.current = false;\n lastFocusedMessageRef.current = elementRef.current ?? null;\n if (\n lastFocusedMessageRef.current &&\n lastFocusedMessageRef.current?.tagName.toLowerCase() !== 'li'\n ) {\n lastFocusedMessageRef.current =\n getMessageContainingElement(lastFocusedMessageRef.current) ?? null;\n }\n };\n\n const focusLastMessageLi = useCallback((e: KeyboardEvent) => {\n if (e.key !== 'Tab' || !e.shiftKey) return;\n const target = lastFocusedMessageRef.current ?? conversationRef.current?.lastElementChild;\n if (!(target instanceof HTMLElement)) return;\n e.preventDefault();\n focusInMessageListRef.current = true;\n target.focus();\n }, []);\n\n const variantState = useMemo(() => {\n if (variant.placement === 'utilities') {\n return variant.state;\n }\n }, [variant]);\n\n useEffect(() => {\n if (questionnaireData) {\n setQuestionnaireDismissed(false);\n setFormAnswers(undefined);\n }\n }, [questionnaireData]);\n\n useEffect(() => {\n if (suggestionCardsView && draftMessage !== undefined) {\n setMessage(draftMessage);\n textAreaRef.current?.focus();\n }\n }, [draftMessage, suggestionCardsView]);\n\n useEffect(() => {\n setFormAnswers(undefined);\n }, [questionnaireKey]);\n\n useEffect(() => {\n if (isUserTriggered.current) {\n if (\n isInUtilities(variant) &&\n (variant.state === 'minimized' || (guidedMode && variant.state === 'maximized')) &&\n getFocusables(genAICoachRef).length > 0\n ) {\n getFocusables(genAICoachRef)[0].focus();\n isUserTriggered.current = false;\n } else if (variant.placement !== 'fullpage') {\n textAreaRef.current?.focus();\n elementRef.current = null;\n isUserTriggered.current = false;\n }\n }\n }, [variantState, variant.placement]);\n\n useEffect(() => {\n onLayoutChange?.(!condition);\n }, [condition]);\n\n useEffect(() => {\n onOpen?.();\n\n return () => {\n Object.values(observersRef.current).forEach(observer => {\n observer?.disconnect();\n });\n };\n }, []);\n\n useEffect(() => {\n const prevFilteredMsgs = previousMessages?.filter(item => !hasProp(item, 'loading')) ?? [];\n const currentFilteredMsgs = messages?.filter(item => !hasProp(item, 'loading')) ?? [];\n\n if (\n prevFilteredMsgs.length < currentFilteredMsgs.length ||\n (latestMessage && hasProp(latestMessage, 'loading'))\n ) {\n if (latestMessage && isUserMessage(latestMessage)) {\n textAreaRef.current?.focus();\n setLastFocusableElement();\n elementRef.current = null;\n } else if (latestMessage?.loading) {\n isGeneratingResponse.current = true;\n } else {\n announcePolite({ message: t('agent_noun', [`${t('new_message')} ${t('from')}`]) });\n }\n }\n }, [messages]);\n\n useEffect(() => {\n if (!isLatestAgentMessageStreaming) return;\n\n announcePolite({ type: 'status', message: t('generating_response') });\n }, [isLatestAgentMessageStreaming]);\n\n useEffect(() => {\n const scrollState = scrollStateRef.current;\n const wasStreaming = scrollState.isStreamingActive;\n\n if (isLatestAgentMessageStreaming && !wasStreaming) {\n scrollStateRef.current = {\n ...scrollStateRef.current,\n isStreamingActive: true,\n initialBufferApplied: true,\n userAtBottom: false,\n smoothScrollOnEnd: false,\n lastScrollTop: null\n };\n\n requestAnimationFrame(() => {\n manageBuffer('init');\n });\n\n return;\n }\n\n if (!isLatestAgentMessageStreaming && wasStreaming) {\n scrollStateRef.current = {\n ...scrollStateRef.current,\n isStreamingActive: false,\n initialBufferApplied: false,\n userAtBottom: false,\n smoothScrollOnEnd: true\n };\n\n manageBuffer('clear');\n }\n }, [isLatestAgentMessageStreaming, manageBuffer]);\n\n useEffect(() => {\n const container = messageContainerRef.current;\n const content = conversationRef.current;\n\n if (!container || !content) return;\n\n const containerRO = new ResizeObserver(updateScrollStateOnResize);\n containerRO.observe(container);\n containerRO.observe(content);\n\n observersRef.current.messageContainer = containerRO;\n\n let streamingMessageRO: ResizeObserver | null = null;\n const lastMessageEl = content.lastElementChild;\n\n if (isLatestAgentMessageStreaming && lastMessageEl) {\n const handleStreamingUpdate = throttle(() => {\n followStreamingMessage();\n updateScrollState(false);\n }, resizeThrottleMs);\n\n streamingMessageRO = new ResizeObserver(handleStreamingUpdate);\n streamingMessageRO.observe(lastMessageEl);\n\n observersRef.current.streamingMessage = streamingMessageRO;\n }\n\n return () => {\n containerRO.disconnect();\n observersRef.current.messageContainer = null;\n\n streamingMessageRO?.disconnect();\n observersRef.current.streamingMessage = null;\n };\n }, [\n messages.length,\n isLatestAgentMessageStreaming,\n followStreamingMessage,\n updateScrollState,\n updateScrollStateOnResize\n ]);\n\n useEffect(() => {\n if (suggestionMenuButton && isGeneratingResponse.current) {\n announcePolite({ message: t('response_generated') });\n isGeneratingResponse.current = false;\n\n const activeElement = getActiveElement();\n if (activeElement && activeElement === document.body) suggestionMenuButton.focus();\n }\n }, [suggestionMenuButton]);\n\n useEffect(() => {\n if (messages.length === 0 || loading || error) {\n setShowScrollToBottom(false);\n }\n }, [messages.length, loading, error]);\n\n /** Supports Enter key to enter a message and focus first focusable element inside it */\n useEffect(() => {\n if (!focusedInMessage) return;\n const focusables = getFocusables(elementRef);\n focusables[0]?.focus();\n }, [focusedInMessage, elementRef.current]);\n\n /**\n * While inside a message, stop ArrowUp/Down from bubbling to conversationRef\n * so useArrows does not navigate between message rows.\n */\n useEffect(() => {\n const el = elementRef.current;\n if (!focusedInMessage || !el) return;\n const blockArrows = (e: globalThis.KeyboardEvent) => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.stopPropagation();\n }\n };\n el.addEventListener('keydown', blockArrows);\n return () => el.removeEventListener('keydown', blockArrows);\n }, [focusedInMessage]);\n\n useArrows(\n conversationRef,\n {\n cycle: true,\n selector: ':scope > li',\n dir: 'up-down',\n allowTabFocus: true,\n initialFocusElement: initialFocusedElementRef.current\n },\n [messages, initialFocusedElementRef.current]\n );\n\n useFocusTrap(trapRef, true, [focusedInMessage]);\n\n useOuterEvent(\n 'mousedown',\n [focusedInMessage ? elementRef.current : conversationRef.current],\n () => {\n setFocusedInMessage(false);\n trapRef.current = null;\n focusInMessageListRef.current = false;\n }\n );\n\n const { push } = useToaster();\n\n const onSpeechToTextButtonClick = useCallback(() => {\n if (active) {\n stop();\n } else {\n start();\n }\n }, [active, stop, start]);\n\n const onFileChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) {\n const newFiles = Array.from(e.target.files);\n onAddAttachment?.(newFiles);\n }\n };\n\n const getGridColumns = () => {\n const multiCol = 'repeat(auto-fit, minmax(calc(100% / 4 - 1rem), 1fr))';\n const singleCol = '1fr';\n\n return !isSmallOrAbove ? singleCol : multiCol;\n };\n\n useEffect(() => {\n if (voiceToTextError) {\n push({ content: voiceToTextError });\n }\n }, [voiceToTextError]);\n\n const genAIFooter = (\n <Flex container={{ direction: 'column' }} as={StyledGenAIFooter}>\n <StyledComposerWrapper\n focused={focused}\n hasQuestionnaire={!!questionnaireData && !questionnaireDismissed}\n onFocus={() => setFocused(true)}\n onBlur={e => {\n if (!(e.relatedTarget instanceof Node) || !e.currentTarget.contains(e.relatedTarget)) {\n setFocused(false);\n }\n }}\n >\n {questionnaireData && !questionnaireDismissed && (\n <Questionnaire\n key={questionnaireKey}\n data={questionnaireData}\n onChange={handleFormChange}\n onCancel={handleFormCancel}\n />\n )}\n <FormField label={t('message_pega_gen_ai_coach')} labelHidden labelFor={composerId}>\n <StyledGenAIFormControl\n focused={(!questionnaireData || questionnaireDismissed) && focused}\n >\n <Flex container={{ direction: 'column', gap: 0.25 }}>\n <StyledGenAITextArea\n id={composerId}\n ref={textAreaRef}\n value={interimMessage ? `${message}${interimMessage}` : message}\n placeholder={t('write_message')}\n onKeyDown={handleEnterKeyDown}\n onChange={handleTextAreaChange}\n onFocus={() => {\n if (active) stop();\n }}\n autoResize\n />\n\n <Flex\n container={{\n direction: 'row',\n justify: 'between',\n gap: 1,\n pad: [undefined, 1, 1, 1]\n }}\n >\n <Flex container={{ alignItems: 'center' }}>\n {!(messages.length === 0 && suggestionCardsView) && suggestions && (\n <MenuButton\n text={t('suggestions')}\n variant='simple'\n icon='chat-typing'\n iconOnly\n as={StyledMenuSuggestions}\n menu={{\n items: suggestions,\n onItemClick: id => {\n const selected = menuHelpers.getItem(suggestions, id);\n if (selected && !selected.onClick) {\n setMessage(selected.primary);\n textAreaRef.current?.focus();\n }\n }\n }}\n showArrow={false}\n />\n )}\n {voiceToTextProps?.enableDictation && supported && (\n <SpeechToTextButton active={active} onClick={onSpeechToTextButtonClick} />\n )}\n\n {onAddAttachment && (\n <>\n <Button\n icon\n onClick={() => {\n if (fileUploadInputRef.current) {\n fileUploadInputRef.current.value = '';\n }\n fileUploadInputRef.current?.click();\n }}\n variant='simple'\n label={t('add_attachment')}\n >\n <Icon name='paper-clip' />\n </Button>\n <StyledInput\n type='file'\n ref={fileUploadInputRef}\n onChange={onFileChange}\n multiple={false}\n data-testid={testIds.attachments}\n />\n </>\n )}\n </Flex>\n\n {(() => {\n if (active && pendingResult.current) {\n return (\n <Flex\n container={{\n gap: 1,\n justify: 'end',\n alignItems: 'center',\n pad: 1\n }}\n >\n {t('processing_speech')}\n <Progress placement='inline' />\n </Flex>\n );\n }\n\n const isToolConfirmation =\n latestMessage &&\n isCoachMessage(latestMessage) &&\n latestMessage.isToolConfirmation;\n\n let onStopFn: (() => void) | undefined;\n if (onStop) {\n onStopFn = onStop;\n } else if (isToolConfirmation) {\n onStopFn = stopProcess;\n }\n\n if (onStopFn) {\n return (\n <StyledStopGeneratingButton\n variant='primary'\n icon\n label={t('stop')}\n aria-label={t('stop')}\n onClick={() => {\n textAreaRef.current?.focus();\n onStopFn?.();\n }}\n >\n <Icon name='square-solid' />\n </StyledStopGeneratingButton>\n );\n }\n\n const isLoading =\n latestMessage &&\n isCoachMessage(latestMessage) &&\n latestMessage.loading &&\n !latestMessage.error;\n\n const sendButton = (\n <StyledSendButton\n variant='primary'\n onClick={isCreatingConversation ? undefined : handleSendMessage}\n icon\n label={t('send')}\n aria-label={t('send_message')}\n >\n <Icon name='send-solid' />\n </StyledSendButton>\n );\n\n if (isLoading) {\n if (isCreatingConversation) {\n return sendButton;\n }\n return (\n <Flex\n container={{\n gap: 1,\n justify: 'end',\n alignItems: 'center',\n pad: 1\n }}\n >\n {t('generating_response')}\n <Progress placement='inline' />\n </Flex>\n );\n }\n\n return sendButton;\n })()}\n </Flex>\n </Flex>\n </StyledGenAIFormControl>\n </FormField>\n </StyledComposerWrapper>\n\n {attachments && attachments.length > 0 && (\n <>\n <Flex\n as={FileList}\n type='item'\n aria-label={`${t('attachments')}`}\n items={attachments}\n container={{ pad: [1, 0] }}\n />\n\n {attachmentsError && (\n <Flex container={{ gap: 1, alignItems: 'center' }} as={StyledErrorContainer}>\n <Icon name='warn-solid' />\n <VisuallyHiddenText>{`${t('error')} `}</VisuallyHiddenText>\n\n {attachmentsError}\n </Flex>\n )}\n </>\n )}\n\n <Flex container={{ justify: 'center' }}>\n <StyledDisclaimerText inFullPage={!condition}>{t('ai_disclaimer')}</StyledDisclaimerText>\n </Flex>\n </Flex>\n );\n\n const isCompact =\n variant.placement === 'fullpage' &&\n !fullScreen &&\n !isInLandingPageUtilities &&\n messages.length === 0;\n\n const fullPageAndInitialScreen =\n (fullScreen || (variant.placement === 'fullpage' && !isInLandingPageUtilities)) &&\n messages.length === 0;\n\n const renderTextArea = fullPageAndInitialScreen ? null : genAIFooter;\n\n const GenAICoachElement = (\n <>\n {((isInUtilities(variant) && variant.state !== 'minimized') || !isInUtilities(variant)) && (\n <Flex container={{ direction: 'column' }} as={StyledFlexWrapper}>\n {caseWorkflow && <CaseWorkflow {...caseWorkflow} />}\n\n <Flex\n as={StyledMessagesContainer}\n ref={setMessageContainerRef}\n withSuggestionCards={\n !loading && !error && messages.length === 0 && !!suggestionCardsView\n }\n container={\n loading || error\n ? { direction: 'column', pad: [0, 2], justify: 'center' }\n : { direction: 'column', pad: [0, 2] }\n }\n {...(!loading && !error && messages.length === 0 && suggestionCardsView\n ? {}\n : { item: { grow: 1 } })}\n onScroll={updateScrollStateOnScrollEvent}\n >\n {loading || error ? (\n <Flex container={{ justify: 'center', alignItems: 'center' }}>\n {loading ? (\n <Progress\n variant='ring'\n placement='block'\n message={typeof loading === 'string' ? loading : t('loading')}\n />\n ) : (\n <ErrorState message={error} />\n )}\n </Flex>\n ) : (\n <>\n {messages.length === 0 ? (\n <Flex\n as={StyledInitialMessageContainer}\n container={{\n justify: suggestionCardsView ? undefined : 'center',\n direction: 'column',\n alignItems: 'center',\n gap: 4,\n pad: [6, 0, 2, 0]\n }}\n {...(suggestionCardsView ? {} : { item: { grow: 1 } })}\n >\n {((isInUtilities(variant) && variant.state === 'maximized') ||\n !isInUtilities(variant)) &&\n showSalutation && (\n <Flex\n container={{\n direction: 'column',\n alignItems: 'center',\n gap: 2,\n pad: [0, 2]\n }}\n >\n <AgentIcon />\n <Text variant='h3' as={StyledSalutation}>\n {salutation ?? t('welcome_text')}\n </Text>\n </Flex>\n )}\n\n {initialSuggestedMessages && initialSuggestedMessages.length > 0 && (\n <Grid\n as={StyledInitialMessageGrid}\n container={{ cols: getGridColumns(), gap: 1.5 }}\n >\n {initialSuggestedMessages.map(initialSuggestedMessage => (\n <InitialSuggestedMessage\n {...initialSuggestedMessage}\n onSend={initialMessage => {\n if (guidedMode) {\n onSend({\n id: initialMessage.id,\n message: initialMessage.message\n });\n } else {\n setMessage(initialMessage.message ?? '');\n }\n isUserTriggered.current = true;\n textAreaRef.current?.focus();\n }}\n testId={initialSuggestedMessage.id}\n />\n ))}\n </Grid>\n )}\n\n {fullPageAndInitialScreen && !guidedMode && !suggestionCardsView && genAIFooter}\n </Flex>\n ) : (\n <Flex\n as={StyledMessagesList}\n ref={conversationRef}\n aria-label={`${t('conversation')} ${t('view')}`}\n container={{ direction: 'column' }}\n onFocus={() => {\n if (!focusInMessageListRef.current) {\n focusInMessageListRef.current = true;\n const target =\n lastFocusedMessageRef.current ??\n (conversationRef.current?.lastElementChild instanceof HTMLElement\n ? conversationRef.current.lastElementChild\n : null);\n target?.focus();\n }\n focusInMessageListRef.current = true;\n }}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n if (focusedInMessage) return;\n elementRef.current =\n getMessageContainingElement(document.activeElement) ?? null;\n lastFocusedMessageRef.current = elementRef.current;\n } else if (e.key === 'Enter' && !focusedInMessage) {\n const activeMessageElement = Array.from(messageEls.values()).find(\n el => el === document.activeElement\n );\n elementRef.current =\n getMessageContainingElement(document.activeElement) ?? null;\n initialFocusedElementRef.current = elementRef.current;\n if (\n activeMessageElement &&\n getFocusables(activeMessageElement).length > 0\n ) {\n e.preventDefault();\n trapRef.current = elementRef.current;\n setFocusedInMessage(true);\n }\n } else if (e.key === 'Escape' && focusedInMessage) {\n e.preventDefault();\n trapRef.current = null;\n setFocusedInMessage(false);\n elementRef.current?.focus();\n } else if (e.key === 'Tab') {\n if (focusedInMessage) return;\n e.preventDefault();\n setLastFocusableElement();\n if (e.shiftKey) {\n if (\n !condition &&\n conversationHistory &&\n conversationHistory.selectedItemId\n ) {\n const selectedId = historyViewRef.current?.querySelector<HTMLLIElement>(\n `li[id=\"${conversationHistory.selectedItemId}\"]`\n );\n\n if (selectedId) {\n selectedId.focus();\n e.preventDefault();\n }\n } else {\n const prevElement =\n conversationRef.current?.parentElement?.parentElement\n ?.previousElementSibling;\n if (prevElement) {\n const focusables = getFocusables(prevElement);\n if (focusables.length) {\n e.preventDefault();\n focusables[focusables.length - 1].focus();\n }\n }\n }\n } else {\n if (scrollButtonRef.current) {\n scrollButtonRef.current.focus();\n return;\n }\n const nextElement =\n conversationRef.current?.parentElement?.nextElementSibling;\n if (nextElement) {\n const focusables = getFocusables(nextElement);\n if (focusables.length) {\n focusables[0].focus();\n }\n }\n }\n }\n }}\n >\n {messages.map(item => {\n const messageProps = isCoachMessage(item)\n ? {\n ...item,\n suggestions:\n messages.findLast(messageItem => isCoachMessage(messageItem))?.id ===\n item.id\n ? item.suggestions\n : undefined,\n onSend,\n onSubmit: item.isToolConfirmation\n ? (tools: Tool[]) => {\n onSend({\n ...item,\n message: typeof item.message === 'string' ? item.message : '',\n tools\n });\n }\n : undefined\n }\n : item;\n\n return (\n <GenAIMessage\n {...messageProps}\n ref={getMessageCbRef(item.id)}\n testId={item.id}\n announceInteraction={!focusInMessageListRef.current}\n onAnimationCursorUpdate={animatedTillCursor => {\n if (isCoachMessage(item)) {\n setAnimationInitialCursorPos(animatedTillCursor);\n }\n }}\n {...(prevFullScreen !== fullScreen ? { animationInitialCursorPos } : {})}\n />\n );\n })}\n </Flex>\n )}\n </>\n )}\n </Flex>\n\n {showScrollToBottom && (\n <StyledScrollButton\n ref={scrollButtonRef}\n icon\n onClick={handleScrollToBottomClick}\n ariaLabel={t('scroll_to_latest_message')}\n onKeyDown={focusLastMessageLi}\n >\n <Icon name='caret-down' />\n </StyledScrollButton>\n )}\n\n {!loading && messages.length === 0 && suggestionCardsView ? (\n <>\n {((isInUtilities(variant) && variant.state !== 'minimized') ||\n !isInUtilities(variant)) &&\n !guidedMode && (\n <StyledStickyComposer>\n <Flex\n container={{ direction: 'column' }}\n as={StyledInputContainer}\n ref={setInputContainerRef}\n >\n <StyledComposerSection>{genAIFooter}</StyledComposerSection>\n </Flex>\n </StyledStickyComposer>\n )}\n <Flex container={{ direction: 'column' }} as={StyledSuggestionCardsBottomHalf}>\n <StyledSuggestionCardsView>{suggestionCardsView}</StyledSuggestionCardsView>\n </Flex>\n </>\n ) : (\n ((isInUtilities(variant) && variant.state !== 'minimized') ||\n !isInUtilities(variant)) &&\n !loading && (\n <Flex\n container={{ direction: 'column' }}\n as={StyledInputContainer}\n ref={setInputContainerRef}\n >\n <StyledComposerSection>\n {guidedMode && questionnaireData && !questionnaireDismissed && (\n <Questionnaire\n key={questionnaireKey}\n data={questionnaireData}\n onChange={handleFormChange}\n onCancel={handleFormCancel}\n />\n )}\n {guidedMode ? (\n <>\n {suggestions && messages.length > 0 && (\n <>\n {latestMessage &&\n isCoachMessage(latestMessage) &&\n latestMessage.loading ? (\n <Flex\n container={{\n gap: 1,\n justify: 'center',\n alignItems: 'center',\n pad: 1\n }}\n >\n {t('generating_response')}\n <Progress\n placement='inline'\n focusOnVisible\n message={t('generating_response')}\n />\n </Flex>\n ) : (\n <ThemeOverride\n theme={{\n components: {\n button: {\n color: theme.base.palette.ai,\n 'secondary-color': theme.base.palette.ai,\n 'secondary-fill-style': 'outline'\n }\n }\n }}\n >\n <MenuButton\n as={StyledGuidedSuggestions}\n text={t('ask_coach', [selectedCoach ?? ''])}\n variant='primary'\n icon='polaris-solid'\n ref={setSuggestionMenuButton}\n menu={{\n items: suggestions,\n onItemClick: id => {\n const selected = menuHelpers.getItem(suggestions, id);\n if (selected && !selected.onClick) {\n onSend({\n id: selected.id,\n message: selected.primary\n });\n }\n }\n }}\n />\n </ThemeOverride>\n )}\n\n <Flex container={{ justify: 'center' }}>\n <StyledDisclaimerText inFullPage={!condition}>\n {t('ai_disclaimer')}\n </StyledDisclaimerText>\n </Flex>\n </>\n )}\n </>\n ) : (\n renderTextArea\n )}\n </StyledComposerSection>\n </Flex>\n )\n )}\n </Flex>\n )}\n </>\n );\n\n useEffect(() => {\n if (focusTextArea.current && !conversationHistory && textAreaRef.current) {\n textAreaRef.current.focus();\n focusTextArea.current = false;\n }\n }, [conversationHistory, focusTextArea.current]);\n\n useEffect(() => {\n if (attachmentsError) {\n announcePolite({\n message: attachmentsError\n });\n } else if (attachments && attachments.length > 0) {\n announcePolite({\n message: t('attachment_added')\n });\n attachmentsAdded.current = true;\n } else if (attachmentsAdded.current && attachments && attachments.length === 0) {\n textAreaRef.current?.focus();\n attachmentsAdded.current = false;\n }\n }, [attachments, attachmentsError]);\n\n const historyView = conversationHistory && (\n <ConversationHistory\n testId={testIds.root}\n {...conversationHistory}\n onItemClick={conversationId => {\n if (condition) {\n focusTextArea.current = true;\n } else {\n textAreaRef.current?.focus();\n }\n\n conversationHistory.onItemClick?.(conversationId);\n }}\n onDismiss={() => {\n focusTextArea.current = true;\n conversationHistory.onDismiss();\n }}\n inFullPage={!condition}\n ref={historyViewRef}\n />\n );\n\n return (\n <Flex\n {...restProps}\n container={{ direction: 'column' }}\n as={StyledGenAICoachContainer}\n data-testid={testIds.root}\n variant={variant}\n fullScreen={fullScreen}\n isCompact={isCompact}\n isPortalAgent={isPortalAgent}\n ref={genAICoachRef}\n >\n <Flex container={{ justify: 'between', alignItems: 'center', pad: [1.5, 2, 0.5] }}>\n {headerContent}\n </Flex>\n\n {condition ? (\n <>{conversationHistory ? historyView : GenAICoachElement}</>\n ) : (\n <Grid\n container={{ gap: 0.5, cols: '2fr 3fr' }}\n as={StyledGridContainer}\n conversationHistory={!!conversationHistory}\n >\n {historyView}\n {GenAICoachElement}\n </Grid>\n )}\n\n {lightboxPreviewProps && <Lightbox {...lightboxPreviewProps} />}\n </Flex>\n );\n};\n\nconst GenAICoach = (props: GenAICoachProps) => (\n <Toaster>\n <StyledFullscreenWrapper>\n <GenAICoachContent {...props} />\n </StyledFullscreenWrapper>\n </Toaster>\n);\n\nexport default withTestIds(GenAICoach, getGenAICoachTestIds);\n"]}
|
|
1
|
+
{"version":3,"file":"GenAICoach.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { ChangeEvent, KeyboardEvent, MouseEvent } from 'react';\nimport { getLuminance } from 'polished';\n\nimport {\n Button,\n Flex,\n Icon,\n MenuButton,\n Progress,\n Text,\n createUID,\n menuHelpers,\n useI18n,\n useSpeechRecognition,\n useTestIds,\n useTheme,\n withTestIds,\n registerIcon,\n usePrevious,\n getFocusables,\n isMenuGroupProps,\n ErrorState,\n useArrows,\n useFocusTrap,\n useLiveLog,\n useOuterEvent,\n ThemeOverride,\n hasProp,\n getActiveElement,\n useElement,\n Actions,\n useFullscreenContext,\n useBreakpoint,\n Grid,\n useRefMap,\n VisuallyHiddenText,\n FileList,\n Lightbox,\n FormField,\n useUID,\n SpeechToTextButton,\n Toaster,\n useToaster,\n throttle\n} from '@pega/cosmos-react-core';\nimport type { Action, ActionsProps, MenuItemProps, MenuProps } from '@pega/cosmos-react-core';\nimport * as caretUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-up.icon';\nimport * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';\nimport * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as minusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/minus.icon';\nimport * as polarisSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/polaris-solid.icon';\nimport * as paperClipIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/paper-clip.icon';\nimport * as warnSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/warn-solid.icon';\nimport * as sendSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/send-solid.icon';\nimport * as squareSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/square-solid.icon';\nimport * as plusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/plus.icon';\nimport * as dockIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/dock.icon';\nimport * as undockIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/undock.icon';\nimport * as caretLeftIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-left.icon';\nimport * as caretRightIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-right.icon';\nimport type { UseSpeechRecognitionProps } from '@pega/cosmos-react-core/lib/hooks/useSpeechRecognition';\n\nimport { getGenAICoachTestIds } from './GenAICoach.test-ids';\nimport { isCoachMessage, isInUtilities, isUserMessage } from './GenAICoach.utils';\nimport {\n StyledMessagesContainer,\n StyledDisclaimerText,\n StyledGenAICoachContainer,\n StyledGenAIOptionsMenu,\n StyledInitialMessageContainer,\n StyledInputContainer,\n StyledMenuSuggestions,\n StyledMessagesList,\n StyledGridContainer,\n StyledFlexWrapper,\n StyledErrorContainer,\n StyledInput,\n StyledGuidedSuggestions,\n StyledComposerSection,\n StyledSendButton,\n StyledStopGeneratingButton,\n StyledGenAIFormControl,\n StyledGenAITextArea,\n StyledInitialMessageGrid,\n StyledGenAIFooter,\n StyledAgentIcon,\n StyledActionsContainer,\n StyledFullscreenWrapper,\n StyledScrollButton,\n StyledSuggestionCardsView,\n StyledSuggestionCardsBottomHalf,\n StyledStickyComposer,\n StyledAISuggestedBadge,\n StyledSalutation,\n StyledComposerWrapper\n} from './GenAICoach.styles';\nimport ActiveCases from './ActiveCases';\nimport CaseWorkflow from './CaseWorkflow';\nimport ConversationHistory from './ConversationHistory';\nimport type { FormAnswer, GenAICoachScrollState, Tool } from './GenAICoach.types';\nimport Questionnaire from './Questionnaire';\n\nimport { GenAIMessage, InitialSuggestedMessage, type GenAICoachProps } from '.';\n\nregisterIcon(\n caretUpIcon,\n timesIcon,\n caretDownIcon,\n minusIcon,\n polarisSolidIcon,\n paperClipIcon,\n warnSolidIcon,\n squareSolidIcon,\n sendSolidIcon,\n plusIcon,\n dockIcon,\n undockIcon,\n caretLeftIcon,\n caretRightIcon\n);\n\nexport const AgentIcon = () => {\n const theme = useTheme();\n const uid = useUID();\n\n const idA = `agent-gradient-a-${uid}`;\n const idB = `agent-gradient-b-${uid}`;\n const idC = `agent-clip-${uid}`;\n\n const isLightTheme = getLuminance(theme.base.palette['foreground-color']) < 0.5;\n\n return isLightTheme ? (\n <StyledAgentIcon\n xmlns='http://www.w3.org/2000/svg'\n filter='drop-shadow(0 .125rem .125rem rgba(0,0,0,.03)) drop-shadow(.125rem .5rem .5rem rgba(0,0,0,.05)) drop-shadow(.125rem 1rem 1rem rgba(0,0,0,.08))'\n viewBox='0 0 60 60'\n >\n <linearGradient\n id={idA}\n x1='30.586'\n x2='3.059'\n y1='58.111'\n y2='30.584'\n gradientUnits='userSpaceOnUse'\n >\n <stop offset='.115' stopColor='#681fc3' />\n <stop offset='.418' stopColor='#9795f3' />\n <stop offset='.591' stopColor='#b3d2ff' />\n <stop offset='.966' stopColor='#a467f0' />\n </linearGradient>\n <linearGradient\n id={idB}\n x1='7.137'\n x2='29.565'\n y1='0'\n y2='60.151'\n gradientUnits='userSpaceOnUse'\n >\n <stop offset='.457' stopColor='#8165d2' stopOpacity='0' />\n <stop offset='.524' stopColor='#280096' stopOpacity='.4' />\n </linearGradient>\n <clipPath id={idC}>\n <path d='M0 0h60v60H0z' />\n </clipPath>\n <g fillRule='evenodd' clipPath={`url(#${idC})`} clipRule='evenodd'>\n <path\n fill={`url(#${idA})`}\n d='M60 30.002c-9.023.937-16.054 3.632-20.86 8.203C33.633 43.242 30.586 50.508 30 60c-1.173-9.61-4.453-16.875-9.727-21.914C15.35 33.516 8.555 30.82 0 30c9.023-.703 16.054-3.515 21.093-8.438C26.132 16.523 29.063 9.376 29.999 0c.704 10.43 4.102 18.164 10.313 23.202C45.352 27.186 51.914 29.413 60 30zm-3.75-18.75c-2.228.235-3.984.936-5.391 2.226-1.289 1.289-1.992 3.047-2.109 5.274-.235-2.227-.937-3.983-2.108-5.155-1.289-1.288-3.048-2.109-5.391-2.344 2.227-.116 3.867-.82 5.156-1.991 1.288-1.289 2.108-3.164 2.343-5.508.117 2.46.937 4.336 2.344 5.508 1.288 1.171 2.93 1.875 5.156 1.991zM18.75 48.75c-2.345.236-4.103.937-5.392 2.227-1.288 1.172-1.992 2.93-2.108 5.274-.235-2.46-1.055-4.218-2.46-5.507-1.056-1.055-2.812-1.758-5.04-1.992 1.993-.116 3.633-.703 4.804-1.758 1.524-1.172 2.46-3.047 2.696-5.743.116 1.992.703 3.751 1.875 5.156 1.172 1.288 3.047 2.108 5.626 2.344z'\n />\n <path\n fill={`url(#${idB})`}\n d='M60 30.002c-9.023.937-16.054 3.632-20.86 8.203C33.633 43.242 30.586 50.508 30 60c-1.173-9.61-4.453-16.875-9.727-21.914C15.35 33.516 8.555 30.82 0 30c9.023-.703 16.054-3.515 21.093-8.438C26.132 16.523 29.063 9.376 29.999 0c.704 10.43 4.102 18.164 10.313 23.202C45.352 27.186 51.914 29.413 60 30zm-3.75-18.75c-2.228.235-3.984.936-5.391 2.226-1.289 1.289-1.992 3.047-2.109 5.274-.235-2.227-.937-3.983-2.108-5.155-1.289-1.288-3.048-2.109-5.391-2.344 2.227-.116 3.867-.82 5.156-1.991 1.288-1.289 2.108-3.164 2.343-5.508.117 2.46.937 4.336 2.344 5.508 1.288 1.171 2.93 1.875 5.156 1.991zM18.75 48.75c-2.345.236-4.103.937-5.392 2.227-1.288 1.172-1.992 2.93-2.108 5.274-.235-2.46-1.055-4.218-2.46-5.507-1.056-1.055-2.812-1.758-5.04-1.992 1.993-.116 3.633-.703 4.804-1.758 1.524-1.172 2.46-3.047 2.696-5.743.116 1.992.703 3.751 1.875 5.156 1.172 1.288 3.047 2.108 5.626 2.344z'\n />\n </g>\n </StyledAgentIcon>\n ) : (\n <StyledAgentIcon\n width='26'\n height='26'\n viewBox='0 0 26 26'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <g clipPath={`url(#${idC})`}>\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M26 13C22.0904 13.4036 19.0422 14.5723 16.9639 16.5542C14.5783 18.7349 13.259 21.8855 13 26C12.494 21.8374 11.0723 18.6867 8.78313 16.506C6.6506 14.5241 3.70482 13.3554 0 13C3.90964 12.6928 6.95783 11.4759 9.13855 9.34337C11.3193 7.16265 12.5904 4.06024 13 0C13.3072 4.51807 14.7771 7.87349 17.4699 10.0542C19.6506 11.7831 22.494 12.747 26 13ZM24.3735 4.87349C23.4096 4.9759 22.6446 5.27711 22.0361 5.83735C21.4759 6.39759 21.1747 7.15663 21.1205 8.12048C21.0181 7.15663 20.7169 6.39157 20.2048 5.88554C19.6446 5.3253 18.8855 4.96988 17.8675 4.86747C18.8313 4.81928 19.5422 4.51205 20.1024 4.00602C20.6627 3.44578 21.0181 2.63253 21.1205 1.62048C21.1687 2.68675 21.5241 3.5 22.1386 4.00602C22.6988 4.51205 23.4096 4.81928 24.3735 4.86747V4.87349ZM8.12651 21.1265C7.10843 21.2289 6.3494 21.5301 5.78916 22.0904C5.22892 22.5964 4.92771 23.3614 4.87349 24.3735C4.77108 23.3072 4.41566 22.5482 3.80723 21.988C3.3494 21.5301 2.59036 21.2289 1.62651 21.1265C2.48795 21.0783 3.1988 20.8193 3.71084 20.3675C4.37349 19.8614 4.77711 19.0482 4.87952 17.8795C4.92771 18.741 5.18675 19.506 5.69277 20.1145C6.1988 20.6747 7.01205 21.0301 8.13253 21.1325L8.12651 21.1265Z'\n fill={`url(#${idA})`}\n />\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M26 13C22.0904 13.4036 19.0422 14.5723 16.9639 16.5542C14.5783 18.7349 13.259 21.8855 13 26C12.494 21.8373 11.0723 18.6867 8.78313 16.506C6.6506 14.5241 3.70482 13.3554 0 13C3.90964 12.6928 6.95783 11.4759 9.13855 9.34337C11.3193 7.16265 12.5904 4.06024 13 0C13.3072 4.51807 14.7771 7.87349 17.4699 10.0542C19.6506 11.7831 22.494 12.747 26 13ZM24.3735 4.87349C23.4096 4.9759 22.6446 5.27711 22.0361 5.83735C21.4759 6.39759 21.1747 7.15663 21.1205 8.12048C21.0181 7.15663 20.7169 6.39157 20.2048 5.88554C19.6446 5.3253 18.8855 4.96988 17.8675 4.86747C18.8313 4.81928 19.5422 4.51205 20.1024 4.00602C20.6627 3.44578 21.0181 2.63253 21.1205 1.62048C21.1687 2.68675 21.5241 3.5 22.1386 4.00602C22.6988 4.51205 23.4096 4.81928 24.3735 4.86747V4.87349ZM8.12651 21.1265C7.10843 21.2289 6.3494 21.5301 5.78916 22.0904C5.22892 22.5964 4.92771 23.3614 4.87349 24.3735C4.77108 23.3072 4.41566 22.5482 3.80723 21.988C3.3494 21.5301 2.59036 21.2289 1.62651 21.1265C2.48795 21.0783 3.1988 20.8193 3.71084 20.3675C4.37349 19.8614 4.77711 19.0482 4.87952 17.8795C4.92771 18.741 5.18675 19.506 5.69277 20.1145C6.1988 20.6747 7.01205 21.0301 8.13253 21.1325L8.12651 21.1265Z'\n fill={`url(#${idB})`}\n />\n </g>\n <defs>\n <linearGradient\n id={idA}\n x1='19.2169'\n y1='19.2169'\n x2='7.28916'\n y2='7.28916'\n gradientUnits='userSpaceOnUse'\n >\n <stop offset='0.12' stopColor='#D4B1FF' />\n <stop offset='0.42' stopColor='#AE9AFE' />\n <stop offset='0.59' stopColor='#AEB7FC' />\n <stop offset='0.97' stopColor='#E4CAFF' />\n </linearGradient>\n <linearGradient\n id={idB}\n x1='7.53614'\n y1='-1.65663'\n x2='17.253'\n y2='24.4096'\n gradientUnits='userSpaceOnUse'\n >\n <stop offset='0.46' stopColor='#8165D2' stopOpacity='0' />\n <stop offset='0.52' stopColor='#5B39B9' stopOpacity='0.4' />\n </linearGradient>\n <clipPath id={idC}>\n <rect width='26' height='26' fill='white' />\n </clipPath>\n </defs>\n </StyledAgentIcon>\n );\n};\n\nexport const AISuggestedBadge = () => {\n const t = useI18n();\n return (\n <StyledAISuggestedBadge container={{ alignItems: 'center', gap: 0.5 }}>\n <Icon name='polaris-solid' aria-hidden />\n <Text>{t('ai_suggestion')}</Text>\n </StyledAISuggestedBadge>\n );\n};\n\ninterface HeaderActionsProps {\n actions?: ActionsProps;\n allowFullScreen: boolean;\n variant: GenAICoachProps['variant'];\n isUserTriggeredRef: { current: boolean };\n isFullscreen: boolean;\n onFullscreenToggle?: () => void;\n selectedCoach?: string;\n actionsTestId?: string;\n}\n\nconst HeaderActions = ({\n actions,\n allowFullScreen,\n variant,\n isUserTriggeredRef,\n onFullscreenToggle,\n isFullscreen,\n selectedCoach,\n actionsTestId\n}: HeaderActionsProps) => {\n const t = useI18n();\n const fullscreenIcon = isFullscreen ? 'dock' : 'undock';\n\n const extraItems: Action[] = [\n ...(allowFullScreen\n ? [\n {\n id: 'fullscreen',\n text: isFullscreen ? t('exit_fullscreen') : t('fullscreen'),\n visual: <Icon name={fullscreenIcon} />,\n onClick: onFullscreenToggle\n }\n ]\n : []),\n ...(isInUtilities(variant) && !isFullscreen\n ? [\n {\n id: 'minimize',\n text: t('minimize'),\n visual: <Icon name='minus' />,\n onClick: () => {\n variant.onStateChange('minimized');\n isUserTriggeredRef.current = true;\n }\n }\n ]\n : [])\n ];\n\n const mergedItems = [...(actions?.items ?? []), ...extraItems];\n if (mergedItems.length === 0) return null;\n\n return (\n <Actions\n {...(actions ?? {})}\n menuAt={1}\n data-testid={actionsTestId}\n contextualLabel={selectedCoach}\n items={mergedItems}\n />\n );\n};\n\nconst GenAICoachContent = ({\n testId,\n coachOptions: coachOptionsProps,\n onCoachChange: onCoachChangeProp,\n messages = [],\n onSend,\n initialSuggestedMessages,\n suggestions,\n loading,\n error,\n variant,\n onOpen,\n guidedMode = false,\n actions,\n onNewChat,\n conversationHistory,\n onLayoutChange,\n onAddAttachment,\n attachments,\n attachmentsError,\n lightboxPreviewProps,\n allowFullScreen = true,\n isInLandingPageUtilities,\n stopProcess,\n voiceToTextProps,\n salutation,\n showSalutation = true,\n isPortalAgent = false,\n pagePanel,\n suggestionCardsView,\n draftMessage,\n caseWorkflow,\n activeCases,\n onStop,\n isCreatingConversation,\n questionnaireData,\n ...restProps\n}: GenAICoachProps) => {\n const scrollTolerancePx = 2;\n const scrollThresholdPx = 50;\n const streamBufferLh = 20;\n const bufferExtensionLh = 2;\n const scrollThrottleMs = 50;\n const resizeThrottleMs = 33;\n\n const theme = useTheme();\n const t = useI18n();\n const testIds = useTestIds(testId, getGenAICoachTestIds);\n const { announcePolite } = useLiveLog();\n\n const elementRef = useRef<HTMLElement | null>(null);\n const conversationRef = useRef<HTMLUListElement>(null);\n const genAICoachRef = useRef<HTMLDivElement>(null);\n const [messageEls, getMessageCbRef] = useRefMap<HTMLLIElement>();\n\n const focusInMessageListRef = useRef(false);\n const mouseTriggeredFocusRef = useRef(false);\n const isUserTriggered = useRef(false);\n const lastFocusedMessageRef = useRef<HTMLElement | null>(null);\n const initialFocusedElementRef = useRef<HTMLElement | null>(null);\n const inputContainerRef = useRef<HTMLDivElement | null>(null);\n const messageContainerRef = useRef<HTMLDivElement | null>(null);\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n const [suggestionMenuButton, setSuggestionMenuButton] = useElement<HTMLButtonElement>(null);\n const isGeneratingResponse = useRef(false);\n const focusTextArea = useRef(false);\n const historyViewRef = useRef<HTMLUListElement>(null);\n const fileUploadInputRef = useRef<HTMLInputElement>(null);\n const attachmentsAdded = useRef(false);\n const pendingResult = useRef(false);\n\n const scrollStateRef = useRef<GenAICoachScrollState>({\n userAtBottom: false,\n isStreamingActive: false,\n initialBufferApplied: false,\n smoothScrollOnEnd: false,\n ignoreNextScrollEvent: false,\n lastScrollTop: null,\n bufferMinHeight: null\n });\n\n const observersRef = useRef<{\n inputContainer: ResizeObserver | null;\n messageContainer: ResizeObserver | null;\n streamingMessage: ResizeObserver | null;\n }>({\n inputContainer: null,\n messageContainer: null,\n streamingMessage: null\n });\n\n const isSmallOrAbove = useBreakpoint('sm', {\n breakpointRef: genAICoachRef\n });\n\n const [message, setMessage] = useState('');\n\n const [interimMessage, setInterimMessage] = useState('');\n const [coachOptions, setCoachOptions] = useState<MenuProps['items']>(coachOptionsProps);\n\n const [focusedInMessage, setFocusedInMessage] = useState(false);\n const scrollButtonRef = useRef<HTMLButtonElement>(null);\n const trapRef = useRef<HTMLElement | null>(null);\n\n const [animationInitialCursorPos, setAnimationInitialCursorPos] = useState(0);\n const [focused, setFocused] = useState(false);\n const [formAnswers, setFormAnswers] = useState<Record<string, FormAnswer> | undefined>();\n const [questionnaireDismissed, setQuestionnaireDismissed] = useState(false);\n\n const [ctxFullscreen, toggleFullscreen] = useFullscreenContext() ?? [];\n const fullScreen = !!ctxFullscreen;\n\n const questionnaireKey = questionnaireData?.questions?.map(q => q.field).join(',') ?? '';\n\n const [showScrollToBottom, setShowScrollToBottom] = useState(false);\n\n const prevFullScreen = usePrevious(fullScreen);\n const prevIsSmallOrAbove = usePrevious(isSmallOrAbove);\n const previousMessages = usePrevious(messages);\n\n const composerId = useUID();\n\n const handleFormChange = useCallback((answers: Record<string, FormAnswer>) => {\n setFormAnswers(answers);\n }, []);\n\n const handleFormCancel = () => {\n setFormAnswers(undefined);\n setQuestionnaireDismissed(true);\n textAreaRef.current?.focus();\n };\n\n const latestMessage = messages.at(-1);\n const isLatestAgentMessageStreaming =\n !!latestMessage && isCoachMessage(latestMessage) && !!latestMessage.loading;\n\n const shouldKeepSplitLayoutDuringFullscreenToggle =\n !!conversationHistory &&\n variant.placement === 'fullpage' &&\n prevFullScreen !== undefined &&\n prevFullScreen !== fullScreen &&\n !!prevIsSmallOrAbove;\n\n const shouldRenderSideBySideHistory =\n !!conversationHistory &&\n (fullScreen ||\n (variant.placement === 'fullpage' &&\n (isSmallOrAbove || shouldKeepSplitLayoutDuringFullscreenToggle)));\n\n const condition =\n !shouldRenderSideBySideHistory &&\n (variant.placement === 'dialog' ||\n variant.placement === 'utilities' ||\n (variant.placement === 'fullpage' && !isSmallOrAbove) ||\n !conversationHistory);\n\n const applyBuffer = useCallback(() => {\n const container = messageContainerRef.current;\n const conversationEl = conversationRef.current;\n\n const scrollState = scrollStateRef.current;\n\n if (!container || !conversationEl) return;\n\n const contentHeight = Array.from(conversationEl.children).reduce((sum, child) => {\n if (child instanceof HTMLElement) return sum + child.offsetHeight;\n return sum;\n }, 0);\n\n const computedStyle = window.getComputedStyle(conversationEl);\n const lineHeightPx = parseFloat(computedStyle.lineHeight) || 20;\n const bufferSizePx = streamBufferLh * lineHeightPx;\n\n const currentBuffer = scrollState.bufferMinHeight ?? 0;\n\n const distanceToBufferEnd = currentBuffer - contentHeight;\n const extensionThreshold = bufferExtensionLh * lineHeightPx;\n\n if (currentBuffer === 0 || distanceToBufferEnd < extensionThreshold) {\n const newBuffer = contentHeight + bufferSizePx;\n scrollState.bufferMinHeight = newBuffer;\n\n conversationEl.style.setProperty('--stream-buffer', `${newBuffer}px`);\n }\n }, []);\n\n const manageBuffer = useCallback(\n (action: 'extend' | 'clear' | 'init') => {\n const container = messageContainerRef.current;\n const conversationEl = conversationRef.current;\n\n const scrollState = scrollStateRef.current;\n\n if (!container || !conversationEl) return;\n\n if (action === 'clear') {\n conversationEl.style.removeProperty('--stream-buffer');\n scrollState.bufferMinHeight = null;\n return;\n }\n\n if (action === 'init') {\n applyBuffer();\n return;\n }\n\n if (!scrollState.isStreamingActive || !scrollState.userAtBottom) return;\n\n applyBuffer();\n },\n [applyBuffer]\n );\n\n const followStreamingMessage = useCallback(() => {\n const container = messageContainerRef.current;\n const scrollState = scrollStateRef.current;\n\n if (\n !container ||\n !scrollState.isStreamingActive ||\n !scrollState.userAtBottom ||\n (scrollState.lastScrollTop !== null &&\n container.scrollTop < scrollState.lastScrollTop - scrollTolerancePx)\n )\n return;\n\n manageBuffer('extend');\n\n const targetScroll = container.scrollHeight - container.clientHeight;\n const currentScroll = container.scrollTop;\n\n if (Math.abs(currentScroll - targetScroll) > scrollTolerancePx) {\n scrollState.ignoreNextScrollEvent = true;\n container.scrollTo({ top: targetScroll, behavior: 'auto' });\n }\n }, [manageBuffer]);\n\n const scrollToLatest = useCallback(\n (behavior: ScrollBehavior = 'auto', preferLast: boolean = true) => {\n const container = messageContainerRef.current;\n const conversationEl = conversationRef.current;\n const lastMessage = conversationEl?.lastElementChild;\n\n if (!container) return;\n\n const scrollState = scrollStateRef.current;\n\n if (preferLast && lastMessage && lastMessage instanceof HTMLElement) {\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n const targetScrollTop = scrollHeight - clientHeight - scrollThresholdPx / 2;\n\n if (targetScrollTop > container.scrollTop) {\n scrollState.ignoreNextScrollEvent = true;\n container.scrollTo({ top: targetScrollTop, behavior: 'auto' });\n }\n\n return;\n }\n\n scrollState.ignoreNextScrollEvent = true;\n container.scrollTo({ top: container.scrollHeight, behavior });\n },\n []\n );\n\n const updateScrollState = useCallback(\n (isScrollEvent: boolean = false) => {\n const container = messageContainerRef.current;\n const conversationEl = conversationRef.current;\n\n if (!container || !conversationEl) {\n setShowScrollToBottom(false);\n return;\n }\n\n const state = scrollStateRef.current;\n\n if (state.initialBufferApplied) {\n scrollToLatest('auto', true);\n setShowScrollToBottom(false);\n state.initialBufferApplied = false;\n return;\n }\n\n if (state.smoothScrollOnEnd) {\n scrollToLatest('smooth', false);\n setShowScrollToBottom(false);\n state.smoothScrollOnEnd = false;\n return;\n }\n\n if (isScrollEvent && state.ignoreNextScrollEvent) {\n state.ignoreNextScrollEvent = false;\n return;\n }\n\n const isUserScroll = isScrollEvent;\n const { clientHeight, scrollHeight, scrollTop } = container;\n\n const trueContentHeight = Array.from(conversationEl.children).reduce(\n (sum, child) => (child instanceof HTMLElement ? sum + child.offsetHeight : sum),\n 0\n );\n\n const hasOverflow = trueContentHeight > clientHeight + scrollTolerancePx;\n const distanceFromBufferedBottom = scrollHeight - scrollTop - clientHeight;\n const isAtBufferedBottom = distanceFromBufferedBottom <= scrollThresholdPx;\n\n if (!state.isStreamingActive) {\n const distanceFromBottom = trueContentHeight - scrollTop - clientHeight;\n const isAtBottom = distanceFromBottom <= scrollThresholdPx;\n setShowScrollToBottom(hasOverflow && !isAtBottom);\n\n return;\n }\n\n if (isUserScroll) {\n const previousScrollTop = state.lastScrollTop;\n state.lastScrollTop = scrollTop;\n\n if (previousScrollTop !== null && scrollTop < previousScrollTop - scrollTolerancePx) {\n state.userAtBottom = false;\n } else if (isAtBufferedBottom) {\n state.userAtBottom = true;\n }\n }\n\n if (state.userAtBottom && isAtBufferedBottom) {\n followStreamingMessage();\n setShowScrollToBottom(false);\n } else {\n setShowScrollToBottom(hasOverflow && !isAtBufferedBottom);\n }\n },\n [followStreamingMessage, scrollToLatest]\n );\n\n const updateScrollStateOnResize = useMemo(\n () => throttle(() => updateScrollState(false), resizeThrottleMs),\n [updateScrollState]\n );\n\n const updateScrollStateOnScrollEvent = useMemo(\n () => throttle(() => updateScrollState(true), scrollThrottleMs),\n [updateScrollState]\n );\n\n const handleScrollToBottomClick = useCallback(() => {\n const scrollState = scrollStateRef.current;\n const isStreaming = scrollState.isStreamingActive;\n\n scrollToLatest(isStreaming ? 'auto' : 'smooth', false);\n\n if (isStreaming) {\n scrollState.userAtBottom = true;\n }\n\n setShowScrollToBottom(false);\n\n const lastMessage = conversationRef.current?.lastElementChild;\n if (lastMessage instanceof HTMLElement) {\n lastFocusedMessageRef.current = lastMessage;\n focusInMessageListRef.current = true;\n lastMessage.focus();\n }\n }, [scrollToLatest]);\n\n const setInputContainerRef = useCallback((el: HTMLDivElement | null) => {\n if (inputContainerRef.current === el) return;\n\n observersRef.current.inputContainer?.disconnect();\n observersRef.current.inputContainer = null;\n\n inputContainerRef.current = el;\n if (!el) return;\n\n const ro = new ResizeObserver(entries => {\n const entry = entries[0];\n if (entry && genAICoachRef.current) {\n const height = Math.round(entry.contentRect.height);\n genAICoachRef.current.style.setProperty('--composer-height', `${height}px`);\n }\n });\n\n ro.observe(el);\n observersRef.current.inputContainer = ro;\n }, []);\n\n const setMessageContainerRef = useCallback((el: HTMLDivElement | null) => {\n messageContainerRef.current = el;\n }, []);\n\n const onCoachChange = (id: MenuItemProps['id']) => {\n setCoachOptions(cur => {\n return cur.map(coach => {\n return {\n ...coach,\n selected: coach.id === id\n };\n });\n });\n onCoachChangeProp?.(id);\n };\n\n const selectedCoach = useMemo(() => {\n const selected = menuHelpers.getSelected(coachOptions)[0];\n if (selected) return selected.primary;\n\n if (coachOptions[0]) {\n if (isMenuGroupProps(coachOptions[0])) {\n return coachOptions[0].items[0].primary;\n }\n return coachOptions[0].primary;\n }\n }, [coachOptions]);\n\n const onResult: UseSpeechRecognitionProps['onResult'] = useCallback(value => {\n pendingResult.current = false;\n setMessage(prevMessage => {\n return prevMessage ? `${prevMessage} ${value}` : value;\n });\n setInterimMessage('');\n }, []);\n\n const onInterimResult: NonNullable<UseSpeechRecognitionProps['onInterimResult']> = useCallback(\n value => {\n if (value) {\n pendingResult.current = true;\n setInterimMessage(message ? ` ${value}` : value);\n }\n },\n [message]\n );\n\n const {\n supported,\n active,\n start,\n stop,\n error: voiceToTextError\n } = useSpeechRecognition({\n onResult,\n onInterimResult,\n langCode: voiceToTextProps?.langCode\n });\n\n const handleSendMessage = useCallback(() => {\n const hasFormAnswers =\n !!questionnaireData &&\n formAnswers &&\n Object.values(formAnswers).some(v => v.value.length > 0);\n const isMessageAndAttachmentsEmpty = !message && (!attachments || attachments.length === 0);\n const hasAttachmentsError =\n attachments &&\n attachments.length > 0 &&\n (attachmentsError || attachments.some(attachment => attachment.error));\n const isCoachMessageLoading =\n latestMessage && isCoachMessage(latestMessage) && latestMessage.loading;\n if (\n (isMessageAndAttachmentsEmpty && !hasFormAnswers) ||\n hasAttachmentsError ||\n isCoachMessageLoading ||\n (latestMessage && isCoachMessage(latestMessage) && latestMessage.isToolConfirmation)\n )\n return;\n\n onSend({\n id: createUID(),\n message,\n fromComposer: true,\n attachmentIds: attachments?.map(({ id }) => id),\n formAnswers: hasFormAnswers ? formAnswers : undefined\n });\n setFormAnswers(undefined);\n setMessage('');\n if (active) {\n stop();\n }\n }, [message, latestMessage, attachments, attachmentsError, formAnswers, questionnaireData]);\n\n const handleEnterKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n handleSendMessage();\n }\n };\n\n const handleTextAreaChange = useCallback(\n (e: ChangeEvent<HTMLTextAreaElement>) => {\n setMessage(e.currentTarget.value);\n },\n [setMessage]\n );\n\n const renderCoachOptions = useMemo(() => {\n if (coachOptions.length === 0 || !selectedCoach) {\n return null;\n }\n if (coachOptions.length === 1) {\n return (\n <Text variant={isPortalAgent && !pagePanel?.visible ? 'h1' : 'h2'}>{selectedCoach}</Text>\n );\n }\n return (\n <MenuButton\n text={selectedCoach}\n aria-label={t('agent_switcher', [selectedCoach])}\n variant='text'\n as={StyledGenAIOptionsMenu}\n menu={{\n mode: 'single-select',\n items: coachOptions,\n onItemClick: onCoachChange\n }}\n />\n );\n }, [coachOptions, selectedCoach, isPortalAgent, pagePanel?.visible]);\n\n const headerContent = useMemo(() => {\n return isInUtilities(variant) && variant.state === 'minimized' ? (\n <>\n <Text variant='h2'>{selectedCoach}</Text>\n <Flex container={{ alignItems: 'center' }}>\n <Button\n icon\n label={t('maximize')}\n aria-label={t('agent_noun', [t('maximize')])}\n variant='simple'\n onClick={() => {\n variant.onStateChange('maximized');\n isUserTriggered.current = true;\n }}\n >\n <Icon name='caret-up' />\n </Button>\n </Flex>\n </>\n ) : (\n <>\n {renderCoachOptions}\n\n <Flex container={{ gap: 0.5 }} as={StyledActionsContainer}>\n {activeCases && <ActiveCases activeCases={activeCases} />}\n\n {onNewChat && (\n <Button\n icon\n variant='simple'\n label={t('new_chat')}\n aria-label={t('new_chat')}\n onClick={onNewChat}\n >\n <Icon name='plus' />\n </Button>\n )}\n\n <HeaderActions\n actions={actions}\n allowFullScreen={allowFullScreen}\n variant={variant}\n isUserTriggeredRef={isUserTriggered}\n onFullscreenToggle={toggleFullscreen}\n isFullscreen={fullScreen}\n selectedCoach={selectedCoach}\n actionsTestId={testIds.actions}\n />\n\n {variant.placement === 'dialog' && !fullScreen && (\n <Button\n icon\n label={t('close')}\n aria-label={t('close_chat_with_ai')}\n variant='simple'\n onClick={variant.onClose}\n >\n <Icon name='times' />\n </Button>\n )}\n </Flex>\n </>\n );\n }, [variant, coachOptions, activeCases, actions, allowFullScreen, onNewChat]);\n\n const getMessageContainingElement = (element: Element | null) => {\n if (element) return Array.from(messageEls.values()).find(el => el && el.contains(element));\n return null;\n };\n\n const setLastFocusableElement = () => {\n focusInMessageListRef.current = false;\n lastFocusedMessageRef.current = elementRef.current ?? null;\n if (\n lastFocusedMessageRef.current &&\n lastFocusedMessageRef.current?.tagName.toLowerCase() !== 'li'\n ) {\n lastFocusedMessageRef.current =\n getMessageContainingElement(lastFocusedMessageRef.current) ?? null;\n }\n };\n\n const focusLastMessageLi = useCallback((e: KeyboardEvent) => {\n if (e.key !== 'Tab' || !e.shiftKey) return;\n const target = lastFocusedMessageRef.current ?? conversationRef.current?.lastElementChild;\n if (!(target instanceof HTMLElement)) return;\n e.preventDefault();\n focusInMessageListRef.current = true;\n target.focus();\n }, []);\n\n const variantState = useMemo(() => {\n if (variant.placement === 'utilities') {\n return variant.state;\n }\n }, [variant]);\n\n useEffect(() => {\n if (questionnaireData) {\n setQuestionnaireDismissed(false);\n setFormAnswers(undefined);\n }\n }, [questionnaireData]);\n\n useEffect(() => {\n if (suggestionCardsView && draftMessage !== undefined) {\n setMessage(draftMessage);\n textAreaRef.current?.focus();\n }\n }, [draftMessage, suggestionCardsView]);\n\n useEffect(() => {\n setFormAnswers(undefined);\n }, [questionnaireKey]);\n\n useEffect(() => {\n if (isUserTriggered.current) {\n if (\n isInUtilities(variant) &&\n (variant.state === 'minimized' || (guidedMode && variant.state === 'maximized')) &&\n getFocusables(genAICoachRef).length > 0\n ) {\n getFocusables(genAICoachRef)[0].focus();\n isUserTriggered.current = false;\n } else if (variant.placement !== 'fullpage') {\n textAreaRef.current?.focus();\n elementRef.current = null;\n isUserTriggered.current = false;\n }\n }\n }, [variantState, variant.placement]);\n\n useEffect(() => {\n onLayoutChange?.(!condition);\n }, [condition]);\n\n useEffect(() => {\n onOpen?.();\n\n return () => {\n Object.values(observersRef.current).forEach(observer => {\n observer?.disconnect();\n });\n };\n }, []);\n\n useEffect(() => {\n const prevFilteredMsgs = previousMessages?.filter(item => !hasProp(item, 'loading')) ?? [];\n const currentFilteredMsgs = messages?.filter(item => !hasProp(item, 'loading')) ?? [];\n\n if (\n prevFilteredMsgs.length < currentFilteredMsgs.length ||\n (latestMessage && hasProp(latestMessage, 'loading'))\n ) {\n if (latestMessage && isUserMessage(latestMessage)) {\n textAreaRef.current?.focus();\n setLastFocusableElement();\n elementRef.current = null;\n } else if (latestMessage?.loading) {\n isGeneratingResponse.current = true;\n } else {\n announcePolite({ message: t('agent_noun', [`${t('new_message')} ${t('from')}`]) });\n }\n }\n }, [messages]);\n\n useEffect(() => {\n if (!isLatestAgentMessageStreaming) return;\n\n announcePolite({ type: 'status', message: t('generating_response') });\n }, [isLatestAgentMessageStreaming]);\n\n useEffect(() => {\n const scrollState = scrollStateRef.current;\n const wasStreaming = scrollState.isStreamingActive;\n\n if (isLatestAgentMessageStreaming && !wasStreaming) {\n scrollStateRef.current = {\n ...scrollStateRef.current,\n isStreamingActive: true,\n initialBufferApplied: true,\n userAtBottom: false,\n smoothScrollOnEnd: false,\n lastScrollTop: null\n };\n\n requestAnimationFrame(() => {\n manageBuffer('init');\n });\n\n return;\n }\n\n if (!isLatestAgentMessageStreaming && wasStreaming) {\n scrollStateRef.current = {\n ...scrollStateRef.current,\n isStreamingActive: false,\n initialBufferApplied: false,\n userAtBottom: false,\n smoothScrollOnEnd: true\n };\n\n manageBuffer('clear');\n }\n }, [isLatestAgentMessageStreaming, manageBuffer]);\n\n useEffect(() => {\n const container = messageContainerRef.current;\n const content = conversationRef.current;\n\n if (!container || !content) return;\n\n const containerRO = new ResizeObserver(updateScrollStateOnResize);\n containerRO.observe(container);\n containerRO.observe(content);\n\n observersRef.current.messageContainer = containerRO;\n\n let streamingMessageRO: ResizeObserver | null = null;\n const lastMessageEl = content.lastElementChild;\n\n if (isLatestAgentMessageStreaming && lastMessageEl) {\n const handleStreamingUpdate = throttle(() => {\n followStreamingMessage();\n updateScrollState(false);\n }, resizeThrottleMs);\n\n streamingMessageRO = new ResizeObserver(handleStreamingUpdate);\n streamingMessageRO.observe(lastMessageEl);\n\n observersRef.current.streamingMessage = streamingMessageRO;\n }\n\n return () => {\n containerRO.disconnect();\n observersRef.current.messageContainer = null;\n\n streamingMessageRO?.disconnect();\n observersRef.current.streamingMessage = null;\n };\n }, [\n messages.length,\n isLatestAgentMessageStreaming,\n followStreamingMessage,\n updateScrollState,\n updateScrollStateOnResize\n ]);\n\n useEffect(() => {\n if (suggestionMenuButton && isGeneratingResponse.current) {\n announcePolite({ message: t('response_generated') });\n isGeneratingResponse.current = false;\n\n const activeElement = getActiveElement();\n if (activeElement && activeElement === document.body) suggestionMenuButton.focus();\n }\n }, [suggestionMenuButton]);\n\n useEffect(() => {\n if (messages.length === 0 || loading || error) {\n setShowScrollToBottom(false);\n }\n }, [messages.length, loading, error]);\n\n /** Supports Enter key to enter a message and focus first focusable element inside it */\n useEffect(() => {\n if (!focusedInMessage) return;\n const focusables = getFocusables(elementRef);\n focusables[0]?.focus();\n }, [focusedInMessage, elementRef.current]);\n\n /**\n * While inside a message, stop ArrowUp/Down from bubbling to conversationRef\n * so useArrows does not navigate between message rows.\n */\n useEffect(() => {\n const el = elementRef.current;\n if (!focusedInMessage || !el) return;\n const blockArrows = (e: globalThis.KeyboardEvent) => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.stopPropagation();\n }\n };\n el.addEventListener('keydown', blockArrows);\n return () => el.removeEventListener('keydown', blockArrows);\n }, [focusedInMessage]);\n\n useArrows(\n conversationRef,\n {\n cycle: true,\n selector: ':scope > li',\n dir: 'up-down',\n allowTabFocus: true,\n initialFocusElement: initialFocusedElementRef.current\n },\n [messages, initialFocusedElementRef.current]\n );\n\n useFocusTrap(trapRef, true, [focusedInMessage]);\n\n useOuterEvent(\n 'mousedown',\n [focusedInMessage ? elementRef.current : conversationRef.current],\n () => {\n setFocusedInMessage(false);\n trapRef.current = null;\n focusInMessageListRef.current = false;\n }\n );\n\n const { push } = useToaster();\n\n const onSpeechToTextButtonClick = useCallback(() => {\n if (active) {\n stop();\n } else {\n start();\n }\n }, [active, stop, start]);\n\n const onFileChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) {\n const newFiles = Array.from(e.target.files);\n onAddAttachment?.(newFiles);\n }\n };\n\n const getGridColumns = () => {\n const multiCol = 'repeat(auto-fit, minmax(calc(100% / 4 - 1rem), 1fr))';\n const singleCol = '1fr';\n\n return !isSmallOrAbove ? singleCol : multiCol;\n };\n\n useEffect(() => {\n if (voiceToTextError) {\n push({ content: voiceToTextError });\n }\n }, [voiceToTextError]);\n\n const genAIFooter = (\n <Flex container={{ direction: 'column' }} as={StyledGenAIFooter}>\n <StyledComposerWrapper\n focused={focused}\n hasQuestionnaire={!!questionnaireData && !questionnaireDismissed}\n onFocus={() => setFocused(true)}\n onBlur={e => {\n if (!(e.relatedTarget instanceof Node) || !e.currentTarget.contains(e.relatedTarget)) {\n setFocused(false);\n }\n }}\n >\n {questionnaireData && !questionnaireDismissed && (\n <Questionnaire\n key={questionnaireKey}\n data={questionnaireData}\n onChange={handleFormChange}\n onCancel={handleFormCancel}\n />\n )}\n <FormField label={t('message_pega_gen_ai_coach')} labelHidden labelFor={composerId}>\n <StyledGenAIFormControl\n focused={(!questionnaireData || questionnaireDismissed) && focused}\n >\n <Flex container={{ direction: 'column', gap: 0.25 }}>\n <StyledGenAITextArea\n id={composerId}\n ref={textAreaRef}\n value={interimMessage ? `${message}${interimMessage}` : message}\n placeholder={t('write_message')}\n onKeyDown={handleEnterKeyDown}\n onChange={handleTextAreaChange}\n onFocus={() => {\n if (active) stop();\n }}\n autoResize\n />\n\n <Flex\n container={{\n direction: 'row',\n justify: 'between',\n gap: 1,\n pad: [undefined, 1, 1, 1]\n }}\n >\n <Flex container={{ alignItems: 'center' }}>\n {!(messages.length === 0 && suggestionCardsView) && suggestions && (\n <MenuButton\n text={t('suggestions')}\n variant='simple'\n icon='chat-typing'\n iconOnly\n as={StyledMenuSuggestions}\n menu={{\n items: suggestions,\n onItemClick: id => {\n const selected = menuHelpers.getItem(suggestions, id);\n if (selected && !selected.onClick) {\n setMessage(selected.primary);\n textAreaRef.current?.focus();\n }\n }\n }}\n showArrow={false}\n />\n )}\n {voiceToTextProps?.enableDictation && supported && (\n <SpeechToTextButton active={active} onClick={onSpeechToTextButtonClick} />\n )}\n\n {onAddAttachment && (\n <>\n <Button\n icon\n onClick={() => {\n if (fileUploadInputRef.current) {\n fileUploadInputRef.current.value = '';\n }\n fileUploadInputRef.current?.click();\n }}\n variant='simple'\n label={t('add_attachment')}\n >\n <Icon name='paper-clip' />\n </Button>\n <StyledInput\n type='file'\n ref={fileUploadInputRef}\n onChange={onFileChange}\n multiple={false}\n data-testid={testIds.attachments}\n />\n </>\n )}\n </Flex>\n\n {(() => {\n if (active && pendingResult.current) {\n return (\n <Flex\n container={{\n gap: 1,\n justify: 'end',\n alignItems: 'center',\n pad: 1\n }}\n >\n {t('processing_speech')}\n <Progress placement='inline' />\n </Flex>\n );\n }\n\n const isToolConfirmation =\n latestMessage &&\n isCoachMessage(latestMessage) &&\n latestMessage.isToolConfirmation;\n\n let onStopFn: (() => void) | undefined;\n if (onStop) {\n onStopFn = onStop;\n } else if (isToolConfirmation) {\n onStopFn = stopProcess;\n }\n\n if (onStopFn) {\n return (\n <StyledStopGeneratingButton\n variant='primary'\n icon\n label={t('stop')}\n aria-label={t('stop')}\n onClick={() => {\n textAreaRef.current?.focus();\n onStopFn?.();\n }}\n >\n <Icon name='square-solid' />\n </StyledStopGeneratingButton>\n );\n }\n\n const isLoading =\n latestMessage &&\n isCoachMessage(latestMessage) &&\n latestMessage.loading &&\n !latestMessage.error;\n\n const sendButton = (\n <StyledSendButton\n variant='primary'\n onClick={isCreatingConversation ? undefined : handleSendMessage}\n icon\n label={t('send')}\n aria-label={t('send_message')}\n >\n <Icon name='send-solid' />\n </StyledSendButton>\n );\n\n if (isLoading) {\n if (isCreatingConversation) {\n return sendButton;\n }\n return (\n <Flex\n container={{\n gap: 1,\n justify: 'end',\n alignItems: 'center',\n pad: 1\n }}\n >\n {t('generating_response')}\n <Progress placement='inline' />\n </Flex>\n );\n }\n\n return sendButton;\n })()}\n </Flex>\n </Flex>\n </StyledGenAIFormControl>\n </FormField>\n </StyledComposerWrapper>\n\n {attachments && attachments.length > 0 && (\n <>\n <Flex\n as={FileList}\n type='item'\n aria-label={`${t('attachments')}`}\n items={attachments}\n container={{ pad: [1, 0] }}\n />\n\n {attachmentsError && (\n <Flex container={{ gap: 1, alignItems: 'center' }} as={StyledErrorContainer}>\n <Icon name='warn-solid' />\n <VisuallyHiddenText>{`${t('error')} `}</VisuallyHiddenText>\n\n {attachmentsError}\n </Flex>\n )}\n </>\n )}\n\n <Flex container={{ justify: 'center' }}>\n <StyledDisclaimerText inFullPage={!condition}>{t('ai_disclaimer')}</StyledDisclaimerText>\n </Flex>\n </Flex>\n );\n\n const isCompact =\n variant.placement === 'fullpage' &&\n !fullScreen &&\n !isInLandingPageUtilities &&\n messages.length === 0;\n\n const fullPageAndInitialScreen =\n (fullScreen || (variant.placement === 'fullpage' && !isInLandingPageUtilities)) &&\n messages.length === 0;\n\n const renderTextArea = fullPageAndInitialScreen ? null : genAIFooter;\n\n const GenAICoachElement = (\n <>\n {((isInUtilities(variant) && variant.state !== 'minimized') || !isInUtilities(variant)) && (\n <Flex container={{ direction: 'column' }} as={StyledFlexWrapper}>\n {caseWorkflow && <CaseWorkflow {...caseWorkflow} />}\n\n <Flex\n as={StyledMessagesContainer}\n ref={setMessageContainerRef}\n withSuggestionCards={\n !loading && !error && messages.length === 0 && !!suggestionCardsView\n }\n container={\n loading || error\n ? { direction: 'column', pad: [0, 2], justify: 'center' }\n : { direction: 'column', pad: [0, 2] }\n }\n {...(!loading && !error && messages.length === 0 && suggestionCardsView\n ? {}\n : { item: { grow: 1 } })}\n onScroll={updateScrollStateOnScrollEvent}\n >\n {loading || error ? (\n <Flex container={{ justify: 'center', alignItems: 'center' }}>\n {loading ? (\n <Progress\n variant='ring'\n placement='block'\n message={typeof loading === 'string' ? loading : t('loading')}\n />\n ) : (\n <ErrorState message={error} />\n )}\n </Flex>\n ) : (\n <>\n {messages.length === 0 ? (\n <Flex\n as={StyledInitialMessageContainer}\n container={{\n justify: suggestionCardsView ? undefined : 'center',\n direction: 'column',\n alignItems: 'center',\n gap: 4,\n pad: [6, 0, 2, 0]\n }}\n {...(suggestionCardsView ? {} : { item: { grow: 1 } })}\n >\n {((isInUtilities(variant) && variant.state === 'maximized') ||\n !isInUtilities(variant)) &&\n showSalutation && (\n <Flex\n container={{\n direction: 'column',\n alignItems: 'center',\n gap: 2,\n pad: [0, 2]\n }}\n >\n <AgentIcon />\n <Text variant='h3' as={StyledSalutation}>\n {salutation ?? t('welcome_text')}\n </Text>\n </Flex>\n )}\n\n {initialSuggestedMessages && initialSuggestedMessages.length > 0 && (\n <Grid\n as={StyledInitialMessageGrid}\n container={{ cols: getGridColumns(), gap: 1.5 }}\n >\n {initialSuggestedMessages.map(initialSuggestedMessage => (\n <InitialSuggestedMessage\n {...initialSuggestedMessage}\n onSend={initialMessage => {\n if (guidedMode) {\n onSend({\n id: initialMessage.id,\n message: initialMessage.message\n });\n } else {\n setMessage(initialMessage.message ?? '');\n }\n isUserTriggered.current = true;\n textAreaRef.current?.focus();\n }}\n testId={initialSuggestedMessage.id}\n />\n ))}\n </Grid>\n )}\n\n {fullPageAndInitialScreen && !guidedMode && !suggestionCardsView && genAIFooter}\n </Flex>\n ) : (\n <Flex\n as={StyledMessagesList}\n ref={conversationRef}\n aria-label={`${t('conversation')} ${t('view')}`}\n container={{ direction: 'column' }}\n onMouseDown={(e: MouseEvent) => {\n mouseTriggeredFocusRef.current = true;\n const target = e.target instanceof Element ? e.target : null;\n const clickedMessage = getMessageContainingElement(target);\n\n if (clickedMessage) {\n lastFocusedMessageRef.current = clickedMessage;\n }\n }}\n onMouseUp={() => {\n mouseTriggeredFocusRef.current = false;\n }}\n onFocus={() => {\n if (mouseTriggeredFocusRef.current) {\n mouseTriggeredFocusRef.current = false;\n focusInMessageListRef.current = true;\n return;\n }\n\n if (!focusInMessageListRef.current) {\n focusInMessageListRef.current = true;\n const target =\n lastFocusedMessageRef.current ??\n (conversationRef.current?.lastElementChild instanceof HTMLElement\n ? conversationRef.current.lastElementChild\n : null);\n target?.focus();\n }\n focusInMessageListRef.current = true;\n }}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n if (focusedInMessage) return;\n elementRef.current =\n getMessageContainingElement(document.activeElement) ?? null;\n lastFocusedMessageRef.current = elementRef.current;\n } else if (e.key === 'Enter' && !focusedInMessage) {\n const activeMessageElement = Array.from(messageEls.values()).find(\n el => el === document.activeElement\n );\n elementRef.current =\n getMessageContainingElement(document.activeElement) ?? null;\n initialFocusedElementRef.current = elementRef.current;\n if (\n activeMessageElement &&\n getFocusables(activeMessageElement).length > 0\n ) {\n e.preventDefault();\n trapRef.current = elementRef.current;\n setFocusedInMessage(true);\n }\n } else if (e.key === 'Escape' && focusedInMessage) {\n e.preventDefault();\n trapRef.current = null;\n setFocusedInMessage(false);\n elementRef.current?.focus();\n } else if (e.key === 'Tab') {\n if (focusedInMessage) return;\n e.preventDefault();\n setLastFocusableElement();\n if (e.shiftKey) {\n if (\n !condition &&\n conversationHistory &&\n conversationHistory.selectedItemId\n ) {\n const selectedId = historyViewRef.current?.querySelector<HTMLLIElement>(\n `li[id=\"${conversationHistory.selectedItemId}\"]`\n );\n\n if (selectedId) {\n selectedId.focus();\n e.preventDefault();\n }\n } else {\n const prevElement =\n conversationRef.current?.parentElement?.parentElement\n ?.previousElementSibling;\n if (prevElement) {\n const focusables = getFocusables(prevElement);\n if (focusables.length) {\n e.preventDefault();\n focusables[focusables.length - 1].focus();\n }\n }\n }\n } else {\n if (scrollButtonRef.current) {\n scrollButtonRef.current.focus();\n return;\n }\n const nextElement =\n conversationRef.current?.parentElement?.nextElementSibling;\n if (nextElement) {\n const focusables = getFocusables(nextElement);\n if (focusables.length) {\n focusables[0].focus();\n }\n }\n }\n }\n }}\n >\n {messages.map(item => {\n const messageProps = isCoachMessage(item)\n ? {\n ...item,\n suggestions:\n messages.findLast(messageItem => isCoachMessage(messageItem))?.id ===\n item.id\n ? item.suggestions\n : undefined,\n onSend,\n onSubmit: item.isToolConfirmation\n ? (tools: Tool[]) => {\n onSend({\n ...item,\n message: typeof item.message === 'string' ? item.message : '',\n tools\n });\n }\n : undefined\n }\n : item;\n\n return (\n <GenAIMessage\n {...messageProps}\n ref={getMessageCbRef(item.id)}\n testId={item.id}\n announceInteraction={!focusInMessageListRef.current}\n onAnimationCursorUpdate={animatedTillCursor => {\n if (isCoachMessage(item)) {\n setAnimationInitialCursorPos(animatedTillCursor);\n }\n }}\n {...(prevFullScreen !== fullScreen ? { animationInitialCursorPos } : {})}\n />\n );\n })}\n </Flex>\n )}\n </>\n )}\n </Flex>\n\n {showScrollToBottom && (\n <StyledScrollButton\n ref={scrollButtonRef}\n icon\n onClick={handleScrollToBottomClick}\n ariaLabel={t('scroll_to_latest_message')}\n onKeyDown={focusLastMessageLi}\n >\n <Icon name='caret-down' />\n </StyledScrollButton>\n )}\n\n {!loading && messages.length === 0 && suggestionCardsView ? (\n <>\n {((isInUtilities(variant) && variant.state !== 'minimized') ||\n !isInUtilities(variant)) &&\n !guidedMode && (\n <StyledStickyComposer>\n <Flex\n container={{ direction: 'column' }}\n as={StyledInputContainer}\n ref={setInputContainerRef}\n >\n <StyledComposerSection>{genAIFooter}</StyledComposerSection>\n </Flex>\n </StyledStickyComposer>\n )}\n <Flex container={{ direction: 'column' }} as={StyledSuggestionCardsBottomHalf}>\n <StyledSuggestionCardsView>{suggestionCardsView}</StyledSuggestionCardsView>\n </Flex>\n </>\n ) : (\n ((isInUtilities(variant) && variant.state !== 'minimized') ||\n !isInUtilities(variant)) &&\n !loading && (\n <Flex\n container={{ direction: 'column' }}\n as={StyledInputContainer}\n ref={setInputContainerRef}\n >\n <StyledComposerSection>\n {guidedMode && questionnaireData && !questionnaireDismissed && (\n <Questionnaire\n key={questionnaireKey}\n data={questionnaireData}\n onChange={handleFormChange}\n onCancel={handleFormCancel}\n />\n )}\n {guidedMode ? (\n <>\n {suggestions && messages.length > 0 && (\n <>\n {latestMessage &&\n isCoachMessage(latestMessage) &&\n latestMessage.loading ? (\n <Flex\n container={{\n gap: 1,\n justify: 'center',\n alignItems: 'center',\n pad: 1\n }}\n >\n {t('generating_response')}\n <Progress\n placement='inline'\n focusOnVisible\n message={t('generating_response')}\n />\n </Flex>\n ) : (\n <ThemeOverride\n theme={{\n components: {\n button: {\n color: theme.base.palette.ai,\n 'secondary-color': theme.base.palette.ai,\n 'secondary-fill-style': 'outline'\n }\n }\n }}\n >\n <MenuButton\n as={StyledGuidedSuggestions}\n text={t('ask_coach', [selectedCoach ?? ''])}\n variant='primary'\n icon='polaris-solid'\n ref={setSuggestionMenuButton}\n menu={{\n items: suggestions,\n onItemClick: id => {\n const selected = menuHelpers.getItem(suggestions, id);\n if (selected && !selected.onClick) {\n onSend({\n id: selected.id,\n message: selected.primary\n });\n }\n }\n }}\n />\n </ThemeOverride>\n )}\n\n <Flex container={{ justify: 'center' }}>\n <StyledDisclaimerText inFullPage={!condition}>\n {t('ai_disclaimer')}\n </StyledDisclaimerText>\n </Flex>\n </>\n )}\n </>\n ) : (\n renderTextArea\n )}\n </StyledComposerSection>\n </Flex>\n )\n )}\n </Flex>\n )}\n </>\n );\n\n useEffect(() => {\n if (focusTextArea.current && !conversationHistory && textAreaRef.current) {\n textAreaRef.current.focus();\n focusTextArea.current = false;\n }\n }, [conversationHistory, focusTextArea.current]);\n\n useEffect(() => {\n if (attachmentsError) {\n announcePolite({\n message: attachmentsError\n });\n } else if (attachments && attachments.length > 0) {\n announcePolite({\n message: t('attachment_added')\n });\n attachmentsAdded.current = true;\n } else if (attachmentsAdded.current && attachments && attachments.length === 0) {\n textAreaRef.current?.focus();\n attachmentsAdded.current = false;\n }\n }, [attachments, attachmentsError]);\n\n const historyView = conversationHistory && (\n <ConversationHistory\n testId={testIds.root}\n {...conversationHistory}\n onItemClick={conversationId => {\n if (condition) {\n focusTextArea.current = true;\n } else {\n textAreaRef.current?.focus();\n }\n\n conversationHistory.onItemClick?.(conversationId);\n }}\n onDismiss={() => {\n focusTextArea.current = true;\n conversationHistory.onDismiss();\n }}\n inFullPage={!condition}\n ref={historyViewRef}\n />\n );\n\n return (\n <Flex\n {...restProps}\n container={{ direction: 'column' }}\n as={StyledGenAICoachContainer}\n data-testid={testIds.root}\n variant={variant}\n fullScreen={fullScreen}\n isCompact={isCompact}\n isPortalAgent={isPortalAgent}\n ref={genAICoachRef}\n >\n <Flex container={{ justify: 'between', alignItems: 'center', pad: [1.5, 2, 0.5] }}>\n {headerContent}\n </Flex>\n\n {condition ? (\n <>{conversationHistory ? historyView : GenAICoachElement}</>\n ) : (\n <Grid\n container={{ gap: 0.5, cols: '2fr 3fr' }}\n as={StyledGridContainer}\n conversationHistory={!!conversationHistory}\n >\n {historyView}\n {GenAICoachElement}\n </Grid>\n )}\n\n {lightboxPreviewProps && <Lightbox {...lightboxPreviewProps} />}\n </Flex>\n );\n};\n\nconst GenAICoach = (props: GenAICoachProps) => (\n <Toaster>\n <StyledFullscreenWrapper>\n <GenAICoachContent {...props} />\n </StyledFullscreenWrapper>\n </Toaster>\n);\n\nexport default withTestIds(GenAICoach, getGenAICoachTestIds);\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pega/cosmos-react-work",
|
|
3
|
-
"version": "9.0.0-build.27.
|
|
3
|
+
"version": "9.0.0-build.27.2",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"author": "Pegasystems",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"build": "tsc -b tsconfig.build.json"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@pega/cosmos-react-core": "9.0.0-build.27.
|
|
18
|
-
"@pega/cosmos-react-rte": "9.0.0-build.27.
|
|
17
|
+
"@pega/cosmos-react-core": "9.0.0-build.27.2",
|
|
18
|
+
"@pega/cosmos-react-rte": "9.0.0-build.27.2",
|
|
19
19
|
"@types/react": "^17.0.62 || ^18.3.3",
|
|
20
20
|
"@types/react-dom": "^17.0.20 || ^18.3.0",
|
|
21
21
|
"polished": "^4.1.0",
|