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.
- package/assets/version.d.ts +1 -1
- package/{esm2015/assets/version.js → esm2020/assets/version.mjs} +2 -2
- package/esm2020/lib/attachment-configuration.service.mjs +185 -0
- package/esm2020/lib/attachment-list/attachment-list.component.mjs +203 -0
- package/esm2020/lib/attachment-preview-list/attachment-preview-list.component.mjs +42 -0
- package/esm2020/lib/attachment.service.mjs +262 -0
- package/esm2020/lib/avatar/avatar.component.mjs +163 -0
- package/esm2020/lib/avatar-placeholder/avatar-placeholder.component.mjs +74 -0
- package/esm2020/lib/channel/channel.component.mjs +46 -0
- package/esm2020/lib/channel-header/channel-header.component.mjs +72 -0
- package/esm2020/lib/channel-list/channel-list.component.mjs +51 -0
- package/esm2020/lib/channel-preview/channel-preview.component.mjs +155 -0
- package/esm2020/lib/channel.service.mjs +1454 -0
- package/esm2020/lib/chat-client.service.mjs +206 -0
- package/{esm2015/lib/custom-templates.service.js → esm2020/lib/custom-templates.service.mjs} +3 -3
- package/{esm2015/lib/date-parser.service.js → esm2020/lib/date-parser.service.mjs} +3 -3
- package/esm2020/lib/edit-message-form/edit-message-form.component.mjs +83 -0
- package/esm2020/lib/get-channel-display-text.mjs +14 -0
- package/esm2020/lib/get-message-translation.mjs +12 -0
- package/esm2020/lib/icon/icon.component.mjs +21 -0
- package/esm2020/lib/icon-placeholder/icon-placeholder.component.mjs +31 -0
- package/esm2020/lib/loading-indicator/loading-indicator.component.mjs +31 -0
- package/esm2020/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.mjs +38 -0
- package/esm2020/lib/message/message.component.mjs +402 -0
- package/esm2020/lib/message-actions-box/message-actions-box.component.mjs +98 -0
- package/esm2020/lib/message-actions.service.mjs +119 -0
- package/esm2020/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +71 -0
- package/esm2020/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.mjs +259 -0
- package/{esm2015/lib/message-input/emoji-input.service.js → esm2020/lib/message-input/emoji-input.service.mjs} +3 -3
- package/{esm2015/lib/message-input/message-input-config.service.js → esm2020/lib/message-input/message-input-config.service.mjs} +3 -3
- package/esm2020/lib/message-input/message-input.component.mjs +441 -0
- package/{esm2015/lib/message-input/textarea/textarea.component.js → esm2020/lib/message-input/textarea/textarea.component.mjs} +7 -13
- package/esm2020/lib/message-input/textarea.directive.mjs +89 -0
- package/esm2020/lib/message-list/group-styles.mjs +52 -0
- package/esm2020/lib/message-list/message-list.component.mjs +679 -0
- package/esm2020/lib/message-preview.mjs +21 -0
- package/esm2020/lib/message-reactions/message-reactions.component.mjs +247 -0
- package/esm2020/lib/message-reactions.service.mjs +44 -0
- package/{esm2015/lib/message.service.js → esm2020/lib/message.service.mjs} +4 -4
- package/esm2020/lib/modal/modal.component.mjs +69 -0
- package/esm2020/lib/notification/notification.component.mjs +20 -0
- package/esm2020/lib/notification-list/notification-list.component.mjs +36 -0
- package/esm2020/lib/notification.service.mjs +79 -0
- package/esm2020/lib/read-by.mjs +12 -0
- package/{esm2015/lib/stream-autocomplete-textarea.module.js → esm2020/lib/stream-autocomplete-textarea.module.mjs} +6 -6
- package/{esm2015/lib/stream-avatar.module.js → esm2020/lib/stream-avatar.module.mjs} +5 -5
- package/{esm2015/lib/stream-chat.module.js → esm2020/lib/stream-chat.module.mjs} +14 -16
- package/{esm2015/lib/stream-i18n.service.js → esm2020/lib/stream-i18n.service.mjs} +5 -5
- package/{esm2015/lib/stream-textarea.module.js → esm2020/lib/stream-textarea.module.mjs} +6 -6
- package/esm2020/lib/theme.service.mjs +23 -0
- package/esm2020/lib/thread/thread.component.mjs +51 -0
- package/{esm2015/lib/transliteration.service.js → esm2020/lib/transliteration.service.mjs} +3 -3
- package/esm2020/lib/types.mjs +2 -0
- package/esm2020/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +183 -0
- package/esm2020/lib/voice-recording/voice-recording.component.mjs +102 -0
- package/esm2020/public-api.mjs +64 -0
- package/fesm2015/{stream-chat-angular.js → stream-chat-angular.mjs} +354 -754
- package/fesm2015/stream-chat-angular.mjs.map +1 -0
- package/fesm2020/stream-chat-angular.mjs +6835 -0
- package/fesm2020/stream-chat-angular.mjs.map +1 -0
- package/lib/attachment-list/attachment-list.component.d.ts +4 -6
- package/lib/attachment-preview-list/attachment-preview-list.component.d.ts +2 -4
- package/lib/attachment.service.d.ts +0 -1
- package/lib/avatar/avatar.component.d.ts +1 -1
- package/lib/avatar-placeholder/avatar-placeholder.component.d.ts +1 -1
- package/lib/channel/channel.component.d.ts +1 -1
- package/lib/channel-header/channel-header.component.d.ts +2 -5
- package/lib/channel-list/channel-list.component.d.ts +4 -9
- package/lib/channel-preview/channel-preview.component.d.ts +1 -1
- package/lib/channel.service.d.ts +7 -14
- package/lib/chat-client.service.d.ts +1 -1
- package/lib/edit-message-form/edit-message-form.component.d.ts +1 -1
- package/lib/get-message-translation.d.ts +1 -1
- package/lib/icon/icon.component.d.ts +1 -1
- package/lib/icon-placeholder/icon-placeholder.component.d.ts +1 -1
- package/lib/loading-indicator/loading-indicator.component.d.ts +1 -1
- package/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.d.ts +1 -1
- package/lib/message/message.component.d.ts +6 -19
- package/lib/message-actions-box/message-actions-box.component.d.ts +4 -32
- package/lib/message-actions.service.d.ts +0 -1
- package/lib/message-bounce-prompt/message-bounce-prompt.component.d.ts +1 -1
- package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +1 -2
- package/lib/message-input/message-input.component.d.ts +3 -5
- package/lib/message-input/textarea/textarea.component.d.ts +1 -1
- package/lib/message-input/textarea.directive.d.ts +1 -1
- package/lib/message-list/group-styles.d.ts +1 -1
- package/lib/message-list/message-list.component.d.ts +4 -12
- package/lib/message-reactions/message-reactions.component.d.ts +2 -7
- package/lib/message.service.d.ts +0 -1
- package/lib/modal/modal.component.d.ts +1 -1
- package/lib/notification/notification.component.d.ts +1 -1
- package/lib/notification-list/notification-list.component.d.ts +2 -3
- package/lib/notification.service.d.ts +2 -5
- package/lib/stream-chat.module.d.ts +3 -3
- package/lib/theme.service.d.ts +1 -44
- package/lib/thread/thread.component.d.ts +1 -1
- package/lib/types.d.ts +16 -33
- package/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.d.ts +2 -2
- package/lib/voice-recording/voice-recording.component.d.ts +1 -1
- package/package.json +31 -17
- package/public-api.d.ts +0 -2
- package/src/assets/styles/css/index.css +3 -1
- package/src/assets/styles/css/index.layout.css +3 -0
- package/src/assets/styles/{v2/scss → scss}/AttachmentList/AttachmentList-layout.scss +1 -1
- package/src/assets/styles/{v2/scss → scss}/Message/Message-layout.scss +2 -2
- package/src/assets/styles/scss/_base.scss +7 -198
- package/src/assets/styles/scss/index.scss +35 -48
- package/src/assets/version.ts +1 -1
- package/bundles/stream-chat-angular.umd.js +0 -8445
- package/bundles/stream-chat-angular.umd.js.map +0 -1
- package/esm2015/lib/attachment-configuration.service.js +0 -186
- package/esm2015/lib/attachment-list/attachment-list.component.js +0 -209
- package/esm2015/lib/attachment-preview-list/attachment-preview-list.component.js +0 -49
- package/esm2015/lib/attachment.service.js +0 -276
- package/esm2015/lib/avatar/avatar.component.js +0 -172
- package/esm2015/lib/avatar-placeholder/avatar-placeholder.component.js +0 -78
- package/esm2015/lib/channel/channel.component.js +0 -50
- package/esm2015/lib/channel-header/channel-header.component.js +0 -86
- package/esm2015/lib/channel-list/channel-list-toggle.service.js +0 -73
- package/esm2015/lib/channel-list/channel-list.component.js +0 -67
- package/esm2015/lib/channel-preview/channel-preview.component.js +0 -167
- package/esm2015/lib/channel.service.js +0 -1487
- package/esm2015/lib/chat-client.service.js +0 -211
- package/esm2015/lib/edit-message-form/edit-message-form.component.js +0 -87
- package/esm2015/lib/get-channel-display-text.js +0 -15
- package/esm2015/lib/get-message-translation.js +0 -13
- package/esm2015/lib/icon/icon.component.js +0 -25
- package/esm2015/lib/icon-placeholder/icon-placeholder.component.js +0 -35
- package/esm2015/lib/loading-indicator/loading-indicator.component.js +0 -35
- package/esm2015/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.js +0 -42
- package/esm2015/lib/message/message.component.js +0 -436
- package/esm2015/lib/message-actions-box/message-actions-box.component.js +0 -137
- package/esm2015/lib/message-actions.service.js +0 -114
- package/esm2015/lib/message-bounce-prompt/message-bounce-prompt.component.js +0 -80
- package/esm2015/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.js +0 -262
- package/esm2015/lib/message-input/message-input.component.js +0 -455
- package/esm2015/lib/message-input/textarea.directive.js +0 -90
- package/esm2015/lib/message-list/group-styles.js +0 -53
- package/esm2015/lib/message-list/image-load.service.js +0 -24
- package/esm2015/lib/message-list/message-list.component.js +0 -726
- package/esm2015/lib/message-preview.js +0 -7
- package/esm2015/lib/message-reactions/message-reactions.component.js +0 -266
- package/esm2015/lib/message-reactions.service.js +0 -45
- package/esm2015/lib/modal/modal.component.js +0 -74
- package/esm2015/lib/notification/notification.component.js +0 -24
- package/esm2015/lib/notification-list/notification-list.component.js +0 -38
- package/esm2015/lib/notification.service.js +0 -79
- package/esm2015/lib/read-by.js +0 -13
- package/esm2015/lib/theme.service.js +0 -122
- package/esm2015/lib/thread/thread.component.js +0 -55
- package/esm2015/lib/types.js +0 -2
- package/esm2015/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.js +0 -192
- package/esm2015/lib/voice-recording/voice-recording.component.js +0 -115
- package/esm2015/public-api.js +0 -66
- package/fesm2015/stream-chat-angular.js.map +0 -1
- package/lib/channel-list/channel-list-toggle.service.d.ts +0 -40
- package/lib/message-list/image-load.service.d.ts +0 -15
- package/src/assets/EmojiOneColor.woff2 +0 -0
- package/src/assets/NotoColorEmoji-flags.woff2 +0 -0
- package/src/assets/Poweredby_100px-White_VertText.png +0 -0
- package/src/assets/str-chat__alert.svg +0 -1
- package/src/assets/str-chat__file-file.svg +0 -20
- package/src/assets/str-chat__icon-chevron-down.svg +0 -1
- package/src/assets/str-chat__icon-search.svg +0 -1
- package/src/assets/str-chat__icon-send.svg +0 -1
- package/src/assets/str-chat__icon-sprite.png +0 -0
- package/src/assets/str-chat__icon-sprite@1x.png +0 -0
- package/src/assets/str-chat__icon-sprite@2x.png +0 -0
- package/src/assets/str-chat__icon-sprite@3x.png +0 -0
- package/src/assets/str-chat__loading-indicator.svg +0 -23
- package/src/assets/str-chat__reaction-list-sprite@1x.png +0 -0
- package/src/assets/str-chat__reaction-list-sprite@2x.png +0 -0
- package/src/assets/str-chat__reaction-list-sprite@3x.png +0 -0
- package/src/assets/str-chat__reactions-sprite@1x.png +0 -0
- package/src/assets/str-chat__reactions-sprite@2x.png +0 -0
- package/src/assets/str-chat__reactions-sprite@3x.png +0 -0
- package/src/assets/styles/assets/EmojiOneColor.woff2 +0 -0
- package/src/assets/styles/assets/NotoColorEmoji-flags.woff2 +0 -0
- package/src/assets/styles/assets/Poweredby_100px-White_VertText.png +0 -0
- package/src/assets/styles/assets/str-chat__reaction-list-sprite@1x.png +0 -0
- package/src/assets/styles/assets/str-chat__reaction-list-sprite@2x.png +0 -0
- package/src/assets/styles/assets/str-chat__reaction-list-sprite@3x.png +0 -0
- package/src/assets/styles/scss/ActionsBox.scss +0 -56
- package/src/assets/styles/scss/Attachment.scss +0 -329
- package/src/assets/styles/scss/AttachmentActions.scss +0 -44
- package/src/assets/styles/scss/Audio.scss +0 -113
- package/src/assets/styles/scss/Avatar.scss +0 -79
- package/src/assets/styles/scss/Card.scss +0 -125
- package/src/assets/styles/scss/ChannelHeader.scss +0 -284
- package/src/assets/styles/scss/ChannelList.scss +0 -141
- package/src/assets/styles/scss/ChannelListMessenger.scss +0 -9
- package/src/assets/styles/scss/ChannelPreview.scss +0 -133
- package/src/assets/styles/scss/ChannelSearch.scss +0 -124
- package/src/assets/styles/scss/ChatDown.scss +0 -15
- package/src/assets/styles/scss/DateSeparator.scss +0 -51
- package/src/assets/styles/scss/EditMessageForm.scss +0 -112
- package/src/assets/styles/scss/EventComponent.scss +0 -48
- package/src/assets/styles/scss/Gallery.scss +0 -121
- package/src/assets/styles/scss/ImageCarousel.scss +0 -45
- package/src/assets/styles/scss/InfiniteScrollPaginator.scss +0 -6
- package/src/assets/styles/scss/LoadMoreButton.scss +0 -44
- package/src/assets/styles/scss/LoadingChannels.scss +0 -70
- package/src/assets/styles/scss/LoadingIndicator.scss +0 -38
- package/src/assets/styles/scss/Message.scss +0 -1283
- package/src/assets/styles/scss/MessageActions.scss +0 -137
- package/src/assets/styles/scss/MessageCommerce.scss +0 -608
- package/src/assets/styles/scss/MessageInput.scss +0 -398
- package/src/assets/styles/scss/MessageInputFlat.scss +0 -323
- package/src/assets/styles/scss/MessageList.scss +0 -244
- package/src/assets/styles/scss/MessageLivestream.scss +0 -338
- package/src/assets/styles/scss/MessageNotification.scss +0 -43
- package/src/assets/styles/scss/MessageRepliesCountButton.scss +0 -33
- package/src/assets/styles/scss/MessageTeam.scss +0 -644
- package/src/assets/styles/scss/Modal.scss +0 -78
- package/src/assets/styles/scss/ReactionList.scss +0 -197
- package/src/assets/styles/scss/ReactionSelector.scss +0 -218
- package/src/assets/styles/scss/SendButton.scss +0 -20
- package/src/assets/styles/scss/SimpleReactionsList.scss +0 -76
- package/src/assets/styles/scss/SmallMessageInput.scss +0 -171
- package/src/assets/styles/scss/Thread.scss +0 -381
- package/src/assets/styles/scss/Tooltip.scss +0 -41
- package/src/assets/styles/scss/TypingIndicator.scss +0 -80
- package/src/assets/styles/scss/VirtualMessage.scss +0 -288
- package/src/assets/styles/scss/_variables.scss +0 -161
- package/src/assets/styles/v2/css/index.css +0 -3
- package/src/assets/styles/v2/css/index.layout.css +0 -3
- package/src/assets/styles/v2/scss/_base.scss +0 -28
- package/src/assets/styles/v2/scss/index.scss +0 -37
- package/src/assets/styles/vendor/emoji-mart.scss +0 -514
- package/src/assets/styles/vendor/mml-react.scss +0 -2246
- package/src/assets/styles/vendor/react-file-utils.scss +0 -441
- package/src/assets/styles/vendor/react-image-gallery.scss +0 -237
- /package/{esm2015/assets/i18n/en.js → esm2020/assets/i18n/en.mjs} +0 -0
- /package/{esm2015/lib/injection-tokens.js → esm2020/lib/injection-tokens.mjs} +0 -0
- /package/{esm2015/lib/is-image-attachment.js → esm2020/lib/is-image-attachment.mjs} +0 -0
- /package/{esm2015/lib/is-image-file.js → esm2020/lib/is-image-file.mjs} +0 -0
- /package/{esm2015/lib/is-on-separate-date.js → esm2020/lib/is-on-separate-date.mjs} +0 -0
- /package/{esm2015/lib/list-users.js → esm2020/lib/list-users.mjs} +0 -0
- /package/{esm2015/lib/message-input/textarea.interface.js → esm2020/lib/message-input/textarea.interface.mjs} +0 -0
- /package/{esm2015/lib/parse-date.js → esm2020/lib/parse-date.mjs} +0 -0
- /package/{esm2015/stream-chat-angular.js → esm2020/stream-chat-angular.mjs} +0 -0
- /package/{stream-chat-angular.d.ts → index.d.ts} +0 -0
- /package/src/assets/styles/{v2/css → css}/emoji-mart.css +0 -0
- /package/src/assets/styles/{v2/css → css}/emoji-replacement.css +0 -0
- /package/src/assets/styles/{v2/scss → scss}/AttachmentList/AttachmentList-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/AttachmentPreviewList/AttachmentPreviewList-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/AttachmentPreviewList/AttachmentPreviewList-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Autocomplete/Autocomplete-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Autocomplete/Autocomplete-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Avatar/Avatar-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Avatar/Avatar-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/BaseImage/BaseImage-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/BaseImage/BaseImage-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/BaseImage/index.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Channel/Channel-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Channel/Channel-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/ChannelHeader/ChannelHeader-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/ChannelHeader/ChannelHeader-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/ChannelList/ChannelList-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/ChannelList/ChannelList-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/ChannelPreview/ChannelPreview-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/ChannelPreview/ChannelPreview-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/ChannelSearch/ChannelSearch-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/ChannelSearch/ChannelSearch-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/EditMessageForm/EditMessageForm-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/EditMessageForm/EditMessageForm-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/ImageCarousel/ImageCarousel-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/ImageCarousel/ImageCarousel-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/LinkPreview/LinkPreview-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/LinkPreview/LinkPreview-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/LinkPreview/index.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/LoadingIndicator/LoadingIndicator-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/LoadingIndicator/LoadingIndicator-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Message/Message-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageActionsBox/MessageActionsBox-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageActionsBox/MessageActionsBox-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageBouncePrompt/MessageBouncePrompt-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageBouncePrompt/MessageBouncePrompt-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageInput/MessageInput-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageInput/MessageInput-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageList/MessageList-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageList/MessageList-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageList/VirtualizedMessageList-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageList/VirtualizedMessageList-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageReactions/MessageReactions-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageReactions/MessageReactions-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageReactions/MessageReactionsSelector-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/MessageReactions/MessageReactionsSelector-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Modal/Modal-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Modal/Modal-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Notification/MessageNotification-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Notification/MessageNotification-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Notification/Notification-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Notification/Notification-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Notification/NotificationList-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Notification/NotificationList-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Thread/Thread-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Thread/Thread-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Tooltip/Tooltip-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/Tooltip/Tooltip-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/TypingIndicator/TypingIndicator-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/TypingIndicator/TypingIndicator-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/_emoji-replacement.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/_global-layout-variables.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/_global-theme-variables.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/_icons.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/_palette-variables.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/_utils.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/common/CTAButton/CTAButton-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/common/CTAButton/CTAButton-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/common/CircleFAButton/CircleFAButton-layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/common/CircleFAButton/CircleFAButton-theme.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/index.layout.scss +0 -0
- /package/src/assets/styles/{v2/scss → scss}/vendor/emoji-mart.scss +0 -0
- /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
|