angular-three 0.0.7 → 1.0.0-beta.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 (441) hide show
  1. package/esm2020/angular-three.mjs +1 -1
  2. package/esm2020/index.mjs +2 -35
  3. package/esm2020/lib/canvas.mjs +141 -128
  4. package/esm2020/lib/di/catalogue.mjs +7 -0
  5. package/esm2020/lib/directives/args.mjs +37 -17
  6. package/esm2020/lib/directives/repeat.mjs +5 -8
  7. package/esm2020/lib/events.mjs +341 -52
  8. package/esm2020/lib/loader.mjs +55 -0
  9. package/esm2020/lib/loop.mjs +137 -0
  10. package/esm2020/lib/renderer/di.mjs +3 -0
  11. package/esm2020/lib/renderer/enums.mjs +2 -0
  12. package/esm2020/lib/renderer/provider.mjs +19 -0
  13. package/esm2020/lib/renderer/renderer.mjs +293 -0
  14. package/esm2020/lib/renderer/state.mjs +350 -0
  15. package/esm2020/lib/renderer/utils.mjs +177 -0
  16. package/esm2020/lib/stores/rx-store.mjs +99 -0
  17. package/esm2020/lib/stores/store.mjs +190 -239
  18. package/esm2020/lib/types.mjs +1 -1
  19. package/esm2020/lib/utils/apply-props.mjs +37 -80
  20. package/esm2020/lib/utils/attach.mjs +29 -0
  21. package/esm2020/lib/utils/instance.mjs +43 -28
  22. package/esm2020/lib/utils/is.mjs +7 -11
  23. package/esm2020/lib/utils/make.mjs +30 -10
  24. package/esm2020/lib/utils/update.mjs +37 -0
  25. package/esm2020/lib/web/events.mjs +68 -0
  26. package/fesm2015/angular-three.mjs +2053 -2046
  27. package/fesm2015/angular-three.mjs.map +1 -1
  28. package/fesm2020/angular-three.mjs +2003 -1990
  29. package/fesm2020/angular-three.mjs.map +1 -1
  30. package/index.d.ts +1 -34
  31. package/lib/canvas.d.ts +29 -28
  32. package/lib/di/catalogue.d.ts +3 -0
  33. package/lib/directives/args.d.ts +8 -12
  34. package/lib/events.d.ts +7 -2
  35. package/lib/loader.d.ts +15 -0
  36. package/lib/{utils/loop.d.ts → loop.d.ts} +7 -6
  37. package/lib/renderer/di.d.ts +2 -0
  38. package/lib/renderer/enums.d.ts +25 -0
  39. package/lib/renderer/provider.d.ts +25 -0
  40. package/lib/renderer/renderer.d.ts +49 -0
  41. package/lib/renderer/state.d.ts +59 -0
  42. package/lib/renderer/utils.d.ts +20 -0
  43. package/lib/stores/rx-store.d.ts +17 -0
  44. package/lib/stores/store.d.ts +6 -23
  45. package/lib/types.d.ts +182 -191
  46. package/lib/utils/apply-props.d.ts +2 -6
  47. package/lib/utils/attach.d.ts +3 -0
  48. package/lib/utils/instance.d.ts +3 -3
  49. package/lib/utils/is.d.ts +6 -10
  50. package/lib/utils/make.d.ts +5 -2
  51. package/lib/utils/update.d.ts +4 -0
  52. package/lib/web/events.d.ts +4 -0
  53. package/package.json +30 -99
  54. package/attributes/README.md +0 -3
  55. package/attributes/index.d.ts +0 -22
  56. package/attributes/lib/buffer-attribute/buffer-attribute.d.ts +0 -8
  57. package/attributes/lib/color-attribute/color-attribute.d.ts +0 -8
  58. package/attributes/lib/common.d.ts +0 -1
  59. package/attributes/lib/float16-buffer-attribute/float16-buffer-attribute.d.ts +0 -8
  60. package/attributes/lib/float32-buffer-attribute/float32-buffer-attribute.d.ts +0 -8
  61. package/attributes/lib/float64-buffer-attribute/float64-buffer-attribute.d.ts +0 -8
  62. package/attributes/lib/fog-attribute/fog-attribute.d.ts +0 -8
  63. package/attributes/lib/fog-exp2-attribute/fog-exp2-attribute.d.ts +0 -8
  64. package/attributes/lib/instanced-buffer-attribute/instanced-buffer-attribute.d.ts +0 -8
  65. package/attributes/lib/int16-buffer-attribute/int16-buffer-attribute.d.ts +0 -8
  66. package/attributes/lib/int32-buffer-attribute/int32-buffer-attribute.d.ts +0 -8
  67. package/attributes/lib/int8-buffer-attribute/int8-buffer-attribute.d.ts +0 -8
  68. package/attributes/lib/interleaved-buffer-attribute/interleaved-buffer-attribute.d.ts +0 -8
  69. package/attributes/lib/matrix3-attribute/matrix3-attribute.d.ts +0 -8
  70. package/attributes/lib/matrix4-attribute/matrix4-attribute.d.ts +0 -8
  71. package/attributes/lib/uint16-buffer-attribute/uint16-buffer-attribute.d.ts +0 -8
  72. package/attributes/lib/uint32-buffer-attribute/uint32-buffer-attribute.d.ts +0 -8
  73. package/attributes/lib/uint8-buffer-attribute/uint8-buffer-attribute.d.ts +0 -8
  74. package/attributes/lib/uint8-clamped-buffer-attribute/uint8-clamped-buffer-attribute.d.ts +0 -8
  75. package/attributes/lib/value-attribute/value-attribute.d.ts +0 -8
  76. package/attributes/lib/vector2-attribute/vector2-attribute.d.ts +0 -8
  77. package/attributes/lib/vector3-attribute/vector3-attribute.d.ts +0 -8
  78. package/attributes/lib/vector4-attribute/vector4-attribute.d.ts +0 -8
  79. package/audios/README.md +0 -3
  80. package/audios/index.d.ts +0 -3
  81. package/audios/lib/audio/audio.d.ts +0 -49
  82. package/audios/lib/audio-listener/audio-listener.d.ts +0 -35
  83. package/audios/lib/common.d.ts +0 -3
  84. package/audios/lib/positional-audio/positional-audio.d.ts +0 -49
  85. package/cameras/README.md +0 -3
  86. package/cameras/index.d.ts +0 -5
  87. package/cameras/lib/array-camera/array-camera.d.ts +0 -56
  88. package/cameras/lib/common.d.ts +0 -3
  89. package/cameras/lib/cube-camera/cube-camera.d.ts +0 -36
  90. package/cameras/lib/orthographic-camera/orthographic-camera.d.ts +0 -54
  91. package/cameras/lib/perspective-camera/perspective-camera.d.ts +0 -55
  92. package/cameras/lib/stereo-camera/stereo-camera.d.ts +0 -42
  93. package/esm2020/attributes/angular-three-attributes.mjs +0 -5
  94. package/esm2020/attributes/index.mjs +0 -24
  95. package/esm2020/attributes/lib/buffer-attribute/buffer-attribute.mjs +0 -26
  96. package/esm2020/attributes/lib/color-attribute/color-attribute.mjs +0 -26
  97. package/esm2020/attributes/lib/common.mjs +0 -13
  98. package/esm2020/attributes/lib/float16-buffer-attribute/float16-buffer-attribute.mjs +0 -26
  99. package/esm2020/attributes/lib/float32-buffer-attribute/float32-buffer-attribute.mjs +0 -26
  100. package/esm2020/attributes/lib/float64-buffer-attribute/float64-buffer-attribute.mjs +0 -26
  101. package/esm2020/attributes/lib/fog-attribute/fog-attribute.mjs +0 -26
  102. package/esm2020/attributes/lib/fog-exp2-attribute/fog-exp2-attribute.mjs +0 -26
  103. package/esm2020/attributes/lib/instanced-buffer-attribute/instanced-buffer-attribute.mjs +0 -26
  104. package/esm2020/attributes/lib/int16-buffer-attribute/int16-buffer-attribute.mjs +0 -26
  105. package/esm2020/attributes/lib/int32-buffer-attribute/int32-buffer-attribute.mjs +0 -26
  106. package/esm2020/attributes/lib/int8-buffer-attribute/int8-buffer-attribute.mjs +0 -26
  107. package/esm2020/attributes/lib/interleaved-buffer-attribute/interleaved-buffer-attribute.mjs +0 -30
  108. package/esm2020/attributes/lib/matrix3-attribute/matrix3-attribute.mjs +0 -26
  109. package/esm2020/attributes/lib/matrix4-attribute/matrix4-attribute.mjs +0 -26
  110. package/esm2020/attributes/lib/uint16-buffer-attribute/uint16-buffer-attribute.mjs +0 -26
  111. package/esm2020/attributes/lib/uint32-buffer-attribute/uint32-buffer-attribute.mjs +0 -26
  112. package/esm2020/attributes/lib/uint8-buffer-attribute/uint8-buffer-attribute.mjs +0 -26
  113. package/esm2020/attributes/lib/uint8-clamped-buffer-attribute/uint8-clamped-buffer-attribute.mjs +0 -26
  114. package/esm2020/attributes/lib/value-attribute/value-attribute.mjs +0 -28
  115. package/esm2020/attributes/lib/vector2-attribute/vector2-attribute.mjs +0 -26
  116. package/esm2020/attributes/lib/vector3-attribute/vector3-attribute.mjs +0 -26
  117. package/esm2020/attributes/lib/vector4-attribute/vector4-attribute.mjs +0 -26
  118. package/esm2020/audios/angular-three-audios.mjs +0 -5
  119. package/esm2020/audios/index.mjs +0 -5
  120. package/esm2020/audios/lib/audio/audio.mjs +0 -45
  121. package/esm2020/audios/lib/audio-listener/audio-listener.mjs +0 -38
  122. package/esm2020/audios/lib/common.mjs +0 -54
  123. package/esm2020/audios/lib/positional-audio/positional-audio.mjs +0 -45
  124. package/esm2020/cameras/angular-three-cameras.mjs +0 -5
  125. package/esm2020/cameras/index.mjs +0 -7
  126. package/esm2020/cameras/lib/array-camera/array-camera.mjs +0 -44
  127. package/esm2020/cameras/lib/common.mjs +0 -54
  128. package/esm2020/cameras/lib/cube-camera/cube-camera.mjs +0 -30
  129. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -42
  130. package/esm2020/cameras/lib/perspective-camera/perspective-camera.mjs +0 -43
  131. package/esm2020/cameras/lib/stereo-camera/stereo-camera.mjs +0 -38
  132. package/esm2020/geometries/angular-three-geometries.mjs +0 -5
  133. package/esm2020/geometries/index.mjs +0 -25
  134. package/esm2020/geometries/lib/box-geometry/box-geometry.mjs +0 -26
  135. package/esm2020/geometries/lib/buffer-geometry/buffer-geometry.mjs +0 -26
  136. package/esm2020/geometries/lib/capsule-geometry/capsule-geometry.mjs +0 -26
  137. package/esm2020/geometries/lib/circle-geometry/circle-geometry.mjs +0 -26
  138. package/esm2020/geometries/lib/common.mjs +0 -13
  139. package/esm2020/geometries/lib/cone-geometry/cone-geometry.mjs +0 -26
  140. package/esm2020/geometries/lib/cylinder-geometry/cylinder-geometry.mjs +0 -26
  141. package/esm2020/geometries/lib/dodecahedron-geometry/dodecahedron-geometry.mjs +0 -26
  142. package/esm2020/geometries/lib/edges-geometry/edges-geometry.mjs +0 -26
  143. package/esm2020/geometries/lib/extrude-geometry/extrude-geometry.mjs +0 -26
  144. package/esm2020/geometries/lib/icosahedron-geometry/icosahedron-geometry.mjs +0 -26
  145. package/esm2020/geometries/lib/instanced-buffer-geometry/instanced-buffer-geometry.mjs +0 -26
  146. package/esm2020/geometries/lib/lathe-geometry/lathe-geometry.mjs +0 -26
  147. package/esm2020/geometries/lib/octahedron-geometry/octahedron-geometry.mjs +0 -26
  148. package/esm2020/geometries/lib/plane-geometry/plane-geometry.mjs +0 -26
  149. package/esm2020/geometries/lib/polyhedron-geometry/polyhedron-geometry.mjs +0 -26
  150. package/esm2020/geometries/lib/ring-geometry/ring-geometry.mjs +0 -26
  151. package/esm2020/geometries/lib/shape-geometry/shape-geometry.mjs +0 -26
  152. package/esm2020/geometries/lib/sphere-geometry/sphere-geometry.mjs +0 -26
  153. package/esm2020/geometries/lib/tetrahedron-geometry/tetrahedron-geometry.mjs +0 -26
  154. package/esm2020/geometries/lib/torus-geometry/torus-geometry.mjs +0 -26
  155. package/esm2020/geometries/lib/torus-knot-geometry/torus-knot-geometry.mjs +0 -26
  156. package/esm2020/geometries/lib/tube-geometry/tube-geometry.mjs +0 -26
  157. package/esm2020/geometries/lib/wireframe-geometry/wireframe-geometry.mjs +0 -26
  158. package/esm2020/helpers/angular-three-helpers.mjs +0 -5
  159. package/esm2020/helpers/index.mjs +0 -15
  160. package/esm2020/helpers/lib/arrow-helper/arrow-helper.mjs +0 -26
  161. package/esm2020/helpers/lib/axes-helper/axes-helper.mjs +0 -26
  162. package/esm2020/helpers/lib/box-helper/box-helper.mjs +0 -36
  163. package/esm2020/helpers/lib/box3-helper/box3-helper.mjs +0 -36
  164. package/esm2020/helpers/lib/camera-helper/camera-helper.mjs +0 -36
  165. package/esm2020/helpers/lib/common.mjs +0 -13
  166. package/esm2020/helpers/lib/directional-light-helper/directional-light-helper.mjs +0 -36
  167. package/esm2020/helpers/lib/grid-helper/grid-helper.mjs +0 -26
  168. package/esm2020/helpers/lib/hemisphere-light-helper/hemisphere-light-helper.mjs +0 -36
  169. package/esm2020/helpers/lib/plane-helper/plane-helper.mjs +0 -36
  170. package/esm2020/helpers/lib/point-light-helper/point-light-helper.mjs +0 -36
  171. package/esm2020/helpers/lib/polar-grid-helper/polar-grid-helper.mjs +0 -26
  172. package/esm2020/helpers/lib/skeleton-helper/skeleton-helper.mjs +0 -36
  173. package/esm2020/helpers/lib/spot-light-helper/spot-light-helper.mjs +0 -36
  174. package/esm2020/lib/di/resize.mjs +0 -19
  175. package/esm2020/lib/di/window.mjs +0 -13
  176. package/esm2020/lib/directives/cursor.mjs +0 -35
  177. package/esm2020/lib/instance.mjs +0 -368
  178. package/esm2020/lib/pipes/math.mjs +0 -15
  179. package/esm2020/lib/pipes/pi.mjs +0 -14
  180. package/esm2020/lib/pipes/radian.mjs +0 -14
  181. package/esm2020/lib/pipes/side.mjs +0 -22
  182. package/esm2020/lib/ref.mjs +0 -15
  183. package/esm2020/lib/services/loader.mjs +0 -45
  184. package/esm2020/lib/services/resize.mjs +0 -127
  185. package/esm2020/lib/stores/component-store.mjs +0 -137
  186. package/esm2020/lib/utils/build-graph.mjs +0 -15
  187. package/esm2020/lib/utils/camera.mjs +0 -28
  188. package/esm2020/lib/utils/capitalize.mjs +0 -4
  189. package/esm2020/lib/utils/check-update.mjs +0 -22
  190. package/esm2020/lib/utils/events.mjs +0 -353
  191. package/esm2020/lib/utils/get-instance-local-state.mjs +0 -6
  192. package/esm2020/lib/utils/inject.mjs +0 -18
  193. package/esm2020/lib/utils/loop.mjs +0 -139
  194. package/esm2020/lib/utils/mutate.mjs +0 -24
  195. package/esm2020/lib/utils/proxy.mjs +0 -99
  196. package/esm2020/lib/utils/renderer.mjs +0 -15
  197. package/esm2020/lights/angular-three-lights.mjs +0 -5
  198. package/esm2020/lights/index.mjs +0 -11
  199. package/esm2020/lights/lib/ambient-light/ambient-light.mjs +0 -30
  200. package/esm2020/lights/lib/ambient-light-probe/ambient-light-probe.mjs +0 -30
  201. package/esm2020/lights/lib/common.mjs +0 -54
  202. package/esm2020/lights/lib/directional-light/directional-light.mjs +0 -30
  203. package/esm2020/lights/lib/hemisphere-light/hemisphere-light.mjs +0 -30
  204. package/esm2020/lights/lib/hemisphere-light-probe/hemisphere-light-probe.mjs +0 -30
  205. package/esm2020/lights/lib/light-probe/light-probe.mjs +0 -30
  206. package/esm2020/lights/lib/point-light/point-light.mjs +0 -30
  207. package/esm2020/lights/lib/rect-area-light/rect-area-light.mjs +0 -30
  208. package/esm2020/lights/lib/spot-light/spot-light.mjs +0 -42
  209. package/esm2020/materials/angular-three-materials.mjs +0 -5
  210. package/esm2020/materials/index.mjs +0 -19
  211. package/esm2020/materials/lib/common.mjs +0 -13
  212. package/esm2020/materials/lib/line-basic-material/line-basic-material.mjs +0 -77
  213. package/esm2020/materials/lib/line-dashed-material/line-dashed-material.mjs +0 -80
  214. package/esm2020/materials/lib/mesh-basic-material/mesh-basic-material.mjs +0 -89
  215. package/esm2020/materials/lib/mesh-depth-material/mesh-depth-material.mjs +0 -80
  216. package/esm2020/materials/lib/mesh-distance-material/mesh-distance-material.mjs +0 -80
  217. package/esm2020/materials/lib/mesh-lambert-material/mesh-lambert-material.mjs +0 -100
  218. package/esm2020/materials/lib/mesh-matcap-material/mesh-matcap-material.mjs +0 -86
  219. package/esm2020/materials/lib/mesh-normal-material/mesh-normal-material.mjs +0 -83
  220. package/esm2020/materials/lib/mesh-phong-material/mesh-phong-material.mjs +0 -103
  221. package/esm2020/materials/lib/mesh-physical-material/mesh-physical-material.mjs +0 -119
  222. package/esm2020/materials/lib/mesh-standard-material/mesh-standard-material.mjs +0 -100
  223. package/esm2020/materials/lib/mesh-toon-material/mesh-toon-material.mjs +0 -96
  224. package/esm2020/materials/lib/points-material/points-material.mjs +0 -78
  225. package/esm2020/materials/lib/raw-shader-material/raw-shader-material.mjs +0 -83
  226. package/esm2020/materials/lib/shader-material/shader-material.mjs +0 -83
  227. package/esm2020/materials/lib/shadow-material/shadow-material.mjs +0 -74
  228. package/esm2020/materials/lib/sprite-material/sprite-material.mjs +0 -78
  229. package/esm2020/objects/angular-three-objects.mjs +0 -5
  230. package/esm2020/objects/index.mjs +0 -14
  231. package/esm2020/objects/lib/bone/bone.mjs +0 -27
  232. package/esm2020/objects/lib/common.mjs +0 -54
  233. package/esm2020/objects/lib/group/group.mjs +0 -27
  234. package/esm2020/objects/lib/instanced-mesh/instanced-mesh.mjs +0 -40
  235. package/esm2020/objects/lib/line/line.mjs +0 -30
  236. package/esm2020/objects/lib/line-loop/line-loop.mjs +0 -30
  237. package/esm2020/objects/lib/line-segments/line-segments.mjs +0 -30
  238. package/esm2020/objects/lib/lod/lod.mjs +0 -30
  239. package/esm2020/objects/lib/mesh/mesh.mjs +0 -30
  240. package/esm2020/objects/lib/points/points.mjs +0 -30
  241. package/esm2020/objects/lib/skeleton/skeleton.mjs +0 -41
  242. package/esm2020/objects/lib/skinned-mesh/skinned-mesh.mjs +0 -39
  243. package/esm2020/objects/lib/sprite/sprite.mjs +0 -30
  244. package/esm2020/primitives/angular-three-primitives.mjs +0 -5
  245. package/esm2020/primitives/index.mjs +0 -3
  246. package/esm2020/primitives/lib/common.mjs +0 -54
  247. package/esm2020/primitives/lib/object-primitive/object-primitive.mjs +0 -27
  248. package/esm2020/primitives/lib/primitive/primitive.mjs +0 -38
  249. package/esm2020/stats/angular-three-stats.mjs +0 -5
  250. package/esm2020/stats/index.mjs +0 -2
  251. package/esm2020/stats/lib/stats/stats.mjs +0 -54
  252. package/esm2020/textures/angular-three-textures.mjs +0 -5
  253. package/esm2020/textures/index.mjs +0 -12
  254. package/esm2020/textures/lib/canvas-texture/canvas-texture.mjs +0 -26
  255. package/esm2020/textures/lib/common.mjs +0 -13
  256. package/esm2020/textures/lib/compressed-array-texture/compressed-array-texture.mjs +0 -26
  257. package/esm2020/textures/lib/compressed-texture/compressed-texture.mjs +0 -26
  258. package/esm2020/textures/lib/cube-texture/cube-texture.mjs +0 -26
  259. package/esm2020/textures/lib/data-array-texture/data-array-texture.mjs +0 -26
  260. package/esm2020/textures/lib/data-texture/data-texture.mjs +0 -26
  261. package/esm2020/textures/lib/data3-dtexture/data3-dtexture.mjs +0 -26
  262. package/esm2020/textures/lib/depth-texture/depth-texture.mjs +0 -26
  263. package/esm2020/textures/lib/framebuffer-texture/framebuffer-texture.mjs +0 -26
  264. package/esm2020/textures/lib/video-texture/video-texture.mjs +0 -26
  265. package/fesm2015/angular-three-attributes.mjs +0 -475
  266. package/fesm2015/angular-three-attributes.mjs.map +0 -1
  267. package/fesm2015/angular-three-audios.mjs +0 -179
  268. package/fesm2015/angular-three-audios.mjs.map +0 -1
  269. package/fesm2015/angular-three-cameras.mjs +0 -236
  270. package/fesm2015/angular-three-cameras.mjs.map +0 -1
  271. package/fesm2015/angular-three-geometries.mjs +0 -488
  272. package/fesm2015/angular-three-geometries.mjs.map +0 -1
  273. package/fesm2015/angular-three-helpers.mjs +0 -378
  274. package/fesm2015/angular-three-helpers.mjs.map +0 -1
  275. package/fesm2015/angular-three-lights.mjs +0 -297
  276. package/fesm2015/angular-three-lights.mjs.map +0 -1
  277. package/fesm2015/angular-three-materials.mjs +0 -1415
  278. package/fesm2015/angular-three-materials.mjs.map +0 -1
  279. package/fesm2015/angular-three-objects.mjs +0 -381
  280. package/fesm2015/angular-three-objects.mjs.map +0 -1
  281. package/fesm2015/angular-three-primitives.mjs +0 -120
  282. package/fesm2015/angular-three-primitives.mjs.map +0 -1
  283. package/fesm2015/angular-three-stats.mjs +0 -62
  284. package/fesm2015/angular-three-stats.mjs.map +0 -1
  285. package/fesm2015/angular-three-textures.mjs +0 -228
  286. package/fesm2015/angular-three-textures.mjs.map +0 -1
  287. package/fesm2020/angular-three-attributes.mjs +0 -475
  288. package/fesm2020/angular-three-attributes.mjs.map +0 -1
  289. package/fesm2020/angular-three-audios.mjs +0 -179
  290. package/fesm2020/angular-three-audios.mjs.map +0 -1
  291. package/fesm2020/angular-three-cameras.mjs +0 -236
  292. package/fesm2020/angular-three-cameras.mjs.map +0 -1
  293. package/fesm2020/angular-three-geometries.mjs +0 -488
  294. package/fesm2020/angular-three-geometries.mjs.map +0 -1
  295. package/fesm2020/angular-three-helpers.mjs +0 -378
  296. package/fesm2020/angular-three-helpers.mjs.map +0 -1
  297. package/fesm2020/angular-three-lights.mjs +0 -297
  298. package/fesm2020/angular-three-lights.mjs.map +0 -1
  299. package/fesm2020/angular-three-materials.mjs +0 -1415
  300. package/fesm2020/angular-three-materials.mjs.map +0 -1
  301. package/fesm2020/angular-three-objects.mjs +0 -381
  302. package/fesm2020/angular-three-objects.mjs.map +0 -1
  303. package/fesm2020/angular-three-primitives.mjs +0 -120
  304. package/fesm2020/angular-three-primitives.mjs.map +0 -1
  305. package/fesm2020/angular-three-stats.mjs +0 -62
  306. package/fesm2020/angular-three-stats.mjs.map +0 -1
  307. package/fesm2020/angular-three-textures.mjs +0 -228
  308. package/fesm2020/angular-three-textures.mjs.map +0 -1
  309. package/geometries/README.md +0 -3
  310. package/geometries/index.d.ts +0 -23
  311. package/geometries/lib/box-geometry/box-geometry.d.ts +0 -8
  312. package/geometries/lib/buffer-geometry/buffer-geometry.d.ts +0 -8
  313. package/geometries/lib/capsule-geometry/capsule-geometry.d.ts +0 -8
  314. package/geometries/lib/circle-geometry/circle-geometry.d.ts +0 -8
  315. package/geometries/lib/common.d.ts +0 -1
  316. package/geometries/lib/cone-geometry/cone-geometry.d.ts +0 -8
  317. package/geometries/lib/cylinder-geometry/cylinder-geometry.d.ts +0 -8
  318. package/geometries/lib/dodecahedron-geometry/dodecahedron-geometry.d.ts +0 -8
  319. package/geometries/lib/edges-geometry/edges-geometry.d.ts +0 -8
  320. package/geometries/lib/extrude-geometry/extrude-geometry.d.ts +0 -8
  321. package/geometries/lib/icosahedron-geometry/icosahedron-geometry.d.ts +0 -8
  322. package/geometries/lib/instanced-buffer-geometry/instanced-buffer-geometry.d.ts +0 -8
  323. package/geometries/lib/lathe-geometry/lathe-geometry.d.ts +0 -8
  324. package/geometries/lib/octahedron-geometry/octahedron-geometry.d.ts +0 -8
  325. package/geometries/lib/plane-geometry/plane-geometry.d.ts +0 -8
  326. package/geometries/lib/polyhedron-geometry/polyhedron-geometry.d.ts +0 -8
  327. package/geometries/lib/ring-geometry/ring-geometry.d.ts +0 -8
  328. package/geometries/lib/shape-geometry/shape-geometry.d.ts +0 -8
  329. package/geometries/lib/sphere-geometry/sphere-geometry.d.ts +0 -8
  330. package/geometries/lib/tetrahedron-geometry/tetrahedron-geometry.d.ts +0 -8
  331. package/geometries/lib/torus-geometry/torus-geometry.d.ts +0 -8
  332. package/geometries/lib/torus-knot-geometry/torus-knot-geometry.d.ts +0 -8
  333. package/geometries/lib/tube-geometry/tube-geometry.d.ts +0 -8
  334. package/geometries/lib/wireframe-geometry/wireframe-geometry.d.ts +0 -8
  335. package/helpers/README.md +0 -3
  336. package/helpers/index.d.ts +0 -13
  337. package/helpers/lib/arrow-helper/arrow-helper.d.ts +0 -8
  338. package/helpers/lib/axes-helper/axes-helper.d.ts +0 -8
  339. package/helpers/lib/box-helper/box-helper.d.ts +0 -8
  340. package/helpers/lib/box3-helper/box3-helper.d.ts +0 -8
  341. package/helpers/lib/camera-helper/camera-helper.d.ts +0 -8
  342. package/helpers/lib/common.d.ts +0 -1
  343. package/helpers/lib/directional-light-helper/directional-light-helper.d.ts +0 -8
  344. package/helpers/lib/grid-helper/grid-helper.d.ts +0 -8
  345. package/helpers/lib/hemisphere-light-helper/hemisphere-light-helper.d.ts +0 -8
  346. package/helpers/lib/plane-helper/plane-helper.d.ts +0 -8
  347. package/helpers/lib/point-light-helper/point-light-helper.d.ts +0 -8
  348. package/helpers/lib/polar-grid-helper/polar-grid-helper.d.ts +0 -8
  349. package/helpers/lib/skeleton-helper/skeleton-helper.d.ts +0 -8
  350. package/helpers/lib/spot-light-helper/spot-light-helper.d.ts +0 -8
  351. package/lib/di/resize.d.ts +0 -12
  352. package/lib/di/window.d.ts +0 -1
  353. package/lib/directives/cursor.d.ts +0 -7
  354. package/lib/instance.d.ts +0 -81
  355. package/lib/pipes/math.d.ts +0 -7
  356. package/lib/pipes/pi.d.ts +0 -7
  357. package/lib/pipes/radian.d.ts +0 -7
  358. package/lib/pipes/side.d.ts +0 -8
  359. package/lib/ref.d.ts +0 -5
  360. package/lib/services/loader.d.ts +0 -11
  361. package/lib/services/resize.d.ts +0 -19
  362. package/lib/stores/component-store.d.ts +0 -69
  363. package/lib/utils/build-graph.d.ts +0 -3
  364. package/lib/utils/camera.d.ts +0 -4
  365. package/lib/utils/capitalize.d.ts +0 -1
  366. package/lib/utils/check-update.d.ts +0 -2
  367. package/lib/utils/events.d.ts +0 -6
  368. package/lib/utils/get-instance-local-state.d.ts +0 -2
  369. package/lib/utils/inject.d.ts +0 -9
  370. package/lib/utils/mutate.d.ts +0 -2
  371. package/lib/utils/proxy.d.ts +0 -7
  372. package/lib/utils/renderer.d.ts +0 -3
  373. package/lights/README.md +0 -3
  374. package/lights/index.d.ts +0 -9
  375. package/lights/lib/ambient-light/ambient-light.d.ts +0 -39
  376. package/lights/lib/ambient-light-probe/ambient-light-probe.d.ts +0 -40
  377. package/lights/lib/common.d.ts +0 -3
  378. package/lights/lib/directional-light/directional-light.d.ts +0 -40
  379. package/lights/lib/hemisphere-light/hemisphere-light.d.ts +0 -41
  380. package/lights/lib/hemisphere-light-probe/hemisphere-light-probe.d.ts +0 -42
  381. package/lights/lib/light-probe/light-probe.d.ts +0 -40
  382. package/lights/lib/point-light/point-light.d.ts +0 -42
  383. package/lights/lib/rect-area-light/rect-area-light.d.ts +0 -42
  384. package/lights/lib/spot-light/spot-light.d.ts +0 -45
  385. package/materials/README.md +0 -3
  386. package/materials/index.d.ts +0 -17
  387. package/materials/lib/common.d.ts +0 -1
  388. package/materials/lib/line-basic-material/line-basic-material.d.ts +0 -55
  389. package/materials/lib/line-dashed-material/line-dashed-material.d.ts +0 -58
  390. package/materials/lib/mesh-basic-material/mesh-basic-material.d.ts +0 -67
  391. package/materials/lib/mesh-depth-material/mesh-depth-material.d.ts +0 -58
  392. package/materials/lib/mesh-distance-material/mesh-distance-material.d.ts +0 -58
  393. package/materials/lib/mesh-lambert-material/mesh-lambert-material.d.ts +0 -78
  394. package/materials/lib/mesh-matcap-material/mesh-matcap-material.d.ts +0 -64
  395. package/materials/lib/mesh-normal-material/mesh-normal-material.d.ts +0 -61
  396. package/materials/lib/mesh-phong-material/mesh-phong-material.d.ts +0 -81
  397. package/materials/lib/mesh-physical-material/mesh-physical-material.d.ts +0 -97
  398. package/materials/lib/mesh-standard-material/mesh-standard-material.d.ts +0 -78
  399. package/materials/lib/mesh-toon-material/mesh-toon-material.d.ts +0 -74
  400. package/materials/lib/points-material/points-material.d.ts +0 -56
  401. package/materials/lib/raw-shader-material/raw-shader-material.d.ts +0 -68
  402. package/materials/lib/shader-material/shader-material.d.ts +0 -68
  403. package/materials/lib/shadow-material/shadow-material.d.ts +0 -52
  404. package/materials/lib/sprite-material/sprite-material.d.ts +0 -56
  405. package/objects/README.md +0 -3
  406. package/objects/index.d.ts +0 -12
  407. package/objects/lib/bone/bone.d.ts +0 -35
  408. package/objects/lib/common.d.ts +0 -3
  409. package/objects/lib/group/group.d.ts +0 -35
  410. package/objects/lib/instanced-mesh/instanced-mesh.d.ts +0 -44
  411. package/objects/lib/line/line.d.ts +0 -41
  412. package/objects/lib/line-loop/line-loop.d.ts +0 -41
  413. package/objects/lib/line-segments/line-segments.d.ts +0 -41
  414. package/objects/lib/lod/lod.d.ts +0 -40
  415. package/objects/lib/mesh/mesh.d.ts +0 -41
  416. package/objects/lib/points/points.d.ts +0 -41
  417. package/objects/lib/skeleton/skeleton.d.ts +0 -16
  418. package/objects/lib/skinned-mesh/skinned-mesh.d.ts +0 -45
  419. package/objects/lib/sprite/sprite.d.ts +0 -38
  420. package/primitives/README.md +0 -3
  421. package/primitives/index.d.ts +0 -2
  422. package/primitives/lib/common.d.ts +0 -3
  423. package/primitives/lib/object-primitive/object-primitive.d.ts +0 -35
  424. package/primitives/lib/primitive/primitive.d.ts +0 -10
  425. package/schematics/README.md +0 -11
  426. package/stats/README.md +0 -3
  427. package/stats/index.d.ts +0 -1
  428. package/stats/lib/stats/stats.d.ts +0 -16
  429. package/textures/README.md +0 -3
  430. package/textures/index.d.ts +0 -10
  431. package/textures/lib/canvas-texture/canvas-texture.d.ts +0 -8
  432. package/textures/lib/common.d.ts +0 -1
  433. package/textures/lib/compressed-array-texture/compressed-array-texture.d.ts +0 -8
  434. package/textures/lib/compressed-texture/compressed-texture.d.ts +0 -8
  435. package/textures/lib/cube-texture/cube-texture.d.ts +0 -8
  436. package/textures/lib/data-array-texture/data-array-texture.d.ts +0 -8
  437. package/textures/lib/data-texture/data-texture.d.ts +0 -8
  438. package/textures/lib/data3-dtexture/data3-dtexture.d.ts +0 -8
  439. package/textures/lib/depth-texture/depth-texture.d.ts +0 -8
  440. package/textures/lib/framebuffer-texture/framebuffer-texture.d.ts +0 -8
  441. package/textures/lib/video-texture/video-texture.d.ts +0 -8
package/lib/types.d.ts CHANGED
@@ -1,10 +1,17 @@
1
1
  /// <reference types="webxr" />
2
- import { ElementRef } from '@angular/core';
3
- import { ObservableInput } from 'rxjs';
2
+ import type { ElementRef, EventEmitter } from '@angular/core';
3
+ import type { BehaviorSubject } from 'rxjs';
4
4
  import * as THREE from 'three';
5
- import { Renderer, WebGLRenderer, WebGLRendererParameters } from 'three';
6
- import { NgtRef } from './ref';
7
- export declare type NgtEquConfig = {
5
+ import type { NgtRxStore } from './stores/rx-store';
6
+ export type NgtAnyRecord = Record<string, any>;
7
+ export type NgtNonFunctionKeys<T> = {
8
+ [K in keyof T]-?: T[K] extends Function ? never : K;
9
+ }[keyof T];
10
+ export type NgtProperties<T> = Pick<T, {
11
+ [K in keyof T]: T[K] extends (_: any) => any ? never : K;
12
+ }[keyof T]>;
13
+ export type NgtOverwrite<T, O> = Omit<T, NgtNonFunctionKeys<O>> & O;
14
+ export type NgtEquConfig = {
8
15
  /** Compare arrays by reference equality a === b (default), or by shallow equality */
9
16
  arrays?: 'reference' | 'shallow';
10
17
  /** Compare objects by reference equality a === b (default), or by shallow equality */
@@ -12,82 +19,54 @@ export declare type NgtEquConfig = {
12
19
  /** If true the keys in both a and b must match 1:1 (default), if false a's keys must intersect b's */
13
20
  strict?: boolean;
14
21
  };
15
- export declare type NgtObservableInput<T> = T | ObservableInput<T>;
16
- export declare type NgtAnyRecord = Record<string, any>;
17
- export declare type NgtAnyFunction<TReturn = any> = (...args: any[]) => TReturn;
18
- export declare type NgtAnyConstructor<TObject = any> = new (...args: any[]) => TObject;
19
- export declare type NgtAnyAbstractConstructor<TObject = any> = abstract new (...args: any[]) => TObject;
20
- export declare type NgtAnyCtor<TObject = any> = NgtAnyConstructor<TObject> | NgtAnyAbstractConstructor<TObject>;
21
- export declare type NgtProperties<T> = Pick<T, {
22
- [K in keyof T]: T[K] extends (_: any) => any ? never : K;
23
- }[keyof T]>;
24
- export declare type NgtNonFunctionKeys<T> = {
25
- [K in keyof T]-?: T[K] extends Function ? never : K;
26
- }[keyof T];
27
- export declare type NgtOverwrite<T, O> = Omit<T, NgtNonFunctionKeys<O>> & O;
28
- export declare type NgtDpr = number | [min: number, max: number];
29
- export declare type NgtSize = {
30
- width: number;
31
- height: number;
32
- top: number;
33
- left: number;
34
- updateStyle?: boolean;
35
- };
36
- export declare type NgtViewport = NgtSize & {
37
- /** The initial pixel ratio */
38
- initialDpr: number;
39
- /** Current pixel ratio */
40
- dpr: number;
41
- /** size.width / viewport.width */
42
- factor: number;
43
- /** Camera distance */
44
- distance: number;
45
- /** Camera aspect ratio: width / height */
46
- aspect: number;
47
- };
48
- export declare type NgtPerformance = {
49
- /** Current performance normal, between min and max */
50
- current: number;
51
- /** How low the performance can go, between 0 and max */
52
- min: number;
53
- /** How high the performance can go, between min and max */
54
- max: number;
55
- /** Time until current returns to max in ms */
56
- debounce: number;
57
- /** Sets current to min, puts the system in regression */
58
- regress: () => void;
22
+ export interface NgtIntersection extends THREE.Intersection {
23
+ /** The event source (the object which registered the handler) */
24
+ eventObject: THREE.Object3D;
25
+ }
26
+ export interface NgtPointerCaptureTarget {
27
+ intersection: NgtIntersection;
28
+ target: Element;
29
+ }
30
+ export type NgtCamera = THREE.OrthographicCamera | THREE.PerspectiveCamera;
31
+ export type NgtCameraManual = NgtCamera & {
32
+ manual?: boolean;
59
33
  };
60
- export declare type NgtCamera = THREE.OrthographicCamera | THREE.PerspectiveCamera;
61
- export declare type NgtDomEvent = PointerEvent | MouseEvent | WheelEvent;
62
34
  export interface NgtIntersectionEvent<TSourceEvent> extends NgtIntersection {
35
+ /** The event source (the object which registered the handler) */
36
+ eventObject: THREE.Object3D;
63
37
  /** An array of intersections */
64
38
  intersections: NgtIntersection[];
65
39
  /** vec3.set(pointer.x, pointer.y, 0).unproject(camera) */
66
40
  unprojectedPoint: THREE.Vector3;
67
- /** Normalized event coordinates (x: [-1, 1], y: [-1, 1]) */
41
+ /** Normalized event coordinates */
68
42
  pointer: THREE.Vector2;
69
- /** delta between first click and this event */
43
+ /** Delta between first click and this event */
70
44
  delta: number;
71
- /** the ray casted from the camera */
45
+ /** The ray that pierced it */
72
46
  ray: THREE.Ray;
73
- /** the camera used to raycast */
47
+ /** The camera that was used by the raycaster */
74
48
  camera: NgtCamera;
75
49
  /** stopPropagation will stop underlying handlers from firing */
76
50
  stopPropagation: () => void;
77
- /** the original event */
51
+ /** The original host event */
78
52
  nativeEvent: TSourceEvent;
79
- /** if the event was stopped by calling stopPropagation */
53
+ /** If the event was stopped by calling stopPropagation */
80
54
  stopped: boolean;
81
55
  }
82
- export interface NgtIntersection extends THREE.Intersection {
83
- /** The event source (the object which registered the handler) */
84
- eventObject: THREE.Object3D;
85
- }
86
- export interface NgtPointerCaptureTarget {
87
- intersection: NgtIntersection;
88
- target: Element;
56
+ export type NgtThreeEvent<TEvent> = NgtIntersectionEvent<TEvent> & NgtProperties<TEvent>;
57
+ export type NgtDomEvent = PointerEvent | MouseEvent | WheelEvent;
58
+ export interface NgtEvents {
59
+ click: EventListener;
60
+ contextmenu: EventListener;
61
+ dblclick: EventListener;
62
+ wheel: EventListener;
63
+ pointerdown: EventListener;
64
+ pointerup: EventListener;
65
+ pointerleave: EventListener;
66
+ pointermove: EventListener;
67
+ pointercancel: EventListener;
68
+ lostpointercapture: EventListener;
89
69
  }
90
- export declare type NgtThreeEvent<TEvent> = NgtIntersectionEvent<TEvent>;
91
70
  export interface NgtEventHandlers {
92
71
  click?: (event: NgtThreeEvent<MouseEvent>) => void;
93
72
  contextmenu?: (event: NgtThreeEvent<MouseEvent>) => void;
@@ -103,114 +82,103 @@ export interface NgtEventHandlers {
103
82
  pointercancel?: (event: NgtThreeEvent<PointerEvent>) => void;
104
83
  wheel?: (event: NgtThreeEvent<WheelEvent>) => void;
105
84
  }
106
- export declare type NgtEvents = {
107
- click: EventListener;
108
- contextmenu: EventListener;
109
- dblclick: EventListener;
110
- wheel: EventListener;
111
- pointerdown: EventListener;
112
- pointerup: EventListener;
113
- pointerleave: EventListener;
114
- pointermove: EventListener;
115
- pointercancel: EventListener;
116
- lostpointercapture: EventListener;
117
- };
118
- export declare type NgtConditionalType<Child, Parent, Truthy, Falsy> = Child extends Parent ? Truthy : Falsy;
119
- export interface NgtLoaderProto<T> extends THREE.Loader {
120
- load(url: string | string[], onLoad?: (result: T) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): unknown;
121
- }
122
- export interface NgtLoaderExtensions {
123
- (loader: THREE.Loader): void;
85
+ export type NgtFilterFunction = (items: THREE.Intersection[], store: NgtRxStore<NgtState>) => THREE.Intersection[];
86
+ export type NgtComputeFunction = (event: NgtDomEvent, root: NgtRxStore<NgtState>, previous?: NgtRxStore<NgtState>) => void;
87
+ export interface NgtEventManager<TTarget = any> {
88
+ /** Determines if the event layer is active */
89
+ enabled: boolean;
90
+ /** Event layer priority, higher prioritized layers come first and may stop(-propagate) lower layer */
91
+ priority: number;
92
+ /** The compute function needs to set up the raycaster and an xy- pointer */
93
+ compute?: NgtComputeFunction;
94
+ /** The filter can re-order or re-structure the intersections */
95
+ filter?: NgtFilterFunction;
96
+ /** The target node the event layer is tied to */
97
+ connected?: TTarget;
98
+ /** All the pointer event handlers through which the host forwards native events */
99
+ handlers?: NgtEvents;
100
+ /** Allows re-connecting to another target */
101
+ connect?: (target: TTarget) => void;
102
+ /** Removes all existing events handlers from the target */
103
+ disconnect?: () => void;
124
104
  }
125
- export declare type NgtLoaderResult<T> = T extends any[] ? NgtLoaderProto<T[number]> : NgtLoaderProto<T>;
126
- export declare type NgtBranchingReturn<T = any, Parent = any, Coerced = any> = NgtConditionalType<T, Parent, Coerced, T>;
127
- export interface NgtObjectMap {
128
- nodes: {
129
- [name: string]: THREE.Object3D;
130
- };
131
- materials: {
132
- [name: string]: THREE.Material;
133
- };
134
- [key: string]: any;
105
+ export interface NgtPerformance {
106
+ /** Current performance normal, between min and max */
107
+ current: number;
108
+ /** How low the performance can go, between 0 and max */
109
+ min: number;
110
+ /** How high the performance can go, between min and max */
111
+ max: number;
112
+ /** Time until current returns to max in ms */
113
+ debounce: number;
114
+ /** Sets current to min, puts the system in regression */
115
+ regress: () => void;
135
116
  }
136
- /**
137
- * If **T** contains a constructor, @see ConstructorParameters must be used, otherwise **T**.
138
- */
139
- export declare type NgtNodeArgs<T> = T extends new (...args: any) => any ? ConstructorParameters<T> : T;
140
- /**
141
- * Turn an implementation of THREE.Vector in to the type that an r3f component would accept as a prop.
142
- */
143
- declare type NgtVectorLike<VectorClass extends THREE.Vector> = VectorClass | Parameters<VectorClass['set']> | Readonly<Parameters<VectorClass['set']>> | Parameters<VectorClass['setScalar']>[0];
144
- export declare type NgtVector2 = NgtVectorLike<THREE.Vector2>;
145
- export declare type NgtVector3 = NgtVectorLike<THREE.Vector3>;
146
- export declare type NgtVector4 = NgtVectorLike<THREE.Vector4>;
147
- export declare type NgtLayers = THREE.Layers | Parameters<THREE.Layers['set']>[0];
148
- export declare type NgtQuaternion = THREE.Quaternion | Parameters<THREE.Quaternion['set']>;
149
- export declare type NgtEuler = THREE.Euler | Parameters<THREE.Euler['set']>;
150
- export declare type NgtMatrix4 = THREE.Matrix4 | Parameters<THREE.Matrix4['set']> | Readonly<THREE.Matrix4['set']>;
151
- export declare type NgtColor = ConstructorParameters<typeof THREE.Color> | THREE.ColorRepresentation;
152
- export declare type NgtExtendedColors<T> = {
153
- [K in keyof T]: T[K] extends THREE.Color | undefined ? NgtColor : T[K];
117
+ export type NgtDpr = number | [min: number, max: number];
118
+ export type NgtSize = {
119
+ width: number;
120
+ height: number;
121
+ top: number;
122
+ left: number;
154
123
  };
155
- export interface NgtNodeProps<P> {
156
- attach?: string[];
157
- /** Constructor arguments */
158
- args?: NgtNodeArgs<P>;
159
- }
160
- export declare type NgtNode<T, P> = NgtExtendedColors<NgtOverwrite<Partial<T>, NgtNodeProps<P>>>;
161
- export declare type NgtObject3DNode<T, P> = NgtOverwrite<NgtNode<T, P>, {
162
- position?: NgtVector3;
163
- up?: NgtVector3;
164
- scale?: NgtVector3;
165
- rotation?: NgtEuler;
166
- matrix?: NgtMatrix4;
167
- quaternion?: NgtQuaternion;
168
- layers?: NgtLayers;
169
- dispose?: (() => void) | null;
170
- }> & NgtEventHandlers;
171
- export declare type NgtCameraWithManual = NgtCamera & {
172
- manual?: boolean;
124
+ export type NgtViewport = NgtSize & {
125
+ /** The initial pixel ratio */
126
+ initialDpr: number;
127
+ /** Current pixel ratio */
128
+ dpr: number;
129
+ /** size.width / viewport.width */
130
+ factor: number;
131
+ /** Camera distance */
132
+ distance: number;
133
+ /** Camera aspect ratio: width / height */
134
+ aspect: number;
173
135
  };
174
136
  export interface NgtRenderState extends NgtState {
175
137
  delta: number;
176
138
  frame?: XRFrame;
177
139
  }
178
- export declare type NgtBeforeRenderCallback<TObject = any> = (state: NgtRenderState, obj: TObject) => void;
140
+ export interface NgtBeforeRenderEvent<TObject extends NgtInstanceNode = NgtInstanceNode> {
141
+ state: NgtRenderState;
142
+ object: TObject;
143
+ }
179
144
  export interface NgtBeforeRenderRecord {
180
- obj?: THREE.Object3D | NgtRef;
181
- callback: NgtBeforeRenderCallback<THREE.Object3D | undefined>;
145
+ callback: (state: NgtRenderState) => void;
146
+ store: NgtRxStore<NgtState>;
182
147
  priority?: number;
183
- stateFactory: NgtStateFactory;
184
148
  }
185
149
  export interface NgtInternalState {
186
150
  active: boolean;
187
151
  priority: number;
188
152
  frames: number;
189
- lastEvent: NgtDomEvent | null;
153
+ lastEvent: NgtDomEvent;
190
154
  interaction: THREE.Object3D[];
191
155
  hovered: Map<string, NgtThreeEvent<NgtDomEvent>>;
192
156
  subscribers: NgtBeforeRenderRecord[];
193
157
  capturedMap: Map<number, Map<THREE.Object3D, NgtPointerCaptureTarget>>;
194
158
  initialClick: [x: number, y: number];
195
159
  initialHits: THREE.Object3D[];
196
- subscribe: (callback: NgtBeforeRenderCallback, priority?: number, stateFactory?: NgtStateFactory, obj?: THREE.Object3D | NgtRef) => () => void;
160
+ subscribe: (callback: NgtBeforeRenderRecord['callback'], priority?: number, store?: NgtRxStore<NgtState>) => () => void;
197
161
  }
198
162
  export interface NgtState {
199
- /** The flag to notify if the Canvas is ready to render */
163
+ /** Set current state */
164
+ set: NgtRxStore<NgtState>['set'];
165
+ /** Get current state */
166
+ get: NgtRxStore<NgtState>['get'];
167
+ select: NgtRxStore<NgtState>['select'];
168
+ /** canvas ready state */
200
169
  ready: boolean;
201
170
  /** The instance of the renderer */
202
171
  gl: THREE.WebGLRenderer;
203
172
  /** Default camera */
204
- camera: NgtCameraWithManual /** Default scene */;
205
- cameraRef: NgtRef<NgtCameraWithManual>;
173
+ camera: NgtCameraManual;
174
+ /** Default scene */
206
175
  scene: THREE.Scene;
207
- sceneRef: NgtRef<THREE.Scene>;
208
176
  /** Default raycaster */
209
177
  raycaster: THREE.Raycaster;
210
178
  /** Default clock */
211
179
  clock: THREE.Clock;
212
180
  /** Event layer interface, contains the event handler and the node they're connected to */
213
- events: NgtEventManager<any>;
181
+ events: NgtEventManager;
214
182
  /** XR interface */
215
183
  xr: {
216
184
  connect: () => void;
@@ -233,7 +201,7 @@ export interface NgtState {
233
201
  size: NgtSize;
234
202
  /** Reactive size of the viewport in threejs units */
235
203
  viewport: NgtViewport & {
236
- getCurrentViewport: (camera?: NgtCamera, target?: THREE.Vector3 | Parameters<THREE.Vector3['set']>, size?: NgtSize) => Omit<NgtViewport, 'dpr' | 'initialDpr'>;
204
+ getCurrentViewport: (camera?: NgtCameraManual, target?: THREE.Vector3 | Parameters<THREE.Vector3['set']>, size?: NgtSize) => Omit<NgtViewport, 'dpr' | 'initialDpr'>;
237
205
  };
238
206
  /** Flags the canvas for render, but doesn't render in itself */
239
207
  invalidate: (frames?: number) => void;
@@ -249,63 +217,87 @@ export interface NgtState {
249
217
  setDpr: (dpr: NgtDpr) => void;
250
218
  /** Shortcut to frameloop flags */
251
219
  setFrameloop: (frameloop?: 'always' | 'demand' | 'never') => void;
252
- /** Shortcut to set performance.current for performance regressing */
253
- setPerformanceCurrent: (current: number) => void;
254
- /** Shortcut to set the current camera */
255
- setCamera: (camera: NgtCamera) => void;
256
- /** Shortcut to add an object as an Event interaction */
257
- addInteraction(interaction: THREE.Object3D): void;
258
- /** Shortcut to remove an object UUID from participating in Events */
259
- removeInteraction(uuid: string): void;
260
220
  /** When the canvas was clicked but nothing was hit */
261
221
  onPointerMissed?: (event: MouseEvent) => void;
262
- internal: NgtInternalState;
263
222
  /** If this state model is layerd (via createPortal) then this contains the previous layer */
264
- previousStateFactory?: NgtStateFactory;
265
- }
266
- export declare type NgtStateFactory = () => NgtState;
267
- export declare type NgtFilterFunction = (items: THREE.Intersection[], stateFactory: NgtStateFactory) => THREE.Intersection[];
268
- export declare type NgtComputeFunction = (event: NgtDomEvent, rootStateFactory: NgtStateFactory, previousStateFactory?: NgtStateFactory) => void;
269
- export interface NgtEventManager<TTarget> {
270
- /** Determines if the event layer is active */
271
- enabled: boolean;
272
- /** Event layer priority, higher prioritized layers come first and may stop(-propagate) lower layer */
273
- priority: number;
274
- /** The compute function needs to set up the raycaster and an xy- pointer */
275
- compute?: NgtComputeFunction;
276
- /** The filter can re-order or re-structure the intersections */
277
- filter?: NgtFilterFunction;
278
- /** The target node the event layer is tied to */
279
- connected?: TTarget;
280
- /** All the pointer event handlers through which the host forwards native events */
281
- handlers?: NgtEvents;
282
- /** Allows re-connecting to another target */
283
- connect?: (target: TTarget) => void;
284
- /** Removes all existing events handlers from the target */
285
- disconnect?: () => void;
223
+ previousStore?: NgtRxStore<NgtState>;
224
+ /** Internals */
225
+ internal: NgtInternalState;
226
+ /** shortcuts for add and remove interaction */
227
+ addInteraction: (interaction: THREE.Object3D) => void;
228
+ removeInteraction: (uuid: string) => void;
286
229
  }
287
- export declare type NgtAttachFunction<TChild = any, TParent = any> = (parent: NgtRef<TParent>, child: NgtRef<TChild>, stateFactory: NgtStateFactory) => void | (() => void);
230
+ export type NgtAttachFunction<TChild = any, TParent = any> = (parent: TParent, child: TChild, store: NgtRxStore<NgtState>) => void | (() => void);
231
+ export type NgtAfterAttach<TParent extends NgtInstanceNode = NgtInstanceNode, TChild extends NgtInstanceNode = NgtInstanceNode> = {
232
+ parent: TParent;
233
+ node: TChild;
234
+ };
288
235
  export interface NgtInstanceLocalState {
289
236
  /** the state getter of the canvas that the instance is being rendered to */
290
- stateFactory: NgtStateFactory;
291
- rootFactory: NgtStateFactory;
292
- instancesRefs: NgtRef<NgtRef[]>;
293
- objectsRefs: NgtRef<NgtRef[]>;
294
- parentRef: NgtRef<NgtInstanceNode> | null;
295
- isPrimitive?: boolean;
296
- isRaw?: boolean;
237
+ store: NgtRxStore<NgtState>;
238
+ nonObjects: BehaviorSubject<NgtInstanceNode[]>;
239
+ objects: BehaviorSubject<NgtInstanceNode[]>;
240
+ add: (instance: NgtInstanceNode, type: 'objects' | 'nonObjects') => void;
241
+ remove: (instance: NgtInstanceNode, type: 'objects' | 'nonObjects') => void;
242
+ parent: NgtInstanceNode | null;
243
+ primitive?: boolean;
297
244
  eventCount: number;
298
245
  handlers: Partial<NgtEventHandlers>;
299
246
  args?: unknown[];
300
- attach?: string[] | (() => void);
301
- attachValue?: unknown;
302
- memoized?: NgtAnyRecord;
247
+ attach?: string[] | NgtAttachFunction;
248
+ previousAttach?: unknown | (() => void);
249
+ isRaw?: boolean;
250
+ priority?: number;
251
+ afterUpdate?: EventEmitter<NgtInstanceNode>;
252
+ afterAttach?: EventEmitter<NgtAfterAttach>;
303
253
  }
304
- export declare type NgtInstanceNode<TNode = any> = TNode & {
254
+ export type NgtInstanceNode<TNode = any> = TNode & {
305
255
  __ngt__: NgtInstanceLocalState;
306
- [key: string]: any;
256
+ } & NgtAnyRecord;
257
+ export type NgtGLRenderer = {
258
+ render: (scene: THREE.Scene, camera: THREE.Camera) => void;
259
+ };
260
+ export type NgtGLOptions = NgtGLRenderer | ((canvas: HTMLCanvasElement) => NgtGLRenderer) | Partial<NgtProperties<THREE.WebGLRenderer> | THREE.WebGLRendererParameters> | undefined;
261
+ export type NgtExtendedColors<T> = {
262
+ [K in keyof T]: T[K] extends THREE.Color | undefined ? THREE.ColorRepresentation : T[K];
307
263
  };
308
- export declare type NgtGLOptions = Renderer | ((canvas: HTMLCanvasElement) => Renderer) | Partial<NgtProperties<WebGLRenderer> | WebGLRendererParameters> | undefined;
264
+ /**
265
+ * If **T** contains a constructor, @see ConstructorParameters must be used, otherwise **T**.
266
+ */
267
+ export type NgtNodeArgs<T> = T extends new (...args: any) => any ? ConstructorParameters<T> : T;
268
+ export interface NgtNodeProps<P> {
269
+ attach?: string[];
270
+ /** Constructor arguments */
271
+ args?: NgtNodeArgs<P>;
272
+ }
273
+ export type NgtNode<T, P> = NgtExtendedColors<NgtOverwrite<Partial<T>, NgtNodeProps<P>>>;
274
+ export type NgtObject3DNode<T, P> = NgtOverwrite<NgtNode<T, P>, {
275
+ position?: THREE.Vector3 | Parameters<THREE.Vector3['set']>;
276
+ up?: THREE.Vector3 | Parameters<THREE.Vector3['set']>;
277
+ scale?: THREE.Vector3 | Parameters<THREE.Vector3['set']>;
278
+ rotation?: THREE.Euler | Parameters<THREE.Euler['set']>;
279
+ matrix?: THREE.Matrix4 | Parameters<THREE.Matrix4['set']>;
280
+ quaternion?: THREE.Quaternion | Parameters<THREE.Quaternion['set']>;
281
+ layers?: THREE.Layers | Parameters<THREE.Layers['set']>;
282
+ }> & NgtEventHandlers;
283
+ export type NgtConditionalType<Child, Parent, Truthy, Falsy> = Child extends Parent ? Truthy : Falsy;
284
+ export interface NgtLoaderProto<T> extends THREE.Loader {
285
+ load(url: string | string[], onLoad?: (result: T) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): unknown;
286
+ }
287
+ export interface NgtLoaderExtensions {
288
+ (loader: THREE.Loader): void;
289
+ }
290
+ export type NgtLoaderResult<T> = T extends any[] ? NgtLoaderProto<T[number]> : NgtLoaderProto<T>;
291
+ export type NgtBranchingReturn<T = any, Parent = any, Coerced = any> = NgtConditionalType<T, Parent, Coerced, T>;
292
+ export interface NgtObjectMap {
293
+ nodes: {
294
+ [name: string]: THREE.Object3D;
295
+ };
296
+ materials: {
297
+ [name: string]: THREE.Material;
298
+ };
299
+ [key: string]: any;
300
+ }
309
301
  export interface NgtCanvasInputs {
310
302
  /** A threejs renderer instance or props that go into the default renderer */
311
303
  gl?: NgtGLOptions;
@@ -323,7 +315,7 @@ export interface NgtCanvasInputs {
323
315
  legacy?: boolean;
324
316
  /** Switch off automatic sRGB encoding and gamma correction */
325
317
  linear?: boolean;
326
- /** Use `THREE.NoToneMapping` instead of `THREE.ACESFilmicToneMapping` */
318
+ /** Use `NoToneMapping` instead of `ACESFilmicToneMapping` */
327
319
  flat?: boolean;
328
320
  /** Creates an orthographic camera */
329
321
  orthographic?: boolean;
@@ -341,18 +333,17 @@ export interface NgtCanvasInputs {
341
333
  dpr?: NgtDpr;
342
334
  /** Props that go into the default raycaster */
343
335
  raycaster?: Partial<THREE.Raycaster>;
344
- /** A `THREE.Camera` instance or props that go into the default camera */
336
+ /** A `Camera` instance or props that go into the default camera */
345
337
  camera?: (NgtCamera | Partial<NgtObject3DNode<THREE.Camera, typeof THREE.Camera> & NgtObject3DNode<THREE.PerspectiveCamera, typeof THREE.PerspectiveCamera> & NgtObject3DNode<THREE.OrthographicCamera, typeof THREE.OrthographicCamera>>) & {
346
338
  /** Flags the camera as manual, putting projection into your own hands */
347
339
  manual?: boolean;
348
340
  };
349
341
  /** An R3F event manager to manage elements' pointer events */
350
- events?: (stateFactory: NgtStateFactory) => NgtEventManager<HTMLElement>;
342
+ events?: (store: NgtRxStore<NgtState>) => NgtEventManager<HTMLElement>;
351
343
  /** The target where events are being subscribed to, default: the div that wraps canvas */
352
344
  eventSource?: HTMLElement | ElementRef<HTMLElement>;
353
345
  /** The event prefix that is cast into canvas pointer x/y events, default: "offset" */
354
346
  eventPrefix?: 'offset' | 'client' | 'page' | 'layer' | 'screen';
355
347
  /** Default coordinate for the camera to look at */
356
- lookAt?: THREE.Vector3;
348
+ lookAt?: THREE.Vector3 | Parameters<THREE.Vector3['set']>;
357
349
  }
358
- export {};
@@ -1,6 +1,2 @@
1
- import type { NgtAnyRecord } from '../types';
2
- export declare function diffProps<TInstance extends object>(instance: TInstance, props: NgtAnyRecord, previousProps?: NgtAnyRecord, remove?: boolean): {
3
- changes: [key: string, value: unknown][];
4
- memoized: NgtAnyRecord;
5
- };
6
- export declare function applyProps<TInstance extends object>(instance: TInstance, props: NgtAnyRecord): TInstance;
1
+ import type { NgtAnyRecord, NgtInstanceNode } from '../types';
2
+ export declare function applyProps(instance: NgtInstanceNode, props: NgtAnyRecord): NgtInstanceNode;
@@ -0,0 +1,3 @@
1
+ import type { NgtAnyRecord, NgtAttachFunction } from '../types';
2
+ export declare function attach(object: NgtAnyRecord, value: unknown, paths?: string[]): void;
3
+ export declare function detach(parent: NgtAnyRecord, child: NgtAnyRecord, attachProp: string[] | NgtAttachFunction): void;
@@ -1,4 +1,4 @@
1
- import { NgtRef } from '../ref';
2
- import type { NgtAnyRecord, NgtInstanceNode, NgtStateFactory } from '../types';
1
+ import type { NgtAnyRecord, NgtInstanceLocalState, NgtInstanceNode } from '../types';
2
+ export declare function getLocalState<TInstance extends object = NgtAnyRecord>(obj: TInstance | undefined): NgtInstanceLocalState;
3
3
  export declare function invalidateInstance<TInstance extends object>(instance: TInstance): void;
4
- export declare function prepare<TInstance extends object = NgtAnyRecord>(instance: TInstance, parentStateFactory: NgtStateFactory, rootStateFactory: NgtStateFactory, parentInstance?: NgtRef, previousInstance?: NgtRef, isPrimitive?: boolean): NgtInstanceNode<TInstance>;
4
+ export declare function prepare<TInstance extends object = NgtAnyRecord>(object: TInstance, localState?: Partial<NgtInstanceLocalState>): NgtInstanceNode<TInstance>;
package/lib/utils/is.d.ts CHANGED
@@ -1,21 +1,17 @@
1
+ import { ElementRef } from '@angular/core';
1
2
  import * as THREE from 'three';
2
- import { NgtRef } from '../ref';
3
3
  import type { NgtEquConfig } from '../types';
4
4
  export declare const is: {
5
5
  obj: (a: unknown) => a is object;
6
6
  material: (a: unknown) => a is THREE.Material;
7
7
  geometry: (a: unknown) => a is THREE.BufferGeometry;
8
- mesh: (a: unknown) => a is THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>;
9
- color: (a: unknown) => a is THREE.Color;
10
- orthographic: (a: unknown) => a is THREE.OrthographicCamera;
11
- perspective: (a: unknown) => a is THREE.PerspectiveCamera;
8
+ orthographicCamera: (a: unknown) => a is THREE.OrthographicCamera;
9
+ perspectiveCamera: (a: unknown) => a is THREE.PerspectiveCamera;
12
10
  camera: (a: unknown) => a is THREE.Camera;
13
- glRenderer: (a: unknown) => a is THREE.WebGLRenderer;
11
+ renderer: (a: unknown) => a is THREE.WebGLRenderer;
14
12
  scene: (a: unknown) => a is THREE.Scene;
15
- object3d: (a: unknown) => a is THREE.Object3D<THREE.Event>;
13
+ object3D: (a: unknown) => a is THREE.Object3D<THREE.Event>;
16
14
  instance: (a: unknown) => a is any;
17
- ref: (a: unknown) => a is NgtRef<any>;
18
- supportColorManagement: () => boolean;
19
- canvas: (a: unknown) => a is HTMLCanvasElement;
15
+ ref: (a: unknown) => a is ElementRef<any>;
20
16
  equ(a: any, b: any, { arrays, objects, strict }?: NgtEquConfig): boolean;
21
17
  };
@@ -1,4 +1,7 @@
1
- import type { NgtAnyConstructor, NgtDpr, NgtIntersection } from '../types';
1
+ import * as THREE from 'three';
2
+ import type { NgtDpr, NgtGLOptions, NgtIntersection, NgtObjectMap, NgtSize } from '../types';
2
3
  export declare function makeId(event?: NgtIntersection): string;
3
4
  export declare function makeDpr(dpr: NgtDpr, window?: Window): number;
4
- export declare function make<TType extends NgtAnyConstructor>(type: TType, input?: InstanceType<TType> | Parameters<typeof type.prototype['set']> | Parameters<typeof type.prototype['setScalar']>[0] | ConstructorParameters<TType>): InstanceType<TType>;
5
+ export declare function makeDefaultCamera(isOrthographic: boolean, size: NgtSize): THREE.OrthographicCamera | THREE.PerspectiveCamera;
6
+ export declare function makeDefaultRenderer(glOptions: NgtGLOptions, canvasElement: HTMLCanvasElement): THREE.WebGLRenderer;
7
+ export declare function makeObjectGraph(object: THREE.Object3D): NgtObjectMap;
@@ -0,0 +1,4 @@
1
+ import type { NgtCameraManual, NgtSize } from '../types';
2
+ export declare function checkNeedsUpdate(value: unknown): void;
3
+ export declare function checkUpdate(value: unknown): void;
4
+ export declare function updateCamera(camera: NgtCameraManual, size: NgtSize): void;
@@ -0,0 +1,4 @@
1
+ import { NgtRxStore } from '../stores/rx-store';
2
+ import type { NgtEventManager, NgtState } from '../types';
3
+ export declare const supportedEvents: readonly ["click", "contextmenu", "dblclick", "pointerup", "pointerdown", "pointerover", "pointerout", "pointerenter", "pointerleave", "pointermove", "pointermissed", "pointercancel", "wheel"];
4
+ export declare function createPointerEvents(store: NgtRxStore<NgtState>): NgtEventManager<HTMLElement>;