@reactvision/react-viro 2.42.0 → 2.43.1

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 (475) hide show
  1. package/README.md +12 -6
  2. package/android/react_viro/react_viro-release.aar +0 -0
  3. package/components/AR/ViroARPlaneSelector.tsx +76 -37
  4. package/components/Utilities/ViroVersion.ts +1 -1
  5. package/dist/components/AR/ViroARPlaneSelector.d.ts +1 -1
  6. package/dist/components/AR/ViroARPlaneSelector.js +46 -18
  7. package/dist/components/Utilities/ViroVersion.d.ts +1 -1
  8. package/dist/components/Utilities/ViroVersion.js +1 -1
  9. package/dist/dynamic-index.d.ts +11 -0
  10. package/dist/dynamic-index.js +28 -0
  11. package/dist/examples/AutoDetectionExample.d.ts +10 -0
  12. package/dist/examples/AutoDetectionExample.js +91 -0
  13. package/dist/fabric-interop/NativeViro.d.ts +42 -0
  14. package/dist/fabric-interop/NativeViro.js +262 -0
  15. package/dist/fabric-interop/ViroEventsManager.d.ts +83 -0
  16. package/dist/fabric-interop/ViroEventsManager.js +222 -0
  17. package/dist/fabric-interop/ViroFabricContainer.d.ts +34 -0
  18. package/dist/fabric-interop/ViroFabricContainer.js +200 -0
  19. package/dist/fabric-interop/android/src/main/js/specs/ViroFabricContainerViewNativeComponent.d.ts +35 -0
  20. package/dist/fabric-interop/android/src/main/js/specs/ViroFabricContainerViewNativeComponent.js +20 -0
  21. package/dist/fabric-interop/components/AR/ViroARPlane.d.ts +22 -0
  22. package/dist/fabric-interop/components/AR/ViroARPlane.js +95 -0
  23. package/dist/fabric-interop/components/AR/ViroARPlaneSelector.d.ts +43 -0
  24. package/dist/fabric-interop/components/AR/ViroARPlaneSelector.js +152 -0
  25. package/dist/fabric-interop/components/AR/ViroARTrackingTargets.d.ts +55 -0
  26. package/dist/fabric-interop/components/AR/ViroARTrackingTargets.js +85 -0
  27. package/dist/fabric-interop/components/AR/ViroCommonProps.d.ts +91 -0
  28. package/dist/fabric-interop/components/AR/ViroCommonProps.js +7 -0
  29. package/dist/fabric-interop/components/Animation/ViroAnimations.d.ts +48 -0
  30. package/dist/fabric-interop/components/Animation/ViroAnimations.js +64 -0
  31. package/dist/fabric-interop/components/Material/ViroMaterials.d.ts +66 -0
  32. package/dist/fabric-interop/components/Material/ViroMaterials.js +85 -0
  33. package/dist/fabric-interop/components/Types/ViroEvents.d.ts +202 -0
  34. package/dist/fabric-interop/components/Types/ViroEvents.js +53 -0
  35. package/dist/fabric-interop/components/Types/ViroUtils.d.ts +137 -0
  36. package/dist/fabric-interop/components/Types/ViroUtils.js +7 -0
  37. package/dist/fabric-interop/components/Viro360Image.d.ts +23 -0
  38. package/dist/fabric-interop/components/Viro360Image.js +45 -0
  39. package/dist/fabric-interop/components/Viro360Video.d.ts +29 -0
  40. package/dist/fabric-interop/components/Viro360Video.js +47 -0
  41. package/dist/fabric-interop/components/Viro3DObject.d.ts +60 -0
  42. package/dist/fabric-interop/components/Viro3DObject.js +49 -0
  43. package/dist/fabric-interop/components/Viro3DSceneNavigator.d.ts +49 -0
  44. package/dist/fabric-interop/components/Viro3DSceneNavigator.js +388 -0
  45. package/dist/fabric-interop/components/ViroARCamera.d.ts +29 -0
  46. package/dist/fabric-interop/components/ViroARCamera.js +64 -0
  47. package/dist/fabric-interop/components/ViroARImageMarker.d.ts +21 -0
  48. package/dist/fabric-interop/components/ViroARImageMarker.js +71 -0
  49. package/dist/fabric-interop/components/ViroARObjectMarker.d.ts +21 -0
  50. package/dist/fabric-interop/components/ViroARObjectMarker.js +71 -0
  51. package/dist/fabric-interop/components/ViroARPlane.d.ts +24 -0
  52. package/dist/fabric-interop/components/ViroARPlane.js +88 -0
  53. package/dist/fabric-interop/components/ViroARScene.d.ts +29 -0
  54. package/dist/fabric-interop/components/ViroARScene.js +89 -0
  55. package/dist/fabric-interop/components/ViroARSceneNavigator.d.ts +29 -0
  56. package/dist/fabric-interop/components/ViroARSceneNavigator.js +76 -0
  57. package/dist/fabric-interop/components/ViroAmbientLight.d.ts +19 -0
  58. package/dist/fabric-interop/components/ViroAmbientLight.js +46 -0
  59. package/dist/fabric-interop/components/ViroAnimatedComponent.d.ts +24 -0
  60. package/dist/fabric-interop/components/ViroAnimatedComponent.js +63 -0
  61. package/dist/fabric-interop/components/ViroAnimatedImage.d.ts +28 -0
  62. package/dist/fabric-interop/components/ViroAnimatedImage.js +49 -0
  63. package/dist/fabric-interop/components/ViroBox.d.ts +20 -0
  64. package/dist/fabric-interop/components/ViroBox.js +47 -0
  65. package/dist/fabric-interop/components/ViroButton.d.ts +32 -0
  66. package/dist/fabric-interop/components/ViroButton.js +92 -0
  67. package/dist/fabric-interop/components/ViroCamera.d.ts +17 -0
  68. package/dist/fabric-interop/components/ViroCamera.js +30 -0
  69. package/dist/fabric-interop/components/ViroController.d.ts +19 -0
  70. package/dist/fabric-interop/components/ViroController.js +64 -0
  71. package/dist/fabric-interop/components/ViroDirectionalLight.d.ts +28 -0
  72. package/dist/fabric-interop/components/ViroDirectionalLight.js +55 -0
  73. package/dist/fabric-interop/components/ViroFlexView.d.ts +36 -0
  74. package/dist/fabric-interop/components/ViroFlexView.js +97 -0
  75. package/dist/fabric-interop/components/ViroGeometry.d.ts +23 -0
  76. package/dist/fabric-interop/components/ViroGeometry.js +50 -0
  77. package/dist/fabric-interop/components/ViroGlobal.d.ts +45 -0
  78. package/dist/fabric-interop/components/ViroGlobal.js +20 -0
  79. package/dist/fabric-interop/components/ViroImage.d.ts +29 -0
  80. package/dist/fabric-interop/components/ViroImage.js +52 -0
  81. package/dist/fabric-interop/components/ViroLightingEnvironment.d.ts +19 -0
  82. package/dist/fabric-interop/components/ViroLightingEnvironment.js +44 -0
  83. package/dist/fabric-interop/components/ViroMaterialVideo.d.ts +30 -0
  84. package/dist/fabric-interop/components/ViroMaterialVideo.js +48 -0
  85. package/dist/fabric-interop/components/ViroNode.d.ts +36 -0
  86. package/dist/fabric-interop/components/ViroNode.js +28 -0
  87. package/dist/fabric-interop/components/ViroOmniLight.d.ts +21 -0
  88. package/dist/fabric-interop/components/ViroOmniLight.js +48 -0
  89. package/dist/fabric-interop/components/ViroOrbitCamera.d.ts +17 -0
  90. package/dist/fabric-interop/components/ViroOrbitCamera.js +30 -0
  91. package/dist/fabric-interop/components/ViroParticleEmitter.d.ts +51 -0
  92. package/dist/fabric-interop/components/ViroParticleEmitter.js +50 -0
  93. package/dist/fabric-interop/components/ViroPolygon.d.ts +20 -0
  94. package/dist/fabric-interop/components/ViroPolygon.js +47 -0
  95. package/dist/fabric-interop/components/ViroPolyline.d.ts +19 -0
  96. package/dist/fabric-interop/components/ViroPolyline.js +46 -0
  97. package/dist/fabric-interop/components/ViroPortal.d.ts +16 -0
  98. package/dist/fabric-interop/components/ViroPortal.js +73 -0
  99. package/dist/fabric-interop/components/ViroPortalScene.d.ts +16 -0
  100. package/dist/fabric-interop/components/ViroPortalScene.js +29 -0
  101. package/dist/fabric-interop/components/ViroQuad.d.ts +39 -0
  102. package/dist/fabric-interop/components/ViroQuad.js +49 -0
  103. package/dist/fabric-interop/components/ViroScene.d.ts +29 -0
  104. package/dist/fabric-interop/components/ViroScene.js +103 -0
  105. package/dist/fabric-interop/components/ViroSceneNavigator.d.ts +23 -0
  106. package/dist/fabric-interop/components/ViroSceneNavigator.js +73 -0
  107. package/dist/fabric-interop/components/ViroSkyBox.d.ts +39 -0
  108. package/dist/fabric-interop/components/ViroSkyBox.js +44 -0
  109. package/dist/fabric-interop/components/ViroSound.d.ts +23 -0
  110. package/dist/fabric-interop/components/ViroSound.js +46 -0
  111. package/dist/fabric-interop/components/ViroSoundField.d.ts +24 -0
  112. package/dist/fabric-interop/components/ViroSoundField.js +47 -0
  113. package/dist/fabric-interop/components/ViroSpatialSound.d.ts +27 -0
  114. package/dist/fabric-interop/components/ViroSpatialSound.js +50 -0
  115. package/dist/fabric-interop/components/ViroSphere.d.ts +22 -0
  116. package/dist/fabric-interop/components/ViroSphere.js +49 -0
  117. package/dist/fabric-interop/components/ViroSpinner.d.ts +18 -0
  118. package/dist/fabric-interop/components/ViroSpinner.js +45 -0
  119. package/dist/fabric-interop/components/ViroSpotLight.d.ts +30 -0
  120. package/dist/fabric-interop/components/ViroSpotLight.js +57 -0
  121. package/dist/fabric-interop/components/ViroSurface.d.ts +38 -0
  122. package/dist/fabric-interop/components/ViroSurface.js +48 -0
  123. package/dist/fabric-interop/components/ViroText.d.ts +36 -0
  124. package/dist/fabric-interop/components/ViroText.js +59 -0
  125. package/dist/fabric-interop/components/ViroUtils.d.ts +63 -0
  126. package/dist/fabric-interop/components/ViroUtils.js +140 -0
  127. package/dist/fabric-interop/components/ViroVRSceneNavigator.d.ts +25 -0
  128. package/dist/fabric-interop/components/ViroVRSceneNavigator.js +73 -0
  129. package/dist/fabric-interop/components/ViroVideo.d.ts +32 -0
  130. package/dist/fabric-interop/components/ViroVideo.js +52 -0
  131. package/dist/fabric-interop/components/index.d.ts +62 -0
  132. package/dist/fabric-interop/components/index.js +144 -0
  133. package/dist/fabric-interop/examples/BasicSceneExample.d.ts +11 -0
  134. package/dist/fabric-interop/examples/BasicSceneExample.js +244 -0
  135. package/dist/fabric-interop/examples/ComprehensiveExample.d.ts +13 -0
  136. package/dist/fabric-interop/examples/ComprehensiveExample.js +327 -0
  137. package/dist/fabric-interop/examples/SimpleARExample.d.ts +8 -0
  138. package/dist/fabric-interop/examples/SimpleARExample.js +62 -0
  139. package/dist/fabric-interop/index.d.ts +14 -0
  140. package/dist/fabric-interop/index.js +117 -0
  141. package/dist/fabric-interop/specs/ViroEventsTurboModule.d.ts +19 -0
  142. package/dist/fabric-interop/specs/ViroEventsTurboModule.js +11 -0
  143. package/dist/fabric-interop/test/BasicFunctionalityTest.d.ts +9 -0
  144. package/dist/fabric-interop/test/BasicFunctionalityTest.js +222 -0
  145. package/dist/fabric.d.ts +13 -0
  146. package/dist/fabric.js +29 -0
  147. package/dist/plugins/withViro.d.ts +3 -0
  148. package/dist/plugins/withViro.js +19 -0
  149. package/dist/plugins/withViroAndroid.js +24 -20
  150. package/dist/plugins/withViroIos.js +20 -2
  151. package/dynamic-index-source.d.ts +77 -0
  152. package/dynamic-index.ts +41 -0
  153. package/fabric-interop/NativeViro.ts +335 -0
  154. package/fabric-interop/README.md +282 -0
  155. package/fabric-interop/ViroEventsManager.js +257 -0
  156. package/fabric-interop/ViroFabricContainer.tsx +273 -0
  157. package/fabric-interop/components/AR/ViroARPlane.tsx +108 -0
  158. package/fabric-interop/components/AR/ViroARPlaneSelector.tsx +185 -0
  159. package/fabric-interop/components/AR/ViroARTrackingTargets.ts +108 -0
  160. package/fabric-interop/components/AR/ViroCommonProps.ts +140 -0
  161. package/fabric-interop/components/Animation/ViroAnimations.ts +96 -0
  162. package/fabric-interop/components/Material/ViroMaterials.ts +127 -0
  163. package/fabric-interop/components/Resources/viro_spinner_1.png +0 -0
  164. package/fabric-interop/components/Resources/viro_spinner_1_w.png +0 -0
  165. package/fabric-interop/components/Resources/viro_spinner_1a.png +0 -0
  166. package/fabric-interop/components/Resources/viro_spinner_1a_w.png +0 -0
  167. package/fabric-interop/components/Types/ViroEvents.ts +285 -0
  168. package/fabric-interop/components/Types/ViroUtils.ts +160 -0
  169. package/fabric-interop/components/Viro360Image.tsx +70 -0
  170. package/fabric-interop/components/Viro360Video.tsx +78 -0
  171. package/fabric-interop/components/Viro3DObject.tsx +122 -0
  172. package/fabric-interop/components/Viro3DSceneNavigator.tsx +503 -0
  173. package/fabric-interop/components/ViroARCamera.tsx +105 -0
  174. package/fabric-interop/components/ViroARImageMarker.tsx +98 -0
  175. package/fabric-interop/components/ViroARObjectMarker.tsx +100 -0
  176. package/fabric-interop/components/ViroARPlane.tsx +120 -0
  177. package/fabric-interop/components/ViroARScene.tsx +127 -0
  178. package/fabric-interop/components/ViroARSceneNavigator.tsx +82 -0
  179. package/fabric-interop/components/ViroAmbientLight.tsx +62 -0
  180. package/fabric-interop/components/ViroAnimatedComponent.tsx +91 -0
  181. package/fabric-interop/components/ViroAnimatedImage.tsx +81 -0
  182. package/fabric-interop/components/ViroBox.tsx +72 -0
  183. package/fabric-interop/components/ViroButton.tsx +125 -0
  184. package/fabric-interop/components/ViroCamera.tsx +45 -0
  185. package/fabric-interop/components/ViroController.tsx +87 -0
  186. package/fabric-interop/components/ViroDirectionalLight.tsx +84 -0
  187. package/fabric-interop/components/ViroFlexView.tsx +146 -0
  188. package/fabric-interop/components/ViroGeometry.tsx +78 -0
  189. package/fabric-interop/components/ViroGlobal.ts +114 -0
  190. package/fabric-interop/components/ViroImage.tsx +85 -0
  191. package/fabric-interop/components/ViroLightingEnvironment.tsx +63 -0
  192. package/fabric-interop/components/ViroMaterialVideo.tsx +82 -0
  193. package/fabric-interop/components/ViroNode.tsx +62 -0
  194. package/fabric-interop/components/ViroOmniLight.tsx +66 -0
  195. package/fabric-interop/components/ViroOrbitCamera.tsx +45 -0
  196. package/fabric-interop/components/ViroParticleEmitter.tsx +111 -0
  197. package/fabric-interop/components/ViroPolygon.tsx +72 -0
  198. package/fabric-interop/components/ViroPolyline.tsx +71 -0
  199. package/fabric-interop/components/ViroPortal.tsx +91 -0
  200. package/fabric-interop/components/ViroPortalScene.tsx +43 -0
  201. package/fabric-interop/components/ViroQuad.tsx +82 -0
  202. package/fabric-interop/components/ViroScene.tsx +117 -0
  203. package/fabric-interop/components/ViroSceneNavigator.tsx +71 -0
  204. package/fabric-interop/components/ViroSkyBox.tsx +75 -0
  205. package/fabric-interop/components/ViroSound.tsx +71 -0
  206. package/fabric-interop/components/ViroSoundField.tsx +75 -0
  207. package/fabric-interop/components/ViroSpatialSound.tsx +81 -0
  208. package/fabric-interop/components/ViroSphere.tsx +75 -0
  209. package/fabric-interop/components/ViroSpinner.tsx +63 -0
  210. package/fabric-interop/components/ViroSpotLight.tsx +86 -0
  211. package/fabric-interop/components/ViroSurface.tsx +80 -0
  212. package/fabric-interop/components/ViroText.tsx +114 -0
  213. package/fabric-interop/components/ViroUtils.ts +208 -0
  214. package/fabric-interop/components/ViroVRSceneNavigator.tsx +75 -0
  215. package/fabric-interop/components/ViroVideo.tsx +91 -0
  216. package/fabric-interop/components/index.ts +94 -0
  217. package/fabric-interop/dist/NativeViro.d.ts +43 -0
  218. package/fabric-interop/dist/NativeViro.d.ts.map +1 -0
  219. package/fabric-interop/dist/NativeViro.js +263 -0
  220. package/fabric-interop/dist/NativeViro.js.map +1 -0
  221. package/fabric-interop/dist/ViroFabricContainer.d.ts +35 -0
  222. package/fabric-interop/dist/ViroFabricContainer.d.ts.map +1 -0
  223. package/fabric-interop/dist/ViroFabricContainer.js +201 -0
  224. package/fabric-interop/dist/ViroFabricContainer.js.map +1 -0
  225. package/fabric-interop/dist/components/AR/ViroARPlane.d.ts +23 -0
  226. package/fabric-interop/dist/components/AR/ViroARPlane.d.ts.map +1 -0
  227. package/fabric-interop/dist/components/AR/ViroARPlane.js +96 -0
  228. package/fabric-interop/dist/components/AR/ViroARPlane.js.map +1 -0
  229. package/fabric-interop/dist/components/AR/ViroARPlaneSelector.d.ts +44 -0
  230. package/fabric-interop/dist/components/AR/ViroARPlaneSelector.d.ts.map +1 -0
  231. package/fabric-interop/dist/components/AR/ViroARPlaneSelector.js +156 -0
  232. package/fabric-interop/dist/components/AR/ViroARPlaneSelector.js.map +1 -0
  233. package/fabric-interop/dist/components/AR/ViroARTrackingTargets.d.ts +56 -0
  234. package/fabric-interop/dist/components/AR/ViroARTrackingTargets.d.ts.map +1 -0
  235. package/fabric-interop/dist/components/AR/ViroARTrackingTargets.js +86 -0
  236. package/fabric-interop/dist/components/AR/ViroARTrackingTargets.js.map +1 -0
  237. package/fabric-interop/dist/components/AR/ViroCommonProps.d.ts +92 -0
  238. package/fabric-interop/dist/components/AR/ViroCommonProps.d.ts.map +1 -0
  239. package/fabric-interop/dist/components/AR/ViroCommonProps.js +8 -0
  240. package/fabric-interop/dist/components/AR/ViroCommonProps.js.map +1 -0
  241. package/fabric-interop/dist/components/Animation/ViroAnimations.d.ts +49 -0
  242. package/fabric-interop/dist/components/Animation/ViroAnimations.d.ts.map +1 -0
  243. package/fabric-interop/dist/components/Animation/ViroAnimations.js +65 -0
  244. package/fabric-interop/dist/components/Animation/ViroAnimations.js.map +1 -0
  245. package/fabric-interop/dist/components/Material/ViroMaterials.d.ts +67 -0
  246. package/fabric-interop/dist/components/Material/ViroMaterials.d.ts.map +1 -0
  247. package/fabric-interop/dist/components/Material/ViroMaterials.js +86 -0
  248. package/fabric-interop/dist/components/Material/ViroMaterials.js.map +1 -0
  249. package/fabric-interop/dist/components/Types/ViroEvents.d.ts +203 -0
  250. package/fabric-interop/dist/components/Types/ViroEvents.d.ts.map +1 -0
  251. package/fabric-interop/dist/components/Types/ViroEvents.js +54 -0
  252. package/fabric-interop/dist/components/Types/ViroEvents.js.map +1 -0
  253. package/fabric-interop/dist/components/Types/ViroUtils.d.ts +138 -0
  254. package/fabric-interop/dist/components/Types/ViroUtils.d.ts.map +1 -0
  255. package/fabric-interop/dist/components/Types/ViroUtils.js +8 -0
  256. package/fabric-interop/dist/components/Types/ViroUtils.js.map +1 -0
  257. package/fabric-interop/dist/components/Viro360Image.d.ts +24 -0
  258. package/fabric-interop/dist/components/Viro360Image.d.ts.map +1 -0
  259. package/fabric-interop/dist/components/Viro360Image.js +47 -0
  260. package/fabric-interop/dist/components/Viro360Image.js.map +1 -0
  261. package/fabric-interop/dist/components/Viro360Video.d.ts +30 -0
  262. package/fabric-interop/dist/components/Viro360Video.d.ts.map +1 -0
  263. package/fabric-interop/dist/components/Viro360Video.js +49 -0
  264. package/fabric-interop/dist/components/Viro360Video.js.map +1 -0
  265. package/fabric-interop/dist/components/Viro3DObject.d.ts +61 -0
  266. package/fabric-interop/dist/components/Viro3DObject.d.ts.map +1 -0
  267. package/fabric-interop/dist/components/Viro3DObject.js +51 -0
  268. package/fabric-interop/dist/components/Viro3DObject.js.map +1 -0
  269. package/fabric-interop/dist/components/Viro3DSceneNavigator.d.ts +50 -0
  270. package/fabric-interop/dist/components/Viro3DSceneNavigator.d.ts.map +1 -0
  271. package/fabric-interop/dist/components/Viro3DSceneNavigator.js +389 -0
  272. package/fabric-interop/dist/components/Viro3DSceneNavigator.js.map +1 -0
  273. package/fabric-interop/dist/components/ViroARCamera.d.ts +30 -0
  274. package/fabric-interop/dist/components/ViroARCamera.d.ts.map +1 -0
  275. package/fabric-interop/dist/components/ViroARCamera.js +65 -0
  276. package/fabric-interop/dist/components/ViroARCamera.js.map +1 -0
  277. package/fabric-interop/dist/components/ViroARImageMarker.d.ts +22 -0
  278. package/fabric-interop/dist/components/ViroARImageMarker.d.ts.map +1 -0
  279. package/fabric-interop/dist/components/ViroARImageMarker.js +72 -0
  280. package/fabric-interop/dist/components/ViroARImageMarker.js.map +1 -0
  281. package/fabric-interop/dist/components/ViroARObjectMarker.d.ts +22 -0
  282. package/fabric-interop/dist/components/ViroARObjectMarker.d.ts.map +1 -0
  283. package/fabric-interop/dist/components/ViroARObjectMarker.js +72 -0
  284. package/fabric-interop/dist/components/ViroARObjectMarker.js.map +1 -0
  285. package/fabric-interop/dist/components/ViroARPlane.d.ts +25 -0
  286. package/fabric-interop/dist/components/ViroARPlane.d.ts.map +1 -0
  287. package/fabric-interop/dist/components/ViroARPlane.js +89 -0
  288. package/fabric-interop/dist/components/ViroARPlane.js.map +1 -0
  289. package/fabric-interop/dist/components/ViroARScene.d.ts +30 -0
  290. package/fabric-interop/dist/components/ViroARScene.d.ts.map +1 -0
  291. package/fabric-interop/dist/components/ViroARScene.js +90 -0
  292. package/fabric-interop/dist/components/ViroARScene.js.map +1 -0
  293. package/fabric-interop/dist/components/ViroARSceneNavigator.d.ts +30 -0
  294. package/fabric-interop/dist/components/ViroARSceneNavigator.d.ts.map +1 -0
  295. package/fabric-interop/dist/components/ViroARSceneNavigator.js +78 -0
  296. package/fabric-interop/dist/components/ViroARSceneNavigator.js.map +1 -0
  297. package/fabric-interop/dist/components/ViroAmbientLight.d.ts +20 -0
  298. package/fabric-interop/dist/components/ViroAmbientLight.d.ts.map +1 -0
  299. package/fabric-interop/dist/components/ViroAmbientLight.js +48 -0
  300. package/fabric-interop/dist/components/ViroAmbientLight.js.map +1 -0
  301. package/fabric-interop/dist/components/ViroAnimatedComponent.d.ts +25 -0
  302. package/fabric-interop/dist/components/ViroAnimatedComponent.d.ts.map +1 -0
  303. package/fabric-interop/dist/components/ViroAnimatedComponent.js +65 -0
  304. package/fabric-interop/dist/components/ViroAnimatedComponent.js.map +1 -0
  305. package/fabric-interop/dist/components/ViroAnimatedImage.d.ts +29 -0
  306. package/fabric-interop/dist/components/ViroAnimatedImage.d.ts.map +1 -0
  307. package/fabric-interop/dist/components/ViroAnimatedImage.js +51 -0
  308. package/fabric-interop/dist/components/ViroAnimatedImage.js.map +1 -0
  309. package/fabric-interop/dist/components/ViroBox.d.ts +21 -0
  310. package/fabric-interop/dist/components/ViroBox.d.ts.map +1 -0
  311. package/fabric-interop/dist/components/ViroBox.js +49 -0
  312. package/fabric-interop/dist/components/ViroBox.js.map +1 -0
  313. package/fabric-interop/dist/components/ViroButton.d.ts +33 -0
  314. package/fabric-interop/dist/components/ViroButton.d.ts.map +1 -0
  315. package/fabric-interop/dist/components/ViroButton.js +94 -0
  316. package/fabric-interop/dist/components/ViroButton.js.map +1 -0
  317. package/fabric-interop/dist/components/ViroCamera.d.ts +18 -0
  318. package/fabric-interop/dist/components/ViroCamera.d.ts.map +1 -0
  319. package/fabric-interop/dist/components/ViroCamera.js +31 -0
  320. package/fabric-interop/dist/components/ViroCamera.js.map +1 -0
  321. package/fabric-interop/dist/components/ViroController.d.ts +20 -0
  322. package/fabric-interop/dist/components/ViroController.d.ts.map +1 -0
  323. package/fabric-interop/dist/components/ViroController.js +65 -0
  324. package/fabric-interop/dist/components/ViroController.js.map +1 -0
  325. package/fabric-interop/dist/components/ViroDirectionalLight.d.ts +29 -0
  326. package/fabric-interop/dist/components/ViroDirectionalLight.d.ts.map +1 -0
  327. package/fabric-interop/dist/components/ViroDirectionalLight.js +57 -0
  328. package/fabric-interop/dist/components/ViroDirectionalLight.js.map +1 -0
  329. package/fabric-interop/dist/components/ViroFlexView.d.ts +37 -0
  330. package/fabric-interop/dist/components/ViroFlexView.d.ts.map +1 -0
  331. package/fabric-interop/dist/components/ViroFlexView.js +98 -0
  332. package/fabric-interop/dist/components/ViroFlexView.js.map +1 -0
  333. package/fabric-interop/dist/components/ViroGeometry.d.ts +24 -0
  334. package/fabric-interop/dist/components/ViroGeometry.d.ts.map +1 -0
  335. package/fabric-interop/dist/components/ViroGeometry.js +52 -0
  336. package/fabric-interop/dist/components/ViroGeometry.js.map +1 -0
  337. package/fabric-interop/dist/components/ViroGlobal.d.ts +46 -0
  338. package/fabric-interop/dist/components/ViroGlobal.d.ts.map +1 -0
  339. package/fabric-interop/dist/components/ViroGlobal.js +21 -0
  340. package/fabric-interop/dist/components/ViroGlobal.js.map +1 -0
  341. package/fabric-interop/dist/components/ViroImage.d.ts +30 -0
  342. package/fabric-interop/dist/components/ViroImage.d.ts.map +1 -0
  343. package/fabric-interop/dist/components/ViroImage.js +54 -0
  344. package/fabric-interop/dist/components/ViroImage.js.map +1 -0
  345. package/fabric-interop/dist/components/ViroLightingEnvironment.d.ts +20 -0
  346. package/fabric-interop/dist/components/ViroLightingEnvironment.d.ts.map +1 -0
  347. package/fabric-interop/dist/components/ViroLightingEnvironment.js +46 -0
  348. package/fabric-interop/dist/components/ViroLightingEnvironment.js.map +1 -0
  349. package/fabric-interop/dist/components/ViroMaterialVideo.d.ts +31 -0
  350. package/fabric-interop/dist/components/ViroMaterialVideo.d.ts.map +1 -0
  351. package/fabric-interop/dist/components/ViroMaterialVideo.js +50 -0
  352. package/fabric-interop/dist/components/ViroMaterialVideo.js.map +1 -0
  353. package/fabric-interop/dist/components/ViroNode.d.ts +37 -0
  354. package/fabric-interop/dist/components/ViroNode.d.ts.map +1 -0
  355. package/fabric-interop/dist/components/ViroNode.js +29 -0
  356. package/fabric-interop/dist/components/ViroNode.js.map +1 -0
  357. package/fabric-interop/dist/components/ViroOmniLight.d.ts +22 -0
  358. package/fabric-interop/dist/components/ViroOmniLight.d.ts.map +1 -0
  359. package/fabric-interop/dist/components/ViroOmniLight.js +50 -0
  360. package/fabric-interop/dist/components/ViroOmniLight.js.map +1 -0
  361. package/fabric-interop/dist/components/ViroOrbitCamera.d.ts +18 -0
  362. package/fabric-interop/dist/components/ViroOrbitCamera.d.ts.map +1 -0
  363. package/fabric-interop/dist/components/ViroOrbitCamera.js +31 -0
  364. package/fabric-interop/dist/components/ViroOrbitCamera.js.map +1 -0
  365. package/fabric-interop/dist/components/ViroParticleEmitter.d.ts +52 -0
  366. package/fabric-interop/dist/components/ViroParticleEmitter.d.ts.map +1 -0
  367. package/fabric-interop/dist/components/ViroParticleEmitter.js +52 -0
  368. package/fabric-interop/dist/components/ViroParticleEmitter.js.map +1 -0
  369. package/fabric-interop/dist/components/ViroPolygon.d.ts +21 -0
  370. package/fabric-interop/dist/components/ViroPolygon.d.ts.map +1 -0
  371. package/fabric-interop/dist/components/ViroPolygon.js +49 -0
  372. package/fabric-interop/dist/components/ViroPolygon.js.map +1 -0
  373. package/fabric-interop/dist/components/ViroPolyline.d.ts +20 -0
  374. package/fabric-interop/dist/components/ViroPolyline.d.ts.map +1 -0
  375. package/fabric-interop/dist/components/ViroPolyline.js +48 -0
  376. package/fabric-interop/dist/components/ViroPolyline.js.map +1 -0
  377. package/fabric-interop/dist/components/ViroPortal.d.ts +17 -0
  378. package/fabric-interop/dist/components/ViroPortal.d.ts.map +1 -0
  379. package/fabric-interop/dist/components/ViroPortal.js +74 -0
  380. package/fabric-interop/dist/components/ViroPortal.js.map +1 -0
  381. package/fabric-interop/dist/components/ViroPortalScene.d.ts +17 -0
  382. package/fabric-interop/dist/components/ViroPortalScene.d.ts.map +1 -0
  383. package/fabric-interop/dist/components/ViroPortalScene.js +30 -0
  384. package/fabric-interop/dist/components/ViroPortalScene.js.map +1 -0
  385. package/fabric-interop/dist/components/ViroQuad.d.ts +40 -0
  386. package/fabric-interop/dist/components/ViroQuad.d.ts.map +1 -0
  387. package/fabric-interop/dist/components/ViroQuad.js +51 -0
  388. package/fabric-interop/dist/components/ViroQuad.js.map +1 -0
  389. package/fabric-interop/dist/components/ViroScene.d.ts +30 -0
  390. package/fabric-interop/dist/components/ViroScene.d.ts.map +1 -0
  391. package/fabric-interop/dist/components/ViroScene.js +105 -0
  392. package/fabric-interop/dist/components/ViroScene.js.map +1 -0
  393. package/fabric-interop/dist/components/ViroSceneNavigator.d.ts +24 -0
  394. package/fabric-interop/dist/components/ViroSceneNavigator.d.ts.map +1 -0
  395. package/fabric-interop/dist/components/ViroSceneNavigator.js +74 -0
  396. package/fabric-interop/dist/components/ViroSceneNavigator.js.map +1 -0
  397. package/fabric-interop/dist/components/ViroSkyBox.d.ts +40 -0
  398. package/fabric-interop/dist/components/ViroSkyBox.d.ts.map +1 -0
  399. package/fabric-interop/dist/components/ViroSkyBox.js +46 -0
  400. package/fabric-interop/dist/components/ViroSkyBox.js.map +1 -0
  401. package/fabric-interop/dist/components/ViroSound.d.ts +24 -0
  402. package/fabric-interop/dist/components/ViroSound.d.ts.map +1 -0
  403. package/fabric-interop/dist/components/ViroSound.js +48 -0
  404. package/fabric-interop/dist/components/ViroSound.js.map +1 -0
  405. package/fabric-interop/dist/components/ViroSoundField.d.ts +25 -0
  406. package/fabric-interop/dist/components/ViroSoundField.d.ts.map +1 -0
  407. package/fabric-interop/dist/components/ViroSoundField.js +49 -0
  408. package/fabric-interop/dist/components/ViroSoundField.js.map +1 -0
  409. package/fabric-interop/dist/components/ViroSpatialSound.d.ts +28 -0
  410. package/fabric-interop/dist/components/ViroSpatialSound.d.ts.map +1 -0
  411. package/fabric-interop/dist/components/ViroSpatialSound.js +52 -0
  412. package/fabric-interop/dist/components/ViroSpatialSound.js.map +1 -0
  413. package/fabric-interop/dist/components/ViroSphere.d.ts +23 -0
  414. package/fabric-interop/dist/components/ViroSphere.d.ts.map +1 -0
  415. package/fabric-interop/dist/components/ViroSphere.js +51 -0
  416. package/fabric-interop/dist/components/ViroSphere.js.map +1 -0
  417. package/fabric-interop/dist/components/ViroSpinner.d.ts +19 -0
  418. package/fabric-interop/dist/components/ViroSpinner.d.ts.map +1 -0
  419. package/fabric-interop/dist/components/ViroSpinner.js +47 -0
  420. package/fabric-interop/dist/components/ViroSpinner.js.map +1 -0
  421. package/fabric-interop/dist/components/ViroSpotLight.d.ts +31 -0
  422. package/fabric-interop/dist/components/ViroSpotLight.d.ts.map +1 -0
  423. package/fabric-interop/dist/components/ViroSpotLight.js +59 -0
  424. package/fabric-interop/dist/components/ViroSpotLight.js.map +1 -0
  425. package/fabric-interop/dist/components/ViroSurface.d.ts +39 -0
  426. package/fabric-interop/dist/components/ViroSurface.d.ts.map +1 -0
  427. package/fabric-interop/dist/components/ViroSurface.js +50 -0
  428. package/fabric-interop/dist/components/ViroSurface.js.map +1 -0
  429. package/fabric-interop/dist/components/ViroText.d.ts +37 -0
  430. package/fabric-interop/dist/components/ViroText.d.ts.map +1 -0
  431. package/fabric-interop/dist/components/ViroText.js +61 -0
  432. package/fabric-interop/dist/components/ViroText.js.map +1 -0
  433. package/fabric-interop/dist/components/ViroUtils.d.ts +64 -0
  434. package/fabric-interop/dist/components/ViroUtils.d.ts.map +1 -0
  435. package/fabric-interop/dist/components/ViroUtils.js +141 -0
  436. package/fabric-interop/dist/components/ViroUtils.js.map +1 -0
  437. package/fabric-interop/dist/components/ViroVRSceneNavigator.d.ts +26 -0
  438. package/fabric-interop/dist/components/ViroVRSceneNavigator.d.ts.map +1 -0
  439. package/fabric-interop/dist/components/ViroVRSceneNavigator.js +74 -0
  440. package/fabric-interop/dist/components/ViroVRSceneNavigator.js.map +1 -0
  441. package/fabric-interop/dist/components/ViroVideo.d.ts +33 -0
  442. package/fabric-interop/dist/components/ViroVideo.d.ts.map +1 -0
  443. package/fabric-interop/dist/components/ViroVideo.js +54 -0
  444. package/fabric-interop/dist/components/ViroVideo.js.map +1 -0
  445. package/fabric-interop/dist/components/index.d.ts +63 -0
  446. package/fabric-interop/dist/components/index.d.ts.map +1 -0
  447. package/fabric-interop/dist/components/index.js +145 -0
  448. package/fabric-interop/dist/components/index.js.map +1 -0
  449. package/fabric-interop/dist/index.d.ts +15 -0
  450. package/fabric-interop/dist/index.d.ts.map +1 -0
  451. package/fabric-interop/dist/index.js +118 -0
  452. package/fabric-interop/dist/index.js.map +1 -0
  453. package/fabric-interop/dist/specs/ViroEventsTurboModule.d.ts +20 -0
  454. package/fabric-interop/dist/specs/ViroEventsTurboModule.d.ts.map +1 -0
  455. package/fabric-interop/dist/specs/ViroEventsTurboModule.js +12 -0
  456. package/fabric-interop/dist/specs/ViroEventsTurboModule.js.map +1 -0
  457. package/fabric-interop/examples/BasicSceneExample.tsx +287 -0
  458. package/fabric-interop/examples/ComprehensiveExample.tsx +441 -0
  459. package/fabric-interop/examples/SimpleARExample.tsx +95 -0
  460. package/fabric-interop/global.d.ts +14 -0
  461. package/fabric-interop/index.ts +107 -0
  462. package/fabric-interop/metro.config.js +12 -0
  463. package/fabric-interop/package.json +40 -0
  464. package/fabric-interop/react-native.config.js +22 -0
  465. package/fabric-interop/scripts/validate-build.js +393 -0
  466. package/fabric-interop/scripts/validate-implementation.js +272 -0
  467. package/fabric-interop/specs/README.md +22 -0
  468. package/fabric-interop/specs/ViroEventsTurboModule.ts +27 -0
  469. package/fabric-interop/test/BasicFunctionalityTest.tsx +243 -0
  470. package/fabric-interop/tsconfig.json +38 -0
  471. package/fabric.d.ts +5 -0
  472. package/fabric.ts +14 -0
  473. package/ios/ViroReact.podspec +51 -11
  474. package/package.json +33 -20
  475. package/scripts/copy-types.js +46 -0
@@ -0,0 +1,72 @@
1
+ /**
2
+ * ViroBox
3
+ *
4
+ * A 3D box component with customizable dimensions and materials.
5
+ */
6
+
7
+ import React, { useContext } from "react";
8
+ import {
9
+ ViroContext,
10
+ ViroCommonProps,
11
+ useViroNode,
12
+ useViroEventListeners,
13
+ convertCommonProps,
14
+ } from "./ViroUtils";
15
+ import { getNativeViro } from "./ViroGlobal";
16
+
17
+ export interface ViroBoxProps extends ViroCommonProps {
18
+ // Box-specific props
19
+ width?: number;
20
+ height?: number;
21
+ length?: number;
22
+ materials?: string | string[];
23
+
24
+ // Lighting props
25
+ lightReceivingBitMask?: number;
26
+ shadowCastingBitMask?: number;
27
+
28
+ // Physics props
29
+ highAccuracyEvents?: boolean;
30
+ }
31
+
32
+ /**
33
+ * ViroBox is a 3D box component with customizable dimensions and materials.
34
+ */
35
+ export const ViroBox: React.FC<ViroBoxProps> = (props) => {
36
+ // Convert common props to the format expected by the native code
37
+ const nativeProps = {
38
+ ...convertCommonProps(props),
39
+ width: props.width ?? 1,
40
+ height: props.height ?? 1,
41
+ length: props.length ?? 1,
42
+ materials: props.materials,
43
+ lightReceivingBitMask: props.lightReceivingBitMask,
44
+ shadowCastingBitMask: props.shadowCastingBitMask,
45
+ highAccuracyEvents: props.highAccuracyEvents,
46
+ };
47
+
48
+ // Create the node (parent will be determined by context)
49
+ const nodeId = useViroNode("box", nativeProps);
50
+
51
+ // Register event handlers using our new event system
52
+ useViroEventListeners(nodeId, {
53
+ onHover: props.onHover,
54
+ onClick: props.onClick,
55
+ onClickState: props.onClickState,
56
+ onTouch: props.onTouch,
57
+ onScroll: props.onScroll,
58
+ onSwipe: props.onSwipe,
59
+ onDrag: props.onDrag,
60
+ onPinch: props.onPinch,
61
+ onRotate: props.onRotate,
62
+ onFuse:
63
+ typeof props.onFuse === "function"
64
+ ? props.onFuse
65
+ : props.onFuse?.callback,
66
+ onCollision: props.onCollision,
67
+ onTransformUpdate: props.onTransformUpdate,
68
+ });
69
+
70
+ // Box doesn't have children, so just return null
71
+ return null;
72
+ };
@@ -0,0 +1,125 @@
1
+ /**
2
+ * ViroButton
3
+ *
4
+ * A component for creating interactive buttons in 3D space.
5
+ */
6
+
7
+ import React from "react";
8
+ import {
9
+ ViroCommonProps,
10
+ useViroNode,
11
+ convertCommonProps,
12
+ ViroContextProvider,
13
+ useViroEventListeners,
14
+ } from "./ViroUtils";
15
+ import { getNativeViro } from "./ViroGlobal";
16
+
17
+ export interface ViroButtonProps extends ViroCommonProps {
18
+ // Button properties
19
+ source: { uri: string } | number;
20
+ hoverSource?: { uri: string } | number;
21
+ clickSource?: { uri: string } | number;
22
+ gazeSource?: { uri: string } | number;
23
+
24
+ // Button dimensions
25
+ width?: number;
26
+ height?: number;
27
+
28
+ // Materials
29
+ materials?: string | string[];
30
+
31
+ // Lighting props
32
+ lightReceivingBitMask?: number;
33
+ shadowCastingBitMask?: number;
34
+
35
+ // Children components
36
+ children?: React.ReactNode;
37
+ }
38
+
39
+ /**
40
+ * ViroButton is a component for creating interactive buttons in 3D space.
41
+ * It provides visual feedback for different interaction states.
42
+ */
43
+ export const ViroButton: React.FC<ViroButtonProps> = (props) => {
44
+ // Convert common props to the format expected by the native code
45
+ const nativeProps = {
46
+ ...convertCommonProps(props),
47
+ source: props.source,
48
+ hoverSource: props.hoverSource,
49
+ clickSource: props.clickSource,
50
+ gazeSource: props.gazeSource,
51
+ width: props.width,
52
+ height: props.height,
53
+ materials: props.materials,
54
+ lightReceivingBitMask: props.lightReceivingBitMask,
55
+ shadowCastingBitMask: props.shadowCastingBitMask,
56
+ };
57
+
58
+ // Create the node (parent will be determined by context)
59
+ const nodeId = useViroNode("button", nativeProps);
60
+
61
+ // Register event handlers
62
+ React.useEffect(() => {
63
+ const nativeViro = getNativeViro();
64
+ if (!nativeViro) return;
65
+
66
+ const eventHandlers = [
67
+ { name: "onHover", handler: props.onHover },
68
+ { name: "onClick", handler: props.onClick },
69
+ { name: "onClickState", handler: props.onClickState },
70
+ { name: "onTouch", handler: props.onTouch },
71
+ { name: "onDrag", handler: props.onDrag },
72
+ { name: "onPinch", handler: props.onPinch },
73
+ { name: "onRotate", handler: props.onRotate },
74
+ {
75
+ name: "onFuse",
76
+ handler:
77
+ typeof props.onFuse === "function"
78
+ ? props.onFuse
79
+ : props.onFuse?.callback,
80
+ },
81
+ ];
82
+
83
+ // Register all event handlers and store callback IDs for cleanup
84
+ const registeredCallbacks = eventHandlers
85
+ .filter(({ handler }) => !!handler)
86
+ .map(({ name, handler }) => {
87
+ const callbackId = `${nodeId}_${name}`;
88
+
89
+ // Register the callback in the global registry
90
+ if (typeof global !== "undefined" && global.registerViroEventCallback) {
91
+ global.registerViroEventCallback(callbackId, handler);
92
+ }
93
+
94
+ // Register with native code
95
+ nativeViro.registerEventCallback(nodeId, name, callbackId);
96
+ return { name, callbackId };
97
+ });
98
+
99
+ // Cleanup when unmounting
100
+ return () => {
101
+ const nativeViro = getNativeViro();
102
+ if (!nativeViro) return;
103
+
104
+ // Unregister all event handlers
105
+ registeredCallbacks.forEach(({ name, callbackId }) => {
106
+ nativeViro.unregisterEventCallback(nodeId, name, callbackId);
107
+ });
108
+ };
109
+ }, [
110
+ nodeId,
111
+ props.onHover,
112
+ props.onClick,
113
+ props.onClickState,
114
+ props.onTouch,
115
+ props.onDrag,
116
+ props.onPinch,
117
+ props.onRotate,
118
+ props.onFuse,
119
+ ]);
120
+
121
+ // Render children with this button as their parent
122
+ return (
123
+ <ViroContextProvider value={nodeId}>{props.children}</ViroContextProvider>
124
+ );
125
+ };
@@ -0,0 +1,45 @@
1
+ /**
2
+ * ViroCamera
3
+ *
4
+ * A component for controlling the scene camera.
5
+ */
6
+
7
+ import React from "react";
8
+ import {
9
+ ViroCommonProps,
10
+ useViroNode,
11
+ convertCommonProps,
12
+ ViroContextProvider,
13
+ useViroEventListeners,
14
+ } from "./ViroUtils";
15
+ import { getNativeViro } from "./ViroGlobal";
16
+
17
+ export interface ViroCameraProps extends ViroCommonProps {
18
+ // Camera properties
19
+ fieldOfView?: number;
20
+ focalPoint?: [number, number, number];
21
+
22
+ // Children components
23
+ children?: React.ReactNode;
24
+ }
25
+
26
+ /**
27
+ * ViroCamera is a component for controlling the scene camera.
28
+ * It allows customization of camera properties and behavior.
29
+ */
30
+ export const ViroCamera: React.FC<ViroCameraProps> = (props) => {
31
+ // Convert common props to the format expected by the native code
32
+ const nativeProps = {
33
+ ...convertCommonProps(props),
34
+ fieldOfView: props.fieldOfView,
35
+ focalPoint: props.focalPoint,
36
+ };
37
+
38
+ // Create the node (parent will be determined by context)
39
+ const nodeId = useViroNode("camera", nativeProps);
40
+
41
+ // Render children with this camera as their parent
42
+ return (
43
+ <ViroContextProvider value={nodeId}>{props.children}</ViroContextProvider>
44
+ );
45
+ };
@@ -0,0 +1,87 @@
1
+ /**
2
+ * ViroController
3
+ *
4
+ * A component for VR controller interaction.
5
+ */
6
+
7
+ import React from "react";
8
+ import {
9
+ ViroCommonProps,
10
+ useViroNode,
11
+ convertCommonProps,
12
+ ViroContextProvider,
13
+ useViroEventListeners,
14
+ } from "./ViroUtils";
15
+ import { getNativeViro } from "./ViroGlobal";
16
+
17
+ export interface ViroControllerProps extends ViroCommonProps {
18
+ // Controller properties
19
+ controllerVisibility?: boolean;
20
+ reticleVisibility?: boolean;
21
+
22
+ // Events
23
+ onControllerUpdate?: (event: any) => void;
24
+ onMove?: (event: any) => void;
25
+
26
+ // Children components
27
+ children?: React.ReactNode;
28
+ }
29
+
30
+ /**
31
+ * ViroController is a component for VR controller interaction.
32
+ * It provides controller tracking and interaction capabilities.
33
+ */
34
+ export const ViroController: React.FC<ViroControllerProps> = (props) => {
35
+ // Convert common props to the format expected by the native code
36
+ const nativeProps = {
37
+ ...convertCommonProps(props),
38
+ controllerVisibility: props.controllerVisibility,
39
+ reticleVisibility: props.reticleVisibility,
40
+ };
41
+
42
+ // Create the node (parent will be determined by context)
43
+ const nodeId = useViroNode("controller", nativeProps);
44
+
45
+ // Register event handlers
46
+ React.useEffect(() => {
47
+ const nativeViro = getNativeViro();
48
+ if (!nativeViro) return;
49
+
50
+ const eventHandlers = [
51
+ { name: "onControllerUpdate", handler: props.onControllerUpdate },
52
+ { name: "onMove", handler: props.onMove },
53
+ ];
54
+
55
+ // Register all event handlers and store callback IDs for cleanup
56
+ const registeredCallbacks = eventHandlers
57
+ .filter(({ handler }) => !!handler)
58
+ .map(({ name, handler }) => {
59
+ const callbackId = `${nodeId}_${name}`;
60
+
61
+ // Register the callback in the global registry
62
+ if (typeof global !== "undefined" && global.registerViroEventCallback) {
63
+ global.registerViroEventCallback(callbackId, handler);
64
+ }
65
+
66
+ // Register with native code
67
+ nativeViro.registerEventCallback(nodeId, name, callbackId);
68
+ return { name, callbackId };
69
+ });
70
+
71
+ // Cleanup when unmounting
72
+ return () => {
73
+ const nativeViro = getNativeViro();
74
+ if (!nativeViro) return;
75
+
76
+ // Unregister all event handlers
77
+ registeredCallbacks.forEach(({ name, callbackId }) => {
78
+ nativeViro.unregisterEventCallback(nodeId, name, callbackId);
79
+ });
80
+ };
81
+ }, [nodeId, props.onControllerUpdate, props.onMove]);
82
+
83
+ // Render children with this controller as their parent
84
+ return (
85
+ <ViroContextProvider value={nodeId}>{props.children}</ViroContextProvider>
86
+ );
87
+ };
@@ -0,0 +1,84 @@
1
+ /**
2
+ * ViroDirectionalLight
3
+ *
4
+ * A component for adding directional lighting to a scene.
5
+ */
6
+
7
+ import React from "react";
8
+ import {
9
+ ViroCommonProps,
10
+ useViroNode,
11
+ convertCommonProps,
12
+ useViroEventListeners,
13
+ } from "./ViroUtils";
14
+ import { getNativeViro } from "./ViroGlobal";
15
+
16
+ export interface ViroDirectionalLightProps extends ViroCommonProps {
17
+ // Light properties
18
+ color?: string;
19
+ intensity?: number;
20
+ temperature?: number;
21
+ direction?: [number, number, number];
22
+ influenceBitMask?: number;
23
+
24
+ // Shadow properties
25
+ castsShadow?: boolean;
26
+ shadowOpacity?: number;
27
+ shadowOrthographicSize?: number;
28
+ shadowOrthographicPosition?: [number, number, number];
29
+ shadowMapSize?: number;
30
+ shadowBias?: number;
31
+ shadowNearZ?: number;
32
+ shadowFarZ?: number;
33
+ }
34
+
35
+ /**
36
+ * ViroDirectionalLight is a component for adding directional lighting to a scene.
37
+ * Directional light is a type of light that illuminates all objects in the scene
38
+ * from a specific direction, similar to sunlight.
39
+ */
40
+ export const ViroDirectionalLight: React.FC<ViroDirectionalLightProps> = (
41
+ props
42
+ ) => {
43
+ // Convert common props to the format expected by the native code
44
+ const nativeProps = {
45
+ ...convertCommonProps(props),
46
+ color: props.color,
47
+ intensity: props.intensity,
48
+ temperature: props.temperature,
49
+ direction: props.direction,
50
+ influenceBitMask: props.influenceBitMask,
51
+ castsShadow: props.castsShadow,
52
+ shadowOpacity: props.shadowOpacity,
53
+ shadowOrthographicSize: props.shadowOrthographicSize,
54
+ shadowOrthographicPosition: props.shadowOrthographicPosition,
55
+ shadowMapSize: props.shadowMapSize,
56
+ shadowBias: props.shadowBias,
57
+ shadowNearZ: props.shadowNearZ,
58
+ shadowFarZ: props.shadowFarZ,
59
+ };
60
+
61
+ // Create the node (parent will be determined by context)
62
+ const nodeId = useViroNode("directionalLight", nativeProps);
63
+ // Register event handlers using our new event system
64
+ useViroEventListeners(nodeId, {
65
+ onHover: props.onHover,
66
+ onClick: props.onClick,
67
+ onClickState: props.onClickState,
68
+ onTouch: props.onTouch,
69
+ onScroll: props.onScroll,
70
+ onSwipe: props.onSwipe,
71
+ onDrag: props.onDrag,
72
+ onPinch: props.onPinch,
73
+ onRotate: props.onRotate,
74
+ onFuse:
75
+ typeof props.onFuse === "function"
76
+ ? props.onFuse
77
+ : props.onFuse?.callback,
78
+ onCollision: props.onCollision,
79
+ onTransformUpdate: props.onTransformUpdate,
80
+ });
81
+
82
+ // Component doesn't have children, so just return null
83
+ return null;
84
+ };
@@ -0,0 +1,146 @@
1
+ /**
2
+ * ViroFlexView
3
+ *
4
+ * A component for creating flexible layouts in 3D space.
5
+ */
6
+
7
+ import React from "react";
8
+ import {
9
+ ViroCommonProps,
10
+ useViroNode,
11
+ convertCommonProps,
12
+ ViroContextProvider,
13
+ useViroEventListeners,
14
+ } from "./ViroUtils";
15
+ import { getNativeViro } from "./ViroGlobal";
16
+
17
+ export interface ViroFlexViewProps extends ViroCommonProps {
18
+ // Layout properties
19
+ width?: number;
20
+ height?: number;
21
+
22
+ // Flex properties
23
+ flex?: number;
24
+ flexDirection?: "row" | "column";
25
+ justifyContent?:
26
+ | "flex-start"
27
+ | "flex-end"
28
+ | "center"
29
+ | "space-between"
30
+ | "space-around";
31
+ alignItems?: "flex-start" | "flex-end" | "center" | "stretch";
32
+ padding?: number;
33
+ paddingTop?: number;
34
+ paddingBottom?: number;
35
+ paddingLeft?: number;
36
+ paddingRight?: number;
37
+ margin?: number;
38
+ marginTop?: number;
39
+ marginBottom?: number;
40
+ marginLeft?: number;
41
+ marginRight?: number;
42
+
43
+ // Visual properties
44
+ backgroundColor?: string;
45
+ borderRadius?: number;
46
+ borderWidth?: number;
47
+ borderColor?: string;
48
+
49
+ // Materials
50
+ materials?: string | string[];
51
+
52
+ // Children components
53
+ children?: React.ReactNode;
54
+ }
55
+
56
+ /**
57
+ * ViroFlexView is a component for creating flexible layouts in 3D space.
58
+ * It allows you to arrange child components using flexbox-like layout rules.
59
+ */
60
+ export const ViroFlexView: React.FC<ViroFlexViewProps> = (props) => {
61
+ // Convert common props to the format expected by the native code
62
+ const nativeProps = {
63
+ ...convertCommonProps(props),
64
+ width: props.width,
65
+ height: props.height,
66
+ flex: props.flex,
67
+ flexDirection: props.flexDirection,
68
+ justifyContent: props.justifyContent,
69
+ alignItems: props.alignItems,
70
+ padding: props.padding,
71
+ paddingTop: props.paddingTop,
72
+ paddingBottom: props.paddingBottom,
73
+ paddingLeft: props.paddingLeft,
74
+ paddingRight: props.paddingRight,
75
+ margin: props.margin,
76
+ marginTop: props.marginTop,
77
+ marginBottom: props.marginBottom,
78
+ marginLeft: props.marginLeft,
79
+ marginRight: props.marginRight,
80
+ backgroundColor: props.backgroundColor,
81
+ borderRadius: props.borderRadius,
82
+ borderWidth: props.borderWidth,
83
+ borderColor: props.borderColor,
84
+ materials: props.materials,
85
+ };
86
+
87
+ // Create the node (parent will be determined by context)
88
+ const nodeId = useViroNode("flexView", nativeProps);
89
+
90
+ // Register event handlers
91
+ React.useEffect(() => {
92
+ const nativeViro = getNativeViro();
93
+ if (!nativeViro) return;
94
+
95
+ const eventHandlers = [
96
+ { name: "onHover", handler: props.onHover },
97
+ { name: "onClick", handler: props.onClick },
98
+ { name: "onClickState", handler: props.onClickState },
99
+ { name: "onTouch", handler: props.onTouch },
100
+ { name: "onDrag", handler: props.onDrag },
101
+ { name: "onPinch", handler: props.onPinch },
102
+ { name: "onRotate", handler: props.onRotate },
103
+ ];
104
+
105
+ // Register all event handlers and store callback IDs for cleanup
106
+ const registeredCallbacks = eventHandlers
107
+ .filter(({ handler }) => !!handler)
108
+ .map(({ name, handler }) => {
109
+ const callbackId = `${nodeId}_${name}`;
110
+
111
+ // Register the callback in the global registry
112
+ if (typeof global !== "undefined" && global.registerViroEventCallback) {
113
+ global.registerViroEventCallback(callbackId, handler);
114
+ }
115
+
116
+ // Register with native code
117
+ nativeViro.registerEventCallback(nodeId, name, callbackId);
118
+ return { name, callbackId };
119
+ });
120
+
121
+ // Cleanup when unmounting
122
+ return () => {
123
+ const nativeViro = getNativeViro();
124
+ if (!nativeViro) return;
125
+
126
+ // Unregister all event handlers
127
+ registeredCallbacks.forEach(({ name, callbackId }) => {
128
+ nativeViro.unregisterEventCallback(nodeId, name, callbackId);
129
+ });
130
+ };
131
+ }, [
132
+ nodeId,
133
+ props.onHover,
134
+ props.onClick,
135
+ props.onClickState,
136
+ props.onTouch,
137
+ props.onDrag,
138
+ props.onPinch,
139
+ props.onRotate,
140
+ ]);
141
+
142
+ // Render children with this flex view as their parent
143
+ return (
144
+ <ViroContextProvider value={nodeId}>{props.children}</ViroContextProvider>
145
+ );
146
+ };
@@ -0,0 +1,78 @@
1
+ /**
2
+ * ViroGeometry
3
+ *
4
+ * A component for rendering custom 3D geometry.
5
+ */
6
+
7
+ import React from "react";
8
+ import {
9
+ ViroCommonProps,
10
+ useViroNode,
11
+ convertCommonProps,
12
+ useViroEventListeners,
13
+ } from "./ViroUtils";
14
+ import { getNativeViro } from "./ViroGlobal";
15
+
16
+ export interface ViroGeometryProps extends ViroCommonProps {
17
+ // Geometry data
18
+ vertices: [number, number, number][];
19
+ normals?: [number, number, number][];
20
+ texcoords?: [number, number][];
21
+ triangleIndices: number[][];
22
+
23
+ // Materials
24
+ materials?: string | string[];
25
+
26
+ // Lighting props
27
+ lightReceivingBitMask?: number;
28
+ shadowCastingBitMask?: number;
29
+
30
+ // Physics props
31
+ type?: "Dynamic" | "Kinematic" | "Static";
32
+ }
33
+
34
+ /**
35
+ * ViroGeometry is a component for rendering custom 3D geometry.
36
+ * It allows you to create custom 3D shapes by specifying vertices, normals,
37
+ * texture coordinates, and triangle indices.
38
+ */
39
+ export const ViroGeometry: React.FC<ViroGeometryProps> = (props) => {
40
+ // Convert common props to the format expected by the native code
41
+ const nativeProps = {
42
+ ...convertCommonProps(props),
43
+ vertices: props.vertices,
44
+ normals: props.normals,
45
+ texcoords: props.texcoords,
46
+ triangleIndices: props.triangleIndices,
47
+ materials: props.materials,
48
+ lightReceivingBitMask: props.lightReceivingBitMask,
49
+ shadowCastingBitMask: props.shadowCastingBitMask,
50
+ type: props.type,
51
+ };
52
+
53
+ // Create the node (parent will be determined by context)
54
+ const nodeId = useViroNode("geometry", nativeProps);
55
+
56
+
57
+ // Register event handlers using our new event system
58
+ useViroEventListeners(nodeId, {
59
+ onHover: props.onHover,
60
+ onClick: props.onClick,
61
+ onClickState: props.onClickState,
62
+ onTouch: props.onTouch,
63
+ onScroll: props.onScroll,
64
+ onSwipe: props.onSwipe,
65
+ onDrag: props.onDrag,
66
+ onPinch: props.onPinch,
67
+ onRotate: props.onRotate,
68
+ onFuse:
69
+ typeof props.onFuse === "function"
70
+ ? props.onFuse
71
+ : props.onFuse?.callback,
72
+ onCollision: props.onCollision,
73
+ onTransformUpdate: props.onTransformUpdate,
74
+ });
75
+
76
+ // Component doesn't have children, so just return null
77
+ return null;
78
+ };