@kesha-antonov/react-native-chat 5.0.0 → 6.0.0
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/README.md +533 -179
- package/lib/Actions.d.ts.map +1 -1
- package/lib/Actions.js +121 -42
- package/lib/Actions.js.map +1 -1
- package/lib/Avatar.d.ts.map +1 -1
- package/lib/Avatar.js +171 -86
- package/lib/Avatar.js.map +1 -1
- package/lib/Bubble/BubbleBody.d.ts +15 -0
- package/lib/Bubble/BubbleBody.d.ts.map +1 -0
- package/lib/Bubble/BubbleBody.js +218 -0
- package/lib/Bubble/BubbleBody.js.map +1 -0
- package/lib/Bubble/BubbleContent.d.ts +23 -0
- package/lib/Bubble/BubbleContent.d.ts.map +1 -0
- package/lib/Bubble/BubbleContent.js +446 -0
- package/lib/Bubble/BubbleContent.js.map +1 -0
- package/lib/Bubble/BubbleMenu.d.ts +45 -0
- package/lib/Bubble/BubbleMenu.d.ts.map +1 -0
- package/lib/Bubble/BubbleMenu.js +289 -0
- package/lib/Bubble/BubbleMenu.js.map +1 -0
- package/lib/Bubble/BubbleMeta.d.ts +17 -0
- package/lib/Bubble/BubbleMeta.d.ts.map +1 -0
- package/lib/Bubble/BubbleMeta.js +453 -0
- package/lib/Bubble/BubbleMeta.js.map +1 -0
- package/lib/Bubble/LiftedBubble.d.ts +18 -0
- package/lib/Bubble/LiftedBubble.d.ts.map +1 -0
- package/lib/Bubble/LiftedBubble.js +109 -0
- package/lib/Bubble/LiftedBubble.js.map +1 -0
- package/lib/Bubble/PressableBubbleRow.d.ts +33 -0
- package/lib/Bubble/PressableBubbleRow.d.ts.map +1 -0
- package/lib/Bubble/PressableBubbleRow.js +172 -0
- package/lib/Bubble/PressableBubbleRow.js.map +1 -0
- package/lib/Bubble/index.d.ts +6 -0
- package/lib/Bubble/index.d.ts.map +1 -1
- package/lib/Bubble/index.js +380 -494
- package/lib/Bubble/index.js.map +1 -1
- package/lib/Bubble/layout.d.ts +47 -0
- package/lib/Bubble/layout.d.ts.map +1 -0
- package/lib/Bubble/layout.js +258 -0
- package/lib/Bubble/layout.js.map +1 -0
- package/lib/Bubble/styles.d.ts +108 -16
- package/lib/Bubble/styles.d.ts.map +1 -1
- package/lib/Bubble/styles.js +227 -107
- package/lib/Bubble/styles.js.map +1 -1
- package/lib/Bubble/types.d.ts +19 -3
- package/lib/Bubble/types.d.ts.map +1 -1
- package/lib/Bubble/types.js.map +1 -1
- package/lib/Chat/Chat.d.ts +5 -0
- package/lib/Chat/Chat.d.ts.map +1 -0
- package/lib/Chat/Chat.js +464 -0
- package/lib/Chat/Chat.js.map +1 -0
- package/lib/Chat/ChatBackground.d.ts +16 -0
- package/lib/Chat/ChatBackground.d.ts.map +1 -0
- package/lib/Chat/ChatBackground.js +43 -0
- package/lib/Chat/ChatBackground.js.map +1 -0
- package/lib/Chat/ChatKeyboardAvoidingView.js +19 -4
- package/lib/Chat/ChatKeyboardAvoidingView.js.map +1 -1
- package/lib/Chat/ChatMessageList.d.ts +27 -0
- package/lib/Chat/ChatMessageList.d.ts.map +1 -0
- package/lib/Chat/ChatMessageList.js +220 -0
- package/lib/Chat/ChatMessageList.js.map +1 -0
- package/lib/Chat/ChatProviders.d.ts +18 -0
- package/lib/Chat/ChatProviders.d.ts.map +1 -0
- package/lib/Chat/ChatProviders.js +87 -0
- package/lib/Chat/ChatProviders.js.map +1 -0
- package/lib/Chat/ChatSafeAreaProvider.d.ts +35 -0
- package/lib/Chat/ChatSafeAreaProvider.d.ts.map +1 -0
- package/lib/Chat/ChatSafeAreaProvider.js +123 -0
- package/lib/Chat/ChatSafeAreaProvider.js.map +1 -0
- package/lib/Chat/ChatSelectionBar.d.ts +20 -0
- package/lib/Chat/ChatSelectionBar.d.ts.map +1 -0
- package/lib/Chat/ChatSelectionBar.js +141 -0
- package/lib/Chat/ChatSelectionBar.js.map +1 -0
- package/lib/Chat/ChatWrapper.d.ts +11 -0
- package/lib/Chat/ChatWrapper.d.ts.map +1 -0
- package/lib/Chat/ChatWrapper.js +98 -0
- package/lib/Chat/ChatWrapper.js.map +1 -0
- package/lib/Chat/ComposerHost.d.ts +20 -0
- package/lib/Chat/ComposerHost.d.ts.map +1 -0
- package/lib/Chat/ComposerHost.js +118 -0
- package/lib/Chat/ComposerHost.js.map +1 -0
- package/lib/Chat/index.d.ts +1 -8
- package/lib/Chat/index.d.ts.map +1 -1
- package/lib/Chat/index.js +1 -337
- package/lib/Chat/index.js.map +1 -1
- package/lib/Chat/styles.d.ts +14 -2
- package/lib/Chat/styles.d.ts.map +1 -1
- package/lib/Chat/styles.js +19 -9
- package/lib/Chat/styles.js.map +1 -1
- package/lib/Chat/types.d.ts +145 -11
- package/lib/Chat/types.d.ts.map +1 -1
- package/lib/Chat/types.js.map +1 -1
- package/lib/Chat/useChatContextValue.d.ts +19 -0
- package/lib/Chat/useChatContextValue.d.ts.map +1 -0
- package/lib/Chat/useChatContextValue.js +158 -0
- package/lib/Chat/useChatContextValue.js.map +1 -0
- package/lib/Chat/useChatMedia.d.ts +22 -0
- package/lib/Chat/useChatMedia.d.ts.map +1 -0
- package/lib/Chat/useChatMedia.js +127 -0
- package/lib/Chat/useChatMedia.js.map +1 -0
- package/lib/Chat/useChatSelection.d.ts +15 -0
- package/lib/Chat/useChatSelection.d.ts.map +1 -0
- package/lib/Chat/useChatSelection.js +106 -0
- package/lib/Chat/useChatSelection.js.map +1 -0
- package/lib/Chat/useComposerHandlers.d.ts +34 -0
- package/lib/Chat/useComposerHandlers.d.ts.map +1 -0
- package/lib/Chat/useComposerHandlers.js +330 -0
- package/lib/Chat/useComposerHandlers.js.map +1 -0
- package/lib/Chat/useComposerState.d.ts +27 -0
- package/lib/Chat/useComposerState.d.ts.map +1 -0
- package/lib/Chat/useComposerState.js +272 -0
- package/lib/Chat/useComposerState.js.map +1 -0
- package/lib/Chat/useInitialLayout.d.ts +19 -0
- package/lib/Chat/useInitialLayout.d.ts.map +1 -0
- package/lib/Chat/useInitialLayout.js +70 -0
- package/lib/Chat/useInitialLayout.js.map +1 -0
- package/lib/Chat/useMessageActions.d.ts +37 -0
- package/lib/Chat/useMessageActions.d.ts.map +1 -0
- package/lib/Chat/useMessageActions.js +323 -0
- package/lib/Chat/useMessageActions.js.map +1 -0
- package/lib/Chat/useMessageNavigation.d.ts +21 -0
- package/lib/Chat/useMessageNavigation.d.ts.map +1 -0
- package/lib/Chat/useMessageNavigation.js +149 -0
- package/lib/Chat/useMessageNavigation.js.map +1 -0
- package/lib/Chat/useOptionalPeerHints.d.ts +6 -0
- package/lib/Chat/useOptionalPeerHints.d.ts.map +1 -0
- package/lib/Chat/useOptionalPeerHints.js +63 -0
- package/lib/Chat/useOptionalPeerHints.js.map +1 -0
- package/lib/Chat/useResolvedReactions.d.ts +31 -0
- package/lib/Chat/useResolvedReactions.d.ts.map +1 -0
- package/lib/Chat/useResolvedReactions.js +95 -0
- package/lib/Chat/useResolvedReactions.js.map +1 -0
- package/lib/ChatAvatar.d.ts.map +1 -1
- package/lib/ChatAvatar.js +229 -84
- package/lib/ChatAvatar.js.map +1 -1
- package/lib/ChatContext.js +20 -10
- package/lib/ChatContext.js.map +1 -1
- package/lib/ChatList/ChatListAvatar.d.ts +21 -0
- package/lib/ChatList/ChatListAvatar.d.ts.map +1 -0
- package/lib/ChatList/ChatListAvatar.js +178 -0
- package/lib/ChatList/ChatListAvatar.js.map +1 -0
- package/lib/ChatList/ChatListCell.d.ts +16 -0
- package/lib/ChatList/ChatListCell.d.ts.map +1 -0
- package/lib/ChatList/ChatListCell.js +506 -0
- package/lib/ChatList/ChatListCell.js.map +1 -0
- package/lib/ChatList/ChatListShimmer.d.ts +3 -0
- package/lib/ChatList/ChatListShimmer.d.ts.map +1 -0
- package/lib/ChatList/ChatListShimmer.js +235 -0
- package/lib/ChatList/ChatListShimmer.js.map +1 -0
- package/lib/ChatList/index.d.ts +16 -0
- package/lib/ChatList/index.d.ts.map +1 -0
- package/lib/ChatList/index.js +1301 -0
- package/lib/ChatList/index.js.map +1 -0
- package/lib/ChatList/types.d.ts +128 -0
- package/lib/ChatList/types.d.ts.map +1 -0
- package/lib/ChatList/types.js +2 -0
- package/lib/ChatList/types.js.map +1 -0
- package/lib/ChatList/useChatList.d.ts +30 -0
- package/lib/ChatList/useChatList.d.ts.map +1 -0
- package/lib/ChatList/useChatList.js +211 -0
- package/lib/ChatList/useChatList.js.map +1 -0
- package/lib/ChatList/utils.d.ts +28 -0
- package/lib/ChatList/utils.d.ts.map +1 -0
- package/lib/ChatList/utils.js +60 -0
- package/lib/ChatList/utils.js.map +1 -0
- package/lib/Color.js +19 -19
- package/lib/Color.js.map +1 -1
- package/lib/Composer.d.ts.map +1 -1
- package/lib/Composer.js +148 -70
- package/lib/Composer.js.map +1 -1
- package/lib/Constant.js +4 -4
- package/lib/Constant.js.map +1 -1
- package/lib/Day/index.d.ts.map +1 -1
- package/lib/Day/index.js +115 -28
- package/lib/Day/index.js.map +1 -1
- package/lib/Day/styles.d.ts +3 -3
- package/lib/Day/styles.d.ts.map +1 -1
- package/lib/Day/styles.js +20 -17
- package/lib/Day/styles.js.map +1 -1
- package/lib/Day/types.js.map +1 -1
- package/lib/Icons.d.ts +1 -1
- package/lib/Icons.d.ts.map +1 -1
- package/lib/Icons.js.map +1 -1
- package/lib/InputToolbar/FieldGroup.d.ts +28 -0
- package/lib/InputToolbar/FieldGroup.d.ts.map +1 -0
- package/lib/InputToolbar/FieldGroup.js +143 -0
- package/lib/InputToolbar/FieldGroup.js.map +1 -0
- package/lib/InputToolbar/TakePreviewBar.d.ts +17 -0
- package/lib/InputToolbar/TakePreviewBar.d.ts.map +1 -0
- package/lib/InputToolbar/TakePreviewBar.js +126 -0
- package/lib/InputToolbar/TakePreviewBar.js.map +1 -0
- package/lib/InputToolbar/animations.d.ts +105 -0
- package/lib/InputToolbar/animations.d.ts.map +1 -0
- package/lib/InputToolbar/animations.js +238 -0
- package/lib/InputToolbar/animations.js.map +1 -0
- package/lib/InputToolbar/fragments.d.ts +13 -0
- package/lib/InputToolbar/fragments.d.ts.map +1 -0
- package/lib/InputToolbar/fragments.js +207 -0
- package/lib/InputToolbar/fragments.js.map +1 -0
- package/lib/InputToolbar/index.d.ts +7 -0
- package/lib/InputToolbar/index.d.ts.map +1 -0
- package/lib/InputToolbar/index.js +444 -0
- package/lib/InputToolbar/index.js.map +1 -0
- package/lib/InputToolbar/recordingOptions.d.ts +14 -0
- package/lib/InputToolbar/recordingOptions.d.ts.map +1 -0
- package/lib/InputToolbar/recordingOptions.js +38 -0
- package/lib/InputToolbar/recordingOptions.js.map +1 -0
- package/lib/InputToolbar/styles.d.ts +118 -0
- package/lib/InputToolbar/styles.d.ts.map +1 -0
- package/lib/InputToolbar/styles.js +139 -0
- package/lib/InputToolbar/styles.js.map +1 -0
- package/lib/InputToolbar/types.d.ts +77 -0
- package/lib/InputToolbar/types.d.ts.map +1 -0
- package/lib/InputToolbar/types.js +2 -0
- package/lib/InputToolbar/types.js.map +1 -0
- package/lib/InputToolbar/useActionsFragment.d.ts +6 -0
- package/lib/InputToolbar/useActionsFragment.d.ts.map +1 -0
- package/lib/InputToolbar/useActionsFragment.js +139 -0
- package/lib/InputToolbar/useActionsFragment.js.map +1 -0
- package/lib/InputToolbar/useComposerEditing.d.ts +11 -0
- package/lib/InputToolbar/useComposerEditing.d.ts.map +1 -0
- package/lib/InputToolbar/useComposerEditing.js +116 -0
- package/lib/InputToolbar/useComposerEditing.js.map +1 -0
- package/lib/InputToolbar/useEmojiButton.d.ts +14 -0
- package/lib/InputToolbar/useEmojiButton.d.ts.map +1 -0
- package/lib/InputToolbar/useEmojiButton.js +120 -0
- package/lib/InputToolbar/useEmojiButton.js.map +1 -0
- package/lib/InputToolbar/useKeyboardInset.d.ts +9 -0
- package/lib/InputToolbar/useKeyboardInset.d.ts.map +1 -0
- package/lib/InputToolbar/useKeyboardInset.js +25 -0
- package/lib/InputToolbar/useKeyboardInset.js.map +1 -0
- package/lib/InputToolbar/useRecordMode.d.ts +19 -0
- package/lib/InputToolbar/useRecordMode.d.ts.map +1 -0
- package/lib/InputToolbar/useRecordMode.js +124 -0
- package/lib/InputToolbar/useRecordMode.js.map +1 -0
- package/lib/InputToolbar/useRecordTake.d.ts +46 -0
- package/lib/InputToolbar/useRecordTake.d.ts.map +1 -0
- package/lib/InputToolbar/useRecordTake.js +315 -0
- package/lib/InputToolbar/useRecordTake.js.map +1 -0
- package/lib/InputToolbar/useReturnAnimations.d.ts +18 -0
- package/lib/InputToolbar/useReturnAnimations.d.ts.map +1 -0
- package/lib/InputToolbar/useReturnAnimations.js +30 -0
- package/lib/InputToolbar/useReturnAnimations.js.map +1 -0
- package/lib/InputToolbar/useRightControl.d.ts +40 -0
- package/lib/InputToolbar/useRightControl.d.ts.map +1 -0
- package/lib/InputToolbar/useRightControl.js +129 -0
- package/lib/InputToolbar/useRightControl.js.map +1 -0
- package/lib/LoadEarlierMessages.d.ts +2 -0
- package/lib/LoadEarlierMessages.d.ts.map +1 -1
- package/lib/LoadEarlierMessages.js +153 -40
- package/lib/LoadEarlierMessages.js.map +1 -1
- package/lib/Message/SwipeToReply.d.ts +23 -0
- package/lib/Message/SwipeToReply.d.ts.map +1 -0
- package/lib/Message/SwipeToReply.js +337 -0
- package/lib/Message/SwipeToReply.js.map +1 -0
- package/lib/Message/index.d.ts.map +1 -1
- package/lib/Message/index.js +415 -176
- package/lib/Message/index.js.map +1 -1
- package/lib/Message/styles.d.ts +2 -2
- package/lib/Message/styles.js +14 -14
- package/lib/Message/styles.js.map +1 -1
- package/lib/Message/types.d.ts +5 -0
- package/lib/Message/types.d.ts.map +1 -1
- package/lib/Message/types.js.map +1 -1
- package/lib/MessageAudio.d.ts.map +1 -1
- package/lib/MessageAudio.js +647 -107
- package/lib/MessageAudio.js.map +1 -1
- package/lib/MessageFile.d.ts +11 -0
- package/lib/MessageFile.d.ts.map +1 -0
- package/lib/MessageFile.js +315 -0
- package/lib/MessageFile.js.map +1 -0
- package/lib/MessageImage.d.ts +2 -0
- package/lib/MessageImage.d.ts.map +1 -1
- package/lib/MessageImage.js +430 -156
- package/lib/MessageImage.js.map +1 -1
- package/lib/MessageLocation.d.ts.map +1 -1
- package/lib/MessageLocation.js +180 -68
- package/lib/MessageLocation.js.map +1 -1
- package/lib/MessageText.d.ts +8 -1
- package/lib/MessageText.d.ts.map +1 -1
- package/lib/MessageText.js +261 -69
- package/lib/MessageText.js.map +1 -1
- package/lib/MessageVideo/ExpoVideoPlayer.d.ts +6 -0
- package/lib/MessageVideo/ExpoVideoPlayer.d.ts.map +1 -0
- package/lib/MessageVideo/ExpoVideoPlayer.js +68 -0
- package/lib/MessageVideo/ExpoVideoPlayer.js.map +1 -0
- package/lib/MessageVideo/MirroredVideo.d.ts +17 -0
- package/lib/MessageVideo/MirroredVideo.d.ts.map +1 -0
- package/lib/MessageVideo/MirroredVideo.js +223 -0
- package/lib/MessageVideo/MirroredVideo.js.map +1 -0
- package/lib/MessageVideo/RoundNotePlayer.d.ts +4 -0
- package/lib/MessageVideo/RoundNotePlayer.d.ts.map +1 -0
- package/lib/MessageVideo/RoundNotePlayer.js +560 -0
- package/lib/MessageVideo/RoundNotePlayer.js.map +1 -0
- package/lib/MessageVideo/RoundTranscription.d.ts +27 -0
- package/lib/MessageVideo/RoundTranscription.d.ts.map +1 -0
- package/lib/MessageVideo/RoundTranscription.js +151 -0
- package/lib/MessageVideo/RoundTranscription.js.map +1 -0
- package/lib/MessageVideo/VideoTransferOverlay.d.ts +11 -0
- package/lib/MessageVideo/VideoTransferOverlay.d.ts.map +1 -0
- package/lib/MessageVideo/VideoTransferOverlay.js +88 -0
- package/lib/MessageVideo/VideoTransferOverlay.js.map +1 -0
- package/lib/MessageVideo/constants.d.ts +13 -0
- package/lib/MessageVideo/constants.d.ts.map +1 -0
- package/lib/MessageVideo/constants.js +15 -0
- package/lib/MessageVideo/constants.js.map +1 -0
- package/lib/{MessageVideo.d.ts → MessageVideo/index.d.ts} +2 -2
- package/lib/MessageVideo/index.d.ts.map +1 -0
- package/lib/MessageVideo/index.js +92 -0
- package/lib/MessageVideo/index.js.map +1 -0
- package/lib/MessageVideo/liftedMedia.d.ts +13 -0
- package/lib/MessageVideo/liftedMedia.d.ts.map +1 -0
- package/lib/MessageVideo/liftedMedia.js +106 -0
- package/lib/MessageVideo/liftedMedia.js.map +1 -0
- package/lib/MessageVideo/styles.d.ts +71 -0
- package/lib/MessageVideo/styles.d.ts.map +1 -0
- package/lib/MessageVideo/styles.js +78 -0
- package/lib/MessageVideo/styles.js.map +1 -0
- package/lib/MessageVideo/types.d.ts +27 -0
- package/lib/MessageVideo/types.d.ts.map +1 -0
- package/lib/MessageVideo/types.js +2 -0
- package/lib/MessageVideo/types.js.map +1 -0
- package/lib/MessageVideo/useNoteGrow.d.ts +16 -0
- package/lib/MessageVideo/useNoteGrow.d.ts.map +1 -0
- package/lib/MessageVideo/useNoteGrow.js +122 -0
- package/lib/MessageVideo/useNoteGrow.js.map +1 -0
- package/lib/MessageVideo/useNotePlayer.d.ts +14 -0
- package/lib/MessageVideo/useNotePlayer.d.ts.map +1 -0
- package/lib/MessageVideo/useNotePlayer.js +142 -0
- package/lib/MessageVideo/useNotePlayer.js.map +1 -0
- package/lib/MessageVideo/useRingSeek.d.ts +16 -0
- package/lib/MessageVideo/useRingSeek.d.ts.map +1 -0
- package/lib/MessageVideo/useRingSeek.js +157 -0
- package/lib/MessageVideo/useRingSeek.js.map +1 -0
- package/lib/MessageVideo/useRoundNotePlayback.d.ts +46 -0
- package/lib/MessageVideo/useRoundNotePlayback.d.ts.map +1 -0
- package/lib/MessageVideo/useRoundNotePlayback.js +508 -0
- package/lib/MessageVideo/useRoundNotePlayback.js.map +1 -0
- package/lib/MessageVideo/useSendFlightReveal.d.ts +9 -0
- package/lib/MessageVideo/useSendFlightReveal.d.ts.map +1 -0
- package/lib/MessageVideo/useSendFlightReveal.js +85 -0
- package/lib/MessageVideo/useSendFlightReveal.js.map +1 -0
- package/lib/MessageVideo/videoPlayers.d.ts +8 -0
- package/lib/MessageVideo/videoPlayers.d.ts.map +1 -0
- package/lib/MessageVideo/videoPlayers.js +33 -0
- package/lib/MessageVideo/videoPlayers.js.map +1 -0
- package/lib/MessagesContainer/components/DayAnimated/debug.js +38 -24
- package/lib/MessagesContainer/components/DayAnimated/debug.js.map +1 -1
- package/lib/MessagesContainer/components/DayAnimated/index.d.ts +1 -1
- package/lib/MessagesContainer/components/DayAnimated/index.d.ts.map +1 -1
- package/lib/MessagesContainer/components/DayAnimated/index.js +244 -112
- package/lib/MessagesContainer/components/DayAnimated/index.js.map +1 -1
- package/lib/MessagesContainer/components/DayAnimated/styles.d.ts +3 -3
- package/lib/MessagesContainer/components/DayAnimated/styles.js +8 -8
- package/lib/MessagesContainer/components/DayAnimated/styles.js.map +1 -1
- package/lib/MessagesContainer/components/DayAnimated/types.d.ts +4 -2
- package/lib/MessagesContainer/components/DayAnimated/types.d.ts.map +1 -1
- package/lib/MessagesContainer/components/DayAnimated/types.js.map +1 -1
- package/lib/MessagesContainer/components/DayAnimated/useScrollGatedOpacity.d.ts.map +1 -1
- package/lib/MessagesContainer/components/DayAnimated/useScrollGatedOpacity.js +34 -25
- package/lib/MessagesContainer/components/DayAnimated/useScrollGatedOpacity.js.map +1 -1
- package/lib/MessagesContainer/components/Item/index.d.ts +3 -4
- package/lib/MessagesContainer/components/Item/index.d.ts.map +1 -1
- package/lib/MessagesContainer/components/Item/index.js +290 -99
- package/lib/MessagesContainer/components/Item/index.js.map +1 -1
- package/lib/MessagesContainer/components/Item/types.d.ts +5 -0
- package/lib/MessagesContainer/components/Item/types.d.ts.map +1 -1
- package/lib/MessagesContainer/components/Item/types.js.map +1 -1
- package/lib/MessagesContainer/components/PageDownCounter.d.ts +14 -0
- package/lib/MessagesContainer/components/PageDownCounter.d.ts.map +1 -0
- package/lib/MessagesContainer/components/PageDownCounter.js +209 -0
- package/lib/MessagesContainer/components/PageDownCounter.js.map +1 -0
- package/lib/MessagesContainer/components/ScrollToBottomButton.d.ts +21 -0
- package/lib/MessagesContainer/components/ScrollToBottomButton.d.ts.map +1 -0
- package/lib/MessagesContainer/components/ScrollToBottomButton.js +195 -0
- package/lib/MessagesContainer/components/ScrollToBottomButton.js.map +1 -0
- package/lib/MessagesContainer/components/dayLayout.d.ts +2 -2
- package/lib/MessagesContainer/components/dayLayout.d.ts.map +1 -1
- package/lib/MessagesContainer/components/dayLayout.js +18 -13
- package/lib/MessagesContainer/components/dayLayout.js.map +1 -1
- package/lib/MessagesContainer/index.d.ts.map +1 -1
- package/lib/MessagesContainer/index.js +361 -420
- package/lib/MessagesContainer/index.js.map +1 -1
- package/lib/MessagesContainer/listState.d.ts +18 -0
- package/lib/MessagesContainer/listState.d.ts.map +1 -0
- package/lib/MessagesContainer/listState.js +25 -0
- package/lib/MessagesContainer/listState.js.map +1 -0
- package/lib/MessagesContainer/listTransitions.d.ts +10 -0
- package/lib/MessagesContainer/listTransitions.d.ts.map +1 -0
- package/lib/MessagesContainer/listTransitions.js +12 -0
- package/lib/MessagesContainer/listTransitions.js.map +1 -0
- package/lib/MessagesContainer/pageDownReturn.d.ts +11 -0
- package/lib/MessagesContainer/pageDownReturn.d.ts.map +1 -0
- package/lib/MessagesContainer/pageDownReturn.js +9 -0
- package/lib/MessagesContainer/pageDownReturn.js.map +1 -0
- package/lib/MessagesContainer/rowConfig.d.ts +39 -0
- package/lib/MessagesContainer/rowConfig.d.ts.map +1 -0
- package/lib/MessagesContainer/rowConfig.js +161 -0
- package/lib/MessagesContainer/rowConfig.js.map +1 -0
- package/lib/MessagesContainer/rowStore.d.ts +37 -0
- package/lib/MessagesContainer/rowStore.d.ts.map +1 -0
- package/lib/MessagesContainer/rowStore.js +140 -0
- package/lib/MessagesContainer/rowStore.js.map +1 -0
- package/lib/MessagesContainer/styles.d.ts +37 -31
- package/lib/MessagesContainer/styles.d.ts.map +1 -1
- package/lib/MessagesContainer/styles.js +75 -54
- package/lib/MessagesContainer/styles.js.map +1 -1
- package/lib/MessagesContainer/types.d.ts +33 -30
- package/lib/MessagesContainer/types.d.ts.map +1 -1
- package/lib/MessagesContainer/types.js +1 -9
- package/lib/MessagesContainer/types.js.map +1 -1
- package/lib/MessagesContainer/useCellLayouts.d.ts +17 -0
- package/lib/MessagesContainer/useCellLayouts.d.ts.map +1 -0
- package/lib/MessagesContainer/useCellLayouts.js +133 -0
- package/lib/MessagesContainer/useCellLayouts.js.map +1 -0
- package/lib/MessagesContainer/useDaysPositions.d.ts +18 -0
- package/lib/MessagesContainer/useDaysPositions.d.ts.map +1 -0
- package/lib/MessagesContainer/useDaysPositions.js +109 -0
- package/lib/MessagesContainer/useDaysPositions.js.map +1 -0
- package/lib/MessagesContainer/useListChrome.d.ts +14 -0
- package/lib/MessagesContainer/useListChrome.d.ts.map +1 -0
- package/lib/MessagesContainer/useListChrome.js +176 -0
- package/lib/MessagesContainer/useListChrome.js.map +1 -0
- package/lib/MessagesContainer/useListMetrics.d.ts +32 -0
- package/lib/MessagesContainer/useListMetrics.d.ts.map +1 -0
- package/lib/MessagesContainer/useListMetrics.js +176 -0
- package/lib/MessagesContainer/useListMetrics.js.map +1 -0
- package/lib/MessagesContainer/useMessageRows.d.ts +46 -0
- package/lib/MessagesContainer/useMessageRows.d.ts.map +1 -0
- package/lib/MessagesContainer/useMessageRows.js +228 -0
- package/lib/MessagesContainer/useMessageRows.js.map +1 -0
- package/lib/MessagesContainer/usePageDownUnread.d.ts +27 -0
- package/lib/MessagesContainer/usePageDownUnread.d.ts.map +1 -0
- package/lib/MessagesContainer/usePageDownUnread.js +152 -0
- package/lib/MessagesContainer/usePageDownUnread.js.map +1 -0
- package/lib/MessagesContainer/useScrollActivity.d.ts +13 -0
- package/lib/MessagesContainer/useScrollActivity.d.ts.map +1 -0
- package/lib/MessagesContainer/useScrollActivity.js +84 -0
- package/lib/MessagesContainer/useScrollActivity.js.map +1 -0
- package/lib/MessagesContainer/useScrollToBottom.d.ts +26 -0
- package/lib/MessagesContainer/useScrollToBottom.d.ts.map +1 -0
- package/lib/MessagesContainer/useScrollToBottom.js +164 -0
- package/lib/MessagesContainer/useScrollToBottom.js.map +1 -0
- package/lib/MessagesContainer/useTapToClosePanels.d.ts +7 -0
- package/lib/MessagesContainer/useTapToClosePanels.d.ts.map +1 -0
- package/lib/MessagesContainer/useTapToClosePanels.js +55 -0
- package/lib/MessagesContainer/useTapToClosePanels.js.map +1 -0
- package/lib/MessagesContainer/viewability.d.ts +9 -0
- package/lib/MessagesContainer/viewability.d.ts.map +1 -0
- package/lib/MessagesContainer/viewability.js +110 -0
- package/lib/MessagesContainer/viewability.js.map +1 -0
- package/lib/Models.d.ts +188 -3
- package/lib/Models.d.ts.map +1 -1
- package/lib/Models.js.map +1 -1
- package/lib/QuickReplies.js +234 -101
- package/lib/QuickReplies.js.map +1 -1
- package/lib/Reactions/MessageReactions.d.ts +5 -0
- package/lib/Reactions/MessageReactions.d.ts.map +1 -1
- package/lib/Reactions/MessageReactions.js +359 -80
- package/lib/Reactions/MessageReactions.js.map +1 -1
- package/lib/Reactions/ReactionPicker.d.ts +5 -3
- package/lib/Reactions/ReactionPicker.d.ts.map +1 -1
- package/lib/Reactions/ReactionPicker.js +68 -82
- package/lib/Reactions/ReactionPicker.js.map +1 -1
- package/lib/Reactions/index.js +1 -0
- package/lib/Reactions/index.js.map +1 -1
- package/lib/Reactions/types.d.ts +49 -5
- package/lib/Reactions/types.d.ts.map +1 -1
- package/lib/Reactions/types.js.map +1 -1
- package/lib/Reply/index.js.map +1 -1
- package/lib/Reply/types.d.ts +19 -3
- package/lib/Reply/types.d.ts.map +1 -1
- package/lib/Reply/types.js.map +1 -1
- package/lib/Send.d.ts +2 -2
- package/lib/Send.d.ts.map +1 -1
- package/lib/Send.js +218 -47
- package/lib/Send.js.map +1 -1
- package/lib/SystemMessage.d.ts.map +1 -1
- package/lib/SystemMessage.js +106 -37
- package/lib/SystemMessage.js.map +1 -1
- package/lib/Theme.d.ts +320 -23
- package/lib/Theme.d.ts.map +1 -1
- package/lib/Theme.js +548 -119
- package/lib/Theme.js.map +1 -1
- package/lib/Time.d.ts +7 -0
- package/lib/Time.d.ts.map +1 -1
- package/lib/Time.js +122 -30
- package/lib/Time.js.map +1 -1
- package/lib/TypingIndicator/index.d.ts +9 -1
- package/lib/TypingIndicator/index.d.ts.map +1 -1
- package/lib/TypingIndicator/index.js +318 -94
- package/lib/TypingIndicator/index.js.map +1 -1
- package/lib/TypingIndicator/styles.d.ts +6 -2
- package/lib/TypingIndicator/styles.d.ts.map +1 -1
- package/lib/TypingIndicator/styles.js +22 -18
- package/lib/TypingIndicator/styles.js.map +1 -1
- package/lib/TypingIndicator/types.js.map +1 -1
- package/lib/attachments/AttachmentButton.d.ts +18 -0
- package/lib/attachments/AttachmentButton.d.ts.map +1 -0
- package/lib/attachments/AttachmentButton.js +110 -0
- package/lib/attachments/AttachmentButton.js.map +1 -0
- package/lib/attachments/AttachmentMenu/CaptionBar.d.ts +15 -0
- package/lib/attachments/AttachmentMenu/CaptionBar.d.ts.map +1 -0
- package/lib/attachments/AttachmentMenu/CaptionBar.js +165 -0
- package/lib/attachments/AttachmentMenu/CaptionBar.js.map +1 -0
- package/lib/attachments/AttachmentMenu/GalleryCell.d.ts +14 -0
- package/lib/attachments/AttachmentMenu/GalleryCell.d.ts.map +1 -0
- package/lib/attachments/AttachmentMenu/GalleryCell.js +267 -0
- package/lib/attachments/AttachmentMenu/GalleryCell.js.map +1 -0
- package/lib/attachments/AttachmentMenu/GalleryGrid.d.ts +18 -0
- package/lib/attachments/AttachmentMenu/GalleryGrid.d.ts.map +1 -0
- package/lib/attachments/AttachmentMenu/GalleryGrid.js +184 -0
- package/lib/attachments/AttachmentMenu/GalleryGrid.js.map +1 -0
- package/lib/attachments/AttachmentMenu/TabBar.d.ts +14 -0
- package/lib/attachments/AttachmentMenu/TabBar.d.ts.map +1 -0
- package/lib/attachments/AttachmentMenu/TabBar.js +127 -0
- package/lib/attachments/AttachmentMenu/TabBar.js.map +1 -0
- package/lib/attachments/AttachmentMenu/TabButton.d.ts +15 -0
- package/lib/attachments/AttachmentMenu/TabButton.d.ts.map +1 -0
- package/lib/attachments/AttachmentMenu/TabButton.js +219 -0
- package/lib/attachments/AttachmentMenu/TabButton.js.map +1 -0
- package/lib/attachments/AttachmentMenu/TabPanel.d.ts +17 -0
- package/lib/attachments/AttachmentMenu/TabPanel.d.ts.map +1 -0
- package/lib/attachments/AttachmentMenu/TabPanel.js +170 -0
- package/lib/attachments/AttachmentMenu/TabPanel.js.map +1 -0
- package/lib/attachments/AttachmentMenu/constants.d.ts +54 -0
- package/lib/attachments/AttachmentMenu/constants.d.ts.map +1 -0
- package/lib/attachments/AttachmentMenu/constants.js +79 -0
- package/lib/attachments/AttachmentMenu/constants.js.map +1 -0
- package/lib/attachments/AttachmentMenu/index.d.ts +16 -0
- package/lib/attachments/AttachmentMenu/index.d.ts.map +1 -0
- package/lib/attachments/AttachmentMenu/index.js +498 -0
- package/lib/attachments/AttachmentMenu/index.js.map +1 -0
- package/lib/attachments/AttachmentMenu/styles.d.ts +259 -0
- package/lib/attachments/AttachmentMenu/styles.d.ts.map +1 -0
- package/lib/attachments/AttachmentMenu/styles.js +262 -0
- package/lib/attachments/AttachmentMenu/styles.js.map +1 -0
- package/lib/attachments/AttachmentMenu/useSheetPresence.d.ts +14 -0
- package/lib/attachments/AttachmentMenu/useSheetPresence.d.ts.map +1 -0
- package/lib/attachments/AttachmentMenu/useSheetPresence.js +74 -0
- package/lib/attachments/AttachmentMenu/useSheetPresence.js.map +1 -0
- package/lib/attachments/buildMessages.d.ts +36 -0
- package/lib/attachments/buildMessages.d.ts.map +1 -0
- package/lib/attachments/buildMessages.js +192 -0
- package/lib/attachments/buildMessages.js.map +1 -0
- package/lib/attachments/gallery.d.ts +28 -0
- package/lib/attachments/gallery.d.ts.map +1 -0
- package/lib/attachments/gallery.js +245 -0
- package/lib/attachments/gallery.js.map +1 -0
- package/lib/attachments/types.d.ts +69 -0
- package/lib/attachments/types.d.ts.map +1 -0
- package/lib/attachments/types.js +2 -0
- package/lib/attachments/types.js.map +1 -0
- package/lib/colorUtils.d.ts +24 -0
- package/lib/colorUtils.d.ts.map +1 -0
- package/lib/colorUtils.js +71 -0
- package/lib/colorUtils.js.map +1 -0
- package/lib/components/AttachmentSheet.d.ts +1 -1
- package/lib/components/AttachmentSheet.d.ts.map +1 -1
- package/lib/components/AttachmentSheet.js +515 -155
- package/lib/components/AttachmentSheet.js.map +1 -1
- package/lib/components/BasicMarkdown.d.ts +7 -1
- package/lib/components/BasicMarkdown.d.ts.map +1 -1
- package/lib/components/BasicMarkdown.js +234 -184
- package/lib/components/BasicMarkdown.js.map +1 -1
- package/lib/components/BubbleBackground.d.ts +55 -0
- package/lib/components/BubbleBackground.d.ts.map +1 -0
- package/lib/components/BubbleBackground.js +513 -0
- package/lib/components/BubbleBackground.js.map +1 -0
- package/lib/components/ChatEmpty.d.ts +18 -0
- package/lib/components/ChatEmpty.d.ts.map +1 -0
- package/lib/components/ChatEmpty.js +125 -0
- package/lib/components/ChatEmpty.js.map +1 -0
- package/lib/components/ChatLoadingOverlay.d.ts +10 -0
- package/lib/components/ChatLoadingOverlay.d.ts.map +1 -0
- package/lib/components/ChatLoadingOverlay.js +89 -0
- package/lib/components/ChatLoadingOverlay.js.map +1 -0
- package/lib/components/ChatOverlay.d.ts +9 -0
- package/lib/components/ChatOverlay.d.ts.map +1 -0
- package/lib/components/ChatOverlay.js +60 -0
- package/lib/components/ChatOverlay.js.map +1 -0
- package/lib/components/ChatWallpaper.d.ts +32 -0
- package/lib/components/ChatWallpaper.d.ts.map +1 -0
- package/lib/components/ChatWallpaper.js +277 -0
- package/lib/components/ChatWallpaper.js.map +1 -0
- package/lib/components/ContextMenu/MenuCard.d.ts +21 -0
- package/lib/components/ContextMenu/MenuCard.d.ts.map +1 -0
- package/lib/components/ContextMenu/MenuCard.js +265 -0
- package/lib/components/ContextMenu/MenuCard.js.map +1 -0
- package/lib/components/ContextMenu/ReactionButton.d.ts +15 -0
- package/lib/components/ContextMenu/ReactionButton.d.ts.map +1 -0
- package/lib/components/ContextMenu/ReactionButton.js +116 -0
- package/lib/components/ContextMenu/ReactionButton.js.map +1 -0
- package/lib/components/ContextMenu/ReactionFlight.d.ts +14 -0
- package/lib/components/ContextMenu/ReactionFlight.d.ts.map +1 -0
- package/lib/components/ContextMenu/ReactionFlight.js +111 -0
- package/lib/components/ContextMenu/ReactionFlight.js.map +1 -0
- package/lib/components/ContextMenu/ReactionsBar.d.ts +35 -0
- package/lib/components/ContextMenu/ReactionsBar.d.ts.map +1 -0
- package/lib/components/ContextMenu/ReactionsBar.js +354 -0
- package/lib/components/ContextMenu/ReactionsBar.js.map +1 -0
- package/lib/components/ContextMenu/constants.d.ts +68 -0
- package/lib/components/ContextMenu/constants.d.ts.map +1 -0
- package/lib/components/ContextMenu/constants.js +105 -0
- package/lib/components/ContextMenu/constants.js.map +1 -0
- package/lib/components/ContextMenu/index.d.ts +12 -0
- package/lib/components/ContextMenu/index.d.ts.map +1 -0
- package/lib/components/ContextMenu/index.js +476 -0
- package/lib/components/ContextMenu/index.js.map +1 -0
- package/lib/components/ContextMenu/placement.d.ts +50 -0
- package/lib/components/ContextMenu/placement.d.ts.map +1 -0
- package/lib/components/ContextMenu/placement.js +117 -0
- package/lib/components/ContextMenu/placement.js.map +1 -0
- package/lib/components/ContextMenu/styles.d.ts +199 -0
- package/lib/components/ContextMenu/styles.d.ts.map +1 -0
- package/lib/components/ContextMenu/styles.js +169 -0
- package/lib/components/ContextMenu/styles.js.map +1 -0
- package/lib/components/ContextMenu/types.d.ts +62 -0
- package/lib/components/ContextMenu/types.d.ts.map +1 -0
- package/lib/components/ContextMenu/types.js +2 -0
- package/lib/components/ContextMenu/types.js.map +1 -0
- package/lib/components/ContextMenu/useExpandPanel.d.ts +11 -0
- package/lib/components/ContextMenu/useExpandPanel.d.ts.map +1 -0
- package/lib/components/ContextMenu/useExpandPanel.js +81 -0
- package/lib/components/ContextMenu/useExpandPanel.js.map +1 -0
- package/lib/components/ContextMenu/useMenuPresence.d.ts +17 -0
- package/lib/components/ContextMenu/useMenuPresence.d.ts.map +1 -0
- package/lib/components/ContextMenu/useMenuPresence.js +125 -0
- package/lib/components/ContextMenu/useMenuPresence.js.map +1 -0
- package/lib/components/FloatingRoundNote.d.ts +13 -0
- package/lib/components/FloatingRoundNote.d.ts.map +1 -0
- package/lib/components/FloatingRoundNote.js +541 -0
- package/lib/components/FloatingRoundNote.js.map +1 -0
- package/lib/components/GlassSurface.d.ts +16 -0
- package/lib/components/GlassSurface.d.ts.map +1 -0
- package/lib/components/GlassSurface.js +114 -0
- package/lib/components/GlassSurface.js.map +1 -0
- package/lib/components/Icon.js +57 -8
- package/lib/components/Icon.js.map +1 -1
- package/lib/components/LinkPreviewCard.d.ts +36 -0
- package/lib/components/LinkPreviewCard.d.ts.map +1 -0
- package/lib/components/LinkPreviewCard.js +416 -0
- package/lib/components/LinkPreviewCard.js.map +1 -0
- package/lib/components/LucideIcon.d.ts.map +1 -1
- package/lib/components/LucideIcon.js +103 -106
- package/lib/components/LucideIcon.js.map +1 -1
- package/lib/components/MarkdownMessageText.d.ts +17 -2
- package/lib/components/MarkdownMessageText.d.ts.map +1 -1
- package/lib/components/MarkdownMessageText.js +270 -22
- package/lib/components/MarkdownMessageText.js.map +1 -1
- package/lib/components/MediaCard.d.ts.map +1 -1
- package/lib/components/MediaCard.js +223 -85
- package/lib/components/MediaCard.js.map +1 -1
- package/lib/components/MediaControls.js +1094 -450
- package/lib/components/MediaControls.js.map +1 -1
- package/lib/components/MediaLoader.d.ts +21 -0
- package/lib/components/MediaLoader.d.ts.map +1 -0
- package/lib/components/MediaLoader.js +61 -0
- package/lib/components/MediaLoader.js.map +1 -0
- package/lib/components/MessageReply.d.ts +2 -2
- package/lib/components/MessageReply.d.ts.map +1 -1
- package/lib/components/MessageReply.js +266 -83
- package/lib/components/MessageReply.js.map +1 -1
- package/lib/components/MessageStatus.d.ts +23 -0
- package/lib/components/MessageStatus.d.ts.map +1 -0
- package/lib/components/MessageStatus.js +499 -0
- package/lib/components/MessageStatus.js.map +1 -0
- package/lib/components/NoteIndicators.d.ts +25 -0
- package/lib/components/NoteIndicators.d.ts.map +1 -0
- package/lib/components/NoteIndicators.js +206 -0
- package/lib/components/NoteIndicators.js.map +1 -0
- package/lib/components/NowPlayingBar.d.ts +15 -0
- package/lib/components/NowPlayingBar.d.ts.map +1 -0
- package/lib/components/NowPlayingBar.js +261 -0
- package/lib/components/NowPlayingBar.js.map +1 -0
- package/lib/components/PlayPauseIcon.d.ts +13 -0
- package/lib/components/PlayPauseIcon.d.ts.map +1 -0
- package/lib/components/PlayPauseIcon.js +187 -0
- package/lib/components/PlayPauseIcon.js.map +1 -0
- package/lib/components/PlaybackSpeedPill.d.ts +11 -0
- package/lib/components/PlaybackSpeedPill.d.ts.map +1 -0
- package/lib/components/PlaybackSpeedPill.js +350 -0
- package/lib/components/PlaybackSpeedPill.js.map +1 -0
- package/lib/components/RadialProgress.d.ts +70 -0
- package/lib/components/RadialProgress.d.ts.map +1 -0
- package/lib/components/RadialProgress.js +864 -0
- package/lib/components/RadialProgress.js.map +1 -0
- package/lib/components/RecordButton/LockPill.d.ts +27 -0
- package/lib/components/RecordButton/LockPill.d.ts.map +1 -0
- package/lib/components/RecordButton/LockPill.js +182 -0
- package/lib/components/RecordButton/LockPill.js.map +1 -0
- package/lib/components/RecordButton/ModeButton.d.ts +18 -0
- package/lib/components/RecordButton/ModeButton.d.ts.map +1 -0
- package/lib/components/RecordButton/ModeButton.js +154 -0
- package/lib/components/RecordButton/ModeButton.js.map +1 -0
- package/lib/components/RecordButton/ResumeButton.d.ts +20 -0
- package/lib/components/RecordButton/ResumeButton.d.ts.map +1 -0
- package/lib/components/RecordButton/ResumeButton.js +63 -0
- package/lib/components/RecordButton/ResumeButton.js.map +1 -0
- package/lib/components/RecordButton/Tooltips.d.ts +20 -0
- package/lib/components/RecordButton/Tooltips.d.ts.map +1 -0
- package/lib/components/RecordButton/Tooltips.js +191 -0
- package/lib/components/RecordButton/Tooltips.js.map +1 -0
- package/lib/components/RecordButton/ViewOnceButton.d.ts +16 -0
- package/lib/components/RecordButton/ViewOnceButton.d.ts.map +1 -0
- package/lib/components/RecordButton/ViewOnceButton.js +96 -0
- package/lib/components/RecordButton/ViewOnceButton.js.map +1 -0
- package/lib/components/RecordButton/constants.d.ts +52 -0
- package/lib/components/RecordButton/constants.d.ts.map +1 -0
- package/lib/components/RecordButton/constants.js +58 -0
- package/lib/components/RecordButton/constants.js.map +1 -0
- package/lib/components/RecordButton/index.d.ts +14 -0
- package/lib/components/RecordButton/index.d.ts.map +1 -0
- package/lib/components/RecordButton/index.js +382 -0
- package/lib/components/RecordButton/index.js.map +1 -0
- package/lib/components/RecordButton/styles.d.ts +155 -0
- package/lib/components/RecordButton/styles.d.ts.map +1 -0
- package/lib/components/RecordButton/styles.js +161 -0
- package/lib/components/RecordButton/styles.js.map +1 -0
- package/lib/components/RecordButton/types.d.ts +63 -0
- package/lib/components/RecordButton/types.d.ts.map +1 -0
- package/lib/components/RecordButton/types.js +2 -0
- package/lib/components/RecordButton/types.js.map +1 -0
- package/lib/components/RecordButton/useRecordGesture.d.ts +28 -0
- package/lib/components/RecordButton/useRecordGesture.d.ts.map +1 -0
- package/lib/components/RecordButton/useRecordGesture.js +263 -0
- package/lib/components/RecordButton/useRecordGesture.js.map +1 -0
- package/lib/components/RecordButton/useRecordHints.d.ts +27 -0
- package/lib/components/RecordButton/useRecordHints.d.ts.map +1 -0
- package/lib/components/RecordButton/useRecordHints.js +210 -0
- package/lib/components/RecordButton/useRecordHints.js.map +1 -0
- package/lib/components/RecordButton/useRecordSlideDistance.d.ts +3 -0
- package/lib/components/RecordButton/useRecordSlideDistance.d.ts.map +1 -0
- package/lib/components/RecordButton/useRecordSlideDistance.js +15 -0
- package/lib/components/RecordButton/useRecordSlideDistance.js.map +1 -0
- package/lib/components/RecordButton/useRecordTake.d.ts +41 -0
- package/lib/components/RecordButton/useRecordTake.d.ts.map +1 -0
- package/lib/components/RecordButton/useRecordTake.js +349 -0
- package/lib/components/RecordButton/useRecordTake.js.map +1 -0
- package/lib/components/RecordButton/useSendFlight.d.ts +25 -0
- package/lib/components/RecordButton/useSendFlight.d.ts.map +1 -0
- package/lib/components/RecordButton/useSendFlight.js +162 -0
- package/lib/components/RecordButton/useSendFlight.js.map +1 -0
- package/lib/components/RecordCircle.d.ts +92 -0
- package/lib/components/RecordCircle.d.ts.map +1 -0
- package/lib/components/RecordCircle.js +629 -0
- package/lib/components/RecordCircle.js.map +1 -0
- package/lib/components/RecordingBar.d.ts +24 -0
- package/lib/components/RecordingBar.d.ts.map +1 -0
- package/lib/components/RecordingBar.js +766 -0
- package/lib/components/RecordingBar.js.map +1 -0
- package/lib/components/ReplyPreview.js +318 -135
- package/lib/components/ReplyPreview.js.map +1 -1
- package/lib/components/SelectionBar.d.ts +17 -0
- package/lib/components/SelectionBar.d.ts.map +1 -0
- package/lib/components/SelectionBar.js +214 -0
- package/lib/components/SelectionBar.js.map +1 -0
- package/lib/components/SelectionCheckbox.d.ts +12 -0
- package/lib/components/SelectionCheckbox.d.ts.map +1 -0
- package/lib/components/SelectionCheckbox.js +104 -0
- package/lib/components/SelectionCheckbox.js.map +1 -0
- package/lib/components/SendIcon.js +60 -26
- package/lib/components/SendIcon.js.map +1 -1
- package/lib/components/ServiceSpinner.d.ts +17 -0
- package/lib/components/ServiceSpinner.d.ts.map +1 -0
- package/lib/components/ServiceSpinner.js +77 -0
- package/lib/components/ServiceSpinner.js.map +1 -0
- package/lib/components/Spinner.d.ts +18 -0
- package/lib/components/Spinner.d.ts.map +1 -0
- package/lib/components/Spinner.js +169 -0
- package/lib/components/Spinner.js.map +1 -0
- package/lib/components/StreamingCursor.js +54 -9
- package/lib/components/StreamingCursor.js.map +1 -1
- package/lib/components/Ticks.d.ts +6 -5
- package/lib/components/Ticks.d.ts.map +1 -1
- package/lib/components/Ticks.js +272 -82
- package/lib/components/Ticks.js.map +1 -1
- package/lib/components/TouchableOpacity.d.ts.map +1 -1
- package/lib/components/TouchableOpacity.js +154 -48
- package/lib/components/TouchableOpacity.js.map +1 -1
- package/lib/components/TranscribeButton.d.ts +45 -0
- package/lib/components/TranscribeButton.d.ts.map +1 -0
- package/lib/components/TranscribeButton.js +549 -0
- package/lib/components/TranscribeButton.js.map +1 -0
- package/lib/components/TypingStatus.d.ts +29 -0
- package/lib/components/TypingStatus.d.ts.map +1 -0
- package/lib/components/TypingStatus.js +446 -0
- package/lib/components/TypingStatus.js.map +1 -0
- package/lib/components/UnreadSeparator.d.ts +8 -0
- package/lib/components/UnreadSeparator.d.ts.map +1 -0
- package/lib/components/UnreadSeparator.js +101 -0
- package/lib/components/UnreadSeparator.js.map +1 -0
- package/lib/components/VideoNoteCapture/ProgressRing.d.ts +16 -0
- package/lib/components/VideoNoteCapture/ProgressRing.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/ProgressRing.js +75 -0
- package/lib/components/VideoNoteCapture/ProgressRing.js.map +1 -0
- package/lib/components/VideoNoteCapture/VideoNoteCaptureView.d.ts +31 -0
- package/lib/components/VideoNoteCapture/VideoNoteCaptureView.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/VideoNoteCaptureView.js +500 -0
- package/lib/components/VideoNoteCapture/VideoNoteCaptureView.js.map +1 -0
- package/lib/components/VideoNoteCapture/VideoNotePreviewView.d.ts +12 -0
- package/lib/components/VideoNoteCapture/VideoNotePreviewView.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/VideoNotePreviewView.js +105 -0
- package/lib/components/VideoNoteCapture/VideoNotePreviewView.js.map +1 -0
- package/lib/components/VideoNoteCapture/VideoNoteStage.d.ts +12 -0
- package/lib/components/VideoNoteCapture/VideoNoteStage.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/VideoNoteStage.js +95 -0
- package/lib/components/VideoNoteCapture/VideoNoteStage.js.map +1 -0
- package/lib/components/VideoNoteCapture/constants.d.ts +50 -0
- package/lib/components/VideoNoteCapture/constants.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/constants.js +53 -0
- package/lib/components/VideoNoteCapture/constants.js.map +1 -0
- package/lib/components/VideoNoteCapture/index.d.ts +3 -0
- package/lib/components/VideoNoteCapture/index.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/index.js +2 -0
- package/lib/components/VideoNoteCapture/index.js.map +1 -0
- package/lib/components/VideoNoteCapture/optional.d.ts +6 -0
- package/lib/components/VideoNoteCapture/optional.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/optional.js +15 -0
- package/lib/components/VideoNoteCapture/optional.js.map +1 -0
- package/lib/components/VideoNoteCapture/sessionState.d.ts +10 -0
- package/lib/components/VideoNoteCapture/sessionState.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/sessionState.js +19 -0
- package/lib/components/VideoNoteCapture/sessionState.js.map +1 -0
- package/lib/components/VideoNoteCapture/styles.d.ts +84 -0
- package/lib/components/VideoNoteCapture/styles.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/styles.js +86 -0
- package/lib/components/VideoNoteCapture/styles.js.map +1 -0
- package/lib/components/VideoNoteCapture/types.d.ts +54 -0
- package/lib/components/VideoNoteCapture/types.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/types.js +2 -0
- package/lib/components/VideoNoteCapture/types.js.map +1 -0
- package/lib/components/VideoNoteCapture/useRoundAnimation.d.ts +47 -0
- package/lib/components/VideoNoteCapture/useRoundAnimation.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/useRoundAnimation.js +216 -0
- package/lib/components/VideoNoteCapture/useRoundAnimation.js.map +1 -0
- package/lib/components/VideoNoteCapture/useRoundLayout.d.ts +14 -0
- package/lib/components/VideoNoteCapture/useRoundLayout.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/useRoundLayout.js +61 -0
- package/lib/components/VideoNoteCapture/useRoundLayout.js.map +1 -0
- package/lib/components/VideoNoteCapture/useVideoNoteSession.d.ts +25 -0
- package/lib/components/VideoNoteCapture/useVideoNoteSession.d.ts.map +1 -0
- package/lib/components/VideoNoteCapture/useVideoNoteSession.js +611 -0
- package/lib/components/VideoNoteCapture/useVideoNoteSession.js.map +1 -0
- package/lib/components/VideoNoteOverlay.d.ts +42 -11
- package/lib/components/VideoNoteOverlay.d.ts.map +1 -1
- package/lib/components/VideoNoteOverlay.js +722 -135
- package/lib/components/VideoNoteOverlay.js.map +1 -1
- package/lib/components/VideoNoteRecorder/LiveVideoNote.d.ts +6 -0
- package/lib/components/VideoNoteRecorder/LiveVideoNote.d.ts.map +1 -0
- package/lib/components/VideoNoteRecorder/LiveVideoNote.js +205 -0
- package/lib/components/VideoNoteRecorder/LiveVideoNote.js.map +1 -0
- package/lib/components/VideoNoteRecorder/RecorderChrome.d.ts +35 -0
- package/lib/components/VideoNoteRecorder/RecorderChrome.d.ts.map +1 -0
- package/lib/components/VideoNoteRecorder/RecorderChrome.js +350 -0
- package/lib/components/VideoNoteRecorder/RecorderChrome.js.map +1 -0
- package/lib/components/VideoNoteRecorder/UnavailableVideoNote.d.ts +10 -0
- package/lib/components/VideoNoteRecorder/UnavailableVideoNote.d.ts.map +1 -0
- package/lib/components/VideoNoteRecorder/UnavailableVideoNote.js +52 -0
- package/lib/components/VideoNoteRecorder/UnavailableVideoNote.js.map +1 -0
- package/lib/components/VideoNoteRecorder/constants.d.ts +16 -0
- package/lib/components/VideoNoteRecorder/constants.d.ts.map +1 -0
- package/lib/components/VideoNoteRecorder/constants.js +30 -0
- package/lib/components/VideoNoteRecorder/constants.js.map +1 -0
- package/lib/components/{VideoNoteRecorder.d.ts → VideoNoteRecorder/index.d.ts} +5 -10
- package/lib/components/VideoNoteRecorder/index.d.ts.map +1 -0
- package/lib/components/VideoNoteRecorder/index.js +26 -0
- package/lib/components/VideoNoteRecorder/index.js.map +1 -0
- package/lib/components/VideoNoteRecorder/styles.d.ts +159 -0
- package/lib/components/VideoNoteRecorder/styles.d.ts.map +1 -0
- package/lib/components/VideoNoteRecorder/styles.js +170 -0
- package/lib/components/VideoNoteRecorder/styles.js.map +1 -0
- package/lib/components/VideoNoteRecorder/types.d.ts +7 -0
- package/lib/components/VideoNoteRecorder/types.d.ts.map +1 -0
- package/lib/components/VideoNoteRecorder/types.js +2 -0
- package/lib/components/VideoNoteRecorder/types.js.map +1 -0
- package/lib/components/VideoNoteRecorder/useRecordingTimer.d.ts +10 -0
- package/lib/components/VideoNoteRecorder/useRecordingTimer.d.ts.map +1 -0
- package/lib/components/VideoNoteRecorder/useRecordingTimer.js +134 -0
- package/lib/components/VideoNoteRecorder/useRecordingTimer.js.map +1 -0
- package/lib/components/VideoNoteRecorder/useVideoNoteRecording.d.ts +28 -0
- package/lib/components/VideoNoteRecorder/useVideoNoteRecording.d.ts.map +1 -0
- package/lib/components/VideoNoteRecorder/useVideoNoteRecording.js +287 -0
- package/lib/components/VideoNoteRecorder/useVideoNoteRecording.js.map +1 -0
- package/lib/components/VideoNoteRecorder/visionCameraHooks.d.ts +6 -0
- package/lib/components/VideoNoteRecorder/visionCameraHooks.d.ts.map +1 -0
- package/lib/components/VideoNoteRecorder/visionCameraHooks.js +11 -0
- package/lib/components/VideoNoteRecorder/visionCameraHooks.js.map +1 -0
- package/lib/components/VideoRecordButton.d.ts +1 -1
- package/lib/components/VideoRecordButton.d.ts.map +1 -1
- package/lib/components/VideoRecordButton.js +221 -92
- package/lib/components/VideoRecordButton.js.map +1 -1
- package/lib/components/ViewOnceBadge.d.ts +23 -0
- package/lib/components/ViewOnceBadge.d.ts.map +1 -0
- package/lib/components/ViewOnceBadge.js +233 -0
- package/lib/components/ViewOnceBadge.js.map +1 -0
- package/lib/components/VoiceMessageInput/RecordedVoicePreview.d.ts +16 -0
- package/lib/components/VoiceMessageInput/RecordedVoicePreview.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput/RecordedVoicePreview.js +503 -0
- package/lib/components/VoiceMessageInput/RecordedVoicePreview.js.map +1 -0
- package/lib/components/VoiceMessageInput/constants.d.ts +16 -0
- package/lib/components/VoiceMessageInput/constants.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput/constants.js +22 -0
- package/lib/components/VoiceMessageInput/constants.js.map +1 -0
- package/lib/components/VoiceMessageInput/formatElapsed.d.ts +2 -0
- package/lib/components/VoiceMessageInput/formatElapsed.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput/formatElapsed.js +7 -0
- package/lib/components/VoiceMessageInput/formatElapsed.js.map +1 -0
- package/lib/components/VoiceMessageInput/index.d.ts +9 -0
- package/lib/components/VoiceMessageInput/index.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput/index.js +148 -0
- package/lib/components/VoiceMessageInput/index.js.map +1 -0
- package/lib/components/VoiceMessageInput/previewStyles.d.ts +77 -0
- package/lib/components/VoiceMessageInput/previewStyles.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput/previewStyles.js +80 -0
- package/lib/components/VoiceMessageInput/previewStyles.js.map +1 -0
- package/lib/components/VoiceMessageInput/previewWaveform.d.ts +15 -0
- package/lib/components/VoiceMessageInput/previewWaveform.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput/previewWaveform.js +27 -0
- package/lib/components/VoiceMessageInput/previewWaveform.js.map +1 -0
- package/lib/components/VoiceMessageInput/recorder.d.ts +18 -0
- package/lib/components/VoiceMessageInput/recorder.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput/recorder.js +80 -0
- package/lib/components/VoiceMessageInput/recorder.js.map +1 -0
- package/lib/components/VoiceMessageInput/types.d.ts +56 -0
- package/lib/components/VoiceMessageInput/types.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput/types.js +2 -0
- package/lib/components/VoiceMessageInput/types.js.map +1 -0
- package/lib/components/VoiceMessageInput/useLazyRecorder.d.ts +7 -0
- package/lib/components/VoiceMessageInput/useLazyRecorder.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput/useLazyRecorder.js +61 -0
- package/lib/components/VoiceMessageInput/useLazyRecorder.js.map +1 -0
- package/lib/components/VoiceMessageInput/useStateReport.d.ts +16 -0
- package/lib/components/VoiceMessageInput/useStateReport.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput/useStateReport.js +81 -0
- package/lib/components/VoiceMessageInput/useStateReport.js.map +1 -0
- package/lib/components/VoiceMessageInput/useTakePreviewActions.d.ts +34 -0
- package/lib/components/VoiceMessageInput/useTakePreviewActions.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput/useTakePreviewActions.js +207 -0
- package/lib/components/VoiceMessageInput/useTakePreviewActions.js.map +1 -0
- package/lib/components/VoiceMessageInput/useVoiceTake.d.ts +25 -0
- package/lib/components/VoiceMessageInput/useVoiceTake.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput/useVoiceTake.js +424 -0
- package/lib/components/VoiceMessageInput/useVoiceTake.js.map +1 -0
- package/lib/components/WaveformPlayer/Bars.d.ts +30 -0
- package/lib/components/WaveformPlayer/Bars.d.ts.map +1 -0
- package/lib/components/WaveformPlayer/Bars.js +171 -0
- package/lib/components/WaveformPlayer/Bars.js.map +1 -0
- package/lib/components/WaveformPlayer/VoiceButton.d.ts +23 -0
- package/lib/components/WaveformPlayer/VoiceButton.d.ts.map +1 -0
- package/lib/components/WaveformPlayer/VoiceButton.js +111 -0
- package/lib/components/WaveformPlayer/VoiceButton.js.map +1 -0
- package/lib/components/WaveformPlayer/WaveformTrack.d.ts +31 -0
- package/lib/components/WaveformPlayer/WaveformTrack.d.ts.map +1 -0
- package/lib/components/WaveformPlayer/WaveformTrack.js +199 -0
- package/lib/components/WaveformPlayer/WaveformTrack.js.map +1 -0
- package/lib/components/WaveformPlayer/audio.d.ts +23 -0
- package/lib/components/WaveformPlayer/audio.d.ts.map +1 -0
- package/lib/components/WaveformPlayer/audio.js +97 -0
- package/lib/components/WaveformPlayer/audio.js.map +1 -0
- package/lib/components/WaveformPlayer/index.d.ts +13 -0
- package/lib/components/WaveformPlayer/index.d.ts.map +1 -0
- package/lib/components/WaveformPlayer/index.js +475 -0
- package/lib/components/WaveformPlayer/index.js.map +1 -0
- package/lib/components/WaveformPlayer/styles.d.ts +257 -0
- package/lib/components/WaveformPlayer/styles.d.ts.map +1 -0
- package/lib/components/WaveformPlayer/styles.js +120 -0
- package/lib/components/WaveformPlayer/styles.js.map +1 -0
- package/lib/components/WaveformPlayer/types.d.ts +32 -0
- package/lib/components/WaveformPlayer/types.d.ts.map +1 -0
- package/lib/components/WaveformPlayer/types.js +2 -0
- package/lib/components/WaveformPlayer/types.js.map +1 -0
- package/lib/components/WaveformPlayer/useSendFlightReveal.d.ts +21 -0
- package/lib/components/WaveformPlayer/useSendFlightReveal.d.ts.map +1 -0
- package/lib/components/WaveformPlayer/useSendFlightReveal.js +105 -0
- package/lib/components/WaveformPlayer/useSendFlightReveal.js.map +1 -0
- package/lib/components/WaveformPlayer/useVoicePlayback.d.ts +39 -0
- package/lib/components/WaveformPlayer/useVoicePlayback.d.ts.map +1 -0
- package/lib/components/WaveformPlayer/useVoicePlayback.js +401 -0
- package/lib/components/WaveformPlayer/useVoicePlayback.js.map +1 -0
- package/lib/components/WaveformPlayer/useVoiceSource.d.ts +38 -0
- package/lib/components/WaveformPlayer/useVoiceSource.d.ts.map +1 -0
- package/lib/components/WaveformPlayer/useVoiceSource.js +244 -0
- package/lib/components/WaveformPlayer/useVoiceSource.js.map +1 -0
- package/lib/components/WaveformPlayer/useWaveformMotion.d.ts +16 -0
- package/lib/components/WaveformPlayer/useWaveformMotion.d.ts.map +1 -0
- package/lib/components/WaveformPlayer/useWaveformMotion.js +135 -0
- package/lib/components/WaveformPlayer/useWaveformMotion.js.map +1 -0
- package/lib/components/WaveformPlayer/useWaveformScrub.d.ts +16 -0
- package/lib/components/WaveformPlayer/useWaveformScrub.d.ts.map +1 -0
- package/lib/components/WaveformPlayer/useWaveformScrub.js +168 -0
- package/lib/components/WaveformPlayer/useWaveformScrub.js.map +1 -0
- package/lib/components/composerPanels.d.ts +13 -0
- package/lib/components/composerPanels.d.ts.map +1 -0
- package/lib/components/composerPanels.js +22 -0
- package/lib/components/composerPanels.js.map +1 -0
- package/lib/components/defaultMessageActions.d.ts +30 -0
- package/lib/components/defaultMessageActions.d.ts.map +1 -0
- package/lib/components/defaultMessageActions.js +124 -0
- package/lib/components/defaultMessageActions.js.map +1 -0
- package/lib/components/earpiece.d.ts +56 -0
- package/lib/components/earpiece.d.ts.map +1 -0
- package/lib/components/earpiece.js +218 -0
- package/lib/components/earpiece.js.map +1 -0
- package/lib/components/floatingNoteMath.d.ts +66 -0
- package/lib/components/floatingNoteMath.d.ts.map +1 -0
- package/lib/components/floatingNoteMath.js +143 -0
- package/lib/components/floatingNoteMath.js.map +1 -0
- package/lib/components/haptics.d.ts +5 -0
- package/lib/components/haptics.d.ts.map +1 -0
- package/lib/components/haptics.js +26 -0
- package/lib/components/haptics.js.map +1 -0
- package/lib/components/mediaDownload.d.ts +14 -0
- package/lib/components/mediaDownload.d.ts.map +1 -0
- package/lib/components/mediaDownload.js +43 -0
- package/lib/components/mediaDownload.js.map +1 -0
- package/lib/components/mediaPalette.d.ts +7 -2
- package/lib/components/mediaPalette.d.ts.map +1 -1
- package/lib/components/mediaPalette.js +27 -15
- package/lib/components/mediaPalette.js.map +1 -1
- package/lib/components/mediaPlayback.d.ts +204 -5
- package/lib/components/mediaPlayback.d.ts.map +1 -1
- package/lib/components/mediaPlayback.js +746 -17
- package/lib/components/mediaPlayback.js.map +1 -1
- package/lib/components/mediaTransfer.d.ts +29 -0
- package/lib/components/mediaTransfer.d.ts.map +1 -0
- package/lib/components/mediaTransfer.js +52 -0
- package/lib/components/mediaTransfer.js.map +1 -0
- package/lib/components/mediaViewer/MediaViewer.d.ts +17 -0
- package/lib/components/mediaViewer/MediaViewer.d.ts.map +1 -0
- package/lib/components/mediaViewer/MediaViewer.js +347 -0
- package/lib/components/mediaViewer/MediaViewer.js.map +1 -0
- package/lib/components/mediaViewer/MediaViewerChrome.d.ts +14 -0
- package/lib/components/mediaViewer/MediaViewerChrome.d.ts.map +1 -0
- package/lib/components/mediaViewer/MediaViewerChrome.js +164 -0
- package/lib/components/mediaViewer/MediaViewerChrome.js.map +1 -0
- package/lib/components/mediaViewer/MediaViewerHost.d.ts +10 -0
- package/lib/components/mediaViewer/MediaViewerHost.d.ts.map +1 -0
- package/lib/components/mediaViewer/MediaViewerHost.js +76 -0
- package/lib/components/mediaViewer/MediaViewerHost.js.map +1 -0
- package/lib/components/mediaViewer/MediaViewerPage.d.ts +25 -0
- package/lib/components/mediaViewer/MediaViewerPage.d.ts.map +1 -0
- package/lib/components/mediaViewer/MediaViewerPage.js +194 -0
- package/lib/components/mediaViewer/MediaViewerPage.js.map +1 -0
- package/lib/components/mediaViewer/gallery.d.ts +27 -0
- package/lib/components/mediaViewer/gallery.d.ts.map +1 -0
- package/lib/components/mediaViewer/gallery.js +41 -0
- package/lib/components/mediaViewer/gallery.js.map +1 -0
- package/lib/components/messageHighlight.d.ts +41 -0
- package/lib/components/messageHighlight.d.ts.map +1 -0
- package/lib/components/messageHighlight.js +157 -0
- package/lib/components/messageHighlight.js.map +1 -0
- package/lib/components/messagePress.d.ts +14 -0
- package/lib/components/messagePress.d.ts.map +1 -0
- package/lib/components/messagePress.js +18 -0
- package/lib/components/messagePress.js.map +1 -0
- package/lib/components/messageSelection.d.ts +39 -0
- package/lib/components/messageSelection.d.ts.map +1 -0
- package/lib/components/messageSelection.js +135 -0
- package/lib/components/messageSelection.js.map +1 -0
- package/lib/components/recordingFeedback.d.ts +22 -0
- package/lib/components/recordingFeedback.d.ts.map +1 -0
- package/lib/components/recordingFeedback.js +80 -0
- package/lib/components/recordingFeedback.js.map +1 -0
- package/lib/components/recordingMeter.d.ts +19 -0
- package/lib/components/recordingMeter.d.ts.map +1 -0
- package/lib/components/recordingMeter.js +21 -0
- package/lib/components/recordingMeter.js.map +1 -0
- package/lib/components/roundNoteChrome.d.ts +107 -0
- package/lib/components/roundNoteChrome.d.ts.map +1 -0
- package/lib/components/roundNoteChrome.js +249 -0
- package/lib/components/roundNoteChrome.js.map +1 -0
- package/lib/components/roundNotePlayers.d.ts +78 -0
- package/lib/components/roundNotePlayers.d.ts.map +1 -0
- package/lib/components/roundNotePlayers.js +230 -0
- package/lib/components/roundNotePlayers.js.map +1 -0
- package/lib/components/sendFlight.d.ts +88 -0
- package/lib/components/sendFlight.d.ts.map +1 -0
- package/lib/components/sendFlight.js +146 -0
- package/lib/components/sendFlight.js.map +1 -0
- package/lib/components/viewOnce.d.ts +27 -0
- package/lib/components/viewOnce.d.ts.map +1 -0
- package/lib/components/viewOnce.js +168 -0
- package/lib/components/viewOnce.js.map +1 -0
- package/lib/components/visionCamera.d.ts +45 -0
- package/lib/components/visionCamera.d.ts.map +1 -0
- package/lib/components/visionCamera.js +117 -0
- package/lib/components/visionCamera.js.map +1 -0
- package/lib/components/voiceEditing.d.ts +34 -0
- package/lib/components/voiceEditing.d.ts.map +1 -0
- package/lib/components/voiceEditing.js +159 -0
- package/lib/components/voiceEditing.js.map +1 -0
- package/lib/components/voiceWaveform.d.ts +108 -0
- package/lib/components/voiceWaveform.d.ts.map +1 -0
- package/lib/components/voiceWaveform.js +165 -0
- package/lib/components/voiceWaveform.js.map +1 -0
- package/lib/components/wallpaperGradient.d.ts +16 -0
- package/lib/components/wallpaperGradient.d.ts.map +1 -0
- package/lib/components/wallpaperGradient.js +186 -0
- package/lib/components/wallpaperGradient.js.map +1 -0
- package/lib/components/windowInsets.d.ts +11 -0
- package/lib/components/windowInsets.d.ts.map +1 -0
- package/lib/components/windowInsets.js +44 -0
- package/lib/components/windowInsets.js.map +1 -0
- package/lib/dayjsLocales.js +15 -2
- package/lib/dayjsLocales.js.map +1 -1
- package/lib/emoji/EmojiGrid/BackspaceButton.d.ts +11 -0
- package/lib/emoji/EmojiGrid/BackspaceButton.d.ts.map +1 -0
- package/lib/emoji/EmojiGrid/BackspaceButton.js +111 -0
- package/lib/emoji/EmojiGrid/BackspaceButton.js.map +1 -0
- package/lib/emoji/EmojiGrid/EmojiRow.d.ts +15 -0
- package/lib/emoji/EmojiGrid/EmojiRow.d.ts.map +1 -0
- package/lib/emoji/EmojiGrid/EmojiRow.js +71 -0
- package/lib/emoji/EmojiGrid/EmojiRow.js.map +1 -0
- package/lib/emoji/EmojiGrid/Search.d.ts +29 -0
- package/lib/emoji/EmojiGrid/Search.d.ts.map +1 -0
- package/lib/emoji/EmojiGrid/Search.js +234 -0
- package/lib/emoji/EmojiGrid/Search.js.map +1 -0
- package/lib/emoji/EmojiGrid/TabStrip.d.ts +16 -0
- package/lib/emoji/EmojiGrid/TabStrip.d.ts.map +1 -0
- package/lib/emoji/EmojiGrid/TabStrip.js +237 -0
- package/lib/emoji/EmojiGrid/TabStrip.js.map +1 -0
- package/lib/emoji/EmojiGrid/TonePopup.d.ts +12 -0
- package/lib/emoji/EmojiGrid/TonePopup.d.ts.map +1 -0
- package/lib/emoji/EmojiGrid/TonePopup.js +137 -0
- package/lib/emoji/EmojiGrid/TonePopup.js.map +1 -0
- package/lib/emoji/EmojiGrid/constants.d.ts +29 -0
- package/lib/emoji/EmojiGrid/constants.d.ts.map +1 -0
- package/lib/emoji/EmojiGrid/constants.js +65 -0
- package/lib/emoji/EmojiGrid/constants.js.map +1 -0
- package/lib/emoji/EmojiGrid/index.d.ts +10 -0
- package/lib/emoji/EmojiGrid/index.d.ts.map +1 -0
- package/lib/emoji/EmojiGrid/index.js +450 -0
- package/lib/emoji/EmojiGrid/index.js.map +1 -0
- package/lib/emoji/EmojiGrid/items.d.ts +25 -0
- package/lib/emoji/EmojiGrid/items.d.ts.map +1 -0
- package/lib/emoji/EmojiGrid/items.js +75 -0
- package/lib/emoji/EmojiGrid/items.js.map +1 -0
- package/lib/emoji/EmojiGrid/styles.d.ts +181 -0
- package/lib/emoji/EmojiGrid/styles.d.ts.map +1 -0
- package/lib/emoji/EmojiGrid/styles.js +184 -0
- package/lib/emoji/EmojiGrid/styles.js.map +1 -0
- package/lib/emoji/EmojiGrid/types.d.ts +53 -0
- package/lib/emoji/EmojiGrid/types.d.ts.map +1 -0
- package/lib/emoji/EmojiGrid/types.js +2 -0
- package/lib/emoji/EmojiGrid/types.js.map +1 -0
- package/lib/emoji/EmojiGrid/useTabScroll.d.ts +19 -0
- package/lib/emoji/EmojiGrid/useTabScroll.d.ts.map +1 -0
- package/lib/emoji/EmojiGrid/useTabScroll.js +124 -0
- package/lib/emoji/EmojiGrid/useTabScroll.js.map +1 -0
- package/lib/emoji/EmojiKeyboard.d.ts +79 -0
- package/lib/emoji/EmojiKeyboard.d.ts.map +1 -0
- package/lib/emoji/EmojiKeyboard.js +445 -0
- package/lib/emoji/EmojiKeyboard.js.map +1 -0
- package/lib/emoji/defaultExpandedPicker.d.ts +5 -0
- package/lib/emoji/defaultExpandedPicker.d.ts.map +1 -0
- package/lib/emoji/defaultExpandedPicker.js +11 -0
- package/lib/emoji/defaultExpandedPicker.js.map +1 -0
- package/lib/emoji/emojiData.d.ts +2 -0
- package/lib/emoji/emojiData.d.ts.map +1 -0
- package/lib/emoji/emojiData.js +5 -0
- package/lib/emoji/emojiData.js.map +1 -0
- package/lib/emoji/emojiStore.d.ts +70 -0
- package/lib/emoji/emojiStore.d.ts.map +1 -0
- package/lib/emoji/emojiStore.js +246 -0
- package/lib/emoji/emojiStore.js.map +1 -0
- package/lib/emoji/textEditing.d.ts +20 -0
- package/lib/emoji/textEditing.d.ts.map +1 -0
- package/lib/emoji/textEditing.js +97 -0
- package/lib/emoji/textEditing.js.map +1 -0
- package/lib/emojiOnly.d.ts +11 -0
- package/lib/emojiOnly.d.ts.map +1 -0
- package/lib/emojiOnly.js +79 -0
- package/lib/emojiOnly.js.map +1 -0
- package/lib/gestures/useRowSwipe.d.ts +43 -0
- package/lib/gestures/useRowSwipe.d.ts.map +1 -0
- package/lib/gestures/useRowSwipe.js +74 -0
- package/lib/gestures/useRowSwipe.js.map +1 -0
- package/lib/hooks/useAnimatedPresence.d.ts +22 -0
- package/lib/hooks/useAnimatedPresence.d.ts.map +1 -0
- package/lib/hooks/useAnimatedPresence.js +97 -0
- package/lib/hooks/useAnimatedPresence.js.map +1 -0
- package/lib/hooks/useChatMessages.d.ts +39 -0
- package/lib/hooks/useChatMessages.d.ts.map +1 -0
- package/lib/hooks/useChatMessages.js +125 -0
- package/lib/hooks/useChatMessages.js.map +1 -0
- package/lib/hooks/useColorScheme.d.ts +7 -1
- package/lib/hooks/useColorScheme.d.ts.map +1 -1
- package/lib/hooks/useColorScheme.js +46 -8
- package/lib/hooks/useColorScheme.js.map +1 -1
- package/lib/hooks/useHasKeyboardProvider.js +18 -7
- package/lib/hooks/useHasKeyboardProvider.js.map +1 -1
- package/lib/hooks/useIcons.js +15 -2
- package/lib/hooks/useIcons.js.map +1 -1
- package/lib/hooks/useIsKeyboardVisible.js +39 -17
- package/lib/hooks/useIsKeyboardVisible.js.map +1 -1
- package/lib/hooks/useIsRTL.js +15 -2
- package/lib/hooks/useIsRTL.js.map +1 -1
- package/lib/hooks/useKeyboardVerticalOffset.d.ts +5 -3
- package/lib/hooks/useKeyboardVerticalOffset.d.ts.map +1 -1
- package/lib/hooks/useKeyboardVerticalOffset.js +52 -18
- package/lib/hooks/useKeyboardVerticalOffset.js.map +1 -1
- package/lib/hooks/useLabels.js +15 -2
- package/lib/hooks/useLabels.js.map +1 -1
- package/lib/hooks/useStreamingMessages.js +200 -86
- package/lib/hooks/useStreamingMessages.js.map +1 -1
- package/lib/hooks/useTheme.js +56 -7
- package/lib/hooks/useTheme.js.map +1 -1
- package/lib/hooks/useUpdateLayoutEffect.d.ts.map +1 -1
- package/lib/hooks/useUpdateLayoutEffect.js +35 -11
- package/lib/hooks/useUpdateLayoutEffect.js.map +1 -1
- package/lib/i18n.d.ts +182 -0
- package/lib/i18n.d.ts.map +1 -1
- package/lib/i18n.js +121 -23
- package/lib/i18n.js.map +1 -1
- package/lib/index.d.ts +31 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +18 -1
- package/lib/index.js.map +1 -1
- package/lib/linkParser.d.ts +2 -1
- package/lib/linkParser.d.ts.map +1 -1
- package/lib/linkParser.js +323 -185
- package/lib/linkParser.js.map +1 -1
- package/lib/locales/ar.d.ts.map +1 -1
- package/lib/locales/ar.js +110 -19
- package/lib/locales/ar.js.map +1 -1
- package/lib/locales/de.d.ts.map +1 -1
- package/lib/locales/de.js +110 -19
- package/lib/locales/de.js.map +1 -1
- package/lib/locales/es.d.ts.map +1 -1
- package/lib/locales/es.js +110 -19
- package/lib/locales/es.js.map +1 -1
- package/lib/locales/fr.d.ts.map +1 -1
- package/lib/locales/fr.js +110 -19
- package/lib/locales/fr.js.map +1 -1
- package/lib/locales/hi.d.ts.map +1 -1
- package/lib/locales/hi.js +110 -19
- package/lib/locales/hi.js.map +1 -1
- package/lib/locales/id.d.ts.map +1 -1
- package/lib/locales/id.js +110 -19
- package/lib/locales/id.js.map +1 -1
- package/lib/locales/index.js +19 -5
- package/lib/locales/index.js.map +1 -1
- package/lib/locales/it.d.ts.map +1 -1
- package/lib/locales/it.js +110 -19
- package/lib/locales/it.js.map +1 -1
- package/lib/locales/ja.d.ts.map +1 -1
- package/lib/locales/ja.js +110 -19
- package/lib/locales/ja.js.map +1 -1
- package/lib/locales/ko.d.ts.map +1 -1
- package/lib/locales/ko.js +110 -19
- package/lib/locales/ko.js.map +1 -1
- package/lib/locales/nl.d.ts.map +1 -1
- package/lib/locales/nl.js +110 -19
- package/lib/locales/nl.js.map +1 -1
- package/lib/locales/pl.d.ts.map +1 -1
- package/lib/locales/pl.js +110 -19
- package/lib/locales/pl.js.map +1 -1
- package/lib/locales/pt.d.ts.map +1 -1
- package/lib/locales/pt.js +110 -19
- package/lib/locales/pt.js.map +1 -1
- package/lib/locales/ru.d.ts.map +1 -1
- package/lib/locales/ru.js +110 -19
- package/lib/locales/ru.js.map +1 -1
- package/lib/locales/tr.d.ts.map +1 -1
- package/lib/locales/tr.js +110 -19
- package/lib/locales/tr.js.map +1 -1
- package/lib/locales/zh.d.ts.map +1 -1
- package/lib/locales/zh.js +110 -19
- package/lib/locales/zh.js.map +1 -1
- package/lib/logging.d.ts +5 -0
- package/lib/logging.d.ts.map +1 -1
- package/lib/logging.js +13 -1
- package/lib/logging.js.map +1 -1
- package/lib/messageUtils.d.ts +19 -0
- package/lib/messageUtils.d.ts.map +1 -0
- package/lib/messageUtils.js +61 -0
- package/lib/messageUtils.js.map +1 -0
- package/lib/motion.d.ts +21 -0
- package/lib/motion.d.ts.map +1 -0
- package/lib/motion.js +30 -0
- package/lib/motion.js.map +1 -0
- package/lib/optional/index.d.ts +99 -0
- package/lib/optional/index.d.ts.map +1 -0
- package/lib/optional/index.js +284 -0
- package/lib/optional/index.js.map +1 -0
- package/lib/rtl.js +7 -5
- package/lib/rtl.js.map +1 -1
- package/lib/store.d.ts +40 -0
- package/lib/store.d.ts.map +1 -0
- package/lib/store.js +127 -0
- package/lib/store.js.map +1 -0
- package/lib/styles.d.ts +2 -2
- package/lib/styles.d.ts.map +1 -1
- package/lib/styles.js +15 -15
- package/lib/styles.js.map +1 -1
- package/lib/types.js +1 -0
- package/lib/types.js.map +1 -1
- package/lib/utils.d.ts +15 -0
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +199 -94
- package/lib/utils.js.map +1 -1
- package/llms.txt +133 -31
- package/package.json +89 -46
- package/lib/InputToolbar.d.ts +0 -49
- package/lib/InputToolbar.d.ts.map +0 -1
- package/lib/InputToolbar.js +0 -338
- package/lib/InputToolbar.js.map +0 -1
- package/lib/MessageVideo.d.ts.map +0 -1
- package/lib/MessageVideo.js +0 -162
- package/lib/MessageVideo.js.map +0 -1
- package/lib/MessagesContainer/FlashList.d.ts +0 -9
- package/lib/MessagesContainer/FlashList.d.ts.map +0 -1
- package/lib/MessagesContainer/FlashList.js +0 -23
- package/lib/MessagesContainer/FlashList.js.map +0 -1
- package/lib/components/ContextMenu.d.ts +0 -25
- package/lib/components/ContextMenu.d.ts.map +0 -1
- package/lib/components/ContextMenu.js +0 -122
- package/lib/components/ContextMenu.js.map +0 -1
- package/lib/components/VideoNoteRecorder.d.ts.map +0 -1
- package/lib/components/VideoNoteRecorder.js +0 -634
- package/lib/components/VideoNoteRecorder.js.map +0 -1
- package/lib/components/VoiceMessageInput.d.ts +0 -33
- package/lib/components/VoiceMessageInput.d.ts.map +0 -1
- package/lib/components/VoiceMessageInput.js +0 -403
- package/lib/components/VoiceMessageInput.js.map +0 -1
- package/lib/components/WaveformPlayer.d.ts +0 -19
- package/lib/components/WaveformPlayer.d.ts.map +0 -1
- package/lib/components/WaveformPlayer.js +0 -367
- package/lib/components/WaveformPlayer.js.map +0 -1
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Round note players that outlive their rows.
|
|
3
|
+
*
|
|
4
|
+
* The list virtualizes: scroll far enough from a playing round note and its
|
|
5
|
+
* row unmounts, which used to release its expo-video player and cut the note
|
|
6
|
+
* off mid-sentence. It should keep playing and float in a corner
|
|
7
|
+
* until its message is back on screen. So players live
|
|
8
|
+
* here, keyed by message id: a row borrows its note's player while mounted,
|
|
9
|
+
* and a note that is current when its row goes away is handed to a detached
|
|
10
|
+
* session that keeps driving the same player - the floating note shows it and
|
|
11
|
+
* the "now playing" bar keeps controlling it. When the row mounts again it
|
|
12
|
+
* takes the session back and carries on from where the player is.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/** The subset of expo-video's `VideoPlayer` used here. */
|
|
16
|
+
|
|
17
|
+
/** A detached note, waiting for its row to come back or for playback to end. */
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* How long a player with no rows lingers before it is released. A row that
|
|
21
|
+
* unmounts and mounts straight back (React's strict effects, a list re-render)
|
|
22
|
+
* picks up the same player instead of creating a new one.
|
|
23
|
+
*/
|
|
24
|
+
export const NOTE_PLAYER_GRACE_MS = 500;
|
|
25
|
+
const releasePlayer = player => {
|
|
26
|
+
try {
|
|
27
|
+
player.pause();
|
|
28
|
+
} catch {
|
|
29
|
+
// already torn down
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
player.release?.();
|
|
33
|
+
} catch {
|
|
34
|
+
// already torn down
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
export const createNotePlayerCache = (graceMs = NOTE_PLAYER_GRACE_MS) => {
|
|
38
|
+
const entries = new Map();
|
|
39
|
+
let active = true;
|
|
40
|
+
const cancelTimer = entry => {
|
|
41
|
+
if (entry.releaseTimer != null) {
|
|
42
|
+
clearTimeout(entry.releaseTimer);
|
|
43
|
+
entry.releaseTimer = null;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const scheduleRelease = (key, entry) => {
|
|
47
|
+
cancelTimer(entry);
|
|
48
|
+
if (entry.refs > 0 || entry.isKept) return;
|
|
49
|
+
entry.releaseTimer = setTimeout(() => {
|
|
50
|
+
entry.releaseTimer = null;
|
|
51
|
+
if (entry.refs > 0 || entry.isKept || entries.get(key) !== entry) return;
|
|
52
|
+
entries.delete(key);
|
|
53
|
+
releasePlayer(entry.player);
|
|
54
|
+
}, graceMs);
|
|
55
|
+
};
|
|
56
|
+
return {
|
|
57
|
+
get(key, create) {
|
|
58
|
+
const existing = entries.get(key);
|
|
59
|
+
if (existing) return existing.player;
|
|
60
|
+
const entry = {
|
|
61
|
+
player: create(),
|
|
62
|
+
refs: 0,
|
|
63
|
+
isKept: false,
|
|
64
|
+
detached: null,
|
|
65
|
+
releaseTimer: null
|
|
66
|
+
};
|
|
67
|
+
entries.set(key, entry);
|
|
68
|
+
// Created by a render that may never commit: release it unless a row
|
|
69
|
+
// retains it in time.
|
|
70
|
+
scheduleRelease(key, entry);
|
|
71
|
+
return entry.player;
|
|
72
|
+
},
|
|
73
|
+
retain(key) {
|
|
74
|
+
const entry = entries.get(key);
|
|
75
|
+
if (!entry) return;
|
|
76
|
+
entry.refs += 1;
|
|
77
|
+
cancelTimer(entry);
|
|
78
|
+
},
|
|
79
|
+
release(key) {
|
|
80
|
+
const entry = entries.get(key);
|
|
81
|
+
if (!entry) return;
|
|
82
|
+
entry.refs = Math.max(0, entry.refs - 1);
|
|
83
|
+
scheduleRelease(key, entry);
|
|
84
|
+
},
|
|
85
|
+
keep(key, isKept) {
|
|
86
|
+
const entry = entries.get(key);
|
|
87
|
+
if (!entry || entry.isKept === isKept) return;
|
|
88
|
+
entry.isKept = isKept;
|
|
89
|
+
scheduleRelease(key, entry);
|
|
90
|
+
},
|
|
91
|
+
setDetached(key, detached) {
|
|
92
|
+
const entry = entries.get(key);
|
|
93
|
+
if (entry) entry.detached = detached;
|
|
94
|
+
},
|
|
95
|
+
takeDetached(key) {
|
|
96
|
+
const entry = entries.get(key);
|
|
97
|
+
const detached = entry?.detached ?? null;
|
|
98
|
+
if (entry) entry.detached = null;
|
|
99
|
+
return detached;
|
|
100
|
+
},
|
|
101
|
+
setActive(isActive) {
|
|
102
|
+
active = isActive;
|
|
103
|
+
if (isActive) return;
|
|
104
|
+
for (const [key, entry] of [...entries]) {
|
|
105
|
+
const detached = entry.detached;
|
|
106
|
+
entry.detached = null;
|
|
107
|
+
try {
|
|
108
|
+
detached?.end();
|
|
109
|
+
} catch {
|
|
110
|
+
// keep tearing the rest down
|
|
111
|
+
}
|
|
112
|
+
entry.isKept = false;
|
|
113
|
+
if (entry.refs === 0) {
|
|
114
|
+
cancelTimer(entry);
|
|
115
|
+
entries.delete(key);
|
|
116
|
+
releasePlayer(entry.player);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
isActive() {
|
|
121
|
+
return active;
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
/** What a detached note needs from the chat around it. */
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Keeps a current round note going after its row unmounted. The player stays
|
|
130
|
+
* as the row left it, playing or paused; this answers the "now playing" bar
|
|
131
|
+
* and the floating note, stops when another note starts, and on the note's
|
|
132
|
+
* natural end resets the player and hands over to the next note, as the row
|
|
133
|
+
* would have.
|
|
134
|
+
*/
|
|
135
|
+
export const detachRoundNote = (key, player, isPlaying, host) => {
|
|
136
|
+
const claimId = `detached-round:${String(key)}`;
|
|
137
|
+
let playing = isPlaying;
|
|
138
|
+
let isOver = false;
|
|
139
|
+
|
|
140
|
+
// Only while playing: on iOS a rate set on a paused player starts it.
|
|
141
|
+
const unsubscribeRate = host.subscribeRate(rate => {
|
|
142
|
+
if (!playing) return;
|
|
143
|
+
try {
|
|
144
|
+
player.playbackRate = rate;
|
|
145
|
+
} catch {
|
|
146
|
+
// already torn down
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
let endSubscription;
|
|
150
|
+
const detach = () => {
|
|
151
|
+
isOver = true;
|
|
152
|
+
endSubscription?.remove?.();
|
|
153
|
+
unsubscribeRate();
|
|
154
|
+
host.unclaim(claimId);
|
|
155
|
+
host.cache.setDetached(key, null);
|
|
156
|
+
};
|
|
157
|
+
const end = () => {
|
|
158
|
+
if (isOver) return;
|
|
159
|
+
detach();
|
|
160
|
+
// Back to rest, so a row that mounts later shows the first frame.
|
|
161
|
+
// The rate first: set after the pause, it would start the player again.
|
|
162
|
+
try {
|
|
163
|
+
player.playbackRate = 1;
|
|
164
|
+
player.pause();
|
|
165
|
+
player.muted = true;
|
|
166
|
+
player.currentTime = 0;
|
|
167
|
+
} catch {
|
|
168
|
+
// already torn down
|
|
169
|
+
}
|
|
170
|
+
host.report(null);
|
|
171
|
+
host.cache.keep(key, false);
|
|
172
|
+
};
|
|
173
|
+
const pause = () => {
|
|
174
|
+
try {
|
|
175
|
+
player.pause();
|
|
176
|
+
} catch {
|
|
177
|
+
// already torn down
|
|
178
|
+
}
|
|
179
|
+
playing = false;
|
|
180
|
+
publish();
|
|
181
|
+
};
|
|
182
|
+
const toggle = () => {
|
|
183
|
+
if (isOver) return;
|
|
184
|
+
if (playing) {
|
|
185
|
+
pause();
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
try {
|
|
189
|
+
player.playbackRate = host.getRate();
|
|
190
|
+
player.play();
|
|
191
|
+
} catch {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
playing = true;
|
|
195
|
+
host.claim(claimId, onStop);
|
|
196
|
+
publish();
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
// Another note starting ends this one (`cleanupPlayer`); a recording only
|
|
200
|
+
// pauses it, and it stays current.
|
|
201
|
+
const onStop = reason => {
|
|
202
|
+
if (reason === 'replaced') end();else pause();
|
|
203
|
+
};
|
|
204
|
+
const publish = () => {
|
|
205
|
+
if (!isOver) host.report({
|
|
206
|
+
isPlaying: playing,
|
|
207
|
+
toggle,
|
|
208
|
+
stop: end
|
|
209
|
+
});
|
|
210
|
+
};
|
|
211
|
+
endSubscription = player.addListener?.('playToEnd', () => {
|
|
212
|
+
if (isOver) return;
|
|
213
|
+
end();
|
|
214
|
+
host.onEnded();
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
// A paused note keeps its claim too, so a later note still ends it.
|
|
218
|
+
host.claim(claimId, onStop);
|
|
219
|
+
publish();
|
|
220
|
+
const detached = {
|
|
221
|
+
adopt() {
|
|
222
|
+
if (!isOver) detach();
|
|
223
|
+
return playing;
|
|
224
|
+
},
|
|
225
|
+
end
|
|
226
|
+
};
|
|
227
|
+
host.cache.setDetached(key, detached);
|
|
228
|
+
return detached;
|
|
229
|
+
};
|
|
230
|
+
//# sourceMappingURL=roundNotePlayers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roundNotePlayers.js","names":["NOTE_PLAYER_GRACE_MS","releasePlayer","player","pause","release","createNotePlayerCache","graceMs","entries","Map","active","cancelTimer","entry","releaseTimer","clearTimeout","scheduleRelease","key","refs","isKept","setTimeout","get","delete","create","existing","detached","set","retain","Math","max","keep","setDetached","takeDetached","setActive","isActive","end","detachRoundNote","isPlaying","host","claimId","String","playing","isOver","unsubscribeRate","subscribeRate","rate","playbackRate","endSubscription","detach","remove","unclaim","cache","muted","currentTime","report","publish","toggle","getRate","play","claim","onStop","reason","stop","addListener","onEnded","adopt"],"sources":["../../src/components/roundNotePlayers.ts"],"sourcesContent":["/*\n * Round note players that outlive their rows.\n *\n * The list virtualizes: scroll far enough from a playing round note and its\n * row unmounts, which used to release its expo-video player and cut the note\n * off mid-sentence. It should keep playing and float in a corner\n * until its message is back on screen. So players live\n * here, keyed by message id: a row borrows its note's player while mounted,\n * and a note that is current when its row goes away is handed to a detached\n * session that keeps driving the same player - the floating note shows it and\n * the \"now playing\" bar keeps controlling it. When the row mounts again it\n * takes the session back and carries on from where the player is.\n */\n\n/** The subset of expo-video's `VideoPlayer` used here. */\nexport interface NotePlayer {\n play: () => void\n pause: () => void\n release?: () => void\n playing?: boolean\n muted: boolean\n loop: boolean\n currentTime: number\n playbackRate: number\n duration?: number\n /** `idle`, `loading`, `readyToPlay` or `error`. */\n status?: string\n /** Seconds buffered ahead. */\n bufferedPosition?: number\n addListener?: (event: string, listener: (payload?: any) => void) => { remove?: () => void } | undefined\n}\n\n/** A detached note, waiting for its row to come back or for playback to end. */\nexport interface DetachedRound {\n /** The row is back: stop driving the player and say whether it was playing. */\n adopt: () => boolean\n /** End it: playback stops and the player can be released. */\n end: () => void\n}\n\ninterface Entry {\n player: NotePlayer\n refs: number\n /** Kept alive past its last row because the note is current. */\n isKept: boolean\n detached: DetachedRound | null\n releaseTimer: ReturnType<typeof setTimeout> | null\n}\n\n/**\n * How long a player with no rows lingers before it is released. A row that\n * unmounts and mounts straight back (React's strict effects, a list re-render)\n * picks up the same player instead of creating a new one.\n */\nexport const NOTE_PLAYER_GRACE_MS = 500\n\nconst releasePlayer = (player: NotePlayer) => {\n try {\n player.pause()\n } catch {\n // already torn down\n }\n try {\n player.release?.()\n } catch {\n // already torn down\n }\n}\n\nexport interface NotePlayerCache {\n /** The player for `key`, creating it on first use. Call during render. */\n get: (key: string | number, create: () => NotePlayer) => NotePlayer\n /** A mounted row holds the player. */\n retain: (key: string | number) => void\n /** The row unmounted. The player goes once no row holds it and it is not kept. */\n release: (key: string | number) => void\n /** Keep the player alive past its rows while the note is current. */\n keep: (key: string | number, isKept: boolean) => void\n setDetached: (key: string | number, detached: DetachedRound | null) => void\n /** Hands a detached note back to its row, if there is one. */\n takeDetached: (key: string | number) => DetachedRound | null\n /**\n * The chat mounts (`true`) or goes away (`false`). Going away ends every\n * detached note and drops the players no row holds; rows unmounting with it\n * then stop their notes instead of detaching them.\n */\n setActive: (isActive: boolean) => void\n isActive: () => boolean\n}\n\nexport const createNotePlayerCache = (graceMs = NOTE_PLAYER_GRACE_MS): NotePlayerCache => {\n const entries = new Map<string | number, Entry>()\n let active = true\n\n const cancelTimer = (entry: Entry) => {\n if (entry.releaseTimer != null) {\n clearTimeout(entry.releaseTimer)\n entry.releaseTimer = null\n }\n }\n\n const scheduleRelease = (key: string | number, entry: Entry) => {\n cancelTimer(entry)\n if (entry.refs > 0 || entry.isKept)\n return\n\n entry.releaseTimer = setTimeout(() => {\n entry.releaseTimer = null\n if (entry.refs > 0 || entry.isKept || entries.get(key) !== entry)\n return\n\n entries.delete(key)\n releasePlayer(entry.player)\n }, graceMs)\n }\n\n return {\n get (key, create) {\n const existing = entries.get(key)\n if (existing)\n return existing.player\n\n const entry: Entry = { player: create(), refs: 0, isKept: false, detached: null, releaseTimer: null }\n entries.set(key, entry)\n // Created by a render that may never commit: release it unless a row\n // retains it in time.\n scheduleRelease(key, entry)\n return entry.player\n },\n retain (key) {\n const entry = entries.get(key)\n if (!entry)\n return\n\n entry.refs += 1\n cancelTimer(entry)\n },\n release (key) {\n const entry = entries.get(key)\n if (!entry)\n return\n\n entry.refs = Math.max(0, entry.refs - 1)\n scheduleRelease(key, entry)\n },\n keep (key, isKept) {\n const entry = entries.get(key)\n if (!entry || entry.isKept === isKept)\n return\n\n entry.isKept = isKept\n scheduleRelease(key, entry)\n },\n setDetached (key, detached) {\n const entry = entries.get(key)\n if (entry)\n entry.detached = detached\n },\n takeDetached (key) {\n const entry = entries.get(key)\n const detached = entry?.detached ?? null\n if (entry)\n entry.detached = null\n return detached\n },\n setActive (isActive) {\n active = isActive\n if (isActive)\n return\n\n for (const [key, entry] of [...entries]) {\n const detached = entry.detached\n entry.detached = null\n try {\n detached?.end()\n } catch {\n // keep tearing the rest down\n }\n entry.isKept = false\n if (entry.refs === 0) {\n cancelTimer(entry)\n entries.delete(key)\n releasePlayer(entry.player)\n }\n }\n },\n isActive () {\n return active\n },\n }\n}\n\n/** What a detached note needs from the chat around it. */\nexport interface DetachedRoundHost {\n cache: NotePlayerCache\n claim: (id: string, stop: (reason: 'replaced' | 'paused') => void) => void\n unclaim: (id: string) => void\n getRate: () => number\n subscribeRate: (listener: (rate: number) => void) => () => void\n /** Publish the note's state, or `null` once it is over. */\n report: (state: { isPlaying: boolean, toggle: () => void, stop: () => void } | null) => void\n /** It reached its end on its own: auto-play the next note. */\n onEnded: () => void\n}\n\n/**\n * Keeps a current round note going after its row unmounted. The player stays\n * as the row left it, playing or paused; this answers the \"now playing\" bar\n * and the floating note, stops when another note starts, and on the note's\n * natural end resets the player and hands over to the next note, as the row\n * would have.\n */\nexport const detachRoundNote = (\n key: string | number,\n player: NotePlayer,\n isPlaying: boolean,\n host: DetachedRoundHost\n): DetachedRound => {\n const claimId = `detached-round:${String(key)}`\n let playing = isPlaying\n let isOver = false\n\n // Only while playing: on iOS a rate set on a paused player starts it.\n const unsubscribeRate = host.subscribeRate(rate => {\n if (!playing)\n return\n\n try {\n player.playbackRate = rate\n } catch {\n // already torn down\n }\n })\n let endSubscription: { remove?: () => void } | undefined\n\n const detach = () => {\n isOver = true\n endSubscription?.remove?.()\n unsubscribeRate()\n host.unclaim(claimId)\n host.cache.setDetached(key, null)\n }\n\n const end = () => {\n if (isOver)\n return\n\n detach()\n // Back to rest, so a row that mounts later shows the first frame.\n // The rate first: set after the pause, it would start the player again.\n try {\n player.playbackRate = 1\n player.pause()\n player.muted = true\n player.currentTime = 0\n } catch {\n // already torn down\n }\n host.report(null)\n host.cache.keep(key, false)\n }\n\n const pause = () => {\n try {\n player.pause()\n } catch {\n // already torn down\n }\n playing = false\n publish()\n }\n\n const toggle = () => {\n if (isOver)\n return\n\n if (playing) {\n pause()\n return\n }\n\n try {\n player.playbackRate = host.getRate()\n player.play()\n } catch {\n return\n }\n playing = true\n host.claim(claimId, onStop)\n publish()\n }\n\n // Another note starting ends this one (`cleanupPlayer`); a recording only\n // pauses it, and it stays current.\n const onStop = (reason: 'replaced' | 'paused') => {\n if (reason === 'replaced')\n end()\n else\n pause()\n }\n\n const publish = () => {\n if (!isOver)\n host.report({ isPlaying: playing, toggle, stop: end })\n }\n\n endSubscription = player.addListener?.('playToEnd', () => {\n if (isOver)\n return\n\n end()\n host.onEnded()\n })\n\n // A paused note keeps its claim too, so a later note still ends it.\n host.claim(claimId, onStop)\n publish()\n\n const detached: DetachedRound = {\n adopt () {\n if (!isOver)\n detach()\n return playing\n },\n end,\n }\n host.cache.setDetached(key, detached)\n return detached\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAkBA;;AAiBA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,oBAAoB,GAAG,GAAG;AAEvC,MAAMC,aAAa,GAAIC,MAAkB,IAAK;EAC5C,IAAI;IACFA,MAAM,CAACC,KAAK,CAAC,CAAC;EAChB,CAAC,CAAC,MAAM;IACN;EAAA;EAEF,IAAI;IACFD,MAAM,CAACE,OAAO,GAAG,CAAC;EACpB,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ,CAAC;AAuBD,OAAO,MAAMC,qBAAqB,GAAGA,CAACC,OAAO,GAAGN,oBAAoB,KAAsB;EACxF,MAAMO,OAAO,GAAG,IAAIC,GAAG,CAAyB,CAAC;EACjD,IAAIC,MAAM,GAAG,IAAI;EAEjB,MAAMC,WAAW,GAAIC,KAAY,IAAK;IACpC,IAAIA,KAAK,CAACC,YAAY,IAAI,IAAI,EAAE;MAC9BC,YAAY,CAACF,KAAK,CAACC,YAAY,CAAC;MAChCD,KAAK,CAACC,YAAY,GAAG,IAAI;IAC3B;EACF,CAAC;EAED,MAAME,eAAe,GAAGA,CAACC,GAAoB,EAAEJ,KAAY,KAAK;IAC9DD,WAAW,CAACC,KAAK,CAAC;IAClB,IAAIA,KAAK,CAACK,IAAI,GAAG,CAAC,IAAIL,KAAK,CAACM,MAAM,EAChC;IAEFN,KAAK,CAACC,YAAY,GAAGM,UAAU,CAAC,MAAM;MACpCP,KAAK,CAACC,YAAY,GAAG,IAAI;MACzB,IAAID,KAAK,CAACK,IAAI,GAAG,CAAC,IAAIL,KAAK,CAACM,MAAM,IAAIV,OAAO,CAACY,GAAG,CAACJ,GAAG,CAAC,KAAKJ,KAAK,EAC9D;MAEFJ,OAAO,CAACa,MAAM,CAACL,GAAG,CAAC;MACnBd,aAAa,CAACU,KAAK,CAACT,MAAM,CAAC;IAC7B,CAAC,EAAEI,OAAO,CAAC;EACb,CAAC;EAED,OAAO;IACLa,GAAGA,CAAEJ,GAAG,EAAEM,MAAM,EAAE;MAChB,MAAMC,QAAQ,GAAGf,OAAO,CAACY,GAAG,CAACJ,GAAG,CAAC;MACjC,IAAIO,QAAQ,EACV,OAAOA,QAAQ,CAACpB,MAAM;MAExB,MAAMS,KAAY,GAAG;QAAET,MAAM,EAAEmB,MAAM,CAAC,CAAC;QAAEL,IAAI,EAAE,CAAC;QAAEC,MAAM,EAAE,KAAK;QAAEM,QAAQ,EAAE,IAAI;QAAEX,YAAY,EAAE;MAAK,CAAC;MACrGL,OAAO,CAACiB,GAAG,CAACT,GAAG,EAAEJ,KAAK,CAAC;MACvB;MACA;MACAG,eAAe,CAACC,GAAG,EAAEJ,KAAK,CAAC;MAC3B,OAAOA,KAAK,CAACT,MAAM;IACrB,CAAC;IACDuB,MAAMA,CAAEV,GAAG,EAAE;MACX,MAAMJ,KAAK,GAAGJ,OAAO,CAACY,GAAG,CAACJ,GAAG,CAAC;MAC9B,IAAI,CAACJ,KAAK,EACR;MAEFA,KAAK,CAACK,IAAI,IAAI,CAAC;MACfN,WAAW,CAACC,KAAK,CAAC;IACpB,CAAC;IACDP,OAAOA,CAAEW,GAAG,EAAE;MACZ,MAAMJ,KAAK,GAAGJ,OAAO,CAACY,GAAG,CAACJ,GAAG,CAAC;MAC9B,IAAI,CAACJ,KAAK,EACR;MAEFA,KAAK,CAACK,IAAI,GAAGU,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEhB,KAAK,CAACK,IAAI,GAAG,CAAC,CAAC;MACxCF,eAAe,CAACC,GAAG,EAAEJ,KAAK,CAAC;IAC7B,CAAC;IACDiB,IAAIA,CAAEb,GAAG,EAAEE,MAAM,EAAE;MACjB,MAAMN,KAAK,GAAGJ,OAAO,CAACY,GAAG,CAACJ,GAAG,CAAC;MAC9B,IAAI,CAACJ,KAAK,IAAIA,KAAK,CAACM,MAAM,KAAKA,MAAM,EACnC;MAEFN,KAAK,CAACM,MAAM,GAAGA,MAAM;MACrBH,eAAe,CAACC,GAAG,EAAEJ,KAAK,CAAC;IAC7B,CAAC;IACDkB,WAAWA,CAAEd,GAAG,EAAEQ,QAAQ,EAAE;MAC1B,MAAMZ,KAAK,GAAGJ,OAAO,CAACY,GAAG,CAACJ,GAAG,CAAC;MAC9B,IAAIJ,KAAK,EACPA,KAAK,CAACY,QAAQ,GAAGA,QAAQ;IAC7B,CAAC;IACDO,YAAYA,CAAEf,GAAG,EAAE;MACjB,MAAMJ,KAAK,GAAGJ,OAAO,CAACY,GAAG,CAACJ,GAAG,CAAC;MAC9B,MAAMQ,QAAQ,GAAGZ,KAAK,EAAEY,QAAQ,IAAI,IAAI;MACxC,IAAIZ,KAAK,EACPA,KAAK,CAACY,QAAQ,GAAG,IAAI;MACvB,OAAOA,QAAQ;IACjB,CAAC;IACDQ,SAASA,CAAEC,QAAQ,EAAE;MACnBvB,MAAM,GAAGuB,QAAQ;MACjB,IAAIA,QAAQ,EACV;MAEF,KAAK,MAAM,CAACjB,GAAG,EAAEJ,KAAK,CAAC,IAAI,CAAC,GAAGJ,OAAO,CAAC,EAAE;QACvC,MAAMgB,QAAQ,GAAGZ,KAAK,CAACY,QAAQ;QAC/BZ,KAAK,CAACY,QAAQ,GAAG,IAAI;QACrB,IAAI;UACFA,QAAQ,EAAEU,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,MAAM;UACN;QAAA;QAEFtB,KAAK,CAACM,MAAM,GAAG,KAAK;QACpB,IAAIN,KAAK,CAACK,IAAI,KAAK,CAAC,EAAE;UACpBN,WAAW,CAACC,KAAK,CAAC;UAClBJ,OAAO,CAACa,MAAM,CAACL,GAAG,CAAC;UACnBd,aAAa,CAACU,KAAK,CAACT,MAAM,CAAC;QAC7B;MACF;IACF,CAAC;IACD8B,QAAQA,CAAA,EAAI;MACV,OAAOvB,MAAM;IACf;EACF,CAAC;AACH,CAAC;;AAED;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMyB,eAAe,GAAGA,CAC7BnB,GAAoB,EACpBb,MAAkB,EAClBiC,SAAkB,EAClBC,IAAuB,KACL;EAClB,MAAMC,OAAO,GAAG,kBAAkBC,MAAM,CAACvB,GAAG,CAAC,EAAE;EAC/C,IAAIwB,OAAO,GAAGJ,SAAS;EACvB,IAAIK,MAAM,GAAG,KAAK;;EAElB;EACA,MAAMC,eAAe,GAAGL,IAAI,CAACM,aAAa,CAACC,IAAI,IAAI;IACjD,IAAI,CAACJ,OAAO,EACV;IAEF,IAAI;MACFrC,MAAM,CAAC0C,YAAY,GAAGD,IAAI;IAC5B,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ,CAAC,CAAC;EACF,IAAIE,eAAoD;EAExD,MAAMC,MAAM,GAAGA,CAAA,KAAM;IACnBN,MAAM,GAAG,IAAI;IACbK,eAAe,EAAEE,MAAM,GAAG,CAAC;IAC3BN,eAAe,CAAC,CAAC;IACjBL,IAAI,CAACY,OAAO,CAACX,OAAO,CAAC;IACrBD,IAAI,CAACa,KAAK,CAACpB,WAAW,CAACd,GAAG,EAAE,IAAI,CAAC;EACnC,CAAC;EAED,MAAMkB,GAAG,GAAGA,CAAA,KAAM;IAChB,IAAIO,MAAM,EACR;IAEFM,MAAM,CAAC,CAAC;IACR;IACA;IACA,IAAI;MACF5C,MAAM,CAAC0C,YAAY,GAAG,CAAC;MACvB1C,MAAM,CAACC,KAAK,CAAC,CAAC;MACdD,MAAM,CAACgD,KAAK,GAAG,IAAI;MACnBhD,MAAM,CAACiD,WAAW,GAAG,CAAC;IACxB,CAAC,CAAC,MAAM;MACN;IAAA;IAEFf,IAAI,CAACgB,MAAM,CAAC,IAAI,CAAC;IACjBhB,IAAI,CAACa,KAAK,CAACrB,IAAI,CAACb,GAAG,EAAE,KAAK,CAAC;EAC7B,CAAC;EAED,MAAMZ,KAAK,GAAGA,CAAA,KAAM;IAClB,IAAI;MACFD,MAAM,CAACC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,MAAM;MACN;IAAA;IAEFoC,OAAO,GAAG,KAAK;IACfc,OAAO,CAAC,CAAC;EACX,CAAC;EAED,MAAMC,MAAM,GAAGA,CAAA,KAAM;IACnB,IAAId,MAAM,EACR;IAEF,IAAID,OAAO,EAAE;MACXpC,KAAK,CAAC,CAAC;MACP;IACF;IAEA,IAAI;MACFD,MAAM,CAAC0C,YAAY,GAAGR,IAAI,CAACmB,OAAO,CAAC,CAAC;MACpCrD,MAAM,CAACsD,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,MAAM;MACN;IACF;IACAjB,OAAO,GAAG,IAAI;IACdH,IAAI,CAACqB,KAAK,CAACpB,OAAO,EAAEqB,MAAM,CAAC;IAC3BL,OAAO,CAAC,CAAC;EACX,CAAC;;EAED;EACA;EACA,MAAMK,MAAM,GAAIC,MAA6B,IAAK;IAChD,IAAIA,MAAM,KAAK,UAAU,EACvB1B,GAAG,CAAC,CAAC,MAEL9B,KAAK,CAAC,CAAC;EACX,CAAC;EAED,MAAMkD,OAAO,GAAGA,CAAA,KAAM;IACpB,IAAI,CAACb,MAAM,EACTJ,IAAI,CAACgB,MAAM,CAAC;MAAEjB,SAAS,EAAEI,OAAO;MAAEe,MAAM;MAAEM,IAAI,EAAE3B;IAAI,CAAC,CAAC;EAC1D,CAAC;EAEDY,eAAe,GAAG3C,MAAM,CAAC2D,WAAW,GAAG,WAAW,EAAE,MAAM;IACxD,IAAIrB,MAAM,EACR;IAEFP,GAAG,CAAC,CAAC;IACLG,IAAI,CAAC0B,OAAO,CAAC,CAAC;EAChB,CAAC,CAAC;;EAEF;EACA1B,IAAI,CAACqB,KAAK,CAACpB,OAAO,EAAEqB,MAAM,CAAC;EAC3BL,OAAO,CAAC,CAAC;EAET,MAAM9B,QAAuB,GAAG;IAC9BwC,KAAKA,CAAA,EAAI;MACP,IAAI,CAACvB,MAAM,EACTM,MAAM,CAAC,CAAC;MACV,OAAOP,OAAO;IAChB,CAAC;IACDN;EACF,CAAC;EACDG,IAAI,CAACa,KAAK,CAACpB,WAAW,CAACd,GAAG,EAAEQ,QAAQ,CAAC;EACrC,OAAOA,QAAQ;AACjB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The send flights, for a voice note and a round one: the take's
|
|
3
|
+
* circle in the composer flies into the message that has just been sent, and
|
|
4
|
+
* that message's own button / note stays hidden until it lands.
|
|
5
|
+
*
|
|
6
|
+
* The composer and the message list never meet, so this tiny store hands the
|
|
7
|
+
* landing spot from one to the other. The source (the record button, the
|
|
8
|
+
* camera circle) expects a flight when it sends; the just-sent message lands
|
|
9
|
+
* with its target in window coordinates; the source flies there and reports
|
|
10
|
+
* back when it has arrived.
|
|
11
|
+
*/
|
|
12
|
+
export type SendFlightKind = 'voice' | 'round';
|
|
13
|
+
/** A voice note's play button: its centre, radius and fill. */
|
|
14
|
+
export interface VoiceFlightTarget {
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
radius: number;
|
|
18
|
+
color: string;
|
|
19
|
+
/** The play glyph's colour, so the flight can draw it in as it lands. */
|
|
20
|
+
iconColor?: string;
|
|
21
|
+
}
|
|
22
|
+
/** A round note in the list: its top-left corner and diameter. */
|
|
23
|
+
export interface RoundFlightTarget {
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
size: number;
|
|
27
|
+
}
|
|
28
|
+
interface TargetFor {
|
|
29
|
+
voice: VoiceFlightTarget;
|
|
30
|
+
round: RoundFlightTarget;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A message counts as the flight's target only this soon after the send:
|
|
34
|
+
* the take still has to be written and the list has to lay the row out.
|
|
35
|
+
*/
|
|
36
|
+
export declare const SEND_FLIGHT_EXPECT_MS = 1500;
|
|
37
|
+
/** The source waits this long for a target before playing its own exit. */
|
|
38
|
+
export declare const SEND_FLIGHT_WAIT_MS = 500;
|
|
39
|
+
/**
|
|
40
|
+
* A landed target shows itself anyway after this long, in case the source
|
|
41
|
+
* went away mid-flight without reporting back.
|
|
42
|
+
*/
|
|
43
|
+
export declare const SEND_FLIGHT_SAFETY_MS = 1500;
|
|
44
|
+
/** `VoiceMessageEnterTransition`: 220ms of linear progress. */
|
|
45
|
+
export declare const VOICE_FLIGHT_MS = 220;
|
|
46
|
+
/** The record circle's blobs are gone by 60% of it (`step1Time`). */
|
|
47
|
+
export declare const VOICE_FLIGHT_BLOB_SHARE = 0.6;
|
|
48
|
+
/** The round note flight: 300ms, then a 100ms crossfade. */
|
|
49
|
+
export declare const ROUND_FLIGHT_MS = 300;
|
|
50
|
+
export declare const ROUND_FLIGHT_FADE_MS = 100;
|
|
51
|
+
/** The landed button fades in under the flight's disc, which then goes. */
|
|
52
|
+
export declare const SEND_FLIGHT_REVEAL_MS = 120;
|
|
53
|
+
type Listener<T> = (value: T) => void;
|
|
54
|
+
/** The source has sent a take and will fly its circle into the new message. */
|
|
55
|
+
export declare function expectSendFlight(kind: SendFlightKind, now?: number): void;
|
|
56
|
+
/**
|
|
57
|
+
* A flight is on its way and nothing has landed yet, so a just-sent message
|
|
58
|
+
* can start hidden instead of flashing for the frame its measure takes.
|
|
59
|
+
*/
|
|
60
|
+
export declare function isSendFlightExpected(kind: SendFlightKind, now?: number): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* A just-sent message offers itself as the flight's target. Returns true when
|
|
63
|
+
* a flight was expected: the caller then hides its button / note until
|
|
64
|
+
* `onSendFlightFinished` fires. Only the first message to land is taken.
|
|
65
|
+
*/
|
|
66
|
+
export declare function landSendFlight<K extends SendFlightKind>(kind: K, target: TargetFor[K], now?: number): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* The source listens for its target. Fires at once when one has already
|
|
69
|
+
* landed (the row can lay out before the source subscribes).
|
|
70
|
+
*/
|
|
71
|
+
export declare function onSendFlightTarget<K extends SendFlightKind>(kind: K, listener: Listener<TargetFor[K]>): () => void;
|
|
72
|
+
/**
|
|
73
|
+
* The source gave up waiting and plays its own exit, so a message landing
|
|
74
|
+
* late is not hidden for a flight that will never come.
|
|
75
|
+
*/
|
|
76
|
+
export declare function abandonSendFlight(kind: SendFlightKind): void;
|
|
77
|
+
/** The flight has arrived: the target shows its own button / note again. */
|
|
78
|
+
export declare function finishSendFlight(kind: SendFlightKind): void;
|
|
79
|
+
/** The target listens for the flight's arrival. */
|
|
80
|
+
export declare function onSendFlightFinished(kind: SendFlightKind, listener: () => void): () => void;
|
|
81
|
+
/** Test-only: forget every flight and listener. */
|
|
82
|
+
export declare function resetSendFlights(): void;
|
|
83
|
+
/** The default cubic bezier (0.25, 0.1, 0.25, 1). */
|
|
84
|
+
export declare const easeDefault: (t: number) => number;
|
|
85
|
+
/** Ease-out quint (0.23, 1, 0.32, 1). */
|
|
86
|
+
export declare const easeOutQuint: (t: number) => number;
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=sendFlight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendFlight.d.ts","sourceRoot":"","sources":["../../src/components/sendFlight.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,CAAA;AAE9C,+DAA+D;AAC/D,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,iBAAiB,CAAA;IACxB,KAAK,EAAE,iBAAiB,CAAA;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,OAAO,CAAA;AACzC,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,MAAM,CAAA;AACtC;;;GAGG;AACH,eAAO,MAAM,qBAAqB,OAAO,CAAA;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,eAAe,MAAM,CAAA;AAClC,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,MAAM,CAAA;AAC1C,4DAA4D;AAC5D,eAAO,MAAM,eAAe,MAAM,CAAA;AAClC,eAAO,MAAM,oBAAoB,MAAM,CAAA;AACvC,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,MAAM,CAAA;AAExC,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;AAsBrC,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,cAAc,EAAE,GAAG,SAAa,QAIvE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAE,IAAI,EAAE,cAAc,EAAE,GAAG,SAAa,WAG3E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,EAAG,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,SAAa,WAQxG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,cAAc,EAAG,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAQtG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAE,IAAI,EAAE,cAAc,QAItD;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,cAAc,QAOrD;AAED,mDAAmD;AACnD,wBAAgB,oBAAoB,CAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,IAAI,cAM/E;AAED,mDAAmD;AACnD,wBAAgB,gBAAgB,SAQ/B;AAYD,qDAAqD;AACrD,eAAO,MAAM,WAAW,MAPR,MAAM,KAAK,MAO+C,CAAA;AAC1E,yCAAyC;AACzC,eAAO,MAAM,YAAY,MATT,MAAM,KAAK,MAS8C,CAAA"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { Easing } from 'react-native-reanimated';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The send flights, for a voice note and a round one: the take's
|
|
5
|
+
* circle in the composer flies into the message that has just been sent, and
|
|
6
|
+
* that message's own button / note stays hidden until it lands.
|
|
7
|
+
*
|
|
8
|
+
* The composer and the message list never meet, so this tiny store hands the
|
|
9
|
+
* landing spot from one to the other. The source (the record button, the
|
|
10
|
+
* camera circle) expects a flight when it sends; the just-sent message lands
|
|
11
|
+
* with its target in window coordinates; the source flies there and reports
|
|
12
|
+
* back when it has arrived.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/** A voice note's play button: its centre, radius and fill. */
|
|
16
|
+
|
|
17
|
+
/** A round note in the list: its top-left corner and diameter. */
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* A message counts as the flight's target only this soon after the send:
|
|
21
|
+
* the take still has to be written and the list has to lay the row out.
|
|
22
|
+
*/
|
|
23
|
+
export const SEND_FLIGHT_EXPECT_MS = 1500;
|
|
24
|
+
/** The source waits this long for a target before playing its own exit. */
|
|
25
|
+
export const SEND_FLIGHT_WAIT_MS = 500;
|
|
26
|
+
/**
|
|
27
|
+
* A landed target shows itself anyway after this long, in case the source
|
|
28
|
+
* went away mid-flight without reporting back.
|
|
29
|
+
*/
|
|
30
|
+
export const SEND_FLIGHT_SAFETY_MS = 1500;
|
|
31
|
+
|
|
32
|
+
/** `VoiceMessageEnterTransition`: 220ms of linear progress. */
|
|
33
|
+
export const VOICE_FLIGHT_MS = 220;
|
|
34
|
+
/** The record circle's blobs are gone by 60% of it (`step1Time`). */
|
|
35
|
+
export const VOICE_FLIGHT_BLOB_SHARE = 0.6;
|
|
36
|
+
/** The round note flight: 300ms, then a 100ms crossfade. */
|
|
37
|
+
export const ROUND_FLIGHT_MS = 300;
|
|
38
|
+
export const ROUND_FLIGHT_FADE_MS = 100;
|
|
39
|
+
/** The landed button fades in under the flight's disc, which then goes. */
|
|
40
|
+
export const SEND_FLIGHT_REVEAL_MS = 120;
|
|
41
|
+
const createSlot = () => ({
|
|
42
|
+
expectedAt: null,
|
|
43
|
+
target: null,
|
|
44
|
+
targetListeners: new Set(),
|
|
45
|
+
finishedListeners: new Set()
|
|
46
|
+
});
|
|
47
|
+
const slots = {
|
|
48
|
+
voice: createSlot(),
|
|
49
|
+
round: createSlot()
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/** The source has sent a take and will fly its circle into the new message. */
|
|
53
|
+
export function expectSendFlight(kind, now = Date.now()) {
|
|
54
|
+
const slot = slots[kind];
|
|
55
|
+
slot.expectedAt = now;
|
|
56
|
+
slot.target = null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* A flight is on its way and nothing has landed yet, so a just-sent message
|
|
61
|
+
* can start hidden instead of flashing for the frame its measure takes.
|
|
62
|
+
*/
|
|
63
|
+
export function isSendFlightExpected(kind, now = Date.now()) {
|
|
64
|
+
const slot = slots[kind];
|
|
65
|
+
return slot.expectedAt != null && !slot.target && now - slot.expectedAt <= SEND_FLIGHT_EXPECT_MS;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* A just-sent message offers itself as the flight's target. Returns true when
|
|
70
|
+
* a flight was expected: the caller then hides its button / note until
|
|
71
|
+
* `onSendFlightFinished` fires. Only the first message to land is taken.
|
|
72
|
+
*/
|
|
73
|
+
export function landSendFlight(kind, target, now = Date.now()) {
|
|
74
|
+
const slot = slots[kind];
|
|
75
|
+
if (slot.expectedAt == null || slot.target || now - slot.expectedAt > SEND_FLIGHT_EXPECT_MS) return false;
|
|
76
|
+
slot.target = target;
|
|
77
|
+
slot.targetListeners.forEach(listener => listener(target));
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* The source listens for its target. Fires at once when one has already
|
|
83
|
+
* landed (the row can lay out before the source subscribes).
|
|
84
|
+
*/
|
|
85
|
+
export function onSendFlightTarget(kind, listener) {
|
|
86
|
+
const slot = slots[kind];
|
|
87
|
+
slot.targetListeners.add(listener);
|
|
88
|
+
if (slot.target) listener(slot.target);
|
|
89
|
+
return () => {
|
|
90
|
+
slot.targetListeners.delete(listener);
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* The source gave up waiting and plays its own exit, so a message landing
|
|
96
|
+
* late is not hidden for a flight that will never come.
|
|
97
|
+
*/
|
|
98
|
+
export function abandonSendFlight(kind) {
|
|
99
|
+
const slot = slots[kind];
|
|
100
|
+
slot.expectedAt = null;
|
|
101
|
+
slot.target = null;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** The flight has arrived: the target shows its own button / note again. */
|
|
105
|
+
export function finishSendFlight(kind) {
|
|
106
|
+
const slot = slots[kind];
|
|
107
|
+
slot.expectedAt = null;
|
|
108
|
+
slot.target = null;
|
|
109
|
+
const listeners = Array.from(slot.finishedListeners);
|
|
110
|
+
slot.finishedListeners.clear();
|
|
111
|
+
listeners.forEach(listener => listener());
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** The target listens for the flight's arrival. */
|
|
115
|
+
export function onSendFlightFinished(kind, listener) {
|
|
116
|
+
const slot = slots[kind];
|
|
117
|
+
slot.finishedListeners.add(listener);
|
|
118
|
+
return () => {
|
|
119
|
+
slot.finishedListeners.delete(listener);
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/** Test-only: forget every flight and listener. */
|
|
124
|
+
export function resetSendFlights() {
|
|
125
|
+
Object.keys(slots).forEach(kind => {
|
|
126
|
+
const slot = slots[kind];
|
|
127
|
+
slot.expectedAt = null;
|
|
128
|
+
slot.target = null;
|
|
129
|
+
slot.targetListeners.clear();
|
|
130
|
+
slot.finishedListeners.clear();
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Reanimated's Jest mock returns a non-function from `bezierFn`, hence the
|
|
135
|
+
// linear stand-ins.
|
|
136
|
+
const bezierOr = fn => typeof fn === 'function' ? fn : t => {
|
|
137
|
+
'worklet';
|
|
138
|
+
|
|
139
|
+
return t;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/** The default cubic bezier (0.25, 0.1, 0.25, 1). */
|
|
143
|
+
export const easeDefault = bezierOr(Easing.bezierFn?.(0.25, 0.1, 0.25, 1));
|
|
144
|
+
/** Ease-out quint (0.23, 1, 0.32, 1). */
|
|
145
|
+
export const easeOutQuint = bezierOr(Easing.bezierFn?.(0.23, 1, 0.32, 1));
|
|
146
|
+
//# sourceMappingURL=sendFlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendFlight.js","names":["Easing","SEND_FLIGHT_EXPECT_MS","SEND_FLIGHT_WAIT_MS","SEND_FLIGHT_SAFETY_MS","VOICE_FLIGHT_MS","VOICE_FLIGHT_BLOB_SHARE","ROUND_FLIGHT_MS","ROUND_FLIGHT_FADE_MS","SEND_FLIGHT_REVEAL_MS","createSlot","expectedAt","target","targetListeners","Set","finishedListeners","slots","voice","round","expectSendFlight","kind","now","Date","slot","isSendFlightExpected","landSendFlight","forEach","listener","onSendFlightTarget","add","delete","abandonSendFlight","finishSendFlight","listeners","Array","from","clear","onSendFlightFinished","resetSendFlights","Object","keys","bezierOr","fn","t","easeDefault","bezierFn","easeOutQuint"],"sources":["../../src/components/sendFlight.ts"],"sourcesContent":["import { Easing } from 'react-native-reanimated'\n\n/**\n * The send flights, for a voice note and a round one: the take's\n * circle in the composer flies into the message that has just been sent, and\n * that message's own button / note stays hidden until it lands.\n *\n * The composer and the message list never meet, so this tiny store hands the\n * landing spot from one to the other. The source (the record button, the\n * camera circle) expects a flight when it sends; the just-sent message lands\n * with its target in window coordinates; the source flies there and reports\n * back when it has arrived.\n */\n\nexport type SendFlightKind = 'voice' | 'round'\n\n/** A voice note's play button: its centre, radius and fill. */\nexport interface VoiceFlightTarget {\n x: number\n y: number\n radius: number\n color: string\n /** The play glyph's colour, so the flight can draw it in as it lands. */\n iconColor?: string\n}\n\n/** A round note in the list: its top-left corner and diameter. */\nexport interface RoundFlightTarget {\n x: number\n y: number\n size: number\n}\n\ninterface TargetFor {\n voice: VoiceFlightTarget\n round: RoundFlightTarget\n}\n\n/**\n * A message counts as the flight's target only this soon after the send:\n * the take still has to be written and the list has to lay the row out.\n */\nexport const SEND_FLIGHT_EXPECT_MS = 1500\n/** The source waits this long for a target before playing its own exit. */\nexport const SEND_FLIGHT_WAIT_MS = 500\n/**\n * A landed target shows itself anyway after this long, in case the source\n * went away mid-flight without reporting back.\n */\nexport const SEND_FLIGHT_SAFETY_MS = 1500\n\n/** `VoiceMessageEnterTransition`: 220ms of linear progress. */\nexport const VOICE_FLIGHT_MS = 220\n/** The record circle's blobs are gone by 60% of it (`step1Time`). */\nexport const VOICE_FLIGHT_BLOB_SHARE = 0.6\n/** The round note flight: 300ms, then a 100ms crossfade. */\nexport const ROUND_FLIGHT_MS = 300\nexport const ROUND_FLIGHT_FADE_MS = 100\n/** The landed button fades in under the flight's disc, which then goes. */\nexport const SEND_FLIGHT_REVEAL_MS = 120\n\ntype Listener<T> = (value: T) => void\n\ninterface Slot<K extends SendFlightKind> {\n /** When the take was sent; null while no flight is expected. */\n expectedAt: number | null\n target: TargetFor[K] | null\n targetListeners: Set<Listener<TargetFor[K]>>\n finishedListeners: Set<() => void>\n}\n\nconst createSlot = <K extends SendFlightKind>(): Slot<K> => ({\n expectedAt: null,\n target: null,\n targetListeners: new Set(),\n finishedListeners: new Set(),\n})\n\nconst slots: { [K in SendFlightKind]: Slot<K> } = {\n voice: createSlot<'voice'>(),\n round: createSlot<'round'>(),\n}\n\n/** The source has sent a take and will fly its circle into the new message. */\nexport function expectSendFlight (kind: SendFlightKind, now = Date.now()) {\n const slot = slots[kind]\n slot.expectedAt = now\n slot.target = null\n}\n\n/**\n * A flight is on its way and nothing has landed yet, so a just-sent message\n * can start hidden instead of flashing for the frame its measure takes.\n */\nexport function isSendFlightExpected (kind: SendFlightKind, now = Date.now()) {\n const slot = slots[kind]\n return slot.expectedAt != null && !slot.target && now - slot.expectedAt <= SEND_FLIGHT_EXPECT_MS\n}\n\n/**\n * A just-sent message offers itself as the flight's target. Returns true when\n * a flight was expected: the caller then hides its button / note until\n * `onSendFlightFinished` fires. Only the first message to land is taken.\n */\nexport function landSendFlight<K extends SendFlightKind> (kind: K, target: TargetFor[K], now = Date.now()) {\n const slot = slots[kind] as unknown as Slot<K>\n if (slot.expectedAt == null || slot.target || now - slot.expectedAt > SEND_FLIGHT_EXPECT_MS)\n return false\n\n slot.target = target\n slot.targetListeners.forEach(listener => listener(target))\n return true\n}\n\n/**\n * The source listens for its target. Fires at once when one has already\n * landed (the row can lay out before the source subscribes).\n */\nexport function onSendFlightTarget<K extends SendFlightKind> (kind: K, listener: Listener<TargetFor[K]>) {\n const slot = slots[kind] as unknown as Slot<K>\n slot.targetListeners.add(listener)\n if (slot.target)\n listener(slot.target)\n return () => {\n slot.targetListeners.delete(listener)\n }\n}\n\n/**\n * The source gave up waiting and plays its own exit, so a message landing\n * late is not hidden for a flight that will never come.\n */\nexport function abandonSendFlight (kind: SendFlightKind) {\n const slot = slots[kind]\n slot.expectedAt = null\n slot.target = null\n}\n\n/** The flight has arrived: the target shows its own button / note again. */\nexport function finishSendFlight (kind: SendFlightKind) {\n const slot = slots[kind]\n slot.expectedAt = null\n slot.target = null\n const listeners = Array.from(slot.finishedListeners)\n slot.finishedListeners.clear()\n listeners.forEach(listener => listener())\n}\n\n/** The target listens for the flight's arrival. */\nexport function onSendFlightFinished (kind: SendFlightKind, listener: () => void) {\n const slot = slots[kind]\n slot.finishedListeners.add(listener)\n return () => {\n slot.finishedListeners.delete(listener)\n }\n}\n\n/** Test-only: forget every flight and listener. */\nexport function resetSendFlights () {\n (Object.keys(slots) as SendFlightKind[]).forEach(kind => {\n const slot = slots[kind]\n slot.expectedAt = null\n slot.target = null\n slot.targetListeners.clear()\n slot.finishedListeners.clear()\n })\n}\n\n// Reanimated's Jest mock returns a non-function from `bezierFn`, hence the\n// linear stand-ins.\nconst bezierOr = (fn: unknown) =>\n typeof fn === 'function'\n ? fn as (t: number) => number\n : (t: number) => {\n 'worklet'\n return t\n }\n\n/** The default cubic bezier (0.25, 0.1, 0.25, 1). */\nexport const easeDefault = bezierOr(Easing.bezierFn?.(0.25, 0.1, 0.25, 1))\n/** Ease-out quint (0.23, 1, 0.32, 1). */\nexport const easeOutQuint = bezierOr(Easing.bezierFn?.(0.23, 1, 0.32, 1))\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A view-once note plays a single time. Once it has
|
|
3
|
+
* started, finishing it - at its end, or by being stopped - spends it, and the
|
|
4
|
+
* app is told exactly once so it can remove the message. A pause does not
|
|
5
|
+
* spend it: the note is still being listened to.
|
|
6
|
+
*/
|
|
7
|
+
export interface ViewOnceTracker {
|
|
8
|
+
/** Playback started. Returns false for a spent note, which must not play. */
|
|
9
|
+
start: () => boolean;
|
|
10
|
+
/** The note ended or was stopped; spends it if it had started. */
|
|
11
|
+
end: () => boolean;
|
|
12
|
+
hasStarted: () => boolean;
|
|
13
|
+
isSpent: () => boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare const createViewOnceTracker: (isViewOnce: boolean, onEnd: () => void) => ViewOnceTracker;
|
|
16
|
+
/**
|
|
17
|
+
* View-once state for one player. `onStart` gates playback; `onEnd` spends the
|
|
18
|
+
* note. A note that started and then unmounts (scrolled away, chat closed)
|
|
19
|
+
* counts as ended too, as closing a view-once player does.
|
|
20
|
+
*/
|
|
21
|
+
export declare const useViewOnce: <TMessage>(message: TMessage | undefined, messageId: string | number | undefined, isViewOnce: boolean, onViewOnceEnd: ((message: TMessage) => void) | undefined) => {
|
|
22
|
+
hasStarted: boolean;
|
|
23
|
+
isSpent: boolean;
|
|
24
|
+
onStart: () => boolean;
|
|
25
|
+
onEnd: () => void;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=viewOnce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewOnce.d.ts","sourceRoot":"","sources":["../../src/components/viewOnce.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,KAAK,EAAE,MAAM,OAAO,CAAA;IACpB,kEAAkE;IAClE,GAAG,EAAE,MAAM,OAAO,CAAA;IAClB,UAAU,EAAE,MAAM,OAAO,CAAA;IACzB,OAAO,EAAE,MAAM,OAAO,CAAA;CACvB;AAID,eAAO,MAAM,qBAAqB,GAAI,YAAY,OAAO,EAAE,OAAO,MAAM,IAAI,KAAG,eAsB9E,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,EAClC,SAAS,QAAQ,GAAG,SAAS,EAC7B,WAAW,MAAM,GAAG,MAAM,GAAG,SAAS,EACtC,YAAY,OAAO,EACnB,eAAe,CAAC,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC,GAAG,SAAS;;;;;CA+CzD,CAAA"}
|