@xrift/world-components 0.46.0 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/BillboardY/hooks.d.ts +1 -1
- package/dist/components/BillboardY/hooks.d.ts.map +1 -1
- package/dist/components/BillboardY/index.d.ts +1 -1
- package/dist/components/BillboardY/index.d.ts.map +1 -1
- package/dist/components/DevEnvironment/components/ControlsHelp.d.ts +1 -1
- package/dist/components/DevEnvironment/components/ControlsHelp.d.ts.map +1 -1
- package/dist/components/DevEnvironment/components/Crosshair.d.ts +1 -1
- package/dist/components/DevEnvironment/components/Crosshair.d.ts.map +1 -1
- package/dist/components/DevEnvironment/components/GrabSystem/index.d.ts +1 -1
- package/dist/components/DevEnvironment/components/GrabSystem/index.d.ts.map +1 -1
- package/dist/components/DevEnvironment/components/PhysicsPlayer.d.ts +1 -1
- package/dist/components/DevEnvironment/components/PhysicsPlayer.d.ts.map +1 -1
- package/dist/components/DevEnvironment/components/PointerLockStatus.d.ts +1 -1
- package/dist/components/DevEnvironment/components/PointerLockStatus.d.ts.map +1 -1
- package/dist/components/DevEnvironment/index.d.ts +1 -1
- package/dist/components/DevEnvironment/index.d.ts.map +1 -1
- package/dist/components/EntryLogBoard/components/AvatarIcon.d.ts +1 -1
- package/dist/components/EntryLogBoard/components/AvatarIcon.d.ts.map +1 -1
- package/dist/components/EntryLogBoard/components/LogRow.d.ts +1 -1
- package/dist/components/EntryLogBoard/components/LogRow.d.ts.map +1 -1
- package/dist/components/EntryLogBoard/index.d.ts +1 -1
- package/dist/components/EntryLogBoard/index.d.ts.map +1 -1
- package/dist/components/LiveVideoPlayer/components/ControlPanel/index.d.ts +1 -1
- package/dist/components/LiveVideoPlayer/components/ControlPanel/index.d.ts.map +1 -1
- package/dist/components/LiveVideoPlayer/components/LiveVideoTexture.d.ts +1 -1
- package/dist/components/LiveVideoPlayer/components/LiveVideoTexture.d.ts.map +1 -1
- package/dist/components/LiveVideoPlayer/index.d.ts +1 -1
- package/dist/components/LiveVideoPlayer/index.d.ts.map +1 -1
- package/dist/components/Mirror/index.d.ts +1 -1
- package/dist/components/Mirror/index.d.ts.map +1 -1
- package/dist/components/Portal/components/PortalGlow/index.d.ts +1 -1
- package/dist/components/Portal/components/PortalGlow/index.d.ts.map +1 -1
- package/dist/components/Portal/components/PortalParticles/index.d.ts +1 -1
- package/dist/components/Portal/components/PortalParticles/index.d.ts.map +1 -1
- package/dist/components/Portal/components/PortalPedestal/index.d.ts +1 -1
- package/dist/components/Portal/components/PortalPedestal/index.d.ts.map +1 -1
- package/dist/components/Portal/components/PortalThumbnail/index.d.ts +1 -1
- package/dist/components/Portal/components/PortalThumbnail/index.d.ts.map +1 -1
- package/dist/components/Portal/components/PortalVortex/index.d.ts +1 -1
- package/dist/components/Portal/components/PortalVortex/index.d.ts.map +1 -1
- package/dist/components/Portal/index.d.ts +1 -1
- package/dist/components/Portal/index.d.ts.map +1 -1
- package/dist/components/ScreenShareDisplay/index.d.ts +1 -1
- package/dist/components/ScreenShareDisplay/index.d.ts.map +1 -1
- package/dist/components/Skybox/index.d.ts +1 -1
- package/dist/components/Skybox/index.d.ts.map +1 -1
- package/dist/components/TagBoard/components/TagChip.d.ts +1 -1
- package/dist/components/TagBoard/components/TagChip.d.ts.map +1 -1
- package/dist/components/TagBoard/components/TagDisplay/index.d.ts +1 -1
- package/dist/components/TagBoard/components/TagDisplay/index.d.ts.map +1 -1
- package/dist/components/TagBoard/components/TagSelector/components/ActionButton.d.ts +1 -1
- package/dist/components/TagBoard/components/TagSelector/components/ActionButton.d.ts.map +1 -1
- package/dist/components/TagBoard/components/TagSelector/components/TagButton.d.ts +1 -1
- package/dist/components/TagBoard/components/TagSelector/components/TagButton.d.ts.map +1 -1
- package/dist/components/TagBoard/components/TagSelector/index.d.ts +1 -1
- package/dist/components/TagBoard/components/TagSelector/index.d.ts.map +1 -1
- package/dist/components/TagBoard/index.d.ts +1 -1
- package/dist/components/TagBoard/index.d.ts.map +1 -1
- package/dist/components/Video180Sphere/EyeView.d.ts +1 -1
- package/dist/components/Video180Sphere/EyeView.d.ts.map +1 -1
- package/dist/components/Video180Sphere/index.d.ts +1 -1
- package/dist/components/Video180Sphere/index.d.ts.map +1 -1
- package/dist/components/VideoPlayer/components/ControlPanel.d.ts +1 -1
- package/dist/components/VideoPlayer/components/ControlPanel.d.ts.map +1 -1
- package/dist/components/VideoPlayer/index.d.ts +1 -1
- package/dist/components/VideoPlayer/index.d.ts.map +1 -1
- package/dist/components/VideoScreen/constants.d.ts +27 -0
- package/dist/components/VideoScreen/constants.d.ts.map +1 -0
- package/dist/components/VideoScreen/constants.js +27 -0
- package/dist/components/VideoScreen/constants.js.map +1 -0
- package/dist/components/VideoScreen/hooks.d.ts +19 -0
- package/dist/components/VideoScreen/hooks.d.ts.map +1 -0
- package/dist/components/VideoScreen/hooks.js +69 -0
- package/dist/components/VideoScreen/hooks.js.map +1 -0
- package/dist/components/VideoScreen/index.d.ts +1 -1
- package/dist/components/VideoScreen/index.d.ts.map +1 -1
- package/dist/components/VideoScreen/index.js +22 -17
- package/dist/components/VideoScreen/index.js.map +1 -1
- package/dist/components/VideoScreen/types.d.ts +14 -4
- package/dist/components/VideoScreen/types.d.ts.map +1 -1
- package/dist/components/VideoScreen/utils.d.ts +73 -0
- package/dist/components/VideoScreen/utils.d.ts.map +1 -0
- package/dist/components/VideoScreen/utils.js +74 -0
- package/dist/components/VideoScreen/utils.js.map +1 -0
- package/dist/components/commons/IconButton/index.d.ts +1 -1
- package/dist/components/commons/IconButton/index.d.ts.map +1 -1
- package/dist/components/commons/PlaceholderScreen/index.d.ts +1 -1
- package/dist/components/commons/PlaceholderScreen/index.d.ts.map +1 -1
- package/dist/components/commons/VideoMesh/index.d.ts +1 -1
- package/dist/components/commons/VideoMesh/index.d.ts.map +1 -1
- package/dist/components/commons/VolumeControl/index.d.ts +1 -1
- package/dist/components/commons/VolumeControl/index.d.ts.map +1 -1
- package/dist/contexts/AudioVolumeContext.d.ts +2 -2
- package/dist/contexts/AudioVolumeContext.d.ts.map +1 -1
- package/dist/contexts/ConfirmContext.d.ts +1 -1
- package/dist/contexts/ConfirmContext.d.ts.map +1 -1
- package/dist/contexts/FileInputContext.d.ts +1 -1
- package/dist/contexts/FileInputContext.d.ts.map +1 -1
- package/dist/contexts/GrabbableContext.d.ts +1 -1
- package/dist/contexts/GrabbableContext.d.ts.map +1 -1
- package/dist/contexts/InstanceContext.d.ts +1 -1
- package/dist/contexts/InstanceContext.d.ts.map +1 -1
- package/dist/contexts/InstanceEventContext.d.ts +1 -1
- package/dist/contexts/InstanceEventContext.d.ts.map +1 -1
- package/dist/contexts/InstanceStateContext.d.ts +1 -1
- package/dist/contexts/InstanceStateContext.d.ts.map +1 -1
- package/dist/contexts/ItemContext.d.ts +23 -3
- package/dist/contexts/ItemContext.d.ts.map +1 -1
- package/dist/contexts/ItemContext.js +7 -3
- package/dist/contexts/ItemContext.js.map +1 -1
- package/dist/contexts/PlacementStateContext.d.ts +1 -1
- package/dist/contexts/PlacementStateContext.d.ts.map +1 -1
- package/dist/contexts/ScreenShareContext.d.ts +1 -1
- package/dist/contexts/ScreenShareContext.d.ts.map +1 -1
- package/dist/contexts/ServerClockContext.d.ts +108 -0
- package/dist/contexts/ServerClockContext.d.ts.map +1 -0
- package/dist/contexts/ServerClockContext.js +48 -0
- package/dist/contexts/ServerClockContext.js.map +1 -0
- package/dist/contexts/SharedFileContext.d.ts +1 -1
- package/dist/contexts/SharedFileContext.d.ts.map +1 -1
- package/dist/contexts/SpawnPointContext.d.ts +1 -1
- package/dist/contexts/SpawnPointContext.d.ts.map +1 -1
- package/dist/contexts/TeleportContext.d.ts +1 -1
- package/dist/contexts/TeleportContext.d.ts.map +1 -1
- package/dist/contexts/TextInputContext.d.ts +1 -1
- package/dist/contexts/TextInputContext.d.ts.map +1 -1
- package/dist/contexts/UsersContext.d.ts +1 -1
- package/dist/contexts/UsersContext.d.ts.map +1 -1
- package/dist/contexts/WorldContext.d.ts +1 -1
- package/dist/contexts/WorldContext.d.ts.map +1 -1
- package/dist/contexts/WorldStorageContext.d.ts +1 -1
- package/dist/contexts/WorldStorageContext.d.ts.map +1 -1
- package/dist/contexts/XRiftContext.d.ts +7 -1
- package/dist/contexts/XRiftContext.d.ts.map +1 -1
- package/dist/contexts/XRiftContext.js +5 -1
- package/dist/contexts/XRiftContext.js.map +1 -1
- package/dist/hooks/useServerClock.d.ts +60 -0
- package/dist/hooks/useServerClock.d.ts.map +1 -0
- package/dist/hooks/useServerClock.js +58 -0
- package/dist/hooks/useServerClock.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +7 -5
- package/dist/components/BillboardY/__tests__/utils.test.d.ts +0 -2
- package/dist/components/BillboardY/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/BillboardY/__tests__/utils.test.js +0 -45
- package/dist/components/BillboardY/__tests__/utils.test.js.map +0 -1
- package/dist/components/DevEnvironment/__tests__/utils.test.d.ts +0 -2
- package/dist/components/DevEnvironment/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/DevEnvironment/__tests__/utils.test.js +0 -24
- package/dist/components/DevEnvironment/__tests__/utils.test.js.map +0 -1
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/store.test.d.ts +0 -2
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/store.test.d.ts.map +0 -1
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/store.test.js +0 -114
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/store.test.js.map +0 -1
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.d.ts +0 -2
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.js +0 -103
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.js.map +0 -1
- package/dist/components/EntryLogBoard/__tests__/utils.test.d.ts +0 -2
- package/dist/components/EntryLogBoard/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/EntryLogBoard/__tests__/utils.test.js +0 -231
- package/dist/components/EntryLogBoard/__tests__/utils.test.js.map +0 -1
- package/dist/components/Grabbable/__tests__/utils.test.d.ts +0 -2
- package/dist/components/Grabbable/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/Grabbable/__tests__/utils.test.js +0 -59
- package/dist/components/Grabbable/__tests__/utils.test.js.map +0 -1
- package/dist/components/LiveVideoPlayer/components/ControlPanel/LiveIndicator.d.ts +0 -8
- package/dist/components/LiveVideoPlayer/components/ControlPanel/LiveIndicator.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/components/ControlPanel/LiveIndicator.js +0 -11
- package/dist/components/LiveVideoPlayer/components/ControlPanel/LiveIndicator.js.map +0 -1
- package/dist/components/LiveVideoPlayer/components/index.d.ts +0 -3
- package/dist/components/LiveVideoPlayer/components/index.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/components/index.js +0 -3
- package/dist/components/LiveVideoPlayer/components/index.js.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/__tests__/utils.test.d.ts +0 -2
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/__tests__/utils.test.js +0 -196
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/__tests__/utils.test.js.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/HlsJsPlayer.test.d.ts +0 -2
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/HlsJsPlayer.test.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/HlsJsPlayer.test.js +0 -146
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/HlsJsPlayer.test.js.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/NativeHlsPlayer.test.d.ts +0 -2
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/NativeHlsPlayer.test.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/NativeHlsPlayer.test.js +0 -94
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/NativeHlsPlayer.test.js.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/RecoveryTracker.test.d.ts +0 -2
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/RecoveryTracker.test.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/RecoveryTracker.test.js +0 -74
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/RecoveryTracker.test.js.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useLiveVideoPlayer/index.d.ts +0 -25
- package/dist/components/LiveVideoPlayer/hooks/useLiveVideoPlayer/index.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useLiveVideoPlayer/index.js +0 -97
- package/dist/components/LiveVideoPlayer/hooks/useLiveVideoPlayer/index.js.map +0 -1
- package/dist/components/Mirror/__tests__/utils.test.d.ts +0 -2
- package/dist/components/Mirror/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/Mirror/__tests__/utils.test.js +0 -42
- package/dist/components/Mirror/__tests__/utils.test.js.map +0 -1
- package/dist/components/MsdfText/index.d.ts +0 -24
- package/dist/components/MsdfText/index.d.ts.map +0 -1
- package/dist/components/MsdfText/index.js +0 -24
- package/dist/components/MsdfText/index.js.map +0 -1
- package/dist/components/Portal/__tests__/utils.test.d.ts +0 -2
- package/dist/components/Portal/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/Portal/__tests__/utils.test.js +0 -56
- package/dist/components/Portal/__tests__/utils.test.js.map +0 -1
- package/dist/components/ScreenShareDisplay/__tests__/utils.test.d.ts +0 -2
- package/dist/components/ScreenShareDisplay/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/ScreenShareDisplay/__tests__/utils.test.js +0 -47
- package/dist/components/ScreenShareDisplay/__tests__/utils.test.js.map +0 -1
- package/dist/components/TroikaText/index.d.ts +0 -4
- package/dist/components/TroikaText/index.d.ts.map +0 -1
- package/dist/components/TroikaText/index.js +0 -50
- package/dist/components/TroikaText/index.js.map +0 -1
- package/dist/components/TroikaText/types.d.ts +0 -19
- package/dist/components/TroikaText/types.d.ts.map +0 -1
- package/dist/components/TroikaText/types.js +0 -2
- package/dist/components/TroikaText/types.js.map +0 -1
- package/dist/components/VideoPlayer/ControlPanel.d.ts +0 -3
- package/dist/components/VideoPlayer/ControlPanel.d.ts.map +0 -1
- package/dist/components/VideoPlayer/ControlPanel.js +0 -34
- package/dist/components/VideoPlayer/ControlPanel.js.map +0 -1
- package/dist/components/VideoPlayer/ProgressBar.d.ts +0 -3
- package/dist/components/VideoPlayer/ProgressBar.d.ts.map +0 -1
- package/dist/components/VideoPlayer/ProgressBar.js +0 -21
- package/dist/components/VideoPlayer/ProgressBar.js.map +0 -1
- package/dist/components/VideoPlayer/__tests__/utils.test.d.ts +0 -2
- package/dist/components/VideoPlayer/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/VideoPlayer/__tests__/utils.test.js +0 -23
- package/dist/components/VideoPlayer/__tests__/utils.test.js.map +0 -1
- package/dist/components/VideoPlayer/components/ProgressBar.d.ts +0 -12
- package/dist/components/VideoPlayer/components/ProgressBar.d.ts.map +0 -1
- package/dist/components/VideoPlayer/components/ProgressBar.js +0 -21
- package/dist/components/VideoPlayer/components/ProgressBar.js.map +0 -1
- package/dist/components/VideoPlayer/components/index.d.ts +0 -3
- package/dist/components/VideoPlayer/components/index.d.ts.map +0 -1
- package/dist/components/VideoPlayer/components/index.js +0 -3
- package/dist/components/VideoPlayer/components/index.js.map +0 -1
- package/dist/components/VideoPlayer/types.d.ts +0 -44
- package/dist/components/VideoPlayer/types.d.ts.map +0 -1
- package/dist/components/VideoPlayer/types.js +0 -2
- package/dist/components/VideoPlayer/types.js.map +0 -1
- package/dist/components/VideoPlayer/utils.test.d.ts +0 -2
- package/dist/components/VideoPlayer/utils.test.d.ts.map +0 -1
- package/dist/components/VideoPlayer/utils.test.js +0 -23
- package/dist/components/VideoPlayer/utils.test.js.map +0 -1
- package/dist/components/commons/utils.test.d.ts +0 -2
- package/dist/components/commons/utils.test.d.ts.map +0 -1
- package/dist/components/commons/utils.test.js +0 -79
- package/dist/components/commons/utils.test.js.map +0 -1
- package/dist/contexts/FontContext.d.ts +0 -17
- package/dist/contexts/FontContext.d.ts.map +0 -1
- package/dist/contexts/FontContext.js +0 -25
- package/dist/contexts/FontContext.js.map +0 -1
- package/dist/contexts/InstanceInfoContext.d.ts +0 -39
- package/dist/contexts/InstanceInfoContext.d.ts.map +0 -1
- package/dist/contexts/InstanceInfoContext.js +0 -42
- package/dist/contexts/InstanceInfoContext.js.map +0 -1
- package/dist/contexts/PortalContext.d.ts +0 -39
- package/dist/contexts/PortalContext.d.ts.map +0 -1
- package/dist/contexts/PortalContext.js +0 -42
- package/dist/contexts/PortalContext.js.map +0 -1
- package/dist/contexts/WorldEventContext.d.ts +0 -32
- package/dist/contexts/WorldEventContext.d.ts.map +0 -1
- package/dist/contexts/WorldEventContext.js +0 -54
- package/dist/contexts/WorldEventContext.js.map +0 -1
- package/dist/contexts/__tests__/WorldStorageContext.test.d.ts +0 -2
- package/dist/contexts/__tests__/WorldStorageContext.test.d.ts.map +0 -1
- package/dist/contexts/__tests__/WorldStorageContext.test.js +0 -120
- package/dist/contexts/__tests__/WorldStorageContext.test.js.map +0 -1
- package/dist/fonts/FontContext.d.ts +0 -9
- package/dist/fonts/FontContext.d.ts.map +0 -1
- package/dist/fonts/FontContext.js +0 -5
- package/dist/fonts/FontContext.js.map +0 -1
- package/dist/fonts/FontProvider.d.ts +0 -31
- package/dist/fonts/FontProvider.d.ts.map +0 -1
- package/dist/fonts/FontProvider.js +0 -40
- package/dist/fonts/FontProvider.js.map +0 -1
- package/dist/fonts/FontReadyContainer.d.ts +0 -35
- package/dist/fonts/FontReadyContainer.d.ts.map +0 -1
- package/dist/fonts/FontReadyContainer.js +0 -40
- package/dist/fonts/FontReadyContainer.js.map +0 -1
- package/dist/fonts/constants.d.ts +0 -5
- package/dist/fonts/constants.d.ts.map +0 -1
- package/dist/fonts/constants.js +0 -5
- package/dist/fonts/constants.js.map +0 -1
- package/dist/fonts/loadTTF.d.ts +0 -18
- package/dist/fonts/loadTTF.d.ts.map +0 -1
- package/dist/fonts/loadTTF.js +0 -36
- package/dist/fonts/loadTTF.js.map +0 -1
- package/dist/fonts/useTTF.d.ts +0 -7
- package/dist/fonts/useTTF.d.ts.map +0 -1
- package/dist/fonts/useTTF.js +0 -9
- package/dist/fonts/useTTF.js.map +0 -1
- package/dist/hooks/useJapaneseFont.d.ts +0 -7
- package/dist/hooks/useJapaneseFont.d.ts.map +0 -1
- package/dist/hooks/useJapaneseFont.js +0 -25
- package/dist/hooks/useJapaneseFont.js.map +0 -1
- package/dist/hooks/useMsdfFont.d.ts +0 -11
- package/dist/hooks/useMsdfFont.d.ts.map +0 -1
- package/dist/hooks/useMsdfFont.js +0 -19
- package/dist/hooks/useMsdfFont.js.map +0 -1
- package/dist/hooks/usePortalNavigation.d.ts +0 -10
- package/dist/hooks/usePortalNavigation.d.ts.map +0 -1
- package/dist/hooks/usePortalNavigation.js +0 -46
- package/dist/hooks/usePortalNavigation.js.map +0 -1
- package/dist/hooks/useWorldEvent.d.ts +0 -25
- package/dist/hooks/useWorldEvent.d.ts.map +0 -1
- package/dist/hooks/useWorldEvent.js +0 -45
- package/dist/hooks/useWorldEvent.js.map +0 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
import { useServerClock } from '../../hooks/useServerClock';
|
|
3
|
+
import { computeTargetTime, decideVideoSyncAction, toBufferedRanges } from './utils';
|
|
4
|
+
/** 補正を検討する間隔(ms)。毎フレームやる必要はない */
|
|
5
|
+
const SYNC_CHECK_INTERVAL = 500;
|
|
6
|
+
/**
|
|
7
|
+
* 共有時計のアンカーに合わせて再生位置を追従させる(issue xrift-frontend#1464 Phase 4)
|
|
8
|
+
*
|
|
9
|
+
* アンカー = 「サーバ時刻 `anchorServerTime` のとき再生位置は `anchorMediaTime` だった」。
|
|
10
|
+
* 各クライアントが自分で目標位置を計算するので、**後から入った人も通信ゼロで追いつける**。
|
|
11
|
+
*
|
|
12
|
+
* `useFrame` ではなく `setInterval` で回している。補正は 0.5 秒に一度で十分なうえ、
|
|
13
|
+
* `useFrame` はタブが非表示になると完全に停止してしまうため。
|
|
14
|
+
*/
|
|
15
|
+
export const useVideoTimeSync = (params) => {
|
|
16
|
+
const { video, anchorMediaTime, anchorServerTime, isPlaying, loop, enabled } = params;
|
|
17
|
+
const clock = useServerClock({ require: 'media' });
|
|
18
|
+
// 入室直後の一度だけ、バッファを待たずにシークして追いつく
|
|
19
|
+
const positionedRef = useRef(false);
|
|
20
|
+
// アンカーが変わったら位置合わせをやり直す(別の動画・シーク操作)
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
positionedRef.current = false;
|
|
23
|
+
}, [anchorServerTime]);
|
|
24
|
+
// 時計が飛んだら目標が不連続に変わる。次の判定で追いつくため位置合わせからやり直す
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
positionedRef.current = false;
|
|
27
|
+
}, [clock.timeJumpCount]);
|
|
28
|
+
// クロージャの陳腐化を避けつつ、interval を張り直さないための ref
|
|
29
|
+
const stateRef = useRef({ anchorMediaTime, anchorServerTime, isPlaying, loop, clock });
|
|
30
|
+
stateRef.current = { anchorMediaTime, anchorServerTime, isPlaying, loop, clock };
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (!video || !enabled)
|
|
33
|
+
return;
|
|
34
|
+
const syncOnce = () => {
|
|
35
|
+
const state = stateRef.current;
|
|
36
|
+
const targetTime = computeTargetTime({
|
|
37
|
+
anchorMediaTime: state.anchorMediaTime,
|
|
38
|
+
anchorServerTime: state.anchorServerTime,
|
|
39
|
+
serverNow: state.clock.now(),
|
|
40
|
+
isPlaying: state.isPlaying,
|
|
41
|
+
duration: video.duration,
|
|
42
|
+
loop: state.loop,
|
|
43
|
+
});
|
|
44
|
+
const action = decideVideoSyncAction({
|
|
45
|
+
targetTime,
|
|
46
|
+
currentTime: video.currentTime,
|
|
47
|
+
buffered: toBufferedRanges(video.buffered),
|
|
48
|
+
trustworthy: state.clock.trustworthy,
|
|
49
|
+
positioned: positionedRef.current,
|
|
50
|
+
});
|
|
51
|
+
// 速度は毎回明示的に戻す(戻し忘れると反対側へ突き抜けて振動し続ける)
|
|
52
|
+
if (video.playbackRate !== action.playbackRate) {
|
|
53
|
+
video.playbackRate = action.playbackRate;
|
|
54
|
+
}
|
|
55
|
+
if (action.type !== 'seek')
|
|
56
|
+
return;
|
|
57
|
+
video.currentTime = action.seekTo;
|
|
58
|
+
positionedRef.current = true;
|
|
59
|
+
};
|
|
60
|
+
syncOnce();
|
|
61
|
+
const interval = setInterval(syncOnce, SYNC_CHECK_INTERVAL);
|
|
62
|
+
return () => {
|
|
63
|
+
clearInterval(interval);
|
|
64
|
+
// 補正をやめるときは速度を戻す
|
|
65
|
+
video.playbackRate = 1;
|
|
66
|
+
};
|
|
67
|
+
}, [video, enabled]);
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/components/VideoScreen/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,5 @@ export type { VideoScreenProps, VideoState } from './types';
|
|
|
4
4
|
* VideoScreenコンポーネント
|
|
5
5
|
* Suspenseでラップして使用する
|
|
6
6
|
*/
|
|
7
|
-
export declare function VideoScreen(props: VideoScreenProps): import("react
|
|
7
|
+
export declare function VideoScreen(props: VideoScreenProps): import("react").JSX.Element;
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/VideoScreen/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/VideoScreen/index.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAc,MAAM,SAAS,CAAA;AAEtD,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AA2H3D;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA8BlD"}
|
|
@@ -3,25 +3,29 @@ import { Suspense, useEffect, useRef, useState } from 'react';
|
|
|
3
3
|
import { FrontSide } from 'three';
|
|
4
4
|
import { useVideoTexture } from '@react-three/drei';
|
|
5
5
|
import { useInstanceState } from '../../hooks/useInstanceState';
|
|
6
|
+
import { useServerClock } from '../../hooks/useServerClock';
|
|
6
7
|
import { useWebAudioVolume } from '../../hooks/useWebAudioVolume';
|
|
8
|
+
import { useVideoTimeSync } from './hooks';
|
|
7
9
|
/**
|
|
8
10
|
* 動画を表示する内部コンポーネント
|
|
9
11
|
* useVideoTextureを使用するためSuspense内で使用する必要がある
|
|
10
12
|
*/
|
|
11
13
|
function VideoScreenInner({ id, position = [0, 2, -5], rotation = [0, 0, 0], scale = [16 / 9 * 3, 3], url = '', playing = true, currentTime = 0, sync = 'global', muted = false, volume = 1, }) {
|
|
14
|
+
// 共有時計。アンカーの打刻に使う(端末の Date.now() は互いに 0.1〜数秒ずれている)
|
|
15
|
+
const clock = useServerClock({ require: 'media' });
|
|
12
16
|
// グローバル同期用の状態
|
|
13
17
|
const [globalState, setGlobalState] = useInstanceState(`video-${id}`, {
|
|
14
18
|
url: url,
|
|
15
19
|
isPlaying: playing,
|
|
16
20
|
currentTime: currentTime,
|
|
17
|
-
serverTime:
|
|
21
|
+
serverTime: clock.now(),
|
|
18
22
|
});
|
|
19
23
|
// ローカル専用の状態
|
|
20
24
|
const [localState, setLocalState] = useState({
|
|
21
25
|
url: url,
|
|
22
26
|
isPlaying: playing,
|
|
23
27
|
currentTime: currentTime,
|
|
24
|
-
serverTime:
|
|
28
|
+
serverTime: clock.now(),
|
|
25
29
|
});
|
|
26
30
|
// sync modeに応じて使用する状態を切り替え
|
|
27
31
|
const videoState = sync === 'global' ? globalState : localState;
|
|
@@ -32,14 +36,16 @@ function VideoScreenInner({ id, position = [0, 2, -5], rotation = [0, 0, 0], sca
|
|
|
32
36
|
if (videoState.url !== url ||
|
|
33
37
|
videoState.isPlaying !== playing ||
|
|
34
38
|
videoState.currentTime !== currentTime) {
|
|
39
|
+
// props が変わったらアンカーを打ち直す。
|
|
40
|
+
// 「いまサーバ時刻 X で、再生位置は currentTime である」と宣言する
|
|
35
41
|
setVideoState({
|
|
36
42
|
url: url,
|
|
37
43
|
isPlaying: playing,
|
|
38
44
|
currentTime: currentTime,
|
|
39
|
-
serverTime:
|
|
45
|
+
serverTime: clock.now(),
|
|
40
46
|
});
|
|
41
47
|
}
|
|
42
|
-
}, [url, playing, currentTime, videoState, setVideoState]);
|
|
48
|
+
}, [url, playing, currentTime, videoState, setVideoState, clock]);
|
|
43
49
|
// useVideoTextureで動画テクスチャを取得
|
|
44
50
|
const texture = useVideoTexture(url || '', {
|
|
45
51
|
muted,
|
|
@@ -63,19 +69,18 @@ function VideoScreenInner({ id, position = [0, 2, -5], rotation = [0, 0, 0], sca
|
|
|
63
69
|
}, [playing, texture]);
|
|
64
70
|
// Web Audio API を使用した音量制御(iOS対応)
|
|
65
71
|
useWebAudioVolume(texture.image, volume);
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}, [currentTime, texture]);
|
|
72
|
+
// 再生位置の追従(アンカー方式)
|
|
73
|
+
// 状態のアンカーと共有時計から目標位置を計算し、穏やかに寄せる。
|
|
74
|
+
// 後から入った人はここで一度シークして追いつく
|
|
75
|
+
useVideoTimeSync({
|
|
76
|
+
video: texture.image,
|
|
77
|
+
anchorMediaTime: videoState.currentTime,
|
|
78
|
+
anchorServerTime: videoState.serverTime,
|
|
79
|
+
isPlaying: videoState.isPlaying,
|
|
80
|
+
loop: true,
|
|
81
|
+
// ローカル再生は合わせる相手がいないので追従しない
|
|
82
|
+
enabled: sync === 'global',
|
|
83
|
+
});
|
|
79
84
|
// アンマウント時に動画を停止
|
|
80
85
|
useEffect(() => {
|
|
81
86
|
const video = texture.image;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/VideoScreen/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/VideoScreen/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAK1C;;;GAGG;AACH,SAAS,gBAAgB,CAAC,EACxB,EAAE,EACF,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EACrB,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EACvB,GAAG,GAAG,EAAE,EACR,OAAO,GAAG,IAAI,EACd,WAAW,GAAG,CAAC,EACf,IAAI,GAAG,QAAQ,EACf,KAAK,GAAG,KAAK,EACb,MAAM,GAAG,CAAC,GACO;IACjB,mDAAmD;IACnD,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;IAElD,cAAc;IACd,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,gBAAgB,CACpD,SAAS,EAAE,EAAE,EACb;QACE,GAAG,EAAE,GAAG;QACR,SAAS,EAAE,OAAO;QAClB,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE;KACxB,CACF,CAAA;IAED,YAAY;IACZ,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAa;QACvD,GAAG,EAAE,GAAG;QACR,SAAS,EAAE,OAAO;QAClB,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE;KACxB,CAAC,CAAA;IAEF,2BAA2B;IAC3B,MAAM,UAAU,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAA;IAC/D,MAAM,aAAa,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAA;IAExE,qBAAqB;IACrB,mDAAmD;IACnD,SAAS,CAAC,GAAG,EAAE;QACb,IACE,UAAU,CAAC,GAAG,KAAK,GAAG;YACtB,UAAU,CAAC,SAAS,KAAK,OAAO;YAChC,UAAU,CAAC,WAAW,KAAK,WAAW,EACtC,CAAC;YACD,yBAAyB;YACzB,2CAA2C;YAC3C,aAAa,CAAC;gBACZ,GAAG,EAAE,GAAG;gBACR,SAAS,EAAE,OAAO;gBAClB,WAAW,EAAE,WAAW;gBACxB,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE;aACxB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAA;IAEjE,6BAA6B;IAC7B,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,IAAI,EAAE,EAAE;QACzC,KAAK;QACL,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,OAAO;KACf,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAmB,OAAO,CAAC,KAAK,CAAC,CAAA;IAExD,UAAU;IACV,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,OAAO,CAAC,KAAyB,CAAA;QAC/C,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACvB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAA;YACzC,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,KAAK,EAAE,CAAA;QACf,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IAEtB,iCAAiC;IACjC,iBAAiB,CAAC,OAAO,CAAC,KAAyB,EAAE,MAAM,CAAC,CAAA;IAE5D,kBAAkB;IAClB,kCAAkC;IAClC,yBAAyB;IACzB,gBAAgB,CAAC;QACf,KAAK,EAAE,OAAO,CAAC,KAAyB;QACxC,eAAe,EAAE,UAAU,CAAC,WAAW;QACvC,gBAAgB,EAAE,UAAU,CAAC,UAAU;QACvC,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,IAAI,EAAE,IAAI;QACV,2BAA2B;QAC3B,OAAO,EAAE,IAAI,KAAK,QAAQ;KAC3B,CAAC,CAAA;IAEF,gBAAgB;IAChB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,OAAO,CAAC,KAAyB,CAAA;QAE/C,OAAO,GAAG,EAAE;YACV,KAAK,CAAC,KAAK,EAAE,CAAA;YACb,KAAK,CAAC,GAAG,GAAG,EAAE,CAAA;YACd,KAAK,CAAC,IAAI,EAAE,CAAA;QACd,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,OAAO,CACL,gBAAO,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,YAC3C,2BACE,wBAAe,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAI,EAC7C,4BAAmB,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAI,IAClE,GACD,CACT,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;IAChD,MAAM,UAAU,GAAG,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IAE3C,sBAAsB;IACtB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CACL,gBAAO,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,YAC3C,2BACE,wBAAe,IAAI,EAAE,UAAU,GAAI,EACnC,4BAAmB,KAAK,EAAC,SAAS,EAAC,IAAI,EAAE,SAAS,GAAI,IACjD,GACD,CACT,CAAA;IACH,CAAC;IAED,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EACN,gBAAO,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,YAC3C,2BACE,wBAAe,IAAI,EAAE,UAAU,GAAI,EACnC,4BAAmB,KAAK,EAAC,SAAS,EAAC,IAAI,EAAE,SAAS,GAAI,IACjD,GACD,YAGV,KAAC,gBAAgB,OAAK,KAAK,GAAI,GACtB,CACZ,CAAA;AACH,CAAC"}
|
|
@@ -21,17 +21,27 @@ export interface VideoScreenProps {
|
|
|
21
21
|
volume?: number;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
* VideoScreen
|
|
25
|
-
*
|
|
24
|
+
* VideoScreenの状態(useInstanceStateで同期される)
|
|
25
|
+
*
|
|
26
|
+
* `currentTime` と `serverTime` は**アンカー**として使う。
|
|
27
|
+
* 「サーバ時刻 `serverTime` のとき再生位置は `currentTime` だった」という意味で、
|
|
28
|
+
* 各クライアントはここから自分で現在の目標位置を計算する。
|
|
29
|
+
* 「いまの再生位置」を配ると受け取った瞬間には既に古いが、アンカーなら
|
|
30
|
+
* **後から入った人も通信ゼロで正しい位置に追いつける**。
|
|
26
31
|
*/
|
|
27
32
|
export interface VideoState {
|
|
28
33
|
/** 動画のURL */
|
|
29
34
|
url: string;
|
|
30
35
|
/** 再生中かどうか */
|
|
31
36
|
isPlaying: boolean;
|
|
32
|
-
/**
|
|
37
|
+
/** アンカーの再生位置(秒) */
|
|
33
38
|
currentTime: number;
|
|
34
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* アンカーのサーバ時刻(ms)
|
|
41
|
+
*
|
|
42
|
+
* 共有時計(`useServerClock`)の値。端末の `Date.now()` は互いに 0.1〜数秒
|
|
43
|
+
* ずれているため、ここに入れてはいけない(実測で 0.66 秒ずれた端末がある)
|
|
44
|
+
*/
|
|
35
45
|
serverTime: number;
|
|
36
46
|
}
|
|
37
47
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/VideoScreen/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAA;IACV,eAAe;IACf,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,eAAe;IACf,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,wBAAwB;IACxB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxB,aAAa;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uEAAuE;IACvE,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IACzB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/VideoScreen/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAA;IACV,eAAe;IACf,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,eAAe;IACf,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,wBAAwB;IACxB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxB,aAAa;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uEAAuE;IACvE,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IACzB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,aAAa;IACb,GAAG,EAAE,MAAM,CAAA;IACX,cAAc;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* アンカー(「サーバ時刻 T のとき再生位置は M だった」)から、
|
|
3
|
+
* いまの再生位置の目標値を求める
|
|
4
|
+
*
|
|
5
|
+
* 状態に「いまの再生位置」を持たせると、受け取った瞬間には既に古い。
|
|
6
|
+
* アンカーで持てば**後から入った人も自分で正しい位置を計算できる**(通信ゼロ)。
|
|
7
|
+
*
|
|
8
|
+
* @param duration 動画の長さ(秒)。ループ再生の折り返しに使う。
|
|
9
|
+
* メタデータ未読み込みで NaN / 0 のときは折り返さない
|
|
10
|
+
*/
|
|
11
|
+
export declare function computeTargetTime(params: {
|
|
12
|
+
/** アンカーの再生位置(秒) */
|
|
13
|
+
anchorMediaTime: number;
|
|
14
|
+
/** アンカーのサーバ時刻(ms) */
|
|
15
|
+
anchorServerTime: number;
|
|
16
|
+
/** いまのサーバ時刻(ms) */
|
|
17
|
+
serverNow: number;
|
|
18
|
+
isPlaying: boolean;
|
|
19
|
+
duration: number;
|
|
20
|
+
loop: boolean;
|
|
21
|
+
}): number;
|
|
22
|
+
/** 再生位置がバッファ済みの範囲に入っているか(端の余裕を見る) */
|
|
23
|
+
export declare function isTimeBuffered(buffered: Array<{
|
|
24
|
+
start: number;
|
|
25
|
+
end: number;
|
|
26
|
+
}>, time: number): boolean;
|
|
27
|
+
/** 同期のためにこのフレームで何をするか */
|
|
28
|
+
export type VideoSyncAction =
|
|
29
|
+
/** 何もしない(合っている / 補正のコストが誤差より大きい) */
|
|
30
|
+
{
|
|
31
|
+
type: 'none';
|
|
32
|
+
playbackRate: 1;
|
|
33
|
+
}
|
|
34
|
+
/** 再生速度で穏やかに寄せる */
|
|
35
|
+
| {
|
|
36
|
+
type: 'rate';
|
|
37
|
+
playbackRate: number;
|
|
38
|
+
}
|
|
39
|
+
/** シークで一気に合わせる */
|
|
40
|
+
| {
|
|
41
|
+
type: 'seek';
|
|
42
|
+
seekTo: number;
|
|
43
|
+
playbackRate: 1;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* 目標位置と現在位置から、取るべき補正を決める
|
|
47
|
+
*
|
|
48
|
+
* **原則: 補正のコストが誤差より大きいなら補正しない。**
|
|
49
|
+
* ズレを直すためにシークしてバッファが切れるくらいなら、ズレたまま再生を続けるほうが
|
|
50
|
+
* 体験は良い。これを守らないと「ズレる → シーク → バッファ切れ → さらにズレる」の
|
|
51
|
+
* 無限ループになる(VR180 プレイヤーで実際に起きた)。
|
|
52
|
+
*
|
|
53
|
+
* @param positioned 一度でも位置合わせが済んでいるか。
|
|
54
|
+
* 入室直後(false)はバッファが無いのが当たり前なので、
|
|
55
|
+
* バッファ判定を待たずにシークする(これが late-join の追いつき)
|
|
56
|
+
*/
|
|
57
|
+
export declare function decideVideoSyncAction(params: {
|
|
58
|
+
targetTime: number;
|
|
59
|
+
currentTime: number;
|
|
60
|
+
buffered: Array<{
|
|
61
|
+
start: number;
|
|
62
|
+
end: number;
|
|
63
|
+
}>;
|
|
64
|
+
/** 共有時計が用途に足る精度か。false なら合わせにいかない */
|
|
65
|
+
trustworthy: boolean;
|
|
66
|
+
positioned: boolean;
|
|
67
|
+
}): VideoSyncAction;
|
|
68
|
+
/** `TimeRanges` を素の配列にする(テストしやすくするため) */
|
|
69
|
+
export declare function toBufferedRanges(ranges: TimeRanges | null): Array<{
|
|
70
|
+
start: number;
|
|
71
|
+
end: number;
|
|
72
|
+
}>;
|
|
73
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/VideoScreen/utils.ts"],"names":[],"mappings":"AAOA;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,mBAAmB;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;CACd,GAAG,MAAM,CAaT;AAED,qCAAqC;AACrC,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,IAAI,EAAE,MAAM,GACX,OAAO,CAIT;AAED,yBAAyB;AACzB,MAAM,MAAM,eAAe;AACzB,oCAAoC;AAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,CAAC,CAAA;CAAE;AACnC,mBAAmB;GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE;AACxC,kBAAkB;GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,CAAC,CAAA;CAAE,CAAA;AAErD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/C,qCAAqC;IACrC,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;CACpB,GAAG,eAAe,CA2BlB;AAED,yCAAyC;AACzC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAOjG"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { SYNC_BUFFER_MARGIN, SYNC_DEAD_BAND, SYNC_RATE_ADJUSTMENT, SYNC_RATE_LIMIT, } from './constants';
|
|
2
|
+
/**
|
|
3
|
+
* アンカー(「サーバ時刻 T のとき再生位置は M だった」)から、
|
|
4
|
+
* いまの再生位置の目標値を求める
|
|
5
|
+
*
|
|
6
|
+
* 状態に「いまの再生位置」を持たせると、受け取った瞬間には既に古い。
|
|
7
|
+
* アンカーで持てば**後から入った人も自分で正しい位置を計算できる**(通信ゼロ)。
|
|
8
|
+
*
|
|
9
|
+
* @param duration 動画の長さ(秒)。ループ再生の折り返しに使う。
|
|
10
|
+
* メタデータ未読み込みで NaN / 0 のときは折り返さない
|
|
11
|
+
*/
|
|
12
|
+
export function computeTargetTime(params) {
|
|
13
|
+
const { anchorMediaTime, anchorServerTime, serverNow, isPlaying, duration, loop } = params;
|
|
14
|
+
// 停止中は時間が進まないので、アンカーの位置がそのまま目標
|
|
15
|
+
if (!isPlaying)
|
|
16
|
+
return Math.max(0, anchorMediaTime);
|
|
17
|
+
const elapsed = (serverNow - anchorServerTime) / 1000;
|
|
18
|
+
const target = anchorMediaTime + elapsed;
|
|
19
|
+
if (!loop || !Number.isFinite(duration) || duration <= 0)
|
|
20
|
+
return Math.max(0, target);
|
|
21
|
+
// ループ再生では長さで折り返す。負にもなり得る(アンカーが未来の場合)ので剰余を正規化する
|
|
22
|
+
return ((target % duration) + duration) % duration;
|
|
23
|
+
}
|
|
24
|
+
/** 再生位置がバッファ済みの範囲に入っているか(端の余裕を見る) */
|
|
25
|
+
export function isTimeBuffered(buffered, time) {
|
|
26
|
+
return buffered.some((range) => time >= range.start && time <= range.end - SYNC_BUFFER_MARGIN);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 目標位置と現在位置から、取るべき補正を決める
|
|
30
|
+
*
|
|
31
|
+
* **原則: 補正のコストが誤差より大きいなら補正しない。**
|
|
32
|
+
* ズレを直すためにシークしてバッファが切れるくらいなら、ズレたまま再生を続けるほうが
|
|
33
|
+
* 体験は良い。これを守らないと「ズレる → シーク → バッファ切れ → さらにズレる」の
|
|
34
|
+
* 無限ループになる(VR180 プレイヤーで実際に起きた)。
|
|
35
|
+
*
|
|
36
|
+
* @param positioned 一度でも位置合わせが済んでいるか。
|
|
37
|
+
* 入室直後(false)はバッファが無いのが当たり前なので、
|
|
38
|
+
* バッファ判定を待たずにシークする(これが late-join の追いつき)
|
|
39
|
+
*/
|
|
40
|
+
export function decideVideoSyncAction(params) {
|
|
41
|
+
const { targetTime, currentTime, buffered, trustworthy, positioned } = params;
|
|
42
|
+
// 時計が信用できないなら同期を諦める。精度が出ていないのに合わせにいくと体験を壊す
|
|
43
|
+
if (!trustworthy)
|
|
44
|
+
return { type: 'none', playbackRate: 1 };
|
|
45
|
+
// 入室直後は一度だけ無条件にシークして追いつく(バッファはこれから作られる)
|
|
46
|
+
if (!positioned)
|
|
47
|
+
return { type: 'seek', seekTo: targetTime, playbackRate: 1 };
|
|
48
|
+
const diff = targetTime - currentTime;
|
|
49
|
+
const distance = Math.abs(diff);
|
|
50
|
+
// 合っている。速度を戻すのを忘れると反対側へ突き抜けて振動し続ける
|
|
51
|
+
if (distance < SYNC_DEAD_BAND)
|
|
52
|
+
return { type: 'none', playbackRate: 1 };
|
|
53
|
+
// 速度で吸収できる範囲は穏やかに寄せる(シークより体験が良い)
|
|
54
|
+
if (distance < SYNC_RATE_LIMIT) {
|
|
55
|
+
return { type: 'rate', playbackRate: 1 + Math.sign(diff) * SYNC_RATE_ADJUSTMENT };
|
|
56
|
+
}
|
|
57
|
+
// 目標がバッファ内にあるときだけシークする。
|
|
58
|
+
// バッファ外へのシークは再生が止まるので、ズレたまま再生を続けるほうがまし
|
|
59
|
+
if (isTimeBuffered(buffered, targetTime)) {
|
|
60
|
+
return { type: 'seek', seekTo: targetTime, playbackRate: 1 };
|
|
61
|
+
}
|
|
62
|
+
return { type: 'none', playbackRate: 1 };
|
|
63
|
+
}
|
|
64
|
+
/** `TimeRanges` を素の配列にする(テストしやすくするため) */
|
|
65
|
+
export function toBufferedRanges(ranges) {
|
|
66
|
+
if (!ranges)
|
|
67
|
+
return [];
|
|
68
|
+
const result = [];
|
|
69
|
+
for (let index = 0; index < ranges.length; index++) {
|
|
70
|
+
result.push({ start: ranges.start(index), end: ranges.end(index) });
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/VideoScreen/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,5 +19,5 @@ export interface IconButtonProps {
|
|
|
19
19
|
/**
|
|
20
20
|
* 円形のアイコンボタン
|
|
21
21
|
*/
|
|
22
|
-
export declare const IconButton: import("react").MemoExoticComponent<({ id, position, size, icon, interactionText, onInteract, backgroundColor, iconColor, }: IconButtonProps) => import("react
|
|
22
|
+
export declare const IconButton: import("react").MemoExoticComponent<({ id, position, size, icon, interactionText, onInteract, backgroundColor, iconColor, }: IconButtonProps) => import("react").JSX.Element>;
|
|
23
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/commons/IconButton/index.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa;IACb,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,cAAc;IACd,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB;IACnB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,0BAA0B;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,+HAUlB,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/commons/IconButton/index.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa;IACb,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,cAAc;IACd,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB;IACnB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,0BAA0B;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,+HAUlB,eAAe,iCAqBnB,CAAC"}
|
|
@@ -4,6 +4,6 @@ interface PlaceholderScreenProps {
|
|
|
4
4
|
color: string;
|
|
5
5
|
}
|
|
6
6
|
/** プレースホルダー画面(読み込み中/エラー時/URL未設定時) */
|
|
7
|
-
export declare const PlaceholderScreen: import("react").MemoExoticComponent<({ width, screenHeight, color }: PlaceholderScreenProps) => import("react
|
|
7
|
+
export declare const PlaceholderScreen: import("react").MemoExoticComponent<({ width, screenHeight, color }: PlaceholderScreenProps) => import("react").JSX.Element>;
|
|
8
8
|
export {};
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/commons/PlaceholderScreen/index.tsx"],"names":[],"mappings":"AAGA,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,qCAAqC;AACrC,eAAO,MAAM,iBAAiB,uEACK,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/commons/PlaceholderScreen/index.tsx"],"names":[],"mappings":"AAGA,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,qCAAqC;AACrC,eAAO,MAAM,iBAAiB,uEACK,sBAAsB,iCAMxD,CAAA"}
|
|
@@ -10,5 +10,5 @@ export interface VideoMeshProps {
|
|
|
10
10
|
/**
|
|
11
11
|
* 動画テクスチャをレターボックス/ピラーボックス対応で表示するメッシュ
|
|
12
12
|
*/
|
|
13
|
-
export declare const VideoMesh: import("react").MemoExoticComponent<({ texture, width, height }: VideoMeshProps) => import("react
|
|
13
|
+
export declare const VideoMesh: import("react").MemoExoticComponent<({ texture, width, height }: VideoMeshProps) => import("react").JSX.Element>;
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/commons/VideoMesh/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAsC/B,MAAM,WAAW,cAAc;IAC7B,cAAc;IACd,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC;IAC5B,cAAc;IACd,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,mEAAqC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/commons/VideoMesh/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAsC/B,MAAM,WAAW,cAAc;IAC7B,cAAc;IACd,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC;IAC5B,cAAc;IACd,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,mEAAqC,cAAc,iCAgEvE,CAAC"}
|
|
@@ -5,5 +5,5 @@ export interface VolumeControlProps {
|
|
|
5
5
|
volume: number;
|
|
6
6
|
onVolumeChange: (volume: number) => void;
|
|
7
7
|
}
|
|
8
|
-
export declare const VolumeControl: import("react").MemoExoticComponent<({ id, position, size, volume, onVolumeChange }: VolumeControlProps) => import("react
|
|
8
|
+
export declare const VolumeControl: import("react").MemoExoticComponent<({ id, position, size, volume, onVolumeChange }: VolumeControlProps) => import("react").JSX.Element>;
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/commons/VolumeControl/index.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CACzC;AAID,eAAO,MAAM,aAAa,uFACyB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/commons/VolumeControl/index.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CACzC;AAID,eAAO,MAAM,aAAa,uFACyB,kBAAkB,iCAiEpE,CAAA"}
|
|
@@ -28,9 +28,9 @@ interface Props {
|
|
|
28
28
|
/**
|
|
29
29
|
* 音量オーバーライド機能を提供する ContextProvider
|
|
30
30
|
*/
|
|
31
|
-
export declare const VoiceVolumeOverrideProvider: ({ value, children }: Props) => import("react
|
|
31
|
+
export declare const VoiceVolumeOverrideProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
32
32
|
/** @deprecated Use VoiceVolumeOverrideProvider instead */
|
|
33
|
-
export declare const AudioVolumeProvider: ({ value, children }: Props) => import("react
|
|
33
|
+
export declare const AudioVolumeProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
34
34
|
/**
|
|
35
35
|
* 音量オーバーライドの Context を取得する hook
|
|
36
36
|
* @throws {Error} VoiceVolumeOverrideProvider の外で呼び出された場合
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioVolumeContext.d.ts","sourceRoot":"","sources":["../../src/contexts/AudioVolumeContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,+BAA+B;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACrD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,YAAY,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChD;AAED,8DAA8D;AAC9D,MAAM,MAAM,uBAAuB,GAAG,+BAA+B,CAAA;AAErE;;;GAGG;AACH,eAAO,MAAM,8CAA8C,QAAO,+BAKhE,CAAA;AAEF,6EAA6E;AAC7E,eAAO,MAAM,sCAAsC,QARe,+BAQkC,CAAA;AAEpG;;;GAGG;AACH,eAAO,MAAM,0BAA0B,iEAA8D,CAAA;AAErG,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,iEAA6B,CAAA;AAE5D,UAAU,KAAK;IACb,KAAK,EAAE,+BAA+B,CAAA;IACtC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,GAAI,qBAAqB,KAAK,
|
|
1
|
+
{"version":3,"file":"AudioVolumeContext.d.ts","sourceRoot":"","sources":["../../src/contexts/AudioVolumeContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,+BAA+B;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACrD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,YAAY,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChD;AAED,8DAA8D;AAC9D,MAAM,MAAM,uBAAuB,GAAG,+BAA+B,CAAA;AAErE;;;GAGG;AACH,eAAO,MAAM,8CAA8C,QAAO,+BAKhE,CAAA;AAEF,6EAA6E;AAC7E,eAAO,MAAM,sCAAsC,QARe,+BAQkC,CAAA;AAEpG;;;GAGG;AACH,eAAO,MAAM,0BAA0B,iEAA8D,CAAA;AAErG,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,iEAA6B,CAAA;AAE5D,UAAU,KAAK;IACb,KAAK,EAAE,+BAA+B,CAAA;IACtC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,GAAI,qBAAqB,KAAK,gCAErE,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,wBALiC,KAAK,gCAKR,CAAA;AAE9D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,QAAO,+BAMhD,CAAA;AAED,4DAA4D;AAC5D,eAAO,MAAM,qBAAqB,QATe,+BASiB,CAAA"}
|
|
@@ -25,7 +25,7 @@ interface Props {
|
|
|
25
25
|
/**
|
|
26
26
|
* 確認モーダル機能を提供する ContextProvider
|
|
27
27
|
*/
|
|
28
|
-
export declare const ConfirmProvider: ({ value, children }: Props) => import("react
|
|
28
|
+
export declare const ConfirmProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
29
29
|
/**
|
|
30
30
|
* 確認モーダルの Context を取得する hook
|
|
31
31
|
* @throws {Error} ConfirmProvider の外で呼び出された場合
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmContext.d.ts","sourceRoot":"","sources":["../../src/contexts/ConfirmContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9D;AAED;;;GAGG;AACH,eAAO,MAAM,kCAAkC,QAAO,mBAEpD,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,qDAAkD,CAAA;AAE7E,UAAU,KAAK;IACb,KAAK,EAAE,mBAAmB,CAAA;IAC1B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,qBAAqB,KAAK,
|
|
1
|
+
{"version":3,"file":"ConfirmContext.d.ts","sourceRoot":"","sources":["../../src/contexts/ConfirmContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9D;AAED;;;GAGG;AACH,eAAO,MAAM,kCAAkC,QAAO,mBAEpD,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,qDAAkD,CAAA;AAE7E,UAAU,KAAK;IACb,KAAK,EAAE,mBAAmB,CAAA;IAC1B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,qBAAqB,KAAK,gCAEzD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAO,mBAMpC,CAAA"}
|
|
@@ -59,7 +59,7 @@ interface Props {
|
|
|
59
59
|
/**
|
|
60
60
|
* ファイル入力のContextProvider
|
|
61
61
|
*/
|
|
62
|
-
export declare const FileInputProvider: ({ value, children }: Props) => import("react
|
|
62
|
+
export declare const FileInputProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
63
63
|
/**
|
|
64
64
|
* ファイル入力の機能を取得するhook
|
|
65
65
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileInputContext.d.ts","sourceRoot":"","sources":["../../src/contexts/FileInputContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,cAAc,CAAA;AAElE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe;IACf,EAAE,EAAE,MAAM,CAAA;IACV,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uBAAuB;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAA;IACjC,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,kBAAkB;IAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACrD;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC,QAAO,qBA8BtD,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,uDAAoD,CAAA;AAEjF,UAAU,KAAK;IACb,KAAK,EAAE,qBAAqB,CAAA;IAC5B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,qBAAqB,KAAK,
|
|
1
|
+
{"version":3,"file":"FileInputContext.d.ts","sourceRoot":"","sources":["../../src/contexts/FileInputContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,cAAc,CAAA;AAElE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe;IACf,EAAE,EAAE,MAAM,CAAA;IACV,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uBAAuB;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAA;IACjC,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,kBAAkB;IAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACrD;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC,QAAO,qBA8BtD,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,uDAAoD,CAAA;AAEjF,UAAU,KAAK;IACb,KAAK,EAAE,qBAAqB,CAAA;IAC5B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,qBAAqB,KAAK,gCAE3D,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,QAAO,qBAQtC,CAAA"}
|
|
@@ -68,7 +68,7 @@ interface Props {
|
|
|
68
68
|
* 掴める対象を提供するContextProvider
|
|
69
69
|
* プラットフォーム側(xrift-frontend)が掴める対象を取得するために使用
|
|
70
70
|
*/
|
|
71
|
-
export declare const GrabbableProvider: ({ implementation, children }: Props) => import("react
|
|
71
|
+
export declare const GrabbableProvider: ({ implementation, children }: Props) => import("react").JSX.Element;
|
|
72
72
|
/**
|
|
73
73
|
* 掴める対象の登録・掴み状態を取得するhook
|
|
74
74
|
* 主に <Grabbable> コンポーネント内部で使用する
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GrabbableContext.d.ts","sourceRoot":"","sources":["../../src/contexts/GrabbableContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAA;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE/D;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB;IACjB,QAAQ,EAAE,UAAU,CAAA;IACpB,qBAAqB;IACrB,QAAQ,EAAE,UAAU,CAAA;IACpB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,UAAU,CAAA;IACpB,QAAQ,EAAE,UAAU,CAAA;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,WAAW,EAAE,MAAM,SAAS,CAAA;IAC5B,sCAAsC;IACtC,MAAM,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAChD,iCAAiC;IACjC,YAAY,EAAE,MAAM,QAAQ,CAAC,kBAAkB,CAAC,CAAA;CACjD;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,iBAAiB;IACjB,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;IAC9D,oBAAoB;IACpB,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,2CAA2C;IAC3C,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACjC,kDAAkD;IAClD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAA;CACzD;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC,QAAO,qBAavD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,gDAE5B,CAAA;AAED,UAAU,KAAK;IACb;;;OAGG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,8BAA8B,KAAK,
|
|
1
|
+
{"version":3,"file":"GrabbableContext.d.ts","sourceRoot":"","sources":["../../src/contexts/GrabbableContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAA;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE/D;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB;IACjB,QAAQ,EAAE,UAAU,CAAA;IACpB,qBAAqB;IACrB,QAAQ,EAAE,UAAU,CAAA;IACpB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,UAAU,CAAA;IACpB,QAAQ,EAAE,UAAU,CAAA;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,WAAW,EAAE,MAAM,SAAS,CAAA;IAC5B,sCAAsC;IACtC,MAAM,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAChD,iCAAiC;IACjC,YAAY,EAAE,MAAM,QAAQ,CAAC,kBAAkB,CAAC,CAAA;CACjD;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,iBAAiB;IACjB,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;IAC9D,oBAAoB;IACpB,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,2CAA2C;IAC3C,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACjC,kDAAkD;IAClD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAA;CACzD;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC,QAAO,qBAavD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,gDAE5B,CAAA;AAED,UAAU,KAAK;IACb;;;OAGG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,8BAA8B,KAAK,gCAOpE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAO,qBAAqD,CAAA"}
|
|
@@ -38,7 +38,7 @@ interface Props {
|
|
|
38
38
|
/**
|
|
39
39
|
* インスタンス情報の取得・遷移機能を提供する ContextProvider
|
|
40
40
|
*/
|
|
41
|
-
export declare const InstanceProvider: ({ value, children }: Props) => import("react
|
|
41
|
+
export declare const InstanceProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
42
42
|
/**
|
|
43
43
|
* インスタンスの Context を取得する hook
|
|
44
44
|
* @throws {Error} InstanceProvider の外で呼び出された場合
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstanceContext.d.ts","sourceRoot":"","sources":["../../src/contexts/InstanceContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE;QACN,EAAE,EAAE,MAAM,CAAA;QACV,WAAW,EAAE,MAAM,CAAA;QACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAC5B,CAAA;IACD,KAAK,EAAE,SAAS,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,+BAA+B;IAC/B,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9D,kBAAkB;IAClB,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;CACjD;AAED;;;GAGG;AACH,eAAO,MAAM,mCAAmC,QAAO,oBA0BrD,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,sDAAmD,CAAA;AAE/E,UAAU,KAAK;IACb,KAAK,EAAE,oBAAoB,CAAA;IAC3B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,qBAAqB,KAAK,
|
|
1
|
+
{"version":3,"file":"InstanceContext.d.ts","sourceRoot":"","sources":["../../src/contexts/InstanceContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE;QACN,EAAE,EAAE,MAAM,CAAA;QACV,WAAW,EAAE,MAAM,CAAA;QACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAC5B,CAAA;IACD,KAAK,EAAE,SAAS,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,+BAA+B;IAC/B,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9D,kBAAkB;IAClB,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;CACjD;AAED;;;GAGG;AACH,eAAO,MAAM,mCAAmC,QAAO,oBA0BrD,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,sDAAmD,CAAA;AAE/E,UAAU,KAAK;IACb,KAAK,EAAE,oBAAoB,CAAA;IAC3B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,qBAAqB,KAAK,gCAE1D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAO,oBAMrC,CAAA"}
|
|
@@ -22,7 +22,7 @@ interface Props {
|
|
|
22
22
|
/**
|
|
23
23
|
* インスタンスイベントの送受信を提供する ContextProvider
|
|
24
24
|
*/
|
|
25
|
-
export declare const InstanceEventProvider: ({ value, children }: Props) => import("react
|
|
25
|
+
export declare const InstanceEventProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
26
26
|
/**
|
|
27
27
|
* インスタンスイベントの Context を取得する hook
|
|
28
28
|
* @throws {Error} InstanceEventProvider の外で呼び出された場合
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstanceEventContext.d.ts","sourceRoot":"","sources":["../../src/contexts/InstanceEventContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,yBAAyB;IACxC,2BAA2B;IAC3B,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;IAC/E,wBAAwB;IACxB,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACjD;AAED;;;GAGG;AACH,eAAO,MAAM,wCAAwC,QAAO,yBA2B3D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,2DAAwD,CAAA;AAEzF,UAAU,KAAK;IACb,KAAK,EAAE,yBAAyB,CAAA;IAChC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,qBAAqB,KAAK,
|
|
1
|
+
{"version":3,"file":"InstanceEventContext.d.ts","sourceRoot":"","sources":["../../src/contexts/InstanceEventContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,yBAAyB;IACxC,2BAA2B;IAC3B,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;IAC/E,wBAAwB;IACxB,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACjD;AAED;;;GAGG;AACH,eAAO,MAAM,wCAAwC,QAAO,yBA2B3D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,2DAAwD,CAAA;AAEzF,UAAU,KAAK;IACb,KAAK,EAAE,yBAAyB,CAAA;IAChC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,qBAAqB,KAAK,gCAE/D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAO,yBAM1C,CAAA"}
|
|
@@ -39,7 +39,7 @@ interface Props {
|
|
|
39
39
|
* <WorldComponent />
|
|
40
40
|
* </InstanceStateProvider>
|
|
41
41
|
*/
|
|
42
|
-
export declare const InstanceStateProvider: ({ implementation, children }: Props) => import("react
|
|
42
|
+
export declare const InstanceStateProvider: ({ implementation, children }: Props) => import("react").JSX.Element;
|
|
43
43
|
/**
|
|
44
44
|
* インスタンス状態のContextを取得するhook
|
|
45
45
|
* 通常、ワールド作成者は直接このhookを使用せず、useInstanceStateを使用する
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstanceStateContext.d.ts","sourceRoot":"","sources":["../../src/contexts/InstanceStateContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B;;;;OAIG;IACH,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CACvD;AAiBD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,oDAEhC,CAAA;AAED,UAAU,KAAK;IACb;;;OAGG;IACH,cAAc,CAAC,EAAE,yBAAyB,CAAA;IAC1C,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,GAAI,8BAA8B,KAAK,
|
|
1
|
+
{"version":3,"file":"InstanceStateContext.d.ts","sourceRoot":"","sources":["../../src/contexts/InstanceStateContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B;;;;OAIG;IACH,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CACvD;AAiBD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,oDAEhC,CAAA;AAED,UAAU,KAAK;IACb;;;OAGG;IACH,cAAc,CAAC,EAAE,yBAAyB,CAAA;IAC1C,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,GAAI,8BAA8B,KAAK,gCASxE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAO,yBAE1C,CAAA"}
|