@elliemae/ds-chat 3.4.2 → 3.4.3

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 (214) hide show
  1. package/dist/cjs/ChatDataTestids.js +4 -1
  2. package/dist/cjs/ChatDataTestids.js.map +1 -1
  3. package/dist/cjs/exported-related/bubble/ChatBubble.js +67 -34
  4. package/dist/cjs/exported-related/bubble/ChatBubble.js.map +2 -2
  5. package/dist/cjs/exported-related/bubble/ChatBubbleArrow.js +87 -61
  6. package/dist/cjs/exported-related/bubble/ChatBubbleArrow.js.map +1 -1
  7. package/dist/cjs/exported-related/bubble/index.js +4 -1
  8. package/dist/cjs/exported-related/bubble/index.js.map +1 -1
  9. package/dist/cjs/exported-related/bubble/props.js +4 -1
  10. package/dist/cjs/exported-related/bubble/props.js.map +1 -1
  11. package/dist/cjs/exported-related/bubble/styled.js +4 -1
  12. package/dist/cjs/exported-related/bubble/styled.js.map +1 -1
  13. package/dist/cjs/exported-related/chat-card/ChatCard.js +32 -15
  14. package/dist/cjs/exported-related/chat-card/ChatCard.js.map +1 -1
  15. package/dist/cjs/exported-related/chat-card/index.js +4 -1
  16. package/dist/cjs/exported-related/chat-card/index.js.map +1 -1
  17. package/dist/cjs/exported-related/chat-card/props.js +6 -2
  18. package/dist/cjs/exported-related/chat-card/props.js.map +1 -1
  19. package/dist/cjs/exported-related/chat-card/styled.js +4 -1
  20. package/dist/cjs/exported-related/chat-card/styled.js.map +1 -1
  21. package/dist/cjs/exported-related/chat-container-header/ChatContainerHeader.js +24 -14
  22. package/dist/cjs/exported-related/chat-container-header/ChatContainerHeader.js.map +2 -2
  23. package/dist/cjs/exported-related/chat-container-header/props.js +4 -1
  24. package/dist/cjs/exported-related/chat-container-header/props.js.map +1 -1
  25. package/dist/cjs/exported-related/chat-container-header/styled.js +4 -1
  26. package/dist/cjs/exported-related/chat-container-header/styled.js.map +1 -1
  27. package/dist/cjs/exported-related/chat-empty-state/ChatEmptyState.js +39 -21
  28. package/dist/cjs/exported-related/chat-empty-state/ChatEmptyState.js.map +1 -1
  29. package/dist/cjs/exported-related/chat-empty-state/props.js +6 -2
  30. package/dist/cjs/exported-related/chat-empty-state/props.js.map +1 -1
  31. package/dist/cjs/exported-related/chat-empty-state/styled.js +4 -1
  32. package/dist/cjs/exported-related/chat-empty-state/styled.js.map +1 -1
  33. package/dist/cjs/exported-related/chat-sidebar/SideBarChat.js +33 -21
  34. package/dist/cjs/exported-related/chat-sidebar/SideBarChat.js.map +2 -2
  35. package/dist/cjs/exported-related/chat-sidebar/index.js +4 -1
  36. package/dist/cjs/exported-related/chat-sidebar/index.js.map +1 -1
  37. package/dist/cjs/exported-related/chat-sidebar/props.js +8 -3
  38. package/dist/cjs/exported-related/chat-sidebar/props.js.map +1 -1
  39. package/dist/cjs/exported-related/chat-sidebar/sidebar-button/SidebarButton.js +20 -10
  40. package/dist/cjs/exported-related/chat-sidebar/sidebar-button/SidebarButton.js.map +2 -2
  41. package/dist/cjs/exported-related/chat-sidebar/sidebar-button/index.js +4 -1
  42. package/dist/cjs/exported-related/chat-sidebar/sidebar-button/index.js.map +1 -1
  43. package/dist/cjs/exported-related/chat-sidebar/sidebar-button/props.js +4 -1
  44. package/dist/cjs/exported-related/chat-sidebar/sidebar-button/props.js.map +1 -1
  45. package/dist/cjs/exported-related/chat-sidebar/sidebar-button/styled.js +4 -1
  46. package/dist/cjs/exported-related/chat-sidebar/sidebar-button/styled.js.map +1 -1
  47. package/dist/cjs/exported-related/chat-sidebar/styled.js +4 -1
  48. package/dist/cjs/exported-related/chat-sidebar/styled.js.map +1 -1
  49. package/dist/cjs/exported-related/floating-button/FloatingButton.js +11 -7
  50. package/dist/cjs/exported-related/floating-button/FloatingButton.js.map +1 -1
  51. package/dist/cjs/exported-related/floating-button/index.js +4 -1
  52. package/dist/cjs/exported-related/floating-button/index.js.map +1 -1
  53. package/dist/cjs/exported-related/floating-button/props.js +4 -1
  54. package/dist/cjs/exported-related/floating-button/props.js.map +1 -1
  55. package/dist/cjs/exported-related/floating-button/styled.js +4 -1
  56. package/dist/cjs/exported-related/floating-button/styled.js.map +1 -1
  57. package/dist/cjs/exported-related/floating-container/styled.js +4 -1
  58. package/dist/cjs/exported-related/floating-container/styled.js.map +1 -1
  59. package/dist/cjs/exported-related/grid-influencer/InfluencerContainer.js +17 -6
  60. package/dist/cjs/exported-related/grid-influencer/InfluencerContainer.js.map +2 -2
  61. package/dist/cjs/exported-related/grid-influencer/styled.js +4 -1
  62. package/dist/cjs/exported-related/grid-influencer/styled.js.map +1 -1
  63. package/dist/cjs/exported-related/index.js +4 -1
  64. package/dist/cjs/exported-related/index.js.map +1 -1
  65. package/dist/cjs/exported-related/message-delimiter/MessageDelimiter.js +18 -9
  66. package/dist/cjs/exported-related/message-delimiter/MessageDelimiter.js.map +1 -1
  67. package/dist/cjs/exported-related/message-delimiter/index.js +4 -1
  68. package/dist/cjs/exported-related/message-delimiter/index.js.map +1 -1
  69. package/dist/cjs/exported-related/message-delimiter/props.js +7 -2
  70. package/dist/cjs/exported-related/message-delimiter/props.js.map +1 -1
  71. package/dist/cjs/exported-related/message-delimiter/styled.js +4 -1
  72. package/dist/cjs/exported-related/message-delimiter/styled.js.map +1 -1
  73. package/dist/cjs/exported-related/system-message/SystemMessage.js +28 -13
  74. package/dist/cjs/exported-related/system-message/SystemMessage.js.map +1 -1
  75. package/dist/cjs/exported-related/system-message/index.js +4 -1
  76. package/dist/cjs/exported-related/system-message/index.js.map +1 -1
  77. package/dist/cjs/exported-related/system-message/props.js +4 -1
  78. package/dist/cjs/exported-related/system-message/props.js.map +1 -1
  79. package/dist/cjs/exported-related/system-message/style.js +4 -1
  80. package/dist/cjs/exported-related/system-message/style.js.map +1 -1
  81. package/dist/cjs/exported-related/tile-button/TileButton.js +97 -64
  82. package/dist/cjs/exported-related/tile-button/TileButton.js.map +2 -2
  83. package/dist/cjs/exported-related/tile-button/index.js +4 -1
  84. package/dist/cjs/exported-related/tile-button/index.js.map +1 -1
  85. package/dist/cjs/exported-related/tile-button/props.js +7 -2
  86. package/dist/cjs/exported-related/tile-button/props.js.map +1 -1
  87. package/dist/cjs/exported-related/tile-button/styled.js +4 -1
  88. package/dist/cjs/exported-related/tile-button/styled.js.map +1 -1
  89. package/dist/cjs/index.js +4 -1
  90. package/dist/cjs/index.js.map +1 -1
  91. package/dist/cjs/parts/chat-composer/ChatContainerComposer.js +95 -64
  92. package/dist/cjs/parts/chat-composer/ChatContainerComposer.js.map +2 -2
  93. package/dist/cjs/parts/chat-composer/index.js +4 -1
  94. package/dist/cjs/parts/chat-composer/index.js.map +1 -1
  95. package/dist/cjs/parts/chat-composer/styled.js +4 -1
  96. package/dist/cjs/parts/chat-composer/styled.js.map +1 -1
  97. package/dist/cjs/parts/chat-container/ChatContainer.js +98 -75
  98. package/dist/cjs/parts/chat-container/ChatContainer.js.map +2 -2
  99. package/dist/cjs/parts/chat-container/styled.js +4 -1
  100. package/dist/cjs/parts/chat-container/styled.js.map +2 -2
  101. package/dist/cjs/parts/chat-container-messages-list/ChatContainerMessagesList.js +89 -56
  102. package/dist/cjs/parts/chat-container-messages-list/ChatContainerMessagesList.js.map +2 -2
  103. package/dist/cjs/parts/chat-container-messages-list/index.js +4 -1
  104. package/dist/cjs/parts/chat-container-messages-list/index.js.map +1 -1
  105. package/dist/cjs/parts/chat-container-messages-list/styled.js +4 -1
  106. package/dist/cjs/parts/chat-container-messages-list/styled.js.map +1 -1
  107. package/dist/cjs/parts/chat-container-messages-list/useActionRef.js +4 -1
  108. package/dist/cjs/parts/chat-container-messages-list/useActionRef.js.map +2 -2
  109. package/dist/cjs/parts/chat-container-messages-list/useChatContainerMessageList.js +15 -9
  110. package/dist/cjs/parts/chat-container-messages-list/useChatContainerMessageList.js.map +2 -2
  111. package/dist/cjs/parts/chat-container-messages-list/useFocusAndScrollHelpers.js +53 -38
  112. package/dist/cjs/parts/chat-container-messages-list/useFocusAndScrollHelpers.js.map +2 -2
  113. package/dist/cjs/parts/chat-container-messages-list/useGetNewMessages.js +4 -1
  114. package/dist/cjs/parts/chat-container-messages-list/useGetNewMessages.js.map +1 -1
  115. package/dist/cjs/parts/chat-container-messages-list/useGlobalEventListener.js +4 -1
  116. package/dist/cjs/parts/chat-container-messages-list/useGlobalEventListener.js.map +2 -2
  117. package/dist/cjs/parts/chat-container-messages-list/useKeyboard.js +95 -86
  118. package/dist/cjs/parts/chat-container-messages-list/useKeyboard.js.map +2 -2
  119. package/dist/cjs/parts/index.js +4 -1
  120. package/dist/cjs/parts/index.js.map +1 -1
  121. package/dist/cjs/react-desc-prop-types.js +35 -14
  122. package/dist/cjs/react-desc-prop-types.js.map +1 -1
  123. package/dist/cjs/styled.js +4 -1
  124. package/dist/cjs/styled.js.map +1 -1
  125. package/dist/cjs/tests/utils.js +4 -1
  126. package/dist/cjs/tests/utils.js.map +1 -1
  127. package/dist/esm/ChatDataTestids.js.map +1 -1
  128. package/dist/esm/exported-related/bubble/ChatBubble.js +63 -33
  129. package/dist/esm/exported-related/bubble/ChatBubble.js.map +2 -2
  130. package/dist/esm/exported-related/bubble/ChatBubbleArrow.js +83 -60
  131. package/dist/esm/exported-related/bubble/ChatBubbleArrow.js.map +1 -1
  132. package/dist/esm/exported-related/bubble/index.js.map +1 -1
  133. package/dist/esm/exported-related/bubble/props.js.map +1 -1
  134. package/dist/esm/exported-related/bubble/styled.js.map +1 -1
  135. package/dist/esm/exported-related/chat-card/ChatCard.js +28 -14
  136. package/dist/esm/exported-related/chat-card/ChatCard.js.map +1 -1
  137. package/dist/esm/exported-related/chat-card/index.js.map +1 -1
  138. package/dist/esm/exported-related/chat-card/props.js +2 -1
  139. package/dist/esm/exported-related/chat-card/props.js.map +1 -1
  140. package/dist/esm/exported-related/chat-card/styled.js.map +1 -1
  141. package/dist/esm/exported-related/chat-container-header/ChatContainerHeader.js +20 -13
  142. package/dist/esm/exported-related/chat-container-header/ChatContainerHeader.js.map +2 -2
  143. package/dist/esm/exported-related/chat-container-header/props.js.map +1 -1
  144. package/dist/esm/exported-related/chat-container-header/styled.js.map +1 -1
  145. package/dist/esm/exported-related/chat-empty-state/ChatEmptyState.js +35 -20
  146. package/dist/esm/exported-related/chat-empty-state/ChatEmptyState.js.map +1 -1
  147. package/dist/esm/exported-related/chat-empty-state/props.js +2 -1
  148. package/dist/esm/exported-related/chat-empty-state/props.js.map +1 -1
  149. package/dist/esm/exported-related/chat-empty-state/styled.js.map +1 -1
  150. package/dist/esm/exported-related/chat-sidebar/SideBarChat.js +29 -20
  151. package/dist/esm/exported-related/chat-sidebar/SideBarChat.js.map +2 -2
  152. package/dist/esm/exported-related/chat-sidebar/index.js.map +1 -1
  153. package/dist/esm/exported-related/chat-sidebar/props.js +4 -2
  154. package/dist/esm/exported-related/chat-sidebar/props.js.map +1 -1
  155. package/dist/esm/exported-related/chat-sidebar/sidebar-button/SidebarButton.js +16 -9
  156. package/dist/esm/exported-related/chat-sidebar/sidebar-button/SidebarButton.js.map +2 -2
  157. package/dist/esm/exported-related/chat-sidebar/sidebar-button/index.js.map +1 -1
  158. package/dist/esm/exported-related/chat-sidebar/sidebar-button/props.js.map +1 -1
  159. package/dist/esm/exported-related/chat-sidebar/sidebar-button/styled.js.map +1 -1
  160. package/dist/esm/exported-related/chat-sidebar/styled.js.map +1 -1
  161. package/dist/esm/exported-related/floating-button/FloatingButton.js +7 -6
  162. package/dist/esm/exported-related/floating-button/FloatingButton.js.map +1 -1
  163. package/dist/esm/exported-related/floating-button/index.js.map +1 -1
  164. package/dist/esm/exported-related/floating-button/props.js.map +1 -1
  165. package/dist/esm/exported-related/floating-button/styled.js.map +1 -1
  166. package/dist/esm/exported-related/floating-container/styled.js.map +1 -1
  167. package/dist/esm/exported-related/grid-influencer/InfluencerContainer.js +13 -5
  168. package/dist/esm/exported-related/grid-influencer/InfluencerContainer.js.map +2 -2
  169. package/dist/esm/exported-related/grid-influencer/styled.js.map +1 -1
  170. package/dist/esm/exported-related/index.js.map +1 -1
  171. package/dist/esm/exported-related/message-delimiter/MessageDelimiter.js +14 -8
  172. package/dist/esm/exported-related/message-delimiter/MessageDelimiter.js.map +1 -1
  173. package/dist/esm/exported-related/message-delimiter/index.js.map +1 -1
  174. package/dist/esm/exported-related/message-delimiter/props.js +3 -1
  175. package/dist/esm/exported-related/message-delimiter/props.js.map +1 -1
  176. package/dist/esm/exported-related/message-delimiter/styled.js.map +1 -1
  177. package/dist/esm/exported-related/system-message/SystemMessage.js +24 -12
  178. package/dist/esm/exported-related/system-message/SystemMessage.js.map +1 -1
  179. package/dist/esm/exported-related/system-message/index.js.map +1 -1
  180. package/dist/esm/exported-related/system-message/props.js.map +1 -1
  181. package/dist/esm/exported-related/system-message/style.js.map +1 -1
  182. package/dist/esm/exported-related/tile-button/TileButton.js +93 -63
  183. package/dist/esm/exported-related/tile-button/TileButton.js.map +2 -2
  184. package/dist/esm/exported-related/tile-button/index.js.map +1 -1
  185. package/dist/esm/exported-related/tile-button/props.js +3 -1
  186. package/dist/esm/exported-related/tile-button/props.js.map +1 -1
  187. package/dist/esm/exported-related/tile-button/styled.js.map +1 -1
  188. package/dist/esm/index.js.map +1 -1
  189. package/dist/esm/parts/chat-composer/ChatContainerComposer.js +91 -63
  190. package/dist/esm/parts/chat-composer/ChatContainerComposer.js.map +2 -2
  191. package/dist/esm/parts/chat-composer/index.js.map +1 -1
  192. package/dist/esm/parts/chat-composer/styled.js.map +1 -1
  193. package/dist/esm/parts/chat-container/ChatContainer.js +94 -74
  194. package/dist/esm/parts/chat-container/ChatContainer.js.map +2 -2
  195. package/dist/esm/parts/chat-container/styled.js.map +1 -1
  196. package/dist/esm/parts/chat-container-messages-list/ChatContainerMessagesList.js +85 -55
  197. package/dist/esm/parts/chat-container-messages-list/ChatContainerMessagesList.js.map +2 -2
  198. package/dist/esm/parts/chat-container-messages-list/index.js.map +1 -1
  199. package/dist/esm/parts/chat-container-messages-list/styled.js.map +1 -1
  200. package/dist/esm/parts/chat-container-messages-list/useActionRef.js.map +2 -2
  201. package/dist/esm/parts/chat-container-messages-list/useChatContainerMessageList.js +11 -8
  202. package/dist/esm/parts/chat-container-messages-list/useChatContainerMessageList.js.map +2 -2
  203. package/dist/esm/parts/chat-container-messages-list/useFocusAndScrollHelpers.js +49 -37
  204. package/dist/esm/parts/chat-container-messages-list/useFocusAndScrollHelpers.js.map +2 -2
  205. package/dist/esm/parts/chat-container-messages-list/useGetNewMessages.js.map +1 -1
  206. package/dist/esm/parts/chat-container-messages-list/useGlobalEventListener.js.map +2 -2
  207. package/dist/esm/parts/chat-container-messages-list/useKeyboard.js +91 -85
  208. package/dist/esm/parts/chat-container-messages-list/useKeyboard.js.map +2 -2
  209. package/dist/esm/parts/index.js.map +1 -1
  210. package/dist/esm/react-desc-prop-types.js +31 -13
  211. package/dist/esm/react-desc-prop-types.js.map +1 -1
  212. package/dist/esm/styled.js.map +1 -1
  213. package/dist/esm/tests/utils.js.map +1 -1
  214. package/package.json +10 -10
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/parts/chat-container-messages-list/styled.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["import { styled } from '@elliemae/ds-system';\nimport { BUBBLE_TYPES } from '../../exported-related/bubble/index';\nimport { BubblePropsT } from '../../exported-related/bubble/props';\n\nexport const StyledWrapper = styled.div`\n width: 100%;\n height: 100%;\n`;\n\n// list\nexport const StyledWrapperListItem = styled.div<Partial<BubblePropsT>>`\n min-width: 100%;\n ${(props) =>\n props.type === BUBBLE_TYPES.SENDER &&\n `padding: ${props.theme.space.xxs} ${props.theme.space.xxs} ${props.theme.space.xxs} 13%\n `};\n ${(props) =>\n props.type === BUBBLE_TYPES.RECIPIENT &&\n `padding: ${props.theme.space.xxs} 13% ${props.theme.space.xxs}\n ${props.theme.space.xxs}\n `};\n ${(props) =>\n props.type === BUBBLE_TYPES.SYSTEM &&\n `padding: ${props.theme.space.xxs} 0px\n `};\n`;\n\nexport const StyledChatContainerContentList = styled.div`\n width: 100%;\n height: 100%;\n padding: ${(props) => props.theme.space.xs};\n padding-bottom: 0;\n overflow-y: auto;\n overflow-x: hidden;\n`;\n\nexport const StyledNewMessagesHiddenContainer = styled.div`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n border: 0;\n padding: 0;\n overflow: hidden;\n clip: rect(0 0 0 0);\n clip-path: inset(100%);\n white-space: nowrap;\n`;\n\nexport const StyledChatContainerContentListScroll = styled.div<{ height: string }>`\n width: 100%;\n height: ${(props) => props.height};\n position: relative;\n`;\n\nexport const StyledLoadMoreContainer = styled.div<{ hasMoreItems?: 'top' | 'bottom' }>`\n position: absolute;\n width: calc(100% + ${(props) => props.theme.space.xxs});\n padding: ${(props) => props.theme.space.xxs};\n left: -${(props) => props.theme.space.xxs};\n right: -${(props) => props.theme.space.xxs};\n display: grid;\n justify-content: center;\n align-items: center;\n ${(props) => (props.hasMoreItems === 'top' ? 'top: 0;' : '')}\n ${(props) => (props.hasMoreItems === 'bottom' ? 'bottom: 0;' : '')}\n`;\nexport const ListItem = styled.div`\n &:focus,\n &:focus-visible {\n outline: none;\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: -${(props) => props.theme.space.xxs};\n pointer-events: none;\n border-radius: 2px;\n background-color: #ebedf0;\n width: calc(100% + 24px);\n border: 2px solid #1e79c2;\n height: 100%;\n z-index: -1;\n }\n }\n`;\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uBAAuB;AACvB,oBAA6B;AAGtB,MAAM,gBAAgB,wBAAO;AAAA;AAAA;AAAA;AAM7B,MAAM,wBAAwB,wBAAO;AAAA;AAAA,IAExC,CAAC,UACD,MAAM,SAAS,2BAAa,UAC5B,YAAY,MAAM,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM;AAAA;AAAA,IAEhF,CAAC,UACD,MAAM,SAAS,2BAAa,aAC5B,YAAY,MAAM,MAAM,MAAM,WAAW,MAAM,MAAM,MAAM;AAAA,MACzD,MAAM,MAAM,MAAM;AAAA;AAAA,IAEpB,CAAC,UACD,MAAM,SAAS,2BAAa,UAC5B,YAAY,MAAM,MAAM,MAAM;AAAA;AAAA;AAI3B,MAAM,iCAAiC,wBAAO;AAAA;AAAA;AAAA,aAGxC,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAMnC,MAAM,mCAAmC,wBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAahD,MAAM,uCAAuC,wBAAO;AAAA;AAAA,YAE/C,CAAC,UAAU,MAAM;AAAA;AAAA;AAItB,MAAM,0BAA0B,wBAAO;AAAA;AAAA,uBAEvB,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA,aACvC,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA,WAC/B,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA,YAC5B,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA,IAIrC,CAAC,UAAW,MAAM,iBAAiB,QAAQ,YAAY;AAAA,IACvD,CAAC,UAAW,MAAM,iBAAiB,WAAW,eAAe;AAAA;AAE1D,MAAM,WAAW,wBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAShB,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uBAAuB;AACvB,oBAA6B;AAGtB,MAAM,gBAAgB,wBAAO;AAAA;AAAA;AAAA;AAM7B,MAAM,wBAAwB,wBAAO;AAAA;AAAA,IAExC,CAAC,UACD,MAAM,SAAS,2BAAa,UAC5B,YAAY,MAAM,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM;AAAA;AAAA,IAEhF,CAAC,UACD,MAAM,SAAS,2BAAa,aAC5B,YAAY,MAAM,MAAM,MAAM,WAAW,MAAM,MAAM,MAAM;AAAA,MACzD,MAAM,MAAM,MAAM;AAAA;AAAA,IAEpB,CAAC,UACD,MAAM,SAAS,2BAAa,UAC5B,YAAY,MAAM,MAAM,MAAM;AAAA;AAAA;AAI3B,MAAM,iCAAiC,wBAAO;AAAA;AAAA;AAAA,aAGxC,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAMnC,MAAM,mCAAmC,wBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAahD,MAAM,uCAAuC,wBAAO;AAAA;AAAA,YAE/C,CAAC,UAAU,MAAM;AAAA;AAAA;AAItB,MAAM,0BAA0B,wBAAO;AAAA;AAAA,uBAEvB,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA,aACvC,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA,WAC/B,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA,YAC5B,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA,IAIrC,CAAC,UAAW,MAAM,iBAAiB,QAAQ,YAAY;AAAA,IACvD,CAAC,UAAW,MAAM,iBAAiB,WAAW,eAAe;AAAA;AAE1D,MAAM,WAAW,wBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAShB,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -17,7 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  }
18
18
  return to;
19
19
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
21
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
25
  var useActionRef_exports = {};
23
26
  __export(useActionRef_exports, {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/parts/chat-container-messages-list/useActionRef.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n/* eslint-disable max-lines */\nimport React from 'react';\nimport { type DebouncedFunc } from 'lodash';\nimport { useVirtual } from 'react-virtual';\nimport { DSChatT } from '../../react-desc-prop-types';\n\ntype UseActionRefArgs = {\n actionRef: DSChatT.ActionRef;\n useVirtualHelpers: ReturnType<typeof useVirtual>;\n virtualListRef: React.MutableRefObject<HTMLDivElement | undefined>;\n onScrollStop: DebouncedFunc<() => string[]>;\n onlyFocus: (index: number) => void;\n scrollAndFocus: (index: number, opts?: DSChatT.ScrollToIndexOptions) => void;\n};\n\nexport const useActionRef = ({\n actionRef,\n useVirtualHelpers: { scrollToIndex: vScroll },\n virtualListRef,\n onScrollStop,\n onlyFocus,\n scrollAndFocus,\n}: UseActionRefArgs) => {\n React.useEffect(() => {\n if (actionRef && actionRef.current) {\n const scrollToIndex: DSChatT.ActionRef['current']['scrollToIndex'] = (index, opts = { align: 'center' }) => {\n vScroll(index, opts);\n onScrollStop();\n };\n const focusToIndex: DSChatT.ActionRef['current']['focusToIndex'] = (index, opts = { align: 'center' }) => {\n scrollAndFocus(index, opts);\n };\n const focusToList = () => {\n virtualListRef.current?.focus();\n };\n\n actionRef.current.scrollToIndex = scrollToIndex;\n actionRef.current.getMessagesInView = onScrollStop;\n // I have no idea what the next line refeers to\n // keeping this from original code to avoid any possible breaking-change\n onScrollStop(); // init useMemo due to debounce use.\n actionRef.current.focusToIndex = focusToIndex;\n actionRef.current.focusToIndexWithoutScroll = onlyFocus;\n actionRef.current.focusToList = focusToList;\n }\n }, [actionRef, onScrollStop, onlyFocus, scrollAndFocus, vScroll, virtualListRef]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADGvB,mBAAkB;AAcX,MAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA,mBAAmB,EAAE,eAAe;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MACsB;AACtB,uBAAM,UAAU,MAAM;AACpB,QAAI,aAAa,UAAU,SAAS;AAClC,YAAM,gBAA+D,CAAC,OAAO,OAAO,EAAE,OAAO,SAAS,MAAM;AAC1G,gBAAQ,OAAO,IAAI;AACnB,qBAAa;AAAA,MACf;AACA,YAAM,eAA6D,CAAC,OAAO,OAAO,EAAE,OAAO,SAAS,MAAM;AACxG,uBAAe,OAAO,IAAI;AAAA,MAC5B;AACA,YAAM,cAAc,MAAM;AACxB,uBAAe,SAAS,MAAM;AAAA,MAChC;AAEA,gBAAU,QAAQ,gBAAgB;AAClC,gBAAU,QAAQ,oBAAoB;AAGtC,mBAAa;AACb,gBAAU,QAAQ,eAAe;AACjC,gBAAU,QAAQ,4BAA4B;AAC9C,gBAAU,QAAQ,cAAc;AAAA,IAClC;AAAA,EACF,GAAG,CAAC,WAAW,cAAc,WAAW,gBAAgB,SAAS,cAAc,CAAC;AAClF;",
6
- "names": []
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADGvB,mBAAkB;AAcX,MAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA,mBAAmB,EAAE,eAAe,QAAQ;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAwB;AACtB,eAAAA,QAAM,UAAU,MAAM;AACpB,QAAI,aAAa,UAAU,SAAS;AAClC,YAAM,gBAA+D,CAAC,OAAO,OAAO,EAAE,OAAO,SAAS,MAAM;AAC1G,gBAAQ,OAAO,IAAI;AACnB,qBAAa;AAAA,MACf;AACA,YAAM,eAA6D,CAAC,OAAO,OAAO,EAAE,OAAO,SAAS,MAAM;AACxG,uBAAe,OAAO,IAAI;AAAA,MAC5B;AACA,YAAM,cAAc,MAAM;AACxB,uBAAe,SAAS,MAAM;AAAA,MAChC;AAEA,gBAAU,QAAQ,gBAAgB;AAClC,gBAAU,QAAQ,oBAAoB;AAGtC,mBAAa;AACb,gBAAU,QAAQ,eAAe;AACjC,gBAAU,QAAQ,4BAA4B;AAC9C,gBAAU,QAAQ,cAAc;AAAA,IAClC;AAAA,EACF,GAAG,CAAC,WAAW,cAAc,WAAW,gBAAgB,SAAS,cAAc,CAAC;AAClF;",
6
+ "names": ["React"]
7
7
  }
@@ -17,7 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  }
18
18
  return to;
19
19
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
21
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
25
  var useChatContainerMessageList_exports = {};
23
26
  __export(useChatContainerMessageList_exports, {
@@ -88,13 +91,16 @@ const useChatContainerMessageList = (props) => {
88
91
  onlyFocus,
89
92
  onScrollStop
90
93
  });
91
- return import_react.default.useMemo(() => ({
92
- propsWithDefault,
93
- globalAttributes,
94
- useVirtualHelpers,
95
- loadMoreRef,
96
- virtualListRef,
97
- ...keyboardMethods
98
- }), [globalAttributes, keyboardMethods, propsWithDefault, useVirtualHelpers, loadMoreRef, virtualListRef]);
94
+ return import_react.default.useMemo(
95
+ () => ({
96
+ propsWithDefault,
97
+ globalAttributes,
98
+ useVirtualHelpers,
99
+ loadMoreRef,
100
+ virtualListRef,
101
+ ...keyboardMethods
102
+ }),
103
+ [globalAttributes, keyboardMethods, propsWithDefault, useVirtualHelpers, loadMoreRef, virtualListRef]
104
+ );
99
105
  };
100
106
  //# sourceMappingURL=useChatContainerMessageList.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/parts/chat-container-messages-list/useChatContainerMessageList.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n/* eslint-disable max-lines */\nimport React from 'react';\nimport {\n useMemoMergePropsWithDefault,\n useGetGlobalAttributes,\n useValidateTypescriptPropTypes,\n} from '@elliemae/ds-utilities';\nimport { useVirtual } from 'react-virtual';\nimport { useActionRef } from './useActionRef';\nimport { useGlobalEventListener } from './useGlobalEventListener';\nimport { useKeyboard } from './useKeyboard';\nimport { useFocusAndScrollHelpers } from './useFocusAndScrollHelpers';\nimport { DSChatT, ChatContainerMessagesListPropTypes, defaultPropsMessagesList } from '../../react-desc-prop-types';\n\nconst getPadding = ({ hasMoreItems, bannerPosition, isLoading }: DSChatT.GetPaddingT) => {\n const padding = {\n paddingStart: 0,\n paddingEnd: -5,\n };\n if ([hasMoreItems, bannerPosition, isLoading].some((item) => item === 'top')) padding.paddingStart = 42;\n else if ([hasMoreItems, bannerPosition, isLoading].some((item) => item === 'bottom')) padding.paddingEnd = 42;\n return padding;\n};\n\ntype UseChatContainerMessageList = (props: DSChatT.MessagesListProps) => {\n propsWithDefault: DSChatT.MessagesListProps;\n globalAttributes: ReturnType<typeof useGetGlobalAttributes>;\n useVirtualHelpers: ReturnType<typeof useVirtual>;\n loadMoreRef: React.MutableRefObject<HTMLButtonElement | undefined>;\n virtualListRef: React.MutableRefObject<HTMLDivElement | undefined>;\n} & ReturnType<typeof useKeyboard>;\n\nexport const useChatContainerMessageList: UseChatContainerMessageList = (props) => {\n const propsWithDefault = useMemoMergePropsWithDefault<DSChatT.MessagesListProps>(props, defaultPropsMessagesList);\n useValidateTypescriptPropTypes<DSChatT.MessagesListProps>(propsWithDefault, ChatContainerMessagesListPropTypes);\n const globalAttributes = useGetGlobalAttributes(propsWithDefault);\n const loadMoreRef = React.useRef<HTMLButtonElement>();\n const virtualListRef = React.useRef<HTMLDivElement>();\n\n const pendingOnScroll = React.useRef(false);\n const { bannerPosition, messages, actionRef, hasMoreItems, isLoading } = propsWithDefault;\n const useVirtualHelpers = useVirtual({\n size: messages?.length,\n parentRef: virtualListRef,\n overscan: 15,\n ...getPadding({ hasMoreItems, bannerPosition, isLoading }),\n // estimateSize should not be really required given what was stated on\n // https://github.com/tannerlinsley/react-virtual/issues/23\n estimateSize: React.useCallback(() => 80, []),\n });\n\n const { onScrollStop, onlyFocus, scrollAndFocus, checkPendingOnScroll } = useFocusAndScrollHelpers({\n propsWithDefault,\n useVirtualHelpers,\n pendingOnScroll,\n virtualListRef,\n });\n\n useActionRef({\n actionRef,\n useVirtualHelpers,\n virtualListRef,\n onScrollStop,\n onlyFocus,\n scrollAndFocus,\n });\n\n useGlobalEventListener({\n propsWithDefault,\n virtualListRef,\n onScrollStop,\n checkPendingOnScroll,\n });\n\n const keyboardMethods = useKeyboard({\n propsWithDefault,\n actionRef,\n virtualListRef,\n loadMoreRef,\n scrollAndFocus,\n onlyFocus,\n onScrollStop,\n });\n\n return React.useMemo(\n () => ({\n propsWithDefault,\n globalAttributes,\n useVirtualHelpers,\n loadMoreRef,\n virtualListRef,\n ...keyboardMethods,\n }),\n [globalAttributes, keyboardMethods, propsWithDefault, useVirtualHelpers, loadMoreRef, virtualListRef],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADGvB,mBAAkB;AAClB,0BAIO;AACP,2BAA2B;AAC3B,0BAA6B;AAC7B,oCAAuC;AACvC,yBAA4B;AAC5B,sCAAyC;AACzC,mCAAsF;AAEtF,MAAM,aAAa,CAAC,EAAE,cAAc,gBAAgB,gBAAqC;AACvF,QAAM,UAAU;AAAA,IACd,cAAc;AAAA,IACd,YAAY;AAAA,EACd;AACA,MAAI,CAAC,cAAc,gBAAgB,SAAS,EAAE,KAAK,CAAC,SAAS,SAAS,KAAK;AAAG,YAAQ,eAAe;AAAA,WAC5F,CAAC,cAAc,gBAAgB,SAAS,EAAE,KAAK,CAAC,SAAS,SAAS,QAAQ;AAAG,YAAQ,aAAa;AAC3G,SAAO;AACT;AAUO,MAAM,8BAA2D,CAAC,UAAU;AACjF,QAAM,mBAAmB,sDAAwD,OAAO,qDAAwB;AAChH,0DAA0D,kBAAkB,+DAAkC;AAC9G,QAAM,mBAAmB,gDAAuB,gBAAgB;AAChE,QAAM,cAAc,qBAAM,OAA0B;AACpD,QAAM,iBAAiB,qBAAM,OAAuB;AAEpD,QAAM,kBAAkB,qBAAM,OAAO,KAAK;AAC1C,QAAM,EAAE,gBAAgB,UAAU,WAAW,cAAc,cAAc;AACzE,QAAM,oBAAoB,qCAAW;AAAA,IACnC,MAAM,UAAU;AAAA,IAChB,WAAW;AAAA,IACX,UAAU;AAAA,IACV,GAAG,WAAW,EAAE,cAAc,gBAAgB,UAAU,CAAC;AAAA,IAGzD,cAAc,qBAAM,YAAY,MAAM,IAAI,CAAC,CAAC;AAAA,EAC9C,CAAC;AAED,QAAM,EAAE,cAAc,WAAW,gBAAgB,yBAAyB,8DAAyB;AAAA,IACjG;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,wCAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,4DAAuB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,kBAAkB,oCAAY;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO,qBAAM,QACX,MAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IACA,CAAC,kBAAkB,iBAAiB,kBAAkB,mBAAmB,aAAa,cAAc,CACtG;AACF;",
6
- "names": []
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADGvB,mBAAkB;AAClB,0BAIO;AACP,2BAA2B;AAC3B,0BAA6B;AAC7B,oCAAuC;AACvC,yBAA4B;AAC5B,sCAAyC;AACzC,mCAAsF;AAEtF,MAAM,aAAa,CAAC,EAAE,cAAc,gBAAgB,UAAU,MAA2B;AACvF,QAAM,UAAU;AAAA,IACd,cAAc;AAAA,IACd,YAAY;AAAA,EACd;AACA,MAAI,CAAC,cAAc,gBAAgB,SAAS,EAAE,KAAK,CAAC,SAAS,SAAS,KAAK;AAAG,YAAQ,eAAe;AAAA,WAC5F,CAAC,cAAc,gBAAgB,SAAS,EAAE,KAAK,CAAC,SAAS,SAAS,QAAQ;AAAG,YAAQ,aAAa;AAC3G,SAAO;AACT;AAUO,MAAM,8BAA2D,CAAC,UAAU;AACjF,QAAM,uBAAmB,kDAAwD,OAAO,qDAAwB;AAChH,0DAA0D,kBAAkB,+DAAkC;AAC9G,QAAM,uBAAmB,4CAAuB,gBAAgB;AAChE,QAAM,cAAc,aAAAA,QAAM,OAA0B;AACpD,QAAM,iBAAiB,aAAAA,QAAM,OAAuB;AAEpD,QAAM,kBAAkB,aAAAA,QAAM,OAAO,KAAK;AAC1C,QAAM,EAAE,gBAAgB,UAAU,WAAW,cAAc,UAAU,IAAI;AACzE,QAAM,wBAAoB,iCAAW;AAAA,IACnC,MAAM,UAAU;AAAA,IAChB,WAAW;AAAA,IACX,UAAU;AAAA,IACV,GAAG,WAAW,EAAE,cAAc,gBAAgB,UAAU,CAAC;AAAA,IAGzD,cAAc,aAAAA,QAAM,YAAY,MAAM,IAAI,CAAC,CAAC;AAAA,EAC9C,CAAC;AAED,QAAM,EAAE,cAAc,WAAW,gBAAgB,qBAAqB,QAAI,0DAAyB;AAAA,IACjG;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,wCAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,4DAAuB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,sBAAkB,gCAAY;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO,aAAAA,QAAM;AAAA,IACX,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL;AAAA,IACA,CAAC,kBAAkB,iBAAiB,kBAAkB,mBAAmB,aAAa,cAAc;AAAA,EACtG;AACF;",
6
+ "names": ["React"]
7
7
  }
@@ -17,7 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  }
18
18
  return to;
19
19
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
21
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
25
  var useFocusAndScrollHelpers_exports = {};
23
26
  __export(useFocusAndScrollHelpers_exports, {
@@ -33,46 +36,58 @@ const useFocusAndScrollHelpers = ({
33
36
  pendingOnScroll,
34
37
  virtualListRef
35
38
  }) => {
36
- const onScrollStop = import_react.default.useMemo(() => (0, import_lodash.debounce)(() => {
37
- if (document.visibilityState === "hidden") {
38
- pendingOnScroll.current = true;
39
- return [];
40
- }
41
- if (!virtualListRef.current)
42
- return [];
43
- pendingOnScroll.current = false;
44
- const { bottom, top } = virtualListRef.current?.getBoundingClientRect() || {};
45
- const list = virtualListRef.current.querySelectorAll('[data-element="chat-element-list-item"]');
46
- const indexList = [];
47
- list.forEach((item) => {
48
- const { top: itemTop } = item.getBoundingClientRect();
49
- const itemPadding = 10;
50
- if (itemTop + itemPadding < bottom && itemTop + itemPadding > top)
51
- indexList.push(item.dataset.index || "");
52
- });
53
- if (onScrollEnds)
54
- onScrollEnds(indexList);
55
- return indexList;
56
- }, 500), [onScrollEnds, pendingOnScroll, virtualListRef]);
57
- const onlyFocus = import_react.default.useCallback((index) => {
58
- virtualListRef.current?.querySelector(`[data-index="${index}"]`)?.focus();
59
- }, [virtualListRef]);
60
- const scrollAndFocus = import_react.default.useCallback((index, opts = { align: "center" }) => {
61
- vScroll(index, opts);
62
- setTimeout(() => {
63
- onlyFocus(index);
64
- }, 300);
65
- onScrollStop();
66
- }, [onScrollStop, onlyFocus, vScroll]);
39
+ const onScrollStop = import_react.default.useMemo(
40
+ () => (0, import_lodash.debounce)(() => {
41
+ if (document.visibilityState === "hidden") {
42
+ pendingOnScroll.current = true;
43
+ return [];
44
+ }
45
+ if (!virtualListRef.current)
46
+ return [];
47
+ pendingOnScroll.current = false;
48
+ const { bottom, top } = virtualListRef.current?.getBoundingClientRect() || {};
49
+ const list = virtualListRef.current.querySelectorAll('[data-element="chat-element-list-item"]');
50
+ const indexList = [];
51
+ list.forEach((item) => {
52
+ const { top: itemTop } = item.getBoundingClientRect();
53
+ const itemPadding = 10;
54
+ if (itemTop + itemPadding < bottom && itemTop + itemPadding > top)
55
+ indexList.push(item.dataset.index || "");
56
+ });
57
+ if (onScrollEnds)
58
+ onScrollEnds(indexList);
59
+ return indexList;
60
+ }, 500),
61
+ [onScrollEnds, pendingOnScroll, virtualListRef]
62
+ );
63
+ const onlyFocus = import_react.default.useCallback(
64
+ (index) => {
65
+ virtualListRef.current?.querySelector(`[data-index="${index}"]`)?.focus();
66
+ },
67
+ [virtualListRef]
68
+ );
69
+ const scrollAndFocus = import_react.default.useCallback(
70
+ (index, opts = { align: "center" }) => {
71
+ vScroll(index, opts);
72
+ setTimeout(() => {
73
+ onlyFocus(index);
74
+ }, 300);
75
+ onScrollStop();
76
+ },
77
+ [onScrollStop, onlyFocus, vScroll]
78
+ );
67
79
  const checkPendingOnScroll = import_react.default.useCallback(() => {
68
80
  if (pendingOnScroll.current === true)
69
81
  onScrollStop();
70
82
  }, [onScrollStop, pendingOnScroll]);
71
- return import_react.default.useMemo(() => ({
72
- onScrollStop,
73
- onlyFocus,
74
- scrollAndFocus,
75
- checkPendingOnScroll
76
- }), [onScrollStop, onlyFocus, scrollAndFocus, checkPendingOnScroll]);
83
+ return import_react.default.useMemo(
84
+ () => ({
85
+ onScrollStop,
86
+ onlyFocus,
87
+ scrollAndFocus,
88
+ checkPendingOnScroll
89
+ }),
90
+ [onScrollStop, onlyFocus, scrollAndFocus, checkPendingOnScroll]
91
+ );
77
92
  };
78
93
  //# sourceMappingURL=useFocusAndScrollHelpers.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/parts/chat-container-messages-list/useFocusAndScrollHelpers.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n/* eslint-disable max-lines */\nimport React from 'react';\nimport { useVirtual } from 'react-virtual';\nimport { debounce } from 'lodash';\nimport { DSChatT } from '../../react-desc-prop-types';\n\ntype UseFocusAndScrollHelpersArgs = {\n propsWithDefault: DSChatT.MessagesListProps;\n useVirtualHelpers: ReturnType<typeof useVirtual>;\n pendingOnScroll: React.MutableRefObject<boolean>;\n virtualListRef: React.MutableRefObject<HTMLDivElement | undefined>;\n};\n\nexport const useFocusAndScrollHelpers = ({\n propsWithDefault: { onScrollEnds },\n useVirtualHelpers: { scrollToIndex: vScroll },\n pendingOnScroll,\n virtualListRef,\n}: UseFocusAndScrollHelpersArgs) => {\n const onScrollStop = React.useMemo(\n () =>\n debounce((): string[] => {\n if (document.visibilityState === 'hidden') {\n pendingOnScroll.current = true;\n return [];\n }\n if (!virtualListRef.current) return [];\n pendingOnScroll.current = false;\n const { bottom, top } = virtualListRef.current?.getBoundingClientRect() || {};\n\n const list = virtualListRef.current.querySelectorAll<HTMLElement>('[data-element=\"chat-element-list-item\"]');\n const indexList: Array<string> = [];\n list.forEach((item: HTMLElement) => {\n const { top: itemTop } = item.getBoundingClientRect();\n\n const itemPadding = 10;\n if (itemTop + itemPadding < bottom && itemTop + itemPadding > top) indexList.push(item.dataset.index || '');\n });\n if (onScrollEnds) onScrollEnds(indexList);\n return indexList;\n }, 500),\n [onScrollEnds, pendingOnScroll, virtualListRef],\n );\n\n const onlyFocus = React.useCallback(\n (index: number | string) => {\n (virtualListRef.current?.querySelector(`[data-index=\"${index}\"]`) as HTMLDivElement)?.focus();\n },\n [virtualListRef],\n );\n\n const scrollAndFocus = React.useCallback(\n (index: number, opts = { align: 'center' } as DSChatT.ScrollToIndexOptions) => {\n vScroll(index, opts);\n setTimeout(() => {\n onlyFocus(index);\n }, 300);\n onScrollStop();\n },\n [onScrollStop, onlyFocus, vScroll],\n );\n\n const checkPendingOnScroll = React.useCallback(() => {\n if (pendingOnScroll.current === true) onScrollStop();\n }, [onScrollStop, pendingOnScroll]);\n\n return React.useMemo(\n () => ({\n onScrollStop,\n onlyFocus,\n scrollAndFocus,\n checkPendingOnScroll,\n }),\n [onScrollStop, onlyFocus, scrollAndFocus, checkPendingOnScroll],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADGvB,mBAAkB;AAElB,oBAAyB;AAUlB,MAAM,2BAA2B,CAAC;AAAA,EACvC,kBAAkB,EAAE;AAAA,EACpB,mBAAmB,EAAE,eAAe;AAAA,EACpC;AAAA,EACA;AAAA,MACkC;AAClC,QAAM,eAAe,qBAAM,QACzB,MACE,4BAAS,MAAgB;AACvB,QAAI,SAAS,oBAAoB,UAAU;AACzC,sBAAgB,UAAU;AAC1B,aAAO,CAAC;AAAA,IACV;AACA,QAAI,CAAC,eAAe;AAAS,aAAO,CAAC;AACrC,oBAAgB,UAAU;AAC1B,UAAM,EAAE,QAAQ,QAAQ,eAAe,SAAS,sBAAsB,KAAK,CAAC;AAE5E,UAAM,OAAO,eAAe,QAAQ,iBAA8B,yCAAyC;AAC3G,UAAM,YAA2B,CAAC;AAClC,SAAK,QAAQ,CAAC,SAAsB;AAClC,YAAM,EAAE,KAAK,YAAY,KAAK,sBAAsB;AAEpD,YAAM,cAAc;AACpB,UAAI,UAAU,cAAc,UAAU,UAAU,cAAc;AAAK,kBAAU,KAAK,KAAK,QAAQ,SAAS,EAAE;AAAA,IAC5G,CAAC;AACD,QAAI;AAAc,mBAAa,SAAS;AACxC,WAAO;AAAA,EACT,GAAG,GAAG,GACR,CAAC,cAAc,iBAAiB,cAAc,CAChD;AAEA,QAAM,YAAY,qBAAM,YACtB,CAAC,UAA2B;AAC1B,IAAC,eAAe,SAAS,cAAc,gBAAgB,SAAS,GAAsB,MAAM;AAAA,EAC9F,GACA,CAAC,cAAc,CACjB;AAEA,QAAM,iBAAiB,qBAAM,YAC3B,CAAC,OAAe,OAAO,EAAE,OAAO,SAAS,MAAsC;AAC7E,YAAQ,OAAO,IAAI;AACnB,eAAW,MAAM;AACf,gBAAU,KAAK;AAAA,IACjB,GAAG,GAAG;AACN,iBAAa;AAAA,EACf,GACA,CAAC,cAAc,WAAW,OAAO,CACnC;AAEA,QAAM,uBAAuB,qBAAM,YAAY,MAAM;AACnD,QAAI,gBAAgB,YAAY;AAAM,mBAAa;AAAA,EACrD,GAAG,CAAC,cAAc,eAAe,CAAC;AAElC,SAAO,qBAAM,QACX,MAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IACA,CAAC,cAAc,WAAW,gBAAgB,oBAAoB,CAChE;AACF;",
6
- "names": []
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADGvB,mBAAkB;AAElB,oBAAyB;AAUlB,MAAM,2BAA2B,CAAC;AAAA,EACvC,kBAAkB,EAAE,aAAa;AAAA,EACjC,mBAAmB,EAAE,eAAe,QAAQ;AAAA,EAC5C;AAAA,EACA;AACF,MAAoC;AAClC,QAAM,eAAe,aAAAA,QAAM;AAAA,IACzB,UACE,wBAAS,MAAgB;AACvB,UAAI,SAAS,oBAAoB,UAAU;AACzC,wBAAgB,UAAU;AAC1B,eAAO,CAAC;AAAA,MACV;AACA,UAAI,CAAC,eAAe;AAAS,eAAO,CAAC;AACrC,sBAAgB,UAAU;AAC1B,YAAM,EAAE,QAAQ,IAAI,IAAI,eAAe,SAAS,sBAAsB,KAAK,CAAC;AAE5E,YAAM,OAAO,eAAe,QAAQ,iBAA8B,yCAAyC;AAC3G,YAAM,YAA2B,CAAC;AAClC,WAAK,QAAQ,CAAC,SAAsB;AAClC,cAAM,EAAE,KAAK,QAAQ,IAAI,KAAK,sBAAsB;AAEpD,cAAM,cAAc;AACpB,YAAI,UAAU,cAAc,UAAU,UAAU,cAAc;AAAK,oBAAU,KAAK,KAAK,QAAQ,SAAS,EAAE;AAAA,MAC5G,CAAC;AACD,UAAI;AAAc,qBAAa,SAAS;AACxC,aAAO;AAAA,IACT,GAAG,GAAG;AAAA,IACR,CAAC,cAAc,iBAAiB,cAAc;AAAA,EAChD;AAEA,QAAM,YAAY,aAAAA,QAAM;AAAA,IACtB,CAAC,UAA2B;AAC1B,MAAC,eAAe,SAAS,cAAc,gBAAgB,SAAS,GAAsB,MAAM;AAAA,IAC9F;AAAA,IACA,CAAC,cAAc;AAAA,EACjB;AAEA,QAAM,iBAAiB,aAAAA,QAAM;AAAA,IAC3B,CAAC,OAAe,OAAO,EAAE,OAAO,SAAS,MAAsC;AAC7E,cAAQ,OAAO,IAAI;AACnB,iBAAW,MAAM;AACf,kBAAU,KAAK;AAAA,MACjB,GAAG,GAAG;AACN,mBAAa;AAAA,IACf;AAAA,IACA,CAAC,cAAc,WAAW,OAAO;AAAA,EACnC;AAEA,QAAM,uBAAuB,aAAAA,QAAM,YAAY,MAAM;AACnD,QAAI,gBAAgB,YAAY;AAAM,mBAAa;AAAA,EACrD,GAAG,CAAC,cAAc,eAAe,CAAC;AAElC,SAAO,aAAAA,QAAM;AAAA,IACX,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,cAAc,WAAW,gBAAgB,oBAAoB;AAAA,EAChE;AACF;",
6
+ "names": ["React"]
7
7
  }
@@ -17,7 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  }
18
18
  return to;
19
19
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
21
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
25
  var useGetNewMessages_exports = {};
23
26
  __export(useGetNewMessages_exports, {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/parts/chat-container-messages-list/useGetNewMessages.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["import { useMemo, useState } from 'react';\nimport { BubblePropsT } from '../../exported-related/bubble/props';\n\nexport const useGetNewMessages = (messages: BubblePropsT[]) => {\n const [seenMessages, setSeenMessages] = useState<Record<BubblePropsT['dsId'], true>>({});\n const newMessages = useMemo(() => {\n const list: BubblePropsT[] = [];\n messages.forEach((message) => {\n if (!(message.dsId in seenMessages)) {\n list.push(message);\n }\n });\n setSeenMessages(Object.fromEntries(messages.map((m) => [m.dsId, true])));\n return list;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [messages]);\n\n return newMessages;\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAkC;AAG3B,MAAM,oBAAoB,CAAC,aAA6B;AAC7D,QAAM,CAAC,cAAc,mBAAmB,2BAA6C,CAAC,CAAC;AACvF,QAAM,cAAc,0BAAQ,MAAM;AAChC,UAAM,OAAuB,CAAC;AAC9B,aAAS,QAAQ,CAAC,YAAY;AAC5B,UAAI,CAAE,SAAQ,QAAQ,eAAe;AACnC,aAAK,KAAK,OAAO;AAAA,MACnB;AAAA,IACF,CAAC;AACD,oBAAgB,OAAO,YAAY,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;AACvE,WAAO;AAAA,EAET,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO;AACT;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAkC;AAG3B,MAAM,oBAAoB,CAAC,aAA6B;AAC7D,QAAM,CAAC,cAAc,eAAe,QAAI,uBAA6C,CAAC,CAAC;AACvF,QAAM,kBAAc,sBAAQ,MAAM;AAChC,UAAM,OAAuB,CAAC;AAC9B,aAAS,QAAQ,CAAC,YAAY;AAC5B,UAAI,EAAE,QAAQ,QAAQ,eAAe;AACnC,aAAK,KAAK,OAAO;AAAA,MACnB;AAAA,IACF,CAAC;AACD,oBAAgB,OAAO,YAAY,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;AACvE,WAAO;AAAA,EAET,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -17,7 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  }
18
18
  return to;
19
19
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
21
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
25
  var useGlobalEventListener_exports = {};
23
26
  __export(useGlobalEventListener_exports, {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/parts/chat-container-messages-list/useGlobalEventListener.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["import React from 'react';\nimport { type DebouncedFunc } from 'lodash';\nimport { type DSChatT } from '../../react-desc-prop-types';\n\ntype UseGlobalEventListenerArgs = {\n propsWithDefault: DSChatT.MessagesListProps;\n virtualListRef: React.MutableRefObject<HTMLDivElement | undefined>;\n onScrollStop: DebouncedFunc<() => string[]>;\n checkPendingOnScroll: GenericFunc;\n};\n\nexport const useGlobalEventListener = ({\n propsWithDefault: { onScrollEnds },\n virtualListRef,\n onScrollStop,\n checkPendingOnScroll,\n}: UseGlobalEventListenerArgs) => {\n React.useEffect(() => {\n let handlerCallback: ReturnType<typeof setTimeout>;\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 document.addEventListener('visibilitychange', checkPendingOnScroll);\n return () => {\n if (handlerCallback) clearTimeout(handlerCallback);\n if (onScrollEnds) localVirtualRef.removeEventListener('scroll', onScroll);\n document.removeEventListener('visibilitychange', checkPendingOnScroll);\n };\n }, [onScrollStop, onScrollEnds, checkPendingOnScroll, virtualListRef]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAkB;AAWX,MAAM,yBAAyB,CAAC;AAAA,EACrC,kBAAkB,EAAE;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,MACgC;AAChC,uBAAM,UAAU,MAAM;AACpB,QAAI;AACJ,UAAM,kBAAkB,eAAe;AACvC,UAAM,WAAW,MAAM;AACrB,UAAI;AAAiB,qBAAa,eAAe;AACjD,wBAAkB,WAAW,cAAc,GAAG;AAAA,IAChD;AACA,QAAI,cAAc;AAChB,qBAAe,SAAS,iBAAiB,UAAU,QAAQ;AAAA,IAC7D;AACA,aAAS,iBAAiB,oBAAoB,oBAAoB;AAClE,WAAO,MAAM;AACX,UAAI;AAAiB,qBAAa,eAAe;AACjD,UAAI;AAAc,wBAAgB,oBAAoB,UAAU,QAAQ;AACxE,eAAS,oBAAoB,oBAAoB,oBAAoB;AAAA,IACvE;AAAA,EACF,GAAG,CAAC,cAAc,cAAc,sBAAsB,cAAc,CAAC;AACvE;",
6
- "names": []
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAkB;AAWX,MAAM,yBAAyB,CAAC;AAAA,EACrC,kBAAkB,EAAE,aAAa;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AACF,MAAkC;AAChC,eAAAA,QAAM,UAAU,MAAM;AACpB,QAAI;AACJ,UAAM,kBAAkB,eAAe;AACvC,UAAM,WAAW,MAAM;AACrB,UAAI;AAAiB,qBAAa,eAAe;AACjD,wBAAkB,WAAW,cAAc,GAAG;AAAA,IAChD;AACA,QAAI,cAAc;AAChB,qBAAe,SAAS,iBAAiB,UAAU,QAAQ;AAAA,IAC7D;AACA,aAAS,iBAAiB,oBAAoB,oBAAoB;AAClE,WAAO,MAAM;AACX,UAAI;AAAiB,qBAAa,eAAe;AACjD,UAAI;AAAc,wBAAgB,oBAAoB,UAAU,QAAQ;AACxE,eAAS,oBAAoB,oBAAoB,oBAAoB;AAAA,IACvE;AAAA,EACF,GAAG,CAAC,cAAc,cAAc,sBAAsB,cAAc,CAAC;AACvE;",
6
+ "names": ["React"]
7
7
  }
@@ -17,7 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  }
18
18
  return to;
19
19
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
21
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
25
  var useKeyboard_exports = {};
23
26
  __export(useKeyboard_exports, {
@@ -36,103 +39,109 @@ const useKeyboard = ({
36
39
  onlyFocus,
37
40
  onScrollStop
38
41
  }) => {
39
- const handleKey = import_react.default.useCallback((e) => {
40
- const { key, currentTarget } = e;
41
- const index = currentTarget.dataset?.index ? Number(currentTarget.dataset.index) : void 0;
42
- const isIndexNumber = getIsNumber(index);
43
- e.stopPropagation();
44
- switch (key) {
45
- case "ArrowUp":
46
- e.preventDefault();
47
- if (index && index > 0) {
48
- (virtualListRef.current?.querySelector(`[data-index="${index - 1}"]`)).focus();
49
- } else if (hasMoreItems === "top") {
50
- loadMoreRef.current?.focus();
51
- }
52
- break;
53
- case "ArrowDown":
54
- e.preventDefault();
55
- if (messages?.length && isIndexNumber && index < messages.length - 1) {
56
- (virtualListRef.current?.querySelector(`[data-index="${index + 1}"]`)).focus();
57
- }
58
- break;
59
- case "Home":
60
- e.preventDefault();
61
- scrollAndFocus(0);
62
- break;
63
- case "End":
64
- e.preventDefault();
65
- if (messages?.length)
66
- scrollAndFocus(messages.length - 1);
67
- break;
68
- case "Tab":
69
- if (hasMoreItems === "bottom" && !e.shiftKey) {
42
+ const handleKey = import_react.default.useCallback(
43
+ (e) => {
44
+ const { key, currentTarget } = e;
45
+ const index = currentTarget.dataset?.index ? Number(currentTarget.dataset.index) : void 0;
46
+ const isIndexNumber = getIsNumber(index);
47
+ e.stopPropagation();
48
+ switch (key) {
49
+ case "ArrowUp":
70
50
  e.preventDefault();
71
- loadMoreRef.current?.focus();
72
- } else if (hasMoreItems === "top" && e.shiftKey) {
51
+ if (index && index > 0) {
52
+ (virtualListRef.current?.querySelector(`[data-index="${index - 1}"]`)).focus();
53
+ } else if (hasMoreItems === "top") {
54
+ loadMoreRef.current?.focus();
55
+ }
56
+ break;
57
+ case "ArrowDown":
73
58
  e.preventDefault();
74
- loadMoreRef.current?.focus();
75
- } else if (!e.shiftKey) {
76
- if (bannerPosition) {
77
- e.preventDefault();
78
- bannerRef?.current?.focusOnWrapper();
59
+ if (messages?.length && isIndexNumber && index < messages.length - 1) {
60
+ (virtualListRef.current?.querySelector(`[data-index="${index + 1}"]`)).focus();
79
61
  }
80
- } else {
62
+ break;
63
+ case "Home":
64
+ e.preventDefault();
65
+ scrollAndFocus(0);
66
+ break;
67
+ case "End":
81
68
  e.preventDefault();
82
- virtualListRef.current?.focus();
83
- }
84
- break;
85
- default:
86
- break;
87
- }
88
- }, [hasMoreItems, messages.length, scrollAndFocus, virtualListRef, loadMoreRef, bannerPosition, bannerRef]);
89
- const handleListKey = import_react.default.useCallback((e) => {
90
- const { key } = e;
91
- switch (key) {
92
- case "ArrowUp":
93
- e.preventDefault();
94
- if (document.activeElement !== loadMoreRef.current) {
95
- onlyFocus(onScrollStop()?.shift());
96
- }
97
- break;
98
- case "ArrowDown":
99
- e.preventDefault();
100
- if (document.activeElement === loadMoreRef.current) {
101
- virtualListRef.current?.querySelector(`[data-index="0"]`)?.focus();
102
- } else {
103
- onlyFocus(onScrollStop()?.pop());
104
- }
105
- break;
106
- case "Home":
107
- e.preventDefault();
108
- scrollAndFocus(0);
109
- break;
110
- case "End":
111
- e.preventDefault();
112
- if (messages?.length)
113
- scrollAndFocus(messages.length - 1);
114
- break;
115
- case "Tab":
116
- if (document.activeElement !== loadMoreRef.current) {
69
+ if (messages?.length)
70
+ scrollAndFocus(messages.length - 1);
71
+ break;
72
+ case "Tab":
117
73
  if (hasMoreItems === "bottom" && !e.shiftKey) {
118
74
  e.preventDefault();
119
75
  loadMoreRef.current?.focus();
76
+ } else if (hasMoreItems === "top" && e.shiftKey) {
77
+ e.preventDefault();
78
+ loadMoreRef.current?.focus();
120
79
  } else if (!e.shiftKey) {
80
+ if (bannerPosition) {
81
+ e.preventDefault();
82
+ bannerRef?.current?.focusOnWrapper();
83
+ }
84
+ } else {
121
85
  e.preventDefault();
122
- actionRef.current?.focusToComposer?.();
86
+ virtualListRef.current?.focus();
87
+ }
88
+ break;
89
+ default:
90
+ break;
91
+ }
92
+ },
93
+ [hasMoreItems, messages.length, scrollAndFocus, virtualListRef, loadMoreRef, bannerPosition, bannerRef]
94
+ );
95
+ const handleListKey = import_react.default.useCallback(
96
+ (e) => {
97
+ const { key } = e;
98
+ switch (key) {
99
+ case "ArrowUp":
100
+ e.preventDefault();
101
+ if (document.activeElement !== loadMoreRef.current) {
102
+ onlyFocus(onScrollStop()?.shift());
103
+ }
104
+ break;
105
+ case "ArrowDown":
106
+ e.preventDefault();
107
+ if (document.activeElement === loadMoreRef.current) {
108
+ virtualListRef.current?.querySelector(`[data-index="0"]`)?.focus();
109
+ } else {
110
+ onlyFocus(onScrollStop()?.pop());
123
111
  }
124
- } else if (!e.shiftKey) {
112
+ break;
113
+ case "Home":
125
114
  e.preventDefault();
126
- actionRef.current?.focusToComposer?.();
127
- } else {
115
+ scrollAndFocus(0);
116
+ break;
117
+ case "End":
128
118
  e.preventDefault();
129
- virtualListRef.current?.focus();
130
- }
131
- break;
132
- default:
133
- break;
134
- }
135
- }, [actionRef, hasMoreItems, loadMoreRef, messages.length, onScrollStop, onlyFocus, scrollAndFocus, virtualListRef]);
119
+ if (messages?.length)
120
+ scrollAndFocus(messages.length - 1);
121
+ break;
122
+ case "Tab":
123
+ if (document.activeElement !== loadMoreRef.current) {
124
+ if (hasMoreItems === "bottom" && !e.shiftKey) {
125
+ e.preventDefault();
126
+ loadMoreRef.current?.focus();
127
+ } else if (!e.shiftKey) {
128
+ e.preventDefault();
129
+ actionRef.current?.focusToComposer?.();
130
+ }
131
+ } else if (!e.shiftKey) {
132
+ e.preventDefault();
133
+ actionRef.current?.focusToComposer?.();
134
+ } else {
135
+ e.preventDefault();
136
+ virtualListRef.current?.focus();
137
+ }
138
+ break;
139
+ default:
140
+ break;
141
+ }
142
+ },
143
+ [actionRef, hasMoreItems, loadMoreRef, messages.length, onScrollStop, onlyFocus, scrollAndFocus, virtualListRef]
144
+ );
136
145
  return import_react.default.useMemo(() => ({ handleKey, handleListKey }), [handleKey, handleListKey]);
137
146
  };
138
147
  //# sourceMappingURL=useKeyboard.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/parts/chat-container-messages-list/useKeyboard.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n/* eslint-disable max-lines */\nimport React from 'react';\nimport { type DebouncedFunc } from 'lodash';\nimport { DSChatT } from '../../react-desc-prop-types';\n\ntype UseKeyboardArgs = {\n propsWithDefault: DSChatT.MessagesListProps;\n actionRef: DSChatT.ActionRef;\n virtualListRef: React.MutableRefObject<HTMLDivElement | undefined>;\n loadMoreRef: React.MutableRefObject<HTMLButtonElement | undefined>;\n scrollAndFocus: (index: number, opts?: DSChatT.ScrollToIndexOptions) => void;\n onlyFocus: (index: number | string) => void;\n onScrollStop: DebouncedFunc<() => string[]>;\n // useVirtualHelpers: ReturnType<typeof useVirtual>;\n};\n\nconst getIsNumber = (val: unknown): val is number => Number.isInteger(val);\n\nexport const useKeyboard = ({\n propsWithDefault: { hasMoreItems, messages, bannerPosition, bannerRef },\n actionRef,\n virtualListRef,\n loadMoreRef,\n scrollAndFocus,\n onlyFocus,\n onScrollStop,\n}: UseKeyboardArgs) => {\n const handleKey = React.useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n const { key, currentTarget } = e;\n const index = currentTarget.dataset?.index ? Number(currentTarget.dataset.index) : undefined;\n const isIndexNumber = getIsNumber(index);\n e.stopPropagation();\n switch (key) {\n case 'ArrowUp':\n e.preventDefault();\n if (index && index > 0) {\n (virtualListRef.current?.querySelector(`[data-index=\"${index - 1}\"]`) as HTMLDivElement).focus();\n } else if (hasMoreItems === 'top') {\n loadMoreRef.current?.focus();\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (messages?.length && isIndexNumber && index < messages.length - 1) {\n (virtualListRef.current?.querySelector(`[data-index=\"${index + 1}\"]`) as HTMLDivElement).focus();\n }\n break;\n case 'Home':\n e.preventDefault();\n scrollAndFocus(0);\n break;\n case 'End':\n e.preventDefault();\n if (messages?.length) scrollAndFocus(messages.length - 1);\n break;\n case 'Tab':\n if (hasMoreItems === 'bottom' && !e.shiftKey) {\n e.preventDefault();\n loadMoreRef.current?.focus();\n } else if (hasMoreItems === 'top' && e.shiftKey) {\n e.preventDefault();\n loadMoreRef.current?.focus();\n } else if (!e.shiftKey) {\n if (bannerPosition) {\n e.preventDefault();\n bannerRef?.current?.focusOnWrapper();\n }\n } else {\n e.preventDefault();\n virtualListRef.current?.focus();\n }\n break;\n default:\n break;\n }\n },\n [hasMoreItems, messages.length, scrollAndFocus, virtualListRef, loadMoreRef, bannerPosition, bannerRef],\n );\n const handleListKey = React.useCallback(\n (e: React.KeyboardEvent) => {\n const { key } = e;\n switch (key) {\n case 'ArrowUp':\n e.preventDefault();\n if (document.activeElement !== loadMoreRef.current) {\n onlyFocus(onScrollStop()?.shift());\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (document.activeElement === loadMoreRef.current) {\n (virtualListRef.current?.querySelector(`[data-index=\"0\"]`) as HTMLDivElement)?.focus();\n } else {\n onlyFocus(onScrollStop()?.pop());\n }\n break;\n case 'Home':\n e.preventDefault();\n scrollAndFocus(0);\n break;\n case 'End':\n e.preventDefault();\n if (messages?.length) scrollAndFocus(messages.length - 1);\n break;\n case 'Tab':\n if (document.activeElement !== loadMoreRef.current) {\n if (hasMoreItems === 'bottom' && !e.shiftKey) {\n e.preventDefault();\n loadMoreRef.current?.focus();\n } else if (!e.shiftKey) {\n e.preventDefault();\n actionRef.current?.focusToComposer?.();\n }\n } else if (!e.shiftKey) {\n e.preventDefault();\n actionRef.current?.focusToComposer?.();\n } else {\n e.preventDefault();\n virtualListRef.current?.focus();\n }\n break;\n default:\n break;\n }\n },\n [actionRef, hasMoreItems, loadMoreRef, messages.length, onScrollStop, onlyFocus, scrollAndFocus, virtualListRef],\n );\n\n return React.useMemo(() => ({ handleKey, handleListKey }), [handleKey, handleListKey]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
6
- "names": []
5
+ "mappings": "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",
6
+ "names": ["React"]
7
7
  }
@@ -14,7 +14,10 @@ var __copyProps = (to, from, except, desc) => {
14
14
  return to;
15
15
  };
16
16
  var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
17
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
17
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
18
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
19
+ mod
20
+ ));
18
21
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
22
  var parts_exports = {};
20
23
  module.exports = __toCommonJS(parts_exports);
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/parts/index.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["export * from './chat-composer/ChatContainerComposer';\nexport * from './chat-container/ChatContainer';\nexport * from './chat-container-messages-list/ChatContainerMessagesList';\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;ACAA,YAAuB;ADAvB,0BAAc,kDAAd;AACA,0BAAc,2CADd;AAEA,0BAAc,qEAFd;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;ACAA,YAAuB;ADAvB,0BAAc,kDAAd;AACA,0BAAc,2CADd;AAEA,0BAAc,qEAFd;",
6
6
  "names": []
7
7
  }