@elliemae/ds-chat 1.55.0-next.4 → 1.55.0-next.8

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.
Files changed (29) hide show
  1. package/cjs/parts/bubble/styled.js +1 -1
  2. package/cjs/parts/bubble/styled.js.map +1 -1
  3. package/cjs/parts/chat-container/ChatContainer.js +1 -1
  4. package/cjs/parts/chat-container/ChatContainer.js.map +1 -1
  5. package/cjs/parts/chat-container/config/useValidateProps.js +1 -1
  6. package/cjs/parts/chat-container/config/useValidateProps.js.map +1 -1
  7. package/cjs/parts/chat-container/props.js +4 -4
  8. package/cjs/parts/chat-container/props.js.map +1 -1
  9. package/cjs/parts/chat-container-messages-list/ChatContainerMessagesList.js +1 -1
  10. package/cjs/parts/chat-container-messages-list/ChatContainerMessagesList.js.map +1 -1
  11. package/cjs/parts/chat-container-messages-list/config/useValidateProps.js +1 -1
  12. package/cjs/parts/chat-container-messages-list/config/useValidateProps.js.map +1 -1
  13. package/cjs/parts/chat-container-messages-list/props.js +1 -1
  14. package/cjs/parts/chat-container-messages-list/props.js.map +1 -1
  15. package/esm/parts/bubble/styled.js +1 -1
  16. package/esm/parts/bubble/styled.js.map +1 -1
  17. package/esm/parts/chat-container/ChatContainer.js +1 -1
  18. package/esm/parts/chat-container/ChatContainer.js.map +1 -1
  19. package/esm/parts/chat-container/config/useValidateProps.js +2 -2
  20. package/esm/parts/chat-container/config/useValidateProps.js.map +1 -1
  21. package/esm/parts/chat-container/props.js +4 -4
  22. package/esm/parts/chat-container/props.js.map +1 -1
  23. package/esm/parts/chat-container-messages-list/ChatContainerMessagesList.js +1 -1
  24. package/esm/parts/chat-container-messages-list/ChatContainerMessagesList.js.map +1 -1
  25. package/esm/parts/chat-container-messages-list/config/useValidateProps.js +2 -2
  26. package/esm/parts/chat-container-messages-list/config/useValidateProps.js.map +1 -1
  27. package/esm/parts/chat-container-messages-list/props.js +1 -1
  28. package/esm/parts/chat-container-messages-list/props.js.map +1 -1
  29. package/package.json +5 -5
@@ -32,7 +32,7 @@ var StyledTitleRightBubble = /*#__PURE__*/styled__default['default'](dsGrid.Grid
32
32
  });
33
33
  var StyleBodyWrapper = /*#__PURE__*/styled__default['default'].div.withConfig({
34
34
  componentId: "sc-fe8e9o-4"
35
- })(["font-size:13px;font-weight:400;line-height:15px;min-height:32px;padding:0px 10px 8px 10px;"]);
35
+ })(["font-size:13px;font-weight:400;line-height:15px;min-height:18px;padding:0px 10px 8px 10px;"]);
36
36
  var StyleErrorMessage = /*#__PURE__*/styled__default['default'].div.withConfig({
37
37
  componentId: "sc-fe8e9o-5"
38
38
  })(["font-size:12px;font-weight:400;padding-top:", ";padding-bottom:", ";color:", ";align-items:flex-end;justify-content:center;text-align:right;line-height:15px;svg{fill:", ";}a{font-size:12px;color:", ";}.em-ds-icon{margin-left:8px;}"], function (props) {
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../../../src/parts/bubble/styled.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport styled from 'styled-components';\nimport { Grid } from '@elliemae/ds-grid';\nimport { BUBBLE_TYPES } from './props';\n\n// Bubble WRAPPER\nexport const StyledWrapper = styled.div<any>`\n min-width: 224px;\n border-radius: 10px;\n`;\n\n// Bubble HEADER\nexport const StyledTitleBubble = styled(Grid)`\n padding-top: 6px;\n padding-left: 10px;\n padding-right: 10px;\n padding-bottom: 4px;\n`;\n\nexport const StyledTitleLeftBubble = styled(Grid)`\n font-size: 13px;\n font-weight: 600;\n`;\nexport const StyledTitleRightBubble = styled(Grid)`\n font-size: 13px;\n font-weight: 400;\n color: ${(props) => (props.type === BUBBLE_TYPES.SENDER ? '#FFF' : '#657489')};\n`;\n\nexport const StyleBodyWrapper = styled.div<any>`\n font-size: 13px;\n font-weight: 400;\n line-height: 15px;\n min-height: 32px;\n padding: 0px 10px 8px 10px;\n`;\n\nexport const StyleErrorMessage = styled.div<any>`\n font-size: 12px;\n font-weight: 400;\n padding-top: ${(props) => props.theme.space.xxxs};\n padding-bottom: ${(props) => props.theme.space.xxxs};\n color: ${(props) => props.theme.colors.danger[900]};\n align-items: flex-end;\n justify-content: center;\n text-align: right;\n line-height: 15px;\n svg {\n fill: ${(props) => props.theme.colors.danger[900]};\n }\n a {\n font-size: 12px;\n color: ${(props) => props.theme.colors.danger[900]};\n }\n .em-ds-icon {\n margin-left: 8px;\n }\n`;\n\nexport const StyleHelpMessage = styled(StyleErrorMessage)`\n font-size: 12px;\n line-height: 15px;\n color: ${(props) => props.theme.colors.neutral[500]};\n svg {\n fill: ${(props) => props.theme.colors.danger[500]};\n }\n a {\n font-size: 12px;\n color: ${(props) => props.theme.colors.danger[500]};\n }\n`;\n\n// bubble sender/ recipient\nexport const StyledBubbleArrow = styled.div<any>`\n display: block;\n content: '';\n position: absolute;\n bottom: 10px;\n height: 15px;\n`;\n\nexport const StyledColoredBubble = styled.div<any>`\n min-width: 224px;\n border-radius: 10px;\n position: relative;\n\n ${(props) =>\n props.type === BUBBLE_TYPES.SENDER\n ? `\n border: 1px solid ${props.theme.colors.brand['700']};\n background: ${props.theme.colors.brand[600]};\n color: ${props.theme.colors.neutral['000']};\n ${StyledBubbleArrow}{ \n right: -9px;\n bottom: 6px;\n svg{\n fill: ${props.theme.colors.brand[600]};\n }\n }\n\n a {\n color: #FFF;\n }\n\n `\n : `\n box-shadow: 0 1px 3px 0 rgba(53,60,70,0.80);\n background: ${props.theme.colors.neutral['000']};\n color: ${props.theme.colors.neutral[700]};\n\n ${StyledBubbleArrow}{ \n left: -11px;\n bottom: 6px;\n svg{\n fill: ${props.theme.colors.neutral['000']};\n }\n }\n\n `}\n`;\n"],"names":["StyledWrapper","styled","div","StyledTitleBubble","Grid","StyledTitleLeftBubble","StyledTitleRightBubble","props","type","BUBBLE_TYPES","SENDER","StyleBodyWrapper","StyleErrorMessage","theme","space","xxxs","colors","danger","StyleHelpMessage","neutral","StyledBubbleArrow","StyledColoredBubble","brand"],"mappings":";;;;;;;;;;;;;;;AAAA;;IAMaA,aAAa,gBAAGC,0BAAM,CAACC,GAAV;AAAA;AAAA;;IAMbC,iBAAiB,gBAAGF,0BAAM,CAACG,WAAD,CAAT;AAAA;AAAA;IAOjBC,qBAAqB,gBAAGJ,0BAAM,CAACG,WAAD,CAAT;AAAA;AAAA;IAIrBE,sBAAsB,gBAAGL,0BAAM,CAACG,WAAD,CAAT;AAAA;AAAA,mDAGxB,UAACG,KAAD;AAAA,SAAYA,KAAK,CAACC,IAAN,KAAeC,+BAAY,CAACC,MAA5B,GAAqC,MAArC,GAA8C,SAA1D;AAAA,CAHwB;IAMtBC,gBAAgB,gBAAGV,0BAAM,CAACC,GAAV;AAAA;AAAA;IAQhBU,iBAAiB,gBAAGX,0BAAM,CAACC,GAAV;AAAA;AAAA,+OAGb,UAACK,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYC,KAAZ,CAAkBC,IAA7B;AAAA,CAHa,EAIV,UAACR,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYC,KAAZ,CAAkBC,IAA7B;AAAA,CAJU,EAKnB,UAACR,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CALmB,EAWlB,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CAXkB,EAejB,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CAfiB;IAsBjBC,gBAAgB,gBAAGjB,0BAAM,CAACW,iBAAD,CAAT;AAAA;AAAA,gGAGlB,UAACL,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,GAA3B,CAAX;AAAA,CAHkB,EAKjB,UAACZ,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CALiB,EAShB,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CATgB;;IAchBG,iBAAiB,gBAAGnB,0BAAM,CAACC,GAAV;AAAA;AAAA;IAQjBmB,mBAAmB,gBAAGpB,0BAAM,CAACC,GAAV;AAAA;AAAA,kEAK5B,UAACK,KAAD;AAAA,SACAA,KAAK,CAACC,IAAN,KAAeC,+BAAY,CAACC,MAA5B,yCAEwBH,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBM,KAAnB,CAAyB,KAAzB,CAFxB,oCAGkBf,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBM,KAAnB,CAAyB,GAAzB,CAHlB,+BAIaf,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,KAA3B,CAJb,wBAKMC,iBALN,wHASoBb,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBM,KAAnB,CAAyB,GAAzB,CATpB,mLAoBkBf,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,KAA3B,CApBlB,+BAqBaZ,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,GAA3B,CArBb,0BAuBMC,iBAvBN,wHA2BoBb,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,KAA3B,CA3BpB,wCADA;AAAA,CAL4B;;;;;;;;;;;;"}
1
+ {"version":3,"file":"styled.js","sources":["../../../../src/parts/bubble/styled.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport styled from 'styled-components';\nimport { Grid } from '@elliemae/ds-grid';\nimport { BUBBLE_TYPES } from './props';\n\n// Bubble WRAPPER\nexport const StyledWrapper = styled.div<any>`\n min-width: 224px;\n border-radius: 10px;\n`;\n\n// Bubble HEADER\nexport const StyledTitleBubble = styled(Grid)`\n padding-top: 6px;\n padding-left: 10px;\n padding-right: 10px;\n padding-bottom: 4px;\n`;\n\nexport const StyledTitleLeftBubble = styled(Grid)`\n font-size: 13px;\n font-weight: 600;\n`;\nexport const StyledTitleRightBubble = styled(Grid)`\n font-size: 13px;\n font-weight: 400;\n color: ${(props) => (props.type === BUBBLE_TYPES.SENDER ? '#FFF' : '#657489')};\n`;\n\nexport const StyleBodyWrapper = styled.div<any>`\n font-size: 13px;\n font-weight: 400;\n line-height: 15px;\n min-height: 18px;\n padding: 0px 10px 8px 10px;\n`;\n\nexport const StyleErrorMessage = styled.div<any>`\n font-size: 12px;\n font-weight: 400;\n padding-top: ${(props) => props.theme.space.xxxs};\n padding-bottom: ${(props) => props.theme.space.xxxs};\n color: ${(props) => props.theme.colors.danger[900]};\n align-items: flex-end;\n justify-content: center;\n text-align: right;\n line-height: 15px;\n svg {\n fill: ${(props) => props.theme.colors.danger[900]};\n }\n a {\n font-size: 12px;\n color: ${(props) => props.theme.colors.danger[900]};\n }\n .em-ds-icon {\n margin-left: 8px;\n }\n`;\n\nexport const StyleHelpMessage = styled(StyleErrorMessage)`\n font-size: 12px;\n line-height: 15px;\n color: ${(props) => props.theme.colors.neutral[500]};\n svg {\n fill: ${(props) => props.theme.colors.danger[500]};\n }\n a {\n font-size: 12px;\n color: ${(props) => props.theme.colors.danger[500]};\n }\n`;\n\n// bubble sender/ recipient\nexport const StyledBubbleArrow = styled.div<any>`\n display: block;\n content: '';\n position: absolute;\n bottom: 10px;\n height: 15px;\n`;\n\nexport const StyledColoredBubble = styled.div<any>`\n min-width: 224px;\n border-radius: 10px;\n position: relative;\n\n ${(props) =>\n props.type === BUBBLE_TYPES.SENDER\n ? `\n border: 1px solid ${props.theme.colors.brand['700']};\n background: ${props.theme.colors.brand[600]};\n color: ${props.theme.colors.neutral['000']};\n ${StyledBubbleArrow}{ \n right: -9px;\n bottom: 6px;\n svg{\n fill: ${props.theme.colors.brand[600]};\n }\n }\n\n a {\n color: #FFF;\n }\n\n `\n : `\n box-shadow: 0 1px 3px 0 rgba(53,60,70,0.80);\n background: ${props.theme.colors.neutral['000']};\n color: ${props.theme.colors.neutral[700]};\n\n ${StyledBubbleArrow}{ \n left: -11px;\n bottom: 6px;\n svg{\n fill: ${props.theme.colors.neutral['000']};\n }\n }\n\n `}\n`;\n"],"names":["StyledWrapper","styled","div","StyledTitleBubble","Grid","StyledTitleLeftBubble","StyledTitleRightBubble","props","type","BUBBLE_TYPES","SENDER","StyleBodyWrapper","StyleErrorMessage","theme","space","xxxs","colors","danger","StyleHelpMessage","neutral","StyledBubbleArrow","StyledColoredBubble","brand"],"mappings":";;;;;;;;;;;;;;;AAAA;;IAMaA,aAAa,gBAAGC,0BAAM,CAACC,GAAV;AAAA;AAAA;;IAMbC,iBAAiB,gBAAGF,0BAAM,CAACG,WAAD,CAAT;AAAA;AAAA;IAOjBC,qBAAqB,gBAAGJ,0BAAM,CAACG,WAAD,CAAT;AAAA;AAAA;IAIrBE,sBAAsB,gBAAGL,0BAAM,CAACG,WAAD,CAAT;AAAA;AAAA,mDAGxB,UAACG,KAAD;AAAA,SAAYA,KAAK,CAACC,IAAN,KAAeC,+BAAY,CAACC,MAA5B,GAAqC,MAArC,GAA8C,SAA1D;AAAA,CAHwB;IAMtBC,gBAAgB,gBAAGV,0BAAM,CAACC,GAAV;AAAA;AAAA;IAQhBU,iBAAiB,gBAAGX,0BAAM,CAACC,GAAV;AAAA;AAAA,+OAGb,UAACK,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYC,KAAZ,CAAkBC,IAA7B;AAAA,CAHa,EAIV,UAACR,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYC,KAAZ,CAAkBC,IAA7B;AAAA,CAJU,EAKnB,UAACR,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CALmB,EAWlB,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CAXkB,EAejB,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CAfiB;IAsBjBC,gBAAgB,gBAAGjB,0BAAM,CAACW,iBAAD,CAAT;AAAA;AAAA,gGAGlB,UAACL,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,GAA3B,CAAX;AAAA,CAHkB,EAKjB,UAACZ,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CALiB,EAShB,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CATgB;;IAchBG,iBAAiB,gBAAGnB,0BAAM,CAACC,GAAV;AAAA;AAAA;IAQjBmB,mBAAmB,gBAAGpB,0BAAM,CAACC,GAAV;AAAA;AAAA,kEAK5B,UAACK,KAAD;AAAA,SACAA,KAAK,CAACC,IAAN,KAAeC,+BAAY,CAACC,MAA5B,yCAEwBH,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBM,KAAnB,CAAyB,KAAzB,CAFxB,oCAGkBf,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBM,KAAnB,CAAyB,GAAzB,CAHlB,+BAIaf,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,KAA3B,CAJb,wBAKMC,iBALN,wHASoBb,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBM,KAAnB,CAAyB,GAAzB,CATpB,mLAoBkBf,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,KAA3B,CApBlB,+BAqBaZ,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,GAA3B,CArBb,0BAuBMC,iBAvBN,wHA2BoBb,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,KAA3B,CA3BpB,wCADA;AAAA,CAL4B;;;;;;;;;;;;"}
@@ -54,7 +54,7 @@ var DSBanner__default = /*#__PURE__*/_interopDefaultLegacy(DSBanner);
54
54
  var ChatContainer = function ChatContainer(props) {
55
55
  var _containerRef$current;
56
56
 
57
- parts_chatContainer_config_useValidateProps.useValidateProps(props, ChatContainerWithSchema.toJSON());
57
+ parts_chatContainer_config_useValidateProps.useValidateProps(props, ChatContainerWithSchema.toTypescript());
58
58
  var sendingText = props.sendingText,
59
59
  sendingMessages = props.sendingMessages,
60
60
  bannerPosition = props.bannerPosition,
@@ -1 +1 @@
1
- {"version":3,"file":"ChatContainer.js","sources":["../../../../src/parts/chat-container/ChatContainer.tsx"],"sourcesContent":["/* eslint-disable complexity */\nimport React from 'react';\nimport { noop } from 'lodash';\nimport { describe } from 'react-desc';\nimport DSIndeterminateProgressIndicator from '@elliemae/ds-basic/IndeterminateProgressIndicator';\nimport DSBanner, { BANNER_TYPES } from '@elliemae/ds-banner';\nimport { ChatComposer } from '../chat-composer';\nimport { ChatContainerMessagesList } from '../chat-container-messages-list';\nimport { ChatContainerProps, defaultProps, containerProps } from './props';\nimport { StyledChatContainerContent, StyledIndicatorContainer, MobileStyledChatContainerContent } from './styled';\nimport { useValidateProps } from './config/useValidateProps';\n\nconst ChatContainer = (props: ChatContainerProps): JSX.Element => {\n useValidateProps(props, ChatContainerWithSchema.toJSON());\n\n const {\n sendingText,\n sendingMessages,\n bannerPosition,\n bannerProps,\n messagesListProps,\n composerProps,\n composerProps: { onResize: onComposerResize },\n actionRef,\n autoScroll,\n device,\n isLoading,\n hasMoreItems,\n getMoreMessages,\n } = props;\n\n const containerRef = React.useRef<HTMLElement>();\n const listRef = React.useRef({ scrollToIndex: noop });\n const onResize = React.useCallback(\n (height: number) => {\n if (onComposerResize) onComposerResize(height);\n if (autoScroll) {\n listRef.current.scrollToIndex(messagesListProps.messages.length - 1, {\n align: 'end',\n });\n }\n },\n [onComposerResize, messagesListProps.messages, autoScroll],\n );\n const Container = device === 'desktop' ? StyledChatContainerContent : MobileStyledChatContainerContent;\n\n return (\n <Container rows={['minmax(0, 1fr)', 'auto']} ref={containerRef} role=\"region\" aria-label=\"chat window\">\n <div style={{ position: 'relative' }}>\n <ChatContainerMessagesList\n {...messagesListProps}\n actionRef={actionRef || listRef}\n isLoading={isLoading}\n hasMoreItems={hasMoreItems}\n getMoreMessages={getMoreMessages}\n sendingMessages={sendingMessages}\n sendingText={sendingText}\n />\n {['top', 'bottom'].includes(isLoading) ? (\n <StyledIndicatorContainer isLoading={isLoading}>\n <DSIndeterminateProgressIndicator processing title=\"Loading\" />\n </StyledIndicatorContainer>\n ) : null}\n {['top', 'bottom'].includes(bannerPosition) ? (\n <StyledIndicatorContainer isLoading={bannerPosition}>\n <DSBanner\n showCloseButton\n label={bannerProps.label || 'Unread messages'}\n containerProps={{ id: 'ds-chat-banner' }}\n actionLink={{\n label: bannerProps.viewLabel || 'View',\n onClick: bannerProps.onView,\n }}\n onClose={bannerProps.onClose}\n isOpen\n type={BANNER_TYPES.INFO}\n />\n </StyledIndicatorContainer>\n ) : null}\n {sendingMessages && sendingMessages.length > 0 ? (\n <StyledIndicatorContainer isLoading=\"bottom\" linear>\n <DSIndeterminateProgressIndicator processing title=\"Loading\" lineOnly />\n </StyledIndicatorContainer>\n ) : null}\n </div>\n <ChatComposer\n {...composerProps}\n onResize={onResize}\n maxHeight={(containerRef.current?.clientHeight || 0) / 2}\n actionRef={actionRef || listRef}\n />\n </Container>\n );\n};\n\nChatContainer.propTypes = containerProps;\nChatContainer.defaultProps = defaultProps;\nconst ChatContainerWithSchema = describe(ChatContainer);\nChatContainerWithSchema.propTypes = containerProps;\n\nexport { ChatContainer, ChatContainerWithSchema };\n"],"names":["ChatContainer","props","useValidateProps","ChatContainerWithSchema","toJSON","sendingText","sendingMessages","bannerPosition","bannerProps","messagesListProps","composerProps","onComposerResize","onResize","actionRef","autoScroll","device","isLoading","hasMoreItems","getMoreMessages","containerRef","React","useRef","listRef","scrollToIndex","noop","useCallback","height","current","messages","length","align","Container","StyledChatContainerContent","MobileStyledChatContainerContent","position","ChatContainerMessagesList","includes","StyledIndicatorContainer","DSIndeterminateProgressIndicator","DSBanner","label","id","viewLabel","onClick","onView","onClose","BANNER_TYPES","INFO","ChatComposer","clientHeight","propTypes","containerProps","defaultProps","describe"],"mappings":"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"}
1
+ {"version":3,"file":"ChatContainer.js","sources":["../../../../src/parts/chat-container/ChatContainer.tsx"],"sourcesContent":["/* eslint-disable complexity */\nimport React from 'react';\nimport { noop } from 'lodash';\nimport { describe } from 'react-desc';\nimport DSIndeterminateProgressIndicator from '@elliemae/ds-basic/IndeterminateProgressIndicator';\nimport DSBanner, { BANNER_TYPES } from '@elliemae/ds-banner';\nimport { ChatComposer } from '../chat-composer';\nimport { ChatContainerMessagesList } from '../chat-container-messages-list';\nimport { ChatContainerProps, defaultProps, containerProps } from './props';\nimport { StyledChatContainerContent, StyledIndicatorContainer, MobileStyledChatContainerContent } from './styled';\nimport { useValidateProps } from './config/useValidateProps';\n\nconst ChatContainer = (props: ChatContainerProps): JSX.Element => {\n useValidateProps(props, ChatContainerWithSchema.toTypescript());\n\n const {\n sendingText,\n sendingMessages,\n bannerPosition,\n bannerProps,\n messagesListProps,\n composerProps,\n composerProps: { onResize: onComposerResize },\n actionRef,\n autoScroll,\n device,\n isLoading,\n hasMoreItems,\n getMoreMessages,\n } = props;\n\n const containerRef = React.useRef<HTMLElement>();\n const listRef = React.useRef({ scrollToIndex: noop });\n const onResize = React.useCallback(\n (height: number) => {\n if (onComposerResize) onComposerResize(height);\n if (autoScroll) {\n listRef.current.scrollToIndex(messagesListProps.messages.length - 1, {\n align: 'end',\n });\n }\n },\n [onComposerResize, messagesListProps.messages, autoScroll],\n );\n const Container = device === 'desktop' ? StyledChatContainerContent : MobileStyledChatContainerContent;\n\n return (\n <Container rows={['minmax(0, 1fr)', 'auto']} ref={containerRef} role=\"region\" aria-label=\"chat window\">\n <div style={{ position: 'relative' }}>\n <ChatContainerMessagesList\n {...messagesListProps}\n actionRef={actionRef || listRef}\n isLoading={isLoading}\n hasMoreItems={hasMoreItems}\n getMoreMessages={getMoreMessages}\n sendingMessages={sendingMessages}\n sendingText={sendingText}\n />\n {['top', 'bottom'].includes(isLoading) ? (\n <StyledIndicatorContainer isLoading={isLoading}>\n <DSIndeterminateProgressIndicator processing title=\"Loading\" />\n </StyledIndicatorContainer>\n ) : null}\n {['top', 'bottom'].includes(bannerPosition) ? (\n <StyledIndicatorContainer isLoading={bannerPosition}>\n <DSBanner\n showCloseButton\n label={bannerProps.label || 'Unread messages'}\n containerProps={{ id: 'ds-chat-banner' }}\n actionLink={{\n label: bannerProps.viewLabel || 'View',\n onClick: bannerProps.onView,\n }}\n onClose={bannerProps.onClose}\n isOpen\n type={BANNER_TYPES.INFO}\n />\n </StyledIndicatorContainer>\n ) : null}\n {sendingMessages && sendingMessages.length > 0 ? (\n <StyledIndicatorContainer isLoading=\"bottom\" linear>\n <DSIndeterminateProgressIndicator processing title=\"Loading\" lineOnly />\n </StyledIndicatorContainer>\n ) : null}\n </div>\n <ChatComposer\n {...composerProps}\n onResize={onResize}\n maxHeight={(containerRef.current?.clientHeight || 0) / 2}\n actionRef={actionRef || listRef}\n />\n </Container>\n );\n};\n\nChatContainer.propTypes = containerProps;\nChatContainer.defaultProps = defaultProps;\nconst ChatContainerWithSchema = describe(ChatContainer);\nChatContainerWithSchema.propTypes = containerProps;\n\nexport { ChatContainer, ChatContainerWithSchema };\n"],"names":["ChatContainer","props","useValidateProps","ChatContainerWithSchema","toTypescript","sendingText","sendingMessages","bannerPosition","bannerProps","messagesListProps","composerProps","onComposerResize","onResize","actionRef","autoScroll","device","isLoading","hasMoreItems","getMoreMessages","containerRef","React","useRef","listRef","scrollToIndex","noop","useCallback","height","current","messages","length","align","Container","StyledChatContainerContent","MobileStyledChatContainerContent","position","ChatContainerMessagesList","includes","StyledIndicatorContainer","DSIndeterminateProgressIndicator","DSBanner","label","id","viewLabel","onClick","onView","onClose","BANNER_TYPES","INFO","ChatComposer","clientHeight","propTypes","containerProps","defaultProps","describe"],"mappings":"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"}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var dsPropsHelpers = require('@elliemae/ds-props-helpers');
6
6
 
7
7
  var useValidateProps = function useValidateProps(props, schema) {
8
- dsPropsHelpers.useValidatePropTypes(props, schema);
8
+ dsPropsHelpers.useValidateTypescriptPropTypes(props, schema);
9
9
  };
10
10
 
11
11
  exports.useValidateProps = useValidateProps;
@@ -1 +1 @@
1
- {"version":3,"file":"useValidateProps.js","sources":["../../../../../src/parts/chat-container/config/useValidateProps.tsx"],"sourcesContent":["import { useValidatePropTypes } from '@elliemae/ds-props-helpers';\nimport { ChatContainerProps } from '../props';\n\nexport const useValidateProps = (props: ChatContainerProps, schema: unknown): void => {\n useValidatePropTypes(props, schema);\n};\n"],"names":["useValidateProps","props","schema","useValidatePropTypes"],"mappings":";;;;;;IAGaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAA4BC,MAA5B,EAAsD;AACpFC,EAAAA,mCAAoB,CAACF,KAAD,EAAQC,MAAR,CAApB;AACD;;;;"}
1
+ {"version":3,"file":"useValidateProps.js","sources":["../../../../../src/parts/chat-container/config/useValidateProps.tsx"],"sourcesContent":["import { useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport { ChatContainerProps } from '../props';\n\nexport const useValidateProps = (props: ChatContainerProps, schema: unknown): void => {\n useValidateTypescriptPropTypes(props, schema);\n};\n"],"names":["useValidateProps","props","schema","useValidateTypescriptPropTypes"],"mappings":";;;;;;IAGaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAA4BC,MAA5B,EAAsD;AACpFC,EAAAA,6CAA8B,CAACF,KAAD,EAAQC,MAAR,CAA9B;AACD;;;;"}
@@ -27,16 +27,16 @@ var defaultProps = {
27
27
  sendingText: 'Sending'
28
28
  };
29
29
  var containerProps = {
30
- messagesListProps: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.object).description('ChatMessageList props "messages" / "onScrollEnds"').defaultValue(defaultProps.messagesListProps),
31
- composerProps: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.object).description('Composer configuration').defaultValue(defaultProps.composerProps),
30
+ messagesListProps: reactDesc.PropTypes.object.description('ChatMessageList props "messages" / "onScrollEnds"').defaultValue(defaultProps.messagesListProps),
31
+ composerProps: reactDesc.PropTypes.object.description('Composer configuration').defaultValue(defaultProps.composerProps),
32
32
  autoScroll: reactDesc.PropTypes.bool.description('Auto scroll to bottom on resize').defaultValue(defaultProps.autoScroll),
33
33
  device: reactDesc.PropTypes.string.description('Option to render mobile or desktop style composer').defaultValue(defaultProps.device),
34
34
  isLoading: reactDesc.PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Loading messages indicator at the `top` or `bottom` of the container'),
35
35
  hasMoreItems: reactDesc.PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Load More button at the `top` or `bottom` of the container'),
36
36
  getMoreMessages: reactDesc.PropTypes.func.description('Called when the user clicks on load more').defaultValue(defaultProps.getMoreMessages),
37
37
  bannerPosition: reactDesc.PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Loading messages indicator at the `top` or `bottom` of the container'),
38
- bannerProps: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.object).description('Banner configuration').defaultValue(defaultProps.bannerProps),
39
- sendingMessages: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.number])).description('Array of ids of sending messages').defaultValue(defaultProps.sendingMessages),
38
+ bannerProps: reactDesc.PropTypes.object.description('Banner configuration').defaultValue(defaultProps.bannerProps),
39
+ sendingMessages: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.string), reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.number)]).description('Array of ids of sending messages').defaultValue(defaultProps.sendingMessages),
40
40
  sendingText: reactDesc.PropTypes.string.description('Label description for messages in sending status').defaultValue(defaultProps.sendingText),
41
41
  actionRef: reactDesc.PropTypes.object.description("Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n ").defaultValue(defaultProps.actionRef)
42
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-container/props.ts"],"sourcesContent":["import { PropTypes } from 'react-desc';\nimport { noop } from 'lodash';\nimport {\n ChatContainerMessagesListProps,\n defaultProps as defaultListProps,\n} from '../chat-container-messages-list/props';\nimport { defaultComposerPros, ChatComposerProps } from '../chat-composer/props';\n\ninterface ChatBannerProps {\n label: string;\n viewLabel: string;\n onView: () => void;\n onClose: () => void;\n}\nexport interface ChatContainerProps {\n messagesListProps: Pick<ChatContainerMessagesListProps, 'messages' | 'onScrollEnds'>;\n composerProps: ChatComposerProps;\n actionRef: PropTypes.func;\n autoScroll: boolean;\n device: 'desktop' | 'mobile';\n isLoading?: 'top' | 'bottom';\n hasMoreItems?: 'top' | 'bottom';\n getMoreMessages: PropTypes.func;\n bannerPosition?: 'top' | 'bottom';\n bannerProps?: ChatBannerProps;\n sendingMessages?: string[] | number[];\n sendingText: string;\n}\n\nexport const defaultProps: ChatContainerProps = {\n messagesListProps: defaultListProps,\n composerProps: defaultComposerPros,\n actionRef: undefined,\n autoScroll: false,\n device: 'desktop',\n isLoading: undefined,\n hasMoreItems: undefined,\n getMoreMessages: noop,\n bannerPosition: undefined,\n bannerProps: {\n label: 'Unread Messages',\n viewLabel: 'View',\n onView: noop,\n onClose: noop,\n },\n sendingMessages: undefined,\n sendingText: 'Sending',\n};\n\nexport const containerProps = {\n messagesListProps: PropTypes.arrayOf(PropTypes.object)\n .description('ChatMessageList props \"messages\" / \"onScrollEnds\"')\n .defaultValue(defaultProps.messagesListProps),\n composerProps: PropTypes.arrayOf(PropTypes.object)\n .description('Composer configuration')\n .defaultValue(defaultProps.composerProps),\n autoScroll: PropTypes.bool.description('Auto scroll to bottom on resize').defaultValue(defaultProps.autoScroll),\n device: PropTypes.string\n .description('Option to render mobile or desktop style composer')\n .defaultValue(defaultProps.device),\n isLoading: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Loading messages indicator at the `top` or `bottom` of the container',\n ),\n hasMoreItems: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Load More button at the `top` or `bottom` of the container',\n ),\n getMoreMessages: PropTypes.func\n .description('Called when the user clicks on load more')\n .defaultValue(defaultProps.getMoreMessages),\n bannerPosition: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Loading messages indicator at the `top` or `bottom` of the container',\n ),\n bannerProps: PropTypes.arrayOf(PropTypes.object)\n .description('Banner configuration')\n .defaultValue(defaultProps.bannerProps),\n sendingMessages: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n .description('Array of ids of sending messages')\n .defaultValue(defaultProps.sendingMessages),\n sendingText: PropTypes.string\n .description('Label description for messages in sending status')\n .defaultValue(defaultProps.sendingText),\n actionRef: PropTypes.object\n .description(\n `Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n `,\n )\n .defaultValue(defaultProps.actionRef),\n};\n"],"names":["defaultProps","messagesListProps","defaultListProps","composerProps","defaultComposerPros","actionRef","undefined","autoScroll","device","isLoading","hasMoreItems","getMoreMessages","noop","bannerPosition","bannerProps","label","viewLabel","onView","onClose","sendingMessages","sendingText","containerProps","PropTypes","arrayOf","object","description","defaultValue","bool","string","oneOf","func","oneOfType","number"],"mappings":";;;;;;;;;IA6BaA,YAAgC,GAAG;AAC9CC,EAAAA,iBAAiB,EAAEC,kDAD2B;AAE9CC,EAAAA,aAAa,EAAEC,4CAF+B;AAG9CC,EAAAA,SAAS,EAAEC,SAHmC;AAI9CC,EAAAA,UAAU,EAAE,KAJkC;AAK9CC,EAAAA,MAAM,EAAE,SALsC;AAM9CC,EAAAA,SAAS,EAAEH,SANmC;AAO9CI,EAAAA,YAAY,EAAEJ,SAPgC;AAQ9CK,EAAAA,eAAe,EAAEC,WAR6B;AAS9CC,EAAAA,cAAc,EAAEP,SAT8B;AAU9CQ,EAAAA,WAAW,EAAE;AACXC,IAAAA,KAAK,EAAE,iBADI;AAEXC,IAAAA,SAAS,EAAE,MAFA;AAGXC,IAAAA,MAAM,EAAEL,WAHG;AAIXM,IAAAA,OAAO,EAAEN;AAJE,GAViC;AAgB9CO,EAAAA,eAAe,EAAEb,SAhB6B;AAiB9Cc,EAAAA,WAAW,EAAE;AAjBiC;IAoBnCC,cAAc,GAAG;AAC5BpB,EAAAA,iBAAiB,EAAEqB,mBAAS,CAACC,OAAV,CAAkBD,mBAAS,CAACE,MAA5B,EAChBC,WADgB,CACJ,mDADI,EAEhBC,YAFgB,CAEH1B,YAAY,CAACC,iBAFV,CADS;AAI5BE,EAAAA,aAAa,EAAEmB,mBAAS,CAACC,OAAV,CAAkBD,mBAAS,CAACE,MAA5B,EACZC,WADY,CACA,wBADA,EAEZC,YAFY,CAEC1B,YAAY,CAACG,aAFd,CAJa;AAO5BI,EAAAA,UAAU,EAAEe,mBAAS,CAACK,IAAV,CAAeF,WAAf,CAA2B,iCAA3B,EAA8DC,YAA9D,CAA2E1B,YAAY,CAACO,UAAxF,CAPgB;AAQ5BC,EAAAA,MAAM,EAAEc,mBAAS,CAACM,MAAV,CACLH,WADK,CACO,mDADP,EAELC,YAFK,CAEQ1B,YAAY,CAACQ,MAFrB,CARoB;AAW5BC,EAAAA,SAAS,EAAEa,mBAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBvB,SAAlB,CAAhB,EAA8CmB,WAA9C,CACT,2EADS,CAXiB;AAc5Bf,EAAAA,YAAY,EAAEY,mBAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBvB,SAAlB,CAAhB,EAA8CmB,WAA9C,CACZ,iEADY,CAdc;AAiB5Bd,EAAAA,eAAe,EAAEW,mBAAS,CAACQ,IAAV,CACdL,WADc,CACF,0CADE,EAEdC,YAFc,CAED1B,YAAY,CAACW,eAFZ,CAjBW;AAoB5BE,EAAAA,cAAc,EAAES,mBAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBvB,SAAlB,CAAhB,EAA8CmB,WAA9C,CACd,2EADc,CApBY;AAuB5BX,EAAAA,WAAW,EAAEQ,mBAAS,CAACC,OAAV,CAAkBD,mBAAS,CAACE,MAA5B,EACVC,WADU,CACE,sBADF,EAEVC,YAFU,CAEG1B,YAAY,CAACc,WAFhB,CAvBe;AA0B5BK,EAAAA,eAAe,EAAEG,mBAAS,CAACC,OAAV,CAAkBD,mBAAS,CAACS,SAAV,CAAoB,CAACT,mBAAS,CAACM,MAAX,EAAmBN,mBAAS,CAACU,MAA7B,CAApB,CAAlB,EACdP,WADc,CACF,kCADE,EAEdC,YAFc,CAED1B,YAAY,CAACmB,eAFZ,CA1BW;AA6B5BC,EAAAA,WAAW,EAAEE,mBAAS,CAACM,MAAV,CACVH,WADU,CACE,kDADF,EAEVC,YAFU,CAEG1B,YAAY,CAACoB,WAFhB,CA7Be;AAgC5Bf,EAAAA,SAAS,EAAEiB,mBAAS,CAACE,MAAV,CACRC,WADQ,oTAcRC,YAdQ,CAcK1B,YAAY,CAACK,SAdlB;AAhCiB;;;;;"}
1
+ {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-container/props.ts"],"sourcesContent":["import { PropTypes } from 'react-desc';\nimport { noop } from 'lodash';\nimport {\n ChatContainerMessagesListProps,\n defaultProps as defaultListProps,\n} from '../chat-container-messages-list/props';\nimport { defaultComposerPros, ChatComposerProps } from '../chat-composer/props';\n\ninterface ChatBannerProps {\n label: string;\n viewLabel: string;\n onView: () => void;\n onClose: () => void;\n}\nexport interface ChatContainerProps {\n messagesListProps: Pick<ChatContainerMessagesListProps, 'messages' | 'onScrollEnds'>;\n composerProps: ChatComposerProps;\n actionRef: PropTypes.func;\n autoScroll: boolean;\n device: 'desktop' | 'mobile';\n isLoading?: 'top' | 'bottom';\n hasMoreItems?: 'top' | 'bottom';\n getMoreMessages: PropTypes.func;\n bannerPosition?: 'top' | 'bottom';\n bannerProps?: ChatBannerProps;\n sendingMessages?: string[] | number[];\n sendingText: string;\n}\n\nexport const defaultProps: ChatContainerProps = {\n messagesListProps: defaultListProps,\n composerProps: defaultComposerPros,\n actionRef: undefined,\n autoScroll: false,\n device: 'desktop',\n isLoading: undefined,\n hasMoreItems: undefined,\n getMoreMessages: noop,\n bannerPosition: undefined,\n bannerProps: {\n label: 'Unread Messages',\n viewLabel: 'View',\n onView: noop,\n onClose: noop,\n },\n sendingMessages: undefined,\n sendingText: 'Sending',\n};\n\nexport const containerProps = {\n messagesListProps: PropTypes.object\n .description('ChatMessageList props \"messages\" / \"onScrollEnds\"')\n .defaultValue(defaultProps.messagesListProps),\n composerProps: PropTypes.object.description('Composer configuration').defaultValue(defaultProps.composerProps),\n autoScroll: PropTypes.bool.description('Auto scroll to bottom on resize').defaultValue(defaultProps.autoScroll),\n device: PropTypes.string\n .description('Option to render mobile or desktop style composer')\n .defaultValue(defaultProps.device),\n isLoading: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Loading messages indicator at the `top` or `bottom` of the container',\n ),\n hasMoreItems: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Load More button at the `top` or `bottom` of the container',\n ),\n getMoreMessages: PropTypes.func\n .description('Called when the user clicks on load more')\n .defaultValue(defaultProps.getMoreMessages),\n bannerPosition: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Loading messages indicator at the `top` or `bottom` of the container',\n ),\n bannerProps: PropTypes.object.description('Banner configuration').defaultValue(defaultProps.bannerProps),\n sendingMessages: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.arrayOf(PropTypes.number)])\n .description('Array of ids of sending messages')\n .defaultValue(defaultProps.sendingMessages),\n sendingText: PropTypes.string\n .description('Label description for messages in sending status')\n .defaultValue(defaultProps.sendingText),\n actionRef: PropTypes.object\n .description(\n `Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n `,\n )\n .defaultValue(defaultProps.actionRef),\n};\n"],"names":["defaultProps","messagesListProps","defaultListProps","composerProps","defaultComposerPros","actionRef","undefined","autoScroll","device","isLoading","hasMoreItems","getMoreMessages","noop","bannerPosition","bannerProps","label","viewLabel","onView","onClose","sendingMessages","sendingText","containerProps","PropTypes","object","description","defaultValue","bool","string","oneOf","func","oneOfType","arrayOf","number"],"mappings":";;;;;;;;;IA6BaA,YAAgC,GAAG;AAC9CC,EAAAA,iBAAiB,EAAEC,kDAD2B;AAE9CC,EAAAA,aAAa,EAAEC,4CAF+B;AAG9CC,EAAAA,SAAS,EAAEC,SAHmC;AAI9CC,EAAAA,UAAU,EAAE,KAJkC;AAK9CC,EAAAA,MAAM,EAAE,SALsC;AAM9CC,EAAAA,SAAS,EAAEH,SANmC;AAO9CI,EAAAA,YAAY,EAAEJ,SAPgC;AAQ9CK,EAAAA,eAAe,EAAEC,WAR6B;AAS9CC,EAAAA,cAAc,EAAEP,SAT8B;AAU9CQ,EAAAA,WAAW,EAAE;AACXC,IAAAA,KAAK,EAAE,iBADI;AAEXC,IAAAA,SAAS,EAAE,MAFA;AAGXC,IAAAA,MAAM,EAAEL,WAHG;AAIXM,IAAAA,OAAO,EAAEN;AAJE,GAViC;AAgB9CO,EAAAA,eAAe,EAAEb,SAhB6B;AAiB9Cc,EAAAA,WAAW,EAAE;AAjBiC;IAoBnCC,cAAc,GAAG;AAC5BpB,EAAAA,iBAAiB,EAAEqB,mBAAS,CAACC,MAAV,CAChBC,WADgB,CACJ,mDADI,EAEhBC,YAFgB,CAEHzB,YAAY,CAACC,iBAFV,CADS;AAI5BE,EAAAA,aAAa,EAAEmB,mBAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,wBAA7B,EAAuDC,YAAvD,CAAoEzB,YAAY,CAACG,aAAjF,CAJa;AAK5BI,EAAAA,UAAU,EAAEe,mBAAS,CAACI,IAAV,CAAeF,WAAf,CAA2B,iCAA3B,EAA8DC,YAA9D,CAA2EzB,YAAY,CAACO,UAAxF,CALgB;AAM5BC,EAAAA,MAAM,EAAEc,mBAAS,CAACK,MAAV,CACLH,WADK,CACO,mDADP,EAELC,YAFK,CAEQzB,YAAY,CAACQ,MAFrB,CANoB;AAS5BC,EAAAA,SAAS,EAAEa,mBAAS,CAACM,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBtB,SAAlB,CAAhB,EAA8CkB,WAA9C,CACT,2EADS,CATiB;AAY5Bd,EAAAA,YAAY,EAAEY,mBAAS,CAACM,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBtB,SAAlB,CAAhB,EAA8CkB,WAA9C,CACZ,iEADY,CAZc;AAe5Bb,EAAAA,eAAe,EAAEW,mBAAS,CAACO,IAAV,CACdL,WADc,CACF,0CADE,EAEdC,YAFc,CAEDzB,YAAY,CAACW,eAFZ,CAfW;AAkB5BE,EAAAA,cAAc,EAAES,mBAAS,CAACM,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBtB,SAAlB,CAAhB,EAA8CkB,WAA9C,CACd,2EADc,CAlBY;AAqB5BV,EAAAA,WAAW,EAAEQ,mBAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,sBAA7B,EAAqDC,YAArD,CAAkEzB,YAAY,CAACc,WAA/E,CArBe;AAsB5BK,EAAAA,eAAe,EAAEG,mBAAS,CAACQ,SAAV,CAAoB,CAACR,mBAAS,CAACS,OAAV,CAAkBT,mBAAS,CAACK,MAA5B,CAAD,EAAsCL,mBAAS,CAACS,OAAV,CAAkBT,mBAAS,CAACU,MAA5B,CAAtC,CAApB,EACdR,WADc,CACF,kCADE,EAEdC,YAFc,CAEDzB,YAAY,CAACmB,eAFZ,CAtBW;AAyB5BC,EAAAA,WAAW,EAAEE,mBAAS,CAACK,MAAV,CACVH,WADU,CACE,kDADF,EAEVC,YAFU,CAEGzB,YAAY,CAACoB,WAFhB,CAzBe;AA4B5Bf,EAAAA,SAAS,EAAEiB,mBAAS,CAACC,MAAV,CACRC,WADQ,oTAcRC,YAdQ,CAcKzB,YAAY,CAACK,SAdlB;AA5BiB;;;;;"}
@@ -52,7 +52,7 @@ var getPadding = function getPadding(hasMoreItems) {
52
52
  };
53
53
 
54
54
  var ChatContainerMessagesList = function ChatContainerMessagesList(props) {
55
- parts_chatContainerMessagesList_config_useValidateProps.useValidateProps(props, ChatContainerMessagesListWithSchema.toJSON());
55
+ parts_chatContainerMessagesList_config_useValidateProps.useValidateProps(props, ChatContainerMessagesListWithSchema.toTypescript());
56
56
  var sendingText = props.sendingText,
57
57
  sendingMessages = props.sendingMessages,
58
58
  messages = props.messages,
@@ -1 +1 @@
1
- {"version":3,"file":"ChatContainerMessagesList.js","sources":["../../../../src/parts/chat-container-messages-list/ChatContainerMessagesList.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n/* eslint-disable max-lines */\nimport React, { CSSProperties } from 'react';\nimport { describe } from 'react-desc';\nimport { useVirtual } from 'react-virtual';\nimport DSButton from '@elliemae/ds-basic/Button';\nimport { ChatBubble, BUBBLE_TYPES } from '../bubble';\nimport { MessageDelimiter } from '../message-delimiter';\nimport { SystemMessage } from '../system-message';\nimport {\n StyledWrapperListItem,\n StyledChatContainerContentList,\n StyledChatContainerContentListScroll,\n StyledWrapper,\n StyledLoadMoreContainer,\n ListItem,\n} from './styled';\nimport { defaultProps, listProps, ChatContainerMessagesListProps } from './props';\nimport { useValidateProps } from './config/useValidateProps';\n\nconst getPadding = (hasMoreItems) => {\n const padding = {\n paddingStart: 0,\n paddingEnd: -5,\n };\n if (hasMoreItems === 'top') padding.paddingStart = 42;\n else if (hasMoreItems === 'bottom') padding.paddingEnd = 42;\n return padding;\n};\n\nconst ChatContainerMessagesList = (props: ChatContainerMessagesListProps): JSX.Element => {\n useValidateProps(props, ChatContainerMessagesListWithSchema.toJSON());\n\n const { sendingText, sendingMessages, messages, actionRef, onScrollEnds, getMoreMessages, hasMoreItems, isLoading } =\n props;\n const virtualListRef = React.useRef<HTMLDivElement>();\n // estimateSize should not be really required given what was stated on\n // https://github.com/tannerlinsley/react-virtual/issues/23\n const {\n scrollToIndex: vScroll,\n totalSize,\n virtualItems,\n } = useVirtual({\n size: messages.length,\n parentRef: virtualListRef,\n overscan: 15,\n ...getPadding(hasMoreItems),\n estimateSize: React.useCallback(() => 80, []),\n });\n\n const onScrollStop = React.useCallback((): number[] => {\n const { bottom, top } = virtualListRef.current.getBoundingClientRect();\n const list = virtualListRef.current.querySelectorAll(\n '[data-element=\"chat-element-list-item\"]',\n ) as NodeListOf<HTMLDivElement>;\n const indexList = [];\n list.forEach((item: HTMLDivElement) => {\n const { top: itemTop } = item.getBoundingClientRect();\n if (itemTop < bottom && itemTop > top) indexList.push(item.dataset.index);\n });\n if (onScrollEnds) onScrollEnds(indexList);\n return indexList;\n }, [onScrollEnds]);\n\n const scrollAndFocus = React.useCallback(\n (index: number) => {\n vScroll(index, { align: 'center' });\n setTimeout(() => {\n (virtualListRef.current.querySelector(`[data-index=\"${index}\"]`) as HTMLDivElement).focus();\n }, 300);\n },\n [vScroll],\n );\n\n React.useEffect(() => {\n if (actionRef && actionRef.current) {\n actionRef.current.scrollToIndex = (a, b = { align: 'center' }) => {\n vScroll(a, b);\n };\n actionRef.current.getMessagesInView = onScrollStop;\n actionRef.current.focusToIndex = (a, b = { align: 'center' }) => {\n scrollAndFocus(a);\n };\n actionRef.current.focusToList = (a, b = { align: 'center' }) => {\n virtualListRef.current?.focus();\n };\n }\n }, [actionRef, onScrollStop, scrollAndFocus, vScroll]);\n\n const handleKey = React.useCallback(\n (e) => {\n e.preventDefault();\n const { key } = e;\n const index = Number(e.currentTarget.dataset.index);\n switch (key) {\n case 'ArrowUp':\n if (index > 0)\n (virtualListRef.current.querySelector(`[data-index=\"${index - 1}\"]`) as HTMLDivElement).focus();\n break;\n case 'ArrowDown':\n if (index < messages.length - 1) {\n (virtualListRef.current.querySelector(`[data-index=\"${index + 1}\"]`) as HTMLDivElement).focus();\n }\n break;\n case 'Home':\n scrollAndFocus(0);\n break;\n case 'End':\n scrollAndFocus(messages.length - 1);\n break;\n case 'Tab':\n actionRef.current.focusToComposer();\n break;\n default:\n break;\n }\n },\n [actionRef, messages.length, scrollAndFocus],\n );\n\n React.useEffect(() => {\n let handlerCallback = null;\n const localVirtualRef = virtualListRef.current;\n const onScroll = () => {\n if (handlerCallback) clearTimeout(handlerCallback);\n handlerCallback = setTimeout(onScrollStop, 300);\n };\n if (onScrollEnds) {\n virtualListRef.current.addEventListener('scroll', onScroll);\n }\n return () => {\n if (handlerCallback) clearTimeout(handlerCallback);\n if (onScrollEnds) localVirtualRef.removeEventListener('scroll', onScroll);\n };\n }, [onScrollStop, onScrollEnds]);\n\n const render = React.useMemo(\n () =>\n virtualItems.map((virtualItem) => {\n const { index, measureRef, start } = virtualItem;\n const row = messages[index];\n const isSending = sendingMessages && sendingMessages.find((m) => m === row.dsId);\n const style: CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n transform: `translateY(${start}px)`,\n width: '100%',\n };\n\n return (\n <ListItem\n data-element=\"chat-element-list-item\"\n data-index={index}\n key={`ds-chat-bubble-${index}`}\n style={style}\n ref={measureRef}\n tabIndex={0}\n onKeyDown={handleKey}\n role=\"listitem\"\n >\n <StyledWrapperListItem type={row.type}>\n {row.type === BUBBLE_TYPES.SENDER || row.type === BUBBLE_TYPES.RECIPIENT ? (\n // eslint-disable-next-line\n <ChatBubble {...(row as any)} helpMessage={isSending ? sendingText : row.helpMessage} />\n ) : null}\n {row.type === BUBBLE_TYPES.DELIMITER ? <MessageDelimiter {...(row as any)} /> : null}\n {row.type === BUBBLE_TYPES.SYSTEM ? <SystemMessage {...(row as any)} /> : null}\n </StyledWrapperListItem>\n </ListItem>\n );\n }),\n [virtualItems, messages, sendingMessages, handleKey, sendingText],\n );\n\n return (\n <StyledWrapper>\n <StyledChatContainerContentList\n data-testid=\"chat-thread-container\"\n tabIndex={0}\n aria-live=\"polite\"\n ref={virtualListRef}\n role=\"list\"\n onKeyDown={handleKey}\n >\n <StyledChatContainerContentListScroll height={`${totalSize}px`}>\n {render}\n {!isLoading && hasMoreItems ? (\n <StyledLoadMoreContainer hasMoreItems={hasMoreItems}>\n <DSButton labelText=\"Load More\" buttonType=\"secondary\" onClick={getMoreMessages} />\n </StyledLoadMoreContainer>\n ) : null}\n </StyledChatContainerContentListScroll>\n </StyledChatContainerContentList>\n </StyledWrapper>\n );\n};\n\nChatContainerMessagesList.propTypes = listProps;\nChatContainerMessagesList.defaultProps = defaultProps;\nconst ChatContainerMessagesListWithSchema = describe(ChatContainerMessagesList);\nChatContainerMessagesListWithSchema.propTypes = listProps;\n\nexport { ChatContainerMessagesList, ChatContainerMessagesListWithSchema };\n"],"names":["getPadding","hasMoreItems","padding","paddingStart","paddingEnd","ChatContainerMessagesList","props","useValidateProps","ChatContainerMessagesListWithSchema","toJSON","sendingText","sendingMessages","messages","actionRef","onScrollEnds","getMoreMessages","isLoading","virtualListRef","React","useRef","useVirtual","size","length","parentRef","overscan","estimateSize","useCallback","vScroll","scrollToIndex","totalSize","virtualItems","onScrollStop","current","getBoundingClientRect","bottom","top","list","querySelectorAll","indexList","forEach","item","itemTop","push","dataset","index","scrollAndFocus","align","setTimeout","querySelector","focus","useEffect","a","b","getMessagesInView","focusToIndex","focusToList","handleKey","e","preventDefault","key","Number","currentTarget","focusToComposer","handlerCallback","localVirtualRef","onScroll","clearTimeout","addEventListener","removeEventListener","render","useMemo","map","virtualItem","measureRef","start","row","isSending","find","m","dsId","style","position","left","transform","width","ListItem","StyledWrapperListItem","type","BUBBLE_TYPES","SENDER","RECIPIENT","ChatBubble","helpMessage","DELIMITER","MessageDelimiter","SYSTEM","SystemMessage","StyledWrapper","StyledChatContainerContentList","StyledChatContainerContentListScroll","StyledLoadMoreContainer","DSButton","propTypes","listProps","defaultProps","describe"],"mappings":"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"}
1
+ {"version":3,"file":"ChatContainerMessagesList.js","sources":["../../../../src/parts/chat-container-messages-list/ChatContainerMessagesList.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n/* eslint-disable max-lines */\nimport React, { CSSProperties } from 'react';\nimport { describe } from 'react-desc';\nimport { useVirtual } from 'react-virtual';\nimport DSButton from '@elliemae/ds-basic/Button';\nimport { ChatBubble, BUBBLE_TYPES } from '../bubble';\nimport { MessageDelimiter } from '../message-delimiter';\nimport { SystemMessage } from '../system-message';\nimport {\n StyledWrapperListItem,\n StyledChatContainerContentList,\n StyledChatContainerContentListScroll,\n StyledWrapper,\n StyledLoadMoreContainer,\n ListItem,\n} from './styled';\nimport { defaultProps, listProps, ChatContainerMessagesListProps } from './props';\nimport { useValidateProps } from './config/useValidateProps';\n\nconst getPadding = (hasMoreItems) => {\n const padding = {\n paddingStart: 0,\n paddingEnd: -5,\n };\n if (hasMoreItems === 'top') padding.paddingStart = 42;\n else if (hasMoreItems === 'bottom') padding.paddingEnd = 42;\n return padding;\n};\n\nconst ChatContainerMessagesList = (props: ChatContainerMessagesListProps): JSX.Element => {\n useValidateProps(props, ChatContainerMessagesListWithSchema.toTypescript());\n\n const { sendingText, sendingMessages, messages, actionRef, onScrollEnds, getMoreMessages, hasMoreItems, isLoading } =\n props;\n const virtualListRef = React.useRef<HTMLDivElement>();\n // estimateSize should not be really required given what was stated on\n // https://github.com/tannerlinsley/react-virtual/issues/23\n const {\n scrollToIndex: vScroll,\n totalSize,\n virtualItems,\n } = useVirtual({\n size: messages.length,\n parentRef: virtualListRef,\n overscan: 15,\n ...getPadding(hasMoreItems),\n estimateSize: React.useCallback(() => 80, []),\n });\n\n const onScrollStop = React.useCallback((): number[] => {\n const { bottom, top } = virtualListRef.current.getBoundingClientRect();\n const list = virtualListRef.current.querySelectorAll(\n '[data-element=\"chat-element-list-item\"]',\n ) as NodeListOf<HTMLDivElement>;\n const indexList = [];\n list.forEach((item: HTMLDivElement) => {\n const { top: itemTop } = item.getBoundingClientRect();\n if (itemTop < bottom && itemTop > top) indexList.push(item.dataset.index);\n });\n if (onScrollEnds) onScrollEnds(indexList);\n return indexList;\n }, [onScrollEnds]);\n\n const scrollAndFocus = React.useCallback(\n (index: number) => {\n vScroll(index, { align: 'center' });\n setTimeout(() => {\n (virtualListRef.current.querySelector(`[data-index=\"${index}\"]`) as HTMLDivElement).focus();\n }, 300);\n },\n [vScroll],\n );\n\n React.useEffect(() => {\n if (actionRef && actionRef.current) {\n actionRef.current.scrollToIndex = (a, b = { align: 'center' }) => {\n vScroll(a, b);\n };\n actionRef.current.getMessagesInView = onScrollStop;\n actionRef.current.focusToIndex = (a, b = { align: 'center' }) => {\n scrollAndFocus(a);\n };\n actionRef.current.focusToList = (a, b = { align: 'center' }) => {\n virtualListRef.current?.focus();\n };\n }\n }, [actionRef, onScrollStop, scrollAndFocus, vScroll]);\n\n const handleKey = React.useCallback(\n (e) => {\n e.preventDefault();\n const { key } = e;\n const index = Number(e.currentTarget.dataset.index);\n switch (key) {\n case 'ArrowUp':\n if (index > 0)\n (virtualListRef.current.querySelector(`[data-index=\"${index - 1}\"]`) as HTMLDivElement).focus();\n break;\n case 'ArrowDown':\n if (index < messages.length - 1) {\n (virtualListRef.current.querySelector(`[data-index=\"${index + 1}\"]`) as HTMLDivElement).focus();\n }\n break;\n case 'Home':\n scrollAndFocus(0);\n break;\n case 'End':\n scrollAndFocus(messages.length - 1);\n break;\n case 'Tab':\n actionRef.current.focusToComposer();\n break;\n default:\n break;\n }\n },\n [actionRef, messages.length, scrollAndFocus],\n );\n\n React.useEffect(() => {\n let handlerCallback = null;\n const localVirtualRef = virtualListRef.current;\n const onScroll = () => {\n if (handlerCallback) clearTimeout(handlerCallback);\n handlerCallback = setTimeout(onScrollStop, 300);\n };\n if (onScrollEnds) {\n virtualListRef.current.addEventListener('scroll', onScroll);\n }\n return () => {\n if (handlerCallback) clearTimeout(handlerCallback);\n if (onScrollEnds) localVirtualRef.removeEventListener('scroll', onScroll);\n };\n }, [onScrollStop, onScrollEnds]);\n\n const render = React.useMemo(\n () =>\n virtualItems.map((virtualItem) => {\n const { index, measureRef, start } = virtualItem;\n const row = messages[index];\n const isSending = sendingMessages && sendingMessages.find((m) => m === row.dsId);\n const style: CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n transform: `translateY(${start}px)`,\n width: '100%',\n };\n\n return (\n <ListItem\n data-element=\"chat-element-list-item\"\n data-index={index}\n key={`ds-chat-bubble-${index}`}\n style={style}\n ref={measureRef}\n tabIndex={0}\n onKeyDown={handleKey}\n role=\"listitem\"\n >\n <StyledWrapperListItem type={row.type}>\n {row.type === BUBBLE_TYPES.SENDER || row.type === BUBBLE_TYPES.RECIPIENT ? (\n // eslint-disable-next-line\n <ChatBubble {...(row as any)} helpMessage={isSending ? sendingText : row.helpMessage} />\n ) : null}\n {row.type === BUBBLE_TYPES.DELIMITER ? <MessageDelimiter {...(row as any)} /> : null}\n {row.type === BUBBLE_TYPES.SYSTEM ? <SystemMessage {...(row as any)} /> : null}\n </StyledWrapperListItem>\n </ListItem>\n );\n }),\n [virtualItems, messages, sendingMessages, handleKey, sendingText],\n );\n\n return (\n <StyledWrapper>\n <StyledChatContainerContentList\n data-testid=\"chat-thread-container\"\n tabIndex={0}\n aria-live=\"polite\"\n ref={virtualListRef}\n role=\"list\"\n onKeyDown={handleKey}\n >\n <StyledChatContainerContentListScroll height={`${totalSize}px`}>\n {render}\n {!isLoading && hasMoreItems ? (\n <StyledLoadMoreContainer hasMoreItems={hasMoreItems}>\n <DSButton labelText=\"Load More\" buttonType=\"secondary\" onClick={getMoreMessages} />\n </StyledLoadMoreContainer>\n ) : null}\n </StyledChatContainerContentListScroll>\n </StyledChatContainerContentList>\n </StyledWrapper>\n );\n};\n\nChatContainerMessagesList.propTypes = listProps;\nChatContainerMessagesList.defaultProps = defaultProps;\nconst ChatContainerMessagesListWithSchema = describe(ChatContainerMessagesList);\nChatContainerMessagesListWithSchema.propTypes = listProps;\n\nexport { ChatContainerMessagesList, ChatContainerMessagesListWithSchema };\n"],"names":["getPadding","hasMoreItems","padding","paddingStart","paddingEnd","ChatContainerMessagesList","props","useValidateProps","ChatContainerMessagesListWithSchema","toTypescript","sendingText","sendingMessages","messages","actionRef","onScrollEnds","getMoreMessages","isLoading","virtualListRef","React","useRef","useVirtual","size","length","parentRef","overscan","estimateSize","useCallback","vScroll","scrollToIndex","totalSize","virtualItems","onScrollStop","current","getBoundingClientRect","bottom","top","list","querySelectorAll","indexList","forEach","item","itemTop","push","dataset","index","scrollAndFocus","align","setTimeout","querySelector","focus","useEffect","a","b","getMessagesInView","focusToIndex","focusToList","handleKey","e","preventDefault","key","Number","currentTarget","focusToComposer","handlerCallback","localVirtualRef","onScroll","clearTimeout","addEventListener","removeEventListener","render","useMemo","map","virtualItem","measureRef","start","row","isSending","find","m","dsId","style","position","left","transform","width","ListItem","StyledWrapperListItem","type","BUBBLE_TYPES","SENDER","RECIPIENT","ChatBubble","helpMessage","DELIMITER","MessageDelimiter","SYSTEM","SystemMessage","StyledWrapper","StyledChatContainerContentList","StyledChatContainerContentListScroll","StyledLoadMoreContainer","DSButton","propTypes","listProps","defaultProps","describe"],"mappings":"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"}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var dsPropsHelpers = require('@elliemae/ds-props-helpers');
6
6
 
7
7
  var useValidateProps = function useValidateProps(props, schema) {
8
- dsPropsHelpers.useValidatePropTypes(props, schema);
8
+ dsPropsHelpers.useValidateTypescriptPropTypes(props, schema);
9
9
  };
10
10
 
11
11
  exports.useValidateProps = useValidateProps;
@@ -1 +1 @@
1
- {"version":3,"file":"useValidateProps.js","sources":["../../../../../src/parts/chat-container-messages-list/config/useValidateProps.tsx"],"sourcesContent":["import { useValidatePropTypes } from '@elliemae/ds-props-helpers';\nimport { ChatContainerMessagesListProps } from '../props';\n\nexport const useValidateProps = (props: ChatContainerMessagesListProps, schema: unknown): void => {\n useValidatePropTypes(props, schema);\n};\n"],"names":["useValidateProps","props","schema","useValidatePropTypes"],"mappings":";;;;;;IAGaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAwCC,MAAxC,EAAkE;AAChGC,EAAAA,mCAAoB,CAACF,KAAD,EAAQC,MAAR,CAApB;AACD;;;;"}
1
+ {"version":3,"file":"useValidateProps.js","sources":["../../../../../src/parts/chat-container-messages-list/config/useValidateProps.tsx"],"sourcesContent":["import { useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport { ChatContainerMessagesListProps } from '../props';\n\nexport const useValidateProps = (props: ChatContainerMessagesListProps, schema: unknown): void => {\n useValidateTypescriptPropTypes(props, schema);\n};\n"],"names":["useValidateProps","props","schema","useValidateTypescriptPropTypes"],"mappings":";;;;;;IAGaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAwCC,MAAxC,EAAkE;AAChGC,EAAAA,6CAA8B,CAACF,KAAD,EAAQC,MAAR,CAA9B;AACD;;;;"}
@@ -22,7 +22,7 @@ var listProps = {
22
22
  isLoading: reactDesc.PropTypes.oneOf(['top', 'bottom', undefined]).description('Keeps the load more space while the loading is in progress'),
23
23
  hasMoreItems: reactDesc.PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Load More button at the `top` or `bottom` of the container'),
24
24
  getMoreMessages: reactDesc.PropTypes.func.description('Called when the user clicks on load more').defaultValue(defaultProps.getMoreMessages),
25
- sendingMessages: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.number])).description('Array of ids of sending messages').defaultValue(defaultProps.sendingMessages),
25
+ sendingMessages: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.string), reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.number)]).description('Array of ids of sending messages').defaultValue(defaultProps.sendingMessages),
26
26
  sendingText: reactDesc.PropTypes.string.description('Label description for messages in sending status').defaultValue(defaultProps.sendingText)
27
27
  };
28
28
 
@@ -1 +1 @@
1
- {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-container-messages-list/props.ts"],"sourcesContent":["import { Ref } from 'react';\nimport { PropTypes } from 'react-desc';\nimport { noop } from 'lodash';\nimport { BubbleProps } from '../bubble/props';\n\ninterface ActionRef {\n scrollToIndex: (n: number, b: { align: 'end' | 'center' | 'start' }) => void;\n getMessagesInView: () => number[];\n}\nexport interface ChatContainerMessagesListProps {\n messages: BubbleProps[];\n actionRef: any;\n onScrollEnds: (indexList: number[]) => number[];\n isLoading?: 'top' | 'bottom';\n hasMoreItems?: 'top' | 'bottom';\n getMoreMessages: PropTypes.func;\n sendingMessages?: Array<string | number>;\n sendingText: string;\n}\n\nexport const defaultProps: ChatContainerMessagesListProps = {\n messages: [],\n actionRef: noop,\n onScrollEnds: () => [],\n getMoreMessages: noop,\n sendingMessages: undefined,\n sendingText: 'Sending',\n};\n\nexport const listProps = {\n messages: PropTypes.arrayOf(PropTypes.object)\n .description('The array of out-of-the-box items you want to render inside the ChatMessageList')\n .defaultValue(defaultProps.messages),\n actionRef: PropTypes.object\n .description(\n `Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n `,\n )\n .defaultValue(defaultProps.actionRef),\n onScrollEnds: PropTypes.func.description(`Called when the scroll stops.`),\n isLoading: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Keeps the load more space while the loading is in progress',\n ),\n hasMoreItems: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Load More button at the `top` or `bottom` of the container',\n ),\n getMoreMessages: PropTypes.func\n .description('Called when the user clicks on load more')\n .defaultValue(defaultProps.getMoreMessages),\n sendingMessages: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n .description('Array of ids of sending messages')\n .defaultValue(defaultProps.sendingMessages),\n sendingText: PropTypes.string\n .description('Label description for messages in sending status')\n .defaultValue(defaultProps.sendingText),\n};\n"],"names":["defaultProps","messages","actionRef","noop","onScrollEnds","getMoreMessages","sendingMessages","undefined","sendingText","listProps","PropTypes","arrayOf","object","description","defaultValue","func","isLoading","oneOf","hasMoreItems","oneOfType","string","number"],"mappings":";;;;;;;IAoBaA,YAA4C,GAAG;AAC1DC,EAAAA,QAAQ,EAAE,EADgD;AAE1DC,EAAAA,SAAS,EAAEC,WAF+C;AAG1DC,EAAAA,YAAY,EAAE;AAAA,WAAM,EAAN;AAAA,GAH4C;AAI1DC,EAAAA,eAAe,EAAEF,WAJyC;AAK1DG,EAAAA,eAAe,EAAEC,SALyC;AAM1DC,EAAAA,WAAW,EAAE;AAN6C;IAS/CC,SAAS,GAAG;AACvBR,EAAAA,QAAQ,EAAES,mBAAS,CAACC,OAAV,CAAkBD,mBAAS,CAACE,MAA5B,EACPC,WADO,CACK,iFADL,EAEPC,YAFO,CAEMd,YAAY,CAACC,QAFnB,CADa;AAIvBC,EAAAA,SAAS,EAAEQ,mBAAS,CAACE,MAAV,CACRC,WADQ,oTAcRC,YAdQ,CAcKd,YAAY,CAACE,SAdlB,CAJY;AAmBvBE,EAAAA,YAAY,EAAEM,mBAAS,CAACK,IAAV,CAAeF,WAAf,iCAnBS;AAoBvBG,EAAAA,SAAS,EAAEN,mBAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBV,SAAlB,CAAhB,EAA8CM,WAA9C,CACT,4DADS,CApBY;AAuBvBK,EAAAA,YAAY,EAAER,mBAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBV,SAAlB,CAAhB,EAA8CM,WAA9C,CACZ,iEADY,CAvBS;AA0BvBR,EAAAA,eAAe,EAAEK,mBAAS,CAACK,IAAV,CACdF,WADc,CACF,0CADE,EAEdC,YAFc,CAEDd,YAAY,CAACK,eAFZ,CA1BM;AA6BvBC,EAAAA,eAAe,EAAEI,mBAAS,CAACC,OAAV,CAAkBD,mBAAS,CAACS,SAAV,CAAoB,CAACT,mBAAS,CAACU,MAAX,EAAmBV,mBAAS,CAACW,MAA7B,CAApB,CAAlB,EACdR,WADc,CACF,kCADE,EAEdC,YAFc,CAEDd,YAAY,CAACM,eAFZ,CA7BM;AAgCvBE,EAAAA,WAAW,EAAEE,mBAAS,CAACU,MAAV,CACVP,WADU,CACE,kDADF,EAEVC,YAFU,CAEGd,YAAY,CAACQ,WAFhB;AAhCU;;;;;"}
1
+ {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-container-messages-list/props.ts"],"sourcesContent":["import { Ref } from 'react';\nimport { PropTypes } from 'react-desc';\nimport { noop } from 'lodash';\nimport { BubbleProps } from '../bubble/props';\n\ninterface ActionRef {\n scrollToIndex: (n: number, b: { align: 'end' | 'center' | 'start' }) => void;\n getMessagesInView: () => number[];\n}\nexport interface ChatContainerMessagesListProps {\n messages: BubbleProps[];\n actionRef: any;\n onScrollEnds: (indexList: number[]) => number[];\n isLoading?: 'top' | 'bottom';\n hasMoreItems?: 'top' | 'bottom';\n getMoreMessages: PropTypes.func;\n sendingMessages?: Array<string | number>;\n sendingText: string;\n}\n\nexport const defaultProps: ChatContainerMessagesListProps = {\n messages: [],\n actionRef: noop,\n onScrollEnds: () => [],\n getMoreMessages: noop,\n sendingMessages: undefined,\n sendingText: 'Sending',\n};\n\nexport const listProps = {\n messages: PropTypes.arrayOf(PropTypes.object)\n .description('The array of out-of-the-box items you want to render inside the ChatMessageList')\n .defaultValue(defaultProps.messages),\n actionRef: PropTypes.object\n .description(\n `Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n `,\n )\n .defaultValue(defaultProps.actionRef),\n onScrollEnds: PropTypes.func.description(`Called when the scroll stops.`),\n isLoading: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Keeps the load more space while the loading is in progress',\n ),\n hasMoreItems: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Load More button at the `top` or `bottom` of the container',\n ),\n getMoreMessages: PropTypes.func\n .description('Called when the user clicks on load more')\n .defaultValue(defaultProps.getMoreMessages),\n sendingMessages: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.arrayOf(PropTypes.number)])\n .description('Array of ids of sending messages')\n .defaultValue(defaultProps.sendingMessages),\n sendingText: PropTypes.string\n .description('Label description for messages in sending status')\n .defaultValue(defaultProps.sendingText),\n};\n"],"names":["defaultProps","messages","actionRef","noop","onScrollEnds","getMoreMessages","sendingMessages","undefined","sendingText","listProps","PropTypes","arrayOf","object","description","defaultValue","func","isLoading","oneOf","hasMoreItems","oneOfType","string","number"],"mappings":";;;;;;;IAoBaA,YAA4C,GAAG;AAC1DC,EAAAA,QAAQ,EAAE,EADgD;AAE1DC,EAAAA,SAAS,EAAEC,WAF+C;AAG1DC,EAAAA,YAAY,EAAE;AAAA,WAAM,EAAN;AAAA,GAH4C;AAI1DC,EAAAA,eAAe,EAAEF,WAJyC;AAK1DG,EAAAA,eAAe,EAAEC,SALyC;AAM1DC,EAAAA,WAAW,EAAE;AAN6C;IAS/CC,SAAS,GAAG;AACvBR,EAAAA,QAAQ,EAAES,mBAAS,CAACC,OAAV,CAAkBD,mBAAS,CAACE,MAA5B,EACPC,WADO,CACK,iFADL,EAEPC,YAFO,CAEMd,YAAY,CAACC,QAFnB,CADa;AAIvBC,EAAAA,SAAS,EAAEQ,mBAAS,CAACE,MAAV,CACRC,WADQ,oTAcRC,YAdQ,CAcKd,YAAY,CAACE,SAdlB,CAJY;AAmBvBE,EAAAA,YAAY,EAAEM,mBAAS,CAACK,IAAV,CAAeF,WAAf,iCAnBS;AAoBvBG,EAAAA,SAAS,EAAEN,mBAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBV,SAAlB,CAAhB,EAA8CM,WAA9C,CACT,4DADS,CApBY;AAuBvBK,EAAAA,YAAY,EAAER,mBAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBV,SAAlB,CAAhB,EAA8CM,WAA9C,CACZ,iEADY,CAvBS;AA0BvBR,EAAAA,eAAe,EAAEK,mBAAS,CAACK,IAAV,CACdF,WADc,CACF,0CADE,EAEdC,YAFc,CAEDd,YAAY,CAACK,eAFZ,CA1BM;AA6BvBC,EAAAA,eAAe,EAAEI,mBAAS,CAACS,SAAV,CAAoB,CAACT,mBAAS,CAACC,OAAV,CAAkBD,mBAAS,CAACU,MAA5B,CAAD,EAAsCV,mBAAS,CAACC,OAAV,CAAkBD,mBAAS,CAACW,MAA5B,CAAtC,CAApB,EACdR,WADc,CACF,kCADE,EAEdC,YAFc,CAEDd,YAAY,CAACM,eAFZ,CA7BM;AAgCvBE,EAAAA,WAAW,EAAEE,mBAAS,CAACU,MAAV,CACVP,WADU,CACE,kDADF,EAEVC,YAFU,CAEGd,YAAY,CAACQ,WAFhB;AAhCU;;;;;"}
@@ -24,7 +24,7 @@ var StyledTitleRightBubble = /*#__PURE__*/styled(Grid).withConfig({
24
24
  });
25
25
  var StyleBodyWrapper = /*#__PURE__*/styled.div.withConfig({
26
26
  componentId: "sc-fe8e9o-4"
27
- })(["font-size:13px;font-weight:400;line-height:15px;min-height:32px;padding:0px 10px 8px 10px;"]);
27
+ })(["font-size:13px;font-weight:400;line-height:15px;min-height:18px;padding:0px 10px 8px 10px;"]);
28
28
  var StyleErrorMessage = /*#__PURE__*/styled.div.withConfig({
29
29
  componentId: "sc-fe8e9o-5"
30
30
  })(["font-size:12px;font-weight:400;padding-top:", ";padding-bottom:", ";color:", ";align-items:flex-end;justify-content:center;text-align:right;line-height:15px;svg{fill:", ";}a{font-size:12px;color:", ";}.em-ds-icon{margin-left:8px;}"], function (props) {
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../../../src/parts/bubble/styled.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport styled from 'styled-components';\nimport { Grid } from '@elliemae/ds-grid';\nimport { BUBBLE_TYPES } from './props';\n\n// Bubble WRAPPER\nexport const StyledWrapper = styled.div<any>`\n min-width: 224px;\n border-radius: 10px;\n`;\n\n// Bubble HEADER\nexport const StyledTitleBubble = styled(Grid)`\n padding-top: 6px;\n padding-left: 10px;\n padding-right: 10px;\n padding-bottom: 4px;\n`;\n\nexport const StyledTitleLeftBubble = styled(Grid)`\n font-size: 13px;\n font-weight: 600;\n`;\nexport const StyledTitleRightBubble = styled(Grid)`\n font-size: 13px;\n font-weight: 400;\n color: ${(props) => (props.type === BUBBLE_TYPES.SENDER ? '#FFF' : '#657489')};\n`;\n\nexport const StyleBodyWrapper = styled.div<any>`\n font-size: 13px;\n font-weight: 400;\n line-height: 15px;\n min-height: 32px;\n padding: 0px 10px 8px 10px;\n`;\n\nexport const StyleErrorMessage = styled.div<any>`\n font-size: 12px;\n font-weight: 400;\n padding-top: ${(props) => props.theme.space.xxxs};\n padding-bottom: ${(props) => props.theme.space.xxxs};\n color: ${(props) => props.theme.colors.danger[900]};\n align-items: flex-end;\n justify-content: center;\n text-align: right;\n line-height: 15px;\n svg {\n fill: ${(props) => props.theme.colors.danger[900]};\n }\n a {\n font-size: 12px;\n color: ${(props) => props.theme.colors.danger[900]};\n }\n .em-ds-icon {\n margin-left: 8px;\n }\n`;\n\nexport const StyleHelpMessage = styled(StyleErrorMessage)`\n font-size: 12px;\n line-height: 15px;\n color: ${(props) => props.theme.colors.neutral[500]};\n svg {\n fill: ${(props) => props.theme.colors.danger[500]};\n }\n a {\n font-size: 12px;\n color: ${(props) => props.theme.colors.danger[500]};\n }\n`;\n\n// bubble sender/ recipient\nexport const StyledBubbleArrow = styled.div<any>`\n display: block;\n content: '';\n position: absolute;\n bottom: 10px;\n height: 15px;\n`;\n\nexport const StyledColoredBubble = styled.div<any>`\n min-width: 224px;\n border-radius: 10px;\n position: relative;\n\n ${(props) =>\n props.type === BUBBLE_TYPES.SENDER\n ? `\n border: 1px solid ${props.theme.colors.brand['700']};\n background: ${props.theme.colors.brand[600]};\n color: ${props.theme.colors.neutral['000']};\n ${StyledBubbleArrow}{ \n right: -9px;\n bottom: 6px;\n svg{\n fill: ${props.theme.colors.brand[600]};\n }\n }\n\n a {\n color: #FFF;\n }\n\n `\n : `\n box-shadow: 0 1px 3px 0 rgba(53,60,70,0.80);\n background: ${props.theme.colors.neutral['000']};\n color: ${props.theme.colors.neutral[700]};\n\n ${StyledBubbleArrow}{ \n left: -11px;\n bottom: 6px;\n svg{\n fill: ${props.theme.colors.neutral['000']};\n }\n }\n\n `}\n`;\n"],"names":["StyledWrapper","styled","div","StyledTitleBubble","Grid","StyledTitleLeftBubble","StyledTitleRightBubble","props","type","BUBBLE_TYPES","SENDER","StyleBodyWrapper","StyleErrorMessage","theme","space","xxxs","colors","danger","StyleHelpMessage","neutral","StyledBubbleArrow","StyledColoredBubble","brand"],"mappings":";;;;;;;AAAA;;IAMaA,aAAa,gBAAGC,MAAM,CAACC,GAAV;AAAA;AAAA;;IAMbC,iBAAiB,gBAAGF,MAAM,CAACG,IAAD,CAAT;AAAA;AAAA;IAOjBC,qBAAqB,gBAAGJ,MAAM,CAACG,IAAD,CAAT;AAAA;AAAA;IAIrBE,sBAAsB,gBAAGL,MAAM,CAACG,IAAD,CAAT;AAAA;AAAA,mDAGxB,UAACG,KAAD;AAAA,SAAYA,KAAK,CAACC,IAAN,KAAeC,YAAY,CAACC,MAA5B,GAAqC,MAArC,GAA8C,SAA1D;AAAA,CAHwB;IAMtBC,gBAAgB,gBAAGV,MAAM,CAACC,GAAV;AAAA;AAAA;IAQhBU,iBAAiB,gBAAGX,MAAM,CAACC,GAAV;AAAA;AAAA,+OAGb,UAACK,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYC,KAAZ,CAAkBC,IAA7B;AAAA,CAHa,EAIV,UAACR,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYC,KAAZ,CAAkBC,IAA7B;AAAA,CAJU,EAKnB,UAACR,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CALmB,EAWlB,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CAXkB,EAejB,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CAfiB;IAsBjBC,gBAAgB,gBAAGjB,MAAM,CAACW,iBAAD,CAAT;AAAA;AAAA,gGAGlB,UAACL,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,GAA3B,CAAX;AAAA,CAHkB,EAKjB,UAACZ,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CALiB,EAShB,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CATgB;;IAchBG,iBAAiB,gBAAGnB,MAAM,CAACC,GAAV;AAAA;AAAA;IAQjBmB,mBAAmB,gBAAGpB,MAAM,CAACC,GAAV;AAAA;AAAA,kEAK5B,UAACK,KAAD;AAAA,SACAA,KAAK,CAACC,IAAN,KAAeC,YAAY,CAACC,MAA5B,yCAEwBH,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBM,KAAnB,CAAyB,KAAzB,CAFxB,oCAGkBf,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBM,KAAnB,CAAyB,GAAzB,CAHlB,+BAIaf,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,KAA3B,CAJb,wBAKMC,iBALN,wHASoBb,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBM,KAAnB,CAAyB,GAAzB,CATpB,mLAoBkBf,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,KAA3B,CApBlB,+BAqBaZ,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,GAA3B,CArBb,0BAuBMC,iBAvBN,wHA2BoBb,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,KAA3B,CA3BpB,wCADA;AAAA,CAL4B;;;;"}
1
+ {"version":3,"file":"styled.js","sources":["../../../../src/parts/bubble/styled.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport styled from 'styled-components';\nimport { Grid } from '@elliemae/ds-grid';\nimport { BUBBLE_TYPES } from './props';\n\n// Bubble WRAPPER\nexport const StyledWrapper = styled.div<any>`\n min-width: 224px;\n border-radius: 10px;\n`;\n\n// Bubble HEADER\nexport const StyledTitleBubble = styled(Grid)`\n padding-top: 6px;\n padding-left: 10px;\n padding-right: 10px;\n padding-bottom: 4px;\n`;\n\nexport const StyledTitleLeftBubble = styled(Grid)`\n font-size: 13px;\n font-weight: 600;\n`;\nexport const StyledTitleRightBubble = styled(Grid)`\n font-size: 13px;\n font-weight: 400;\n color: ${(props) => (props.type === BUBBLE_TYPES.SENDER ? '#FFF' : '#657489')};\n`;\n\nexport const StyleBodyWrapper = styled.div<any>`\n font-size: 13px;\n font-weight: 400;\n line-height: 15px;\n min-height: 18px;\n padding: 0px 10px 8px 10px;\n`;\n\nexport const StyleErrorMessage = styled.div<any>`\n font-size: 12px;\n font-weight: 400;\n padding-top: ${(props) => props.theme.space.xxxs};\n padding-bottom: ${(props) => props.theme.space.xxxs};\n color: ${(props) => props.theme.colors.danger[900]};\n align-items: flex-end;\n justify-content: center;\n text-align: right;\n line-height: 15px;\n svg {\n fill: ${(props) => props.theme.colors.danger[900]};\n }\n a {\n font-size: 12px;\n color: ${(props) => props.theme.colors.danger[900]};\n }\n .em-ds-icon {\n margin-left: 8px;\n }\n`;\n\nexport const StyleHelpMessage = styled(StyleErrorMessage)`\n font-size: 12px;\n line-height: 15px;\n color: ${(props) => props.theme.colors.neutral[500]};\n svg {\n fill: ${(props) => props.theme.colors.danger[500]};\n }\n a {\n font-size: 12px;\n color: ${(props) => props.theme.colors.danger[500]};\n }\n`;\n\n// bubble sender/ recipient\nexport const StyledBubbleArrow = styled.div<any>`\n display: block;\n content: '';\n position: absolute;\n bottom: 10px;\n height: 15px;\n`;\n\nexport const StyledColoredBubble = styled.div<any>`\n min-width: 224px;\n border-radius: 10px;\n position: relative;\n\n ${(props) =>\n props.type === BUBBLE_TYPES.SENDER\n ? `\n border: 1px solid ${props.theme.colors.brand['700']};\n background: ${props.theme.colors.brand[600]};\n color: ${props.theme.colors.neutral['000']};\n ${StyledBubbleArrow}{ \n right: -9px;\n bottom: 6px;\n svg{\n fill: ${props.theme.colors.brand[600]};\n }\n }\n\n a {\n color: #FFF;\n }\n\n `\n : `\n box-shadow: 0 1px 3px 0 rgba(53,60,70,0.80);\n background: ${props.theme.colors.neutral['000']};\n color: ${props.theme.colors.neutral[700]};\n\n ${StyledBubbleArrow}{ \n left: -11px;\n bottom: 6px;\n svg{\n fill: ${props.theme.colors.neutral['000']};\n }\n }\n\n `}\n`;\n"],"names":["StyledWrapper","styled","div","StyledTitleBubble","Grid","StyledTitleLeftBubble","StyledTitleRightBubble","props","type","BUBBLE_TYPES","SENDER","StyleBodyWrapper","StyleErrorMessage","theme","space","xxxs","colors","danger","StyleHelpMessage","neutral","StyledBubbleArrow","StyledColoredBubble","brand"],"mappings":";;;;;;;AAAA;;IAMaA,aAAa,gBAAGC,MAAM,CAACC,GAAV;AAAA;AAAA;;IAMbC,iBAAiB,gBAAGF,MAAM,CAACG,IAAD,CAAT;AAAA;AAAA;IAOjBC,qBAAqB,gBAAGJ,MAAM,CAACG,IAAD,CAAT;AAAA;AAAA;IAIrBE,sBAAsB,gBAAGL,MAAM,CAACG,IAAD,CAAT;AAAA;AAAA,mDAGxB,UAACG,KAAD;AAAA,SAAYA,KAAK,CAACC,IAAN,KAAeC,YAAY,CAACC,MAA5B,GAAqC,MAArC,GAA8C,SAA1D;AAAA,CAHwB;IAMtBC,gBAAgB,gBAAGV,MAAM,CAACC,GAAV;AAAA;AAAA;IAQhBU,iBAAiB,gBAAGX,MAAM,CAACC,GAAV;AAAA;AAAA,+OAGb,UAACK,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYC,KAAZ,CAAkBC,IAA7B;AAAA,CAHa,EAIV,UAACR,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYC,KAAZ,CAAkBC,IAA7B;AAAA,CAJU,EAKnB,UAACR,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CALmB,EAWlB,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CAXkB,EAejB,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CAfiB;IAsBjBC,gBAAgB,gBAAGjB,MAAM,CAACW,iBAAD,CAAT;AAAA;AAAA,gGAGlB,UAACL,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,GAA3B,CAAX;AAAA,CAHkB,EAKjB,UAACZ,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CALiB,EAShB,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBC,MAAnB,CAA0B,GAA1B,CAAX;AAAA,CATgB;;IAchBG,iBAAiB,gBAAGnB,MAAM,CAACC,GAAV;AAAA;AAAA;IAQjBmB,mBAAmB,gBAAGpB,MAAM,CAACC,GAAV;AAAA;AAAA,kEAK5B,UAACK,KAAD;AAAA,SACAA,KAAK,CAACC,IAAN,KAAeC,YAAY,CAACC,MAA5B,yCAEwBH,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBM,KAAnB,CAAyB,KAAzB,CAFxB,oCAGkBf,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBM,KAAnB,CAAyB,GAAzB,CAHlB,+BAIaf,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,KAA3B,CAJb,wBAKMC,iBALN,wHASoBb,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBM,KAAnB,CAAyB,GAAzB,CATpB,mLAoBkBf,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,KAA3B,CApBlB,+BAqBaZ,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,GAA3B,CArBb,0BAuBMC,iBAvBN,wHA2BoBb,KAAK,CAACM,KAAN,CAAYG,MAAZ,CAAmBG,OAAnB,CAA2B,KAA3B,CA3BpB,wCADA;AAAA,CAL4B;;;;"}
@@ -43,7 +43,7 @@ import '../chat-container-messages-list/config/useValidateProps.js';
43
43
  var ChatContainer = function ChatContainer(props) {
44
44
  var _containerRef$current;
45
45
 
46
- useValidateProps(props, ChatContainerWithSchema.toJSON());
46
+ useValidateProps(props, ChatContainerWithSchema.toTypescript());
47
47
  var sendingText = props.sendingText,
48
48
  sendingMessages = props.sendingMessages,
49
49
  bannerPosition = props.bannerPosition,
@@ -1 +1 @@
1
- {"version":3,"file":"ChatContainer.js","sources":["../../../../src/parts/chat-container/ChatContainer.tsx"],"sourcesContent":["/* eslint-disable complexity */\nimport React from 'react';\nimport { noop } from 'lodash';\nimport { describe } from 'react-desc';\nimport DSIndeterminateProgressIndicator from '@elliemae/ds-basic/IndeterminateProgressIndicator';\nimport DSBanner, { BANNER_TYPES } from '@elliemae/ds-banner';\nimport { ChatComposer } from '../chat-composer';\nimport { ChatContainerMessagesList } from '../chat-container-messages-list';\nimport { ChatContainerProps, defaultProps, containerProps } from './props';\nimport { StyledChatContainerContent, StyledIndicatorContainer, MobileStyledChatContainerContent } from './styled';\nimport { useValidateProps } from './config/useValidateProps';\n\nconst ChatContainer = (props: ChatContainerProps): JSX.Element => {\n useValidateProps(props, ChatContainerWithSchema.toJSON());\n\n const {\n sendingText,\n sendingMessages,\n bannerPosition,\n bannerProps,\n messagesListProps,\n composerProps,\n composerProps: { onResize: onComposerResize },\n actionRef,\n autoScroll,\n device,\n isLoading,\n hasMoreItems,\n getMoreMessages,\n } = props;\n\n const containerRef = React.useRef<HTMLElement>();\n const listRef = React.useRef({ scrollToIndex: noop });\n const onResize = React.useCallback(\n (height: number) => {\n if (onComposerResize) onComposerResize(height);\n if (autoScroll) {\n listRef.current.scrollToIndex(messagesListProps.messages.length - 1, {\n align: 'end',\n });\n }\n },\n [onComposerResize, messagesListProps.messages, autoScroll],\n );\n const Container = device === 'desktop' ? StyledChatContainerContent : MobileStyledChatContainerContent;\n\n return (\n <Container rows={['minmax(0, 1fr)', 'auto']} ref={containerRef} role=\"region\" aria-label=\"chat window\">\n <div style={{ position: 'relative' }}>\n <ChatContainerMessagesList\n {...messagesListProps}\n actionRef={actionRef || listRef}\n isLoading={isLoading}\n hasMoreItems={hasMoreItems}\n getMoreMessages={getMoreMessages}\n sendingMessages={sendingMessages}\n sendingText={sendingText}\n />\n {['top', 'bottom'].includes(isLoading) ? (\n <StyledIndicatorContainer isLoading={isLoading}>\n <DSIndeterminateProgressIndicator processing title=\"Loading\" />\n </StyledIndicatorContainer>\n ) : null}\n {['top', 'bottom'].includes(bannerPosition) ? (\n <StyledIndicatorContainer isLoading={bannerPosition}>\n <DSBanner\n showCloseButton\n label={bannerProps.label || 'Unread messages'}\n containerProps={{ id: 'ds-chat-banner' }}\n actionLink={{\n label: bannerProps.viewLabel || 'View',\n onClick: bannerProps.onView,\n }}\n onClose={bannerProps.onClose}\n isOpen\n type={BANNER_TYPES.INFO}\n />\n </StyledIndicatorContainer>\n ) : null}\n {sendingMessages && sendingMessages.length > 0 ? (\n <StyledIndicatorContainer isLoading=\"bottom\" linear>\n <DSIndeterminateProgressIndicator processing title=\"Loading\" lineOnly />\n </StyledIndicatorContainer>\n ) : null}\n </div>\n <ChatComposer\n {...composerProps}\n onResize={onResize}\n maxHeight={(containerRef.current?.clientHeight || 0) / 2}\n actionRef={actionRef || listRef}\n />\n </Container>\n );\n};\n\nChatContainer.propTypes = containerProps;\nChatContainer.defaultProps = defaultProps;\nconst ChatContainerWithSchema = describe(ChatContainer);\nChatContainerWithSchema.propTypes = containerProps;\n\nexport { ChatContainer, ChatContainerWithSchema };\n"],"names":["ChatContainer","props","useValidateProps","ChatContainerWithSchema","toJSON","sendingText","sendingMessages","bannerPosition","bannerProps","messagesListProps","composerProps","onComposerResize","onResize","actionRef","autoScroll","device","isLoading","hasMoreItems","getMoreMessages","containerRef","React","useRef","listRef","scrollToIndex","noop","useCallback","height","current","messages","length","align","Container","StyledChatContainerContent","MobileStyledChatContainerContent","position","includes","label","id","viewLabel","onClick","onView","onClose","BANNER_TYPES","INFO","clientHeight","propTypes","containerProps","defaultProps","describe"],"mappings":"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"}
1
+ {"version":3,"file":"ChatContainer.js","sources":["../../../../src/parts/chat-container/ChatContainer.tsx"],"sourcesContent":["/* eslint-disable complexity */\nimport React from 'react';\nimport { noop } from 'lodash';\nimport { describe } from 'react-desc';\nimport DSIndeterminateProgressIndicator from '@elliemae/ds-basic/IndeterminateProgressIndicator';\nimport DSBanner, { BANNER_TYPES } from '@elliemae/ds-banner';\nimport { ChatComposer } from '../chat-composer';\nimport { ChatContainerMessagesList } from '../chat-container-messages-list';\nimport { ChatContainerProps, defaultProps, containerProps } from './props';\nimport { StyledChatContainerContent, StyledIndicatorContainer, MobileStyledChatContainerContent } from './styled';\nimport { useValidateProps } from './config/useValidateProps';\n\nconst ChatContainer = (props: ChatContainerProps): JSX.Element => {\n useValidateProps(props, ChatContainerWithSchema.toTypescript());\n\n const {\n sendingText,\n sendingMessages,\n bannerPosition,\n bannerProps,\n messagesListProps,\n composerProps,\n composerProps: { onResize: onComposerResize },\n actionRef,\n autoScroll,\n device,\n isLoading,\n hasMoreItems,\n getMoreMessages,\n } = props;\n\n const containerRef = React.useRef<HTMLElement>();\n const listRef = React.useRef({ scrollToIndex: noop });\n const onResize = React.useCallback(\n (height: number) => {\n if (onComposerResize) onComposerResize(height);\n if (autoScroll) {\n listRef.current.scrollToIndex(messagesListProps.messages.length - 1, {\n align: 'end',\n });\n }\n },\n [onComposerResize, messagesListProps.messages, autoScroll],\n );\n const Container = device === 'desktop' ? StyledChatContainerContent : MobileStyledChatContainerContent;\n\n return (\n <Container rows={['minmax(0, 1fr)', 'auto']} ref={containerRef} role=\"region\" aria-label=\"chat window\">\n <div style={{ position: 'relative' }}>\n <ChatContainerMessagesList\n {...messagesListProps}\n actionRef={actionRef || listRef}\n isLoading={isLoading}\n hasMoreItems={hasMoreItems}\n getMoreMessages={getMoreMessages}\n sendingMessages={sendingMessages}\n sendingText={sendingText}\n />\n {['top', 'bottom'].includes(isLoading) ? (\n <StyledIndicatorContainer isLoading={isLoading}>\n <DSIndeterminateProgressIndicator processing title=\"Loading\" />\n </StyledIndicatorContainer>\n ) : null}\n {['top', 'bottom'].includes(bannerPosition) ? (\n <StyledIndicatorContainer isLoading={bannerPosition}>\n <DSBanner\n showCloseButton\n label={bannerProps.label || 'Unread messages'}\n containerProps={{ id: 'ds-chat-banner' }}\n actionLink={{\n label: bannerProps.viewLabel || 'View',\n onClick: bannerProps.onView,\n }}\n onClose={bannerProps.onClose}\n isOpen\n type={BANNER_TYPES.INFO}\n />\n </StyledIndicatorContainer>\n ) : null}\n {sendingMessages && sendingMessages.length > 0 ? (\n <StyledIndicatorContainer isLoading=\"bottom\" linear>\n <DSIndeterminateProgressIndicator processing title=\"Loading\" lineOnly />\n </StyledIndicatorContainer>\n ) : null}\n </div>\n <ChatComposer\n {...composerProps}\n onResize={onResize}\n maxHeight={(containerRef.current?.clientHeight || 0) / 2}\n actionRef={actionRef || listRef}\n />\n </Container>\n );\n};\n\nChatContainer.propTypes = containerProps;\nChatContainer.defaultProps = defaultProps;\nconst ChatContainerWithSchema = describe(ChatContainer);\nChatContainerWithSchema.propTypes = containerProps;\n\nexport { ChatContainer, ChatContainerWithSchema };\n"],"names":["ChatContainer","props","useValidateProps","ChatContainerWithSchema","toTypescript","sendingText","sendingMessages","bannerPosition","bannerProps","messagesListProps","composerProps","onComposerResize","onResize","actionRef","autoScroll","device","isLoading","hasMoreItems","getMoreMessages","containerRef","React","useRef","listRef","scrollToIndex","noop","useCallback","height","current","messages","length","align","Container","StyledChatContainerContent","MobileStyledChatContainerContent","position","includes","label","id","viewLabel","onClick","onView","onClose","BANNER_TYPES","INFO","clientHeight","propTypes","containerProps","defaultProps","describe"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { useValidatePropTypes } from '@elliemae/ds-props-helpers';
1
+ import { useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';
2
2
 
3
3
  var useValidateProps = function useValidateProps(props, schema) {
4
- useValidatePropTypes(props, schema);
4
+ useValidateTypescriptPropTypes(props, schema);
5
5
  };
6
6
 
7
7
  export { useValidateProps };
@@ -1 +1 @@
1
- {"version":3,"file":"useValidateProps.js","sources":["../../../../../src/parts/chat-container/config/useValidateProps.tsx"],"sourcesContent":["import { useValidatePropTypes } from '@elliemae/ds-props-helpers';\nimport { ChatContainerProps } from '../props';\n\nexport const useValidateProps = (props: ChatContainerProps, schema: unknown): void => {\n useValidatePropTypes(props, schema);\n};\n"],"names":["useValidateProps","props","schema","useValidatePropTypes"],"mappings":";;IAGaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAA4BC,MAA5B,EAAsD;AACpFC,EAAAA,oBAAoB,CAACF,KAAD,EAAQC,MAAR,CAApB;AACD;;;;"}
1
+ {"version":3,"file":"useValidateProps.js","sources":["../../../../../src/parts/chat-container/config/useValidateProps.tsx"],"sourcesContent":["import { useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport { ChatContainerProps } from '../props';\n\nexport const useValidateProps = (props: ChatContainerProps, schema: unknown): void => {\n useValidateTypescriptPropTypes(props, schema);\n};\n"],"names":["useValidateProps","props","schema","useValidateTypescriptPropTypes"],"mappings":";;IAGaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAA4BC,MAA5B,EAAsD;AACpFC,EAAAA,8BAA8B,CAACF,KAAD,EAAQC,MAAR,CAA9B;AACD;;;;"}
@@ -23,16 +23,16 @@ var defaultProps = {
23
23
  sendingText: 'Sending'
24
24
  };
25
25
  var containerProps = {
26
- messagesListProps: PropTypes.arrayOf(PropTypes.object).description('ChatMessageList props "messages" / "onScrollEnds"').defaultValue(defaultProps.messagesListProps),
27
- composerProps: PropTypes.arrayOf(PropTypes.object).description('Composer configuration').defaultValue(defaultProps.composerProps),
26
+ messagesListProps: PropTypes.object.description('ChatMessageList props "messages" / "onScrollEnds"').defaultValue(defaultProps.messagesListProps),
27
+ composerProps: PropTypes.object.description('Composer configuration').defaultValue(defaultProps.composerProps),
28
28
  autoScroll: PropTypes.bool.description('Auto scroll to bottom on resize').defaultValue(defaultProps.autoScroll),
29
29
  device: PropTypes.string.description('Option to render mobile or desktop style composer').defaultValue(defaultProps.device),
30
30
  isLoading: PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Loading messages indicator at the `top` or `bottom` of the container'),
31
31
  hasMoreItems: PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Load More button at the `top` or `bottom` of the container'),
32
32
  getMoreMessages: PropTypes.func.description('Called when the user clicks on load more').defaultValue(defaultProps.getMoreMessages),
33
33
  bannerPosition: PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Loading messages indicator at the `top` or `bottom` of the container'),
34
- bannerProps: PropTypes.arrayOf(PropTypes.object).description('Banner configuration').defaultValue(defaultProps.bannerProps),
35
- sendingMessages: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])).description('Array of ids of sending messages').defaultValue(defaultProps.sendingMessages),
34
+ bannerProps: PropTypes.object.description('Banner configuration').defaultValue(defaultProps.bannerProps),
35
+ sendingMessages: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.arrayOf(PropTypes.number)]).description('Array of ids of sending messages').defaultValue(defaultProps.sendingMessages),
36
36
  sendingText: PropTypes.string.description('Label description for messages in sending status').defaultValue(defaultProps.sendingText),
37
37
  actionRef: PropTypes.object.description("Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n ").defaultValue(defaultProps.actionRef)
38
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-container/props.ts"],"sourcesContent":["import { PropTypes } from 'react-desc';\nimport { noop } from 'lodash';\nimport {\n ChatContainerMessagesListProps,\n defaultProps as defaultListProps,\n} from '../chat-container-messages-list/props';\nimport { defaultComposerPros, ChatComposerProps } from '../chat-composer/props';\n\ninterface ChatBannerProps {\n label: string;\n viewLabel: string;\n onView: () => void;\n onClose: () => void;\n}\nexport interface ChatContainerProps {\n messagesListProps: Pick<ChatContainerMessagesListProps, 'messages' | 'onScrollEnds'>;\n composerProps: ChatComposerProps;\n actionRef: PropTypes.func;\n autoScroll: boolean;\n device: 'desktop' | 'mobile';\n isLoading?: 'top' | 'bottom';\n hasMoreItems?: 'top' | 'bottom';\n getMoreMessages: PropTypes.func;\n bannerPosition?: 'top' | 'bottom';\n bannerProps?: ChatBannerProps;\n sendingMessages?: string[] | number[];\n sendingText: string;\n}\n\nexport const defaultProps: ChatContainerProps = {\n messagesListProps: defaultListProps,\n composerProps: defaultComposerPros,\n actionRef: undefined,\n autoScroll: false,\n device: 'desktop',\n isLoading: undefined,\n hasMoreItems: undefined,\n getMoreMessages: noop,\n bannerPosition: undefined,\n bannerProps: {\n label: 'Unread Messages',\n viewLabel: 'View',\n onView: noop,\n onClose: noop,\n },\n sendingMessages: undefined,\n sendingText: 'Sending',\n};\n\nexport const containerProps = {\n messagesListProps: PropTypes.arrayOf(PropTypes.object)\n .description('ChatMessageList props \"messages\" / \"onScrollEnds\"')\n .defaultValue(defaultProps.messagesListProps),\n composerProps: PropTypes.arrayOf(PropTypes.object)\n .description('Composer configuration')\n .defaultValue(defaultProps.composerProps),\n autoScroll: PropTypes.bool.description('Auto scroll to bottom on resize').defaultValue(defaultProps.autoScroll),\n device: PropTypes.string\n .description('Option to render mobile or desktop style composer')\n .defaultValue(defaultProps.device),\n isLoading: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Loading messages indicator at the `top` or `bottom` of the container',\n ),\n hasMoreItems: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Load More button at the `top` or `bottom` of the container',\n ),\n getMoreMessages: PropTypes.func\n .description('Called when the user clicks on load more')\n .defaultValue(defaultProps.getMoreMessages),\n bannerPosition: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Loading messages indicator at the `top` or `bottom` of the container',\n ),\n bannerProps: PropTypes.arrayOf(PropTypes.object)\n .description('Banner configuration')\n .defaultValue(defaultProps.bannerProps),\n sendingMessages: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n .description('Array of ids of sending messages')\n .defaultValue(defaultProps.sendingMessages),\n sendingText: PropTypes.string\n .description('Label description for messages in sending status')\n .defaultValue(defaultProps.sendingText),\n actionRef: PropTypes.object\n .description(\n `Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n `,\n )\n .defaultValue(defaultProps.actionRef),\n};\n"],"names":["defaultProps","messagesListProps","defaultListProps","composerProps","defaultComposerPros","actionRef","undefined","autoScroll","device","isLoading","hasMoreItems","getMoreMessages","noop","bannerPosition","bannerProps","label","viewLabel","onView","onClose","sendingMessages","sendingText","containerProps","PropTypes","arrayOf","object","description","defaultValue","bool","string","oneOf","func","oneOfType","number"],"mappings":";;;;;IA6BaA,YAAgC,GAAG;AAC9CC,EAAAA,iBAAiB,EAAEC,cAD2B;AAE9CC,EAAAA,aAAa,EAAEC,mBAF+B;AAG9CC,EAAAA,SAAS,EAAEC,SAHmC;AAI9CC,EAAAA,UAAU,EAAE,KAJkC;AAK9CC,EAAAA,MAAM,EAAE,SALsC;AAM9CC,EAAAA,SAAS,EAAEH,SANmC;AAO9CI,EAAAA,YAAY,EAAEJ,SAPgC;AAQ9CK,EAAAA,eAAe,EAAEC,IAR6B;AAS9CC,EAAAA,cAAc,EAAEP,SAT8B;AAU9CQ,EAAAA,WAAW,EAAE;AACXC,IAAAA,KAAK,EAAE,iBADI;AAEXC,IAAAA,SAAS,EAAE,MAFA;AAGXC,IAAAA,MAAM,EAAEL,IAHG;AAIXM,IAAAA,OAAO,EAAEN;AAJE,GAViC;AAgB9CO,EAAAA,eAAe,EAAEb,SAhB6B;AAiB9Cc,EAAAA,WAAW,EAAE;AAjBiC;IAoBnCC,cAAc,GAAG;AAC5BpB,EAAAA,iBAAiB,EAAEqB,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,EAChBC,WADgB,CACJ,mDADI,EAEhBC,YAFgB,CAEH1B,YAAY,CAACC,iBAFV,CADS;AAI5BE,EAAAA,aAAa,EAAEmB,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,EACZC,WADY,CACA,wBADA,EAEZC,YAFY,CAEC1B,YAAY,CAACG,aAFd,CAJa;AAO5BI,EAAAA,UAAU,EAAEe,SAAS,CAACK,IAAV,CAAeF,WAAf,CAA2B,iCAA3B,EAA8DC,YAA9D,CAA2E1B,YAAY,CAACO,UAAxF,CAPgB;AAQ5BC,EAAAA,MAAM,EAAEc,SAAS,CAACM,MAAV,CACLH,WADK,CACO,mDADP,EAELC,YAFK,CAEQ1B,YAAY,CAACQ,MAFrB,CARoB;AAW5BC,EAAAA,SAAS,EAAEa,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBvB,SAAlB,CAAhB,EAA8CmB,WAA9C,CACT,2EADS,CAXiB;AAc5Bf,EAAAA,YAAY,EAAEY,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBvB,SAAlB,CAAhB,EAA8CmB,WAA9C,CACZ,iEADY,CAdc;AAiB5Bd,EAAAA,eAAe,EAAEW,SAAS,CAACQ,IAAV,CACdL,WADc,CACF,0CADE,EAEdC,YAFc,CAED1B,YAAY,CAACW,eAFZ,CAjBW;AAoB5BE,EAAAA,cAAc,EAAES,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBvB,SAAlB,CAAhB,EAA8CmB,WAA9C,CACd,2EADc,CApBY;AAuB5BX,EAAAA,WAAW,EAAEQ,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,EACVC,WADU,CACE,sBADF,EAEVC,YAFU,CAEG1B,YAAY,CAACc,WAFhB,CAvBe;AA0B5BK,EAAAA,eAAe,EAAEG,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACS,SAAV,CAAoB,CAACT,SAAS,CAACM,MAAX,EAAmBN,SAAS,CAACU,MAA7B,CAApB,CAAlB,EACdP,WADc,CACF,kCADE,EAEdC,YAFc,CAED1B,YAAY,CAACmB,eAFZ,CA1BW;AA6B5BC,EAAAA,WAAW,EAAEE,SAAS,CAACM,MAAV,CACVH,WADU,CACE,kDADF,EAEVC,YAFU,CAEG1B,YAAY,CAACoB,WAFhB,CA7Be;AAgC5Bf,EAAAA,SAAS,EAAEiB,SAAS,CAACE,MAAV,CACRC,WADQ,oTAcRC,YAdQ,CAcK1B,YAAY,CAACK,SAdlB;AAhCiB;;;;"}
1
+ {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-container/props.ts"],"sourcesContent":["import { PropTypes } from 'react-desc';\nimport { noop } from 'lodash';\nimport {\n ChatContainerMessagesListProps,\n defaultProps as defaultListProps,\n} from '../chat-container-messages-list/props';\nimport { defaultComposerPros, ChatComposerProps } from '../chat-composer/props';\n\ninterface ChatBannerProps {\n label: string;\n viewLabel: string;\n onView: () => void;\n onClose: () => void;\n}\nexport interface ChatContainerProps {\n messagesListProps: Pick<ChatContainerMessagesListProps, 'messages' | 'onScrollEnds'>;\n composerProps: ChatComposerProps;\n actionRef: PropTypes.func;\n autoScroll: boolean;\n device: 'desktop' | 'mobile';\n isLoading?: 'top' | 'bottom';\n hasMoreItems?: 'top' | 'bottom';\n getMoreMessages: PropTypes.func;\n bannerPosition?: 'top' | 'bottom';\n bannerProps?: ChatBannerProps;\n sendingMessages?: string[] | number[];\n sendingText: string;\n}\n\nexport const defaultProps: ChatContainerProps = {\n messagesListProps: defaultListProps,\n composerProps: defaultComposerPros,\n actionRef: undefined,\n autoScroll: false,\n device: 'desktop',\n isLoading: undefined,\n hasMoreItems: undefined,\n getMoreMessages: noop,\n bannerPosition: undefined,\n bannerProps: {\n label: 'Unread Messages',\n viewLabel: 'View',\n onView: noop,\n onClose: noop,\n },\n sendingMessages: undefined,\n sendingText: 'Sending',\n};\n\nexport const containerProps = {\n messagesListProps: PropTypes.object\n .description('ChatMessageList props \"messages\" / \"onScrollEnds\"')\n .defaultValue(defaultProps.messagesListProps),\n composerProps: PropTypes.object.description('Composer configuration').defaultValue(defaultProps.composerProps),\n autoScroll: PropTypes.bool.description('Auto scroll to bottom on resize').defaultValue(defaultProps.autoScroll),\n device: PropTypes.string\n .description('Option to render mobile or desktop style composer')\n .defaultValue(defaultProps.device),\n isLoading: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Loading messages indicator at the `top` or `bottom` of the container',\n ),\n hasMoreItems: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Load More button at the `top` or `bottom` of the container',\n ),\n getMoreMessages: PropTypes.func\n .description('Called when the user clicks on load more')\n .defaultValue(defaultProps.getMoreMessages),\n bannerPosition: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Loading messages indicator at the `top` or `bottom` of the container',\n ),\n bannerProps: PropTypes.object.description('Banner configuration').defaultValue(defaultProps.bannerProps),\n sendingMessages: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.arrayOf(PropTypes.number)])\n .description('Array of ids of sending messages')\n .defaultValue(defaultProps.sendingMessages),\n sendingText: PropTypes.string\n .description('Label description for messages in sending status')\n .defaultValue(defaultProps.sendingText),\n actionRef: PropTypes.object\n .description(\n `Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n `,\n )\n .defaultValue(defaultProps.actionRef),\n};\n"],"names":["defaultProps","messagesListProps","defaultListProps","composerProps","defaultComposerPros","actionRef","undefined","autoScroll","device","isLoading","hasMoreItems","getMoreMessages","noop","bannerPosition","bannerProps","label","viewLabel","onView","onClose","sendingMessages","sendingText","containerProps","PropTypes","object","description","defaultValue","bool","string","oneOf","func","oneOfType","arrayOf","number"],"mappings":";;;;;IA6BaA,YAAgC,GAAG;AAC9CC,EAAAA,iBAAiB,EAAEC,cAD2B;AAE9CC,EAAAA,aAAa,EAAEC,mBAF+B;AAG9CC,EAAAA,SAAS,EAAEC,SAHmC;AAI9CC,EAAAA,UAAU,EAAE,KAJkC;AAK9CC,EAAAA,MAAM,EAAE,SALsC;AAM9CC,EAAAA,SAAS,EAAEH,SANmC;AAO9CI,EAAAA,YAAY,EAAEJ,SAPgC;AAQ9CK,EAAAA,eAAe,EAAEC,IAR6B;AAS9CC,EAAAA,cAAc,EAAEP,SAT8B;AAU9CQ,EAAAA,WAAW,EAAE;AACXC,IAAAA,KAAK,EAAE,iBADI;AAEXC,IAAAA,SAAS,EAAE,MAFA;AAGXC,IAAAA,MAAM,EAAEL,IAHG;AAIXM,IAAAA,OAAO,EAAEN;AAJE,GAViC;AAgB9CO,EAAAA,eAAe,EAAEb,SAhB6B;AAiB9Cc,EAAAA,WAAW,EAAE;AAjBiC;IAoBnCC,cAAc,GAAG;AAC5BpB,EAAAA,iBAAiB,EAAEqB,SAAS,CAACC,MAAV,CAChBC,WADgB,CACJ,mDADI,EAEhBC,YAFgB,CAEHzB,YAAY,CAACC,iBAFV,CADS;AAI5BE,EAAAA,aAAa,EAAEmB,SAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,wBAA7B,EAAuDC,YAAvD,CAAoEzB,YAAY,CAACG,aAAjF,CAJa;AAK5BI,EAAAA,UAAU,EAAEe,SAAS,CAACI,IAAV,CAAeF,WAAf,CAA2B,iCAA3B,EAA8DC,YAA9D,CAA2EzB,YAAY,CAACO,UAAxF,CALgB;AAM5BC,EAAAA,MAAM,EAAEc,SAAS,CAACK,MAAV,CACLH,WADK,CACO,mDADP,EAELC,YAFK,CAEQzB,YAAY,CAACQ,MAFrB,CANoB;AAS5BC,EAAAA,SAAS,EAAEa,SAAS,CAACM,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBtB,SAAlB,CAAhB,EAA8CkB,WAA9C,CACT,2EADS,CATiB;AAY5Bd,EAAAA,YAAY,EAAEY,SAAS,CAACM,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBtB,SAAlB,CAAhB,EAA8CkB,WAA9C,CACZ,iEADY,CAZc;AAe5Bb,EAAAA,eAAe,EAAEW,SAAS,CAACO,IAAV,CACdL,WADc,CACF,0CADE,EAEdC,YAFc,CAEDzB,YAAY,CAACW,eAFZ,CAfW;AAkB5BE,EAAAA,cAAc,EAAES,SAAS,CAACM,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBtB,SAAlB,CAAhB,EAA8CkB,WAA9C,CACd,2EADc,CAlBY;AAqB5BV,EAAAA,WAAW,EAAEQ,SAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,sBAA7B,EAAqDC,YAArD,CAAkEzB,YAAY,CAACc,WAA/E,CArBe;AAsB5BK,EAAAA,eAAe,EAAEG,SAAS,CAACQ,SAAV,CAAoB,CAACR,SAAS,CAACS,OAAV,CAAkBT,SAAS,CAACK,MAA5B,CAAD,EAAsCL,SAAS,CAACS,OAAV,CAAkBT,SAAS,CAACU,MAA5B,CAAtC,CAApB,EACdR,WADc,CACF,kCADE,EAEdC,YAFc,CAEDzB,YAAY,CAACmB,eAFZ,CAtBW;AAyB5BC,EAAAA,WAAW,EAAEE,SAAS,CAACK,MAAV,CACVH,WADU,CACE,kDADF,EAEVC,YAFU,CAEGzB,YAAY,CAACoB,WAFhB,CAzBe;AA4B5Bf,EAAAA,SAAS,EAAEiB,SAAS,CAACC,MAAV,CACRC,WADQ,oTAcRC,YAdQ,CAcKzB,YAAY,CAACK,SAdlB;AA5BiB;;;;"}
@@ -41,7 +41,7 @@ var getPadding = function getPadding(hasMoreItems) {
41
41
  };
42
42
 
43
43
  var ChatContainerMessagesList = function ChatContainerMessagesList(props) {
44
- useValidateProps(props, ChatContainerMessagesListWithSchema.toJSON());
44
+ useValidateProps(props, ChatContainerMessagesListWithSchema.toTypescript());
45
45
  var sendingText = props.sendingText,
46
46
  sendingMessages = props.sendingMessages,
47
47
  messages = props.messages,
@@ -1 +1 @@
1
- {"version":3,"file":"ChatContainerMessagesList.js","sources":["../../../../src/parts/chat-container-messages-list/ChatContainerMessagesList.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n/* eslint-disable max-lines */\nimport React, { CSSProperties } from 'react';\nimport { describe } from 'react-desc';\nimport { useVirtual } from 'react-virtual';\nimport DSButton from '@elliemae/ds-basic/Button';\nimport { ChatBubble, BUBBLE_TYPES } from '../bubble';\nimport { MessageDelimiter } from '../message-delimiter';\nimport { SystemMessage } from '../system-message';\nimport {\n StyledWrapperListItem,\n StyledChatContainerContentList,\n StyledChatContainerContentListScroll,\n StyledWrapper,\n StyledLoadMoreContainer,\n ListItem,\n} from './styled';\nimport { defaultProps, listProps, ChatContainerMessagesListProps } from './props';\nimport { useValidateProps } from './config/useValidateProps';\n\nconst getPadding = (hasMoreItems) => {\n const padding = {\n paddingStart: 0,\n paddingEnd: -5,\n };\n if (hasMoreItems === 'top') padding.paddingStart = 42;\n else if (hasMoreItems === 'bottom') padding.paddingEnd = 42;\n return padding;\n};\n\nconst ChatContainerMessagesList = (props: ChatContainerMessagesListProps): JSX.Element => {\n useValidateProps(props, ChatContainerMessagesListWithSchema.toJSON());\n\n const { sendingText, sendingMessages, messages, actionRef, onScrollEnds, getMoreMessages, hasMoreItems, isLoading } =\n props;\n const virtualListRef = React.useRef<HTMLDivElement>();\n // estimateSize should not be really required given what was stated on\n // https://github.com/tannerlinsley/react-virtual/issues/23\n const {\n scrollToIndex: vScroll,\n totalSize,\n virtualItems,\n } = useVirtual({\n size: messages.length,\n parentRef: virtualListRef,\n overscan: 15,\n ...getPadding(hasMoreItems),\n estimateSize: React.useCallback(() => 80, []),\n });\n\n const onScrollStop = React.useCallback((): number[] => {\n const { bottom, top } = virtualListRef.current.getBoundingClientRect();\n const list = virtualListRef.current.querySelectorAll(\n '[data-element=\"chat-element-list-item\"]',\n ) as NodeListOf<HTMLDivElement>;\n const indexList = [];\n list.forEach((item: HTMLDivElement) => {\n const { top: itemTop } = item.getBoundingClientRect();\n if (itemTop < bottom && itemTop > top) indexList.push(item.dataset.index);\n });\n if (onScrollEnds) onScrollEnds(indexList);\n return indexList;\n }, [onScrollEnds]);\n\n const scrollAndFocus = React.useCallback(\n (index: number) => {\n vScroll(index, { align: 'center' });\n setTimeout(() => {\n (virtualListRef.current.querySelector(`[data-index=\"${index}\"]`) as HTMLDivElement).focus();\n }, 300);\n },\n [vScroll],\n );\n\n React.useEffect(() => {\n if (actionRef && actionRef.current) {\n actionRef.current.scrollToIndex = (a, b = { align: 'center' }) => {\n vScroll(a, b);\n };\n actionRef.current.getMessagesInView = onScrollStop;\n actionRef.current.focusToIndex = (a, b = { align: 'center' }) => {\n scrollAndFocus(a);\n };\n actionRef.current.focusToList = (a, b = { align: 'center' }) => {\n virtualListRef.current?.focus();\n };\n }\n }, [actionRef, onScrollStop, scrollAndFocus, vScroll]);\n\n const handleKey = React.useCallback(\n (e) => {\n e.preventDefault();\n const { key } = e;\n const index = Number(e.currentTarget.dataset.index);\n switch (key) {\n case 'ArrowUp':\n if (index > 0)\n (virtualListRef.current.querySelector(`[data-index=\"${index - 1}\"]`) as HTMLDivElement).focus();\n break;\n case 'ArrowDown':\n if (index < messages.length - 1) {\n (virtualListRef.current.querySelector(`[data-index=\"${index + 1}\"]`) as HTMLDivElement).focus();\n }\n break;\n case 'Home':\n scrollAndFocus(0);\n break;\n case 'End':\n scrollAndFocus(messages.length - 1);\n break;\n case 'Tab':\n actionRef.current.focusToComposer();\n break;\n default:\n break;\n }\n },\n [actionRef, messages.length, scrollAndFocus],\n );\n\n React.useEffect(() => {\n let handlerCallback = null;\n const localVirtualRef = virtualListRef.current;\n const onScroll = () => {\n if (handlerCallback) clearTimeout(handlerCallback);\n handlerCallback = setTimeout(onScrollStop, 300);\n };\n if (onScrollEnds) {\n virtualListRef.current.addEventListener('scroll', onScroll);\n }\n return () => {\n if (handlerCallback) clearTimeout(handlerCallback);\n if (onScrollEnds) localVirtualRef.removeEventListener('scroll', onScroll);\n };\n }, [onScrollStop, onScrollEnds]);\n\n const render = React.useMemo(\n () =>\n virtualItems.map((virtualItem) => {\n const { index, measureRef, start } = virtualItem;\n const row = messages[index];\n const isSending = sendingMessages && sendingMessages.find((m) => m === row.dsId);\n const style: CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n transform: `translateY(${start}px)`,\n width: '100%',\n };\n\n return (\n <ListItem\n data-element=\"chat-element-list-item\"\n data-index={index}\n key={`ds-chat-bubble-${index}`}\n style={style}\n ref={measureRef}\n tabIndex={0}\n onKeyDown={handleKey}\n role=\"listitem\"\n >\n <StyledWrapperListItem type={row.type}>\n {row.type === BUBBLE_TYPES.SENDER || row.type === BUBBLE_TYPES.RECIPIENT ? (\n // eslint-disable-next-line\n <ChatBubble {...(row as any)} helpMessage={isSending ? sendingText : row.helpMessage} />\n ) : null}\n {row.type === BUBBLE_TYPES.DELIMITER ? <MessageDelimiter {...(row as any)} /> : null}\n {row.type === BUBBLE_TYPES.SYSTEM ? <SystemMessage {...(row as any)} /> : null}\n </StyledWrapperListItem>\n </ListItem>\n );\n }),\n [virtualItems, messages, sendingMessages, handleKey, sendingText],\n );\n\n return (\n <StyledWrapper>\n <StyledChatContainerContentList\n data-testid=\"chat-thread-container\"\n tabIndex={0}\n aria-live=\"polite\"\n ref={virtualListRef}\n role=\"list\"\n onKeyDown={handleKey}\n >\n <StyledChatContainerContentListScroll height={`${totalSize}px`}>\n {render}\n {!isLoading && hasMoreItems ? (\n <StyledLoadMoreContainer hasMoreItems={hasMoreItems}>\n <DSButton labelText=\"Load More\" buttonType=\"secondary\" onClick={getMoreMessages} />\n </StyledLoadMoreContainer>\n ) : null}\n </StyledChatContainerContentListScroll>\n </StyledChatContainerContentList>\n </StyledWrapper>\n );\n};\n\nChatContainerMessagesList.propTypes = listProps;\nChatContainerMessagesList.defaultProps = defaultProps;\nconst ChatContainerMessagesListWithSchema = describe(ChatContainerMessagesList);\nChatContainerMessagesListWithSchema.propTypes = listProps;\n\nexport { ChatContainerMessagesList, ChatContainerMessagesListWithSchema };\n"],"names":["getPadding","hasMoreItems","padding","paddingStart","paddingEnd","ChatContainerMessagesList","props","useValidateProps","ChatContainerMessagesListWithSchema","toJSON","sendingText","sendingMessages","messages","actionRef","onScrollEnds","getMoreMessages","isLoading","virtualListRef","React","useRef","useVirtual","size","length","parentRef","overscan","estimateSize","useCallback","vScroll","scrollToIndex","totalSize","virtualItems","onScrollStop","current","getBoundingClientRect","bottom","top","list","querySelectorAll","indexList","forEach","item","itemTop","push","dataset","index","scrollAndFocus","align","setTimeout","querySelector","focus","useEffect","a","b","getMessagesInView","focusToIndex","focusToList","handleKey","e","preventDefault","key","Number","currentTarget","focusToComposer","handlerCallback","localVirtualRef","onScroll","clearTimeout","addEventListener","removeEventListener","render","useMemo","map","virtualItem","measureRef","start","row","isSending","find","m","dsId","style","position","left","transform","width","type","BUBBLE_TYPES","SENDER","RECIPIENT","helpMessage","DELIMITER","SYSTEM","propTypes","listProps","defaultProps","describe"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,IAAMA,UAAU,GAAG,SAAbA,UAAa,CAACC,YAAD,EAAkB;AACnC,MAAMC,OAAO,GAAG;AACdC,IAAAA,YAAY,EAAE,CADA;AAEdC,IAAAA,UAAU,EAAE,CAAC;AAFC,GAAhB;AAIA,MAAIH,YAAY,KAAK,KAArB,EAA4BC,OAAO,CAACC,YAAR,GAAuB,EAAvB,CAA5B,KACK,IAAIF,YAAY,KAAK,QAArB,EAA+BC,OAAO,CAACE,UAAR,GAAqB,EAArB;AACpC,SAAOF,OAAP;AACD,CARD;;IAUMG,yBAAyB,GAAG,SAA5BA,yBAA4B,CAACC,KAAD,EAAwD;AACxFC,EAAAA,gBAAgB,CAACD,KAAD,EAAQE,mCAAmC,CAACC,MAApC,EAAR,CAAhB;AAEA,MAAQC,WAAR,GACEJ,KADF,CAAQI,WAAR;AAAA,MAAqBC,eAArB,GACEL,KADF,CAAqBK,eAArB;AAAA,MAAsCC,QAAtC,GACEN,KADF,CAAsCM,QAAtC;AAAA,MAAgDC,SAAhD,GACEP,KADF,CAAgDO,SAAhD;AAAA,MAA2DC,YAA3D,GACER,KADF,CAA2DQ,YAA3D;AAAA,MAAyEC,eAAzE,GACET,KADF,CAAyES,eAAzE;AAAA,MAA0Fd,YAA1F,GACEK,KADF,CAA0FL,YAA1F;AAAA,MAAwGe,SAAxG,GACEV,KADF,CAAwGU,SAAxG;AAEA,MAAMC,cAAc,GAAGC,KAAK,CAACC,MAAN,EAAvB,CALwF;AAOxF;;AACA,oBAIIC,UAAU;AACZC,IAAAA,IAAI,EAAET,QAAQ,CAACU,MADH;AAEZC,IAAAA,SAAS,EAAEN,cAFC;AAGZO,IAAAA,QAAQ,EAAE;AAHE,KAITxB,UAAU,CAACC,YAAD,CAJD;AAKZwB,IAAAA,YAAY,EAAEP,KAAK,CAACQ,WAAN,CAAkB;AAAA,aAAM,EAAN;AAAA,KAAlB,EAA4B,EAA5B;AALF,KAJd;AAAA,MACiBC,OADjB,eACEC,aADF;AAAA,MAEEC,SAFF,eAEEA,SAFF;AAAA,MAGEC,YAHF,eAGEA,YAHF;;AAYA,MAAMC,YAAY,GAAGb,KAAK,CAACQ,WAAN,CAAkB,YAAgB;AACrD,gCAAwBT,cAAc,CAACe,OAAf,CAAuBC,qBAAvB,EAAxB;AAAA,QAAQC,MAAR,yBAAQA,MAAR;AAAA,QAAgBC,GAAhB,yBAAgBA,GAAhB;;AACA,QAAMC,IAAI,GAAGnB,cAAc,CAACe,OAAf,CAAuBK,gBAAvB,CACX,yCADW,CAAb;AAGA,QAAMC,SAAS,GAAG,EAAlB;AACAF,IAAAA,IAAI,CAACG,OAAL,CAAa,UAACC,IAAD,EAA0B;AACrC,kCAAyBA,IAAI,CAACP,qBAAL,EAAzB;AAAA,UAAaQ,OAAb,yBAAQN,GAAR;;AACA,UAAIM,OAAO,GAAGP,MAAV,IAAoBO,OAAO,GAAGN,GAAlC,EAAuCG,SAAS,CAACI,IAAV,CAAeF,IAAI,CAACG,OAAL,CAAaC,KAA5B;AACxC,KAHD;AAIA,QAAI9B,YAAJ,EAAkBA,YAAY,CAACwB,SAAD,CAAZ;AAClB,WAAOA,SAAP;AACD,GAZoB,EAYlB,CAACxB,YAAD,CAZkB,CAArB;AAcA,MAAM+B,cAAc,GAAG3B,KAAK,CAACQ,WAAN,CACrB,UAACkB,KAAD,EAAmB;AACjBjB,IAAAA,OAAO,CAACiB,KAAD,EAAQ;AAAEE,MAAAA,KAAK,EAAE;AAAT,KAAR,CAAP;AACAC,IAAAA,UAAU,CAAC,YAAM;AACd9B,MAAAA,cAAc,CAACe,OAAf,CAAuBgB,aAAvB,yBAAqDJ,KAArD,SAAD,CAAoFK,KAApF;AACD,KAFS,EAEP,GAFO,CAAV;AAGD,GANoB,EAOrB,CAACtB,OAAD,CAPqB,CAAvB;AAUAT,EAAAA,KAAK,CAACgC,SAAN,CAAgB,YAAM;AACpB,QAAIrC,SAAS,IAAIA,SAAS,CAACmB,OAA3B,EAAoC;AAClCnB,MAAAA,SAAS,CAACmB,OAAV,CAAkBJ,aAAlB,GAAkC,UAACuB,CAAD,EAAgC;AAAA,YAA5BC,CAA4B,uEAAxB;AAAEN,UAAAA,KAAK,EAAE;AAAT,SAAwB;AAChEnB,QAAAA,OAAO,CAACwB,CAAD,EAAIC,CAAJ,CAAP;AACD,OAFD;;AAGAvC,MAAAA,SAAS,CAACmB,OAAV,CAAkBqB,iBAAlB,GAAsCtB,YAAtC;;AACAlB,MAAAA,SAAS,CAACmB,OAAV,CAAkBsB,YAAlB,GAAiC,UAACH,CAAD,EAAgC;AAC/DN,QAAAA,cAAc,CAACM,CAAD,CAAd;AACD,OAFD;;AAGAtC,MAAAA,SAAS,CAACmB,OAAV,CAAkBuB,WAAlB,GAAgC,UAACJ,CAAD,EAAgC;AAAA;AAC9D,kCAAAlC,cAAc,CAACe,OAAf,kFAAwBiB,KAAxB;AACD,OAFD;AAGD;AACF,GAbD,EAaG,CAACpC,SAAD,EAAYkB,YAAZ,EAA0Bc,cAA1B,EAA0ClB,OAA1C,CAbH;AAeA,MAAM6B,SAAS,GAAGtC,KAAK,CAACQ,WAAN,CAChB,UAAC+B,CAAD,EAAO;AACLA,IAAAA,CAAC,CAACC,cAAF;AACA,QAAQC,GAAR,GAAgBF,CAAhB,CAAQE,GAAR;AACA,QAAMf,KAAK,GAAGgB,MAAM,CAACH,CAAC,CAACI,aAAF,CAAgBlB,OAAhB,CAAwBC,KAAzB,CAApB;;AACA,YAAQe,GAAR;AACE,WAAK,SAAL;AACE,YAAIf,KAAK,GAAG,CAAZ,EACG3B,cAAc,CAACe,OAAf,CAAuBgB,aAAvB,yBAAqDJ,KAAK,GAAG,CAA7D,SAAD,CAAwFK,KAAxF;AACF;;AACF,WAAK,WAAL;AACE,YAAIL,KAAK,GAAGhC,QAAQ,CAACU,MAAT,GAAkB,CAA9B,EAAiC;AAC9BL,UAAAA,cAAc,CAACe,OAAf,CAAuBgB,aAAvB,yBAAqDJ,KAAK,GAAG,CAA7D,SAAD,CAAwFK,KAAxF;AACD;;AACD;;AACF,WAAK,MAAL;AACEJ,QAAAA,cAAc,CAAC,CAAD,CAAd;AACA;;AACF,WAAK,KAAL;AACEA,QAAAA,cAAc,CAACjC,QAAQ,CAACU,MAAT,GAAkB,CAAnB,CAAd;AACA;;AACF,WAAK,KAAL;AACET,QAAAA,SAAS,CAACmB,OAAV,CAAkB8B,eAAlB;AACA;AAlBJ;AAsBD,GA3Be,EA4BhB,CAACjD,SAAD,EAAYD,QAAQ,CAACU,MAArB,EAA6BuB,cAA7B,CA5BgB,CAAlB;AA+BA3B,EAAAA,KAAK,CAACgC,SAAN,CAAgB,YAAM;AACpB,QAAIa,eAAe,GAAG,IAAtB;AACA,QAAMC,eAAe,GAAG/C,cAAc,CAACe,OAAvC;;AACA,QAAMiC,QAAQ,GAAG,SAAXA,QAAW,GAAM;AACrB,UAAIF,eAAJ,EAAqBG,YAAY,CAACH,eAAD,CAAZ;AACrBA,MAAAA,eAAe,GAAGhB,UAAU,CAAChB,YAAD,EAAe,GAAf,CAA5B;AACD,KAHD;;AAIA,QAAIjB,YAAJ,EAAkB;AAChBG,MAAAA,cAAc,CAACe,OAAf,CAAuBmC,gBAAvB,CAAwC,QAAxC,EAAkDF,QAAlD;AACD;;AACD,WAAO,YAAM;AACX,UAAIF,eAAJ,EAAqBG,YAAY,CAACH,eAAD,CAAZ;AACrB,UAAIjD,YAAJ,EAAkBkD,eAAe,CAACI,mBAAhB,CAAoC,QAApC,EAA8CH,QAA9C;AACnB,KAHD;AAID,GAdD,EAcG,CAAClC,YAAD,EAAejB,YAAf,CAdH;AAgBA,MAAMuD,MAAM,GAAGnD,KAAK,CAACoD,OAAN,CACb;AAAA,WACExC,YAAY,CAACyC,GAAb,CAAiB,UAACC,WAAD,EAAiB;AAChC,UAAQ5B,KAAR,GAAqC4B,WAArC,CAAQ5B,KAAR;AAAA,UAAe6B,UAAf,GAAqCD,WAArC,CAAeC,UAAf;AAAA,UAA2BC,KAA3B,GAAqCF,WAArC,CAA2BE,KAA3B;AACA,UAAMC,GAAG,GAAG/D,QAAQ,CAACgC,KAAD,CAApB;AACA,UAAMgC,SAAS,GAAGjE,eAAe,IAAIA,eAAe,CAACkE,IAAhB,CAAqB,UAACC,CAAD;AAAA,eAAOA,CAAC,KAAKH,GAAG,CAACI,IAAjB;AAAA,OAArB,CAArC;AACA,UAAMC,KAAoB,GAAG;AAC3BC,QAAAA,QAAQ,EAAE,UADiB;AAE3B9C,QAAAA,GAAG,EAAE,CAFsB;AAG3B+C,QAAAA,IAAI,EAAE,CAHqB;AAI3BC,QAAAA,SAAS,uBAAgBT,KAAhB,QAJkB;AAK3BU,QAAAA,KAAK,EAAE;AALoB,OAA7B;AAQA,0BACE,oBAAC,QAAD;AACE,wBAAa,wBADf;AAEE,sBAAYxC,KAFd;AAGE,QAAA,GAAG,2BAAoBA,KAApB,CAHL;AAIE,QAAA,KAAK,EAAEoC,KAJT;AAKE,QAAA,GAAG,EAAEP,UALP;AAME,QAAA,QAAQ,EAAE,CANZ;AAOE,QAAA,SAAS,EAAEjB,SAPb;AAQE,QAAA,IAAI,EAAC;AARP,sBAUE,oBAAC,qBAAD;AAAuB,QAAA,IAAI,EAAEmB,GAAG,CAACU;AAAjC,SACGV,GAAG,CAACU,IAAJ,KAAaC,YAAY,CAACC,MAA1B,IAAoCZ,GAAG,CAACU,IAAJ,KAAaC,YAAY,CAACE,SAA9D;AAAA;AACC;AACA,0BAAC,UAAD,eAAiBb,GAAjB;AAA8B,QAAA,WAAW,EAAEC,SAAS,GAAGlE,WAAH,GAAiBiE,GAAG,CAACc;AAAzE,SAFD,GAGG,IAJN,EAKGd,GAAG,CAACU,IAAJ,KAAaC,YAAY,CAACI,SAA1B,gBAAsC,oBAAC,gBAAD,EAAuBf,GAAvB,CAAtC,GAA+E,IALlF,EAMGA,GAAG,CAACU,IAAJ,KAAaC,YAAY,CAACK,MAA1B,gBAAmC,oBAAC,aAAD,EAAoBhB,GAApB,CAAnC,GAAyE,IAN5E,CAVF,CADF;AAqBD,KAjCD,CADF;AAAA,GADa,EAoCb,CAAC7C,YAAD,EAAelB,QAAf,EAAyBD,eAAzB,EAA0C6C,SAA1C,EAAqD9C,WAArD,CApCa,CAAf;AAuCA,sBACE,oBAAC,aAAD,qBACE,oBAAC,8BAAD;AACE,mBAAY,uBADd;AAEE,IAAA,QAAQ,EAAE,CAFZ;AAGE,iBAAU,QAHZ;AAIE,IAAA,GAAG,EAAEO,cAJP;AAKE,IAAA,IAAI,EAAC,MALP;AAME,IAAA,SAAS,EAAEuC;AANb,kBAQE,oBAAC,oCAAD;AAAsC,IAAA,MAAM,YAAK3B,SAAL;AAA5C,KACGwC,MADH,EAEG,CAACrD,SAAD,IAAcf,YAAd,gBACC,oBAAC,uBAAD;AAAyB,IAAA,YAAY,EAAEA;AAAvC,kBACE,oBAAC,QAAD;AAAU,IAAA,SAAS,EAAC,WAApB;AAAgC,IAAA,UAAU,EAAC,WAA3C;AAAuD,IAAA,OAAO,EAAEc;AAAhE,IADF,CADD,GAIG,IANN,CARF,CADF,CADF;AAqBD;;AAEDV,yBAAyB,CAACuF,SAA1B,GAAsCC,SAAtC;AACAxF,yBAAyB,CAACyF,YAA1B,GAAyCA,YAAzC;IACMtF,mCAAmC,GAAGuF,QAAQ,CAAC1F,yBAAD;AACpDG,mCAAmC,CAACoF,SAApC,GAAgDC,SAAhD;;;;"}
1
+ {"version":3,"file":"ChatContainerMessagesList.js","sources":["../../../../src/parts/chat-container-messages-list/ChatContainerMessagesList.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n/* eslint-disable max-lines */\nimport React, { CSSProperties } from 'react';\nimport { describe } from 'react-desc';\nimport { useVirtual } from 'react-virtual';\nimport DSButton from '@elliemae/ds-basic/Button';\nimport { ChatBubble, BUBBLE_TYPES } from '../bubble';\nimport { MessageDelimiter } from '../message-delimiter';\nimport { SystemMessage } from '../system-message';\nimport {\n StyledWrapperListItem,\n StyledChatContainerContentList,\n StyledChatContainerContentListScroll,\n StyledWrapper,\n StyledLoadMoreContainer,\n ListItem,\n} from './styled';\nimport { defaultProps, listProps, ChatContainerMessagesListProps } from './props';\nimport { useValidateProps } from './config/useValidateProps';\n\nconst getPadding = (hasMoreItems) => {\n const padding = {\n paddingStart: 0,\n paddingEnd: -5,\n };\n if (hasMoreItems === 'top') padding.paddingStart = 42;\n else if (hasMoreItems === 'bottom') padding.paddingEnd = 42;\n return padding;\n};\n\nconst ChatContainerMessagesList = (props: ChatContainerMessagesListProps): JSX.Element => {\n useValidateProps(props, ChatContainerMessagesListWithSchema.toTypescript());\n\n const { sendingText, sendingMessages, messages, actionRef, onScrollEnds, getMoreMessages, hasMoreItems, isLoading } =\n props;\n const virtualListRef = React.useRef<HTMLDivElement>();\n // estimateSize should not be really required given what was stated on\n // https://github.com/tannerlinsley/react-virtual/issues/23\n const {\n scrollToIndex: vScroll,\n totalSize,\n virtualItems,\n } = useVirtual({\n size: messages.length,\n parentRef: virtualListRef,\n overscan: 15,\n ...getPadding(hasMoreItems),\n estimateSize: React.useCallback(() => 80, []),\n });\n\n const onScrollStop = React.useCallback((): number[] => {\n const { bottom, top } = virtualListRef.current.getBoundingClientRect();\n const list = virtualListRef.current.querySelectorAll(\n '[data-element=\"chat-element-list-item\"]',\n ) as NodeListOf<HTMLDivElement>;\n const indexList = [];\n list.forEach((item: HTMLDivElement) => {\n const { top: itemTop } = item.getBoundingClientRect();\n if (itemTop < bottom && itemTop > top) indexList.push(item.dataset.index);\n });\n if (onScrollEnds) onScrollEnds(indexList);\n return indexList;\n }, [onScrollEnds]);\n\n const scrollAndFocus = React.useCallback(\n (index: number) => {\n vScroll(index, { align: 'center' });\n setTimeout(() => {\n (virtualListRef.current.querySelector(`[data-index=\"${index}\"]`) as HTMLDivElement).focus();\n }, 300);\n },\n [vScroll],\n );\n\n React.useEffect(() => {\n if (actionRef && actionRef.current) {\n actionRef.current.scrollToIndex = (a, b = { align: 'center' }) => {\n vScroll(a, b);\n };\n actionRef.current.getMessagesInView = onScrollStop;\n actionRef.current.focusToIndex = (a, b = { align: 'center' }) => {\n scrollAndFocus(a);\n };\n actionRef.current.focusToList = (a, b = { align: 'center' }) => {\n virtualListRef.current?.focus();\n };\n }\n }, [actionRef, onScrollStop, scrollAndFocus, vScroll]);\n\n const handleKey = React.useCallback(\n (e) => {\n e.preventDefault();\n const { key } = e;\n const index = Number(e.currentTarget.dataset.index);\n switch (key) {\n case 'ArrowUp':\n if (index > 0)\n (virtualListRef.current.querySelector(`[data-index=\"${index - 1}\"]`) as HTMLDivElement).focus();\n break;\n case 'ArrowDown':\n if (index < messages.length - 1) {\n (virtualListRef.current.querySelector(`[data-index=\"${index + 1}\"]`) as HTMLDivElement).focus();\n }\n break;\n case 'Home':\n scrollAndFocus(0);\n break;\n case 'End':\n scrollAndFocus(messages.length - 1);\n break;\n case 'Tab':\n actionRef.current.focusToComposer();\n break;\n default:\n break;\n }\n },\n [actionRef, messages.length, scrollAndFocus],\n );\n\n React.useEffect(() => {\n let handlerCallback = null;\n const localVirtualRef = virtualListRef.current;\n const onScroll = () => {\n if (handlerCallback) clearTimeout(handlerCallback);\n handlerCallback = setTimeout(onScrollStop, 300);\n };\n if (onScrollEnds) {\n virtualListRef.current.addEventListener('scroll', onScroll);\n }\n return () => {\n if (handlerCallback) clearTimeout(handlerCallback);\n if (onScrollEnds) localVirtualRef.removeEventListener('scroll', onScroll);\n };\n }, [onScrollStop, onScrollEnds]);\n\n const render = React.useMemo(\n () =>\n virtualItems.map((virtualItem) => {\n const { index, measureRef, start } = virtualItem;\n const row = messages[index];\n const isSending = sendingMessages && sendingMessages.find((m) => m === row.dsId);\n const style: CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n transform: `translateY(${start}px)`,\n width: '100%',\n };\n\n return (\n <ListItem\n data-element=\"chat-element-list-item\"\n data-index={index}\n key={`ds-chat-bubble-${index}`}\n style={style}\n ref={measureRef}\n tabIndex={0}\n onKeyDown={handleKey}\n role=\"listitem\"\n >\n <StyledWrapperListItem type={row.type}>\n {row.type === BUBBLE_TYPES.SENDER || row.type === BUBBLE_TYPES.RECIPIENT ? (\n // eslint-disable-next-line\n <ChatBubble {...(row as any)} helpMessage={isSending ? sendingText : row.helpMessage} />\n ) : null}\n {row.type === BUBBLE_TYPES.DELIMITER ? <MessageDelimiter {...(row as any)} /> : null}\n {row.type === BUBBLE_TYPES.SYSTEM ? <SystemMessage {...(row as any)} /> : null}\n </StyledWrapperListItem>\n </ListItem>\n );\n }),\n [virtualItems, messages, sendingMessages, handleKey, sendingText],\n );\n\n return (\n <StyledWrapper>\n <StyledChatContainerContentList\n data-testid=\"chat-thread-container\"\n tabIndex={0}\n aria-live=\"polite\"\n ref={virtualListRef}\n role=\"list\"\n onKeyDown={handleKey}\n >\n <StyledChatContainerContentListScroll height={`${totalSize}px`}>\n {render}\n {!isLoading && hasMoreItems ? (\n <StyledLoadMoreContainer hasMoreItems={hasMoreItems}>\n <DSButton labelText=\"Load More\" buttonType=\"secondary\" onClick={getMoreMessages} />\n </StyledLoadMoreContainer>\n ) : null}\n </StyledChatContainerContentListScroll>\n </StyledChatContainerContentList>\n </StyledWrapper>\n );\n};\n\nChatContainerMessagesList.propTypes = listProps;\nChatContainerMessagesList.defaultProps = defaultProps;\nconst ChatContainerMessagesListWithSchema = describe(ChatContainerMessagesList);\nChatContainerMessagesListWithSchema.propTypes = listProps;\n\nexport { ChatContainerMessagesList, ChatContainerMessagesListWithSchema };\n"],"names":["getPadding","hasMoreItems","padding","paddingStart","paddingEnd","ChatContainerMessagesList","props","useValidateProps","ChatContainerMessagesListWithSchema","toTypescript","sendingText","sendingMessages","messages","actionRef","onScrollEnds","getMoreMessages","isLoading","virtualListRef","React","useRef","useVirtual","size","length","parentRef","overscan","estimateSize","useCallback","vScroll","scrollToIndex","totalSize","virtualItems","onScrollStop","current","getBoundingClientRect","bottom","top","list","querySelectorAll","indexList","forEach","item","itemTop","push","dataset","index","scrollAndFocus","align","setTimeout","querySelector","focus","useEffect","a","b","getMessagesInView","focusToIndex","focusToList","handleKey","e","preventDefault","key","Number","currentTarget","focusToComposer","handlerCallback","localVirtualRef","onScroll","clearTimeout","addEventListener","removeEventListener","render","useMemo","map","virtualItem","measureRef","start","row","isSending","find","m","dsId","style","position","left","transform","width","type","BUBBLE_TYPES","SENDER","RECIPIENT","helpMessage","DELIMITER","SYSTEM","propTypes","listProps","defaultProps","describe"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { useValidatePropTypes } from '@elliemae/ds-props-helpers';
1
+ import { useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';
2
2
 
3
3
  var useValidateProps = function useValidateProps(props, schema) {
4
- useValidatePropTypes(props, schema);
4
+ useValidateTypescriptPropTypes(props, schema);
5
5
  };
6
6
 
7
7
  export { useValidateProps };
@@ -1 +1 @@
1
- {"version":3,"file":"useValidateProps.js","sources":["../../../../../src/parts/chat-container-messages-list/config/useValidateProps.tsx"],"sourcesContent":["import { useValidatePropTypes } from '@elliemae/ds-props-helpers';\nimport { ChatContainerMessagesListProps } from '../props';\n\nexport const useValidateProps = (props: ChatContainerMessagesListProps, schema: unknown): void => {\n useValidatePropTypes(props, schema);\n};\n"],"names":["useValidateProps","props","schema","useValidatePropTypes"],"mappings":";;IAGaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAwCC,MAAxC,EAAkE;AAChGC,EAAAA,oBAAoB,CAACF,KAAD,EAAQC,MAAR,CAApB;AACD;;;;"}
1
+ {"version":3,"file":"useValidateProps.js","sources":["../../../../../src/parts/chat-container-messages-list/config/useValidateProps.tsx"],"sourcesContent":["import { useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport { ChatContainerMessagesListProps } from '../props';\n\nexport const useValidateProps = (props: ChatContainerMessagesListProps, schema: unknown): void => {\n useValidateTypescriptPropTypes(props, schema);\n};\n"],"names":["useValidateProps","props","schema","useValidateTypescriptPropTypes"],"mappings":";;IAGaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAwCC,MAAxC,EAAkE;AAChGC,EAAAA,8BAA8B,CAACF,KAAD,EAAQC,MAAR,CAA9B;AACD;;;;"}
@@ -18,7 +18,7 @@ var listProps = {
18
18
  isLoading: PropTypes.oneOf(['top', 'bottom', undefined]).description('Keeps the load more space while the loading is in progress'),
19
19
  hasMoreItems: PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Load More button at the `top` or `bottom` of the container'),
20
20
  getMoreMessages: PropTypes.func.description('Called when the user clicks on load more').defaultValue(defaultProps.getMoreMessages),
21
- sendingMessages: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])).description('Array of ids of sending messages').defaultValue(defaultProps.sendingMessages),
21
+ sendingMessages: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.arrayOf(PropTypes.number)]).description('Array of ids of sending messages').defaultValue(defaultProps.sendingMessages),
22
22
  sendingText: PropTypes.string.description('Label description for messages in sending status').defaultValue(defaultProps.sendingText)
23
23
  };
24
24
 
@@ -1 +1 @@
1
- {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-container-messages-list/props.ts"],"sourcesContent":["import { Ref } from 'react';\nimport { PropTypes } from 'react-desc';\nimport { noop } from 'lodash';\nimport { BubbleProps } from '../bubble/props';\n\ninterface ActionRef {\n scrollToIndex: (n: number, b: { align: 'end' | 'center' | 'start' }) => void;\n getMessagesInView: () => number[];\n}\nexport interface ChatContainerMessagesListProps {\n messages: BubbleProps[];\n actionRef: any;\n onScrollEnds: (indexList: number[]) => number[];\n isLoading?: 'top' | 'bottom';\n hasMoreItems?: 'top' | 'bottom';\n getMoreMessages: PropTypes.func;\n sendingMessages?: Array<string | number>;\n sendingText: string;\n}\n\nexport const defaultProps: ChatContainerMessagesListProps = {\n messages: [],\n actionRef: noop,\n onScrollEnds: () => [],\n getMoreMessages: noop,\n sendingMessages: undefined,\n sendingText: 'Sending',\n};\n\nexport const listProps = {\n messages: PropTypes.arrayOf(PropTypes.object)\n .description('The array of out-of-the-box items you want to render inside the ChatMessageList')\n .defaultValue(defaultProps.messages),\n actionRef: PropTypes.object\n .description(\n `Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n `,\n )\n .defaultValue(defaultProps.actionRef),\n onScrollEnds: PropTypes.func.description(`Called when the scroll stops.`),\n isLoading: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Keeps the load more space while the loading is in progress',\n ),\n hasMoreItems: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Load More button at the `top` or `bottom` of the container',\n ),\n getMoreMessages: PropTypes.func\n .description('Called when the user clicks on load more')\n .defaultValue(defaultProps.getMoreMessages),\n sendingMessages: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n .description('Array of ids of sending messages')\n .defaultValue(defaultProps.sendingMessages),\n sendingText: PropTypes.string\n .description('Label description for messages in sending status')\n .defaultValue(defaultProps.sendingText),\n};\n"],"names":["defaultProps","messages","actionRef","noop","onScrollEnds","getMoreMessages","sendingMessages","undefined","sendingText","listProps","PropTypes","arrayOf","object","description","defaultValue","func","isLoading","oneOf","hasMoreItems","oneOfType","string","number"],"mappings":";;;IAoBaA,YAA4C,GAAG;AAC1DC,EAAAA,QAAQ,EAAE,EADgD;AAE1DC,EAAAA,SAAS,EAAEC,IAF+C;AAG1DC,EAAAA,YAAY,EAAE;AAAA,WAAM,EAAN;AAAA,GAH4C;AAI1DC,EAAAA,eAAe,EAAEF,IAJyC;AAK1DG,EAAAA,eAAe,EAAEC,SALyC;AAM1DC,EAAAA,WAAW,EAAE;AAN6C;IAS/CC,SAAS,GAAG;AACvBR,EAAAA,QAAQ,EAAES,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,EACPC,WADO,CACK,iFADL,EAEPC,YAFO,CAEMd,YAAY,CAACC,QAFnB,CADa;AAIvBC,EAAAA,SAAS,EAAEQ,SAAS,CAACE,MAAV,CACRC,WADQ,oTAcRC,YAdQ,CAcKd,YAAY,CAACE,SAdlB,CAJY;AAmBvBE,EAAAA,YAAY,EAAEM,SAAS,CAACK,IAAV,CAAeF,WAAf,iCAnBS;AAoBvBG,EAAAA,SAAS,EAAEN,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBV,SAAlB,CAAhB,EAA8CM,WAA9C,CACT,4DADS,CApBY;AAuBvBK,EAAAA,YAAY,EAAER,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBV,SAAlB,CAAhB,EAA8CM,WAA9C,CACZ,iEADY,CAvBS;AA0BvBR,EAAAA,eAAe,EAAEK,SAAS,CAACK,IAAV,CACdF,WADc,CACF,0CADE,EAEdC,YAFc,CAEDd,YAAY,CAACK,eAFZ,CA1BM;AA6BvBC,EAAAA,eAAe,EAAEI,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACS,SAAV,CAAoB,CAACT,SAAS,CAACU,MAAX,EAAmBV,SAAS,CAACW,MAA7B,CAApB,CAAlB,EACdR,WADc,CACF,kCADE,EAEdC,YAFc,CAEDd,YAAY,CAACM,eAFZ,CA7BM;AAgCvBE,EAAAA,WAAW,EAAEE,SAAS,CAACU,MAAV,CACVP,WADU,CACE,kDADF,EAEVC,YAFU,CAEGd,YAAY,CAACQ,WAFhB;AAhCU;;;;"}
1
+ {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-container-messages-list/props.ts"],"sourcesContent":["import { Ref } from 'react';\nimport { PropTypes } from 'react-desc';\nimport { noop } from 'lodash';\nimport { BubbleProps } from '../bubble/props';\n\ninterface ActionRef {\n scrollToIndex: (n: number, b: { align: 'end' | 'center' | 'start' }) => void;\n getMessagesInView: () => number[];\n}\nexport interface ChatContainerMessagesListProps {\n messages: BubbleProps[];\n actionRef: any;\n onScrollEnds: (indexList: number[]) => number[];\n isLoading?: 'top' | 'bottom';\n hasMoreItems?: 'top' | 'bottom';\n getMoreMessages: PropTypes.func;\n sendingMessages?: Array<string | number>;\n sendingText: string;\n}\n\nexport const defaultProps: ChatContainerMessagesListProps = {\n messages: [],\n actionRef: noop,\n onScrollEnds: () => [],\n getMoreMessages: noop,\n sendingMessages: undefined,\n sendingText: 'Sending',\n};\n\nexport const listProps = {\n messages: PropTypes.arrayOf(PropTypes.object)\n .description('The array of out-of-the-box items you want to render inside the ChatMessageList')\n .defaultValue(defaultProps.messages),\n actionRef: PropTypes.object\n .description(\n `Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n `,\n )\n .defaultValue(defaultProps.actionRef),\n onScrollEnds: PropTypes.func.description(`Called when the scroll stops.`),\n isLoading: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Keeps the load more space while the loading is in progress',\n ),\n hasMoreItems: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Load More button at the `top` or `bottom` of the container',\n ),\n getMoreMessages: PropTypes.func\n .description('Called when the user clicks on load more')\n .defaultValue(defaultProps.getMoreMessages),\n sendingMessages: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.arrayOf(PropTypes.number)])\n .description('Array of ids of sending messages')\n .defaultValue(defaultProps.sendingMessages),\n sendingText: PropTypes.string\n .description('Label description for messages in sending status')\n .defaultValue(defaultProps.sendingText),\n};\n"],"names":["defaultProps","messages","actionRef","noop","onScrollEnds","getMoreMessages","sendingMessages","undefined","sendingText","listProps","PropTypes","arrayOf","object","description","defaultValue","func","isLoading","oneOf","hasMoreItems","oneOfType","string","number"],"mappings":";;;IAoBaA,YAA4C,GAAG;AAC1DC,EAAAA,QAAQ,EAAE,EADgD;AAE1DC,EAAAA,SAAS,EAAEC,IAF+C;AAG1DC,EAAAA,YAAY,EAAE;AAAA,WAAM,EAAN;AAAA,GAH4C;AAI1DC,EAAAA,eAAe,EAAEF,IAJyC;AAK1DG,EAAAA,eAAe,EAAEC,SALyC;AAM1DC,EAAAA,WAAW,EAAE;AAN6C;IAS/CC,SAAS,GAAG;AACvBR,EAAAA,QAAQ,EAAES,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,EACPC,WADO,CACK,iFADL,EAEPC,YAFO,CAEMd,YAAY,CAACC,QAFnB,CADa;AAIvBC,EAAAA,SAAS,EAAEQ,SAAS,CAACE,MAAV,CACRC,WADQ,oTAcRC,YAdQ,CAcKd,YAAY,CAACE,SAdlB,CAJY;AAmBvBE,EAAAA,YAAY,EAAEM,SAAS,CAACK,IAAV,CAAeF,WAAf,iCAnBS;AAoBvBG,EAAAA,SAAS,EAAEN,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBV,SAAlB,CAAhB,EAA8CM,WAA9C,CACT,4DADS,CApBY;AAuBvBK,EAAAA,YAAY,EAAER,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBV,SAAlB,CAAhB,EAA8CM,WAA9C,CACZ,iEADY,CAvBS;AA0BvBR,EAAAA,eAAe,EAAEK,SAAS,CAACK,IAAV,CACdF,WADc,CACF,0CADE,EAEdC,YAFc,CAEDd,YAAY,CAACK,eAFZ,CA1BM;AA6BvBC,EAAAA,eAAe,EAAEI,SAAS,CAACS,SAAV,CAAoB,CAACT,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACU,MAA5B,CAAD,EAAsCV,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACW,MAA5B,CAAtC,CAApB,EACdR,WADc,CACF,kCADE,EAEdC,YAFc,CAEDd,YAAY,CAACM,eAFZ,CA7BM;AAgCvBE,EAAAA,WAAW,EAAEE,SAAS,CAACU,MAAV,CACVP,WADU,CACE,kDADF,EAEVC,YAFU,CAEGd,YAAY,CAACQ,WAFhB;AAhCU;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-chat",
3
- "version": "1.55.0-next.4",
3
+ "version": "1.55.0-next.8",
4
4
  "license": "MIT",
5
5
  "description": "Ellie Mae - Dim Sum - Chat",
6
6
  "main": "cjs/index.js",
@@ -16,10 +16,10 @@
16
16
  "directory": "dist"
17
17
  },
18
18
  "dependencies": {
19
- "@elliemae/ds-banner": "1.55.0-next.4",
20
- "@elliemae/ds-basic": "1.55.0-next.4",
21
- "@elliemae/ds-icons": "1.55.0-next.4",
22
- "@elliemae/ds-system": "1.55.0-next.4",
19
+ "@elliemae/ds-banner": "1.55.0-next.8",
20
+ "@elliemae/ds-basic": "1.55.0-next.8",
21
+ "@elliemae/ds-icons": "1.55.0-next.8",
22
+ "@elliemae/ds-system": "1.55.0-next.8",
23
23
  "prop-types": "~15.7.2",
24
24
  "react-virtual": "^2.3.2"
25
25
  },