@streamplace/components 0.8.9 → 0.8.13
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/dist/components/chat/chat-box.d.ts +8 -0
- package/dist/components/chat/chat-box.d.ts.map +1 -0
- package/dist/components/chat/chat-box.js +19 -2
- package/dist/components/chat/chat-box.js.map +1 -0
- package/dist/components/chat/chat-message.d.ts +8 -0
- package/dist/components/chat/chat-message.d.ts.map +1 -0
- package/dist/components/chat/chat-message.js +6 -4
- package/dist/components/chat/chat-message.js.map +1 -0
- package/dist/components/chat/chat.d.ts +7 -0
- package/dist/components/chat/chat.d.ts.map +1 -0
- package/dist/components/chat/chat.js +1 -0
- package/dist/components/chat/chat.js.map +1 -0
- package/dist/components/chat/emoji-suggestions.d.ts +38 -0
- package/dist/components/chat/emoji-suggestions.d.ts.map +1 -0
- package/dist/components/chat/emoji-suggestions.js +1 -0
- package/dist/components/chat/emoji-suggestions.js.map +1 -0
- package/dist/components/chat/mention-suggestions.d.ts +9 -0
- package/dist/components/chat/mention-suggestions.d.ts.map +1 -0
- package/dist/components/chat/mention-suggestions.js +1 -0
- package/dist/components/chat/mention-suggestions.js.map +1 -0
- package/dist/components/chat/mod-view.d.ts +20 -0
- package/dist/components/chat/mod-view.d.ts.map +1 -0
- package/dist/components/chat/mod-view.js +5 -3
- package/dist/components/chat/mod-view.js.map +1 -0
- package/dist/components/chat/system-message.d.ts +7 -0
- package/dist/components/chat/system-message.d.ts.map +1 -0
- package/dist/components/chat/system-message.js +1 -0
- package/dist/components/chat/system-message.js.map +1 -0
- package/dist/components/content-metadata/content-metadata-form.d.ts +9 -0
- package/dist/components/content-metadata/content-metadata-form.d.ts.map +1 -0
- package/dist/components/content-metadata/content-metadata-form.js +4 -2
- package/dist/components/content-metadata/content-metadata-form.js.map +1 -0
- package/dist/components/content-metadata/content-rights.d.ts +14 -0
- package/dist/components/content-metadata/content-rights.d.ts.map +1 -0
- package/dist/components/content-metadata/content-rights.js +1 -0
- package/dist/components/content-metadata/content-rights.js.map +1 -0
- package/dist/components/content-metadata/content-warning-badge.d.ts +5 -0
- package/dist/components/content-metadata/content-warning-badge.d.ts.map +1 -0
- package/dist/components/content-metadata/content-warning-badge.js +1 -0
- package/dist/components/content-metadata/content-warning-badge.js.map +1 -0
- package/dist/components/content-metadata/content-warnings.d.ts +7 -0
- package/dist/components/content-metadata/content-warnings.d.ts.map +1 -0
- package/dist/components/content-metadata/content-warnings.js +1 -0
- package/dist/components/content-metadata/content-warnings.js.map +1 -0
- package/dist/components/content-metadata/index.d.ts +8 -0
- package/dist/components/content-metadata/index.d.ts.map +1 -0
- package/dist/components/content-metadata/index.js +1 -0
- package/dist/components/content-metadata/index.js.map +1 -0
- package/dist/components/danmu/danmu-message.d.ts +17 -0
- package/dist/components/danmu/danmu-message.d.ts.map +1 -0
- package/dist/components/danmu/danmu-message.js +112 -0
- package/dist/components/danmu/danmu-message.js.map +1 -0
- package/dist/components/danmu/danmu-overlay-obs.d.ts +11 -0
- package/dist/components/danmu/danmu-overlay-obs.d.ts.map +1 -0
- package/dist/components/danmu/danmu-overlay-obs.js +21 -0
- package/dist/components/danmu/danmu-overlay-obs.js.map +1 -0
- package/dist/components/danmu/danmu-overlay.d.ts +10 -0
- package/dist/components/danmu/danmu-overlay.d.ts.map +1 -0
- package/dist/components/danmu/danmu-overlay.js +150 -0
- package/dist/components/danmu/danmu-overlay.js.map +1 -0
- package/dist/components/danmu/math.d.ts +10 -0
- package/dist/components/danmu/math.d.ts.map +1 -0
- package/dist/components/danmu/math.js +16 -0
- package/dist/components/danmu/math.js.map +1 -0
- package/dist/components/danmu/mu.d.ts +9 -0
- package/dist/components/danmu/mu.d.ts.map +1 -0
- package/dist/components/danmu/mu.js +9 -0
- package/dist/components/danmu/mu.js.map +1 -0
- package/dist/components/danmu/use-danmu-lanes.d.ts +19 -0
- package/dist/components/danmu/use-danmu-lanes.d.ts.map +1 -0
- package/dist/components/danmu/use-danmu-lanes.js +77 -0
- package/dist/components/danmu/use-danmu-lanes.js.map +1 -0
- package/dist/components/dashboard/chat-panel.d.ts +9 -0
- package/dist/components/dashboard/chat-panel.d.ts.map +1 -0
- package/dist/components/dashboard/chat-panel.js +1 -0
- package/dist/components/dashboard/chat-panel.js.map +1 -0
- package/dist/components/dashboard/header.d.ts +14 -0
- package/dist/components/dashboard/header.d.ts.map +1 -0
- package/dist/components/dashboard/header.js +1 -0
- package/dist/components/dashboard/header.js.map +1 -0
- package/dist/components/dashboard/index.d.ts +6 -0
- package/dist/components/dashboard/index.d.ts.map +1 -0
- package/dist/components/dashboard/index.js +1 -0
- package/dist/components/dashboard/index.js.map +1 -0
- package/dist/components/dashboard/information-widget.d.ts +9 -0
- package/dist/components/dashboard/information-widget.d.ts.map +1 -0
- package/dist/components/dashboard/information-widget.js +1 -0
- package/dist/components/dashboard/information-widget.js.map +1 -0
- package/dist/components/dashboard/mod-actions.d.ts +15 -0
- package/dist/components/dashboard/mod-actions.d.ts.map +1 -0
- package/dist/components/dashboard/mod-actions.js +1 -0
- package/dist/components/dashboard/mod-actions.js.map +1 -0
- package/dist/components/dashboard/problems.d.ts +13 -0
- package/dist/components/dashboard/problems.d.ts.map +1 -0
- package/dist/components/dashboard/problems.js +1 -0
- package/dist/components/dashboard/problems.js.map +1 -0
- package/dist/components/icons/bluesky-icon.d.ts +5 -0
- package/dist/components/icons/bluesky-icon.d.ts.map +1 -0
- package/dist/components/icons/bluesky-icon.js +1 -0
- package/dist/components/icons/bluesky-icon.js.map +1 -0
- package/dist/components/keep-awake.d.ts +2 -0
- package/dist/components/keep-awake.d.ts.map +1 -0
- package/dist/components/keep-awake.js +1 -0
- package/dist/components/keep-awake.js.map +1 -0
- package/dist/components/keep-awake.native.d.ts +2 -0
- package/dist/components/keep-awake.native.d.ts.map +1 -0
- package/dist/components/keep-awake.native.js +1 -0
- package/dist/components/keep-awake.native.js.map +1 -0
- package/dist/components/mobile-player/fullscreen.d.ts +7 -0
- package/dist/components/mobile-player/fullscreen.d.ts.map +1 -0
- package/dist/components/mobile-player/fullscreen.js +7 -1
- package/dist/components/mobile-player/fullscreen.js.map +1 -0
- package/dist/components/mobile-player/fullscreen.native.d.ts +7 -0
- package/dist/components/mobile-player/fullscreen.native.d.ts.map +1 -0
- package/dist/components/mobile-player/fullscreen.native.js +8 -2
- package/dist/components/mobile-player/fullscreen.native.js.map +1 -0
- package/dist/components/mobile-player/player.d.ts +8 -0
- package/dist/components/mobile-player/player.d.ts.map +1 -0
- package/dist/components/mobile-player/player.js +1 -0
- package/dist/components/mobile-player/player.js.map +1 -0
- package/dist/components/mobile-player/props.d.ts +19 -0
- package/dist/components/mobile-player/props.d.ts.map +1 -0
- package/dist/components/mobile-player/props.js +1 -0
- package/dist/components/mobile-player/props.js.map +1 -0
- package/dist/components/mobile-player/rotation-async.native.d.ts +4 -0
- package/dist/components/mobile-player/rotation-async.native.d.ts.map +1 -0
- package/dist/components/mobile-player/rotation-async.native.js +1 -0
- package/dist/components/mobile-player/rotation-async.native.js.map +1 -0
- package/dist/components/mobile-player/rotation-lock.d.ts +18 -0
- package/dist/components/mobile-player/rotation-lock.d.ts.map +1 -0
- package/dist/components/mobile-player/rotation-lock.js +1 -0
- package/dist/components/mobile-player/rotation-lock.js.map +1 -0
- package/dist/components/mobile-player/shared.d.ts +9 -0
- package/dist/components/mobile-player/shared.d.ts.map +1 -0
- package/dist/components/mobile-player/shared.js +1 -0
- package/dist/components/mobile-player/shared.js.map +1 -0
- package/dist/components/mobile-player/ui/autoplay-button.d.ts +2 -0
- package/dist/components/mobile-player/ui/autoplay-button.d.ts.map +1 -0
- package/dist/components/mobile-player/ui/autoplay-button.js +1 -0
- package/dist/components/mobile-player/ui/autoplay-button.js.map +1 -0
- package/dist/components/mobile-player/ui/countdown.d.ts +10 -0
- package/dist/components/mobile-player/ui/countdown.d.ts.map +1 -0
- package/dist/components/mobile-player/ui/countdown.js +1 -0
- package/dist/components/mobile-player/ui/countdown.js.map +1 -0
- package/dist/components/mobile-player/ui/index.d.ts +11 -0
- package/dist/components/mobile-player/ui/index.d.ts.map +1 -0
- package/dist/components/mobile-player/ui/index.js +2 -0
- package/dist/components/mobile-player/ui/index.js.map +1 -0
- package/dist/components/mobile-player/ui/input.d.ts +9 -0
- package/dist/components/mobile-player/ui/input.d.ts.map +1 -0
- package/dist/components/mobile-player/ui/input.js +1 -0
- package/dist/components/mobile-player/ui/input.js.map +1 -0
- package/dist/components/mobile-player/ui/metrics.d.ts +6 -0
- package/dist/components/mobile-player/ui/metrics.d.ts.map +1 -0
- package/dist/components/mobile-player/ui/metrics.js +1 -0
- package/dist/components/mobile-player/ui/metrics.js.map +1 -0
- package/dist/components/mobile-player/ui/report-modal.d.ts +13 -0
- package/dist/components/mobile-player/ui/report-modal.d.ts.map +1 -0
- package/dist/components/mobile-player/ui/report-modal.js +1 -0
- package/dist/components/mobile-player/ui/report-modal.js.map +1 -0
- package/dist/components/mobile-player/ui/streamer-context-menu.d.ts +2 -0
- package/dist/components/mobile-player/ui/streamer-context-menu.d.ts.map +1 -0
- package/dist/components/mobile-player/ui/streamer-context-menu.js +1 -0
- package/dist/components/mobile-player/ui/streamer-context-menu.js.map +1 -0
- package/dist/components/mobile-player/ui/streamer-loading-overlay.d.ts +11 -0
- package/dist/components/mobile-player/ui/streamer-loading-overlay.d.ts.map +1 -0
- package/dist/components/mobile-player/ui/streamer-loading-overlay.js +1 -0
- package/dist/components/mobile-player/ui/streamer-loading-overlay.js.map +1 -0
- package/dist/components/mobile-player/ui/viewer-context-menu.d.ts +9 -0
- package/dist/components/mobile-player/ui/viewer-context-menu.d.ts.map +1 -0
- package/dist/components/mobile-player/ui/viewer-context-menu.js +6 -5
- package/dist/components/mobile-player/ui/viewer-context-menu.js.map +1 -0
- package/dist/components/mobile-player/ui/viewer-count.d.ts +10 -0
- package/dist/components/mobile-player/ui/viewer-count.d.ts.map +1 -0
- package/dist/components/mobile-player/ui/viewer-count.js +24 -0
- package/dist/components/mobile-player/ui/viewer-count.js.map +1 -0
- package/dist/components/mobile-player/ui/viewer-loading-overlay.d.ts +2 -0
- package/dist/components/mobile-player/ui/viewer-loading-overlay.d.ts.map +1 -0
- package/dist/components/mobile-player/ui/viewer-loading-overlay.js +1 -0
- package/dist/components/mobile-player/ui/viewer-loading-overlay.js.map +1 -0
- package/dist/components/mobile-player/ui/viewers.d.ts +6 -0
- package/dist/components/mobile-player/ui/viewers.d.ts.map +1 -0
- package/dist/components/mobile-player/ui/viewers.js +9 -7
- package/dist/components/mobile-player/ui/viewers.js.map +1 -0
- package/dist/components/mobile-player/use-webrtc.d.ts +19 -0
- package/dist/components/mobile-player/use-webrtc.d.ts.map +1 -0
- package/dist/components/mobile-player/use-webrtc.js +1 -0
- package/dist/components/mobile-player/use-webrtc.js.map +1 -0
- package/dist/components/mobile-player/video-async.native.d.ts +16 -0
- package/dist/components/mobile-player/video-async.native.d.ts.map +1 -0
- package/dist/components/mobile-player/video-async.native.js +1 -0
- package/dist/components/mobile-player/video-async.native.js.map +1 -0
- package/dist/components/mobile-player/video-retry.d.ts +5 -0
- package/dist/components/mobile-player/video-retry.d.ts.map +1 -0
- package/dist/components/mobile-player/video-retry.js +1 -0
- package/dist/components/mobile-player/video-retry.js.map +1 -0
- package/dist/components/mobile-player/video.d.ts +25 -0
- package/dist/components/mobile-player/video.d.ts.map +1 -0
- package/dist/components/mobile-player/video.js +1 -0
- package/dist/components/mobile-player/video.js.map +1 -0
- package/dist/components/mobile-player/video.native.d.ts +3 -0
- package/dist/components/mobile-player/video.native.d.ts.map +1 -0
- package/dist/components/mobile-player/video.native.js +1 -0
- package/dist/components/mobile-player/video.native.js.map +1 -0
- package/dist/components/mobile-player/webrtc-diagnostics.d.ts +14 -0
- package/dist/components/mobile-player/webrtc-diagnostics.d.ts.map +1 -0
- package/dist/components/mobile-player/webrtc-diagnostics.js +1 -0
- package/dist/components/mobile-player/webrtc-diagnostics.js.map +1 -0
- package/dist/components/mobile-player/webrtc-primitives.d.ts +19 -0
- package/dist/components/mobile-player/webrtc-primitives.d.ts.map +1 -0
- package/dist/components/mobile-player/webrtc-primitives.js +1 -0
- package/dist/components/mobile-player/webrtc-primitives.js.map +1 -0
- package/dist/components/mobile-player/webrtc-primitives.native.d.ts +2 -0
- package/dist/components/mobile-player/webrtc-primitives.native.d.ts.map +1 -0
- package/dist/components/mobile-player/webrtc-primitives.native.js +1 -0
- package/dist/components/mobile-player/webrtc-primitives.native.js.map +1 -0
- package/dist/components/share/sharesheet.d.ts +5 -0
- package/dist/components/share/sharesheet.d.ts.map +1 -0
- package/dist/components/share/sharesheet.js +6 -14
- package/dist/components/share/sharesheet.js.map +1 -0
- package/dist/components/ui/button.d.ts +18 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +14 -2
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/checkbox.d.ts +11 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -0
- package/dist/components/ui/checkbox.js +1 -0
- package/dist/components/ui/checkbox.js.map +1 -0
- package/dist/components/ui/dialog.d.ts +38 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog.js +1 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/dropdown.d.ts +132 -0
- package/dist/components/ui/dropdown.d.ts.map +1 -0
- package/dist/components/ui/dropdown.js +28 -238
- package/dist/components/ui/dropdown.js.map +1 -0
- package/dist/components/ui/dropdown.native.d.ts +132 -0
- package/dist/components/ui/dropdown.native.d.ts.map +1 -0
- package/dist/components/ui/dropdown.native.js +319 -0
- package/dist/components/ui/dropdown.native.js.map +1 -0
- package/dist/components/ui/icons.d.ts +12 -0
- package/dist/components/ui/icons.d.ts.map +1 -0
- package/dist/components/ui/icons.js +1 -0
- package/dist/components/ui/icons.js.map +1 -0
- package/dist/components/ui/index.d.ts +33 -0
- package/dist/components/ui/index.d.ts.map +1 -0
- package/dist/components/ui/index.js +2 -0
- package/dist/components/ui/index.js.map +1 -0
- package/dist/components/ui/info-box.d.ts +9 -0
- package/dist/components/ui/info-box.d.ts.map +1 -0
- package/dist/components/ui/info-box.js +1 -0
- package/dist/components/ui/info-box.js.map +1 -0
- package/dist/components/ui/info-row.d.ts +9 -0
- package/dist/components/ui/info-row.d.ts.map +1 -0
- package/dist/components/ui/info-row.js +1 -0
- package/dist/components/ui/info-row.js.map +1 -0
- package/dist/components/ui/input.d.ts +20 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +1 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/loader.d.ts +3 -0
- package/dist/components/ui/loader.d.ts.map +1 -0
- package/dist/components/ui/loader.js +1 -0
- package/dist/components/ui/loader.js.map +1 -0
- package/dist/components/ui/menu.d.ts +34 -0
- package/dist/components/ui/menu.d.ts.map +1 -0
- package/dist/components/ui/menu.js +57 -0
- package/dist/components/ui/menu.js.map +1 -0
- package/dist/components/ui/primitives/button.d.ts +41 -0
- package/dist/components/ui/primitives/button.d.ts.map +1 -0
- package/dist/components/ui/primitives/button.js +1 -0
- package/dist/components/ui/primitives/button.js.map +1 -0
- package/dist/components/ui/primitives/input.d.ts +52 -0
- package/dist/components/ui/primitives/input.d.ts.map +1 -0
- package/dist/components/ui/primitives/input.js +1 -0
- package/dist/components/ui/primitives/input.js.map +1 -0
- package/dist/components/ui/primitives/modal.d.ts +46 -0
- package/dist/components/ui/primitives/modal.d.ts.map +1 -0
- package/dist/components/ui/primitives/modal.js +1 -0
- package/dist/components/ui/primitives/modal.js.map +1 -0
- package/dist/components/ui/primitives/text.d.ts +48 -0
- package/dist/components/ui/primitives/text.d.ts.map +1 -0
- package/dist/components/ui/primitives/text.js +1 -0
- package/dist/components/ui/primitives/text.js.map +1 -0
- package/dist/components/ui/resizeable.d.ts +14 -0
- package/dist/components/ui/resizeable.d.ts.map +1 -0
- package/dist/components/ui/resizeable.js +2 -1
- package/dist/components/ui/resizeable.js.map +1 -0
- package/dist/components/ui/select.d.ts +16 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +1 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/slider.d.ts +2 -0
- package/dist/components/ui/slider.d.ts.map +1 -0
- package/dist/components/ui/slider.js +1 -0
- package/dist/components/ui/slider.js.map +1 -0
- package/dist/components/ui/text.d.ts +45 -0
- package/dist/components/ui/text.d.ts.map +1 -0
- package/dist/components/ui/text.js +1 -0
- package/dist/components/ui/text.js.map +1 -0
- package/dist/components/ui/textarea.d.ts +5 -0
- package/dist/components/ui/textarea.d.ts.map +1 -0
- package/dist/components/ui/textarea.js +1 -0
- package/dist/components/ui/textarea.js.map +1 -0
- package/dist/components/ui/toast.d.ts +92 -0
- package/dist/components/ui/toast.d.ts.map +1 -0
- package/dist/components/ui/toast.js +2 -1
- package/dist/components/ui/toast.js.map +1 -0
- package/dist/components/ui/tooltip.d.ts +8 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip.js +1 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/components/ui/view.d.ts +33 -0
- package/dist/components/ui/view.d.ts.map +1 -0
- package/dist/components/ui/view.js +1 -0
- package/dist/components/ui/view.js.map +1 -0
- package/dist/crypto-polyfill.d.ts +1 -0
- package/dist/crypto-polyfill.d.ts.map +1 -0
- package/dist/crypto-polyfill.js +1 -0
- package/dist/crypto-polyfill.js.map +1 -0
- package/dist/crypto-polyfill.native.d.ts +3 -0
- package/dist/crypto-polyfill.native.d.ts.map +1 -0
- package/dist/crypto-polyfill.native.js +1 -0
- package/dist/crypto-polyfill.native.js.map +1 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useAvatars.d.ts +3 -0
- package/dist/hooks/useAvatars.d.ts.map +1 -0
- package/dist/hooks/useAvatars.js +1 -0
- package/dist/hooks/useAvatars.js.map +1 -0
- package/dist/hooks/useCameraToggle.d.ts +5 -0
- package/dist/hooks/useCameraToggle.d.ts.map +1 -0
- package/dist/hooks/useCameraToggle.js +1 -0
- package/dist/hooks/useCameraToggle.js.map +1 -0
- package/dist/hooks/useKeyboard.d.ts +5 -0
- package/dist/hooks/useKeyboard.d.ts.map +1 -0
- package/dist/hooks/useKeyboard.js +1 -0
- package/dist/hooks/useKeyboard.js.map +1 -0
- package/dist/hooks/useKeyboardSlide.d.ts +5 -0
- package/dist/hooks/useKeyboardSlide.d.ts.map +1 -0
- package/dist/hooks/useKeyboardSlide.js +1 -0
- package/dist/hooks/useKeyboardSlide.js.map +1 -0
- package/dist/hooks/useLivestreamInfo.d.ts +15 -0
- package/dist/hooks/useLivestreamInfo.d.ts.map +1 -0
- package/dist/hooks/useLivestreamInfo.js +1 -0
- package/dist/hooks/useLivestreamInfo.js.map +1 -0
- package/dist/hooks/useOuterAndInnerDimensions.d.ts +10 -0
- package/dist/hooks/useOuterAndInnerDimensions.d.ts.map +1 -0
- package/dist/hooks/useOuterAndInnerDimensions.js +1 -0
- package/dist/hooks/useOuterAndInnerDimensions.js.map +1 -0
- package/dist/hooks/usePlayerDimensions.d.ts +12 -0
- package/dist/hooks/usePlayerDimensions.d.ts.map +1 -0
- package/dist/hooks/usePlayerDimensions.js +1 -0
- package/dist/hooks/usePlayerDimensions.js.map +1 -0
- package/dist/hooks/usePointerDevice.d.ts +12 -0
- package/dist/hooks/usePointerDevice.d.ts.map +1 -0
- package/dist/hooks/usePointerDevice.js +1 -0
- package/dist/hooks/usePointerDevice.js.map +1 -0
- package/dist/hooks/useSegmentDimensions.d.ts +6 -0
- package/dist/hooks/useSegmentDimensions.d.ts.map +1 -0
- package/dist/hooks/useSegmentDimensions.js +1 -0
- package/dist/hooks/useSegmentDimensions.js.map +1 -0
- package/dist/hooks/useSegmentTiming.d.ts +9 -0
- package/dist/hooks/useSegmentTiming.d.ts.map +1 -0
- package/dist/hooks/useSegmentTiming.js +1 -0
- package/dist/hooks/useSegmentTiming.js.map +1 -0
- package/dist/i18n/i18n-loader.d.ts +2 -0
- package/dist/i18n/i18n-loader.d.ts.map +1 -0
- package/dist/i18n/i18n-loader.js +17 -0
- package/dist/i18n/i18n-loader.js.map +1 -0
- package/dist/i18n/i18n-loader.native.d.ts +2 -0
- package/dist/i18n/i18n-loader.native.d.ts.map +1 -0
- package/dist/i18n/i18n-loader.native.js +51 -0
- package/dist/i18n/i18n-loader.native.js.map +1 -0
- package/dist/i18n/i18next-config.d.ts +41 -0
- package/dist/i18n/i18next-config.d.ts.map +1 -0
- package/dist/i18n/i18next-config.js +220 -0
- package/dist/i18n/i18next-config.js.map +1 -0
- package/dist/i18n/index.d.ts +11 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +45 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/provider.d.ts +14 -0
- package/dist/i18n/provider.d.ts.map +1 -0
- package/dist/i18n/provider.js +58 -0
- package/dist/i18n/provider.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -0
- package/dist/lib/browser.d.ts +2 -0
- package/dist/lib/browser.d.ts.map +1 -0
- package/dist/lib/browser.js +1 -0
- package/dist/lib/browser.js.map +1 -0
- package/dist/lib/facet.d.ts +11 -0
- package/dist/lib/facet.d.ts.map +1 -0
- package/dist/lib/facet.js +1 -0
- package/dist/lib/facet.js.map +1 -0
- package/dist/lib/metadata-constants.d.ts +13 -0
- package/dist/lib/metadata-constants.d.ts.map +1 -0
- package/dist/lib/metadata-constants.js +1 -0
- package/dist/lib/metadata-constants.js.map +1 -0
- package/dist/lib/system-messages.d.ts +49 -0
- package/dist/lib/system-messages.d.ts.map +1 -0
- package/dist/lib/system-messages.js +1 -0
- package/dist/lib/system-messages.js.map +1 -0
- package/dist/lib/theme/atoms.d.ts +4226 -0
- package/dist/lib/theme/atoms.d.ts.map +1 -0
- package/dist/lib/theme/atoms.js +1 -0
- package/dist/lib/theme/atoms.js.map +1 -0
- package/dist/lib/theme/atoms.types.d.ts +228 -0
- package/dist/lib/theme/atoms.types.d.ts.map +1 -0
- package/dist/lib/theme/atoms.types.js +1 -0
- package/dist/lib/theme/atoms.types.js.map +1 -0
- package/dist/lib/theme/index.d.ts +6 -0
- package/dist/lib/theme/index.d.ts.map +1 -0
- package/dist/lib/theme/index.js +1 -0
- package/dist/lib/theme/index.js.map +1 -0
- package/dist/lib/theme/theme.d.ts +327 -0
- package/dist/lib/theme/theme.d.ts.map +1 -0
- package/dist/lib/theme/theme.js +1 -0
- package/dist/lib/theme/theme.js.map +1 -0
- package/dist/lib/theme/tokens.d.ts +766 -0
- package/dist/lib/theme/tokens.d.ts.map +1 -0
- package/dist/lib/theme/tokens.js +1 -0
- package/dist/lib/theme/tokens.js.map +1 -0
- package/dist/lib/utils.d.ts +53 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +1 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/livestream-provider/index.d.ts +13 -0
- package/dist/livestream-provider/index.d.ts.map +1 -0
- package/dist/livestream-provider/index.js +1 -0
- package/dist/livestream-provider/index.js.map +1 -0
- package/dist/livestream-provider/websocket.d.ts +2 -0
- package/dist/livestream-provider/websocket.d.ts.map +1 -0
- package/dist/livestream-provider/websocket.js +1 -0
- package/dist/livestream-provider/websocket.js.map +1 -0
- package/dist/livestream-store/chat.d.ts +21 -0
- package/dist/livestream-store/chat.d.ts.map +1 -0
- package/dist/livestream-store/chat.js +1 -0
- package/dist/livestream-store/chat.js.map +1 -0
- package/dist/livestream-store/context.d.ts +7 -0
- package/dist/livestream-store/context.d.ts.map +1 -0
- package/dist/livestream-store/context.js +1 -0
- package/dist/livestream-store/context.js.map +1 -0
- package/dist/livestream-store/index.d.ts +5 -0
- package/dist/livestream-store/index.d.ts.map +1 -0
- package/dist/livestream-store/index.js +1 -0
- package/dist/livestream-store/index.js.map +1 -0
- package/dist/livestream-store/livestream-state.d.ts +29 -0
- package/dist/livestream-store/livestream-state.d.ts.map +1 -0
- package/dist/livestream-store/livestream-state.js +1 -0
- package/dist/livestream-store/livestream-state.js.map +1 -0
- package/dist/livestream-store/livestream-store.d.ts +14 -0
- package/dist/livestream-store/livestream-store.d.ts.map +1 -0
- package/dist/livestream-store/livestream-store.js +1 -0
- package/dist/livestream-store/livestream-store.js.map +1 -0
- package/dist/livestream-store/problems.d.ts +4 -0
- package/dist/livestream-store/problems.d.ts.map +1 -0
- package/dist/livestream-store/problems.js +1 -0
- package/dist/livestream-store/problems.js.map +1 -0
- package/dist/livestream-store/stream-key.d.ts +9 -0
- package/dist/livestream-store/stream-key.d.ts.map +1 -0
- package/dist/livestream-store/stream-key.js +1 -0
- package/dist/livestream-store/stream-key.js.map +1 -0
- package/dist/livestream-store/websocket-consumer.d.ts +3 -0
- package/dist/livestream-store/websocket-consumer.d.ts.map +1 -0
- package/dist/livestream-store/websocket-consumer.js +1 -0
- package/dist/livestream-store/websocket-consumer.js.map +1 -0
- package/dist/player-store/context.d.ts +10 -0
- package/dist/player-store/context.d.ts.map +1 -0
- package/dist/player-store/context.js +1 -0
- package/dist/player-store/context.js.map +1 -0
- package/dist/player-store/index.d.ts +6 -0
- package/dist/player-store/index.d.ts.map +1 -0
- package/dist/player-store/index.js +1 -0
- package/dist/player-store/index.js.map +1 -0
- package/dist/player-store/player-provider.d.ts +12 -0
- package/dist/player-store/player-provider.d.ts.map +1 -0
- package/dist/player-store/player-provider.js +1 -0
- package/dist/player-store/player-provider.js.map +1 -0
- package/dist/player-store/player-state.d.ts +138 -0
- package/dist/player-store/player-state.d.ts.map +1 -0
- package/dist/player-store/player-state.js +1 -0
- package/dist/player-store/player-state.js.map +1 -0
- package/dist/player-store/player-store.d.ts +18 -0
- package/dist/player-store/player-store.d.ts.map +1 -0
- package/dist/player-store/player-store.js +1 -0
- package/dist/player-store/player-store.js.map +1 -0
- package/dist/player-store/single-player-provider.d.ts +61 -0
- package/dist/player-store/single-player-provider.d.ts.map +1 -0
- package/dist/player-store/single-player-provider.js +1 -0
- package/dist/player-store/single-player-provider.js.map +1 -0
- package/dist/storage/index.d.ts +4 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +1 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/lock.d.ts +8 -0
- package/dist/storage/lock.d.ts.map +1 -0
- package/dist/storage/lock.js +1 -0
- package/dist/storage/lock.js.map +1 -0
- package/dist/storage/storage.d.ts +7 -0
- package/dist/storage/storage.d.ts.map +1 -0
- package/dist/storage/storage.js +1 -0
- package/dist/storage/storage.js.map +1 -0
- package/dist/storage/storage.native.d.ts +7 -0
- package/dist/storage/storage.native.d.ts.map +1 -0
- package/dist/storage/storage.native.js +1 -0
- package/dist/storage/storage.native.js.map +1 -0
- package/dist/storage/storage.shared.d.ts +6 -0
- package/dist/storage/storage.shared.d.ts.map +1 -0
- package/dist/storage/storage.shared.js +1 -0
- package/dist/storage/storage.shared.js.map +1 -0
- package/dist/streamplace-provider/context.d.ts +7 -0
- package/dist/streamplace-provider/context.d.ts.map +1 -0
- package/dist/streamplace-provider/context.js +1 -0
- package/dist/streamplace-provider/context.js.map +1 -0
- package/dist/streamplace-provider/index.d.ts +11 -0
- package/dist/streamplace-provider/index.d.ts.map +1 -0
- package/dist/streamplace-provider/index.js +1 -0
- package/dist/streamplace-provider/index.js.map +1 -0
- package/dist/streamplace-provider/poller.d.ts +5 -0
- package/dist/streamplace-provider/poller.d.ts.map +1 -0
- package/dist/streamplace-provider/poller.js +3 -0
- package/dist/streamplace-provider/poller.js.map +1 -0
- package/dist/streamplace-provider/xrpc.d.ts +1 -0
- package/dist/streamplace-provider/xrpc.d.ts.map +1 -0
- package/dist/streamplace-provider/xrpc.js +1 -0
- package/dist/streamplace-provider/xrpc.js.map +1 -0
- package/dist/streamplace-store/block.d.ts +9 -0
- package/dist/streamplace-store/block.d.ts.map +1 -0
- package/dist/streamplace-store/block.js +1 -0
- package/dist/streamplace-store/block.js.map +1 -0
- package/dist/streamplace-store/content-metadata-actions.d.ts +9 -0
- package/dist/streamplace-store/content-metadata-actions.d.ts.map +1 -0
- package/dist/streamplace-store/content-metadata-actions.js +1 -0
- package/dist/streamplace-store/content-metadata-actions.js.map +1 -0
- package/dist/streamplace-store/graph.d.ts +22 -0
- package/dist/streamplace-store/graph.d.ts.map +1 -0
- package/dist/streamplace-store/graph.js +1 -0
- package/dist/streamplace-store/graph.js.map +1 -0
- package/dist/streamplace-store/index.d.ts +4 -0
- package/dist/streamplace-store/index.d.ts.map +1 -0
- package/dist/streamplace-store/index.js +1 -0
- package/dist/streamplace-store/index.js.map +1 -0
- package/dist/streamplace-store/stream.d.ts +11 -0
- package/dist/streamplace-store/stream.d.ts.map +1 -0
- package/dist/streamplace-store/stream.js +1 -0
- package/dist/streamplace-store/stream.js.map +1 -0
- package/dist/streamplace-store/streamplace-store.d.ts +92 -0
- package/dist/streamplace-store/streamplace-store.d.ts.map +1 -0
- package/dist/streamplace-store/streamplace-store.js +158 -3
- package/dist/streamplace-store/streamplace-store.js.map +1 -0
- package/dist/streamplace-store/user.d.ts +6 -0
- package/dist/streamplace-store/user.d.ts.map +1 -0
- package/dist/streamplace-store/user.js +1 -0
- package/dist/streamplace-store/user.js.map +1 -0
- package/dist/streamplace-store/xrpc.d.ts +3 -0
- package/dist/streamplace-store/xrpc.d.ts.map +1 -0
- package/dist/streamplace-store/xrpc.js +1 -0
- package/dist/streamplace-store/xrpc.js.map +1 -0
- package/dist/time-sync/index.d.ts +3 -0
- package/dist/time-sync/index.d.ts.map +1 -0
- package/dist/time-sync/index.js +15 -0
- package/dist/time-sync/index.js.map +1 -0
- package/dist/time-sync/time-sync.d.ts +13 -0
- package/dist/time-sync/time-sync.d.ts.map +1 -0
- package/dist/time-sync/time-sync.js +95 -0
- package/dist/time-sync/time-sync.js.map +1 -0
- package/dist/time-sync/useTimeSync.d.ts +2 -0
- package/dist/time-sync/useTimeSync.d.ts.map +1 -0
- package/dist/time-sync/useTimeSync.js +49 -0
- package/dist/time-sync/useTimeSync.js.map +1 -0
- package/dist/ui/index.d.ts +15 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +1 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/utils/format-handle.d.ts +11 -0
- package/dist/utils/format-handle.d.ts.map +1 -0
- package/dist/utils/format-handle.js +21 -0
- package/dist/utils/format-handle.js.map +1 -0
- package/locales/en-US/common.ftl +46 -0
- package/locales/en-US/settings.ftl +129 -0
- package/locales/es-ES/common.ftl +46 -0
- package/locales/es-ES/settings.ftl +168 -0
- package/locales/fr-FR/common.ftl +46 -0
- package/locales/fr-FR/settings.ftl +165 -0
- package/locales/manifest.json +36 -0
- package/locales/pt-BR/common.ftl +46 -0
- package/locales/pt-BR/settings.ftl +166 -0
- package/locales/zh-Hant/common.ftl +46 -0
- package/locales/zh-Hant/settings.ftl +161 -0
- package/node-compile-cache/v22.15.0-x64-efe9a9df-0/37be0eec +0 -0
- package/package.json +24 -3
- package/scripts/compile-translations.js +254 -0
- package/scripts/extract-i18n.js +336 -0
- package/src/components/chat/chat-box.tsx +28 -9
- package/src/components/chat/chat-message.tsx +3 -2
- package/src/components/chat/mod-view.tsx +4 -3
- package/src/components/content-metadata/content-metadata-form.tsx +3 -1
- package/src/components/danmu/danmu-message.tsx +182 -0
- package/src/components/danmu/danmu-overlay-obs.tsx +44 -0
- package/src/components/danmu/danmu-overlay.tsx +225 -0
- package/src/components/danmu/math.ts +27 -0
- package/src/components/danmu/mu.tsx +28 -0
- package/src/components/danmu/use-danmu-lanes.ts +114 -0
- package/src/components/mobile-player/fullscreen.native.tsx +26 -0
- package/src/components/mobile-player/fullscreen.tsx +23 -1
- package/src/components/mobile-player/ui/index.ts +1 -0
- package/src/components/mobile-player/ui/viewer-context-menu.tsx +9 -7
- package/src/components/mobile-player/ui/viewer-count.tsx +39 -0
- package/src/components/mobile-player/ui/viewers.tsx +10 -14
- package/src/components/share/sharesheet.tsx +11 -27
- package/src/components/ui/button.tsx +22 -4
- package/src/components/ui/dropdown.native.tsx +696 -0
- package/src/components/ui/dropdown.tsx +57 -427
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/menu.tsx +171 -0
- package/src/components/ui/resizeable.tsx +1 -1
- package/src/components/ui/toast.tsx +6 -1
- package/src/i18n/i18n-loader.native.ts +56 -0
- package/src/i18n/i18n-loader.ts +19 -0
- package/src/i18n/i18next-config.ts +250 -0
- package/src/i18n/index.ts +50 -0
- package/src/i18n/provider.tsx +70 -0
- package/src/index.tsx +9 -0
- package/src/streamplace-provider/poller.tsx +3 -0
- package/src/streamplace-store/streamplace-store.tsx +184 -2
- package/src/time-sync/index.ts +12 -0
- package/src/time-sync/time-sync.ts +112 -0
- package/src/time-sync/useTimeSync.tsx +58 -0
- package/src/utils/format-handle.ts +24 -0
- package/tsconfig.json +11 -2
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -4,7 +4,13 @@ import { BackHandler, Dimensions, StyleSheet, View } from "react-native";
|
|
|
4
4
|
import { SystemBars } from "react-native-edge-to-edge";
|
|
5
5
|
import { useSafeAreaInsets } from "react-native-safe-area-context";
|
|
6
6
|
import {
|
|
7
|
+
DanmuOverlay,
|
|
7
8
|
PlayerProtocol,
|
|
9
|
+
useDanmuEnabled,
|
|
10
|
+
useDanmuLaneCount,
|
|
11
|
+
useDanmuMaxMessages,
|
|
12
|
+
useDanmuOpacity,
|
|
13
|
+
useDanmuSpeed,
|
|
8
14
|
useLivestreamStore,
|
|
9
15
|
usePlayerStore,
|
|
10
16
|
VideoRetry,
|
|
@@ -30,6 +36,12 @@ export function Fullscreen(props: {
|
|
|
30
36
|
const setFullscreen = usePlayerStore((x) => x.setFullscreen);
|
|
31
37
|
const handle = useLivestreamStore((x) => x.profile?.handle);
|
|
32
38
|
|
|
39
|
+
const danmuEnabled = useDanmuEnabled();
|
|
40
|
+
const danmuOpacity = useDanmuOpacity();
|
|
41
|
+
const danmuSpeed = useDanmuSpeed();
|
|
42
|
+
const danmuLaneCount = useDanmuLaneCount();
|
|
43
|
+
const danmuMaxMessages = useDanmuMaxMessages();
|
|
44
|
+
|
|
33
45
|
const setSrc = usePlayerStore((x) => x.setSrc);
|
|
34
46
|
|
|
35
47
|
useEffect(() => {
|
|
@@ -154,6 +166,13 @@ export function Fullscreen(props: {
|
|
|
154
166
|
objectFit={props.objectFit}
|
|
155
167
|
pictureInPictureEnabled={props.pictureInPictureEnabled}
|
|
156
168
|
/>
|
|
169
|
+
<DanmuOverlay
|
|
170
|
+
enabled={danmuEnabled}
|
|
171
|
+
opacity={danmuOpacity}
|
|
172
|
+
speed={danmuSpeed}
|
|
173
|
+
laneCount={danmuLaneCount}
|
|
174
|
+
maxMessages={danmuMaxMessages}
|
|
175
|
+
/>
|
|
157
176
|
{props.children}
|
|
158
177
|
</View>
|
|
159
178
|
</View>
|
|
@@ -169,6 +188,13 @@ export function Fullscreen(props: {
|
|
|
169
188
|
pictureInPictureEnabled={props.pictureInPictureEnabled}
|
|
170
189
|
/>
|
|
171
190
|
</VideoRetry>
|
|
191
|
+
<DanmuOverlay
|
|
192
|
+
enabled={danmuEnabled}
|
|
193
|
+
opacity={danmuOpacity}
|
|
194
|
+
speed={danmuSpeed}
|
|
195
|
+
laneCount={danmuLaneCount}
|
|
196
|
+
maxMessages={danmuMaxMessages}
|
|
197
|
+
/>
|
|
172
198
|
{props.children}
|
|
173
199
|
</>
|
|
174
200
|
);
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { useEffect, useRef } from "react";
|
|
2
2
|
import { View as RNView } from "react-native";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
DanmuOverlay,
|
|
5
|
+
getFirstPlayerID,
|
|
6
|
+
useDanmuEnabled,
|
|
7
|
+
useDanmuLaneCount,
|
|
8
|
+
useDanmuMaxMessages,
|
|
9
|
+
useDanmuOpacity,
|
|
10
|
+
useDanmuSpeed,
|
|
11
|
+
usePlayerStore,
|
|
12
|
+
} from "../..";
|
|
4
13
|
import { View } from "../../components/ui";
|
|
5
14
|
import Video from "./video";
|
|
6
15
|
import VideoRetry from "./video-retry";
|
|
@@ -18,6 +27,12 @@ export function Fullscreen(props: {
|
|
|
18
27
|
const setSrc = usePlayerStore((x) => x.setSrc);
|
|
19
28
|
const setAutoplayFailed = usePlayerStore((x) => x.setAutoplayFailed);
|
|
20
29
|
|
|
30
|
+
const danmuEnabled = useDanmuEnabled();
|
|
31
|
+
const danmuOpacity = useDanmuOpacity();
|
|
32
|
+
const danmuSpeed = useDanmuSpeed();
|
|
33
|
+
const danmuLaneCount = useDanmuLaneCount();
|
|
34
|
+
const danmuMaxMessages = useDanmuMaxMessages();
|
|
35
|
+
|
|
21
36
|
const divRef = useRef<RNView>(null);
|
|
22
37
|
const videoRef = useRef<HTMLVideoElement | null>(null);
|
|
23
38
|
|
|
@@ -90,6 +105,13 @@ export function Fullscreen(props: {
|
|
|
90
105
|
pictureInPictureEnabled={props.pictureInPictureEnabled}
|
|
91
106
|
/>
|
|
92
107
|
</VideoRetry>
|
|
108
|
+
<DanmuOverlay
|
|
109
|
+
enabled={danmuEnabled}
|
|
110
|
+
opacity={danmuOpacity}
|
|
111
|
+
speed={danmuSpeed}
|
|
112
|
+
laneCount={danmuLaneCount}
|
|
113
|
+
maxMessages={danmuMaxMessages}
|
|
114
|
+
/>
|
|
93
115
|
{props.children}
|
|
94
116
|
</View>
|
|
95
117
|
);
|
|
@@ -4,6 +4,8 @@ import { Image, Linking, Platform, Pressable, View } from "react-native";
|
|
|
4
4
|
import {
|
|
5
5
|
ContentRights,
|
|
6
6
|
ContentWarnings,
|
|
7
|
+
formatHandle,
|
|
8
|
+
formatHandleWithAt,
|
|
7
9
|
useAvatars,
|
|
8
10
|
useLivestreamInfo,
|
|
9
11
|
zero,
|
|
@@ -113,12 +115,12 @@ export function ContextMenu({
|
|
|
113
115
|
<Pressable
|
|
114
116
|
onPress={() => {
|
|
115
117
|
if (profile?.handle) {
|
|
116
|
-
const url = `https://bsky.app/profile/${profile
|
|
118
|
+
const url = `https://bsky.app/profile/${formatHandle(profile)}`;
|
|
117
119
|
Linking.openURL(url);
|
|
118
120
|
}
|
|
119
121
|
}}
|
|
120
122
|
>
|
|
121
|
-
<Text
|
|
123
|
+
<Text>{profile && formatHandleWithAt(profile)}</Text>
|
|
122
124
|
</Pressable>
|
|
123
125
|
{/*{did && profile && (
|
|
124
126
|
<FollowButton streamerDID={profile?.did} currentUserDID={did} />
|
|
@@ -163,7 +165,7 @@ export function ContextMenu({
|
|
|
163
165
|
<DropdownMenuItem
|
|
164
166
|
onPress={() => {
|
|
165
167
|
if (profile?.handle) {
|
|
166
|
-
const url = `https://bsky.app/profile/${profile
|
|
168
|
+
const url = `https://bsky.app/profile/${formatHandle(profile)}`;
|
|
167
169
|
Linking.openURL(url);
|
|
168
170
|
}
|
|
169
171
|
}}
|
|
@@ -179,15 +181,15 @@ export function ContextMenu({
|
|
|
179
181
|
<View
|
|
180
182
|
style={[
|
|
181
183
|
zero.flex.values[1],
|
|
182
|
-
zero.layout.flex.row,
|
|
184
|
+
isMobile ? zero.layout.flex.row : zero.layout.flex.column,
|
|
183
185
|
zero.layout.flex.spaceBetween,
|
|
184
186
|
zero.pr[4],
|
|
185
187
|
]}
|
|
186
188
|
>
|
|
187
189
|
<Text>Quality</Text>
|
|
188
|
-
<Text muted>
|
|
189
|
-
|
|
190
|
-
|
|
190
|
+
<Text muted size={isMobile ? "base" : "sm"}>
|
|
191
|
+
{quality === "source" ? "Source" : quality},{" "}
|
|
192
|
+
{lowLatency ? "Low Latency" : ""}
|
|
191
193
|
</Text>
|
|
192
194
|
</View>
|
|
193
195
|
</DropdownMenuSubTrigger>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { StyleSheet, TextStyle } from "react-native";
|
|
3
|
+
import { Text } from "../../ui/text";
|
|
4
|
+
|
|
5
|
+
export interface ViewerCountProps {
|
|
6
|
+
count?: number | null;
|
|
7
|
+
style?: TextStyle;
|
|
8
|
+
locales?: Intl.LocalesArgument;
|
|
9
|
+
numberFormat?: Intl.NumberFormatOptions;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function ViewerCount({
|
|
13
|
+
count,
|
|
14
|
+
style = {},
|
|
15
|
+
locales,
|
|
16
|
+
numberFormat = { notation: "compact" },
|
|
17
|
+
}: ViewerCountProps) {
|
|
18
|
+
const formattedNumber = useMemo(() => {
|
|
19
|
+
return new Intl.NumberFormat(locales, numberFormat).format(count || 0);
|
|
20
|
+
}, [numberFormat, count]);
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<Text leading="snug" style={[styles.label, style]}>
|
|
24
|
+
{formattedNumber}
|
|
25
|
+
</Text>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const styles = StyleSheet.create({
|
|
30
|
+
label: {
|
|
31
|
+
color: "#fd5050",
|
|
32
|
+
textShadowColor: "black",
|
|
33
|
+
textShadowRadius: 3,
|
|
34
|
+
fontSize: 16,
|
|
35
|
+
lineHeight: 24,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export default ViewerCount;
|
|
@@ -1,32 +1,28 @@
|
|
|
1
1
|
import { Eye } from "lucide-react-native";
|
|
2
2
|
import * as atoms from "../../../lib/theme/atoms";
|
|
3
3
|
import { useViewers } from "../../../livestream-store";
|
|
4
|
-
import {
|
|
4
|
+
import { View } from "../../ui";
|
|
5
|
+
import ViewerCount from "./viewer-count";
|
|
5
6
|
|
|
6
7
|
export function Viewers() {
|
|
7
8
|
const viewers = useViewers();
|
|
9
|
+
return <DehydratedViewers viewers={viewers || 0} />;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function DehydratedViewers({ viewers }: { viewers: number }) {
|
|
8
13
|
return (
|
|
9
14
|
<View
|
|
10
15
|
style={[
|
|
11
16
|
atoms.layout.flex.center,
|
|
12
17
|
atoms.layout.flex.row,
|
|
13
18
|
atoms.gap.all[2],
|
|
19
|
+
atoms.px[1],
|
|
14
20
|
]}
|
|
15
21
|
>
|
|
16
22
|
<Eye color="#fd5050" />
|
|
17
|
-
<
|
|
18
|
-
style={{
|
|
19
|
-
color: "#fd5050",
|
|
20
|
-
textShadowColor: "black",
|
|
21
|
-
textShadowOffset: { width: -1, height: 1 },
|
|
22
|
-
textShadowRadius: 3,
|
|
23
|
-
fontSize: 16,
|
|
24
|
-
}}
|
|
25
|
-
>
|
|
26
|
-
{new Intl.NumberFormat(undefined, { notation: "compact" }).format(
|
|
27
|
-
viewers || 0,
|
|
28
|
-
)}
|
|
29
|
-
</Text>
|
|
23
|
+
<ViewerCount count={viewers} />
|
|
30
24
|
</View>
|
|
31
25
|
);
|
|
32
26
|
}
|
|
27
|
+
|
|
28
|
+
export default Viewers;
|
|
@@ -4,6 +4,7 @@ import { Clipboard, Linking, Platform, View } from "react-native";
|
|
|
4
4
|
import { colors } from "../../lib/theme";
|
|
5
5
|
import { useLivestreamStore } from "../../livestream-store";
|
|
6
6
|
import { useUrl } from "../../streamplace-store";
|
|
7
|
+
import { formatHandle } from "../../utils/format-handle";
|
|
7
8
|
import { BlueskyIcon } from "../icons/bluesky-icon";
|
|
8
9
|
import {
|
|
9
10
|
DropdownMenu,
|
|
@@ -26,12 +27,12 @@ export function ShareSheet({ onShare }: ShareSheetProps = {}) {
|
|
|
26
27
|
|
|
27
28
|
// Get the current stream URL
|
|
28
29
|
const getStreamUrl = useCallback(() => {
|
|
29
|
-
return url + (profile ?
|
|
30
|
+
return url + (profile ? `/${formatHandle(profile)}` : "");
|
|
30
31
|
}, [profile]);
|
|
31
32
|
|
|
32
33
|
// Get the embed URL
|
|
33
34
|
const getEmbedUrl = useCallback(() => {
|
|
34
|
-
return url + (profile ? `/embed/${profile
|
|
35
|
+
return url + (profile ? `/embed/${formatHandle(profile)}` : "");
|
|
35
36
|
}, [profile]);
|
|
36
37
|
|
|
37
38
|
// Get embed code
|
|
@@ -63,31 +64,22 @@ export function ShareSheet({ onShare }: ShareSheetProps = {}) {
|
|
|
63
64
|
// Share to Bluesky
|
|
64
65
|
const shareToBluesky = useCallback(() => {
|
|
65
66
|
const streamUrl = getStreamUrl();
|
|
66
|
-
const text =
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
const text =
|
|
68
|
+
profile && profile.handle
|
|
69
|
+
? `Check out @${profile.handle} live on Streamplace! ${streamUrl}`
|
|
70
|
+
: `Check out this stream on Streamplace! ${streamUrl}`;
|
|
69
71
|
const blueskyUrl = `https://bsky.app/intent/compose?text=${encodeURIComponent(text)}`;
|
|
70
72
|
Linking.openURL(blueskyUrl);
|
|
71
73
|
onShare?.("share_bluesky", true);
|
|
72
74
|
}, [profile, getStreamUrl, onShare]);
|
|
73
75
|
|
|
74
|
-
// Share to Twitter/X
|
|
75
|
-
const shareToTwitter = useCallback(() => {
|
|
76
|
-
const streamUrl = getStreamUrl();
|
|
77
|
-
const text = profile
|
|
78
|
-
? `Check out @${profile.handle} live on Streamplace!`
|
|
79
|
-
: `Check out this stream on Streamplace!`;
|
|
80
|
-
const twitterUrl = `https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(streamUrl)}`;
|
|
81
|
-
Linking.openURL(twitterUrl);
|
|
82
|
-
onShare?.("share_twitter", true);
|
|
83
|
-
}, [profile, getStreamUrl, onShare]);
|
|
84
|
-
|
|
85
76
|
// Native share (mobile)
|
|
86
77
|
const nativeShare = useCallback(async () => {
|
|
87
78
|
const streamUrl = getStreamUrl();
|
|
88
|
-
const text =
|
|
89
|
-
|
|
90
|
-
|
|
79
|
+
const text =
|
|
80
|
+
profile && profile.handle
|
|
81
|
+
? `Check out @${profile.handle} live on Streamplace!`
|
|
82
|
+
: `Check out this stream on Streamplace!`;
|
|
91
83
|
|
|
92
84
|
if (Platform.OS === "web" && navigator.share) {
|
|
93
85
|
try {
|
|
@@ -119,14 +111,6 @@ export function ShareSheet({ onShare }: ShareSheetProps = {}) {
|
|
|
119
111
|
<Text>Share to Bluesky</Text>
|
|
120
112
|
</View>
|
|
121
113
|
</DropdownMenuItem>
|
|
122
|
-
{/* <DropdownMenuItem onPress={shareToTwitter}>
|
|
123
|
-
<View
|
|
124
|
-
style={{ flexDirection: "row", alignItems: "center", gap: 12 }}
|
|
125
|
-
>
|
|
126
|
-
<MessageCircle size={20} color={colors.gray[400]} />
|
|
127
|
-
<Text>Share to X</Text>
|
|
128
|
-
</View>
|
|
129
|
-
</DropdownMenuItem> */}
|
|
130
114
|
{/* navigator isn't on non-web */}
|
|
131
115
|
{Platform.OS !== "web" || (navigator && (navigator as any).share) ? (
|
|
132
116
|
<DropdownMenuItem onPress={nativeShare}>
|
|
@@ -39,6 +39,7 @@ export interface ButtonProps
|
|
|
39
39
|
rightIcon?: React.ReactNode;
|
|
40
40
|
loading?: boolean;
|
|
41
41
|
loadingText?: string;
|
|
42
|
+
width?: "full" | "min" | number;
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
export const Button = forwardRef<any, ButtonProps>(
|
|
@@ -53,6 +54,7 @@ export const Button = forwardRef<any, ButtonProps>(
|
|
|
53
54
|
loadingText,
|
|
54
55
|
disabled,
|
|
55
56
|
style,
|
|
57
|
+
width = "full",
|
|
56
58
|
...props
|
|
57
59
|
},
|
|
58
60
|
ref,
|
|
@@ -198,11 +200,21 @@ export const Button = forwardRef<any, ButtonProps>(
|
|
|
198
200
|
}
|
|
199
201
|
}, [variant, icons]);
|
|
200
202
|
|
|
203
|
+
const widthStyle = useMemo(() => {
|
|
204
|
+
if (width === "full") {
|
|
205
|
+
return { width: "100%" };
|
|
206
|
+
} else if (width === "min") {
|
|
207
|
+
return { alignSelf: "flex-start" as const };
|
|
208
|
+
} else {
|
|
209
|
+
return { width };
|
|
210
|
+
}
|
|
211
|
+
}, [width]);
|
|
212
|
+
|
|
201
213
|
return (
|
|
202
214
|
<ButtonPrimitive.Root
|
|
203
215
|
ref={ref}
|
|
204
216
|
disabled={disabled || loading}
|
|
205
|
-
style={[buttonStyle, sizeStyles.button, style]}
|
|
217
|
+
style={[buttonStyle, sizeStyles.button, widthStyle, style]}
|
|
206
218
|
{...props}
|
|
207
219
|
>
|
|
208
220
|
<ButtonPrimitive.Content style={sizeStyles.inner}>
|
|
@@ -216,9 +228,15 @@ export const Button = forwardRef<any, ButtonProps>(
|
|
|
216
228
|
</ButtonPrimitive.Icon>
|
|
217
229
|
) : null}
|
|
218
230
|
|
|
219
|
-
|
|
220
|
-
{
|
|
221
|
-
|
|
231
|
+
{typeof children === "string" ? (
|
|
232
|
+
<TextPrimitive.Root style={[textStyle as any, sizeStyles.text]}>
|
|
233
|
+
{loading && loadingText ? loadingText : children}
|
|
234
|
+
</TextPrimitive.Root>
|
|
235
|
+
) : loading && loadingText ? (
|
|
236
|
+
loadingText
|
|
237
|
+
) : (
|
|
238
|
+
children
|
|
239
|
+
)}
|
|
222
240
|
|
|
223
241
|
{loading && rightIcon ? (
|
|
224
242
|
<ButtonPrimitive.Icon position="right">
|