@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
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { forwardRef, ReactNode } from "react";
|
|
2
|
+
import { Platform, View, ViewStyle } from "react-native";
|
|
3
|
+
import {
|
|
4
|
+
a,
|
|
5
|
+
borderRadius,
|
|
6
|
+
fontSize,
|
|
7
|
+
gap,
|
|
8
|
+
mt,
|
|
9
|
+
mx,
|
|
10
|
+
p,
|
|
11
|
+
pb,
|
|
12
|
+
pl,
|
|
13
|
+
pr,
|
|
14
|
+
pt,
|
|
15
|
+
px,
|
|
16
|
+
py,
|
|
17
|
+
} from "../../lib/theme/atoms";
|
|
18
|
+
import { mergeStyles, useTheme } from "../../ui";
|
|
19
|
+
import { Text } from "./text";
|
|
20
|
+
|
|
21
|
+
export interface MenuContainerProps {
|
|
22
|
+
children: ReactNode;
|
|
23
|
+
style?: ViewStyle;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export const MenuContainer = forwardRef<View, MenuContainerProps>(
|
|
27
|
+
({ children, style }, ref) => {
|
|
28
|
+
const { theme } = useTheme();
|
|
29
|
+
return (
|
|
30
|
+
<View ref={ref} style={[gap.all[4], mt[4], mx[2], style]}>
|
|
31
|
+
{children}
|
|
32
|
+
</View>
|
|
33
|
+
);
|
|
34
|
+
},
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
export interface MenuGroupProps {
|
|
38
|
+
children: ReactNode;
|
|
39
|
+
style?: ViewStyle;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export const MenuGroup = forwardRef<View, MenuGroupProps>(
|
|
43
|
+
({ children, style }, ref) => {
|
|
44
|
+
const { theme } = useTheme();
|
|
45
|
+
return (
|
|
46
|
+
<View
|
|
47
|
+
ref={ref}
|
|
48
|
+
style={[
|
|
49
|
+
{ backgroundColor: theme.colors.muted + "c0" },
|
|
50
|
+
Platform.OS === "web" ? [px[1], py[1]] : p[1],
|
|
51
|
+
gap.all[1],
|
|
52
|
+
{ borderRadius: borderRadius.lg },
|
|
53
|
+
style,
|
|
54
|
+
]}
|
|
55
|
+
>
|
|
56
|
+
{children}
|
|
57
|
+
</View>
|
|
58
|
+
);
|
|
59
|
+
},
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
export interface MenuItemProps {
|
|
63
|
+
children: ReactNode;
|
|
64
|
+
disabled?: boolean;
|
|
65
|
+
style?: ViewStyle;
|
|
66
|
+
onPress?: () => void;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export const MenuItem = forwardRef<View, MenuItemProps>(
|
|
70
|
+
({ children, disabled, style }, ref) => {
|
|
71
|
+
const { theme } = useTheme();
|
|
72
|
+
return (
|
|
73
|
+
<View
|
|
74
|
+
ref={ref}
|
|
75
|
+
style={[
|
|
76
|
+
a.layout.flex.row,
|
|
77
|
+
a.layout.flex.alignCenter,
|
|
78
|
+
a.radius.all.sm,
|
|
79
|
+
py[1],
|
|
80
|
+
pl[3],
|
|
81
|
+
pr[2],
|
|
82
|
+
disabled && { opacity: 0.5 },
|
|
83
|
+
style,
|
|
84
|
+
]}
|
|
85
|
+
>
|
|
86
|
+
{typeof children === "string" ? (
|
|
87
|
+
<Text style={{ color: theme.colors.popoverForeground }}>
|
|
88
|
+
{children}
|
|
89
|
+
</Text>
|
|
90
|
+
) : (
|
|
91
|
+
children
|
|
92
|
+
)}
|
|
93
|
+
</View>
|
|
94
|
+
);
|
|
95
|
+
},
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
export interface MenuLabelProps {
|
|
99
|
+
children: ReactNode;
|
|
100
|
+
style?: ViewStyle;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export const MenuLabel = forwardRef<View, MenuLabelProps>(
|
|
104
|
+
({ children, style }, ref) => {
|
|
105
|
+
const { theme } = useTheme();
|
|
106
|
+
return (
|
|
107
|
+
<Text
|
|
108
|
+
ref={ref as any}
|
|
109
|
+
style={mergeStyles(
|
|
110
|
+
px[4],
|
|
111
|
+
py[2],
|
|
112
|
+
{ color: theme.colors.textMuted },
|
|
113
|
+
a.fontSize.base,
|
|
114
|
+
style,
|
|
115
|
+
)}
|
|
116
|
+
>
|
|
117
|
+
{children}
|
|
118
|
+
</Text>
|
|
119
|
+
);
|
|
120
|
+
},
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
export interface MenuSeparatorProps {
|
|
124
|
+
style?: ViewStyle;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export const MenuSeparator = forwardRef<View, MenuSeparatorProps>(
|
|
128
|
+
({ style }, ref) => {
|
|
129
|
+
const { theme } = useTheme();
|
|
130
|
+
return (
|
|
131
|
+
<View
|
|
132
|
+
ref={ref}
|
|
133
|
+
style={[
|
|
134
|
+
mx[2],
|
|
135
|
+
{
|
|
136
|
+
height: 1,
|
|
137
|
+
backgroundColor: theme.colors.border,
|
|
138
|
+
marginVertical: 0,
|
|
139
|
+
},
|
|
140
|
+
style,
|
|
141
|
+
]}
|
|
142
|
+
/>
|
|
143
|
+
);
|
|
144
|
+
},
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
export interface MenuInfoProps {
|
|
148
|
+
description: string;
|
|
149
|
+
style?: ViewStyle;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export const MenuInfo = forwardRef<View, MenuInfoProps>(
|
|
153
|
+
({ description, style }, ref) => {
|
|
154
|
+
const { theme } = useTheme();
|
|
155
|
+
return (
|
|
156
|
+
<Text
|
|
157
|
+
ref={ref as any}
|
|
158
|
+
style={mergeStyles(
|
|
159
|
+
{ color: theme.colors.textMuted, marginTop: -8 },
|
|
160
|
+
pt[1],
|
|
161
|
+
pl[4],
|
|
162
|
+
pb[2],
|
|
163
|
+
fontSize.sm,
|
|
164
|
+
style,
|
|
165
|
+
)}
|
|
166
|
+
>
|
|
167
|
+
{description}
|
|
168
|
+
</Text>
|
|
169
|
+
);
|
|
170
|
+
},
|
|
171
|
+
);
|
|
@@ -39,7 +39,7 @@ export function Resizable({
|
|
|
39
39
|
}: ResizableChatSheetProps) {
|
|
40
40
|
const { slideKeyboard } = useKeyboardSlide();
|
|
41
41
|
const { bottom: safeBottom } = useSafeAreaInsets();
|
|
42
|
-
const MAX_HEIGHT = (SCREEN_HEIGHT - safeBottom) * 0.
|
|
42
|
+
const MAX_HEIGHT = (SCREEN_HEIGHT - safeBottom) * 0.55;
|
|
43
43
|
const MIN_HEIGHT = -(SCREEN_HEIGHT - safeBottom) * 0.2;
|
|
44
44
|
const COLLAPSE_HEIGHT = (SCREEN_HEIGHT - safeBottom) * 0.1;
|
|
45
45
|
|
|
@@ -880,13 +880,18 @@ export function Toast({
|
|
|
880
880
|
width: "100%",
|
|
881
881
|
}}
|
|
882
882
|
>
|
|
883
|
-
<Button
|
|
883
|
+
<Button
|
|
884
|
+
width="min"
|
|
885
|
+
variant={buttonTypeMap[variant]}
|
|
886
|
+
onPress={onAction}
|
|
887
|
+
>
|
|
884
888
|
<Text style={{ color: theme.colors.foreground }}>
|
|
885
889
|
{actionLabel}
|
|
886
890
|
</Text>
|
|
887
891
|
</Button>
|
|
888
892
|
<Button
|
|
889
893
|
variant="secondary"
|
|
894
|
+
width="min"
|
|
890
895
|
onPress={() => onOpenChange(false)}
|
|
891
896
|
>
|
|
892
897
|
<Text style={{ color: theme.colors.foreground }}>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Native translation loader - imports translations directly for bundling
|
|
2
|
+
// Metro will use this file for React Native builds
|
|
3
|
+
|
|
4
|
+
// Import all translations directly so they're bundled into the app
|
|
5
|
+
import enUSCommon from "../../public/locales/en-US/common.json";
|
|
6
|
+
import enUSSettings from "../../public/locales/en-US/settings.json";
|
|
7
|
+
import esESCommon from "../../public/locales/es-ES/common.json";
|
|
8
|
+
import esESSettings from "../../public/locales/es-ES/settings.json";
|
|
9
|
+
import frFRCommon from "../../public/locales/fr-FR/common.json";
|
|
10
|
+
import frFRSettings from "../../public/locales/fr-FR/settings.json";
|
|
11
|
+
import ptBRCommon from "../../public/locales/pt-BR/common.json";
|
|
12
|
+
import ptBRSettings from "../../public/locales/pt-BR/settings.json";
|
|
13
|
+
import zhHantCommon from "../../public/locales/zh-Hant/common.json";
|
|
14
|
+
import zhHantSettings from "../../public/locales/zh-Hant/settings.json";
|
|
15
|
+
|
|
16
|
+
const translationMap: Record<string, any> = {
|
|
17
|
+
"en-US/common": enUSCommon,
|
|
18
|
+
"en-US/settings": enUSSettings,
|
|
19
|
+
"pt-BR/common": ptBRCommon,
|
|
20
|
+
"pt-BR/settings": ptBRSettings,
|
|
21
|
+
"es-ES/common": esESCommon,
|
|
22
|
+
"es-ES/settings": esESSettings,
|
|
23
|
+
"zh-Hant/common": zhHantCommon,
|
|
24
|
+
"zh-Hant/settings": zhHantSettings,
|
|
25
|
+
"fr-FR/common": frFRCommon,
|
|
26
|
+
"fr-FR/settings": frFRSettings,
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export async function loadTranslationData(
|
|
30
|
+
locale: string,
|
|
31
|
+
namespace: string,
|
|
32
|
+
): Promise<any> {
|
|
33
|
+
// Map base language codes to full locales
|
|
34
|
+
const fullLocale = locale.includes("-")
|
|
35
|
+
? locale
|
|
36
|
+
: {
|
|
37
|
+
en: "en-US",
|
|
38
|
+
pt: "pt-BR",
|
|
39
|
+
es: "es-ES",
|
|
40
|
+
zh: "zh-Hant",
|
|
41
|
+
fr: "fr-FR",
|
|
42
|
+
}[locale] || locale;
|
|
43
|
+
|
|
44
|
+
const localeNamespaceKey = `${fullLocale}/${namespace}`;
|
|
45
|
+
const translations = translationMap[localeNamespaceKey];
|
|
46
|
+
|
|
47
|
+
if (!translations) {
|
|
48
|
+
throw new Error(`No translation mapping for ${localeNamespaceKey}`);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (!translations || Object.keys(translations).length === 0) {
|
|
52
|
+
throw new Error("No translations found");
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return translations;
|
|
56
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Web translation loader - loads translations via fetch for code splitting
|
|
2
|
+
// Metro will use this file for web builds
|
|
3
|
+
|
|
4
|
+
export async function loadTranslationData(
|
|
5
|
+
locale: string,
|
|
6
|
+
namespace: string,
|
|
7
|
+
): Promise<any> {
|
|
8
|
+
const response = await fetch(`/locales/${locale}/${namespace}.json`);
|
|
9
|
+
if (!response.ok) {
|
|
10
|
+
throw new Error(`HTTP ${response.status}`);
|
|
11
|
+
}
|
|
12
|
+
const translations = await response.json();
|
|
13
|
+
|
|
14
|
+
if (!translations || Object.keys(translations).length === 0) {
|
|
15
|
+
throw new Error("No translations found");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return translations;
|
|
19
|
+
}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
// TypeScript i18next configuration with Fluent and manifest integration
|
|
2
|
+
// modified from https://github.com/inaturalist/iNaturalistReactNative/blob/main/src/i18n/initI18next.js
|
|
3
|
+
|
|
4
|
+
import i18next from "i18next";
|
|
5
|
+
import Fluent from "i18next-fluent";
|
|
6
|
+
import resourcesToBackend from "i18next-resources-to-backend";
|
|
7
|
+
import "intl-pluralrules";
|
|
8
|
+
import { initReactI18next } from "react-i18next";
|
|
9
|
+
|
|
10
|
+
// Import our manifest directly to avoid circular dependency
|
|
11
|
+
import manifest from "../../locales/manifest.json";
|
|
12
|
+
import storage from "../storage";
|
|
13
|
+
|
|
14
|
+
const LOCALE_STORAGE_KEY = "@streamplace/locale";
|
|
15
|
+
|
|
16
|
+
// Try to import expo-localization, but make it optional
|
|
17
|
+
let Localization: typeof import("expo-localization") | null = null;
|
|
18
|
+
try {
|
|
19
|
+
const localizationModule = require("expo-localization");
|
|
20
|
+
// Handle both default and named exports
|
|
21
|
+
Localization = localizationModule.default
|
|
22
|
+
? localizationModule.default
|
|
23
|
+
: localizationModule;
|
|
24
|
+
} catch {
|
|
25
|
+
// expo-localization not available, will use browser/fallback detection
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function cleanLocaleName(locale: string): string {
|
|
29
|
+
return locale.replace("_", "-").replace(/@.*/, "");
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function getLocaleFromSystemLocale(): string {
|
|
33
|
+
let systemLocale = "en";
|
|
34
|
+
|
|
35
|
+
// Try to get locale from expo-localization if available
|
|
36
|
+
if (Localization && typeof Localization.getLocales === "function") {
|
|
37
|
+
try {
|
|
38
|
+
const locales = Localization.getLocales();
|
|
39
|
+
systemLocale = locales?.[0]?.languageTag || "en";
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.warn("Failed to get locales from expo-localization:", error);
|
|
42
|
+
}
|
|
43
|
+
} else if (typeof navigator !== "undefined" && navigator.language) {
|
|
44
|
+
// Fallback to browser navigator.language
|
|
45
|
+
systemLocale = navigator.language;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const candidateLocale = cleanLocaleName(systemLocale);
|
|
49
|
+
|
|
50
|
+
// Check if the full locale is supported (e.g., "en-US")
|
|
51
|
+
if (manifest.supportedLocales.includes(candidateLocale)) {
|
|
52
|
+
return candidateLocale;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Check if the language part is supported (e.g., "en" from "en-GB")
|
|
56
|
+
const lang = candidateLocale.split("-")[0];
|
|
57
|
+
const matchingLocale = manifest.supportedLocales.find((locale) =>
|
|
58
|
+
locale.startsWith(lang + "-"),
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
if (matchingLocale) {
|
|
62
|
+
return matchingLocale;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Fall back to default locale from manifest
|
|
66
|
+
return manifest.fallbackChain[0];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Cache for the current locale to avoid async lookups
|
|
70
|
+
let cachedLocale: string | null = null;
|
|
71
|
+
|
|
72
|
+
export async function getCurrentLocale(): Promise<string> {
|
|
73
|
+
if (cachedLocale) {
|
|
74
|
+
return cachedLocale;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const stored = await storage.getItem(LOCALE_STORAGE_KEY);
|
|
78
|
+
if (stored && manifest.supportedLocales.includes(stored)) {
|
|
79
|
+
cachedLocale = stored;
|
|
80
|
+
return stored;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const systemLocale = getLocaleFromSystemLocale();
|
|
84
|
+
cachedLocale = systemLocale;
|
|
85
|
+
return systemLocale;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Synchronous version for initial load - returns cached or system locale
|
|
89
|
+
export function getCurrentLocaleSync(): string {
|
|
90
|
+
return cachedLocale || getLocaleFromSystemLocale();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Enhanced fallback logic using manifest
|
|
94
|
+
function getFallbackChain(code: string): string[] {
|
|
95
|
+
const fallbacks: string[] = [];
|
|
96
|
+
|
|
97
|
+
if (!code) return manifest.fallbackChain;
|
|
98
|
+
|
|
99
|
+
// Regional fallbacks
|
|
100
|
+
if (code.match(/^es-/)) {
|
|
101
|
+
fallbacks.push("es-ES"); // Spanish fallback
|
|
102
|
+
} else if (code.match(/^fr-/)) {
|
|
103
|
+
fallbacks.push("fr-FR"); // French fallback
|
|
104
|
+
} else if (code.match(/^pt-/)) {
|
|
105
|
+
fallbacks.push("pt-BR"); // Portuguese fallback
|
|
106
|
+
} else if (code.match(/^zh-/)) {
|
|
107
|
+
fallbacks.push("zh-Hant"); // Chinese fallback
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Add manifest fallback chain
|
|
111
|
+
return [...fallbacks, ...manifest.fallbackChain];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Use sync version for initial config - will be updated when storage loads
|
|
115
|
+
const LOCALE = getCurrentLocaleSync();
|
|
116
|
+
|
|
117
|
+
export const I18NEXT_CONFIG = {
|
|
118
|
+
lng: LOCALE,
|
|
119
|
+
ns: ["common", "settings"], // Common should be first as it's most frequently used
|
|
120
|
+
defaultNS: "common",
|
|
121
|
+
interpolation: {
|
|
122
|
+
escapeValue: false, // React already safes from XSS
|
|
123
|
+
},
|
|
124
|
+
react: {
|
|
125
|
+
useSuspense: false, // Prevent Android crashes
|
|
126
|
+
},
|
|
127
|
+
i18nFormat: {
|
|
128
|
+
fluentBundleOptions: {
|
|
129
|
+
useIsolating: false,
|
|
130
|
+
functions: {
|
|
131
|
+
VOWORCON: ([txt]: [string]) =>
|
|
132
|
+
"aeiou".indexOf(txt[0].toLowerCase()) >= 0 ? "vow" : "con",
|
|
133
|
+
JOIN: (args: string[], opts: { separator?: string } = {}) =>
|
|
134
|
+
args
|
|
135
|
+
.filter(Boolean)
|
|
136
|
+
.filter((s) => typeof s === "string")
|
|
137
|
+
.join(opts.separator || ""),
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
load: "currentOnly",
|
|
142
|
+
cleanCode: true,
|
|
143
|
+
fallbackLng: getFallbackChain,
|
|
144
|
+
supportedLngs: [...manifest.supportedLocales],
|
|
145
|
+
debug: process.env.NODE_ENV === "development",
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
// Import platform-specific translation loader
|
|
149
|
+
// Metro will use i18n-loader.native.ts for React Native, i18n-loader.ts for web
|
|
150
|
+
import { loadTranslationData as platformLoadTranslationData } from "./i18n-loader";
|
|
151
|
+
|
|
152
|
+
// Translation loading function with error handling
|
|
153
|
+
async function loadTranslationData(
|
|
154
|
+
locale: string,
|
|
155
|
+
namespace: string,
|
|
156
|
+
): Promise<any> {
|
|
157
|
+
try {
|
|
158
|
+
const translations = await platformLoadTranslationData(locale, namespace);
|
|
159
|
+
return translations;
|
|
160
|
+
} catch (error: any) {
|
|
161
|
+
console.error(
|
|
162
|
+
`Failed to load ${namespace} translations for ${locale}:`,
|
|
163
|
+
error,
|
|
164
|
+
);
|
|
165
|
+
// Return minimal fallback
|
|
166
|
+
return {
|
|
167
|
+
loading: "Loading...",
|
|
168
|
+
error: "Error",
|
|
169
|
+
cancel: "Cancel",
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Initialize i18next with our configuration
|
|
175
|
+
let initPromise: Promise<typeof i18next> | null = null;
|
|
176
|
+
|
|
177
|
+
export default async function initI18next(
|
|
178
|
+
config: any = {},
|
|
179
|
+
): Promise<typeof i18next> {
|
|
180
|
+
// Return existing promise if already initializing
|
|
181
|
+
if (initPromise) {
|
|
182
|
+
return initPromise;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Load stored locale from storage first
|
|
186
|
+
const storedLocale = await getCurrentLocale();
|
|
187
|
+
|
|
188
|
+
const finalConfig = {
|
|
189
|
+
...I18NEXT_CONFIG,
|
|
190
|
+
lng: storedLocale,
|
|
191
|
+
...config,
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
initPromise = i18next
|
|
195
|
+
.use(initReactI18next)
|
|
196
|
+
.use(Fluent)
|
|
197
|
+
.use(
|
|
198
|
+
resourcesToBackend((locale: string, namespace: string, callback: any) => {
|
|
199
|
+
// Load translations using our manifest-based namespace system
|
|
200
|
+
loadTranslationData(locale, namespace)
|
|
201
|
+
.then((translations) => callback(null, translations))
|
|
202
|
+
.catch((error) => callback(error, null));
|
|
203
|
+
}),
|
|
204
|
+
)
|
|
205
|
+
.init(finalConfig)
|
|
206
|
+
.then(() => {
|
|
207
|
+
// Automatically persist language changes to storage
|
|
208
|
+
i18next.on("languageChanged", (lng) => {
|
|
209
|
+
if (lng && manifest.supportedLocales.includes(lng)) {
|
|
210
|
+
cachedLocale = lng;
|
|
211
|
+
storage.setItem(LOCALE_STORAGE_KEY, lng);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
return i18next;
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
return initPromise;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Utility functions for language management
|
|
221
|
+
export async function changeLanguage(locale: string): Promise<void> {
|
|
222
|
+
// Storage is handled automatically via languageChanged event
|
|
223
|
+
await i18next.changeLanguage(locale);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
export function getCurrentLanguage(): string {
|
|
227
|
+
// Return the cached locale preference, not i18next's resolved language
|
|
228
|
+
// i18next.language may return just "zh" instead of "zh-Hant"
|
|
229
|
+
return getCurrentLocaleSync();
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
export function getSupportedLocales(): string[] {
|
|
233
|
+
return [...manifest.supportedLocales];
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export function getLanguageInfo(locale: string): any {
|
|
237
|
+
return manifest.languages[locale] || null;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
export function isLocaleSupported(locale: string): boolean {
|
|
241
|
+
return manifest.supportedLocales.includes(locale);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// Auto-initialize i18next on module load
|
|
245
|
+
// This ensures the instance is ready when used in providers
|
|
246
|
+
initI18next().catch((error) => {
|
|
247
|
+
console.error("Failed to auto-initialize i18n:", error);
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
export { i18next };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// Simple i18n infrastructure exports for Streamplace components
|
|
2
|
+
// Re-exports i18next tools for app-level customization
|
|
3
|
+
|
|
4
|
+
// Core i18next exports
|
|
5
|
+
export { default as i18n } from "i18next";
|
|
6
|
+
export {
|
|
7
|
+
I18nextProvider,
|
|
8
|
+
Trans,
|
|
9
|
+
Translation,
|
|
10
|
+
initReactI18next,
|
|
11
|
+
useTranslation,
|
|
12
|
+
withTranslation,
|
|
13
|
+
} from "react-i18next";
|
|
14
|
+
|
|
15
|
+
// i18next plugins for common use cases
|
|
16
|
+
export { default as LanguageDetector } from "i18next-browser-languagedetector";
|
|
17
|
+
export { default as Backend } from "i18next-http-backend";
|
|
18
|
+
export { default as resourcesToBackend } from "i18next-resources-to-backend";
|
|
19
|
+
|
|
20
|
+
// Fluent support
|
|
21
|
+
export { default as Fluent } from "i18next-fluent";
|
|
22
|
+
|
|
23
|
+
// Basic provider components for consistent setup
|
|
24
|
+
export { I18nProvider } from "./provider";
|
|
25
|
+
|
|
26
|
+
// Bootstrap configuration and utilities
|
|
27
|
+
export {
|
|
28
|
+
I18NEXT_CONFIG,
|
|
29
|
+
changeLanguage,
|
|
30
|
+
getCurrentLanguage,
|
|
31
|
+
getCurrentLocale,
|
|
32
|
+
getLanguageInfo,
|
|
33
|
+
getLocaleFromSystemLocale,
|
|
34
|
+
getSupportedLocales,
|
|
35
|
+
i18next,
|
|
36
|
+
default as initI18next,
|
|
37
|
+
isLocaleSupported,
|
|
38
|
+
} from "./i18next-config";
|
|
39
|
+
|
|
40
|
+
// Manifest data
|
|
41
|
+
export { default as manifest } from "../../locales/manifest.json";
|
|
42
|
+
|
|
43
|
+
// TypeScript types
|
|
44
|
+
export type {
|
|
45
|
+
i18n as I18nInstance,
|
|
46
|
+
InitOptions,
|
|
47
|
+
Resource,
|
|
48
|
+
ResourceLanguage,
|
|
49
|
+
TFunction,
|
|
50
|
+
} from "i18next";
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Simple i18n provider wrapper for consistent setup
|
|
2
|
+
import type { i18n } from "i18next";
|
|
3
|
+
import { ReactNode, useEffect, useState } from "react";
|
|
4
|
+
import { I18nextProvider } from "react-i18next";
|
|
5
|
+
|
|
6
|
+
interface I18nProviderProps {
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
i18n: i18n;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Simple wrapper around I18nextProvider for consistent setup
|
|
13
|
+
* The actual i18n instance should be configured at the app level
|
|
14
|
+
* Waits for i18next to be initialized AND language loaded to prevent FOUC
|
|
15
|
+
*/
|
|
16
|
+
export function I18nProvider({ children, i18n }: I18nProviderProps) {
|
|
17
|
+
const [isReady, setIsReady] = useState(false);
|
|
18
|
+
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
// Check if both initialized and language is loaded
|
|
21
|
+
const checkReady = () => {
|
|
22
|
+
const initialized = i18n.isInitialized;
|
|
23
|
+
const hasCommon = i18n.hasLoadedNamespace("common");
|
|
24
|
+
console.log("i18n ready check:", {
|
|
25
|
+
initialized,
|
|
26
|
+
hasCommon,
|
|
27
|
+
language: i18n.language,
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
if (initialized && hasCommon) {
|
|
31
|
+
setIsReady(true);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
checkReady();
|
|
36
|
+
|
|
37
|
+
// Fallback: if not ready after 300ms, just proceed anyway
|
|
38
|
+
const fallbackTimeout = setTimeout(() => {
|
|
39
|
+
if (!isReady) {
|
|
40
|
+
console.log("i18n ready timeout - proceeding anyway");
|
|
41
|
+
setIsReady(true);
|
|
42
|
+
}
|
|
43
|
+
}, 300);
|
|
44
|
+
|
|
45
|
+
// Listen for both initialization and language loaded events
|
|
46
|
+
const handleInitialized = () => {
|
|
47
|
+
checkReady();
|
|
48
|
+
};
|
|
49
|
+
const handleLanguageLoaded = () => {
|
|
50
|
+
checkReady();
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
i18n.on("initialized", handleInitialized);
|
|
54
|
+
i18n.on("languageChanged", handleLanguageLoaded);
|
|
55
|
+
i18n.on("loaded", handleLanguageLoaded);
|
|
56
|
+
|
|
57
|
+
return () => {
|
|
58
|
+
clearTimeout(fallbackTimeout);
|
|
59
|
+
i18n.off("initialized", handleInitialized);
|
|
60
|
+
i18n.off("languageChanged", handleLanguageLoaded);
|
|
61
|
+
i18n.off("loaded", handleLanguageLoaded);
|
|
62
|
+
};
|
|
63
|
+
}, [i18n, isReady]);
|
|
64
|
+
|
|
65
|
+
if (!isReady) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return <I18nextProvider i18n={i18n}>{children}</I18nextProvider>;
|
|
70
|
+
}
|
package/src/index.tsx
CHANGED
|
@@ -24,6 +24,10 @@ export * as zero from "./ui";
|
|
|
24
24
|
|
|
25
25
|
export * from "./hooks";
|
|
26
26
|
|
|
27
|
+
// Internationalization system exports
|
|
28
|
+
export * from "./i18n";
|
|
29
|
+
export * as I18n from "./i18n";
|
|
30
|
+
|
|
27
31
|
// Theme system exports
|
|
28
32
|
export * from "./lib/theme";
|
|
29
33
|
|
|
@@ -33,6 +37,11 @@ export * from "./components/chat/system-message";
|
|
|
33
37
|
export { default as VideoRetry } from "./components/mobile-player/video-retry";
|
|
34
38
|
export * from "./lib/system-messages";
|
|
35
39
|
|
|
40
|
+
export * from "./utils/format-handle";
|
|
41
|
+
|
|
42
|
+
export { DanmuOverlay } from "./components/danmu/danmu-overlay";
|
|
43
|
+
export { DanmuOverlayOBS } from "./components/danmu/danmu-overlay-obs";
|
|
44
|
+
|
|
36
45
|
// Rotation lock system exports
|
|
37
46
|
export {
|
|
38
47
|
RotationProvider,
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
useStreamplaceStore,
|
|
8
8
|
} from "../streamplace-store";
|
|
9
9
|
import { usePDSAgent } from "../streamplace-store/xrpc";
|
|
10
|
+
import { useTimeSync } from "../time-sync";
|
|
10
11
|
|
|
11
12
|
export default function Poller({ children }: { children: React.ReactNode }) {
|
|
12
13
|
const url = useStreamplaceStore((state) => state.url);
|
|
@@ -19,6 +20,8 @@ export default function Poller({ children }: { children: React.ReactNode }) {
|
|
|
19
20
|
(state) => state.liveUsersRefresh,
|
|
20
21
|
);
|
|
21
22
|
|
|
23
|
+
useTimeSync();
|
|
24
|
+
|
|
22
25
|
useEffect(() => {
|
|
23
26
|
if (pdsAgent && did) {
|
|
24
27
|
getChatProfile();
|