@microsoft/omnichannel-chat-widget 0.1.0-main.a60f242 → 0.1.0-main.a7ac5de

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 (300) hide show
  1. package/lib/cjs/common/Constants.js +18 -167
  2. package/lib/cjs/common/KeyCodes.js +0 -3
  3. package/lib/cjs/common/contextDataStore/DataStoreManager.js +0 -4
  4. package/lib/cjs/common/storage/default/defaultCacheManager.js +24 -0
  5. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +102 -0
  6. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +78 -0
  7. package/lib/cjs/common/telemetry/TelemetryConstants.js +30 -23
  8. package/lib/cjs/common/telemetry/TelemetryHelper.js +16 -57
  9. package/lib/cjs/common/telemetry/TelemetryManager.js +0 -31
  10. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +0 -2
  11. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +30 -36
  12. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +0 -9
  13. package/lib/cjs/common/utils.js +34 -108
  14. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +8 -46
  15. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +2 -24
  16. package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  17. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -32
  18. package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
  19. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -36
  20. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
  21. package/lib/cjs/components/footerstateful/FooterStateful.js +11 -42
  22. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
  23. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -45
  24. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
  25. package/lib/cjs/components/headerstateful/HeaderStateful.js +14 -28
  26. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
  27. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +37 -0
  28. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +18 -0
  29. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  30. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +32 -0
  31. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +62 -0
  32. package/lib/cjs/components/livechatwidget/common/Deferred.js +35 -0
  33. package/lib/cjs/components/livechatwidget/common/authHelper.js +50 -0
  34. package/lib/cjs/components/livechatwidget/common/createAdapter.js +10 -9
  35. package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
  36. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -10
  37. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +36 -43
  38. package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
  39. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +64 -40
  40. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  41. package/lib/cjs/components/livechatwidget/common/endChat.js +53 -38
  42. package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
  43. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +7 -16
  44. package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
  45. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +21 -56
  46. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +78 -128
  47. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
  48. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +2 -11
  49. package/lib/cjs/components/livechatwidget/common/shareObservable.js +41 -0
  50. package/lib/cjs/components/livechatwidget/common/startChat.js +157 -107
  51. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +0 -8
  52. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
  53. package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  54. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +257 -230
  55. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +4 -17
  56. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +4 -17
  57. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -17
  58. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -23
  59. package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  60. package/lib/cjs/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +13 -0
  61. package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  62. package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  63. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +10 -38
  64. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -32
  65. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -24
  66. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +29 -34
  67. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -7
  68. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  69. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  70. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +9 -26
  71. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +3 -16
  72. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  73. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -15
  74. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  75. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  76. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +0 -4
  77. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -4
  78. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  79. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  80. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  81. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  82. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  83. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  84. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  85. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
  87. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -41
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +9 -19
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +23 -60
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -13
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -16
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +2 -30
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +2 -12
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +6 -28
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +13 -30
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -34
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +1 -12
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -19
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  112. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  113. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  114. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  115. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  116. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  117. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -12
  118. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  119. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  120. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  121. package/lib/cjs/contexts/common/ConversationState.js +0 -1
  122. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +4 -3
  123. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +11 -12
  124. package/lib/cjs/contexts/createReducer.js +151 -105
  125. package/lib/cjs/controller/componentController.js +2 -31
  126. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  127. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  128. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  129. package/lib/cjs/index.js +0 -5
  130. package/lib/cjs/plugins/newMessageEventHandler.js +15 -36
  131. package/lib/esm/common/Constants.js +15 -154
  132. package/lib/esm/common/KeyCodes.js +0 -2
  133. package/lib/esm/common/contextDataStore/DataStoreManager.js +0 -2
  134. package/lib/esm/common/storage/default/defaultCacheManager.js +16 -0
  135. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +95 -0
  136. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
  137. package/lib/esm/common/telemetry/TelemetryConstants.js +34 -20
  138. package/lib/esm/common/telemetry/TelemetryHelper.js +16 -45
  139. package/lib/esm/common/telemetry/TelemetryManager.js +0 -18
  140. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +28 -24
  141. package/lib/esm/common/telemetry/loggers/consoleLogger.js +0 -5
  142. package/lib/esm/common/utils.js +31 -57
  143. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +8 -17
  144. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +2 -7
  145. package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  146. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +10 -13
  147. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -15
  148. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  149. package/lib/esm/components/footerstateful/FooterStateful.js +13 -23
  150. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -35
  151. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
  152. package/lib/esm/components/headerstateful/HeaderStateful.js +14 -13
  153. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  154. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +30 -0
  155. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +11 -0
  156. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  157. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +25 -0
  158. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +55 -0
  159. package/lib/esm/components/livechatwidget/common/Deferred.js +28 -0
  160. package/lib/esm/components/livechatwidget/common/authHelper.js +42 -0
  161. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -4
  162. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
  163. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -5
  164. package/lib/esm/components/livechatwidget/common/createMarkdown.js +38 -37
  165. package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
  166. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +66 -27
  167. package/lib/esm/components/livechatwidget/common/endChat.js +55 -23
  168. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  169. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +9 -11
  170. package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
  171. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +23 -21
  172. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +78 -110
  173. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -9
  174. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +4 -3
  175. package/lib/esm/components/livechatwidget/common/shareObservable.js +35 -0
  176. package/lib/esm/components/livechatwidget/common/startChat.js +158 -85
  177. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  178. package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  179. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +261 -169
  180. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +4 -5
  181. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
  182. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -5
  183. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -11
  184. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  185. package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
  186. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  187. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  188. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +12 -22
  189. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +4 -8
  190. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -6
  191. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +27 -9
  192. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  193. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  194. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  195. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +9 -18
  196. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +3 -12
  197. package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
  198. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -5
  199. package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
  200. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  201. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +0 -2
  202. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -2
  203. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  204. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  205. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  206. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  207. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  208. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  209. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  210. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  211. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
  212. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
  213. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -26
  214. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +11 -11
  215. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +23 -38
  216. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
  217. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -9
  218. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -14
  219. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  220. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
  221. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
  222. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  223. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
  224. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  225. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +4 -28
  226. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +3 -3
  227. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +7 -14
  228. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +3 -3
  229. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +15 -19
  230. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  231. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -29
  232. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  233. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +3 -8
  234. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -14
  235. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  236. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  237. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  238. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  239. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  240. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  241. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  242. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -5
  243. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  244. package/lib/esm/contexts/ChatContextStore.js +2 -1
  245. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  246. package/lib/esm/contexts/common/ConversationState.js +0 -1
  247. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +4 -3
  248. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +11 -8
  249. package/lib/esm/contexts/createReducer.js +151 -102
  250. package/lib/esm/controller/componentController.js +3 -2
  251. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  252. package/lib/esm/hooks/useChatContextStore.js +0 -4
  253. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  254. package/lib/esm/plugins/newMessageEventHandler.js +15 -26
  255. package/lib/types/common/Constants.d.ts +13 -0
  256. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  257. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  258. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  259. package/lib/types/common/telemetry/TelemetryConstants.d.ts +18 -5
  260. package/lib/types/common/telemetry/TelemetryHelper.d.ts +1 -1
  261. package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -4
  262. package/lib/types/common/utils.d.ts +5 -4
  263. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +1 -1
  264. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +2 -1
  265. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  266. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  267. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  268. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  269. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  270. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  271. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  272. package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
  273. package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
  274. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -7
  275. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  276. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  277. package/lib/types/components/livechatwidget/common/startChat.d.ts +5 -3
  278. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +1 -1
  279. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +2 -1
  280. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +5 -2
  281. package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
  282. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  283. package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
  284. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  285. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -2
  286. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  287. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  288. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  289. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
  290. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  291. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +1 -1
  292. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  293. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  294. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  295. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  296. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  297. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +3 -2
  298. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +5 -3
  299. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  300. package/package.json +5 -4
@@ -4,111 +4,73 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.initWebChatComposer = void 0;
7
-
8
7
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
9
-
10
8
  var _botframeworkWebchat = require("botframework-webchat");
11
-
12
9
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
13
-
14
10
  var _ConversationState = require("../../../contexts/common/ConversationState");
15
-
16
11
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
17
-
18
12
  var _PostChatSurveyMode = require("../../postchatsurveypanestateful/enums/PostChatSurveyMode");
19
-
20
13
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
21
-
22
14
  var _WebChatStoreLoader = require("../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader");
23
-
24
15
  var _attachmentProcessingMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware"));
25
-
26
16
  var _utils = require("../../../common/utils");
27
-
28
17
  var _channelDataMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware"));
29
-
30
18
  var _activityMiddleware = require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware");
31
-
32
19
  var _attachmentMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware"));
33
-
34
20
  var _attachmentUploadValidatorMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware"));
35
-
36
21
  var _avatarMiddleware = require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware");
37
-
38
22
  var _conversationEndMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware"));
39
-
40
23
  var _dataMaskingMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware"));
41
-
42
24
  var _createMarkdown = require("./createMarkdown");
43
-
44
25
  var _maxMessageSizeValidator = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator"));
45
-
46
26
  var _WebChatLogger = require("../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger");
47
-
48
27
  var _defaultAttachmentProps = require("../../webchatcontainerstateful/common/defaultProps/defaultAttachmentProps");
49
-
50
28
  var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
51
-
52
29
  var _defaultWebChatContainerStatefulProps = require("../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps");
53
-
54
30
  var _omnichannelChatSdk = require("@microsoft/omnichannel-chat-sdk");
55
-
56
31
  var _gifUploadMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware"));
57
-
58
32
  var _htmlPlayerMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware"));
59
-
60
33
  var _htmlTextMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware"));
61
-
62
34
  var _preProcessingMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware"));
63
-
64
35
  var _sanitizationMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware"));
65
-
66
36
  var _cardActionMiddleware = require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware");
67
-
68
37
  var _messageTimestampMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware"));
69
-
70
38
  var _Constants = require("../../../common/Constants");
71
-
72
39
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
73
-
74
40
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
41
  const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles) => {
76
42
  var _props$webChatContain, _props$webChatContain2, _props$webChatContain3, _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4, _state$domainStates$l8, _state$domainStates$l9, _props$webChatContain7, _props$webChatContain8, _state$domainStates$r, _state$domainStates$r2, _props$webChatContain9, _props$webChatContain10, _state$domainStates$r3, _state$domainStates$r4, _props$webChatContain11, _props$webChatContain12, _defaultWebChatContai, _props$webChatContain13, _props$webChatContain14, _props$webChatContain15, _props$webChatContain16, _state$domainStates$r5, _state$domainStates$r6, _props$webChatContain17, _props$webChatContain18, _defaultWebChatContai2, _props$webChatContain19, _props$webChatContain20, _defaultWebChatContai3, _props$webChatContain21, _props$webChatContain22;
77
-
78
- const localizedTexts = { ..._defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts,
43
+ const localizedTexts = {
44
+ ..._defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts,
79
45
  ...((_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : _props$webChatContain.localizedTexts)
80
46
  };
81
- const disableNewLineMarkdownSupport = ((_props$webChatContain2 = props.webChatContainerProps) === null || _props$webChatContain2 === void 0 ? void 0 : _props$webChatContain2.disableNewLineMarkdownSupport) ?? _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.disableNewLineMarkdownSupport; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
82
-
47
+ const disableNewLineMarkdownSupport = ((_props$webChatContain2 = props.webChatContainerProps) === null || _props$webChatContain2 === void 0 ? void 0 : _props$webChatContain2.disableNewLineMarkdownSupport) ?? _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.disableNewLineMarkdownSupport;
48
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
83
49
  const markdown = (0, _createMarkdown.createMarkdown)(((_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.disableMarkdownMessageFormatting) ?? _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.disableMarkdownMessageFormatting, disableNewLineMarkdownSupport);
84
50
  const isPostChatEnabled = (_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.msdyn_postconversationsurveyenable;
85
- const postChatSurveyMode = (_state$domainStates$l3 = state.domainStates.liveChatConfig) === null || _state$domainStates$l3 === void 0 ? void 0 : (_state$domainStates$l4 = _state$domainStates$l3.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l4 === void 0 ? void 0 : _state$domainStates$l4.msdyn_postconversationsurveymode; // Initialize Web Chat's redux store
51
+ const postChatSurveyMode = (_state$domainStates$l3 = state.domainStates.liveChatConfig) === null || _state$domainStates$l3 === void 0 ? void 0 : (_state$domainStates$l4 = _state$domainStates$l3.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l4 === void 0 ? void 0 : _state$domainStates$l4.msdyn_postconversationsurveymode;
86
52
 
53
+ // Initialize Web Chat's redux store
87
54
  let webChatStore = _WebChatStoreLoader.WebChatStoreLoader.store;
88
-
89
55
  if (!webChatStore) {
90
56
  var _state$domainStates$l5, _state$domainStates$l6, _state$domainStates$l7, _props$webChatContain6;
91
-
92
57
  const conversationEndCallback = async () => {
93
58
  var _props$webChatContain4, _props$webChatContain5;
94
-
95
59
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
96
60
  Event: _TelemetryConstants.TelemetryEvent.ConversationEndedThreadEventReceived,
97
61
  Description: "Conversation is ended by agent side or by timeout."
98
62
  });
99
-
100
63
  if ((props === null || props === void 0 ? void 0 : (_props$webChatContain4 = props.webChatContainerProps) === null || _props$webChatContain4 === void 0 ? void 0 : (_props$webChatContain5 = _props$webChatContain4.renderingMiddlewareProps) === null || _props$webChatContain5 === void 0 ? void 0 : _props$webChatContain5.hideSendboxOnConversationEnd) !== false) {
101
64
  setWebChatStyles(styles => {
102
- return { ...styles,
65
+ return {
66
+ ...styles,
103
67
  hideSendBox: true
104
68
  };
105
69
  });
106
70
  }
107
-
108
- _WebChatStoreLoader.WebChatStoreLoader.store = null;
109
-
110
71
  if (isPostChatEnabled === "true") {
111
72
  if (postChatSurveyMode === _PostChatSurveyMode.PostChatSurveyMode.Embed) {
73
+ _WebChatStoreLoader.WebChatStoreLoader.store = null;
112
74
  dispatch({
113
75
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
114
76
  payload: _ConversationState.ConversationState.PostchatLoading
@@ -117,7 +79,6 @@ const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles)
117
79
  const loadPostChatEvent = {
118
80
  eventName: _TelemetryConstants.BroadcastEvent.LoadPostChatSurvey
119
81
  };
120
-
121
82
  _omnichannelChatComponents.BroadcastService.postMessage(loadPostChatEvent);
122
83
  } else if (postChatSurveyMode === _PostChatSurveyMode.PostChatSurveyMode.Link) {
123
84
  dispatch({
@@ -126,12 +87,15 @@ const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles)
126
87
  });
127
88
  }
128
89
  } else {
90
+ dispatch({
91
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
92
+ payload: _ConversationState.ConversationState.InActive
93
+ });
129
94
  dispatch({
130
95
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY_AGENT,
131
96
  payload: true
132
97
  });
133
98
  }
134
-
135
99
  dispatch({
136
100
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
137
101
  payload: undefined
@@ -141,15 +105,17 @@ const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles)
141
105
  payload: undefined
142
106
  });
143
107
  };
144
-
145
- webChatStore = (0, _botframeworkWebchat.createStore)({}, //initial state
146
- _preProcessingMiddleware.default, _attachmentProcessingMiddleware.default, (0, _attachmentUploadValidatorMiddleware.default)((_state$domainStates$l5 = state.domainStates.liveChatConfig) === null || _state$domainStates$l5 === void 0 ? void 0 : _state$domainStates$l5.allowedFileExtensions, (_state$domainStates$l6 = state.domainStates.liveChatConfig) === null || _state$domainStates$l6 === void 0 ? void 0 : _state$domainStates$l6.maxUploadFileSize, localizedTexts), _channelDataMiddleware.default, (0, _conversationEndMiddleware.default)(conversationEndCallback), (0, _dataMaskingMiddleware.default)((_state$domainStates$l7 = state.domainStates.liveChatConfig) === null || _state$domainStates$l7 === void 0 ? void 0 : _state$domainStates$l7.DataMaskingInfo), _messageTimestampMiddleware.default, _gifUploadMiddleware.default, _htmlPlayerMiddleware.default, _htmlTextMiddleware.default, (0, _maxMessageSizeValidator.default)(localizedTexts), _sanitizationMiddleware.default, // eslint-disable-next-line @typescript-eslint/no-explicit-any
108
+ webChatStore = (0, _botframeworkWebchat.createStore)({},
109
+ //initial state
110
+ _preProcessingMiddleware.default, _attachmentProcessingMiddleware.default, (0, _attachmentUploadValidatorMiddleware.default)((_state$domainStates$l5 = state.domainStates.liveChatConfig) === null || _state$domainStates$l5 === void 0 ? void 0 : _state$domainStates$l5.allowedFileExtensions, (_state$domainStates$l6 = state.domainStates.liveChatConfig) === null || _state$domainStates$l6 === void 0 ? void 0 : _state$domainStates$l6.maxUploadFileSize, localizedTexts), _channelDataMiddleware.default, (0, _conversationEndMiddleware.default)(conversationEndCallback), (0, _dataMaskingMiddleware.default)((_state$domainStates$l7 = state.domainStates.liveChatConfig) === null || _state$domainStates$l7 === void 0 ? void 0 : _state$domainStates$l7.DataMaskingInfo), _messageTimestampMiddleware.default, _gifUploadMiddleware.default, _htmlPlayerMiddleware.default, _htmlTextMiddleware.default, (0, _maxMessageSizeValidator.default)(localizedTexts), _sanitizationMiddleware.default,
111
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
147
112
  ...(((_props$webChatContain6 = props.webChatContainerProps) === null || _props$webChatContain6 === void 0 ? void 0 : _props$webChatContain6.storeMiddlewares) ?? []));
148
113
  _WebChatStoreLoader.WebChatStoreLoader.store = webChatStore;
149
- } // Initialize the remaining Web Chat props
150
-
114
+ }
151
115
 
152
- const webChatProps = { ..._defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.webChatProps,
116
+ // Initialize the remaining Web Chat props
117
+ const webChatProps = {
118
+ ..._defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.webChatProps,
153
119
  dir: state.domainStates.globalDir,
154
120
  locale: (0, _utils.changeLanguageCodeFormatForWebChat)((0, _omnichannelChatSdk.getLocaleStringFromId)((_state$domainStates$l8 = state.domainStates.liveChatConfig) === null || _state$domainStates$l8 === void 0 ? void 0 : (_state$domainStates$l9 = _state$domainStates$l8.ChatWidgetLanguage) === null || _state$domainStates$l9 === void 0 ? void 0 : _state$domainStates$l9.msdyn_localeid)),
155
121
  store: webChatStore,
@@ -166,5 +132,4 @@ const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles)
166
132
  };
167
133
  return webChatProps;
168
134
  };
169
-
170
135
  exports.initWebChatComposer = initWebChatComposer;
@@ -3,97 +3,96 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.startUnauthenticatedReconnectChat = exports.handleUnauthenticatedReconnectChat = exports.handleRedirectUnauthenticatedReconnectChat = exports.getReconnectIdForAuthenticatedChat = exports.getChatReconnectContext = void 0;
7
-
6
+ exports.isReconnectEnabled = exports.handleChatReconnect = exports.getChatReconnectContext = void 0;
8
7
  require("regenerator-runtime/runtime");
9
-
10
8
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
11
-
12
9
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
13
-
14
10
  var _ConversationState = require("../../../contexts/common/ConversationState");
15
-
16
11
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
17
-
18
12
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
13
+ var _authHelper = require("./authHelper");
14
+ var _utils = require("../../../common/utils");
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ const handleChatReconnect = async (chatSDK, props, dispatch, setAdapter, initStartChat, state) => {
17
+ var _props$chatConfig, _props$chatConfig$Liv;
18
+ if (!isReconnectEnabled(props.chatConfig)) return;
19
+
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ const isAuthenticatedChat = (_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && (_props$chatConfig$Liv = _props$chatConfig.LiveChatConfigAuthSettings) !== null && _props$chatConfig$Liv !== void 0 && _props$chatConfig$Liv.msdyn_javascriptclientfunction ? true : false;
22
+
23
+ // Get chat reconnect context
24
+ const reconnectChatContext = await getChatReconnectContext(chatSDK, props.chatConfig, props, isAuthenticatedChat);
25
+ if (hasReconnectId(reconnectChatContext)) {
26
+ var _props$reconnectChatP2, _props$reconnectChatP3;
27
+ //Redirect if enabled
28
+ if (reconnectChatContext.redirectURL && !(0, _utils.isNullOrEmptyString)(reconnectChatContext.redirectURL)) {
29
+ var _props$reconnectChatP;
30
+ redirectPage(reconnectChatContext.redirectURL, (_props$reconnectChatP = props.reconnectChatPaneProps) === null || _props$reconnectChatP === void 0 ? void 0 : _props$reconnectChatP.redirectInSameWindow);
31
+ return;
32
+ }
33
+
34
+ //if reconnect id is provided in props, don't show reconnect pane
35
+ if ((_props$reconnectChatP2 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP2 !== void 0 && _props$reconnectChatP2.reconnectId && !(0, _utils.isNullOrEmptyString)((_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.reconnectId)) {
36
+ const reconnectChatContext = await getChatReconnectContext(chatSDK, props.chatConfig, props, isAuthenticatedChat);
37
+ await setReconnectIdAndStartChat(isAuthenticatedChat, chatSDK, props, dispatch, setAdapter, reconnectChatContext.reconnectId ?? "", initStartChat);
38
+ return;
39
+ }
40
+
41
+ //show reconnect pane
42
+ state.appStates.conversationState = _ConversationState.ConversationState.ReconnectChat;
43
+ dispatch({
44
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
45
+ payload: reconnectChatContext.reconnectId ?? ""
46
+ });
47
+ dispatch({
48
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
49
+ payload: _ConversationState.ConversationState.ReconnectChat
50
+ });
51
+ return;
52
+ }
53
+ };
19
54
 
20
55
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
- const getChatReconnectContext = async (chatSDK, reconnectId) => {
56
+ exports.handleChatReconnect = handleChatReconnect;
57
+ const getChatReconnectContext = async (chatSDK, chatConfig, props, isAuthenticatedChat) => {
22
58
  try {
23
- if (reconnectId) {
24
- const chatReconnectOptionalParams = {
25
- reconnectId: reconnectId
26
- };
27
- return await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext(chatReconnectOptionalParams));
28
- } else {
29
- return await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext());
59
+ var _props$reconnectChatP4;
60
+ const chatReconnectOptionalParams = {
61
+ reconnectId: (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.reconnectId
62
+ };
63
+ if (isAuthenticatedChat) {
64
+ // Get auth token for for getting chat reconnect context
65
+ await (0, _authHelper.handleAuthentication)(chatSDK, chatConfig, props.getAuthToken);
66
+ }
67
+ const reconnectChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext(chatReconnectOptionalParams));
68
+ if (isAuthenticatedChat) {
69
+ // remove auth token after reconnectId is fetched
70
+ // this will be reset later at start chat
71
+ (0, _authHelper.removeAuthTokenProvider)(chatSDK);
30
72
  }
31
- } catch (ex) {
73
+ return reconnectChatContext;
74
+ } catch (error) {
32
75
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
33
76
  Event: _TelemetryConstants.TelemetryEvent.GetChatReconnectContextSDKCallFailed,
34
77
  ExceptionDetails: {
35
- exception: ex
78
+ exception: error
36
79
  }
37
80
  });
38
81
  }
82
+ };
39
83
 
40
- return null;
41
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
-
43
-
84
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
85
  exports.getChatReconnectContext = getChatReconnectContext;
45
-
46
- const getReconnectIdForAuthenticatedChat = async (props, chatSDK) => {
47
- var _props$reconnectChatP, _props$reconnectChatP2;
48
-
49
- if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.isReconnectEnabled && (_props$reconnectChatP2 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP2 !== void 0 && _props$reconnectChatP2.authClientFunction // TODO: Implement this after storage is in place
50
-
51
- /* && !isLoadWithState() */
52
- ) {
53
- const previousActiveSessionResponse = await getChatReconnectContext(chatSDK);
54
-
55
- if (previousActiveSessionResponse && previousActiveSessionResponse.reconnectId) {
56
- return previousActiveSessionResponse.reconnectId;
57
- }
58
- }
59
-
60
- return undefined;
61
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
-
63
-
64
- exports.getReconnectIdForAuthenticatedChat = getReconnectIdForAuthenticatedChat;
65
-
66
- const handleUnauthenticatedReconnectChat = async (chatSDK, dispatch, setAdapter, reconnectId, initStartChat, redirectInSameWindow) => {
67
- const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
68
-
69
- if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
70
- await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, dispatch, setAdapter, initStartChat, redirectInSameWindow);
86
+ const setReconnectIdAndStartChat = async (isAuthenticatedChat, chatSDK, props, dispatch, setAdapter, reconnectId, initStartChat) => {
87
+ if (isAuthenticatedChat) {
88
+ // Get auth token for for getting chat reconnect context
89
+ await (0, _authHelper.handleAuthentication)(chatSDK, props.chatConfig, props.getAuthToken);
71
90
  } else {
72
- await setReconnectIdAndStartChat(chatSDK, dispatch, setAdapter, reconnectId, initStartChat);
73
- }
74
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
-
76
-
77
- exports.handleUnauthenticatedReconnectChat = handleUnauthenticatedReconnectChat;
78
-
79
- const startUnauthenticatedReconnectChat = async (chatSDK, dispatch, setAdapter, reconnectId, initStartChat) => {
80
- const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
81
-
82
- if (!shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
83
- await setReconnectIdAndStartChat(chatSDK, dispatch, setAdapter, reconnectId, initStartChat);
91
+ const startUnauthenticatedReconnectChat = {
92
+ eventName: _TelemetryConstants.BroadcastEvent.StartUnauthenticatedReconnectChat
93
+ };
94
+ _omnichannelChatComponents.BroadcastService.postMessage(startUnauthenticatedReconnectChat);
84
95
  }
85
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
-
87
-
88
- exports.startUnauthenticatedReconnectChat = startUnauthenticatedReconnectChat;
89
-
90
- const setReconnectIdAndStartChat = async (chatSDK, dispatch, setAdapter, reconnectId, initStartChat) => {
91
- const startUnauthenticatedReconnectChat = {
92
- eventName: _TelemetryConstants.BroadcastEvent.StartUnauthenticatedReconnectChat
93
- };
94
-
95
- _omnichannelChatComponents.BroadcastService.postMessage(startUnauthenticatedReconnectChat);
96
-
97
96
  const optionalParams = {
98
97
  reconnectId: reconnectId
99
98
  };
@@ -105,9 +104,8 @@ const setReconnectIdAndStartChat = async (chatSDK, dispatch, setAdapter, reconne
105
104
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
106
105
  payload: _ConversationState.ConversationState.Loading
107
106
  });
108
- await initStartChat(chatSDK, dispatch, setAdapter, optionalParams);
107
+ await initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
109
108
  };
110
-
111
109
  const redirectPage = (redirectURL, redirectInSameWindow) => {
112
110
  const redirectPageRequest = {
113
111
  eventName: _TelemetryConstants.BroadcastEvent.RedirectPageRequest,
@@ -115,64 +113,16 @@ const redirectPage = (redirectURL, redirectInSameWindow) => {
115
113
  redirectURL: redirectURL
116
114
  }
117
115
  };
118
-
119
116
  _omnichannelChatComponents.BroadcastService.postMessage(redirectPageRequest);
120
-
121
117
  if (redirectInSameWindow) {
122
118
  window.location.href = redirectURL;
123
119
  }
124
120
  };
125
-
126
- const shouldRedirectOrStartNewChat = reconnectAvailabilityResponse => {
127
- return reconnectAvailabilityResponse && !reconnectAvailabilityResponse.reconnectId;
128
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
129
-
130
-
131
- const startNewChatEmptyRedirectionUrl = async (chatSDK, dispatch, setAdapter, initStartChat) => {
132
- const startUnauthenticatedReconnectChat = {
133
- eventName: _TelemetryConstants.BroadcastEvent.StartUnauthenticatedReconnectChat
134
- };
135
-
136
- _omnichannelChatComponents.BroadcastService.postMessage(startUnauthenticatedReconnectChat); // Getting PreChat Survey Context
137
-
138
-
139
- const parseToJson = false;
140
- const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
141
-
142
- if (preChatSurveyResponse) {
143
- dispatch({
144
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
145
- payload: preChatSurveyResponse
146
- });
147
- dispatch({
148
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
149
- payload: _ConversationState.ConversationState.Prechat
150
- });
151
- } else {
152
- dispatch({
153
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
154
- payload: _ConversationState.ConversationState.Loading
155
- });
156
- await initStartChat(chatSDK, dispatch, setAdapter);
157
- }
158
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
159
-
160
-
161
- const handleRedirectUnauthenticatedReconnectChat = async (chatSDK, dispatch, setAdapter, initStartChat, reconnectId, redirectInSameWindow) => {
162
- const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
163
-
164
- if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
165
- await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, dispatch, setAdapter, initStartChat, redirectInSameWindow);
166
- }
167
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
168
-
169
-
170
- exports.handleRedirectUnauthenticatedReconnectChat = handleRedirectUnauthenticatedReconnectChat;
171
-
172
- const redirectOrStartNewChat = async (reconnectAvailabilityResponse, chatSDK, dispatch, setAdapter, initStartChat, redirectInSameWindow) => {
173
- if (reconnectAvailabilityResponse.redirectURL) {
174
- redirectPage(reconnectAvailabilityResponse.redirectURL, redirectInSameWindow);
175
- } else {
176
- await startNewChatEmptyRedirectionUrl(chatSDK, dispatch, setAdapter, initStartChat);
177
- }
121
+ const isReconnectEnabled = chatConfig => {
122
+ var _chatConfig$LiveWSAnd;
123
+ return chatConfig && ((_chatConfig$LiveWSAnd = chatConfig.LiveWSAndLiveChatEngJoin) === null || _chatConfig$LiveWSAnd === void 0 ? void 0 : _chatConfig$LiveWSAnd.msdyn_enablechatreconnect) && (chatConfig.LiveWSAndLiveChatEngJoin.msdyn_enablechatreconnect === "true" || chatConfig.LiveWSAndLiveChatEngJoin.msdyn_enablechatreconnect === true);
124
+ };
125
+ exports.isReconnectEnabled = isReconnectEnabled;
126
+ const hasReconnectId = reconnectAvailabilityResponse => {
127
+ return reconnectAvailabilityResponse && !(0, _utils.isNullOrUndefined)(reconnectAvailabilityResponse.reconnectId);
178
128
  };
@@ -4,42 +4,31 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.registerTelemetryLoggers = void 0;
7
-
8
7
  var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
9
-
10
8
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
11
-
12
9
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
13
-
14
10
  var _defaultAriaConfig = require("../../../common/telemetry/defaultConfigs/defaultAriaConfig");
15
-
16
11
  var _defaultTelemetryInternalData = require("../../../common/telemetry/defaultConfigs/defaultTelemetryInternalData");
17
-
18
12
  var _defaultTelemetryConfiguration = require("../../../common/telemetry/defaultConfigs/defaultTelemetryConfiguration");
19
-
20
13
  const registerTelemetryLoggers = (props, dispatch) => {
21
14
  var _props$liveChatContex, _props$liveChatContex2;
22
-
23
- const telemetryConfig = { ..._defaultTelemetryConfiguration.defaultTelemetryConfiguration,
15
+ const telemetryConfig = {
16
+ ..._defaultTelemetryConfiguration.defaultTelemetryConfiguration,
24
17
  ...props.telemetryConfig
25
18
  };
26
-
27
19
  if ((_props$liveChatContex = props.liveChatContextFromCache) !== null && _props$liveChatContex !== void 0 && (_props$liveChatContex2 = _props$liveChatContex.domainStates) !== null && _props$liveChatContex2 !== void 0 && _props$liveChatContex2.telemetryInternalData) {
28
20
  var _props$liveChatContex3, _props$liveChatContex4;
29
-
30
21
  _TelemetryManager.TelemetryManager.InternalTelemetryData = (_props$liveChatContex3 = props.liveChatContextFromCache) === null || _props$liveChatContex3 === void 0 ? void 0 : (_props$liveChatContex4 = _props$liveChatContex3.domainStates) === null || _props$liveChatContex4 === void 0 ? void 0 : _props$liveChatContex4.telemetryInternalData;
31
22
  } else {
32
23
  var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$chatSDK3, _props$chatSDK3$omnic;
33
-
34
- let telemetryData = { ..._defaultTelemetryInternalData.defaultInternalTelemetryData,
24
+ let telemetryData = {
25
+ ..._defaultTelemetryInternalData.defaultInternalTelemetryData,
35
26
  telemetryConfig: Object.assign({}, _defaultTelemetryConfiguration.defaultTelemetryConfiguration, telemetryConfig),
36
27
  ariaConfig: Object.assign({}, _defaultAriaConfig.defaultAriaConfig, telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.ariaConfigurations)
37
28
  };
38
-
39
29
  if (props.chatConfig) {
40
30
  telemetryData = _TelemetryHelper.TelemetryHelper.addChatConfigDataToTelemetry(props === null || props === void 0 ? void 0 : props.chatConfig, telemetryData);
41
31
  }
42
-
43
32
  telemetryData = _TelemetryHelper.TelemetryHelper.addWidgetDataToTelemetry(telemetryConfig, telemetryData);
44
33
  telemetryData.OCChatSDKVersion = telemetryConfig.OCChatSDKVersion ?? "0.0.0-0";
45
34
  telemetryData.chatComponentVersion = telemetryConfig.chatComponentVersion ?? "0.0.0-0";
@@ -53,8 +42,6 @@ const registerTelemetryLoggers = (props, dispatch) => {
53
42
  payload: telemetryData
54
43
  });
55
44
  }
56
-
57
45
  (0, _TelemetryManager.RegisterLoggers)();
58
46
  };
59
-
60
47
  exports.registerTelemetryLoggers = registerTelemetryLoggers;
@@ -4,29 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.setPostChatContextAndLoadSurvey = void 0;
7
-
8
7
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
9
-
10
8
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
11
-
12
9
  var _ConversationState = require("../../../contexts/common/ConversationState");
13
-
14
10
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
15
-
16
11
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
17
-
18
12
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
13
  const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persistedChat) => {
20
14
  try {
21
15
  if (!persistedChat) {
22
16
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
17
  const context = await chatSDK.getPostChatSurveyContext();
24
-
25
18
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
26
19
  Event: _TelemetryConstants.TelemetryEvent.PostChatContextCallSucceed,
27
20
  Description: "Postchat context call succeed."
28
21
  });
29
-
30
22
  dispatch({
31
23
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_POST_CHAT_CONTEXT,
32
24
  payload: context
@@ -39,9 +31,9 @@ const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persistedChat)
39
31
  exception: ex
40
32
  }
41
33
  });
42
- } // eslint-disable-next-line @typescript-eslint/no-unused-vars
43
-
34
+ }
44
35
 
36
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
45
37
  _omnichannelChatComponents.BroadcastService.getMessageByEventName("LoadPostChatSurvey").subscribe(msg => {
46
38
  dispatch({
47
39
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
@@ -49,5 +41,4 @@ const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persistedChat)
49
41
  });
50
42
  });
51
43
  };
52
-
53
44
  exports.setPostChatContextAndLoadSurvey = setPostChatContextAndLoadSurvey;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.shareObservable = shareObservable;
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ function shareObservable(observable) {
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ let observers = [];
11
+
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
+ let subscription;
14
+
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ return new window.Observable(observer => {
17
+ if (!subscription) {
18
+ subscription = observable.subscribe({
19
+ complete() {
20
+ observers.forEach(observer => observer.complete());
21
+ },
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ error(err) {
24
+ observers.forEach(observer => observer.error(err));
25
+ },
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ next(value) {
28
+ observers.forEach(observer => observer.next(value));
29
+ }
30
+ });
31
+ }
32
+ observers.push(observer);
33
+ return () => {
34
+ observers = observers.filter(o => o !== observer);
35
+ if (!observers.length) {
36
+ subscription.unsubscribe();
37
+ subscription = null;
38
+ }
39
+ };
40
+ });
41
+ }