@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.
Files changed (313) hide show
  1. package/dist/components/BillboardY/hooks.d.ts +1 -1
  2. package/dist/components/BillboardY/hooks.d.ts.map +1 -1
  3. package/dist/components/BillboardY/index.d.ts +1 -1
  4. package/dist/components/BillboardY/index.d.ts.map +1 -1
  5. package/dist/components/DevEnvironment/components/ControlsHelp.d.ts +1 -1
  6. package/dist/components/DevEnvironment/components/ControlsHelp.d.ts.map +1 -1
  7. package/dist/components/DevEnvironment/components/Crosshair.d.ts +1 -1
  8. package/dist/components/DevEnvironment/components/Crosshair.d.ts.map +1 -1
  9. package/dist/components/DevEnvironment/components/GrabSystem/index.d.ts +1 -1
  10. package/dist/components/DevEnvironment/components/GrabSystem/index.d.ts.map +1 -1
  11. package/dist/components/DevEnvironment/components/PhysicsPlayer.d.ts +1 -1
  12. package/dist/components/DevEnvironment/components/PhysicsPlayer.d.ts.map +1 -1
  13. package/dist/components/DevEnvironment/components/PointerLockStatus.d.ts +1 -1
  14. package/dist/components/DevEnvironment/components/PointerLockStatus.d.ts.map +1 -1
  15. package/dist/components/DevEnvironment/index.d.ts +1 -1
  16. package/dist/components/DevEnvironment/index.d.ts.map +1 -1
  17. package/dist/components/EntryLogBoard/components/AvatarIcon.d.ts +1 -1
  18. package/dist/components/EntryLogBoard/components/AvatarIcon.d.ts.map +1 -1
  19. package/dist/components/EntryLogBoard/components/LogRow.d.ts +1 -1
  20. package/dist/components/EntryLogBoard/components/LogRow.d.ts.map +1 -1
  21. package/dist/components/EntryLogBoard/index.d.ts +1 -1
  22. package/dist/components/EntryLogBoard/index.d.ts.map +1 -1
  23. package/dist/components/LiveVideoPlayer/components/ControlPanel/index.d.ts +1 -1
  24. package/dist/components/LiveVideoPlayer/components/ControlPanel/index.d.ts.map +1 -1
  25. package/dist/components/LiveVideoPlayer/components/LiveVideoTexture.d.ts +1 -1
  26. package/dist/components/LiveVideoPlayer/components/LiveVideoTexture.d.ts.map +1 -1
  27. package/dist/components/LiveVideoPlayer/index.d.ts +1 -1
  28. package/dist/components/LiveVideoPlayer/index.d.ts.map +1 -1
  29. package/dist/components/Mirror/index.d.ts +1 -1
  30. package/dist/components/Mirror/index.d.ts.map +1 -1
  31. package/dist/components/Portal/components/PortalGlow/index.d.ts +1 -1
  32. package/dist/components/Portal/components/PortalGlow/index.d.ts.map +1 -1
  33. package/dist/components/Portal/components/PortalParticles/index.d.ts +1 -1
  34. package/dist/components/Portal/components/PortalParticles/index.d.ts.map +1 -1
  35. package/dist/components/Portal/components/PortalPedestal/index.d.ts +1 -1
  36. package/dist/components/Portal/components/PortalPedestal/index.d.ts.map +1 -1
  37. package/dist/components/Portal/components/PortalThumbnail/index.d.ts +1 -1
  38. package/dist/components/Portal/components/PortalThumbnail/index.d.ts.map +1 -1
  39. package/dist/components/Portal/components/PortalVortex/index.d.ts +1 -1
  40. package/dist/components/Portal/components/PortalVortex/index.d.ts.map +1 -1
  41. package/dist/components/Portal/index.d.ts +1 -1
  42. package/dist/components/Portal/index.d.ts.map +1 -1
  43. package/dist/components/ScreenShareDisplay/index.d.ts +1 -1
  44. package/dist/components/ScreenShareDisplay/index.d.ts.map +1 -1
  45. package/dist/components/Skybox/index.d.ts +1 -1
  46. package/dist/components/Skybox/index.d.ts.map +1 -1
  47. package/dist/components/TagBoard/components/TagChip.d.ts +1 -1
  48. package/dist/components/TagBoard/components/TagChip.d.ts.map +1 -1
  49. package/dist/components/TagBoard/components/TagDisplay/index.d.ts +1 -1
  50. package/dist/components/TagBoard/components/TagDisplay/index.d.ts.map +1 -1
  51. package/dist/components/TagBoard/components/TagSelector/components/ActionButton.d.ts +1 -1
  52. package/dist/components/TagBoard/components/TagSelector/components/ActionButton.d.ts.map +1 -1
  53. package/dist/components/TagBoard/components/TagSelector/components/TagButton.d.ts +1 -1
  54. package/dist/components/TagBoard/components/TagSelector/components/TagButton.d.ts.map +1 -1
  55. package/dist/components/TagBoard/components/TagSelector/index.d.ts +1 -1
  56. package/dist/components/TagBoard/components/TagSelector/index.d.ts.map +1 -1
  57. package/dist/components/TagBoard/index.d.ts +1 -1
  58. package/dist/components/TagBoard/index.d.ts.map +1 -1
  59. package/dist/components/Video180Sphere/EyeView.d.ts +1 -1
  60. package/dist/components/Video180Sphere/EyeView.d.ts.map +1 -1
  61. package/dist/components/Video180Sphere/index.d.ts +1 -1
  62. package/dist/components/Video180Sphere/index.d.ts.map +1 -1
  63. package/dist/components/VideoPlayer/components/ControlPanel.d.ts +1 -1
  64. package/dist/components/VideoPlayer/components/ControlPanel.d.ts.map +1 -1
  65. package/dist/components/VideoPlayer/index.d.ts +1 -1
  66. package/dist/components/VideoPlayer/index.d.ts.map +1 -1
  67. package/dist/components/VideoScreen/constants.d.ts +27 -0
  68. package/dist/components/VideoScreen/constants.d.ts.map +1 -0
  69. package/dist/components/VideoScreen/constants.js +27 -0
  70. package/dist/components/VideoScreen/constants.js.map +1 -0
  71. package/dist/components/VideoScreen/hooks.d.ts +19 -0
  72. package/dist/components/VideoScreen/hooks.d.ts.map +1 -0
  73. package/dist/components/VideoScreen/hooks.js +69 -0
  74. package/dist/components/VideoScreen/hooks.js.map +1 -0
  75. package/dist/components/VideoScreen/index.d.ts +1 -1
  76. package/dist/components/VideoScreen/index.d.ts.map +1 -1
  77. package/dist/components/VideoScreen/index.js +22 -17
  78. package/dist/components/VideoScreen/index.js.map +1 -1
  79. package/dist/components/VideoScreen/types.d.ts +14 -4
  80. package/dist/components/VideoScreen/types.d.ts.map +1 -1
  81. package/dist/components/VideoScreen/utils.d.ts +73 -0
  82. package/dist/components/VideoScreen/utils.d.ts.map +1 -0
  83. package/dist/components/VideoScreen/utils.js +74 -0
  84. package/dist/components/VideoScreen/utils.js.map +1 -0
  85. package/dist/components/commons/IconButton/index.d.ts +1 -1
  86. package/dist/components/commons/IconButton/index.d.ts.map +1 -1
  87. package/dist/components/commons/PlaceholderScreen/index.d.ts +1 -1
  88. package/dist/components/commons/PlaceholderScreen/index.d.ts.map +1 -1
  89. package/dist/components/commons/VideoMesh/index.d.ts +1 -1
  90. package/dist/components/commons/VideoMesh/index.d.ts.map +1 -1
  91. package/dist/components/commons/VolumeControl/index.d.ts +1 -1
  92. package/dist/components/commons/VolumeControl/index.d.ts.map +1 -1
  93. package/dist/contexts/AudioVolumeContext.d.ts +2 -2
  94. package/dist/contexts/AudioVolumeContext.d.ts.map +1 -1
  95. package/dist/contexts/ConfirmContext.d.ts +1 -1
  96. package/dist/contexts/ConfirmContext.d.ts.map +1 -1
  97. package/dist/contexts/FileInputContext.d.ts +1 -1
  98. package/dist/contexts/FileInputContext.d.ts.map +1 -1
  99. package/dist/contexts/GrabbableContext.d.ts +1 -1
  100. package/dist/contexts/GrabbableContext.d.ts.map +1 -1
  101. package/dist/contexts/InstanceContext.d.ts +1 -1
  102. package/dist/contexts/InstanceContext.d.ts.map +1 -1
  103. package/dist/contexts/InstanceEventContext.d.ts +1 -1
  104. package/dist/contexts/InstanceEventContext.d.ts.map +1 -1
  105. package/dist/contexts/InstanceStateContext.d.ts +1 -1
  106. package/dist/contexts/InstanceStateContext.d.ts.map +1 -1
  107. package/dist/contexts/ItemContext.d.ts +23 -3
  108. package/dist/contexts/ItemContext.d.ts.map +1 -1
  109. package/dist/contexts/ItemContext.js +7 -3
  110. package/dist/contexts/ItemContext.js.map +1 -1
  111. package/dist/contexts/PlacementStateContext.d.ts +1 -1
  112. package/dist/contexts/PlacementStateContext.d.ts.map +1 -1
  113. package/dist/contexts/ScreenShareContext.d.ts +1 -1
  114. package/dist/contexts/ScreenShareContext.d.ts.map +1 -1
  115. package/dist/contexts/ServerClockContext.d.ts +108 -0
  116. package/dist/contexts/ServerClockContext.d.ts.map +1 -0
  117. package/dist/contexts/ServerClockContext.js +48 -0
  118. package/dist/contexts/ServerClockContext.js.map +1 -0
  119. package/dist/contexts/SharedFileContext.d.ts +1 -1
  120. package/dist/contexts/SharedFileContext.d.ts.map +1 -1
  121. package/dist/contexts/SpawnPointContext.d.ts +1 -1
  122. package/dist/contexts/SpawnPointContext.d.ts.map +1 -1
  123. package/dist/contexts/TeleportContext.d.ts +1 -1
  124. package/dist/contexts/TeleportContext.d.ts.map +1 -1
  125. package/dist/contexts/TextInputContext.d.ts +1 -1
  126. package/dist/contexts/TextInputContext.d.ts.map +1 -1
  127. package/dist/contexts/UsersContext.d.ts +1 -1
  128. package/dist/contexts/UsersContext.d.ts.map +1 -1
  129. package/dist/contexts/WorldContext.d.ts +1 -1
  130. package/dist/contexts/WorldContext.d.ts.map +1 -1
  131. package/dist/contexts/WorldStorageContext.d.ts +1 -1
  132. package/dist/contexts/WorldStorageContext.d.ts.map +1 -1
  133. package/dist/contexts/XRiftContext.d.ts +7 -1
  134. package/dist/contexts/XRiftContext.d.ts.map +1 -1
  135. package/dist/contexts/XRiftContext.js +5 -1
  136. package/dist/contexts/XRiftContext.js.map +1 -1
  137. package/dist/hooks/useServerClock.d.ts +60 -0
  138. package/dist/hooks/useServerClock.d.ts.map +1 -0
  139. package/dist/hooks/useServerClock.js +58 -0
  140. package/dist/hooks/useServerClock.js.map +1 -0
  141. package/dist/index.d.ts +5 -1
  142. package/dist/index.d.ts.map +1 -1
  143. package/dist/index.js +4 -0
  144. package/dist/index.js.map +1 -1
  145. package/package.json +7 -5
  146. package/dist/components/BillboardY/__tests__/utils.test.d.ts +0 -2
  147. package/dist/components/BillboardY/__tests__/utils.test.d.ts.map +0 -1
  148. package/dist/components/BillboardY/__tests__/utils.test.js +0 -45
  149. package/dist/components/BillboardY/__tests__/utils.test.js.map +0 -1
  150. package/dist/components/DevEnvironment/__tests__/utils.test.d.ts +0 -2
  151. package/dist/components/DevEnvironment/__tests__/utils.test.d.ts.map +0 -1
  152. package/dist/components/DevEnvironment/__tests__/utils.test.js +0 -24
  153. package/dist/components/DevEnvironment/__tests__/utils.test.js.map +0 -1
  154. package/dist/components/DevEnvironment/components/GrabSystem/__tests__/store.test.d.ts +0 -2
  155. package/dist/components/DevEnvironment/components/GrabSystem/__tests__/store.test.d.ts.map +0 -1
  156. package/dist/components/DevEnvironment/components/GrabSystem/__tests__/store.test.js +0 -114
  157. package/dist/components/DevEnvironment/components/GrabSystem/__tests__/store.test.js.map +0 -1
  158. package/dist/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.d.ts +0 -2
  159. package/dist/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.d.ts.map +0 -1
  160. package/dist/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.js +0 -103
  161. package/dist/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.js.map +0 -1
  162. package/dist/components/EntryLogBoard/__tests__/utils.test.d.ts +0 -2
  163. package/dist/components/EntryLogBoard/__tests__/utils.test.d.ts.map +0 -1
  164. package/dist/components/EntryLogBoard/__tests__/utils.test.js +0 -231
  165. package/dist/components/EntryLogBoard/__tests__/utils.test.js.map +0 -1
  166. package/dist/components/Grabbable/__tests__/utils.test.d.ts +0 -2
  167. package/dist/components/Grabbable/__tests__/utils.test.d.ts.map +0 -1
  168. package/dist/components/Grabbable/__tests__/utils.test.js +0 -59
  169. package/dist/components/Grabbable/__tests__/utils.test.js.map +0 -1
  170. package/dist/components/LiveVideoPlayer/components/ControlPanel/LiveIndicator.d.ts +0 -8
  171. package/dist/components/LiveVideoPlayer/components/ControlPanel/LiveIndicator.d.ts.map +0 -1
  172. package/dist/components/LiveVideoPlayer/components/ControlPanel/LiveIndicator.js +0 -11
  173. package/dist/components/LiveVideoPlayer/components/ControlPanel/LiveIndicator.js.map +0 -1
  174. package/dist/components/LiveVideoPlayer/components/index.d.ts +0 -3
  175. package/dist/components/LiveVideoPlayer/components/index.d.ts.map +0 -1
  176. package/dist/components/LiveVideoPlayer/components/index.js +0 -3
  177. package/dist/components/LiveVideoPlayer/components/index.js.map +0 -1
  178. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/__tests__/utils.test.d.ts +0 -2
  179. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/__tests__/utils.test.d.ts.map +0 -1
  180. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/__tests__/utils.test.js +0 -196
  181. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/__tests__/utils.test.js.map +0 -1
  182. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/HlsJsPlayer.test.d.ts +0 -2
  183. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/HlsJsPlayer.test.d.ts.map +0 -1
  184. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/HlsJsPlayer.test.js +0 -146
  185. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/HlsJsPlayer.test.js.map +0 -1
  186. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/NativeHlsPlayer.test.d.ts +0 -2
  187. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/NativeHlsPlayer.test.d.ts.map +0 -1
  188. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/NativeHlsPlayer.test.js +0 -94
  189. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/NativeHlsPlayer.test.js.map +0 -1
  190. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/RecoveryTracker.test.d.ts +0 -2
  191. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/RecoveryTracker.test.d.ts.map +0 -1
  192. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/RecoveryTracker.test.js +0 -74
  193. package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/RecoveryTracker.test.js.map +0 -1
  194. package/dist/components/LiveVideoPlayer/hooks/useLiveVideoPlayer/index.d.ts +0 -25
  195. package/dist/components/LiveVideoPlayer/hooks/useLiveVideoPlayer/index.d.ts.map +0 -1
  196. package/dist/components/LiveVideoPlayer/hooks/useLiveVideoPlayer/index.js +0 -97
  197. package/dist/components/LiveVideoPlayer/hooks/useLiveVideoPlayer/index.js.map +0 -1
  198. package/dist/components/Mirror/__tests__/utils.test.d.ts +0 -2
  199. package/dist/components/Mirror/__tests__/utils.test.d.ts.map +0 -1
  200. package/dist/components/Mirror/__tests__/utils.test.js +0 -42
  201. package/dist/components/Mirror/__tests__/utils.test.js.map +0 -1
  202. package/dist/components/MsdfText/index.d.ts +0 -24
  203. package/dist/components/MsdfText/index.d.ts.map +0 -1
  204. package/dist/components/MsdfText/index.js +0 -24
  205. package/dist/components/MsdfText/index.js.map +0 -1
  206. package/dist/components/Portal/__tests__/utils.test.d.ts +0 -2
  207. package/dist/components/Portal/__tests__/utils.test.d.ts.map +0 -1
  208. package/dist/components/Portal/__tests__/utils.test.js +0 -56
  209. package/dist/components/Portal/__tests__/utils.test.js.map +0 -1
  210. package/dist/components/ScreenShareDisplay/__tests__/utils.test.d.ts +0 -2
  211. package/dist/components/ScreenShareDisplay/__tests__/utils.test.d.ts.map +0 -1
  212. package/dist/components/ScreenShareDisplay/__tests__/utils.test.js +0 -47
  213. package/dist/components/ScreenShareDisplay/__tests__/utils.test.js.map +0 -1
  214. package/dist/components/TroikaText/index.d.ts +0 -4
  215. package/dist/components/TroikaText/index.d.ts.map +0 -1
  216. package/dist/components/TroikaText/index.js +0 -50
  217. package/dist/components/TroikaText/index.js.map +0 -1
  218. package/dist/components/TroikaText/types.d.ts +0 -19
  219. package/dist/components/TroikaText/types.d.ts.map +0 -1
  220. package/dist/components/TroikaText/types.js +0 -2
  221. package/dist/components/TroikaText/types.js.map +0 -1
  222. package/dist/components/VideoPlayer/ControlPanel.d.ts +0 -3
  223. package/dist/components/VideoPlayer/ControlPanel.d.ts.map +0 -1
  224. package/dist/components/VideoPlayer/ControlPanel.js +0 -34
  225. package/dist/components/VideoPlayer/ControlPanel.js.map +0 -1
  226. package/dist/components/VideoPlayer/ProgressBar.d.ts +0 -3
  227. package/dist/components/VideoPlayer/ProgressBar.d.ts.map +0 -1
  228. package/dist/components/VideoPlayer/ProgressBar.js +0 -21
  229. package/dist/components/VideoPlayer/ProgressBar.js.map +0 -1
  230. package/dist/components/VideoPlayer/__tests__/utils.test.d.ts +0 -2
  231. package/dist/components/VideoPlayer/__tests__/utils.test.d.ts.map +0 -1
  232. package/dist/components/VideoPlayer/__tests__/utils.test.js +0 -23
  233. package/dist/components/VideoPlayer/__tests__/utils.test.js.map +0 -1
  234. package/dist/components/VideoPlayer/components/ProgressBar.d.ts +0 -12
  235. package/dist/components/VideoPlayer/components/ProgressBar.d.ts.map +0 -1
  236. package/dist/components/VideoPlayer/components/ProgressBar.js +0 -21
  237. package/dist/components/VideoPlayer/components/ProgressBar.js.map +0 -1
  238. package/dist/components/VideoPlayer/components/index.d.ts +0 -3
  239. package/dist/components/VideoPlayer/components/index.d.ts.map +0 -1
  240. package/dist/components/VideoPlayer/components/index.js +0 -3
  241. package/dist/components/VideoPlayer/components/index.js.map +0 -1
  242. package/dist/components/VideoPlayer/types.d.ts +0 -44
  243. package/dist/components/VideoPlayer/types.d.ts.map +0 -1
  244. package/dist/components/VideoPlayer/types.js +0 -2
  245. package/dist/components/VideoPlayer/types.js.map +0 -1
  246. package/dist/components/VideoPlayer/utils.test.d.ts +0 -2
  247. package/dist/components/VideoPlayer/utils.test.d.ts.map +0 -1
  248. package/dist/components/VideoPlayer/utils.test.js +0 -23
  249. package/dist/components/VideoPlayer/utils.test.js.map +0 -1
  250. package/dist/components/commons/utils.test.d.ts +0 -2
  251. package/dist/components/commons/utils.test.d.ts.map +0 -1
  252. package/dist/components/commons/utils.test.js +0 -79
  253. package/dist/components/commons/utils.test.js.map +0 -1
  254. package/dist/contexts/FontContext.d.ts +0 -17
  255. package/dist/contexts/FontContext.d.ts.map +0 -1
  256. package/dist/contexts/FontContext.js +0 -25
  257. package/dist/contexts/FontContext.js.map +0 -1
  258. package/dist/contexts/InstanceInfoContext.d.ts +0 -39
  259. package/dist/contexts/InstanceInfoContext.d.ts.map +0 -1
  260. package/dist/contexts/InstanceInfoContext.js +0 -42
  261. package/dist/contexts/InstanceInfoContext.js.map +0 -1
  262. package/dist/contexts/PortalContext.d.ts +0 -39
  263. package/dist/contexts/PortalContext.d.ts.map +0 -1
  264. package/dist/contexts/PortalContext.js +0 -42
  265. package/dist/contexts/PortalContext.js.map +0 -1
  266. package/dist/contexts/WorldEventContext.d.ts +0 -32
  267. package/dist/contexts/WorldEventContext.d.ts.map +0 -1
  268. package/dist/contexts/WorldEventContext.js +0 -54
  269. package/dist/contexts/WorldEventContext.js.map +0 -1
  270. package/dist/contexts/__tests__/WorldStorageContext.test.d.ts +0 -2
  271. package/dist/contexts/__tests__/WorldStorageContext.test.d.ts.map +0 -1
  272. package/dist/contexts/__tests__/WorldStorageContext.test.js +0 -120
  273. package/dist/contexts/__tests__/WorldStorageContext.test.js.map +0 -1
  274. package/dist/fonts/FontContext.d.ts +0 -9
  275. package/dist/fonts/FontContext.d.ts.map +0 -1
  276. package/dist/fonts/FontContext.js +0 -5
  277. package/dist/fonts/FontContext.js.map +0 -1
  278. package/dist/fonts/FontProvider.d.ts +0 -31
  279. package/dist/fonts/FontProvider.d.ts.map +0 -1
  280. package/dist/fonts/FontProvider.js +0 -40
  281. package/dist/fonts/FontProvider.js.map +0 -1
  282. package/dist/fonts/FontReadyContainer.d.ts +0 -35
  283. package/dist/fonts/FontReadyContainer.d.ts.map +0 -1
  284. package/dist/fonts/FontReadyContainer.js +0 -40
  285. package/dist/fonts/FontReadyContainer.js.map +0 -1
  286. package/dist/fonts/constants.d.ts +0 -5
  287. package/dist/fonts/constants.d.ts.map +0 -1
  288. package/dist/fonts/constants.js +0 -5
  289. package/dist/fonts/constants.js.map +0 -1
  290. package/dist/fonts/loadTTF.d.ts +0 -18
  291. package/dist/fonts/loadTTF.d.ts.map +0 -1
  292. package/dist/fonts/loadTTF.js +0 -36
  293. package/dist/fonts/loadTTF.js.map +0 -1
  294. package/dist/fonts/useTTF.d.ts +0 -7
  295. package/dist/fonts/useTTF.d.ts.map +0 -1
  296. package/dist/fonts/useTTF.js +0 -9
  297. package/dist/fonts/useTTF.js.map +0 -1
  298. package/dist/hooks/useJapaneseFont.d.ts +0 -7
  299. package/dist/hooks/useJapaneseFont.d.ts.map +0 -1
  300. package/dist/hooks/useJapaneseFont.js +0 -25
  301. package/dist/hooks/useJapaneseFont.js.map +0 -1
  302. package/dist/hooks/useMsdfFont.d.ts +0 -11
  303. package/dist/hooks/useMsdfFont.d.ts.map +0 -1
  304. package/dist/hooks/useMsdfFont.js +0 -19
  305. package/dist/hooks/useMsdfFont.js.map +0 -1
  306. package/dist/hooks/usePortalNavigation.d.ts +0 -10
  307. package/dist/hooks/usePortalNavigation.d.ts.map +0 -1
  308. package/dist/hooks/usePortalNavigation.js +0 -46
  309. package/dist/hooks/usePortalNavigation.js.map +0 -1
  310. package/dist/hooks/useWorldEvent.d.ts +0 -25
  311. package/dist/hooks/useWorldEvent.d.ts.map +0 -1
  312. package/dist/hooks/useWorldEvent.js +0 -45
  313. package/dist/hooks/useWorldEvent.js.map +0 -1
@@ -0,0 +1,58 @@
1
+ import { isServerClockAccurateEnough, useServerClockContext, } from '../contexts/ServerClockContext';
2
+ /**
3
+ * インスタンス内の全端末で共有できる時計(サーバ時刻)を提供するフック
4
+ *
5
+ * 端末の `Date.now()` は互いに 0.1〜数秒ずれているため、動画の再生位置同期・
6
+ * カウントダウン・同時演出・決定論的アニメーションはこれを使う。
7
+ *
8
+ * 指針:
9
+ * - **`now` は関数**。値ではないので `useFrame` の中から再レンダーなしで呼べる
10
+ * - **`timeJumpCount` の変化を見て基準を取り直す。** 通常は時刻が巻き戻らない
11
+ * よう徐々に補正するが、スリープ復帰などでは飛ぶ。時刻から位置を計算している
12
+ * ワールドは、飛んだときに基準を取り直さないとワープしたままになる
13
+ * - **補正のコストが誤差より大きいなら補正しない。** 動画で言えば、ズレを直すために
14
+ * シークしてバッファが切れるくらいなら、ズレたまま再生を続けるほうが体験は良い
15
+ * - 早押し・ゴール判定のような**公平性が要る用途には使わない**。経路の非対称ぶんの
16
+ * 誤差は検出できず、繰り返しても平均化されない(同じ人が毎回勝つ)
17
+ *
18
+ * @example
19
+ * // 動画の再生位置を合わせる
20
+ * const clock = useServerClock({ require: 'media' })
21
+ *
22
+ * useFrame(() => {
23
+ * if (!clock.trustworthy) return // 精度が出ていないなら諦める
24
+ * const target = (clock.now() - epoch) / 1000 % duration
25
+ * const diff = target - video.currentTime
26
+ * if (Math.abs(diff) < 0.3) {
27
+ * video.playbackRate = 1 // dead band。戻し忘れると振動し続ける
28
+ * return
29
+ * }
30
+ * if (Math.abs(diff) < 5) video.playbackRate = 1 + Math.sign(diff) * 0.05
31
+ * else if (isBuffered(video, target)) video.currentTime = target
32
+ * // バッファ外なら何もしない(同期より再生継続を優先)
33
+ * })
34
+ *
35
+ * @example
36
+ * // 全員で一致する動く床(通信ゼロ。後から入った人も即座に正しい位置になる)
37
+ * const { now, timeJumpCount } = useServerClock()
38
+ * const seen = useRef(timeJumpCount)
39
+ *
40
+ * useFrame(() => {
41
+ * if (seen.current !== timeJumpCount) {
42
+ * seen.current = timeJumpCount
43
+ * resetBaseline() // 時刻が飛んだので基準を取り直す
44
+ * }
45
+ * floor.current.position.y = Math.sin(now() / 1000) * 2
46
+ * })
47
+ *
48
+ * @throws {Error} XRiftProvider の外で呼び出された場合
49
+ */
50
+ export const useServerClock = (options) => {
51
+ const clock = useServerClockContext();
52
+ const accuracy = options?.require;
53
+ return {
54
+ ...clock,
55
+ trustworthy: accuracy ? isServerClockAccurateEnough(clock, accuracy) : clock.synced,
56
+ };
57
+ };
58
+ //# sourceMappingURL=useServerClock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useServerClock.js","sourceRoot":"","sources":["../../src/hooks/useServerClock.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAG3B,qBAAqB,GACtB,MAAM,gCAAgC,CAAA;AAUvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAA2C,EAAwB,EAAE;IAClG,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAA;IACrC,MAAM,QAAQ,GAAG,OAAO,EAAE,OAAO,CAAA;IACjC,OAAO;QACL,GAAG,KAAK;QACR,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,2BAA2B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;KACpF,CAAA;AACH,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -11,9 +11,10 @@ export { WorldContext, WorldProvider, useWorldContext, createDefaultWorldImpleme
11
11
  export { TeleportContext, TeleportProvider, useTeleportContext, createDefaultTeleportImplementation, type TeleportContextValue, type TeleportDestination, } from './contexts/TeleportContext';
12
12
  export { InstanceEventContext, InstanceEventProvider, useInstanceEventContext, createDefaultInstanceEventImplementation, type InstanceEventContextValue, } from './contexts/InstanceEventContext';
13
13
  export { PlacementStateProvider, usePlacementState, type PlacementMode, type PlacementStateContextValue, } from './contexts/PlacementStateContext';
14
- export { ItemProvider, useItem, type ItemContextValue, } from './contexts/ItemContext';
14
+ export { ItemProvider, useItem, type ItemContextValue, type ItemPlacer, } from './contexts/ItemContext';
15
15
  export { SharedFileContext, SharedFileProvider, useSharedFileContext, createDefaultSharedFileImplementation, type SharedFileContextValue, type SharedFileInfo, type UploadSharedFileOptions, type UpdateSharedFileParams, } from './contexts/SharedFileContext';
16
16
  export { WorldStorageContext, WorldStorageProvider, useWorldStorageContext, createDefaultWorldStorageImplementation, WorldStorageError, WORLD_STORAGE_KEY_PATTERN, WORLD_STORAGE_LIMITS, isValidWorldStorageKey, getWorldStorageEntrySize, incrementWorldStorageValue, type WorldStorageContextValue, type WorldStorageErrorCode, type WorldStorageEntry, type SharedWorldStorage, type PlayerWorldStorage, } from './contexts/WorldStorageContext';
17
+ export { ServerClockContext, ServerClockProvider, useServerClockContext, createDefaultServerClockImplementation, isServerClockAccurateEnough, SERVER_CLOCK_ACCURACY_THRESHOLD, type ServerClockContextValue, type ServerClockAccuracy, } from './contexts/ServerClockContext';
17
18
  export { GrabbableContext, GrabbableProvider, useGrabbableContext, createDefaultGrabbableImplementation, type GrabbableContextValue, type GrabbableEntry, type GrabbableTransform, type GrabResultTransform, } from './contexts/GrabbableContext';
18
19
  export { VoiceVolumeOverrideContext, VoiceVolumeOverrideProvider, useVoiceVolumeOverrideContext, createDefaultVoiceVolumeOverrideImplementation, type VoiceVolumeOverrideContextValue, AudioVolumeContext, AudioVolumeProvider, useAudioVolumeContext, createDefaultAudioVolumeImplementation, type AudioVolumeContextValue, } from './contexts/AudioVolumeContext';
19
20
  export { Interactable, type InteractableProps, } from './components/Interactable';
@@ -44,6 +45,9 @@ export { useWorld } from './hooks/useWorld';
44
45
  export { useInstanceEvent } from './hooks/useInstanceEvent';
45
46
  export { useSharedFile } from './hooks/useSharedFile';
46
47
  export { useWorldStorage } from './hooks/useWorldStorage';
48
+ export { useServerClock, type UseServerClockResult } from './hooks/useServerClock';
49
+ export { computeTargetTime, decideVideoSyncAction, isTimeBuffered, type VideoSyncAction, } from './components/VideoScreen/utils';
50
+ export { SYNC_DEAD_BAND, SYNC_RATE_ADJUSTMENT, SYNC_RATE_LIMIT, } from './components/VideoScreen/constants';
47
51
  export { useVoiceVolumeOverride, useAudioVolume } from './hooks/useAudioVolume';
48
52
  export { useDefaultFont, type FontLocale } from './hooks/useDefaultFont';
49
53
  export { LAYERS, type LayerName, type LayerNumber } from './constants/layers';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ export { PlacementStateProvider, usePlacementState, } from './contexts/Placement
15
15
  export { ItemProvider, useItem, } from './contexts/ItemContext';
16
16
  export { SharedFileContext, SharedFileProvider, useSharedFileContext, createDefaultSharedFileImplementation, } from './contexts/SharedFileContext';
17
17
  export { WorldStorageContext, WorldStorageProvider, useWorldStorageContext, createDefaultWorldStorageImplementation, WorldStorageError, WORLD_STORAGE_KEY_PATTERN, WORLD_STORAGE_LIMITS, isValidWorldStorageKey, getWorldStorageEntrySize, incrementWorldStorageValue, } from './contexts/WorldStorageContext';
18
+ export { ServerClockContext, ServerClockProvider, useServerClockContext, createDefaultServerClockImplementation, isServerClockAccurateEnough, SERVER_CLOCK_ACCURACY_THRESHOLD, } from './contexts/ServerClockContext';
18
19
  export { GrabbableContext, GrabbableProvider, useGrabbableContext, createDefaultGrabbableImplementation, } from './contexts/GrabbableContext';
19
20
  export { VoiceVolumeOverrideContext, VoiceVolumeOverrideProvider, useVoiceVolumeOverrideContext, createDefaultVoiceVolumeOverrideImplementation,
20
21
  // Deprecated aliases
@@ -48,6 +49,9 @@ export { useWorld } from './hooks/useWorld';
48
49
  export { useInstanceEvent } from './hooks/useInstanceEvent';
49
50
  export { useSharedFile } from './hooks/useSharedFile';
50
51
  export { useWorldStorage } from './hooks/useWorldStorage';
52
+ export { useServerClock } from './hooks/useServerClock';
53
+ export { computeTargetTime, decideVideoSyncAction, isTimeBuffered, } from './components/VideoScreen/utils';
54
+ export { SYNC_DEAD_BAND, SYNC_RATE_ADJUSTMENT, SYNC_RATE_LIMIT, } from './components/VideoScreen/constants';
51
55
  export { useVoiceVolumeOverride, useAudioVolume } from './hooks/useAudioVolume';
52
56
  export { useDefaultFont } from './hooks/useDefaultFont';
53
57
  // Constants
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xrift/world-components",
3
- "version": "0.46.0",
3
+ "version": "0.49.0",
4
4
  "description": "Shared components and utilities for Xrift worlds",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -8,10 +8,11 @@
8
8
  "dist"
9
9
  ],
10
10
  "scripts": {
11
- "build": "tsc",
11
+ "build": "tsc -p tsconfig.build.json",
12
12
  "dev": "vite",
13
- "dev:build": "tsc --watch",
13
+ "dev:build": "tsc -p tsconfig.build.json --watch",
14
14
  "test": "vitest run",
15
+ "typecheck": "tsc --noEmit",
15
16
  "test:watch": "vitest",
16
17
  "prepublishOnly": "npm run build"
17
18
  },
@@ -37,7 +38,7 @@
37
38
  "@react-three/rapier": "^2.0.0",
38
39
  "@react-three/uikit": "^1.0.0",
39
40
  "hls.js": "^1.5.0",
40
- "react": "^18.0.0 || ^19.0.0",
41
+ "react": "^19.0.0",
41
42
  "three": ">=0.176.0"
42
43
  },
43
44
  "peerDependenciesMeta": {
@@ -57,7 +58,8 @@
57
58
  "@react-three/rapier": "^2.2.0",
58
59
  "@react-three/uikit": "^1.0.62",
59
60
  "@triplex/api": "^0.1.4",
60
- "@types/react": "^18.3.12",
61
+ "@types/react": "^19.2.18",
62
+ "@types/react-dom": "^19.2.7",
61
63
  "@types/three": "^0.185.0",
62
64
  "@vitejs/plugin-react": "^6.0.1",
63
65
  "jsdom": "^28.0.0",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=utils.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../../src/components/BillboardY/__tests__/utils.test.ts"],"names":[],"mappings":""}
@@ -1,45 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { Vector3 } from 'three';
3
- import { getBillboardYRotation } from '../utils';
4
- describe('getBillboardYRotation', () => {
5
- it('カメラが正面(+Z方向)にある場合、回転角度が0になる', () => {
6
- const cameraPos = new Vector3(0, 0, 5);
7
- const targetPos = new Vector3(0, 0, 0);
8
- const rotation = getBillboardYRotation(cameraPos, targetPos);
9
- expect(rotation).toBeCloseTo(0);
10
- });
11
- it('カメラが背面(-Z方向)にある場合、回転角度がπになる', () => {
12
- const cameraPos = new Vector3(0, 0, -5);
13
- const targetPos = new Vector3(0, 0, 0);
14
- const rotation = getBillboardYRotation(cameraPos, targetPos);
15
- expect(rotation).toBeCloseTo(Math.PI);
16
- });
17
- it('カメラが右側(+X方向)にある場合、回転角度がπ/2になる', () => {
18
- const cameraPos = new Vector3(5, 0, 0);
19
- const targetPos = new Vector3(0, 0, 0);
20
- const rotation = getBillboardYRotation(cameraPos, targetPos);
21
- expect(rotation).toBeCloseTo(Math.PI / 2);
22
- });
23
- it('カメラが左側(-X方向)にある場合、回転角度が-π/2になる', () => {
24
- const cameraPos = new Vector3(-5, 0, 0);
25
- const targetPos = new Vector3(0, 0, 0);
26
- const rotation = getBillboardYRotation(cameraPos, targetPos);
27
- expect(rotation).toBeCloseTo(-Math.PI / 2);
28
- });
29
- it('Y座標の差は回転角度に影響しない', () => {
30
- const cameraPos1 = new Vector3(3, 0, 4);
31
- const cameraPos2 = new Vector3(3, 100, 4);
32
- const targetPos = new Vector3(0, 0, 0);
33
- const rotation1 = getBillboardYRotation(cameraPos1, targetPos);
34
- const rotation2 = getBillboardYRotation(cameraPos2, targetPos);
35
- expect(rotation1).toBeCloseTo(rotation2);
36
- });
37
- it('ターゲットが原点以外でも正しく計算できる', () => {
38
- const cameraPos = new Vector3(10, 5, 10);
39
- const targetPos = new Vector3(10, 0, 5);
40
- const rotation = getBillboardYRotation(cameraPos, targetPos);
41
- // dx=0, dz=5 → atan2(0, 5) = 0
42
- expect(rotation).toBeCloseTo(0);
43
- });
44
- });
45
- //# sourceMappingURL=utils.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../src/components/BillboardY/__tests__/utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEhD,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC5D,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACvC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC5D,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC5D,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACvC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC5D,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACvC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QACzC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,MAAM,SAAS,GAAG,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QAC9D,MAAM,SAAS,GAAG,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QAC9D,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACvC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC5D,+BAA+B;QAC/B,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=utils.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../../src/components/DevEnvironment/__tests__/utils.test.ts"],"names":[],"mappings":""}
@@ -1,24 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { FloatType, HalfFloatType, UnsignedByteType } from 'three';
3
- import { toThreeOutputBufferType } from '../utils';
4
- describe('toThreeOutputBufferType', () => {
5
- it('HalfFloatType 文字列を Three.js の HalfFloatType に変換する', () => {
6
- expect(toThreeOutputBufferType('HalfFloatType')).toBe(HalfFloatType);
7
- });
8
- it('FloatType 文字列を Three.js の FloatType に変換する', () => {
9
- expect(toThreeOutputBufferType('FloatType')).toBe(FloatType);
10
- });
11
- it('UnsignedByteType 文字列を Three.js の UnsignedByteType に変換する', () => {
12
- expect(toThreeOutputBufferType('UnsignedByteType')).toBe(UnsignedByteType);
13
- });
14
- it('null の場合は undefined を返す', () => {
15
- expect(toThreeOutputBufferType(null)).toBeUndefined();
16
- });
17
- it('undefined の場合は undefined を返す', () => {
18
- expect(toThreeOutputBufferType(undefined)).toBeUndefined();
19
- });
20
- it('未知の文字列の場合は undefined を返す', () => {
21
- expect(toThreeOutputBufferType('InvalidType')).toBeUndefined();
22
- });
23
- });
24
- //# sourceMappingURL=utils.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../src/components/DevEnvironment/__tests__/utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAElD,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAC5E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IAC5D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=store.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.test.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DevEnvironment/components/GrabSystem/__tests__/store.test.ts"],"names":[],"mappings":""}
@@ -1,114 +0,0 @@
1
- import { describe, expect, it, vi } from 'vitest';
2
- import { MAX_HOLD_DISTANCE, MIN_HOLD_DISTANCE } from '../constants';
3
- import { createDevGrabStore } from '../store';
4
- const createEntry = (overrides = {}) => ({
5
- renderGhost: () => null,
6
- onMove: () => { },
7
- getTransform: () => ({
8
- position: { x: 0, y: 1, z: -3 },
9
- rotation: { x: 0, y: 0.5, z: 0 },
10
- scale: 2,
11
- }),
12
- ...overrides,
13
- });
14
- describe('createDevGrabStore', () => {
15
- it('登録した対象を掴むと holding になり、掴んだ時点の姿勢を保持する', () => {
16
- const store = createDevGrabStore();
17
- store.contextValue.registerGrabbable('box', createEntry());
18
- store.grab('box', { x: 0, y: 1, z: 0 });
19
- const state = store.getState();
20
- expect(state.phase).toBe('holding');
21
- expect(state.grabbedId).toBe('box');
22
- expect(state.holdDistance).toBeCloseTo(3);
23
- expect(state.heldRotation).toEqual({ x: 0, y: 0.5, z: 0 });
24
- expect(state.heldScale).toBe(2);
25
- });
26
- it('未登録の ID を掴もうとしても idle のまま', () => {
27
- const store = createDevGrabStore();
28
- store.grab('unknown', { x: 0, y: 0, z: 0 });
29
- expect(store.getState().phase).toBe('idle');
30
- });
31
- it('掴み距離は MIN/MAX に丸められる', () => {
32
- const store = createDevGrabStore();
33
- store.contextValue.registerGrabbable('near', createEntry({
34
- getTransform: () => ({
35
- position: { x: 0, y: 0, z: -0.1 },
36
- rotation: { x: 0, y: 0, z: 0 },
37
- scale: 1,
38
- }),
39
- }));
40
- store.grab('near', { x: 0, y: 0, z: 0 });
41
- expect(store.getState().holdDistance).toBe(MIN_HOLD_DISTANCE);
42
- });
43
- it('adjustHoldDistance は holding 中のみ動作し clamp される', () => {
44
- const store = createDevGrabStore();
45
- store.contextValue.registerGrabbable('box', createEntry());
46
- store.adjustHoldDistance(1);
47
- expect(store.getState().holdDistance).toBe(0);
48
- store.grab('box', { x: 0, y: 1, z: 0 });
49
- store.adjustHoldDistance(100);
50
- expect(store.getState().holdDistance).toBe(MAX_HOLD_DISTANCE);
51
- store.adjustHoldDistance(-100);
52
- expect(store.getState().holdDistance).toBe(MIN_HOLD_DISTANCE);
53
- });
54
- it('release で最後の heldPosition と掴んだ時点の回転が onMove に渡り idle に戻る', () => {
55
- const onMove = vi.fn();
56
- const store = createDevGrabStore();
57
- store.contextValue.registerGrabbable('box', createEntry({ onMove }));
58
- store.grab('box', { x: 0, y: 1, z: 0 });
59
- store.updateHeldPosition({ x: 5, y: 2, z: -1 });
60
- store.release();
61
- expect(onMove).toHaveBeenCalledWith({
62
- position: { x: 5, y: 2, z: -1 },
63
- rotation: { x: 0, y: 0.5, z: 0 },
64
- });
65
- expect(store.getState().phase).toBe('idle');
66
- expect(store.getState().grabbedId).toBeNull();
67
- });
68
- it('cancel は onMove を呼ばずに idle に戻る', () => {
69
- const onMove = vi.fn();
70
- const store = createDevGrabStore();
71
- store.contextValue.registerGrabbable('box', createEntry({ onMove }));
72
- store.grab('box', { x: 0, y: 1, z: 0 });
73
- store.cancel();
74
- expect(onMove).not.toHaveBeenCalled();
75
- expect(store.getState().phase).toBe('idle');
76
- });
77
- it('holding 中は別の対象を掴めない', () => {
78
- const store = createDevGrabStore();
79
- store.contextValue.registerGrabbable('a', createEntry());
80
- store.contextValue.registerGrabbable('b', createEntry());
81
- store.grab('a', { x: 0, y: 1, z: 0 });
82
- store.grab('b', { x: 0, y: 1, z: 0 });
83
- expect(store.getState().grabbedId).toBe('a');
84
- });
85
- it('掴み中の対象が登録解除されたら idle に戻る', () => {
86
- const store = createDevGrabStore();
87
- store.contextValue.registerGrabbable('box', createEntry());
88
- store.grab('box', { x: 0, y: 1, z: 0 });
89
- store.contextValue.unregisterGrabbable('box');
90
- expect(store.getState().phase).toBe('idle');
91
- expect(store.getState().grabbedId).toBeNull();
92
- });
93
- it('ホバー中の対象が登録解除されたら hoveredId が消える', () => {
94
- const store = createDevGrabStore();
95
- store.contextValue.registerGrabbable('box', createEntry());
96
- store.setHovered('box');
97
- store.contextValue.unregisterGrabbable('box');
98
- expect(store.getState().hoveredId).toBeNull();
99
- });
100
- it('subscribeGrabbedId のリスナーが掴み/離しで呼ばれる', () => {
101
- const listener = vi.fn();
102
- const store = createDevGrabStore();
103
- store.contextValue.registerGrabbable('box', createEntry());
104
- const unsubscribe = store.contextValue.subscribeGrabbedId(listener);
105
- store.grab('box', { x: 0, y: 1, z: 0 });
106
- expect(listener).toHaveBeenCalledTimes(1);
107
- store.release();
108
- expect(listener).toHaveBeenCalledTimes(2);
109
- unsubscribe();
110
- store.grab('box', { x: 0, y: 1, z: 0 });
111
- expect(listener).toHaveBeenCalledTimes(2);
112
- });
113
- });
114
- //# sourceMappingURL=store.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.test.js","sourceRoot":"","sources":["../../../../../../src/components/DevEnvironment/components/GrabSystem/__tests__/store.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=utils.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.ts"],"names":[],"mappings":""}
@@ -1,103 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { Object3D, Quaternion, Vector3 } from 'three';
3
- import { GRABBABLE_USER_DATA_KEY } from '../../../../Grabbable/constants';
4
- import { MAX_ANCESTOR_DEPTH, MAX_HOLD_DISTANCE, MIN_HOLD_DISTANCE } from '../constants';
5
- import { clampHoldDistance, computeHeldPosition, distanceBetween, findFirstGrabbableId, findGrabbableId, } from '../utils';
6
- describe('clampHoldDistance', () => {
7
- it('範囲内の距離はそのまま返す', () => {
8
- expect(clampHoldDistance(3)).toBe(3);
9
- });
10
- it('最小距離未満は MIN_HOLD_DISTANCE に丸める', () => {
11
- expect(clampHoldDistance(0.2)).toBe(MIN_HOLD_DISTANCE);
12
- });
13
- it('最大距離超過は MAX_HOLD_DISTANCE に丸める', () => {
14
- expect(clampHoldDistance(99)).toBe(MAX_HOLD_DISTANCE);
15
- });
16
- });
17
- describe('distanceBetween', () => {
18
- it('2点間の距離を返す', () => {
19
- expect(distanceBetween({ x: 0, y: 0, z: 0 }, { x: 3, y: 4, z: 0 })).toBeCloseTo(5);
20
- });
21
- it('同一点は 0 を返す', () => {
22
- expect(distanceBetween({ x: 1, y: 2, z: 3 }, { x: 1, y: 2, z: 3 })).toBeCloseTo(0);
23
- });
24
- });
25
- describe('computeHeldPosition', () => {
26
- it('無回転なら前方(-Z)distance の位置を返す', () => {
27
- const q = { x: 0, y: 0, z: 0, w: 1 };
28
- const result = computeHeldPosition({ x: 1, y: 2, z: 3 }, q, 2);
29
- expect(result.x).toBeCloseTo(1);
30
- expect(result.y).toBeCloseTo(2);
31
- expect(result.z).toBeCloseTo(1);
32
- });
33
- it('three.js の applyQuaternion と同じ結果になる', () => {
34
- const quaternions = [
35
- new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), Math.PI / 2),
36
- new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), -Math.PI / 4),
37
- new Quaternion().setFromAxisAngle(new Vector3(1, 2, 3).normalize(), 1.23),
38
- ];
39
- const cameraPosition = { x: -2, y: 1.6, z: 5 };
40
- const distance = 3.5;
41
- for (const q of quaternions) {
42
- const expected = new Vector3(0, 0, -1)
43
- .applyQuaternion(q)
44
- .multiplyScalar(distance)
45
- .add(new Vector3(cameraPosition.x, cameraPosition.y, cameraPosition.z));
46
- const result = computeHeldPosition(cameraPosition, q, distance);
47
- expect(result.x).toBeCloseTo(expected.x);
48
- expect(result.y).toBeCloseTo(expected.y);
49
- expect(result.z).toBeCloseTo(expected.z);
50
- }
51
- });
52
- });
53
- describe('findGrabbableId', () => {
54
- it('自身の userData から ID を見つける', () => {
55
- const obj = new Object3D();
56
- obj.userData[GRABBABLE_USER_DATA_KEY] = 'target-1';
57
- expect(findGrabbableId(obj)).toBe('target-1');
58
- });
59
- it('親を辿って ID を見つける', () => {
60
- const root = new Object3D();
61
- root.userData[GRABBABLE_USER_DATA_KEY] = 'target-2';
62
- const middle = new Object3D();
63
- const leaf = new Object3D();
64
- root.add(middle);
65
- middle.add(leaf);
66
- expect(findGrabbableId(leaf)).toBe('target-2');
67
- });
68
- it('ID が無ければ null を返す', () => {
69
- expect(findGrabbableId(new Object3D())).toBeNull();
70
- expect(findGrabbableId(null)).toBeNull();
71
- });
72
- it('最大親階層を超える探索はしない', () => {
73
- const root = new Object3D();
74
- root.userData[GRABBABLE_USER_DATA_KEY] = 'too-deep';
75
- let current = root;
76
- for (let i = 0; i < MAX_ANCESTOR_DEPTH; i++) {
77
- const child = new Object3D();
78
- current.add(child);
79
- current = child;
80
- }
81
- expect(findGrabbableId(current)).toBeNull();
82
- });
83
- });
84
- describe('findFirstGrabbableId', () => {
85
- it('手前から順に走査して最初の ID を返す', () => {
86
- const plain = new Object3D();
87
- const grabbable = new Object3D();
88
- grabbable.userData[GRABBABLE_USER_DATA_KEY] = 'first';
89
- const another = new Object3D();
90
- another.userData[GRABBABLE_USER_DATA_KEY] = 'second';
91
- const result = findFirstGrabbableId([
92
- { object: plain },
93
- { object: grabbable },
94
- { object: another },
95
- ]);
96
- expect(result).toBe('first');
97
- });
98
- it('掴める対象が無ければ null を返す', () => {
99
- expect(findFirstGrabbableId([{ object: new Object3D() }])).toBeNull();
100
- expect(findFirstGrabbableId([])).toBeNull();
101
- });
102
- });
103
- //# sourceMappingURL=utils.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../../../src/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=utils.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../../src/components/EntryLogBoard/__tests__/utils.test.ts"],"names":[],"mappings":""}