stream-chat-angular 4.66.2 → 5.0.0-v5.10

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 (315) hide show
  1. package/assets/version.d.ts +1 -1
  2. package/{esm2015/assets/version.js → esm2020/assets/version.mjs} +2 -2
  3. package/esm2020/lib/attachment-configuration.service.mjs +185 -0
  4. package/esm2020/lib/attachment-list/attachment-list.component.mjs +203 -0
  5. package/esm2020/lib/attachment-preview-list/attachment-preview-list.component.mjs +42 -0
  6. package/esm2020/lib/attachment.service.mjs +262 -0
  7. package/esm2020/lib/avatar/avatar.component.mjs +163 -0
  8. package/esm2020/lib/avatar-placeholder/avatar-placeholder.component.mjs +74 -0
  9. package/esm2020/lib/channel/channel.component.mjs +46 -0
  10. package/esm2020/lib/channel-header/channel-header.component.mjs +72 -0
  11. package/esm2020/lib/channel-list/channel-list.component.mjs +51 -0
  12. package/esm2020/lib/channel-preview/channel-preview.component.mjs +155 -0
  13. package/esm2020/lib/channel.service.mjs +1454 -0
  14. package/esm2020/lib/chat-client.service.mjs +206 -0
  15. package/{esm2015/lib/custom-templates.service.js → esm2020/lib/custom-templates.service.mjs} +3 -3
  16. package/{esm2015/lib/date-parser.service.js → esm2020/lib/date-parser.service.mjs} +3 -3
  17. package/esm2020/lib/edit-message-form/edit-message-form.component.mjs +83 -0
  18. package/esm2020/lib/get-channel-display-text.mjs +14 -0
  19. package/esm2020/lib/get-message-translation.mjs +12 -0
  20. package/esm2020/lib/icon/icon.component.mjs +21 -0
  21. package/esm2020/lib/icon-placeholder/icon-placeholder.component.mjs +31 -0
  22. package/esm2020/lib/loading-indicator/loading-indicator.component.mjs +31 -0
  23. package/esm2020/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.mjs +38 -0
  24. package/esm2020/lib/message/message.component.mjs +402 -0
  25. package/esm2020/lib/message-actions-box/message-actions-box.component.mjs +98 -0
  26. package/esm2020/lib/message-actions.service.mjs +119 -0
  27. package/esm2020/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +71 -0
  28. package/esm2020/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.mjs +259 -0
  29. package/{esm2015/lib/message-input/emoji-input.service.js → esm2020/lib/message-input/emoji-input.service.mjs} +3 -3
  30. package/{esm2015/lib/message-input/message-input-config.service.js → esm2020/lib/message-input/message-input-config.service.mjs} +3 -3
  31. package/esm2020/lib/message-input/message-input.component.mjs +441 -0
  32. package/{esm2015/lib/message-input/textarea/textarea.component.js → esm2020/lib/message-input/textarea/textarea.component.mjs} +7 -13
  33. package/esm2020/lib/message-input/textarea.directive.mjs +89 -0
  34. package/esm2020/lib/message-list/group-styles.mjs +52 -0
  35. package/esm2020/lib/message-list/message-list.component.mjs +679 -0
  36. package/esm2020/lib/message-preview.mjs +21 -0
  37. package/esm2020/lib/message-reactions/message-reactions.component.mjs +247 -0
  38. package/esm2020/lib/message-reactions.service.mjs +44 -0
  39. package/{esm2015/lib/message.service.js → esm2020/lib/message.service.mjs} +4 -4
  40. package/esm2020/lib/modal/modal.component.mjs +69 -0
  41. package/esm2020/lib/notification/notification.component.mjs +20 -0
  42. package/esm2020/lib/notification-list/notification-list.component.mjs +36 -0
  43. package/esm2020/lib/notification.service.mjs +79 -0
  44. package/esm2020/lib/read-by.mjs +12 -0
  45. package/{esm2015/lib/stream-autocomplete-textarea.module.js → esm2020/lib/stream-autocomplete-textarea.module.mjs} +6 -6
  46. package/{esm2015/lib/stream-avatar.module.js → esm2020/lib/stream-avatar.module.mjs} +5 -5
  47. package/{esm2015/lib/stream-chat.module.js → esm2020/lib/stream-chat.module.mjs} +14 -16
  48. package/{esm2015/lib/stream-i18n.service.js → esm2020/lib/stream-i18n.service.mjs} +5 -5
  49. package/{esm2015/lib/stream-textarea.module.js → esm2020/lib/stream-textarea.module.mjs} +6 -6
  50. package/esm2020/lib/theme.service.mjs +23 -0
  51. package/esm2020/lib/thread/thread.component.mjs +51 -0
  52. package/{esm2015/lib/transliteration.service.js → esm2020/lib/transliteration.service.mjs} +3 -3
  53. package/esm2020/lib/types.mjs +2 -0
  54. package/esm2020/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +183 -0
  55. package/esm2020/lib/voice-recording/voice-recording.component.mjs +102 -0
  56. package/esm2020/public-api.mjs +64 -0
  57. package/fesm2015/{stream-chat-angular.js → stream-chat-angular.mjs} +354 -754
  58. package/fesm2015/stream-chat-angular.mjs.map +1 -0
  59. package/fesm2020/stream-chat-angular.mjs +6835 -0
  60. package/fesm2020/stream-chat-angular.mjs.map +1 -0
  61. package/lib/attachment-list/attachment-list.component.d.ts +4 -6
  62. package/lib/attachment-preview-list/attachment-preview-list.component.d.ts +2 -4
  63. package/lib/attachment.service.d.ts +0 -1
  64. package/lib/avatar/avatar.component.d.ts +1 -1
  65. package/lib/avatar-placeholder/avatar-placeholder.component.d.ts +1 -1
  66. package/lib/channel/channel.component.d.ts +1 -1
  67. package/lib/channel-header/channel-header.component.d.ts +2 -5
  68. package/lib/channel-list/channel-list.component.d.ts +4 -9
  69. package/lib/channel-preview/channel-preview.component.d.ts +1 -1
  70. package/lib/channel.service.d.ts +7 -14
  71. package/lib/chat-client.service.d.ts +1 -1
  72. package/lib/edit-message-form/edit-message-form.component.d.ts +1 -1
  73. package/lib/get-message-translation.d.ts +1 -1
  74. package/lib/icon/icon.component.d.ts +1 -1
  75. package/lib/icon-placeholder/icon-placeholder.component.d.ts +1 -1
  76. package/lib/loading-indicator/loading-indicator.component.d.ts +1 -1
  77. package/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.d.ts +1 -1
  78. package/lib/message/message.component.d.ts +6 -19
  79. package/lib/message-actions-box/message-actions-box.component.d.ts +4 -32
  80. package/lib/message-actions.service.d.ts +0 -1
  81. package/lib/message-bounce-prompt/message-bounce-prompt.component.d.ts +1 -1
  82. package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +1 -2
  83. package/lib/message-input/message-input.component.d.ts +3 -5
  84. package/lib/message-input/textarea/textarea.component.d.ts +1 -1
  85. package/lib/message-input/textarea.directive.d.ts +1 -1
  86. package/lib/message-list/group-styles.d.ts +1 -1
  87. package/lib/message-list/message-list.component.d.ts +4 -12
  88. package/lib/message-reactions/message-reactions.component.d.ts +2 -7
  89. package/lib/message.service.d.ts +0 -1
  90. package/lib/modal/modal.component.d.ts +1 -1
  91. package/lib/notification/notification.component.d.ts +1 -1
  92. package/lib/notification-list/notification-list.component.d.ts +2 -3
  93. package/lib/notification.service.d.ts +2 -5
  94. package/lib/stream-chat.module.d.ts +3 -3
  95. package/lib/theme.service.d.ts +1 -44
  96. package/lib/thread/thread.component.d.ts +1 -1
  97. package/lib/types.d.ts +16 -33
  98. package/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.d.ts +2 -2
  99. package/lib/voice-recording/voice-recording.component.d.ts +1 -1
  100. package/package.json +31 -17
  101. package/public-api.d.ts +0 -2
  102. package/src/assets/styles/css/index.css +3 -1
  103. package/src/assets/styles/css/index.layout.css +3 -0
  104. package/src/assets/styles/{v2/scss → scss}/AttachmentList/AttachmentList-layout.scss +1 -1
  105. package/src/assets/styles/{v2/scss → scss}/Message/Message-layout.scss +2 -2
  106. package/src/assets/styles/scss/_base.scss +7 -198
  107. package/src/assets/styles/scss/index.scss +35 -48
  108. package/src/assets/version.ts +1 -1
  109. package/bundles/stream-chat-angular.umd.js +0 -8445
  110. package/bundles/stream-chat-angular.umd.js.map +0 -1
  111. package/esm2015/lib/attachment-configuration.service.js +0 -186
  112. package/esm2015/lib/attachment-list/attachment-list.component.js +0 -209
  113. package/esm2015/lib/attachment-preview-list/attachment-preview-list.component.js +0 -49
  114. package/esm2015/lib/attachment.service.js +0 -276
  115. package/esm2015/lib/avatar/avatar.component.js +0 -172
  116. package/esm2015/lib/avatar-placeholder/avatar-placeholder.component.js +0 -78
  117. package/esm2015/lib/channel/channel.component.js +0 -50
  118. package/esm2015/lib/channel-header/channel-header.component.js +0 -86
  119. package/esm2015/lib/channel-list/channel-list-toggle.service.js +0 -73
  120. package/esm2015/lib/channel-list/channel-list.component.js +0 -67
  121. package/esm2015/lib/channel-preview/channel-preview.component.js +0 -167
  122. package/esm2015/lib/channel.service.js +0 -1487
  123. package/esm2015/lib/chat-client.service.js +0 -211
  124. package/esm2015/lib/edit-message-form/edit-message-form.component.js +0 -87
  125. package/esm2015/lib/get-channel-display-text.js +0 -15
  126. package/esm2015/lib/get-message-translation.js +0 -13
  127. package/esm2015/lib/icon/icon.component.js +0 -25
  128. package/esm2015/lib/icon-placeholder/icon-placeholder.component.js +0 -35
  129. package/esm2015/lib/loading-indicator/loading-indicator.component.js +0 -35
  130. package/esm2015/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.js +0 -42
  131. package/esm2015/lib/message/message.component.js +0 -436
  132. package/esm2015/lib/message-actions-box/message-actions-box.component.js +0 -137
  133. package/esm2015/lib/message-actions.service.js +0 -114
  134. package/esm2015/lib/message-bounce-prompt/message-bounce-prompt.component.js +0 -80
  135. package/esm2015/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.js +0 -262
  136. package/esm2015/lib/message-input/message-input.component.js +0 -455
  137. package/esm2015/lib/message-input/textarea.directive.js +0 -90
  138. package/esm2015/lib/message-list/group-styles.js +0 -53
  139. package/esm2015/lib/message-list/image-load.service.js +0 -24
  140. package/esm2015/lib/message-list/message-list.component.js +0 -726
  141. package/esm2015/lib/message-preview.js +0 -7
  142. package/esm2015/lib/message-reactions/message-reactions.component.js +0 -266
  143. package/esm2015/lib/message-reactions.service.js +0 -45
  144. package/esm2015/lib/modal/modal.component.js +0 -74
  145. package/esm2015/lib/notification/notification.component.js +0 -24
  146. package/esm2015/lib/notification-list/notification-list.component.js +0 -38
  147. package/esm2015/lib/notification.service.js +0 -79
  148. package/esm2015/lib/read-by.js +0 -13
  149. package/esm2015/lib/theme.service.js +0 -122
  150. package/esm2015/lib/thread/thread.component.js +0 -55
  151. package/esm2015/lib/types.js +0 -2
  152. package/esm2015/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.js +0 -192
  153. package/esm2015/lib/voice-recording/voice-recording.component.js +0 -115
  154. package/esm2015/public-api.js +0 -66
  155. package/fesm2015/stream-chat-angular.js.map +0 -1
  156. package/lib/channel-list/channel-list-toggle.service.d.ts +0 -40
  157. package/lib/message-list/image-load.service.d.ts +0 -15
  158. package/src/assets/EmojiOneColor.woff2 +0 -0
  159. package/src/assets/NotoColorEmoji-flags.woff2 +0 -0
  160. package/src/assets/Poweredby_100px-White_VertText.png +0 -0
  161. package/src/assets/str-chat__alert.svg +0 -1
  162. package/src/assets/str-chat__file-file.svg +0 -20
  163. package/src/assets/str-chat__icon-chevron-down.svg +0 -1
  164. package/src/assets/str-chat__icon-search.svg +0 -1
  165. package/src/assets/str-chat__icon-send.svg +0 -1
  166. package/src/assets/str-chat__icon-sprite.png +0 -0
  167. package/src/assets/str-chat__icon-sprite@1x.png +0 -0
  168. package/src/assets/str-chat__icon-sprite@2x.png +0 -0
  169. package/src/assets/str-chat__icon-sprite@3x.png +0 -0
  170. package/src/assets/str-chat__loading-indicator.svg +0 -23
  171. package/src/assets/str-chat__reaction-list-sprite@1x.png +0 -0
  172. package/src/assets/str-chat__reaction-list-sprite@2x.png +0 -0
  173. package/src/assets/str-chat__reaction-list-sprite@3x.png +0 -0
  174. package/src/assets/str-chat__reactions-sprite@1x.png +0 -0
  175. package/src/assets/str-chat__reactions-sprite@2x.png +0 -0
  176. package/src/assets/str-chat__reactions-sprite@3x.png +0 -0
  177. package/src/assets/styles/assets/EmojiOneColor.woff2 +0 -0
  178. package/src/assets/styles/assets/NotoColorEmoji-flags.woff2 +0 -0
  179. package/src/assets/styles/assets/Poweredby_100px-White_VertText.png +0 -0
  180. package/src/assets/styles/assets/str-chat__reaction-list-sprite@1x.png +0 -0
  181. package/src/assets/styles/assets/str-chat__reaction-list-sprite@2x.png +0 -0
  182. package/src/assets/styles/assets/str-chat__reaction-list-sprite@3x.png +0 -0
  183. package/src/assets/styles/scss/ActionsBox.scss +0 -56
  184. package/src/assets/styles/scss/Attachment.scss +0 -329
  185. package/src/assets/styles/scss/AttachmentActions.scss +0 -44
  186. package/src/assets/styles/scss/Audio.scss +0 -113
  187. package/src/assets/styles/scss/Avatar.scss +0 -79
  188. package/src/assets/styles/scss/Card.scss +0 -125
  189. package/src/assets/styles/scss/ChannelHeader.scss +0 -284
  190. package/src/assets/styles/scss/ChannelList.scss +0 -141
  191. package/src/assets/styles/scss/ChannelListMessenger.scss +0 -9
  192. package/src/assets/styles/scss/ChannelPreview.scss +0 -133
  193. package/src/assets/styles/scss/ChannelSearch.scss +0 -124
  194. package/src/assets/styles/scss/ChatDown.scss +0 -15
  195. package/src/assets/styles/scss/DateSeparator.scss +0 -51
  196. package/src/assets/styles/scss/EditMessageForm.scss +0 -112
  197. package/src/assets/styles/scss/EventComponent.scss +0 -48
  198. package/src/assets/styles/scss/Gallery.scss +0 -121
  199. package/src/assets/styles/scss/ImageCarousel.scss +0 -45
  200. package/src/assets/styles/scss/InfiniteScrollPaginator.scss +0 -6
  201. package/src/assets/styles/scss/LoadMoreButton.scss +0 -44
  202. package/src/assets/styles/scss/LoadingChannels.scss +0 -70
  203. package/src/assets/styles/scss/LoadingIndicator.scss +0 -38
  204. package/src/assets/styles/scss/Message.scss +0 -1283
  205. package/src/assets/styles/scss/MessageActions.scss +0 -137
  206. package/src/assets/styles/scss/MessageCommerce.scss +0 -608
  207. package/src/assets/styles/scss/MessageInput.scss +0 -398
  208. package/src/assets/styles/scss/MessageInputFlat.scss +0 -323
  209. package/src/assets/styles/scss/MessageList.scss +0 -244
  210. package/src/assets/styles/scss/MessageLivestream.scss +0 -338
  211. package/src/assets/styles/scss/MessageNotification.scss +0 -43
  212. package/src/assets/styles/scss/MessageRepliesCountButton.scss +0 -33
  213. package/src/assets/styles/scss/MessageTeam.scss +0 -644
  214. package/src/assets/styles/scss/Modal.scss +0 -78
  215. package/src/assets/styles/scss/ReactionList.scss +0 -197
  216. package/src/assets/styles/scss/ReactionSelector.scss +0 -218
  217. package/src/assets/styles/scss/SendButton.scss +0 -20
  218. package/src/assets/styles/scss/SimpleReactionsList.scss +0 -76
  219. package/src/assets/styles/scss/SmallMessageInput.scss +0 -171
  220. package/src/assets/styles/scss/Thread.scss +0 -381
  221. package/src/assets/styles/scss/Tooltip.scss +0 -41
  222. package/src/assets/styles/scss/TypingIndicator.scss +0 -80
  223. package/src/assets/styles/scss/VirtualMessage.scss +0 -288
  224. package/src/assets/styles/scss/_variables.scss +0 -161
  225. package/src/assets/styles/v2/css/index.css +0 -3
  226. package/src/assets/styles/v2/css/index.layout.css +0 -3
  227. package/src/assets/styles/v2/scss/_base.scss +0 -28
  228. package/src/assets/styles/v2/scss/index.scss +0 -37
  229. package/src/assets/styles/vendor/emoji-mart.scss +0 -514
  230. package/src/assets/styles/vendor/mml-react.scss +0 -2246
  231. package/src/assets/styles/vendor/react-file-utils.scss +0 -441
  232. package/src/assets/styles/vendor/react-image-gallery.scss +0 -237
  233. /package/{esm2015/assets/i18n/en.js → esm2020/assets/i18n/en.mjs} +0 -0
  234. /package/{esm2015/lib/injection-tokens.js → esm2020/lib/injection-tokens.mjs} +0 -0
  235. /package/{esm2015/lib/is-image-attachment.js → esm2020/lib/is-image-attachment.mjs} +0 -0
  236. /package/{esm2015/lib/is-image-file.js → esm2020/lib/is-image-file.mjs} +0 -0
  237. /package/{esm2015/lib/is-on-separate-date.js → esm2020/lib/is-on-separate-date.mjs} +0 -0
  238. /package/{esm2015/lib/list-users.js → esm2020/lib/list-users.mjs} +0 -0
  239. /package/{esm2015/lib/message-input/textarea.interface.js → esm2020/lib/message-input/textarea.interface.mjs} +0 -0
  240. /package/{esm2015/lib/parse-date.js → esm2020/lib/parse-date.mjs} +0 -0
  241. /package/{esm2015/stream-chat-angular.js → esm2020/stream-chat-angular.mjs} +0 -0
  242. /package/{stream-chat-angular.d.ts → index.d.ts} +0 -0
  243. /package/src/assets/styles/{v2/css → css}/emoji-mart.css +0 -0
  244. /package/src/assets/styles/{v2/css → css}/emoji-replacement.css +0 -0
  245. /package/src/assets/styles/{v2/scss → scss}/AttachmentList/AttachmentList-theme.scss +0 -0
  246. /package/src/assets/styles/{v2/scss → scss}/AttachmentPreviewList/AttachmentPreviewList-layout.scss +0 -0
  247. /package/src/assets/styles/{v2/scss → scss}/AttachmentPreviewList/AttachmentPreviewList-theme.scss +0 -0
  248. /package/src/assets/styles/{v2/scss → scss}/Autocomplete/Autocomplete-layout.scss +0 -0
  249. /package/src/assets/styles/{v2/scss → scss}/Autocomplete/Autocomplete-theme.scss +0 -0
  250. /package/src/assets/styles/{v2/scss → scss}/Avatar/Avatar-layout.scss +0 -0
  251. /package/src/assets/styles/{v2/scss → scss}/Avatar/Avatar-theme.scss +0 -0
  252. /package/src/assets/styles/{v2/scss → scss}/BaseImage/BaseImage-layout.scss +0 -0
  253. /package/src/assets/styles/{v2/scss → scss}/BaseImage/BaseImage-theme.scss +0 -0
  254. /package/src/assets/styles/{v2/scss → scss}/BaseImage/index.scss +0 -0
  255. /package/src/assets/styles/{v2/scss → scss}/Channel/Channel-layout.scss +0 -0
  256. /package/src/assets/styles/{v2/scss → scss}/Channel/Channel-theme.scss +0 -0
  257. /package/src/assets/styles/{v2/scss → scss}/ChannelHeader/ChannelHeader-layout.scss +0 -0
  258. /package/src/assets/styles/{v2/scss → scss}/ChannelHeader/ChannelHeader-theme.scss +0 -0
  259. /package/src/assets/styles/{v2/scss → scss}/ChannelList/ChannelList-layout.scss +0 -0
  260. /package/src/assets/styles/{v2/scss → scss}/ChannelList/ChannelList-theme.scss +0 -0
  261. /package/src/assets/styles/{v2/scss → scss}/ChannelPreview/ChannelPreview-layout.scss +0 -0
  262. /package/src/assets/styles/{v2/scss → scss}/ChannelPreview/ChannelPreview-theme.scss +0 -0
  263. /package/src/assets/styles/{v2/scss → scss}/ChannelSearch/ChannelSearch-layout.scss +0 -0
  264. /package/src/assets/styles/{v2/scss → scss}/ChannelSearch/ChannelSearch-theme.scss +0 -0
  265. /package/src/assets/styles/{v2/scss → scss}/EditMessageForm/EditMessageForm-layout.scss +0 -0
  266. /package/src/assets/styles/{v2/scss → scss}/EditMessageForm/EditMessageForm-theme.scss +0 -0
  267. /package/src/assets/styles/{v2/scss → scss}/ImageCarousel/ImageCarousel-layout.scss +0 -0
  268. /package/src/assets/styles/{v2/scss → scss}/ImageCarousel/ImageCarousel-theme.scss +0 -0
  269. /package/src/assets/styles/{v2/scss → scss}/LinkPreview/LinkPreview-layout.scss +0 -0
  270. /package/src/assets/styles/{v2/scss → scss}/LinkPreview/LinkPreview-theme.scss +0 -0
  271. /package/src/assets/styles/{v2/scss → scss}/LinkPreview/index.scss +0 -0
  272. /package/src/assets/styles/{v2/scss → scss}/LoadingIndicator/LoadingIndicator-layout.scss +0 -0
  273. /package/src/assets/styles/{v2/scss → scss}/LoadingIndicator/LoadingIndicator-theme.scss +0 -0
  274. /package/src/assets/styles/{v2/scss → scss}/Message/Message-theme.scss +0 -0
  275. /package/src/assets/styles/{v2/scss → scss}/MessageActionsBox/MessageActionsBox-layout.scss +0 -0
  276. /package/src/assets/styles/{v2/scss → scss}/MessageActionsBox/MessageActionsBox-theme.scss +0 -0
  277. /package/src/assets/styles/{v2/scss → scss}/MessageBouncePrompt/MessageBouncePrompt-layout.scss +0 -0
  278. /package/src/assets/styles/{v2/scss → scss}/MessageBouncePrompt/MessageBouncePrompt-theme.scss +0 -0
  279. /package/src/assets/styles/{v2/scss → scss}/MessageInput/MessageInput-layout.scss +0 -0
  280. /package/src/assets/styles/{v2/scss → scss}/MessageInput/MessageInput-theme.scss +0 -0
  281. /package/src/assets/styles/{v2/scss → scss}/MessageList/MessageList-layout.scss +0 -0
  282. /package/src/assets/styles/{v2/scss → scss}/MessageList/MessageList-theme.scss +0 -0
  283. /package/src/assets/styles/{v2/scss → scss}/MessageList/VirtualizedMessageList-layout.scss +0 -0
  284. /package/src/assets/styles/{v2/scss → scss}/MessageList/VirtualizedMessageList-theme.scss +0 -0
  285. /package/src/assets/styles/{v2/scss → scss}/MessageReactions/MessageReactions-layout.scss +0 -0
  286. /package/src/assets/styles/{v2/scss → scss}/MessageReactions/MessageReactions-theme.scss +0 -0
  287. /package/src/assets/styles/{v2/scss → scss}/MessageReactions/MessageReactionsSelector-layout.scss +0 -0
  288. /package/src/assets/styles/{v2/scss → scss}/MessageReactions/MessageReactionsSelector-theme.scss +0 -0
  289. /package/src/assets/styles/{v2/scss → scss}/Modal/Modal-layout.scss +0 -0
  290. /package/src/assets/styles/{v2/scss → scss}/Modal/Modal-theme.scss +0 -0
  291. /package/src/assets/styles/{v2/scss → scss}/Notification/MessageNotification-layout.scss +0 -0
  292. /package/src/assets/styles/{v2/scss → scss}/Notification/MessageNotification-theme.scss +0 -0
  293. /package/src/assets/styles/{v2/scss → scss}/Notification/Notification-layout.scss +0 -0
  294. /package/src/assets/styles/{v2/scss → scss}/Notification/Notification-theme.scss +0 -0
  295. /package/src/assets/styles/{v2/scss → scss}/Notification/NotificationList-layout.scss +0 -0
  296. /package/src/assets/styles/{v2/scss → scss}/Notification/NotificationList-theme.scss +0 -0
  297. /package/src/assets/styles/{v2/scss → scss}/Thread/Thread-layout.scss +0 -0
  298. /package/src/assets/styles/{v2/scss → scss}/Thread/Thread-theme.scss +0 -0
  299. /package/src/assets/styles/{v2/scss → scss}/Tooltip/Tooltip-layout.scss +0 -0
  300. /package/src/assets/styles/{v2/scss → scss}/Tooltip/Tooltip-theme.scss +0 -0
  301. /package/src/assets/styles/{v2/scss → scss}/TypingIndicator/TypingIndicator-layout.scss +0 -0
  302. /package/src/assets/styles/{v2/scss → scss}/TypingIndicator/TypingIndicator-theme.scss +0 -0
  303. /package/src/assets/styles/{v2/scss → scss}/_emoji-replacement.scss +0 -0
  304. /package/src/assets/styles/{v2/scss → scss}/_global-layout-variables.scss +0 -0
  305. /package/src/assets/styles/{v2/scss → scss}/_global-theme-variables.scss +0 -0
  306. /package/src/assets/styles/{v2/scss → scss}/_icons.scss +0 -0
  307. /package/src/assets/styles/{v2/scss → scss}/_palette-variables.scss +0 -0
  308. /package/src/assets/styles/{v2/scss → scss}/_utils.scss +0 -0
  309. /package/src/assets/styles/{v2/scss → scss}/common/CTAButton/CTAButton-layout.scss +0 -0
  310. /package/src/assets/styles/{v2/scss → scss}/common/CTAButton/CTAButton-theme.scss +0 -0
  311. /package/src/assets/styles/{v2/scss → scss}/common/CircleFAButton/CircleFAButton-layout.scss +0 -0
  312. /package/src/assets/styles/{v2/scss → scss}/common/CircleFAButton/CircleFAButton-theme.scss +0 -0
  313. /package/src/assets/styles/{v2/scss → scss}/index.layout.scss +0 -0
  314. /package/src/assets/styles/{v2/scss → scss}/vendor/emoji-mart.scss +0 -0
  315. /package/src/assets/styles/{v2/scss → scss}/vendor/react-image-gallery.scss +0 -0
@@ -0,0 +1,98 @@
1
+ import { Component, Input, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../custom-templates.service";
4
+ import * as i2 from "../message-actions.service";
5
+ import * as i3 from "@angular/common";
6
+ import * as i4 from "@ngx-translate/core";
7
+ /**
8
+ * The `MessageActionsBox` component displays a list of message actions (i.e edit), that can be opened or closed. You can find the [list of the supported actions](../concepts/message-interactions.mdx) in the message interaction guide.
9
+ */
10
+ export class MessageActionsBoxComponent {
11
+ constructor(customTemplatesService, messageActionsService, cdRef) {
12
+ this.customTemplatesService = customTemplatesService;
13
+ this.messageActionsService = messageActionsService;
14
+ this.cdRef = cdRef;
15
+ /**
16
+ * Indicates if the message actions are belonging to a message that was sent by the current user or not.
17
+ */
18
+ this.isMine = false;
19
+ /**
20
+ * The list of [channel capabilities](https://getstream.io/chat/docs/javascript/channel_capabilities/?language=javascript) that are enabled for the current user, the list of [supported interactions](../concepts/message-interactions.mdx) can be found in our message interaction guide. Unathorized actions won't be displayed on the UI.
21
+ */
22
+ this.enabledActions = [];
23
+ this.visibleMessageActionItems = [];
24
+ this.isEditModalOpen = false;
25
+ this.customActions = [];
26
+ this.subscriptions = [];
27
+ this.isViewInited = false;
28
+ this.messageActionItems = this.messageActionsService.defaultActions;
29
+ }
30
+ ngOnInit() {
31
+ this.subscriptions.push(this.messageActionsService.customActions$.subscribe((actions) => {
32
+ this.customActions = actions;
33
+ this.setVisibleActions();
34
+ if (this.isViewInited) {
35
+ this.cdRef.detectChanges();
36
+ }
37
+ }));
38
+ this.subscriptions.push(this.messageActionsService.messageToEdit$.subscribe((m) => {
39
+ let isEditModalOpen = false;
40
+ if (m && m.id === this.message?.id) {
41
+ isEditModalOpen = true;
42
+ }
43
+ if (isEditModalOpen !== this.isEditModalOpen) {
44
+ this.isEditModalOpen = isEditModalOpen;
45
+ if (this.isViewInited) {
46
+ this.cdRef.detectChanges();
47
+ }
48
+ }
49
+ }));
50
+ }
51
+ ngOnChanges(changes) {
52
+ if (changes.isMine || changes.enabledActions || changes.message) {
53
+ this.setVisibleActions();
54
+ }
55
+ }
56
+ ngAfterViewInit() {
57
+ this.isViewInited = true;
58
+ }
59
+ ngOnDestroy() {
60
+ this.subscriptions.forEach((s) => s.unsubscribe());
61
+ }
62
+ getActionLabel(actionLabelOrTranslationKey) {
63
+ return typeof actionLabelOrTranslationKey === 'string'
64
+ ? actionLabelOrTranslationKey
65
+ : actionLabelOrTranslationKey(this.message);
66
+ }
67
+ getMessageActionTemplateContext(item) {
68
+ return {
69
+ actionHandler: item.actionHandler,
70
+ isMine: this.isMine,
71
+ actionName: item.actionName,
72
+ message: this.message,
73
+ actionLabelOrTranslationKey: item.actionLabelOrTranslationKey,
74
+ };
75
+ }
76
+ trackByActionName(_, item) {
77
+ return item.actionName;
78
+ }
79
+ setVisibleActions() {
80
+ this.visibleMessageActionItems = [
81
+ ...this.messageActionItems,
82
+ ...this.customActions,
83
+ ].filter((item) => item.isVisible(this.enabledActions, this.isMine, this.message));
84
+ }
85
+ }
86
+ MessageActionsBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageActionsBoxComponent, deps: [{ token: i1.CustomTemplatesService }, { token: i2.MessageActionsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
87
+ MessageActionsBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MessageActionsBoxComponent, selector: "stream-message-actions-box", inputs: { isMine: "isMine", message: "message", enabledActions: "enabledActions" }, usesOnChanges: true, ngImport: i0, template: "<div\n #actionBox\n data-testid=\"action-box\"\n class=\"\n str-chat__message-actions-box\n str-chat__message-actions-box-angular\n str-chat__message-actions-box--open\n \"\n>\n <ul class=\"str-chat__message-actions-list\">\n <ng-container\n *ngFor=\"let item of visibleMessageActionItems; trackBy: trackByActionName\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.messageActionsBoxItemTemplate$ | async) ||\n defaultMessageActionItem;\n context: getMessageActionTemplateContext(item)\n \"\n ></ng-container>\n </ng-container>\n </ul>\n</div>\n\n<ng-template\n #defaultMessageActionItem\n let-actionName=\"actionName\"\n let-actionHandler=\"actionHandler\"\n let-actionLabelOrTranslationKey=\"actionLabelOrTranslationKey\"\n>\n <button\n class=\"str-chat__message-actions-list-item-button\"\n [attr.data-testid]=\"actionName + '-action'\"\n (click)=\"actionHandler(message, isMine)\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{ getActionLabel(actionLabelOrTranslationKey) | translate }}\n </li>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageActionsBoxComponent, decorators: [{
89
+ type: Component,
90
+ args: [{ selector: 'stream-message-actions-box', template: "<div\n #actionBox\n data-testid=\"action-box\"\n class=\"\n str-chat__message-actions-box\n str-chat__message-actions-box-angular\n str-chat__message-actions-box--open\n \"\n>\n <ul class=\"str-chat__message-actions-list\">\n <ng-container\n *ngFor=\"let item of visibleMessageActionItems; trackBy: trackByActionName\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.messageActionsBoxItemTemplate$ | async) ||\n defaultMessageActionItem;\n context: getMessageActionTemplateContext(item)\n \"\n ></ng-container>\n </ng-container>\n </ul>\n</div>\n\n<ng-template\n #defaultMessageActionItem\n let-actionName=\"actionName\"\n let-actionHandler=\"actionHandler\"\n let-actionLabelOrTranslationKey=\"actionLabelOrTranslationKey\"\n>\n <button\n class=\"str-chat__message-actions-list-item-button\"\n [attr.data-testid]=\"actionName + '-action'\"\n (click)=\"actionHandler(message, isMine)\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{ getActionLabel(actionLabelOrTranslationKey) | translate }}\n </li>\n </button>\n</ng-template>\n" }]
91
+ }], ctorParameters: function () { return [{ type: i1.CustomTemplatesService }, { type: i2.MessageActionsService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { isMine: [{
92
+ type: Input
93
+ }], message: [{
94
+ type: Input
95
+ }], enabledActions: [{
96
+ type: Input
97
+ }] } });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1hY3Rpb25zLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1hY3Rpb25zLWJveC9tZXNzYWdlLWFjdGlvbnMtYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWFjdGlvbnMtYm94L21lc3NhZ2UtYWN0aW9ucy1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxLQUFLLEdBTU4sTUFBTSxlQUFlLENBQUM7Ozs7OztBQVd2Qjs7R0FFRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7SUEwQnJDLFlBQ2tCLHNCQUE4QyxFQUN0RCxxQkFBNEMsRUFDNUMsS0FBd0I7UUFGaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN0RCwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBMUJsQzs7V0FFRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFLeEI7O1dBRUc7UUFDTSxtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUt2Qyw4QkFBeUIsR0FDdkIsRUFBRSxDQUFDO1FBQ0wsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsa0JBQWEsR0FBOEIsRUFBRSxDQUFDO1FBRXRDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQU0zQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMscUJBQXFCLENBQUMs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cnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEN1c3RvbU1lc3NhZ2VBY3Rpb25JdGVtLFxuICBNZXNzYWdlQWN0aW9uQm94SXRlbUNvbnRleHQsXG4gIE1lc3NhZ2VBY3Rpb25JdGVtLFxuICBNZXNzYWdlSW5wdXRDb250ZXh0LFxuICBTdHJlYW1NZXNzYWdlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBNZXNzYWdlQWN0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9tZXNzYWdlLWFjdGlvbnMuc2VydmljZSc7XG4vKipcbiAqIFRoZSBgTWVzc2FnZUFjdGlvbnNCb3hgIGNvbXBvbmVudCBkaXNwbGF5cyBhIGxpc3Qgb2YgbWVzc2FnZSBhY3Rpb25zIChpLmUgZWRpdCksIHRoYXQgY2FuIGJlIG9wZW5lZCBvciBjbG9zZWQuIFlvdSBjYW4gZmluZCB0aGUgW2xpc3Qgb2YgdGhlIHN1cHBvcnRlZCBhY3Rpb25zXSguLi9jb25jZXB0cy9tZXNzYWdlLWludGVyYWN0aW9ucy5tZHgpIGluIHRoZSBtZXNzYWdlIGludGVyYWN0aW9uIGd1aWRlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZS1hY3Rpb25zLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLWFjdGlvbnMtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUFjdGlvbnNCb3hDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XG57XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIG1lc3NhZ2UgYWN0aW9ucyBhcmUgYmVsb25naW5nIHRvIGEgbWVzc2FnZSB0aGF0IHdhcyBzZW50IGJ5IHRoZSBjdXJyZW50IHVzZXIgb3Igbm90LlxuICAgKi9cbiAgQElucHV0KCkgaXNNaW5lID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0aGUgYWN0aW9ucyB3aWxsIGJlIGV4ZWN1dGVkIG9uXG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgW2NoYW5uZWwgY2FwYWJpbGl0aWVzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9jaGFubmVsX2NhcGFiaWxpdGllcy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkgdGhhdCBhcmUgZW5hYmxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlciwgdGhlIGxpc3Qgb2YgW3N1cHBvcnRlZCBpbnRlcmFjdGlvbnNdKC4uL2NvbmNlcHRzL21lc3NhZ2UtaW50ZXJhY3Rpb25zLm1keCkgY2FuIGJlIGZvdW5kIGluIG91ciBtZXNzYWdlIGludGVyYWN0aW9uIGd1aWRlLiBVbmF0aG9yaXplZCBhY3Rpb25zIHdvbid0IGJlIGRpc3BsYXllZCBvbiB0aGUgVUkuXG4gICAqL1xuICBASW5wdXQoKSBlbmFibGVkQWN0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgbWVzc2FnZUlucHV0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPE1lc3NhZ2VJbnB1dENvbnRleHQ+IHwgdW5kZWZpbmVkO1xuICBtZXNzYWdlQWN0aW9uSXRlbVRlbXBsYXRlOlxuICAgIHwgVGVtcGxhdGVSZWY8TWVzc2FnZUFjdGlvbkJveEl0ZW1Db250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICB2aXNpYmxlTWVzc2FnZUFjdGlvbkl0ZW1zOiAoTWVzc2FnZUFjdGlvbkl0ZW0gfCBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbSlbXSA9XG4gICAgW107XG4gIGlzRWRpdE1vZGFsT3BlbiA9IGZhbHNlO1xuICBjdXN0b21BY3Rpb25zOiBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZUFjdGlvbkl0ZW1zOiBNZXNzYWdlQWN0aW9uSXRlbVtdO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgaXNWaWV3SW5pdGVkID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZUFjdGlvbnNTZXJ2aWNlOiBNZXNzYWdlQWN0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5tZXNzYWdlQWN0aW9uSXRlbXMgPSB0aGlzLm1lc3NhZ2VBY3Rpb25zU2VydmljZS5kZWZhdWx0QWN0aW9ucztcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9ucyQuc3Vic2NyaWJlKChhY3Rpb25zKSA9PiB7XG4gICAgICAgIHRoaXMuY3VzdG9tQWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICAgIHRoaXMuc2V0VmlzaWJsZUFjdGlvbnMoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLm1lc3NhZ2VUb0VkaXQkLnN1YnNjcmliZSgobSkgPT4ge1xuICAgICAgICBsZXQgaXNFZGl0TW9kYWxPcGVuID0gZmFsc2U7XG4gICAgICAgIGlmIChtICYmIG0uaWQgPT09IHRoaXMubWVzc2FnZT8uaWQpIHtcbiAgICAgICAgICBpc0VkaXRNb2RhbE9wZW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VkaXRNb2RhbE9wZW4gIT09IHRoaXMuaXNFZGl0TW9kYWxPcGVuKSB7XG4gICAgICAgICAgdGhpcy5pc0VkaXRNb2RhbE9wZW4gPSBpc0VkaXRNb2RhbE9wZW47XG4gICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5pc01pbmUgfHwgY2hhbmdlcy5lbmFibGVkQWN0aW9ucyB8fCBjaGFuZ2VzLm1lc3NhZ2UpIHtcbiAgICAgIHRoaXMuc2V0VmlzaWJsZUFjdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1ZpZXdJbml0ZWQgPSB0cnVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBnZXRBY3Rpb25MYWJlbChcbiAgICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICgobWVzc2FnZTogU3RyZWFtTWVzc2FnZSkgPT4gc3RyaW5nKSB8IHN0cmluZ1xuICApIHtcbiAgICByZXR1cm4gdHlwZW9mIGFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleSA9PT0gJ3N0cmluZydcbiAgICAgID8gYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5XG4gICAgICA6IGFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleSh0aGlzLm1lc3NhZ2UhKTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VBY3Rpb25UZW1wbGF0ZUNvbnRleHQoXG4gICAgaXRlbTogTWVzc2FnZUFjdGlvbkl0ZW0gfCBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbVxuICApOiBNZXNzYWdlQWN0aW9uQm94SXRlbUNvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb25IYW5kbGVyOiBpdGVtLmFjdGlvbkhhbmRsZXIsXG4gICAgICBpc01pbmU6IHRoaXMuaXNNaW5lLFxuICAgICAgYWN0aW9uTmFtZTogaXRlbS5hY3Rpb25OYW1lLFxuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlISxcbiAgICAgIGFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleTogaXRlbS5hY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXksXG4gICAgfTtcbiAgfVxuXG4gIHRyYWNrQnlBY3Rpb25OYW1lKFxuICAgIF86IG51bWJlcixcbiAgICBpdGVtOiBNZXNzYWdlQWN0aW9uSXRlbSB8IEN1c3RvbU1lc3NhZ2VBY3Rpb25JdGVtXG4gICkge1xuICAgIHJldHVybiBpdGVtLmFjdGlvbk5hbWU7XG4gIH1cblxuICBwcml2YXRlIHNldFZpc2libGVBY3Rpb25zKCkge1xuICAgIHRoaXMudmlzaWJsZU1lc3NhZ2VBY3Rpb25JdGVtcyA9IFtcbiAgICAgIC4uLnRoaXMubWVzc2FnZUFjdGlvbkl0ZW1zLFxuICAgICAgLi4udGhpcy5jdXN0b21BY3Rpb25zLFxuICAgIF0uZmlsdGVyKChpdGVtKSA9PlxuICAgICAgaXRlbS5pc1Zpc2libGUodGhpcy5lbmFibGVkQWN0aW9ucywgdGhpcy5pc01pbmUsIHRoaXMubWVzc2FnZSEpXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdlxuICAjYWN0aW9uQm94XG4gIGRhdGEtdGVzdGlkPVwiYWN0aW9uLWJveFwiXG4gIGNsYXNzPVwiXG4gICAgc3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1ib3hcbiAgICBzdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWJveC1hbmd1bGFyXG4gICAgc3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1ib3gtLW9wZW5cbiAgXCJcbj5cbiAgPHVsIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1saXN0XCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmlzaWJsZU1lc3NhZ2VBY3Rpb25JdGVtczsgdHJhY2tCeTogdHJhY2tCeUFjdGlvbk5hbWVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZXNzYWdlQWN0aW9uc0JveEl0ZW1UZW1wbGF0ZSQgfCBhc3luYykgfHxcbiAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlQWN0aW9uSXRlbTtcbiAgICAgICAgICBjb250ZXh0OiBnZXRNZXNzYWdlQWN0aW9uVGVtcGxhdGVDb250ZXh0KGl0ZW0pXG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdWw+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gICNkZWZhdWx0TWVzc2FnZUFjdGlvbkl0ZW1cbiAgbGV0LWFjdGlvbk5hbWU9XCJhY3Rpb25OYW1lXCJcbiAgbGV0LWFjdGlvbkhhbmRsZXI9XCJhY3Rpb25IYW5kbGVyXCJcbiAgbGV0LWFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleT1cImFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleVwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtbGlzdC1pdGVtLWJ1dHRvblwiXG4gICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwiYWN0aW9uTmFtZSArICctYWN0aW9uJ1wiXG4gICAgKGNsaWNrKT1cImFjdGlvbkhhbmRsZXIobWVzc2FnZSwgaXNNaW5lKVwiXG4gID5cbiAgICA8bGkgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWxpc3QtaXRlbVwiPlxuICAgICAge3sgZ2V0QWN0aW9uTGFiZWwoYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5KSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbGk+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,119 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./chat-client.service";
5
+ import * as i2 from "./notification.service";
6
+ import * as i3 from "./channel.service";
7
+ /**
8
+ * The message actions service provides customization options for the [message actions](../../components/MessageActionsBoxComponent)
9
+ */
10
+ export class MessageActionsService {
11
+ constructor(chatClientService, notificationService, channelService) {
12
+ this.chatClientService = chatClientService;
13
+ this.notificationService = notificationService;
14
+ this.channelService = channelService;
15
+ /**
16
+ * Default actions - these are the actions that are handled by the built-in component
17
+ */
18
+ this.defaultActions = [
19
+ {
20
+ actionName: 'mark-unread',
21
+ actionLabelOrTranslationKey: 'streamChat.Mark as unread',
22
+ actionHandler: (message) => {
23
+ void this.channelService.markMessageUnread(message.id);
24
+ },
25
+ isVisible: (enabledActions, isMine, message) => enabledActions.indexOf('read-events') !== -1 && !message.parent_id,
26
+ },
27
+ {
28
+ actionName: 'quote',
29
+ actionLabelOrTranslationKey: 'streamChat.Reply',
30
+ actionHandler: (message) => {
31
+ this.channelService.selectMessageToQuote(message);
32
+ },
33
+ isVisible: (enabledActions) => enabledActions.indexOf('quote-message') !== -1,
34
+ },
35
+ {
36
+ actionName: 'pin',
37
+ actionLabelOrTranslationKey: (message) => message.pinned ? 'streamChat.Unpin' : 'streamChat.Pin',
38
+ actionHandler: (message) => {
39
+ message.pinned
40
+ ? void this.channelService.unpinMessage(message)
41
+ : void this.channelService.pinMessage(message);
42
+ },
43
+ isVisible: (enabledActions) => enabledActions.indexOf('pin-message') !== -1,
44
+ },
45
+ {
46
+ actionName: 'flag',
47
+ actionLabelOrTranslationKey: 'streamChat.Flag',
48
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
49
+ actionHandler: async (message) => {
50
+ try {
51
+ await this.chatClientService.flagMessage(message.id);
52
+ this.notificationService.addTemporaryNotification('streamChat.Message has been successfully flagged', 'success');
53
+ }
54
+ catch (err) {
55
+ this.notificationService.addTemporaryNotification('streamChat.Error adding flag');
56
+ }
57
+ },
58
+ isVisible: (enabledActions, isMine) => enabledActions.indexOf('flag-message') !== -1 && !isMine,
59
+ },
60
+ {
61
+ actionName: 'edit',
62
+ actionLabelOrTranslationKey: 'streamChat.Edit Message',
63
+ actionHandler: (message) => {
64
+ this.messageToEdit$.next(message);
65
+ },
66
+ isVisible: (enabledActions, isMine) => (enabledActions.indexOf('update-own-message') !== -1 && isMine) ||
67
+ enabledActions.indexOf('update-any-message') !== -1,
68
+ },
69
+ {
70
+ actionName: 'delete',
71
+ actionLabelOrTranslationKey: 'streamChat.Delete',
72
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
73
+ actionHandler: async (message) => {
74
+ try {
75
+ await this.channelService.deleteMessage(message);
76
+ }
77
+ catch (error) {
78
+ this.notificationService.addTemporaryNotification('streamChat.Error deleting message');
79
+ }
80
+ },
81
+ isVisible: (enabledActions, isMine) => ((enabledActions.indexOf('delete') !== -1 ||
82
+ enabledActions.indexOf('delete-own-message') !== -1) &&
83
+ isMine) ||
84
+ enabledActions.indexOf('delete-any') !== -1 ||
85
+ enabledActions.indexOf('delete-any-message') !== -1,
86
+ },
87
+ ];
88
+ /**
89
+ * The built-in components will handle changes to this observable.
90
+ */
91
+ this.messageToEdit$ = new BehaviorSubject(undefined);
92
+ /**
93
+ * You can pass your own custom actions that will be displayed inside the built-in message actions component
94
+ */
95
+ this.customActions$ = new BehaviorSubject([]);
96
+ }
97
+ /**
98
+ * This method returns how many authorized actions are available to the given message
99
+ * @param message
100
+ * @param enabledActions
101
+ * @returns the count
102
+ */
103
+ getAuthorizedMessageActionsCount(message, enabledActions) {
104
+ const customActions = this.customActions$.getValue() || [];
105
+ const allActions = [...this.defaultActions, ...customActions];
106
+ const currentUserId = this.chatClientService.chatClient.user?.id;
107
+ const isMine = message.user_id === currentUserId;
108
+ return allActions.filter((item) => item.isVisible(enabledActions, isMine, message)).length;
109
+ }
110
+ }
111
+ MessageActionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageActionsService, deps: [{ token: i1.ChatClientService }, { token: i2.NotificationService }, { token: i3.ChannelService }], target: i0.ɵɵFactoryTarget.Injectable });
112
+ MessageActionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageActionsService, providedIn: 'root' });
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageActionsService, decorators: [{
114
+ type: Injectable,
115
+ args: [{
116
+ providedIn: 'root',
117
+ }]
118
+ }], ctorParameters: function () { return [{ type: i1.ChatClientService }, { type: i2.NotificationService }, { type: i3.ChannelService }]; } });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1hY3Rpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1hY3Rpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVl2Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUF3R2hDLFlBQ1UsaUJBQW9DLEVBQ3BDLG1CQUF3QyxFQUN4QyxjQUE4QjtRQUY5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBeEd4Qzs7V0FFRztRQUNNLG1CQUFjLEdBQTJCO1lBQ2hEO2dCQUNFLFVBQVUsRUFBRSxhQUFhO2dCQUN6QiwyQkFBMkIsRUFBRSwyQkFBMkI7Z0JBQ3hELGFBQWEsRUFBRSxDQUFDLE9BQXlCLEVBQUUsRUFBRTtvQkFDM0MsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekQsQ0FBQztnQkFDRCxTQUFTLEVBQUUsQ0FDVCxjQUF3QixFQUN4QixNQUFlLEVBQ2YsT0FBeUIsRUFDekIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUzthQUN4RTtZQUNEO2dCQUNFLFVBQVUsRUFBRSxPQUFPO2dCQUNuQiwyQkFBMkIsRUFBRSxrQkFBa0I7Z0JBQy9DLGFBQWEsRUFBRSxDQUFDLE9BQXlCLEVBQUUsRUFBRTtvQkFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0Is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QUFDLENBQUMsQ0FBQztvQkFDcEQsTUFBTSxDQUFDO29CQUNULGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMzQyxjQUFjLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3REO1NBQ0YsQ0FBQztRQUNGOztXQUVHO1FBQ0gsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBK0IsU0FBUyxDQUFDLENBQUM7UUFDOUU7O1dBRUc7UUFDSCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUE0QixFQUFFLENBQUMsQ0FBQztJQVVqRSxDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSCxnQ0FBZ0MsQ0FDOUIsT0FBeUIsRUFDekIsY0FBd0I7UUFFeEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDM0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQztRQUM5RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDakUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sS0FBSyxhQUFhLENBQUM7UUFFakQsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUNoRCxDQUFDLE1BQU0sQ0FBQztJQUNYLENBQUM7O2tIQWhJVSxxQkFBcUI7c0hBQXJCLHFCQUFxQixjQUZwQixNQUFNOzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEN1c3RvbU1lc3NhZ2VBY3Rpb25JdGVtLFxuICBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzLFxuICBNZXNzYWdlQWN0aW9uSXRlbSxcbiAgTWVzc2FnZUFjdGlvbnNDbGlja0RldGFpbHMsXG4gIFN0cmVhbU1lc3NhZ2UsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuL2NoYW5uZWwuc2VydmljZSc7XG5cbi8qKlxuICogVGhlIG1lc3NhZ2UgYWN0aW9ucyBzZXJ2aWNlIHByb3ZpZGVzIGN1c3RvbWl6YXRpb24gb3B0aW9ucyBmb3IgdGhlIFttZXNzYWdlIGFjdGlvbnNdKC4uLy4uL2NvbXBvbmVudHMvTWVzc2FnZUFjdGlvbnNCb3hDb21wb25lbnQpXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlQWN0aW9uc1NlcnZpY2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IGFjdGlvbnMgLSB0aGVzZSBhcmUgdGhlIGFjdGlvbnMgdGhhdCBhcmUgaGFuZGxlZCBieSB0aGUgYnVpbHQtaW4gY29tcG9uZW50XG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0QWN0aW9uczogTWVzc2FnZUFjdGlvbkl0ZW08VD5bXSA9IFtcbiAgICB7XG4gICAgICBhY3Rpb25OYW1lOiAnbWFyay11bnJlYWQnLFxuICAgICAgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAnc3RyZWFtQ2hhdC5NYXJrIGFzIHVucmVhZCcsXG4gICAgICBhY3Rpb25IYW5kbGVyOiAobWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPikgPT4ge1xuICAgICAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UubWFya01lc3NhZ2VVbnJlYWQobWVzc2FnZS5pZCk7XG4gICAgICB9LFxuICAgICAgaXNWaXNpYmxlOiAoXG4gICAgICAgIGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXSxcbiAgICAgICAgaXNNaW5lOiBib29sZWFuLFxuICAgICAgICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+XG4gICAgICApID0+IGVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ3JlYWQtZXZlbnRzJykgIT09IC0xICYmICFtZXNzYWdlLnBhcmVudF9pZCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFjdGlvbk5hbWU6ICdxdW90ZScsXG4gICAgICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICdzdHJlYW1DaGF0LlJlcGx5JyxcbiAgICAgIGFjdGlvbkhhbmRsZXI6IChtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+KSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2Uuc2VsZWN0TWVzc2FnZVRvUXVvdGUobWVzc2FnZSk7XG4gICAgICB9LFxuICAgICAgaXNWaXNpYmxlOiAoZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdKSA9PlxuICAgICAgICBlbmFibGVkQWN0aW9ucy5pbmRleE9mKCdxdW90ZS1tZXNzYWdlJykgIT09IC0xLFxuICAgIH0sXG4gICAge1xuICAgICAgYWN0aW9uTmFtZTogJ3BpbicsXG4gICAgICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6IChtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+KSA9PlxuICAgICAgICBtZXNzYWdlLnBpbm5lZCA/ICdzdHJlYW1DaGF0LlVucGluJyA6ICdzdHJlYW1DaGF0LlBpbicsXG4gICAgICBhY3Rpb25IYW5kbGVyOiAobWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPikgPT4ge1xuICAgICAgICBtZXNzYWdlLnBpbm5lZFxuICAgICAgICAgID8gdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLnVucGluTWVzc2FnZShtZXNzYWdlKVxuICAgICAgICAgIDogdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLnBpbk1lc3NhZ2UobWVzc2FnZSk7XG4gICAgICB9LFxuICAgICAgaXNWaXNpYmxlOiAoZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdKSA9PlxuICAgICAgICBlbmFibGVkQWN0aW9ucy5pbmRleE9mKCdwaW4tbWVzc2FnZScpICE9PSAtMSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFjdGlvbk5hbWU6ICdmbGFnJyxcbiAgICAgIGFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleTogJ3N0cmVhbUNoYXQuRmxhZycsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW1pc3VzZWQtcHJvbWlzZXNcbiAgICAgIGFjdGlvbkhhbmRsZXI6IGFzeW5jIChtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jaGF0Q2xpZW50U2VydmljZS5mbGFnTWVzc2FnZShtZXNzYWdlLmlkKTtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICAgJ3N0cmVhbUNoYXQuTWVzc2FnZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZmxhZ2dlZCcsXG4gICAgICAgICAgICAnc3VjY2VzcydcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICAgJ3N0cmVhbUNoYXQuRXJyb3IgYWRkaW5nIGZsYWcnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlzVmlzaWJsZTogKGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXSwgaXNNaW5lOiBib29sZWFuKSA9PlxuICAgICAgICBlbmFibGVkQWN0aW9ucy5pbmRleE9mKCdmbGFnLW1lc3NhZ2UnKSAhPT0gLTEgJiYgIWlzTWluZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFjdGlvbk5hbWU6ICdlZGl0JyxcbiAgICAgIGFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleTogJ3N0cmVhbUNoYXQuRWRpdCBNZXNzYWdlJyxcbiAgICAgIGFjdGlvbkhhbmRsZXI6IChtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+KSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZVRvRWRpdCQubmV4dChtZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgICBpc1Zpc2libGU6IChlbmFibGVkQWN0aW9uczogc3RyaW5nW10sIGlzTWluZTogYm9vbGVhbikgPT5cbiAgICAgICAgKGVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ3VwZGF0ZS1vd24tbWVzc2FnZScpICE9PSAtMSAmJiBpc01pbmUpIHx8XG4gICAgICAgIGVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ3VwZGF0ZS1hbnktbWVzc2FnZScpICE9PSAtMSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFjdGlvbk5hbWU6ICdkZWxldGUnLFxuICAgICAgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAnc3RyZWFtQ2hhdC5EZWxldGUnLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1taXN1c2VkLXByb21pc2VzXG4gICAgICBhY3Rpb25IYW5kbGVyOiBhc3luYyAobWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuY2hhbm5lbFNlcnZpY2UuZGVsZXRlTWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICAgJ3N0cmVhbUNoYXQuRXJyb3IgZGVsZXRpbmcgbWVzc2FnZSdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaXNWaXNpYmxlOiAoZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdLCBpc01pbmU6IGJvb2xlYW4pID0+XG4gICAgICAgICgoZW5hYmxlZEFjdGlvbnMuaW5kZXhPZignZGVsZXRlJykgIT09IC0xIHx8XG4gICAgICAgICAgZW5hYmxlZEFjdGlvbnMuaW5kZXhPZignZGVsZXRlLW93bi1tZXNzYWdlJykgIT09IC0xKSAmJlxuICAgICAgICAgIGlzTWluZSkgfHxcbiAgICAgICAgZW5hYmxlZEFjdGlvbnMuaW5kZXhPZignZGVsZXRlLWFueScpICE9PSAtMSB8fFxuICAgICAgICBlbmFibGVkQWN0aW9ucy5pbmRleE9mKCdkZWxldGUtYW55LW1lc3NhZ2UnKSAhPT0gLTEsXG4gICAgfSxcbiAgXTtcbiAgLyoqXG4gICAqIFRoZSBidWlsdC1pbiBjb21wb25lbnRzIHdpbGwgaGFuZGxlIGNoYW5nZXMgdG8gdGhpcyBvYnNlcnZhYmxlLlxuICAgKi9cbiAgbWVzc2FnZVRvRWRpdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN0cmVhbU1lc3NhZ2U8VD4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIC8qKlxuICAgKiBZb3UgY2FuIHBhc3MgeW91ciBvd24gY3VzdG9tIGFjdGlvbnMgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbnNpZGUgdGhlIGJ1aWx0LWluIG1lc3NhZ2UgYWN0aW9ucyBjb21wb25lbnRcbiAgICovXG4gIGN1c3RvbUFjdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDdXN0b21NZXNzYWdlQWN0aW9uSXRlbVtdPihbXSk7XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0IHRoZSBbYE1lc3NhZ2VDb21wb25lbnRgXSguLi8uLi9jb21wb25lbnRzL01lc3NhZ2VDb21wb25lbnQpIHdpbGwgZGlzcGxheSB0aGUgW2BNZXNzYWdlQWN0aW9uc0JveENvbXBvbmVudGBdKC4uLy4uL2NvbXBvbmVudHMvTWVzc2FnZUFjdGlvbnNCb3hDb21wb25lbnQpLiBZb3UgY2FuIG92ZXJyaWRlIHRoYXQgYmVoYXZpb3IgYnkgcHJvdmlkaW5nIHlvdXIgb3duIGV2ZW50IGhhbmRsZXIuXG4gICAqL1xuICBjdXN0b21BY3Rpb25DbGlja0hhbmRsZXI/OiAoZGV0YWlsczogTWVzc2FnZUFjdGlvbnNDbGlja0RldGFpbHM8VD4pID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50U2VydmljZTogQ2hhdENsaWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgcmV0dXJucyBob3cgbWFueSBhdXRob3JpemVkIGFjdGlvbnMgYXJlIGF2YWlsYWJsZSB0byB0aGUgZ2l2ZW4gbWVzc2FnZVxuICAgKiBAcGFyYW0gbWVzc2FnZVxuICAgKiBAcGFyYW0gZW5hYmxlZEFjdGlvbnNcbiAgICogQHJldHVybnMgdGhlIGNvdW50XG4gICAqL1xuICBnZXRBdXRob3JpemVkTWVzc2FnZUFjdGlvbnNDb3VudChcbiAgICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+LFxuICAgIGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXVxuICApIHtcbiAgICBjb25zdCBjdXN0b21BY3Rpb25zID0gdGhpcy5jdXN0b21BY3Rpb25zJC5nZXRWYWx1ZSgpIHx8IFtdO1xuICAgIGNvbnN0IGFsbEFjdGlvbnMgPSBbLi4udGhpcy5kZWZhdWx0QWN0aW9ucywgLi4uY3VzdG9tQWN0aW9uc107XG4gICAgY29uc3QgY3VycmVudFVzZXJJZCA9IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC51c2VyPy5pZDtcbiAgICBjb25zdCBpc01pbmUgPSBtZXNzYWdlLnVzZXJfaWQgPT09IGN1cnJlbnRVc2VySWQ7XG5cbiAgICByZXR1cm4gYWxsQWN0aW9ucy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICBpdGVtLmlzVmlzaWJsZShlbmFibGVkQWN0aW9ucywgaXNNaW5lLCBtZXNzYWdlKVxuICAgICkubGVuZ3RoO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,71 @@
1
+ import { Component, HostBinding } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../channel.service";
4
+ import * as i2 from "../custom-templates.service";
5
+ import * as i3 from "../message-actions.service";
6
+ import * as i4 from "@angular/common";
7
+ import * as i5 from "../modal/modal.component";
8
+ import * as i6 from "@ngx-translate/core";
9
+ /**
10
+ * The component watches for the [`channelService.bouncedMessage$` stream](../../services/ChannelService/#bouncedmessage) and opens the bounce modal if a message is emitted.
11
+ *
12
+ * To bounce messages, you need to set up [semantic filters for moderation](https://getstream.io/automated-moderation/docs/automod_configuration/?q=semantic%20filters).
13
+ */
14
+ export class MessageBouncePromptComponent {
15
+ constructor(channelService, customTemplatesService, messageActionsService) {
16
+ this.channelService = channelService;
17
+ this.customTemplatesService = customTemplatesService;
18
+ this.messageActionsService = messageActionsService;
19
+ this.class = 'str-chat__message-bounce-prompt';
20
+ this.isModalOpen = false;
21
+ this.subscriptions = [];
22
+ this.messageBounceModalOpenChanged = (isOpen) => {
23
+ this.isModalOpen = isOpen;
24
+ if (!isOpen) {
25
+ this.message = undefined;
26
+ this.channelService.bouncedMessage$.next(undefined);
27
+ }
28
+ };
29
+ this.subscriptions.push(this.channelService.bouncedMessage$.subscribe((m) => {
30
+ if (m !== this.message) {
31
+ this.message = m;
32
+ if (this.message) {
33
+ this.isModalOpen = true;
34
+ }
35
+ }
36
+ }));
37
+ }
38
+ ngOnDestroy() {
39
+ this.subscriptions.forEach((s) => s.unsubscribe());
40
+ }
41
+ async resendMessage() {
42
+ this.isModalOpen = false;
43
+ await this.channelService.resendMessage(this.message);
44
+ this.message = undefined;
45
+ this.channelService.bouncedMessage$.next(undefined);
46
+ }
47
+ async deleteMessage() {
48
+ if (!this.message) {
49
+ return;
50
+ }
51
+ this.isModalOpen = false;
52
+ await this.channelService.deleteMessage(this.message, true);
53
+ this.message = undefined;
54
+ this.channelService.bouncedMessage$.next(undefined);
55
+ }
56
+ editMessage() {
57
+ this.isModalOpen = false;
58
+ this.messageActionsService.messageToEdit$.next(this.message);
59
+ this.message = undefined;
60
+ this.channelService.bouncedMessage$.next(undefined);
61
+ }
62
+ }
63
+ MessageBouncePromptComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageBouncePromptComponent, deps: [{ token: i1.ChannelService }, { token: i2.CustomTemplatesService }, { token: i3.MessageActionsService }], target: i0.ɵɵFactoryTarget.Component });
64
+ MessageBouncePromptComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MessageBouncePromptComponent, selector: "stream-message-bounce-prompt", host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: {\n message: message,\n isOpen: isModalOpen,\n isOpenChangeHandler: messageBounceModalOpenChanged,\n content: modalContent\n }\n \"\n></ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n *ngIf=\"isOpen\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #modalContent>\n <div\n class=\"str-chat__message-bounce-prompt\"\n data-testid=\"message-bounce-prompt\"\n >\n <div class=\"str-chat__message-bounce-prompt-header\">\n {{\n \"streamChat.This message did not meet our content guidelines\"\n | translate\n }}\n </div>\n <div class=\"str-chat__message-bounce-actions\">\n <button\n class=\"str-chat__message-bounce-edit\"\n data-testid=\"message-bounce-edit\"\n type=\"button\"\n (click)=\"editMessage()\"\n (keyup.enter)=\"editMessage()\"\n >\n {{ \"streamChat.Edit Message\" | translate }}\n </button>\n <button\n class=\"str-chat__message-bounce-send\"\n data-testid=\"message-bounce-send\"\n (click)=\"resendMessage()\"\n (keyup.enter)=\"resendMessage()\"\n >\n {{ \"streamChat.Send Anyway\" | translate }}\n </button>\n <button\n class=\"str-chat__message-bounce-delete\"\n data-testid=\"message-bounce-delete\"\n (click)=\"deleteMessage()\"\n (keyup.enter)=\"deleteMessage()\"\n >\n {{ \"streamChat.Delete\" | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ModalComponent, selector: "stream-modal", inputs: ["isOpen", "content"], outputs: ["isOpenChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageBouncePromptComponent, decorators: [{
66
+ type: Component,
67
+ args: [{ selector: 'stream-message-bounce-prompt', template: "<ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: {\n message: message,\n isOpen: isModalOpen,\n isOpenChangeHandler: messageBounceModalOpenChanged,\n content: modalContent\n }\n \"\n></ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n *ngIf=\"isOpen\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #modalContent>\n <div\n class=\"str-chat__message-bounce-prompt\"\n data-testid=\"message-bounce-prompt\"\n >\n <div class=\"str-chat__message-bounce-prompt-header\">\n {{\n \"streamChat.This message did not meet our content guidelines\"\n | translate\n }}\n </div>\n <div class=\"str-chat__message-bounce-actions\">\n <button\n class=\"str-chat__message-bounce-edit\"\n data-testid=\"message-bounce-edit\"\n type=\"button\"\n (click)=\"editMessage()\"\n (keyup.enter)=\"editMessage()\"\n >\n {{ \"streamChat.Edit Message\" | translate }}\n </button>\n <button\n class=\"str-chat__message-bounce-send\"\n data-testid=\"message-bounce-send\"\n (click)=\"resendMessage()\"\n (keyup.enter)=\"resendMessage()\"\n >\n {{ \"streamChat.Send Anyway\" | translate }}\n </button>\n <button\n class=\"str-chat__message-bounce-delete\"\n data-testid=\"message-bounce-delete\"\n (click)=\"deleteMessage()\"\n (keyup.enter)=\"deleteMessage()\"\n >\n {{ \"streamChat.Delete\" | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n" }]
68
+ }], ctorParameters: function () { return [{ type: i1.ChannelService }, { type: i2.CustomTemplatesService }, { type: i3.MessageActionsService }]; }, propDecorators: { class: [{
69
+ type: HostBinding
70
+ }] } });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1ib3VuY2UtcHJvbXB0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWJvdW5jZS1wcm9tcHQvbWVzc2FnZS1ib3VuY2UtcHJvbXB0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWJvdW5jZS1wcm9tcHQvbWVzc2FnZS1ib3VuY2UtcHJvbXB0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQU9sRTs7OztHQUlHO0FBTUgsTUFBTSxPQUFPLDRCQUE0QjtJQU12QyxZQUNVLGNBQThCLEVBQzdCLHNCQUE4QyxFQUMvQyxxQkFBNEM7UUFGNUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDL0MsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQVJ2QyxVQUFLLEdBQUcsaUNBQWlDLENBQUM7UUFDekQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFWixrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFtQjNDLGtDQUE2QixHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3JEO1FBQ0gsQ0FBQyxDQUFDO1FBbEJBLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztnQkFDakIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztpQkFDekI7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBVUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWE7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBUSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDOzt5SEF6RFUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIscUhDakJ6Qyx1MERBbUVBOzJGRGxEYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsOEJBQThCOzhLQUt6QixLQUFLO3NCQUFuQixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVzc2FnZUFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vbWVzc2FnZS1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RyZWFtTWVzc2FnZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBUaGUgY29tcG9uZW50IHdhdGNoZXMgZm9yIHRoZSBbYGNoYW5uZWxTZXJ2aWNlLmJvdW5jZWRNZXNzYWdlJGAgc3RyZWFtXSguLi8uLi9zZXJ2aWNlcy9DaGFubmVsU2VydmljZS8jYm91bmNlZG1lc3NhZ2UpIGFuZCBvcGVucyB0aGUgYm91bmNlIG1vZGFsIGlmIGEgbWVzc2FnZSBpcyBlbWl0dGVkLlxuICpcbiAqIFRvIGJvdW5jZSBtZXNzYWdlcywgeW91IG5lZWQgdG8gc2V0IHVwIFtzZW1hbnRpYyBmaWx0ZXJzIGZvciBtb2RlcmF0aW9uXShodHRwczovL2dldHN0cmVhbS5pby9hdXRvbWF0ZWQtbW9kZXJhdGlvbi9kb2NzL2F1dG9tb2RfY29uZmlndXJhdGlvbi8/cT1zZW1hbnRpYyUyMGZpbHRlcnMpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZS1ib3VuY2UtcHJvbXB0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UtYm91bmNlLXByb21wdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCb3VuY2VQcm9tcHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASG9zdEJpbmRpbmcoKSBjbGFzcyA9ICdzdHItY2hhdF9fbWVzc2FnZS1ib3VuY2UtcHJvbXB0JztcbiAgaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgbWVzc2FnZT86IFN0cmVhbU1lc3NhZ2U7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICByZWFkb25seSBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZUFjdGlvbnNTZXJ2aWNlOiBNZXNzYWdlQWN0aW9uc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmJvdW5jZWRNZXNzYWdlJC5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgICAgaWYgKG0gIT09IHRoaXMubWVzc2FnZSkge1xuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IG07XG4gICAgICAgICAgaWYgKHRoaXMubWVzc2FnZSkge1xuICAgICAgICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBtZXNzYWdlQm91bmNlTW9kYWxPcGVuQ2hhbmdlZCA9IChpc09wZW46IGJvb2xlYW4pID0+IHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gaXNPcGVuO1xuICAgIGlmICghaXNPcGVuKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmJvdW5jZWRNZXNzYWdlJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9O1xuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgYXN5bmMgcmVzZW5kTWVzc2FnZSgpIHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gZmFsc2U7XG4gICAgYXdhaXQgdGhpcy5jaGFubmVsU2VydmljZS5yZXNlbmRNZXNzYWdlKHRoaXMubWVzc2FnZSEpO1xuICAgIHRoaXMubWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmJvdW5jZWRNZXNzYWdlJC5uZXh0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBhc3luYyBkZWxldGVNZXNzYWdlKCkge1xuICAgIGlmICghdGhpcy5tZXNzYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgICBhd2FpdCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmRlbGV0ZU1lc3NhZ2UodGhpcy5tZXNzYWdlLCB0cnVlKTtcbiAgICB0aGlzLm1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jaGFubmVsU2VydmljZS5ib3VuY2VkTWVzc2FnZSQubmV4dCh1bmRlZmluZWQpO1xuICB9XG5cbiAgZWRpdE1lc3NhZ2UoKSB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLm1lc3NhZ2VUb0VkaXQkLm5leHQodGhpcy5tZXNzYWdlKTtcbiAgICB0aGlzLm1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jaGFubmVsU2VydmljZS5ib3VuY2VkTWVzc2FnZSQubmV4dCh1bmRlZmluZWQpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyXG4gICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubW9kYWxUZW1wbGF0ZSQgfCBhc3luYykgfHwgZGVmYXVsdE1vZGFsO1xuICAgIGNvbnRleHQ6IHtcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBpc09wZW46IGlzTW9kYWxPcGVuLFxuICAgICAgaXNPcGVuQ2hhbmdlSGFuZGxlcjogbWVzc2FnZUJvdW5jZU1vZGFsT3BlbkNoYW5nZWQsXG4gICAgICBjb250ZW50OiBtb2RhbENvbnRlbnRcbiAgICB9XG4gIFwiXG4+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZVxuICAjZGVmYXVsdE1vZGFsXG4gIGxldC1pc09wZW49XCJpc09wZW5cIlxuICBsZXQtaXNPcGVuQ2hhbmdlSGFuZGxlcj1cImlzT3BlbkNoYW5nZUhhbmRsZXJcIlxuICBsZXQtY29udGVudD1cImNvbnRlbnRcIlxuPlxuICA8c3RyZWFtLW1vZGFsXG4gICAgKm5nSWY9XCJpc09wZW5cIlxuICAgIFtpc09wZW5dPVwiaXNPcGVuXCJcbiAgICBbY29udGVudF09XCJjb250ZW50XCJcbiAgICAoaXNPcGVuQ2hhbmdlKT1cImlzT3BlbkNoYW5nZUhhbmRsZXIoJGV2ZW50KVwiXG4gID5cbiAgPC9zdHJlYW0tbW9kYWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGFsQ29udGVudD5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYm91bmNlLXByb21wdFwiXG4gICAgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLWJvdW5jZS1wcm9tcHRcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWJvdW5jZS1wcm9tcHQtaGVhZGVyXCI+XG4gICAgICB7e1xuICAgICAgICBcInN0cmVhbUNoYXQuVGhpcyBtZXNzYWdlIGRpZCBub3QgbWVldCBvdXIgY29udGVudCBndWlkZWxpbmVzXCJcbiAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYm91bmNlLWFjdGlvbnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1ib3VuY2UtZWRpdFwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1ib3VuY2UtZWRpdFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiZWRpdE1lc3NhZ2UoKVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJlZGl0TWVzc2FnZSgpXCJcbiAgICAgID5cbiAgICAgICAge3sgXCJzdHJlYW1DaGF0LkVkaXQgTWVzc2FnZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1ib3VuY2Utc2VuZFwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1ib3VuY2Utc2VuZFwiXG4gICAgICAgIChjbGljayk9XCJyZXNlbmRNZXNzYWdlKClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwicmVzZW5kTWVzc2FnZSgpXCJcbiAgICAgID5cbiAgICAgICAge3sgXCJzdHJlYW1DaGF0LlNlbmQgQW55d2F5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWJvdW5jZS1kZWxldGVcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cIm1lc3NhZ2UtYm91bmNlLWRlbGV0ZVwiXG4gICAgICAgIChjbGljayk9XCJkZWxldGVNZXNzYWdlKClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZGVsZXRlTWVzc2FnZSgpXCJcbiAgICAgID5cbiAgICAgICAge3sgXCJzdHJlYW1DaGF0LkRlbGV0ZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19