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
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
-
export const createMessagePreview = (user, text, attachments = [], mentionedUsers = [], parentId = undefined, quotedMessageId = undefined, customData) => {
|
|
3
|
-
const clientSideId = `${user.id}-${uuidv4()}`;
|
|
4
|
-
return Object.assign({ __html: text, created_at: new Date(), html: text, id: clientSideId, reactions: [], status: 'sending', text, type: 'regular', user,
|
|
5
|
-
attachments, mentioned_users: mentionedUsers, parent_id: parentId, quoted_message_id: quotedMessageId }, customData);
|
|
6
|
-
};
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wcmV2aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtcHJldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUdsQyxJQUFrQixFQUNsQixJQUFZLEVBQ1osY0FBK0IsRUFBRSxFQUNqQyxpQkFBb0MsRUFBRSxFQUN0QyxXQUErQixTQUFTLEVBQ3hDLGtCQUFzQyxTQUFTLEVBQy9DLFVBQWlELEVBQ2pELEVBQUU7SUFDRixNQUFNLFlBQVksR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUU5QyxPQUFPLGdCQUNMLE1BQU0sRUFBRSxJQUFJLEVBQ1osVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQ3RCLElBQUksRUFBRSxJQUFJLEVBQ1YsRUFBRSxFQUFFLFlBQVksRUFDaEIsU0FBUyxFQUFFLEVBQUUsRUFDYixNQUFNLEVBQUUsU0FBUyxFQUNqQixJQUFJLEVBQ0osSUFBSSxFQUFFLFNBQVMsRUFDZixJQUFJO1FBQ0osV0FBVyxFQUNYLGVBQWUsRUFBRSxjQUFjLEVBQy9CLFNBQVMsRUFBRSxRQUFRLEVBQ25CLGlCQUFpQixFQUFFLGVBQWUsSUFDL0IsVUFBVSxDQUNtQixDQUFDO0FBQ3JDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dGFjaG1lbnQsIE1lc3NhZ2VSZXNwb25zZSwgVXNlclJlc3BvbnNlIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNZXNzYWdlUHJldmlldyA9IDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+KFxuICB1c2VyOiBVc2VyUmVzcG9uc2UsXG4gIHRleHQ6IHN0cmluZyxcbiAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnQ8VD5bXSA9IFtdLFxuICBtZW50aW9uZWRVc2VyczogVXNlclJlc3BvbnNlPFQ+W10gPSBbXSxcbiAgcGFyZW50SWQ6IHVuZGVmaW5lZCB8IHN0cmluZyA9IHVuZGVmaW5lZCxcbiAgcXVvdGVkTWVzc2FnZUlkOiB1bmRlZmluZWQgfCBzdHJpbmcgPSB1bmRlZmluZWQsXG4gIGN1c3RvbURhdGE6IHVuZGVmaW5lZCB8IFBhcnRpYWw8VFsnbWVzc2FnZVR5cGUnXT5cbikgPT4ge1xuICBjb25zdCBjbGllbnRTaWRlSWQgPSBgJHt1c2VyLmlkfS0ke3V1aWR2NCgpfWA7XG5cbiAgcmV0dXJuIHtcbiAgICBfX2h0bWw6IHRleHQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKSxcbiAgICBodG1sOiB0ZXh0LFxuICAgIGlkOiBjbGllbnRTaWRlSWQsXG4gICAgcmVhY3Rpb25zOiBbXSxcbiAgICBzdGF0dXM6ICdzZW5kaW5nJyxcbiAgICB0ZXh0LFxuICAgIHR5cGU6ICdyZWd1bGFyJyxcbiAgICB1c2VyLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIG1lbnRpb25lZF91c2VyczogbWVudGlvbmVkVXNlcnMsXG4gICAgcGFyZW50X2lkOiBwYXJlbnRJZCxcbiAgICBxdW90ZWRfbWVzc2FnZV9pZDogcXVvdGVkTWVzc2FnZUlkLFxuICAgIC4uLmN1c3RvbURhdGEsXG4gIH0gYXMgdW5rbm93biBhcyBNZXNzYWdlUmVzcG9uc2U8VD47XG59O1xuIl19
|
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
3
|
-
import { ChannelService } from '../channel.service';
|
|
4
|
-
import { NgxPopperjsTriggers, NgxPopperjsPlacements } from 'ngx-popperjs';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../channel.service";
|
|
7
|
-
import * as i2 from "../message-reactions.service";
|
|
8
|
-
import * as i3 from "../custom-templates.service";
|
|
9
|
-
import * as i4 from "../theme.service";
|
|
10
|
-
import * as i5 from "../avatar-placeholder/avatar-placeholder.component";
|
|
11
|
-
import * as i6 from "../modal/modal.component";
|
|
12
|
-
import * as i7 from "../loading-indicator/loading-indicator.component";
|
|
13
|
-
import * as i8 from "@angular/common";
|
|
14
|
-
/**
|
|
15
|
-
* The `MessageReactions` component displays the reactions of a message, the current user can add and remove reactions. You can read more about [message reactions](https://getstream.io/chat/docs/javascript/send_reaction/?language=javascript) in the platform documentation.
|
|
16
|
-
*/
|
|
17
|
-
export class MessageReactionsComponent {
|
|
18
|
-
constructor(cdRef, channelService, messageReactionsService, customTemplatesService, themeService) {
|
|
19
|
-
this.cdRef = cdRef;
|
|
20
|
-
this.channelService = channelService;
|
|
21
|
-
this.messageReactionsService = messageReactionsService;
|
|
22
|
-
this.customTemplatesService = customTemplatesService;
|
|
23
|
-
this.themeService = themeService;
|
|
24
|
-
/**
|
|
25
|
-
* The number of reactions grouped by [reaction types](https://github.com/GetStream/stream-chat-angular/tree/master/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts)
|
|
26
|
-
*/
|
|
27
|
-
this.messageReactionCounts = {};
|
|
28
|
-
/**
|
|
29
|
-
* Indicates if the selector should be opened or closed. Adding a UI element to open and close the selector is the parent's component responsibility.
|
|
30
|
-
*/
|
|
31
|
-
this.isSelectorOpen = false;
|
|
32
|
-
/**
|
|
33
|
-
* List of reactions of a [message](../types/stream-message.mdx), used to display the users of a reaction type.
|
|
34
|
-
*/
|
|
35
|
-
this.latestReactions = [];
|
|
36
|
-
/**
|
|
37
|
-
* List of the user's own reactions of a [message](../types/stream-message.mdx), used to display the users of a reaction type.
|
|
38
|
-
*/
|
|
39
|
-
this.ownReactions = [];
|
|
40
|
-
/**
|
|
41
|
-
* Indicates if the selector should be opened or closed. Adding a UI element to open and close the selector is the parent's component responsibility.
|
|
42
|
-
*/
|
|
43
|
-
this.isSelectorOpenChange = new EventEmitter();
|
|
44
|
-
this.popperTriggerHover = NgxPopperjsTriggers.hover;
|
|
45
|
-
this.popperPlacementAuto = NgxPopperjsPlacements.AUTO;
|
|
46
|
-
this.isLoading = true;
|
|
47
|
-
this.reactions = [];
|
|
48
|
-
this.shouldHandleReactionClick = true;
|
|
49
|
-
this.existingReactions = [];
|
|
50
|
-
this.reactionsCount = 0;
|
|
51
|
-
this.reactionOptions = [];
|
|
52
|
-
this.subscriptions = [];
|
|
53
|
-
this.isViewInited = false;
|
|
54
|
-
this.isOpenChange = (isOpen) => {
|
|
55
|
-
this.selectedReactionType = isOpen ? this.selectedReactionType : undefined;
|
|
56
|
-
};
|
|
57
|
-
this.eventHandler = (event) => {
|
|
58
|
-
var _a;
|
|
59
|
-
if (!((_a = this.selectorContainer) === null || _a === void 0 ? void 0 : _a.nativeElement.contains(event.target))) {
|
|
60
|
-
this.isSelectorOpenChange.emit(false);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
ngOnInit() {
|
|
65
|
-
this.subscriptions.push(this.messageReactionsService.reactions$.subscribe((reactions) => {
|
|
66
|
-
this.reactionOptions = Object.keys(reactions);
|
|
67
|
-
this.setExistingReactions();
|
|
68
|
-
if (this.isViewInited) {
|
|
69
|
-
this.cdRef.detectChanges();
|
|
70
|
-
}
|
|
71
|
-
}));
|
|
72
|
-
}
|
|
73
|
-
ngOnChanges(changes) {
|
|
74
|
-
if (changes.isSelectorOpen) {
|
|
75
|
-
this.isSelectorOpen
|
|
76
|
-
? setTimeout(() => this.watchForOutsideClicks()) // setTimeout: wait for current click to bubble up, and only watch for clicks after that
|
|
77
|
-
: this.stopWatchForOutsideClicks();
|
|
78
|
-
}
|
|
79
|
-
if (changes.messageReactionCounts) {
|
|
80
|
-
this.setExistingReactions();
|
|
81
|
-
}
|
|
82
|
-
if (changes.messageReactionCounts && this.messageReactionCounts) {
|
|
83
|
-
const reactionsCount = Object.keys(this.messageReactionCounts).reduce((acc, key) => acc + (this.messageReactionCounts[key] || 0), 0);
|
|
84
|
-
this.shouldHandleReactionClick =
|
|
85
|
-
reactionsCount <= ChannelService.MAX_MESSAGE_REACTIONS_TO_FETCH ||
|
|
86
|
-
!!this.messageReactionsService.customReactionClickHandler;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
ngAfterViewInit() {
|
|
90
|
-
this.isViewInited = true;
|
|
91
|
-
}
|
|
92
|
-
ngAfterViewChecked() {
|
|
93
|
-
if (this.tooltipText && !this.tooltipPositions) {
|
|
94
|
-
this.setTooltipPosition();
|
|
95
|
-
this.cdRef.detectChanges();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
ngOnDestroy() {
|
|
99
|
-
this.subscriptions.forEach((s) => s.unsubscribe());
|
|
100
|
-
}
|
|
101
|
-
getLatestUserByReaction(reactionType) {
|
|
102
|
-
var _a;
|
|
103
|
-
return (_a = this.latestReactions.find((r) => r.type === reactionType && r.user)) === null || _a === void 0 ? void 0 : _a.user;
|
|
104
|
-
}
|
|
105
|
-
getEmojiByReaction(reactionType) {
|
|
106
|
-
return this.messageReactionsService.reactions[reactionType];
|
|
107
|
-
}
|
|
108
|
-
reactionSelected(reactionType) {
|
|
109
|
-
if (!this.shouldHandleReactionClick) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
if (this.themeService.themeVersion === '1') {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
if (!this.messageId) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
if (this.messageReactionsService.customReactionClickHandler) {
|
|
119
|
-
this.messageReactionsService.customReactionClickHandler({
|
|
120
|
-
messageId: this.messageId,
|
|
121
|
-
reactionType: reactionType,
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
this.selectedReactionType = reactionType;
|
|
126
|
-
void this.fetchAllReactions();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
getUsersByReaction(reactionType) {
|
|
130
|
-
return this.latestReactions
|
|
131
|
-
.filter((r) => r.type === reactionType)
|
|
132
|
-
.map((r) => { var _a, _b; return ((_a = r.user) === null || _a === void 0 ? void 0 : _a.name) || ((_b = r.user) === null || _b === void 0 ? void 0 : _b.id); })
|
|
133
|
-
.filter((i) => !!i)
|
|
134
|
-
.join(', ');
|
|
135
|
-
}
|
|
136
|
-
getAllUsersByReaction(reactionType) {
|
|
137
|
-
if (!reactionType) {
|
|
138
|
-
return [];
|
|
139
|
-
}
|
|
140
|
-
const users = this.reactions
|
|
141
|
-
.filter((r) => r.type === reactionType)
|
|
142
|
-
.map((r) => r.user)
|
|
143
|
-
.filter((i) => !!i);
|
|
144
|
-
users.sort((u1, u2) => {
|
|
145
|
-
var _a, _b;
|
|
146
|
-
const name1 = (_a = u1.name) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
147
|
-
const name2 = (_b = u2.name) === null || _b === void 0 ? void 0 : _b.toLowerCase();
|
|
148
|
-
if (!name1) {
|
|
149
|
-
return 1;
|
|
150
|
-
}
|
|
151
|
-
if (!name2) {
|
|
152
|
-
return -1;
|
|
153
|
-
}
|
|
154
|
-
if (name1 === name2) {
|
|
155
|
-
return 0;
|
|
156
|
-
}
|
|
157
|
-
if (name1 < name2) {
|
|
158
|
-
return -1;
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
return 1;
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
return users;
|
|
165
|
-
}
|
|
166
|
-
showTooltip(event, reactionType) {
|
|
167
|
-
this.currentTooltipTarget = event.target;
|
|
168
|
-
this.tooltipText = this.getUsersByReaction(reactionType);
|
|
169
|
-
}
|
|
170
|
-
hideTooltip() {
|
|
171
|
-
this.tooltipText = undefined;
|
|
172
|
-
this.currentTooltipTarget = undefined;
|
|
173
|
-
this.tooltipPositions = undefined;
|
|
174
|
-
}
|
|
175
|
-
trackByMessageReaction(index, item) {
|
|
176
|
-
return item;
|
|
177
|
-
}
|
|
178
|
-
trackByUserId(index, item) {
|
|
179
|
-
return item.id;
|
|
180
|
-
}
|
|
181
|
-
react(type) {
|
|
182
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
183
|
-
this.ownReactions.find((r) => r.type === type)
|
|
184
|
-
? yield this.channelService.removeReaction(this.messageId, type)
|
|
185
|
-
: yield this.channelService.addReaction(this.messageId, type);
|
|
186
|
-
this.isSelectorOpenChange.emit(false);
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
isOwnReaction(reactionType) {
|
|
190
|
-
return !!this.ownReactions.find((r) => r.type === reactionType);
|
|
191
|
-
}
|
|
192
|
-
watchForOutsideClicks() {
|
|
193
|
-
window.addEventListener('click', this.eventHandler);
|
|
194
|
-
}
|
|
195
|
-
stopWatchForOutsideClicks() {
|
|
196
|
-
window.removeEventListener('click', this.eventHandler);
|
|
197
|
-
}
|
|
198
|
-
setTooltipPosition() {
|
|
199
|
-
var _a, _b, _c;
|
|
200
|
-
const tooltip = (_a = this.selectorTooltip) === null || _a === void 0 ? void 0 : _a.nativeElement.getBoundingClientRect();
|
|
201
|
-
const target = (_b = this.currentTooltipTarget) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect();
|
|
202
|
-
const container = (_c = this.selectorContainer) === null || _c === void 0 ? void 0 : _c.nativeElement.getBoundingClientRect();
|
|
203
|
-
if (!tooltip || !target || !container)
|
|
204
|
-
return;
|
|
205
|
-
const tooltipPosition = tooltip.width === container.width || tooltip.x < container.x
|
|
206
|
-
? 0
|
|
207
|
-
: target.left + target.width / 2 - container.left - tooltip.width / 2;
|
|
208
|
-
const arrowPosition = target.x - tooltip.x + target.width / 2 - tooltipPosition;
|
|
209
|
-
this.tooltipPositions = {
|
|
210
|
-
tooltip: tooltipPosition,
|
|
211
|
-
arrow: arrowPosition,
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
fetchAllReactions() {
|
|
215
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
216
|
-
if (!this.messageId) {
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
this.isLoading = true;
|
|
220
|
-
try {
|
|
221
|
-
this.reactions = yield this.channelService.getMessageReactions(this.messageId);
|
|
222
|
-
}
|
|
223
|
-
catch (error) {
|
|
224
|
-
this.selectedReactionType = undefined;
|
|
225
|
-
}
|
|
226
|
-
finally {
|
|
227
|
-
this.isLoading = false;
|
|
228
|
-
this.cdRef.detectChanges();
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
setExistingReactions() {
|
|
233
|
-
this.existingReactions = Object.keys(this.messageReactionCounts)
|
|
234
|
-
.filter((k) => this.reactionOptions.indexOf(k) !== -1)
|
|
235
|
-
.filter((k) => this.messageReactionCounts[k] > 0);
|
|
236
|
-
this.reactionsCount = this.existingReactions.reduce((total, reaction) => total + this.messageReactionCounts[reaction], 0);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
MessageReactionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageReactionsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ChannelService }, { token: i2.MessageReactionsService }, { token: i3.CustomTemplatesService }, { token: i4.ThemeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
240
|
-
MessageReactionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageReactionsComponent, selector: "stream-message-reactions", inputs: { messageId: "messageId", messageReactionCounts: "messageReactionCounts", isSelectorOpen: "isSelectorOpen", latestReactions: "latestReactions", ownReactions: "ownReactions" }, outputs: { isSelectorOpenChange: "isSelectorOpenChange" }, viewQueries: [{ propertyName: "selectorContainer", first: true, predicate: ["selectorContainer"], descendants: true }, { propertyName: "selectorTooltip", first: true, predicate: ["selectorTooltip"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"existingReactions.length > 0\"\n class=\"str-chat__reaction-list str-chat__message-reactions-container\"\n [class.str-chat__reaction-list--reverse]=\"true\"\n [class.str-chat__reaction-list-hidden]=\"isSelectorOpen\"\n data-testid=\"reaction-list\"\n>\n <ul class=\"str-chat__message-reactions\">\n <li\n class=\"str-chat__message-reaction\"\n *ngFor=\"\n let reactionType of existingReactions;\n trackBy: trackByMessageReaction\n \"\n [ngStyle]=\"{ cursor: shouldHandleReactionClick ? 'pointer' : 'default' }\"\n [class.str-chat__message-reaction-own]=\"isOwnReaction(reactionType)\"\n data-testclass=\"emoji\"\n (click)=\"reactionSelected(reactionType)\"\n (keyup.enter)=\"reactionSelected(reactionType)\"\n >\n <span class=\"emoji str-chat__message-reaction-emoji\">\n {{ getEmojiByReaction(reactionType) }} \n </span>\n <span\n data-testclass=\"reaction-list-reaction-count\"\n class=\"str-chat__message-reaction-count\"\n >\n {{ messageReactionCounts[reactionType] }}\n </span>\n </li>\n <li>\n <span\n data-testid=\"reactions-count\"\n class=\"str-chat__reaction-list--counter\"\n >{{ reactionsCount }}</span\n >\n </li>\n </ul>\n</div>\n\n<div\n #selectorContainer\n class=\"str-chat__reaction-selector str-chat__message-reaction-selector\"\n *ngIf=\"isSelectorOpen\"\n data-testid=\"reaction-selector\"\n>\n <div\n *ngIf=\"tooltipText\"\n data-testid=\"tooltip\"\n #selectorTooltip\n class=\"str-chat__reaction-selector-tooltip\"\n [ngStyle]=\"{\n left: tooltipPositions?.tooltip + 'px',\n visibility: tooltipPositions ? 'visible' : 'hidden'\n }\"\n >\n <div\n class=\"arrow\"\n [ngStyle]=\"{ left: tooltipPositions?.arrow + 'px' }\"\n ></div>\n <span class=\"latest-user-username\">\n {{ tooltipText }}\n </span>\n </div>\n <ul\n class=\"str-chat__message-reactions-list str-chat__message-reactions-options\"\n >\n <li\n class=\"\n str-chat__message-reactions-option\n str-chat__message-reactions-list-item\n str-chat__emoji\n \"\n *ngFor=\"\n let reactionType of reactionOptions;\n trackBy: trackByMessageReaction\n \"\n [class.str-chat__message-reactions-option-selected]=\"\n isOwnReaction(reactionType)\n \"\n data-testclass=\"emoji-option\"\n (click)=\"react(reactionType)\"\n (keyup.enter)=\"react(reactionType)\"\n >\n <div\n *ngIf=\"getLatestUserByReaction(reactionType) as user\"\n class=\"latest-user str-chat__message-reactions-last-user\"\n (click)=\"hideTooltip()\"\n (keyup.enter)=\"hideTooltip()\"\n (mouseenter)=\"showTooltip($event, reactionType)\"\n (mouseleave)=\"hideTooltip()\"\n attr.data-testid=\"{{ reactionType }}-last-user\"\n >\n <stream-avatar-placeholder\n attr.data-testid=\"{{ reactionType }}-avatar\"\n [imageUrl]=\"user.image\"\n [name]=\"user.name || user.id\"\n [size]=\"20\"\n location=\"reaction\"\n ></stream-avatar-placeholder>\n </div>\n <span\n class=\"\n emoji\n str-chat__emoji-selector-emoji-angular\n str-chat__message-reaction-emoji\n \"\n >\n {{ getEmojiByReaction(reactionType) }}\n </span>\n <span\n *ngIf=\"\n messageReactionCounts[reactionType] &&\n messageReactionCounts[reactionType]! > 0\n \"\n class=\"str-chat__message-reactions-list-item__count\"\n attr.data-testid=\"{{ reactionType }}-reaction-count\"\n >\n {{ messageReactionCounts[reactionType] }}\n </span>\n </li>\n </ul>\n</div>\n\n<ng-container *ngIf=\"selectedReactionType\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: {\n isOpen: !!selectedReactionType,\n messageId: messageId,\n reactionType: selectedReactionType,\n isOpenChangeHandler: isOpenChange,\n content: modalContent\n }\n \"\n ></ng-container>\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-messageId=\"messageId\"\n let-reactionType=\"reactionType\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__message-reactions-details-modal\"\n [isOpen]=\"isOpen\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n [content]=\"content\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #modalContent>\n <div class=\"str-chat__message-reactions-details\">\n <div class=\"str-chat__message-reactions-details-reaction-types\">\n <div\n class=\"str-chat__message-reactions-details-reaction-type\"\n *ngFor=\"\n let reactionType of existingReactions;\n trackBy: trackByMessageReaction\n \"\n [ngStyle]=\"{\n cursor: shouldHandleReactionClick ? 'pointer' : 'default'\n }\"\n attr.data-testid=\"reaction-details-selector-{{ reactionType }}\"\n [class.str-chat__message-reactions-details-reaction-type--selected]=\"\n reactionType === selectedReactionType\n \"\n (click)=\"selectedReactionType = reactionType; allUsers.scrollTop = 0\"\n (keyup.enter)=\"\n selectedReactionType = reactionType; allUsers.scrollTop = 0\n \"\n >\n <span class=\"emoji str-chat__message-reaction-emoji\">\n {{ getEmojiByReaction(reactionType) }} \n </span>\n <span class=\"str-chat__message-reaction-count\">\n {{ messageReactionCounts[reactionType] }}\n </span>\n </div>\n </div>\n <div\n class=\"\n emoji\n str-chat__message-reaction-emoji str-chat__message-reaction-emoji-big\n \"\n >\n {{ getEmojiByReaction(selectedReactionType!) }}\n </div>\n <div\n #allUsers\n data-testid=\"all-reacting-users\"\n class=\"str-chat__message-reactions-details-reacting-users\"\n >\n <stream-loading-indicator\n *ngIf=\"isLoading; else reactions\"\n ></stream-loading-indicator>\n <ng-template #reactions>\n <div\n class=\"str-chat__message-reactions-details-reacting-user\"\n *ngFor=\"\n let user of getAllUsersByReaction(selectedReactionType);\n trackBy: trackByUserId\n \"\n >\n <stream-avatar-placeholder\n data-testclass=\"avatar\"\n class=\"str-chat__avatar str-chat__avatar--circle\"\n [size]=\"30\"\n [imageUrl]=\"user.image\"\n [name]=\"user.name\"\n type=\"user\"\n location=\"reaction\"\n [user]=\"user\"\n ></stream-avatar-placeholder>\n <span\n data-testclass=\"reaction-user-username\"\n class=\"str-chat__user-item--name\"\n >{{ user.name }}</span\n >\n </div>\n </ng-template>\n </div>\n </div>\n</ng-template>\n", components: [{ type: i5.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size", "location", "channel", "user", "type", "initialsType", "showOnlineIndicator"] }, { type: i6.ModalComponent, selector: "stream-modal", inputs: ["isOpen", "content"], outputs: ["isOpenChange"] }, { type: i7.LoadingIndicatorComponent, selector: "stream-loading-indicator", inputs: ["size", "color"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i8.AsyncPipe } });
|
|
241
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageReactionsComponent, decorators: [{
|
|
242
|
-
type: Component,
|
|
243
|
-
args: [{
|
|
244
|
-
selector: 'stream-message-reactions',
|
|
245
|
-
templateUrl: './message-reactions.component.html',
|
|
246
|
-
}]
|
|
247
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ChannelService }, { type: i2.MessageReactionsService }, { type: i3.CustomTemplatesService }, { type: i4.ThemeService }]; }, propDecorators: { messageId: [{
|
|
248
|
-
type: Input
|
|
249
|
-
}], messageReactionCounts: [{
|
|
250
|
-
type: Input
|
|
251
|
-
}], isSelectorOpen: [{
|
|
252
|
-
type: Input
|
|
253
|
-
}], latestReactions: [{
|
|
254
|
-
type: Input
|
|
255
|
-
}], ownReactions: [{
|
|
256
|
-
type: Input
|
|
257
|
-
}], isSelectorOpenChange: [{
|
|
258
|
-
type: Output
|
|
259
|
-
}], selectorContainer: [{
|
|
260
|
-
type: ViewChild,
|
|
261
|
-
args: ['selectorContainer']
|
|
262
|
-
}], selectorTooltip: [{
|
|
263
|
-
type: ViewChild,
|
|
264
|
-
args: ['selectorTooltip']
|
|
265
|
-
}] } });
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtcmVhY3Rpb25zL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXJlYWN0aW9ucy9tZXNzYWdlLXJlYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUlMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7OztBQU0xRTs7R0FFRztBQUtILE1BQU0sT0FBTyx5QkFBeUI7SUFpRHBDLFlBQ1UsS0FBd0IsRUFDeEIsY0FBOEIsRUFDOUIsdUJBQWdELEVBQ2pELHNCQUE4QyxFQUM3QyxZQUEwQjtRQUoxQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNqRCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzdDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBL0NwQzs7V0FFRztRQUNNLDBCQUFxQixHQUM1QixFQUFFLENBQUM7UUFDTDs7V0FFRztRQUNNLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ3pDOztXQUVHO1FBQ00sb0JBQWUsR0FBa0QsRUFBRSxDQUFDO1FBQzdFOztXQUVHO1FBQ00saUJBQVksR0FBa0QsRUFBRSxD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QUFxQixDQUFDLENBQUMsQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FDakQsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBRSxFQUNsRSxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7O3NIQXBSVSx5QkFBeUI7MEdBQXpCLHlCQUF5QixxaUJDL0J0Qyxpa09BcU9BOzJGRHRNYSx5QkFBeUI7a0JBSnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsV0FBVyxFQUFFLG9DQUFvQztpQkFDbEQ7Mk9BT1UsU0FBUztzQkFBakIsS0FBSztnQkFJRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFJRyxlQUFlO3NCQUF2QixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSWEsb0JBQW9CO3NCQUF0QyxNQUFNO2dCQUdpQyxpQkFBaUI7c0JBQXhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUdRLGVBQWU7c0JBQXBELFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3Rpb25SZXNwb25zZSwgVXNlclJlc3BvbnNlIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVzc2FnZVJlYWN0aW9uVHlwZSwgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE5neFBvcHBlcmpzVHJpZ2dlcnMsIE5neFBvcHBlcmpzUGxhY2VtZW50cyB9IGZyb20gJ25neC1wb3BwZXJqcyc7XG5pbXBvcnQgeyBNZXNzYWdlUmVhY3Rpb25zU2VydmljZSB9IGZyb20gJy4uL21lc3NhZ2UtcmVhY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVGVtcGxhdGVzU2VydmljZSB9IGZyb20gJy4uL2N1c3RvbS10ZW1wbGF0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi90aGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFRoZSBgTWVzc2FnZVJlYWN0aW9uc2AgY29tcG9uZW50IGRpc3BsYXlzIHRoZSByZWFjdGlvbnMgb2YgYSBtZXNzYWdlLCB0aGUgY3VycmVudCB1c2VyIGNhbiBhZGQgYW5kIHJlbW92ZSByZWFjdGlvbnMuIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IFttZXNzYWdlIHJlYWN0aW9uc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvc2VuZF9yZWFjdGlvbi8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkgaW4gdGhlIHBsYXRmb3JtIGRvY3VtZW50YXRpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1tZXNzYWdlLXJlYWN0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLXJlYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VSZWFjdGlvbnNDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIG1lc3NhZ2UgdGhlIHJlYWN0aW9ucyBiZWxvbmcgdG9cbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiByZWFjdGlvbnMgZ3JvdXBlZCBieSBbcmVhY3Rpb24gdHlwZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9HZXRTdHJlYW0vc3RyZWFtLWNoYXQtYW5ndWxhci90cmVlL21hc3Rlci9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1yZWFjdGlvbnMvbWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50LnRzKVxuICAgKi9cbiAgQElucHV0KCkgbWVzc2FnZVJlYWN0aW9uQ291bnRzOiB7IFtrZXkgaW4gTWVzc2FnZVJlYWN0aW9uVHlwZV0/OiBudW1iZXIgfSA9XG4gICAge307XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHNlbGVjdG9yIHNob3VsZCBiZSBvcGVuZWQgb3IgY2xvc2VkLiBBZGRpbmcgYSBVSSBlbGVtZW50IHRvIG9wZW4gYW5kIGNsb3NlIHRoZSBzZWxlY3RvciBpcyB0aGUgcGFyZW50J3MgY29tcG9uZW50IHJlc3BvbnNpYmlsaXR5LlxuICAgKi9cbiAgQElucHV0KCkgaXNTZWxlY3Rvck9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgcmVhY3Rpb25zIG9mIGEgW21lc3NhZ2VdKC4uL3R5cGVzL3N0cmVhbS1tZXNzYWdlLm1keCksIHVzZWQgdG8gZGlzcGxheSB0aGUgdXNlcnMgb2YgYSByZWFjdGlvbiB0eXBlLlxuICAgKi9cbiAgQElucHV0KCkgbGF0ZXN0UmVhY3Rpb25zOiBSZWFjdGlvblJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W10gPSBbXTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdGhlIHVzZXIncyBvd24gcmVhY3Rpb25zIG9mIGEgW21lc3NhZ2VdKC4uL3R5cGVzL3N0cmVhbS1tZXNzYWdlLm1keCksIHVzZWQgdG8gZGlzcGxheSB0aGUgdXNlcnMgb2YgYSByZWFjdGlvbiB0eXBlLlxuICAgKi9cbiAgQElucHV0KCkgb3duUmVhY3Rpb25zOiBSZWFjdGlvblJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W10gPSBbXTtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgc2VsZWN0b3Igc2hvdWxkIGJlIG9wZW5lZCBvciBjbG9zZWQuIEFkZGluZyBhIFVJIGVsZW1lbnQgdG8gb3BlbiBhbmQgY2xvc2UgdGhlIHNlbGVjdG9yIGlzIHRoZSBwYXJlbnQncyBjb21wb25lbnQgcmVzcG9uc2liaWxpdHkuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgaXNTZWxlY3Rvck9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHRvb2x0aXBQb3NpdGlvbnM6IHsgYXJyb3c6IG51bWJlcjsgdG9vbHRpcDogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG4gIHRvb2x0aXBUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdG9yQ29udGFpbmVyJykgcHJpdmF0ZSBzZWxlY3RvckNvbnRhaW5lcjpcbiAgICB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdG9yVG9vbHRpcCcpIHByaXZhdGUgc2VsZWN0b3JUb29sdGlwOlxuICAgIHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFRvb2x0aXBUYXJnZXQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBwb3BwZXJUcmlnZ2VySG92ZXIgPSBOZ3hQb3BwZXJqc1RyaWdnZXJzLmhvdmVyO1xuICBwb3BwZXJQbGFjZW1lbnRBdXRvID0gTmd4UG9wcGVyanNQbGFjZW1lbnRzLkFVVE87XG4gIHNlbGVjdGVkUmVhY3Rpb25UeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlzTG9hZGluZyA9IHRydWU7XG4gIHJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZVtdID0gW107XG4gIHNob3VsZEhhbmRsZVJlYWN0aW9uQ2xpY2sgPSB0cnVlO1xuICBleGlzdGluZ1JlYWN0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgcmVhY3Rpb25zQ291bnQ6IG51bWJlciA9IDA7XG4gIHJlYWN0aW9uT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGlzVmlld0luaXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVJlYWN0aW9uc1NlcnZpY2U6IE1lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5tZXNzYWdlUmVhY3Rpb25zU2VydmljZS5yZWFjdGlvbnMkLnN1YnNjcmliZSgocmVhY3Rpb25zKSA9PiB7XG4gICAgICAgIHRoaXMucmVhY3Rpb25PcHRpb25zID0gT2JqZWN0LmtleXMocmVhY3Rpb25zKTtcbiAgICAgICAgdGhpcy5zZXRFeGlzdGluZ1JlYWN0aW9ucygpO1xuICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmlzU2VsZWN0b3JPcGVuKSB7XG4gICAgICB0aGlzLmlzU2VsZWN0b3JPcGVuXG4gICAgICAgID8gc2V0VGltZW91dCgoKSA9PiB0aGlzLndhdGNoRm9yT3V0c2lkZUNsaWNrcygpKSAvLyBzZXRUaW1lb3V0OiB3YWl0IGZvciBjdXJyZW50IGNsaWNrIHRvIGJ1YmJsZSB1cCwgYW5kIG9ubHkgd2F0Y2ggZm9yIGNsaWNrcyBhZnRlciB0aGF0XG4gICAgICAgIDogdGhpcy5zdG9wV2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1lc3NhZ2VSZWFjdGlvbkNvdW50cykge1xuICAgICAgdGhpcy5zZXRFeGlzdGluZ1JlYWN0aW9ucygpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlUmVhY3Rpb25Db3VudHMgJiYgdGhpcy5tZXNzYWdlUmVhY3Rpb25Db3VudHMpIHtcbiAgICAgIGNvbnN0IHJlYWN0aW9uc0NvdW50ID0gT2JqZWN0LmtleXModGhpcy5tZXNzYWdlUmVhY3Rpb25Db3VudHMpLnJlZHVjZShcbiAgICAgICAgKGFjYywga2V5KSA9PiBhY2MgKyAodGhpcy5tZXNzYWdlUmVhY3Rpb25Db3VudHNba2V5XSB8fCAwKSxcbiAgICAgICAgMFxuICAgICAgKTtcbiAgICAgIHRoaXMuc2hvdWxkSGFuZGxlUmVhY3Rpb25DbGljayA9XG4gICAgICAgIHJlYWN0aW9uc0NvdW50IDw9IENoYW5uZWxTZXJ2aWNlLk1BWF9NRVNTQUdFX1JFQUNUSU9OU19UT19GRVRDSCB8fFxuICAgICAgICAhIXRoaXMubWVzc2FnZVJlYWN0aW9uc1NlcnZpY2UuY3VzdG9tUmVhY3Rpb25DbGlja0hhbmRsZXI7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaWV3SW5pdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50b29sdGlwVGV4dCAmJiAhdGhpcy50b29sdGlwUG9zaXRpb25zKSB7XG4gICAgICB0aGlzLnNldFRvb2x0aXBQb3NpdGlvbigpO1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBnZXRMYXRlc3RVc2VyQnlSZWFjdGlvbihyZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5sYXRlc3RSZWFjdGlvbnMuZmluZCgocikgPT4gci50eXBlID09PSByZWFjdGlvblR5cGUgJiYgci51c2VyKVxuICAgICAgPy51c2VyO1xuICB9XG5cbiAgZ2V0RW1vamlCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZTogTWVzc2FnZVJlYWN0aW9uVHlwZSkge1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlLnJlYWN0aW9uc1tyZWFjdGlvblR5cGVdO1xuICB9XG5cbiAgcmVhY3Rpb25TZWxlY3RlZChyZWFjdGlvblR5cGU6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5zaG91bGRIYW5kbGVSZWFjdGlvbkNsaWNrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnRoZW1lU2VydmljZS50aGVtZVZlcnNpb24gPT09ICcxJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMubWVzc2FnZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm1lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlLmN1c3RvbVJlYWN0aW9uQ2xpY2tIYW5kbGVyKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlLmN1c3RvbVJlYWN0aW9uQ2xpY2tIYW5kbGVyKHtcbiAgICAgICAgbWVzc2FnZUlkOiB0aGlzLm1lc3NhZ2VJZCxcbiAgICAgICAgcmVhY3Rpb25UeXBlOiByZWFjdGlvblR5cGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFJlYWN0aW9uVHlwZSA9IHJlYWN0aW9uVHlwZTtcbiAgICAgIHZvaWQgdGhpcy5mZXRjaEFsbFJlYWN0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIGdldFVzZXJzQnlSZWFjdGlvbihyZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5sYXRlc3RSZWFjdGlvbnNcbiAgICAgIC5maWx0ZXIoKHIpID0+IHIudHlwZSA9PT0gcmVhY3Rpb25UeXBlKVxuICAgICAgLm1hcCgocikgPT4gci51c2VyPy5uYW1lIHx8IHIudXNlcj8uaWQpXG4gICAgICAuZmlsdGVyKChpKSA9PiAhIWkpXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxuXG4gIGdldEFsbFVzZXJzQnlSZWFjdGlvbihcbiAgICByZWFjdGlvblR5cGU/OiBNZXNzYWdlUmVhY3Rpb25UeXBlXG4gICk6IFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdIHtcbiAgICBpZiAoIXJlYWN0aW9uVHlwZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJzID0gdGhpcy5yZWFjdGlvbnNcbiAgICAgIC5maWx0ZXIoKHIpID0+IHIudHlwZSA9PT0gcmVhY3Rpb25UeXBlKVxuICAgICAgLm1hcCgocikgPT4gci51c2VyKVxuICAgICAgLmZpbHRlcigoaSkgPT4gISFpKSBhcyBVc2VyUmVzcG9uc2VbXTtcblxuICAgIHVzZXJzLnNvcnQoKHUxLCB1MikgPT4ge1xuICAgICAgY29uc3QgbmFtZTEgPSB1MS5uYW1lPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3QgbmFtZTIgPSB1Mi5uYW1lPy50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBpZiAoIW5hbWUxKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW5hbWUyKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUxID09PSBuYW1lMikge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUxIDwgbmFtZTIpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXNlcnM7XG4gIH1cblxuICBzaG93VG9vbHRpcChldmVudDogRXZlbnQsIHJlYWN0aW9uVHlwZTogTWVzc2FnZVJlYWN0aW9uVHlwZSkge1xuICAgIHRoaXMuY3VycmVudFRvb2x0aXBUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy50b29sdGlwVGV4dCA9IHRoaXMuZ2V0VXNlcnNCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZSk7XG4gIH1cblxuICBoaWRlVG9vbHRpcCgpIHtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFRvb2x0aXBUYXJnZXQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50b29sdGlwUG9zaXRpb25zID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdHJhY2tCeU1lc3NhZ2VSZWFjdGlvbihpbmRleDogbnVtYmVyLCBpdGVtOiBNZXNzYWdlUmVhY3Rpb25UeXBlKSB7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICB0cmFja0J5VXNlcklkKGluZGV4OiBudW1iZXIsIGl0ZW06IFVzZXJSZXNwb25zZSkge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgYXN5bmMgcmVhY3QodHlwZTogTWVzc2FnZVJlYWN0aW9uVHlwZSkge1xuICAgIHRoaXMub3duUmVhY3Rpb25zLmZpbmQoKHIpID0+IHIudHlwZSA9PT0gdHlwZSlcbiAgICAgID8gYXdhaXQgdGhpcy5jaGFubmVsU2VydmljZS5yZW1vdmVSZWFjdGlvbih0aGlzLm1lc3NhZ2VJZCEsIHR5cGUpXG4gICAgICA6IGF3YWl0IHRoaXMuY2hhbm5lbFNlcnZpY2UuYWRkUmVhY3Rpb24odGhpcy5tZXNzYWdlSWQhLCB0eXBlKTtcbiAgICB0aGlzLmlzU2VsZWN0b3JPcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgaXNPd25SZWFjdGlvbihyZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gISF0aGlzLm93blJlYWN0aW9ucy5maW5kKChyKSA9PiByLnR5cGUgPT09IHJlYWN0aW9uVHlwZSk7XG4gIH1cblxuICBpc09wZW5DaGFuZ2UgPSAoaXNPcGVuOiBib29sZWFuKSA9PiB7XG4gICAgdGhpcy5zZWxlY3RlZFJlYWN0aW9uVHlwZSA9IGlzT3BlbiA/IHRoaXMuc2VsZWN0ZWRSZWFjdGlvblR5cGUgOiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgcHJpdmF0ZSBldmVudEhhbmRsZXIgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdG9yQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgdGhpcy5pc1NlbGVjdG9yT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSB3YXRjaEZvck91dHNpZGVDbGlja3MoKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5ldmVudEhhbmRsZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wV2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZXZlbnRIYW5kbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VG9vbHRpcFBvc2l0aW9uKCkge1xuICAgIGNvbnN0IHRvb2x0aXAgPSB0aGlzLnNlbGVjdG9yVG9vbHRpcD8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmN1cnJlbnRUb29sdGlwVGFyZ2V0Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9XG4gICAgICB0aGlzLnNlbGVjdG9yQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgaWYgKCF0b29sdGlwIHx8ICF0YXJnZXQgfHwgIWNvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgY29uc3QgdG9vbHRpcFBvc2l0aW9uID1cbiAgICAgIHRvb2x0aXAud2lkdGggPT09IGNvbnRhaW5lci53aWR0aCB8fCB0b29sdGlwLnggPCBjb250YWluZXIueFxuICAgICAgICA/IDBcbiAgICAgICAgOiB0YXJnZXQubGVmdCArIHRhcmdldC53aWR0aCAvIDIgLSBjb250YWluZXIubGVmdCAtIHRvb2x0aXAud2lkdGggLyAyO1xuXG4gICAgY29uc3QgYXJyb3dQb3NpdGlvbiA9XG4gICAgICB0YXJnZXQueCAtIHRvb2x0aXAueCArIHRhcmdldC53aWR0aCAvIDIgLSB0b29sdGlwUG9zaXRpb247XG5cbiAgICB0aGlzLnRvb2x0aXBQb3NpdGlvbnMgPSB7XG4gICAgICB0b29sdGlwOiB0b29sdGlwUG9zaXRpb24sXG4gICAgICBhcnJvdzogYXJyb3dQb3NpdGlvbixcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEFsbFJlYWN0aW9ucygpIHtcbiAgICBpZiAoIXRoaXMubWVzc2FnZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5yZWFjdGlvbnMgPSBhd2FpdCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmdldE1lc3NhZ2VSZWFjdGlvbnMoXG4gICAgICAgIHRoaXMubWVzc2FnZUlkXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUmVhY3Rpb25UeXBlID0gdW5kZWZpbmVkO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRFeGlzdGluZ1JlYWN0aW9ucygpIHtcbiAgICB0aGlzLmV4aXN0aW5nUmVhY3Rpb25zID0gT2JqZWN0LmtleXModGhpcy5tZXNzYWdlUmVhY3Rpb25Db3VudHMpXG4gICAgICAuZmlsdGVyKChrKSA9PiB0aGlzLnJlYWN0aW9uT3B0aW9ucy5pbmRleE9mKGspICE9PSAtMSlcbiAgICAgIC5maWx0ZXIoKGspID0+IHRoaXMubWVzc2FnZVJlYWN0aW9uQ291bnRzW2tdISA+IDApO1xuICAgIHRoaXMucmVhY3Rpb25zQ291bnQgPSB0aGlzLmV4aXN0aW5nUmVhY3Rpb25zLnJlZHVjZShcbiAgICAgICh0b3RhbCwgcmVhY3Rpb24pID0+IHRvdGFsICsgdGhpcy5tZXNzYWdlUmVhY3Rpb25Db3VudHNbcmVhY3Rpb25dISxcbiAgICAgIDBcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiZXhpc3RpbmdSZWFjdGlvbnMubGVuZ3RoID4gMFwiXG4gIGNsYXNzPVwic3RyLWNoYXRfX3JlYWN0aW9uLWxpc3Qgc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWNvbnRhaW5lclwiXG4gIFtjbGFzcy5zdHItY2hhdF9fcmVhY3Rpb24tbGlzdC0tcmV2ZXJzZV09XCJ0cnVlXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19yZWFjdGlvbi1saXN0LWhpZGRlbl09XCJpc1NlbGVjdG9yT3BlblwiXG4gIGRhdGEtdGVzdGlkPVwicmVhY3Rpb24tbGlzdFwiXG4+XG4gIDx1bCBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9uc1wiPlxuICAgIDxsaVxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvblwiXG4gICAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IHJlYWN0aW9uVHlwZSBvZiBleGlzdGluZ1JlYWN0aW9ucztcbiAgICAgICAgdHJhY2tCeTogdHJhY2tCeU1lc3NhZ2VSZWFjdGlvblxuICAgICAgXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsgY3Vyc29yOiBzaG91bGRIYW5kbGVSZWFjdGlvbkNsaWNrID8gJ3BvaW50ZXInIDogJ2RlZmF1bHQnIH1cIlxuICAgICAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9uLW93bl09XCJpc093blJlYWN0aW9uKHJlYWN0aW9uVHlwZSlcIlxuICAgICAgZGF0YS10ZXN0Y2xhc3M9XCJlbW9qaVwiXG4gICAgICAoY2xpY2spPVwicmVhY3Rpb25TZWxlY3RlZChyZWFjdGlvblR5cGUpXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJyZWFjdGlvblNlbGVjdGVkKHJlYWN0aW9uVHlwZSlcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZW1vamkgc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb24tZW1vamlcIj5cbiAgICAgICAge3sgZ2V0RW1vamlCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZSkgfX0mbmJzcDtcbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGRhdGEtdGVzdGNsYXNzPVwicmVhY3Rpb24tbGlzdC1yZWFjdGlvbi1jb3VudFwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb24tY291bnRcIlxuICAgICAgPlxuICAgICAgICB7eyBtZXNzYWdlUmVhY3Rpb25Db3VudHNbcmVhY3Rpb25UeXBlXSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGk+XG4gICAgPGxpPlxuICAgICAgPHNwYW5cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWFjdGlvbnMtY291bnRcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19yZWFjdGlvbi1saXN0LS1jb3VudGVyXCJcbiAgICAgICAgPnt7IHJlYWN0aW9uc0NvdW50IH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuXG48ZGl2XG4gICNzZWxlY3RvckNvbnRhaW5lclxuICBjbGFzcz1cInN0ci1jaGF0X19yZWFjdGlvbi1zZWxlY3RvciBzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbi1zZWxlY3RvclwiXG4gICpuZ0lmPVwiaXNTZWxlY3Rvck9wZW5cIlxuICBkYXRhLXRlc3RpZD1cInJlYWN0aW9uLXNlbGVjdG9yXCJcbj5cbiAgPGRpdlxuICAgICpuZ0lmPVwidG9vbHRpcFRleHRcIlxuICAgIGRhdGEtdGVzdGlkPVwidG9vbHRpcFwiXG4gICAgI3NlbGVjdG9yVG9vbHRpcFxuICAgIGNsYXNzPVwic3RyLWNoYXRfX3JlYWN0aW9uLXNlbGVjdG9yLXRvb2x0aXBcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGxlZnQ6IHRvb2x0aXBQb3NpdGlvbnM/LnRvb2x0aXAgKyAncHgnLFxuICAgICAgdmlzaWJpbGl0eTogdG9vbHRpcFBvc2l0aW9ucyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXG4gICAgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImFycm93XCJcbiAgICAgIFtuZ1N0eWxlXT1cInsgbGVmdDogdG9vbHRpcFBvc2l0aW9ucz8uYXJyb3cgKyAncHgnIH1cIlxuICAgID48L2Rpdj5cbiAgICA8c3BhbiBjbGFzcz1cImxhdGVzdC11c2VyLXVzZXJuYW1lXCI+XG4gICAgICB7eyB0b29sdGlwVGV4dCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDx1bFxuICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWxpc3Qgc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLW9wdGlvbnNcIlxuICA+XG4gICAgPGxpXG4gICAgICBjbGFzcz1cIlxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtb3B0aW9uXG4gICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9ucy1saXN0LWl0ZW1cbiAgICAgICAgc3RyLWNoYXRfX2Vtb2ppXG4gICAgICBcIlxuICAgICAgKm5nRm9yPVwiXG4gICAgICAgIGxldCByZWFjdGlvblR5cGUgb2YgcmVhY3Rpb25PcHRpb25zO1xuICAgICAgICB0cmFja0J5OiB0cmFja0J5TWVzc2FnZVJlYWN0aW9uXG4gICAgICBcIlxuICAgICAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9ucy1vcHRpb24tc2VsZWN0ZWRdPVwiXG4gICAgICAgIGlzT3duUmVhY3Rpb24ocmVhY3Rpb25UeXBlKVxuICAgICAgXCJcbiAgICAgIGRhdGEtdGVzdGNsYXNzPVwiZW1vamktb3B0aW9uXCJcbiAgICAgIChjbGljayk9XCJyZWFjdChyZWFjdGlvblR5cGUpXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJyZWFjdChyZWFjdGlvblR5cGUpXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiZ2V0TGF0ZXN0VXNlckJ5UmVhY3Rpb24ocmVhY3Rpb25UeXBlKSBhcyB1c2VyXCJcbiAgICAgICAgY2xhc3M9XCJsYXRlc3QtdXNlciBzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtbGFzdC11c2VyXCJcbiAgICAgICAgKGNsaWNrKT1cImhpZGVUb29sdGlwKClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaGlkZVRvb2x0aXAoKVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInNob3dUb29sdGlwKCRldmVudCwgcmVhY3Rpb25UeXBlKVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cImhpZGVUb29sdGlwKClcIlxuICAgICAgICBhdHRyLmRhdGEtdGVzdGlkPVwie3sgcmVhY3Rpb25UeXBlIH19LWxhc3QtdXNlclwiXG4gICAgICA+XG4gICAgICAgIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgICAgICAgYXR0ci5kYXRhLXRlc3RpZD1cInt7IHJlYWN0aW9uVHlwZSB9fS1hdmF0YXJcIlxuICAgICAgICAgIFtpbWFnZVVybF09XCJ1c2VyLmltYWdlXCJcbiAgICAgICAgICBbbmFtZV09XCJ1c2VyLm5hbWUgfHwgdXNlci5pZFwiXG4gICAgICAgICAgW3NpemVdPVwiMjBcIlxuICAgICAgICAgIGxvY2F0aW9uPVwicmVhY3Rpb25cIlxuICAgICAgICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgIGVtb2ppXG4gICAgICAgICAgc3RyLWNoYXRfX2Vtb2ppLXNlbGVjdG9yLWVtb2ppLWFuZ3VsYXJcbiAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbi1lbW9qaVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICB7eyBnZXRFbW9qaUJ5UmVhY3Rpb24ocmVhY3Rpb25UeXBlKSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBtZXNzYWdlUmVhY3Rpb25Db3VudHNbcmVhY3Rpb25UeXBlXSAmJlxuICAgICAgICAgIG1lc3NhZ2VSZWFjdGlvbkNvdW50c1tyZWFjdGlvblR5cGVdISA+IDBcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtbGlzdC1pdGVtX19jb3VudFwiXG4gICAgICAgIGF0dHIuZGF0YS10ZXN0aWQ9XCJ7eyByZWFjdGlvblR5cGUgfX0tcmVhY3Rpb24tY291bnRcIlxuICAgICAgPlxuICAgICAgICB7eyBtZXNzYWdlUmVhY3Rpb25Db3VudHNbcmVhY3Rpb25UeXBlXSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkUmVhY3Rpb25UeXBlXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubW9kYWxUZW1wbGF0ZSQgfCBhc3luYykgfHwgZGVmYXVsdE1vZGFsO1xuICAgICAgY29udGV4dDoge1xuICAgICAgICBpc09wZW46ICEhc2VsZWN0ZWRSZWFjdGlvblR5cGUsXG4gICAgICAgIG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuICAgICAgICByZWFjdGlvblR5cGU6IHNlbGVjdGVkUmVhY3Rpb25UeXBlLFxuICAgICAgICBpc09wZW5DaGFuZ2VIYW5kbGVyOiBpc09wZW5DaGFuZ2UsXG4gICAgICAgIGNvbnRlbnQ6IG1vZGFsQ29udGVudFxuICAgICAgfVxuICAgIFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGVcbiAgI2RlZmF1bHRNb2RhbFxuICBsZXQtaXNPcGVuPVwiaXNPcGVuXCJcbiAgbGV0LW1lc3NhZ2VJZD1cIm1lc3NhZ2VJZFwiXG4gIGxldC1yZWFjdGlvblR5cGU9XCJyZWFjdGlvblR5cGVcIlxuICBsZXQtaXNPcGVuQ2hhbmdlSGFuZGxlcj1cImlzT3BlbkNoYW5nZUhhbmRsZXJcIlxuICBsZXQtY29udGVudD1cImNvbnRlbnRcIlxuPlxuICA8c3RyZWFtLW1vZGFsXG4gICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtZGV0YWlscy1tb2RhbFwiXG4gICAgW2lzT3Blbl09XCJpc09wZW5cIlxuICAgIChpc09wZW5DaGFuZ2UpPVwiaXNPcGVuQ2hhbmdlSGFuZGxlcigkZXZlbnQpXCJcbiAgICBbY29udGVudF09XCJjb250ZW50XCJcbiAgPlxuICA8L3N0cmVhbS1tb2RhbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kYWxDb250ZW50PlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWRldGFpbHNcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWRldGFpbHMtcmVhY3Rpb24tdHlwZXNcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtZGV0YWlscy1yZWFjdGlvbi10eXBlXCJcbiAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgbGV0IHJlYWN0aW9uVHlwZSBvZiBleGlzdGluZ1JlYWN0aW9ucztcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5TWVzc2FnZVJlYWN0aW9uXG4gICAgICAgIFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICBjdXJzb3I6IHNob3VsZEhhbmRsZVJlYWN0aW9uQ2xpY2sgPyAncG9pbnRlcicgOiAnZGVmYXVsdCdcbiAgICAgICAgfVwiXG4gICAgICAgIGF0dHIuZGF0YS10ZXN0aWQ9XCJyZWFjdGlvbi1kZXRhaWxzLXNlbGVjdG9yLXt7IHJlYWN0aW9uVHlwZSB9fVwiXG4gICAgICAgIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtZGV0YWlscy1yZWFjdGlvbi10eXBlLS1zZWxlY3RlZF09XCJcbiAgICAgICAgICByZWFjdGlvblR5cGUgPT09IHNlbGVjdGVkUmVhY3Rpb25UeXBlXG4gICAgICAgIFwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RlZFJlYWN0aW9uVHlwZSA9IHJlYWN0aW9uVHlwZTsgYWxsVXNlcnMuc2Nyb2xsVG9wID0gMFwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJcbiAgICAgICAgICBzZWxlY3RlZFJlYWN0aW9uVHlwZSA9IHJlYWN0aW9uVHlwZTsgYWxsVXNlcnMuc2Nyb2xsVG9wID0gMFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVtb2ppIHN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9uLWVtb2ppXCI+XG4gICAgICAgICAge3sgZ2V0RW1vamlCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZSkgfX0mbmJzcDtcbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9uLWNvdW50XCI+XG4gICAgICAgICAge3sgbWVzc2FnZVJlYWN0aW9uQ291bnRzW3JlYWN0aW9uVHlwZV0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJcbiAgICAgICAgZW1vamlcbiAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb24tZW1vamkgc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb24tZW1vamktYmlnXG4gICAgICBcIlxuICAgID5cbiAgICAgIHt7IGdldEVtb2ppQnlSZWFjdGlvbihzZWxlY3RlZFJlYWN0aW9uVHlwZSEpIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgI2FsbFVzZXJzXG4gICAgICBkYXRhLXRlc3RpZD1cImFsbC1yZWFjdGluZy11c2Vyc1wiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9ucy1kZXRhaWxzLXJlYWN0aW5nLXVzZXJzXCJcbiAgICA+XG4gICAgICA8c3RyZWFtLWxvYWRpbmctaW5kaWNhdG9yXG4gICAgICAgICpuZ0lmPVwiaXNMb2FkaW5nOyBlbHNlIHJlYWN0aW9uc1wiXG4gICAgICA+PC9zdHJlYW0tbG9hZGluZy1pbmRpY2F0b3I+XG4gICAgICA8bmctdGVtcGxhdGUgI3JlYWN0aW9ucz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWRldGFpbHMtcmVhY3RpbmctdXNlclwiXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgdXNlciBvZiBnZXRBbGxVc2Vyc0J5UmVhY3Rpb24oc2VsZWN0ZWRSZWFjdGlvblR5cGUpO1xuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeVVzZXJJZFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlclxuICAgICAgICAgICAgZGF0YS10ZXN0Y2xhc3M9XCJhdmF0YXJcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fYXZhdGFyIHN0ci1jaGF0X19hdmF0YXItLWNpcmNsZVwiXG4gICAgICAgICAgICBbc2l6ZV09XCIzMFwiXG4gICAgICAgICAgICBbaW1hZ2VVcmxdPVwidXNlci5pbWFnZVwiXG4gICAgICAgICAgICBbbmFtZV09XCJ1c2VyLm5hbWVcIlxuICAgICAgICAgICAgdHlwZT1cInVzZXJcIlxuICAgICAgICAgICAgbG9jYXRpb249XCJyZWFjdGlvblwiXG4gICAgICAgICAgICBbdXNlcl09XCJ1c2VyXCJcbiAgICAgICAgICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBkYXRhLXRlc3RjbGFzcz1cInJlYWN0aW9uLXVzZXItdXNlcm5hbWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fdXNlci1pdGVtLS1uYW1lXCJcbiAgICAgICAgICAgID57eyB1c2VyLm5hbWUgfX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* The `MessageReactionsService` provides customization options to message [reactions](https://getstream.io/chat/docs/javascript/send_reaction/?language=javascript).
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
export class MessageReactionsService {
|
|
9
|
-
constructor() {
|
|
10
|
-
/**
|
|
11
|
-
* The enabled [reactions](https://getstream.io/chat/docs/javascript/send_reaction/?language=javascript) and the associated emoji
|
|
12
|
-
*
|
|
13
|
-
* You can provide any string as a reaction. The emoji can be provided as a string, if you want to use custom images for reactions you have to provide a [custom reactions UI](../../services/CustomTemplatesService/#messagereactionstemplate)
|
|
14
|
-
*/
|
|
15
|
-
this.reactions$ = new BehaviorSubject({
|
|
16
|
-
like: '👍',
|
|
17
|
-
angry: '😠',
|
|
18
|
-
love: '❤️',
|
|
19
|
-
haha: '😂',
|
|
20
|
-
wow: '😮',
|
|
21
|
-
sad: '😞',
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Sets the enabled reactions
|
|
26
|
-
*/
|
|
27
|
-
set reactions(reactions) {
|
|
28
|
-
this.reactions$.next(reactions);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Get the currently enabled reactions
|
|
32
|
-
*/
|
|
33
|
-
get reactions() {
|
|
34
|
-
return this.reactions$.getValue();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
MessageReactionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageReactionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
38
|
-
MessageReactionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageReactionsService, providedIn: 'root' });
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageReactionsService, decorators: [{
|
|
40
|
-
type: Injectable,
|
|
41
|
-
args: [{
|
|
42
|
-
providedIn: 'root',
|
|
43
|
-
}]
|
|
44
|
-
}], ctorParameters: function () { return []; } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWFjdGlvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXJlYWN0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdkM7OztHQUdHO0FBSUgsTUFBTSxPQUFPLHVCQUF1QjtJQXFCbEM7UUFwQkE7Ozs7V0FJRztRQUNILGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBMkM7WUFDekUsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFLElBQUk7WUFDVixHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1NBQ1YsQ0FBQyxDQUFDO0lBUVksQ0FBQztJQUVoQjs7T0FFRztJQUNILElBQUksU0FBUyxDQUFDLFNBQW1EO1FBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDOztvSEFuQ1UsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZVJlYWN0aW9uQ2xpY2tEZXRhaWxzLCBNZXNzYWdlUmVhY3Rpb25UeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBUaGUgYE1lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlYCBwcm92aWRlcyBjdXN0b21pemF0aW9uIG9wdGlvbnMgdG8gbWVzc2FnZSBbcmVhY3Rpb25zXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9zZW5kX3JlYWN0aW9uLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAqXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlUmVhY3Rpb25zU2VydmljZSB7XG4gIC8qKlxuICAgKiBUaGUgZW5hYmxlZCBbcmVhY3Rpb25zXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9zZW5kX3JlYWN0aW9uLz9sYW5ndWFnZT1qYXZhc2NyaXB0KSBhbmQgdGhlIGFzc29jaWF0ZWQgZW1vamlcbiAgICpcbiAgICogWW91IGNhbiBwcm92aWRlIGFueSBzdHJpbmcgYXMgYSByZWFjdGlvbi4gVGhlIGVtb2ppIGNhbiBiZSBwcm92aWRlZCBhcyBhIHN0cmluZywgaWYgeW91IHdhbnQgdG8gdXNlIGN1c3RvbSBpbWFnZXMgZm9yIHJlYWN0aW9ucyB5b3UgaGF2ZSB0byBwcm92aWRlIGEgW2N1c3RvbSByZWFjdGlvbnMgVUldKC4uLy4uL3NlcnZpY2VzL0N1c3RvbVRlbXBsYXRlc1NlcnZpY2UvI21lc3NhZ2VyZWFjdGlvbnN0ZW1wbGF0ZSlcbiAgICovXG4gIHJlYWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXTogc3RyaW5nIH0+KHtcbiAgICBsaWtlOiAn8J+RjScsXG4gICAgYW5ncnk6ICfwn5igJyxcbiAgICBsb3ZlOiAn4p2k77iPJyxcbiAgICBoYWhhOiAn8J+YgicsXG4gICAgd293OiAn8J+YricsXG4gICAgc2FkOiAn8J+YnicsXG4gIH0pO1xuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgW2BNZXNzYWdlUmVhY3Rpb25zQ29tcG9uZW50YF0oLi4vLi4vY29tcG9uZW50cy9NZXNzYWdlUmVhY3Rpb25zQ29tcG9uZW50KSB3aWxsIGRpc3BsYXkgdGhlIHJlYWN0aW5nIHVzZXJzIHdoZW4gYSByZWFjdGlvbiBpcyBjbGlja2VkLiBZb3UgY2FuIG92ZXJyaWRlIHRoaXMgd2l0aCB5b3VyIG93biBVSSBieSBwcm92aWRpbmcgYSBjdXN0b20gZXZlbnQgaGFuZGxlci5cbiAgICpcbiAgICogVGhlIGV2ZW50IGhhbmRsZXIgY2FuIHJldHJpZXZlIGFsbCByZWFjdGlvbnMgb2YgYSBtZXNzYWdlIGluc2lkZSB0aGUgYWN0aXZlIGNoYW5uZWwgdXNpbmcgdGhlIFtgY2hhbm5lbFNlcnZpY2UuZ2V0TWVzc2FnZVJlYWN0aW9uc2AgbWV0aG9kXSguLi8uLi9zZXJ2aWNlcy9DaGFubmVsU2VydmljZS8jZ2V0bWVzc2FnZXJlYWN0aW9ucylcbiAgICovXG4gIGN1c3RvbVJlYWN0aW9uQ2xpY2tIYW5kbGVyPzogKGRldGFpbHM6IE1lc3NhZ2VSZWFjdGlvbkNsaWNrRGV0YWlscykgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVuYWJsZWQgcmVhY3Rpb25zXG4gICAqL1xuICBzZXQgcmVhY3Rpb25zKHJlYWN0aW9uczogeyBba2V5IGluIE1lc3NhZ2VSZWFjdGlvblR5cGVdOiBzdHJpbmcgfSkge1xuICAgIHRoaXMucmVhY3Rpb25zJC5uZXh0KHJlYWN0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50bHkgZW5hYmxlZCByZWFjdGlvbnNcbiAgICovXG4gIGdldCByZWFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVhY3Rpb25zJC5nZXRWYWx1ZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../icon-placeholder/icon-placeholder.component";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
/**
|
|
6
|
-
* The `Modal` component displays its content in an overlay. The modal can be closed with a close button, if the user clicks outside of the modal content, or if the escape button is pressed. The modal can also be closed from outside.
|
|
7
|
-
*/
|
|
8
|
-
export class ModalComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
/**
|
|
11
|
-
* If `true` the modal will be displayed, if `false` the modal will be hidden
|
|
12
|
-
*/
|
|
13
|
-
this.isOpen = false;
|
|
14
|
-
/**
|
|
15
|
-
* Emits `true` if the modal becomes visible, and `false` if the modal is closed.
|
|
16
|
-
*/
|
|
17
|
-
this.isOpenChange = new EventEmitter();
|
|
18
|
-
this.watchForEscPress = (event) => {
|
|
19
|
-
if (event.key === 'Escape') {
|
|
20
|
-
this.close();
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
this.stopWatchForEscPress = () => {
|
|
24
|
-
window.removeEventListener('keyup', this.watchForEscPress);
|
|
25
|
-
};
|
|
26
|
-
this.watchForOutsideClicks = (event) => {
|
|
27
|
-
var _a;
|
|
28
|
-
if (!((_a = this.innerContainer) === null || _a === void 0 ? void 0 : _a.nativeElement.contains(event.target))) {
|
|
29
|
-
this.close();
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
ngOnChanges(changes) {
|
|
34
|
-
if (changes.isOpen) {
|
|
35
|
-
if (this.isOpen) {
|
|
36
|
-
window.addEventListener('keyup', this.watchForEscPress);
|
|
37
|
-
setTimeout(() => window.addEventListener('click', this.watchForOutsideClicks), 0);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
this.stopWatchForOutsideClicks();
|
|
41
|
-
this.stopWatchForEscPress();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
close() {
|
|
46
|
-
this.isOpen = false;
|
|
47
|
-
this.isOpenChange.emit(false);
|
|
48
|
-
this.stopWatchForOutsideClicks();
|
|
49
|
-
this.stopWatchForEscPress();
|
|
50
|
-
}
|
|
51
|
-
stopWatchForOutsideClicks() {
|
|
52
|
-
window.removeEventListener('click', this.watchForOutsideClicks);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
-
ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ModalComponent, selector: "stream-modal", inputs: { isOpen: "isOpen", content: "content" }, outputs: { isOpenChange: "isOpenChange" }, viewQueries: [{ propertyName: "innerContainer", first: true, predicate: ["modalInner"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n data-testid=\"modal\"\n class=\"str-chat__modal str-chat__modal--{{ isOpen ? 'open' : 'close' }}\"\n>\n <div\n data-testid=\"close\"\n class=\"str-chat__modal__close-button\"\n (click)=\"close()\"\n (keyup.enter)=\"close()\"\n >\n <stream-icon-placeholder icon=\"close\"></stream-icon-placeholder>\n </div>\n <div class=\"str-chat__modal__inner\" #modalInner>\n <ng-container *ngIf=\"content; else elseContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #elseContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", components: [{ type: i1.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon", "size"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ModalComponent, decorators: [{
|
|
58
|
-
type: Component,
|
|
59
|
-
args: [{
|
|
60
|
-
selector: 'stream-modal',
|
|
61
|
-
templateUrl: './modal.component.html',
|
|
62
|
-
styles: [],
|
|
63
|
-
}]
|
|
64
|
-
}], ctorParameters: function () { return []; }, propDecorators: { isOpen: [{
|
|
65
|
-
type: Input
|
|
66
|
-
}], content: [{
|
|
67
|
-
type: Input
|
|
68
|
-
}], isOpenChange: [{
|
|
69
|
-
type: Output
|
|
70
|
-
}], innerContainer: [{
|
|
71
|
-
type: ViewChild,
|
|
72
|
-
args: ['modalInner']
|
|
73
|
-
}] } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21vZGFsL21vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tb2RhbC9tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7OztBQUV2Qjs7R0FFRztBQU1ILE1BQU0sT0FBTyxjQUFjO0lBaUJ6QjtRQWhCQTs7V0FFRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFLeEI7O1dBRUc7UUFDZ0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBNkJ0RCxxQkFBZ0IsR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUNsRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO2dCQUMxQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQztRQUVNLHlCQUFvQixHQUFHLEdBQUcsRUFBRTtZQUNsQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQztRQUVNLDBCQUFxQixHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7O1lBQy9DLElBQUksQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLGNBQWMsMENBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDLENBQUEsRUFBRTtnQkFDdEUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUM7SUF0Q2EsQ0FBQztJQUVoQixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZixNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN4RCxVQUFVLENBQ1IsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsRUFDbEUsQ0FBQyxDQUNGLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDN0I7U0FDRjtJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQWtCTyx5QkFBeUI7UUFDL0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNsRSxDQUFDOzsyR0EzRFUsY0FBYzsrRkFBZCxjQUFjLG9SQ3BCM0IsOG5CQXFCQTsyRkREYSxjQUFjO2tCQUwxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixXQUFXLEVBQUUsd0JBQXdCO29CQUNyQyxNQUFNLEVBQUUsRUFBRTtpQkFDWDswRUFLVSxNQUFNO3NCQUFkLEtBQUs7Z0JBSUcsT0FBTztzQkFBZixLQUFLO2dCQUlhLFlBQVk7c0JBQTlCLE1BQU07Z0JBQzBCLGNBQWM7c0JBQTlDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFRoZSBgTW9kYWxgIGNvbXBvbmVudCBkaXNwbGF5cyBpdHMgY29udGVudCBpbiBhbiBvdmVybGF5LiBUaGUgbW9kYWwgY2FuIGJlIGNsb3NlZCB3aXRoIGEgY2xvc2UgYnV0dG9uLCBpZiB0aGUgdXNlciBjbGlja3Mgb3V0c2lkZSBvZiB0aGUgbW9kYWwgY29udGVudCwgb3IgaWYgdGhlIGVzY2FwZSBidXR0b24gaXMgcHJlc3NlZC4gVGhlIG1vZGFsIGNhbiBhbHNvIGJlIGNsb3NlZCBmcm9tIG91dHNpZGUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCB0aGUgbW9kYWwgd2lsbCBiZSBkaXNwbGF5ZWQsIGlmIGBmYWxzZWAgdGhlIG1vZGFsIHdpbGwgYmUgaGlkZGVuXG4gICAqL1xuICBASW5wdXQoKSBpc09wZW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBtb2RhbCAgKGNhbiBhbHNvIGJlIHByb3ZpZGVkIHVzaW5nIGBuZy1jb250ZW50YClcbiAgICovXG4gIEBJbnB1dCgpIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPHZvaWQ+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogRW1pdHMgYHRydWVgIGlmIHRoZSBtb2RhbCBiZWNvbWVzIHZpc2libGUsIGFuZCBgZmFsc2VgIGlmIHRoZSBtb2RhbCBpcyBjbG9zZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgaXNPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAVmlld0NoaWxkKCdtb2RhbElubmVyJykgcHJpdmF0ZSBpbm5lckNvbnRhaW5lcjpcbiAgICB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5pc09wZW4pIHtcbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLndhdGNoRm9yRXNjUHJlc3MpO1xuICAgICAgICBzZXRUaW1lb3V0KFxuICAgICAgICAgICgpID0+IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMud2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKSxcbiAgICAgICAgICAwXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0b3BXYXRjaEZvck91dHNpZGVDbGlja3MoKTtcbiAgICAgICAgdGhpcy5zdG9wV2F0Y2hGb3JFc2NQcmVzcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5zdG9wV2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKCk7XG4gICAgdGhpcy5zdG9wV2F0Y2hGb3JFc2NQcmVzcygpO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaEZvckVzY1ByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzdG9wV2F0Y2hGb3JFc2NQcmVzcyA9ICgpID0+IHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLndhdGNoRm9yRXNjUHJlc3MpO1xuICB9O1xuXG4gIHByaXZhdGUgd2F0Y2hGb3JPdXRzaWRlQ2xpY2tzID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmICghdGhpcy5pbm5lckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzdG9wV2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMud2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKTtcbiAgfVxufVxuIiwiPGRpdlxuICBkYXRhLXRlc3RpZD1cIm1vZGFsXCJcbiAgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWwgc3RyLWNoYXRfX21vZGFsLS17eyBpc09wZW4gPyAnb3BlbicgOiAnY2xvc2UnIH19XCJcbj5cbiAgPGRpdlxuICAgIGRhdGEtdGVzdGlkPVwiY2xvc2VcIlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19jbG9zZS1idXR0b25cIlxuICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwiY2xvc2UoKVwiXG4gID5cbiAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXIgaWNvbj1cImNsb3NlXCI+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWxfX2lubmVyXCIgI21vZGFsSW5uZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ7IGVsc2UgZWxzZUNvbnRlbnRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNlbHNlQ29udGVudD5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
/**
|
|
5
|
-
* The `Notification` component displays a notification within the [`NotificationList`](./NotificationListComponent.mdx)
|
|
6
|
-
*/
|
|
7
|
-
export class NotificationComponent {
|
|
8
|
-
constructor() { }
|
|
9
|
-
}
|
|
10
|
-
NotificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
-
NotificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: NotificationComponent, selector: "stream-notification", inputs: { type: "type", content: "content" }, ngImport: i0, template: "<div\n class=\"str-chat__custom-notification notification-{{\n type\n }} str-chat__notification\"\n data-testid=\"custom-notification\"\n>\n <ng-container *ngIf=\"content; else elseContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #elseContent>\n <ng-content></ng-content>\n </ng-template>\n</div>\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NotificationComponent, decorators: [{
|
|
13
|
-
type: Component,
|
|
14
|
-
args: [{
|
|
15
|
-
selector: 'stream-notification',
|
|
16
|
-
templateUrl: './notification.component.html',
|
|
17
|
-
styles: [],
|
|
18
|
-
}]
|
|
19
|
-
}], ctorParameters: function () { return []; }, propDecorators: { type: [{
|
|
20
|
-
type: Input
|
|
21
|
-
}], content: [{
|
|
22
|
-
type: Input
|
|
23
|
-
}] } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDOzs7QUFHOUQ7O0dBRUc7QUFNSCxNQUFNLE9BQU8scUJBQXFCO0lBVWhDLGdCQUFlLENBQUM7O2tIQVZMLHFCQUFxQjtzR0FBckIscUJBQXFCLHlHQ1hsQyxxWEFhQTsyRkRGYSxxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLCtCQUErQjtvQkFDNUMsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7MEVBS1UsSUFBSTtzQkFBWixLQUFLO2dCQUlHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25UeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIFRoZSBgTm90aWZpY2F0aW9uYCBjb21wb25lbnQgZGlzcGxheXMgYSBub3RpZmljYXRpb24gd2l0aGluIHRoZSBbYE5vdGlmaWNhdGlvbkxpc3RgXSguL05vdGlmaWNhdGlvbkxpc3RDb21wb25lbnQubWR4KVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbm90aWZpY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgbm90aWZpY2F0aW9uXG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBOb3RpZmljYXRpb25UeXBlIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIG5vdGlmaWNhdGlvbiAoY2FuIGFsc28gYmUgcHJvdmlkZWQgdXNpbmcgYG5nLWNvbnRlbnRgKVxuICAgKi9cbiAgQElucHV0KCkgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInN0ci1jaGF0X19jdXN0b20tbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbi17e1xuICAgIHR5cGVcbiAgfX0gc3RyLWNoYXRfX25vdGlmaWNhdGlvblwiXG4gIGRhdGEtdGVzdGlkPVwiY3VzdG9tLW5vdGlmaWNhdGlvblwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50OyBlbHNlIGVsc2VDb250ZW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZWxzZUNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../custom-templates.service";
|
|
4
|
-
import * as i2 from "../notification.service";
|
|
5
|
-
import * as i3 from "../theme.service";
|
|
6
|
-
import * as i4 from "../notification/notification.component";
|
|
7
|
-
import * as i5 from "@angular/common";
|
|
8
|
-
import * as i6 from "@ngx-translate/core";
|
|
9
|
-
/**
|
|
10
|
-
* The `NotificationList` component displays the list of active notifications.
|
|
11
|
-
*/
|
|
12
|
-
export class NotificationListComponent {
|
|
13
|
-
constructor(customTemplatesService, notificationService, themeService) {
|
|
14
|
-
this.customTemplatesService = customTemplatesService;
|
|
15
|
-
this.notificationService = notificationService;
|
|
16
|
-
this.themeService = themeService;
|
|
17
|
-
this.notifications$ = this.notificationService.notifications$;
|
|
18
|
-
this.theme$ = this.themeService.theme$;
|
|
19
|
-
this.themeVersion = this.themeService.themeVersion;
|
|
20
|
-
}
|
|
21
|
-
trackById(_, item) {
|
|
22
|
-
return item.id;
|
|
23
|
-
}
|
|
24
|
-
getNotificationContentContext(notification) {
|
|
25
|
-
return Object.assign(Object.assign({}, notification.templateContext), { dismissFn: notification.dismissFn });
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
NotificationListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NotificationListComponent, deps: [{ token: i1.CustomTemplatesService }, { token: i2.NotificationService }, { token: i3.ThemeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
-
NotificationListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: NotificationListComponent, selector: "stream-notification-list", ngImport: i0, template: "<div\n class=\"str-chat__theme-{{ theme$ | async }} str-chat__list-notifications\"\n [class.str-chat]=\"themeVersion === '2'\"\n data-testid=\"notification-list\"\n>\n <ng-container\n *ngFor=\"let notification of notifications$ | async; trackBy: trackById\"\n >\n <ng-template #notificationContent>\n <div\n *ngIf=\"notification.text !== undefined\"\n data-testclass=\"notification-content\"\n >\n {{ notification.text | translate: notification.translateParams }}\n </div>\n <ng-container *ngIf=\"notification.template !== undefined\">\n <ng-container\n *ngTemplateOutlet=\"\n notification.template;\n context: getNotificationContentContext(notification)\n \"\n ></ng-container>\n </ng-container>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.notificationTemplate$ | async) ||\n defaultNotification;\n context: { type: notification.type, content: notificationContent }\n \"\n ></ng-container>\n </ng-container>\n</div>\n\n<ng-template #defaultNotification let-type=\"type\" let-content=\"content\">\n <stream-notification [type]=\"type\" [content]=\"content\"></stream-notification>\n</ng-template>\n", components: [{ type: i4.NotificationComponent, selector: "stream-notification", inputs: ["type", "content"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i5.AsyncPipe, "translate": i6.TranslatePipe } });
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NotificationListComponent, decorators: [{
|
|
31
|
-
type: Component,
|
|
32
|
-
args: [{
|
|
33
|
-
selector: 'stream-notification-list',
|
|
34
|
-
templateUrl: './notification-list.component.html',
|
|
35
|
-
styles: [],
|
|
36
|
-
}]
|
|
37
|
-
}], ctorParameters: function () { return [{ type: i1.CustomTemplatesService }, { type: i2.NotificationService }, { type: i3.ThemeService }]; } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL25vdGlmaWNhdGlvbi1saXN0L25vdGlmaWNhdGlvbi1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9ub3RpZmljYXRpb24tbGlzdC9ub3RpZmljYXRpb24tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQU8xQzs7R0FFRztBQU1ILE1BQU0sT0FBTyx5QkFBeUI7SUFLcEMsWUFDa0Isc0JBQThDLEVBQ3RELG1CQUF3QyxFQUN4QyxZQUEwQjtRQUZsQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ3RELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFFbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDO1FBQzlELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztJQUNyRCxDQUFDO0lBRUQsU0FBUyxDQUFDLENBQVMsRUFBRSxJQUF5QjtRQUM1QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELDZCQUE2QixDQUFDLFlBQWlDO1FBQzdELHVDQUNLLFlBQVksQ0FBQyxlQUFlLEtBQy9CLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUyxJQUNqQztJQUNKLENBQUM7O3NIQXhCVSx5QkFBeUI7MEdBQXpCLHlCQUF5QixnRUNmdEMsNndDQXFDQTsyRkR0QmEseUJBQXlCO2tCQUxyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFdBQVcsRUFBRSxvQ0FBb0M7b0JBQ2pELE1BQU0sRUFBRSxFQUFFO2lCQUNYIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi90aGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblBheWxvYWQgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogVGhlIGBOb3RpZmljYXRpb25MaXN0YCBjb21wb25lbnQgZGlzcGxheXMgdGhlIGxpc3Qgb2YgYWN0aXZlIG5vdGlmaWNhdGlvbnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1ub3RpZmljYXRpb24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb24tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkxpc3RDb21wb25lbnQge1xuICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25QYXlsb2FkW10+O1xuICB0aGVtZVZlcnNpb246ICcxJyB8ICcyJztcbiAgdGhlbWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGN1c3RvbVRlbXBsYXRlc1NlcnZpY2U6IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zJCA9IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25zJDtcbiAgICB0aGlzLnRoZW1lJCA9IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lJDtcbiAgICB0aGlzLnRoZW1lVmVyc2lvbiA9IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lVmVyc2lvbjtcbiAgfVxuXG4gIHRyYWNrQnlJZChfOiBudW1iZXIsIGl0ZW06IE5vdGlmaWNhdGlvblBheWxvYWQpIHtcbiAgICByZXR1cm4gaXRlbS5pZDtcbiAgfVxuXG4gIGdldE5vdGlmaWNhdGlvbkNvbnRlbnRDb250ZXh0KG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uUGF5bG9hZCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5ub3RpZmljYXRpb24udGVtcGxhdGVDb250ZXh0LFxuICAgICAgZGlzbWlzc0ZuOiBub3RpZmljYXRpb24uZGlzbWlzc0ZuLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzdHItY2hhdF9fdGhlbWUte3sgdGhlbWUkIHwgYXN5bmMgfX0gc3RyLWNoYXRfX2xpc3Qtbm90aWZpY2F0aW9uc1wiXG4gIFtjbGFzcy5zdHItY2hhdF09XCJ0aGVtZVZlcnNpb24gPT09ICcyJ1wiXG4gIGRhdGEtdGVzdGlkPVwibm90aWZpY2F0aW9uLWxpc3RcIlxuPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nRm9yPVwibGV0IG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25zJCB8IGFzeW5jOyB0cmFja0J5OiB0cmFja0J5SWRcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlICNub3RpZmljYXRpb25Db250ZW50PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIm5vdGlmaWNhdGlvbi50ZXh0ICE9PSB1bmRlZmluZWRcIlxuICAgICAgICBkYXRhLXRlc3RjbGFzcz1cIm5vdGlmaWNhdGlvbi1jb250ZW50XCJcbiAgICAgID5cbiAgICAgICAge3sgbm90aWZpY2F0aW9uLnRleHQgfCB0cmFuc2xhdGU6IG5vdGlmaWNhdGlvbi50cmFuc2xhdGVQYXJhbXMgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vdGlmaWNhdGlvbi50ZW1wbGF0ZSAhPT0gdW5kZWZpbmVkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgbm90aWZpY2F0aW9uLnRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogZ2V0Tm90aWZpY2F0aW9uQ29udGVudENvbnRleHQobm90aWZpY2F0aW9uKVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2Uubm90aWZpY2F0aW9uVGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgZGVmYXVsdE5vdGlmaWNhdGlvbjtcbiAgICAgICAgY29udGV4dDogeyB0eXBlOiBub3RpZmljYXRpb24udHlwZSwgY29udGVudDogbm90aWZpY2F0aW9uQ29udGVudCB9XG4gICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm90aWZpY2F0aW9uIGxldC10eXBlPVwidHlwZVwiIGxldC1jb250ZW50PVwiY29udGVudFwiPlxuICA8c3RyZWFtLW5vdGlmaWNhdGlvbiBbdHlwZV09XCJ0eXBlXCIgW2NvbnRlbnRdPVwiY29udGVudFwiPjwvc3RyZWFtLW5vdGlmaWNhdGlvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|