angular-three-soba 2.0.0-beta.8 → 2.0.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 (423) hide show
  1. package/README.md +62 -4
  2. package/abstractions/README.md +279 -2
  3. package/abstractions/index.d.ts +13 -6
  4. package/abstractions/lib/billboard.d.ts +19 -0
  5. package/abstractions/lib/catmull-rom-line.d.ts +617 -0
  6. package/abstractions/lib/cubic-bezier-line.d.ts +19 -0
  7. package/abstractions/lib/edges.d.ts +800 -0
  8. package/abstractions/lib/gradient-texture.d.ts +24 -0
  9. package/abstractions/lib/grid.d.ts +315 -0
  10. package/abstractions/lib/helper.d.ts +25 -0
  11. package/abstractions/lib/line.d.ts +41 -0
  12. package/abstractions/lib/prism-geometry.d.ts +32 -0
  13. package/abstractions/lib/quadratic-bezier-line.d.ts +21 -0
  14. package/abstractions/lib/rounded-box.d.ts +41 -0
  15. package/abstractions/lib/text-3d.d.ts +314 -0
  16. package/abstractions/lib/text.d.ts +54 -0
  17. package/cameras/README.md +91 -2
  18. package/cameras/index.d.ts +4 -4
  19. package/cameras/lib/camera-content.d.ts +10 -0
  20. package/cameras/lib/cube-camera.d.ts +38 -0
  21. package/cameras/lib/orthographic-camera.d.ts +40 -0
  22. package/cameras/lib/perspective-camera.d.ts +36 -0
  23. package/controls/README.md +96 -2
  24. package/controls/index.d.ts +4 -1
  25. package/controls/lib/camera-controls.d.ts +31 -0
  26. package/controls/lib/orbit-controls.d.ts +38 -0
  27. package/controls/lib/pivot-controls/axis-arrow.d.ts +31 -0
  28. package/controls/lib/pivot-controls/axis-rotator.d.ts +30 -0
  29. package/controls/lib/pivot-controls/pivot-controls.d.ts +110 -0
  30. package/controls/lib/pivot-controls/plane-slider.d.ts +32 -0
  31. package/controls/lib/pivot-controls/scaling-sphere.d.ts +32 -0
  32. package/controls/lib/scroll-controls.d.ts +78 -0
  33. package/esm2022/abstractions/index.mjs +14 -7
  34. package/esm2022/abstractions/lib/billboard.mjs +69 -0
  35. package/esm2022/abstractions/lib/catmull-rom-line.mjs +76 -0
  36. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +51 -0
  37. package/esm2022/abstractions/lib/edges.mjs +70 -0
  38. package/esm2022/abstractions/lib/gradient-texture.mjs +91 -0
  39. package/esm2022/abstractions/lib/grid.mjs +103 -0
  40. package/esm2022/abstractions/lib/helper.mjs +76 -0
  41. package/esm2022/abstractions/lib/line.mjs +126 -0
  42. package/esm2022/abstractions/lib/prism-geometry.mjs +46 -0
  43. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +73 -0
  44. package/esm2022/abstractions/lib/rounded-box.mjs +111 -0
  45. package/esm2022/abstractions/lib/text-3d.mjs +98 -0
  46. package/esm2022/abstractions/lib/text.mjs +91 -0
  47. package/esm2022/cameras/index.mjs +5 -5
  48. package/esm2022/cameras/lib/camera-content.mjs +14 -0
  49. package/esm2022/cameras/lib/cube-camera.mjs +111 -0
  50. package/esm2022/cameras/lib/orthographic-camera.mjs +131 -0
  51. package/esm2022/cameras/lib/perspective-camera.mjs +104 -0
  52. package/esm2022/controls/index.mjs +5 -2
  53. package/esm2022/controls/lib/camera-controls.mjs +127 -0
  54. package/esm2022/controls/lib/orbit-controls.mjs +132 -0
  55. package/esm2022/controls/lib/pivot-controls/axis-arrow.mjs +263 -0
  56. package/esm2022/controls/lib/pivot-controls/axis-rotator.mjs +264 -0
  57. package/esm2022/controls/lib/pivot-controls/pivot-controls.mjs +340 -0
  58. package/esm2022/controls/lib/pivot-controls/plane-slider.mjs +266 -0
  59. package/esm2022/controls/lib/pivot-controls/scaling-sphere.mjs +232 -0
  60. package/esm2022/controls/lib/scroll-controls.mjs +268 -0
  61. package/esm2022/loaders/index.mjs +6 -5
  62. package/esm2022/loaders/lib/font-loader.mjs +49 -0
  63. package/esm2022/loaders/lib/gltf-loader.mjs +51 -0
  64. package/esm2022/loaders/lib/loader.mjs +109 -0
  65. package/esm2022/loaders/lib/progress.mjs +51 -0
  66. package/esm2022/loaders/lib/texture-loader.mjs +32 -0
  67. package/esm2022/materials/index.mjs +8 -7
  68. package/esm2022/materials/lib/custom-shader-material.mjs +71 -0
  69. package/esm2022/materials/lib/mesh-distort-material.mjs +42 -0
  70. package/esm2022/materials/lib/mesh-reflector-material.mjs +278 -0
  71. package/esm2022/materials/lib/mesh-refraction-material.mjs +144 -0
  72. package/esm2022/materials/lib/mesh-transmission-material.mjs +188 -0
  73. package/esm2022/materials/lib/mesh-wobble-material.mjs +42 -0
  74. package/esm2022/materials/lib/point-material.mjs +33 -0
  75. package/esm2022/misc/index.mjs +14 -14
  76. package/esm2022/misc/lib/animations.mjs +71 -0
  77. package/esm2022/misc/lib/bake-shadows.mjs +26 -0
  78. package/esm2022/misc/lib/computed-attribute.mjs +55 -0
  79. package/esm2022/misc/lib/constants.mjs +5 -0
  80. package/esm2022/misc/lib/decal.mjs +139 -0
  81. package/esm2022/misc/lib/deprecated.mjs +15 -0
  82. package/esm2022/misc/lib/depth-buffer.mjs +39 -0
  83. package/esm2022/misc/lib/fbo.mjs +86 -0
  84. package/esm2022/misc/lib/html/html-content.mjs +327 -0
  85. package/esm2022/misc/lib/html/html.mjs +129 -0
  86. package/esm2022/misc/lib/html/utils.mjs +74 -0
  87. package/esm2022/misc/lib/intersect.mjs +52 -0
  88. package/esm2022/misc/lib/sampler.mjs +122 -0
  89. package/esm2022/misc/lib/scale-factor.mjs +29 -0
  90. package/esm2022/performances/index.mjs +7 -6
  91. package/esm2022/performances/lib/adaptive-dpr.mjs +52 -0
  92. package/esm2022/performances/lib/adaptive-events.mjs +28 -0
  93. package/esm2022/performances/lib/detailed.mjs +57 -0
  94. package/esm2022/performances/lib/instances/instances.mjs +183 -0
  95. package/esm2022/performances/lib/instances/position-mesh.mjs +51 -0
  96. package/esm2022/performances/lib/points/points.mjs +278 -0
  97. package/esm2022/performances/lib/points/position-point.mjs +53 -0
  98. package/esm2022/performances/lib/segments/segment-object.mjs +9 -0
  99. package/esm2022/performances/lib/segments/segments.mjs +129 -0
  100. package/esm2022/shaders/index.mjs +4 -18
  101. package/esm2022/shaders/lib/grid-material.mjs +81 -0
  102. package/esm2022/shaders/lib/mesh-refraction-material.mjs +163 -0
  103. package/esm2022/shaders/lib/point-material.mjs +24 -0
  104. package/esm2022/staging/index.mjs +19 -22
  105. package/esm2022/staging/lib/accumulative-shadows.mjs +182 -0
  106. package/esm2022/staging/lib/backdrop.mjs +73 -0
  107. package/esm2022/staging/lib/bb-anchor.mjs +58 -0
  108. package/esm2022/staging/lib/bounds.mjs +286 -0
  109. package/esm2022/staging/lib/camera-shake.mjs +69 -0
  110. package/esm2022/staging/lib/caustics.mjs +188 -0
  111. package/esm2022/staging/lib/center.mjs +118 -0
  112. package/esm2022/staging/lib/contact-shadows.mjs +214 -0
  113. package/esm2022/staging/lib/environment.mjs +481 -0
  114. package/esm2022/staging/lib/float.mjs +70 -0
  115. package/esm2022/staging/lib/lightformer.mjs +107 -0
  116. package/esm2022/staging/lib/matcap-texture.mjs +81 -0
  117. package/esm2022/staging/lib/normal-texture.mjs +81 -0
  118. package/esm2022/staging/lib/randomized-lights.mjs +104 -0
  119. package/esm2022/staging/lib/render-texture.mjs +203 -0
  120. package/esm2022/staging/lib/sky.mjs +86 -0
  121. package/esm2022/staging/lib/spot-light.mjs +453 -0
  122. package/esm2022/staging/lib/stage.mjs +236 -0
  123. package/esm2022/{utils/angular-three-soba-utils.mjs → stats/angular-three-soba-stats.mjs} +1 -1
  124. package/esm2022/stats/index.mjs +2 -0
  125. package/esm2022/stats/lib/stats.mjs +63 -0
  126. package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +5 -0
  127. package/esm2022/vanilla-exports/index.mjs +3 -0
  128. package/fesm2022/angular-three-soba-abstractions.mjs +884 -697
  129. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  130. package/fesm2022/angular-three-soba-cameras.mjs +261 -308
  131. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  132. package/fesm2022/angular-three-soba-controls.mjs +1776 -109
  133. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  134. package/fesm2022/angular-three-soba-loaders.mjs +191 -145
  135. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  136. package/fesm2022/angular-three-soba-materials.mjs +527 -748
  137. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  138. package/fesm2022/angular-three-soba-misc.mjs +783 -1935
  139. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  140. package/fesm2022/angular-three-soba-performances.mjs +591 -475
  141. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  142. package/fesm2022/angular-three-soba-shaders.mjs +51 -1369
  143. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  144. package/fesm2022/angular-three-soba-staging.mjs +2350 -3521
  145. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  146. package/fesm2022/angular-three-soba-stats.mjs +70 -0
  147. package/fesm2022/angular-three-soba-stats.mjs.map +1 -0
  148. package/fesm2022/angular-three-soba-vanilla-exports.mjs +6 -0
  149. package/fesm2022/angular-three-soba-vanilla-exports.mjs.map +1 -0
  150. package/loaders/README.md +130 -2
  151. package/loaders/index.d.ts +5 -4
  152. package/loaders/lib/font-loader.d.ts +27 -0
  153. package/loaders/lib/gltf-loader.d.ts +24 -0
  154. package/loaders/lib/loader.d.ts +29 -0
  155. package/loaders/lib/progress.d.ts +9 -0
  156. package/loaders/lib/texture-loader.d.ts +13 -0
  157. package/materials/README.md +160 -2
  158. package/materials/index.d.ts +7 -6
  159. package/materials/lib/custom-shader-material.d.ts +20 -0
  160. package/materials/lib/mesh-distort-material.d.ts +17 -0
  161. package/materials/lib/mesh-reflector-material.d.ts +51 -0
  162. package/materials/lib/mesh-refraction-material.d.ts +42 -0
  163. package/materials/lib/mesh-transmission-material.d.ts +77 -0
  164. package/materials/lib/mesh-wobble-material.d.ts +15 -0
  165. package/materials/lib/point-material.d.ts +11 -0
  166. package/metadata.json +1 -1
  167. package/misc/README.md +217 -2
  168. package/misc/index.d.ts +13 -13
  169. package/misc/lib/animations.d.ts +17 -0
  170. package/misc/lib/computed-attribute.d.ts +64 -0
  171. package/misc/lib/constants.d.ts +1 -0
  172. package/misc/lib/decal.d.ts +27 -0
  173. package/misc/lib/deprecated.d.ts +14 -0
  174. package/misc/lib/depth-buffer.d.ts +8 -0
  175. package/misc/lib/fbo.d.ts +46 -0
  176. package/misc/lib/html/html-content.d.ts +47 -0
  177. package/misc/lib/html/html.d.ts +30 -0
  178. package/misc/lib/html/utils.d.ts +14 -0
  179. package/misc/lib/intersect.d.ts +13 -0
  180. package/misc/lib/sampler.d.ts +73 -0
  181. package/misc/lib/scale-factor.d.ts +3 -0
  182. package/package.json +89 -48
  183. package/performances/index.d.ts +6 -5
  184. package/performances/lib/adaptive-dpr.d.ts +7 -0
  185. package/performances/{adaptive-events → lib}/adaptive-events.d.ts +0 -3
  186. package/performances/lib/detailed.d.ts +17 -0
  187. package/performances/lib/instances/instances.d.ts +122 -0
  188. package/performances/lib/instances/position-mesh.d.ts +20 -0
  189. package/performances/lib/points/points.d.ts +224 -0
  190. package/performances/lib/points/position-point.d.ts +21 -0
  191. package/performances/lib/segments/segment-object.d.ts +17 -0
  192. package/performances/lib/segments/segments.d.ts +97 -0
  193. package/shaders/index.d.ts +3 -17
  194. package/shaders/lib/grid-material.d.ts +69 -0
  195. package/shaders/lib/mesh-refraction-material.d.ts +11 -0
  196. package/shaders/lib/point-material.d.ts +14 -0
  197. package/staging/README.md +473 -2
  198. package/staging/index.d.ts +18 -21
  199. package/staging/lib/accumulative-shadows.d.ts +75 -0
  200. package/staging/lib/backdrop.d.ts +22 -0
  201. package/staging/lib/bb-anchor.d.ts +17 -0
  202. package/staging/lib/bounds.d.ts +47 -0
  203. package/staging/lib/camera-shake.d.ts +29 -0
  204. package/staging/lib/caustics.d.ts +53 -0
  205. package/staging/lib/center.d.ts +390 -0
  206. package/staging/lib/contact-shadows.d.ts +55 -0
  207. package/staging/lib/environment.d.ts +132 -0
  208. package/staging/lib/float.d.ts +20 -0
  209. package/staging/lib/lightformer.d.ts +310 -0
  210. package/staging/lib/matcap-texture.d.ts +32 -0
  211. package/staging/lib/normal-texture.d.ts +37 -0
  212. package/staging/lib/randomized-lights.d.ts +54 -0
  213. package/staging/lib/render-texture.d.ts +64 -0
  214. package/staging/lib/sky.d.ts +32 -0
  215. package/staging/lib/spot-light.d.ts +119 -0
  216. package/staging/lib/stage.d.ts +352 -0
  217. package/stats/README.md +3 -0
  218. package/stats/index.d.ts +1 -0
  219. package/stats/lib/stats.d.ts +14 -0
  220. package/vanilla-exports/README.md +3 -0
  221. package/vanilla-exports/index.d.ts +27 -0
  222. package/web-types.json +1 -1
  223. package/abstractions/billboard/billboard.d.ts +0 -28
  224. package/abstractions/detailed/detailed.d.ts +0 -26
  225. package/abstractions/edges/edges.d.ts +0 -34
  226. package/abstractions/grid/grid.d.ts +0 -50
  227. package/abstractions/text/text.d.ts +0 -82
  228. package/abstractions/text-3d/text-3d.d.ts +0 -81
  229. package/assets/distort.vert.glsl +0 -1
  230. package/cameras/camera/camera-content.d.ts +0 -13
  231. package/cameras/camera/camera.d.ts +0 -26
  232. package/cameras/cube-camera/cube-camera.d.ts +0 -69
  233. package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
  234. package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
  235. package/controls/orbit-controls/orbit-controls.d.ts +0 -54
  236. package/esm2022/abstractions/billboard/billboard.mjs +0 -74
  237. package/esm2022/abstractions/detailed/detailed.mjs +0 -64
  238. package/esm2022/abstractions/edges/edges.mjs +0 -88
  239. package/esm2022/abstractions/grid/grid.mjs +0 -180
  240. package/esm2022/abstractions/text/text.mjs +0 -274
  241. package/esm2022/abstractions/text-3d/text-3d.mjs +0 -165
  242. package/esm2022/cameras/camera/camera-content.mjs +0 -20
  243. package/esm2022/cameras/camera/camera.mjs +0 -77
  244. package/esm2022/cameras/cube-camera/cube-camera.mjs +0 -161
  245. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
  246. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
  247. package/esm2022/controls/orbit-controls/orbit-controls.mjs +0 -181
  248. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +0 -30
  249. package/esm2022/loaders/loader/loader.mjs +0 -138
  250. package/esm2022/loaders/progress/progress.mjs +0 -45
  251. package/esm2022/loaders/texture-loader/texture-loader.mjs +0 -28
  252. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +0 -82
  253. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +0 -367
  254. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +0 -171
  255. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +0 -278
  256. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
  257. package/esm2022/materials/point-material/point-material.mjs +0 -46
  258. package/esm2022/misc/animations/animations.mjs +0 -59
  259. package/esm2022/misc/bake-shadows/bake-shadows.mjs +0 -24
  260. package/esm2022/misc/caustics/caustics.mjs +0 -387
  261. package/esm2022/misc/decal/decal.mjs +0 -187
  262. package/esm2022/misc/depth-buffer/depth-buffer.mjs +0 -44
  263. package/esm2022/misc/example/example.mjs +0 -160
  264. package/esm2022/misc/fbo/fbo.mjs +0 -47
  265. package/esm2022/misc/html/html-wrapper.mjs +0 -478
  266. package/esm2022/misc/html/html.mjs +0 -304
  267. package/esm2022/misc/sampler/sampler.mjs +0 -142
  268. package/esm2022/misc/shadow/shadow.mjs +0 -111
  269. package/esm2022/misc/stats-gl/stats-gl.mjs +0 -61
  270. package/esm2022/misc/trail/trail.mjs +0 -209
  271. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +0 -17
  272. package/esm2022/misc/trail-texture/trail-texture.mjs +0 -106
  273. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +0 -5
  274. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +0 -64
  275. package/esm2022/modifiers/index.mjs +0 -2
  276. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +0 -44
  277. package/esm2022/performances/adaptive-events/adaptive-events.mjs +0 -27
  278. package/esm2022/performances/points/points-input.mjs +0 -64
  279. package/esm2022/performances/points/points.mjs +0 -329
  280. package/esm2022/performances/points/position-point.mjs +0 -54
  281. package/esm2022/performances/segments/segment-object.mjs +0 -9
  282. package/esm2022/performances/segments/segments.mjs +0 -182
  283. package/esm2022/shaders/blur-pass/blur-pass.mjs +0 -61
  284. package/esm2022/shaders/caustics/caustics-material.mjs +0 -130
  285. package/esm2022/shaders/caustics/caustics-projection-material.mjs +0 -31
  286. package/esm2022/shaders/convolution-material/convolution-material.mjs +0 -94
  287. package/esm2022/shaders/discard-material/discard-material.mjs +0 -3
  288. package/esm2022/shaders/grid-material/grid-material.mjs +0 -77
  289. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +0 -56
  290. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
  291. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +0 -170
  292. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
  293. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
  294. package/esm2022/shaders/shader-material/shader-material.mjs +0 -34
  295. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +0 -25
  296. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +0 -33
  297. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +0 -86
  298. package/esm2022/shaders/star-field-material/star-field-material.mjs +0 -33
  299. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +0 -247
  300. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +0 -267
  301. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +0 -108
  302. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +0 -206
  303. package/esm2022/staging/backdrop/backdrop.mjs +0 -77
  304. package/esm2022/staging/bb-anchor/bb-anchor.mjs +0 -70
  305. package/esm2022/staging/bounds/bounds.mjs +0 -308
  306. package/esm2022/staging/camera-shake/camera-shake.mjs +0 -123
  307. package/esm2022/staging/center/center.mjs +0 -163
  308. package/esm2022/staging/cloud/cloud.mjs +0 -158
  309. package/esm2022/staging/contact-shadows/contact-shadows.mjs +0 -246
  310. package/esm2022/staging/environment/assets.mjs +0 -13
  311. package/esm2022/staging/environment/environment-cube.mjs +0 -47
  312. package/esm2022/staging/environment/environment-ground.mjs +0 -41
  313. package/esm2022/staging/environment/environment-input.mjs +0 -119
  314. package/esm2022/staging/environment/environment-map.mjs +0 -53
  315. package/esm2022/staging/environment/environment-portal.mjs +0 -113
  316. package/esm2022/staging/environment/environment.mjs +0 -61
  317. package/esm2022/staging/environment/utils.mjs +0 -105
  318. package/esm2022/staging/float/float.mjs +0 -94
  319. package/esm2022/staging/matcap-texture/matcap-texture.mjs +0 -64
  320. package/esm2022/staging/normal-texture/normal-texture.mjs +0 -53
  321. package/esm2022/staging/sky/sky.mjs +0 -119
  322. package/esm2022/staging/sparkles/sparkles.mjs +0 -164
  323. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +0 -63
  324. package/esm2022/staging/spot-light/shadow-mesh.mjs +0 -266
  325. package/esm2022/staging/spot-light/spot-light-input.mjs +0 -84
  326. package/esm2022/staging/spot-light/spot-light.mjs +0 -81
  327. package/esm2022/staging/spot-light/volumetric-mesh.mjs +0 -98
  328. package/esm2022/staging/stage/stage.mjs +0 -388
  329. package/esm2022/staging/stars/stars.mjs +0 -147
  330. package/esm2022/staging/wireframe/wireframe-input.mjs +0 -191
  331. package/esm2022/staging/wireframe/wireframe.mjs +0 -224
  332. package/esm2022/utils/content/content.mjs +0 -15
  333. package/esm2022/utils/index.mjs +0 -2
  334. package/fesm2022/angular-three-soba-modifiers.mjs +0 -71
  335. package/fesm2022/angular-three-soba-modifiers.mjs.map +0 -1
  336. package/fesm2022/angular-three-soba-utils.mjs +0 -22
  337. package/fesm2022/angular-three-soba-utils.mjs.map +0 -1
  338. package/loaders/gltf-loader/gltf-loader.d.ts +0 -10
  339. package/loaders/loader/loader.d.ts +0 -33
  340. package/loaders/progress/progress.d.ts +0 -9
  341. package/loaders/texture-loader/texture-loader.d.ts +0 -7
  342. package/materials/mesh-distort-material/mesh-distort-material.d.ts +0 -40
  343. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +0 -99
  344. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +0 -62
  345. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +0 -107
  346. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +0 -29
  347. package/materials/point-material/point-material.d.ts +0 -24
  348. package/misc/animations/animations.d.ts +0 -15
  349. package/misc/caustics/caustics.d.ts +0 -87
  350. package/misc/decal/decal.d.ts +0 -49
  351. package/misc/depth-buffer/depth-buffer.d.ts +0 -9
  352. package/misc/example/example.d.ts +0 -81
  353. package/misc/fbo/fbo.d.ts +0 -17
  354. package/misc/html/html-wrapper.d.ts +0 -559
  355. package/misc/html/html.d.ts +0 -214
  356. package/misc/sampler/sampler.d.ts +0 -67
  357. package/misc/shadow/shadow.d.ts +0 -37
  358. package/misc/stats-gl/stats-gl.d.ts +0 -24
  359. package/misc/trail/trail.d.ts +0 -57
  360. package/misc/trail-texture/inject-trail-texture.d.ts +0 -9
  361. package/misc/trail-texture/trail-texture.d.ts +0 -50
  362. package/modifiers/README.md +0 -3
  363. package/modifiers/curve-modifier/curve-modifier.d.ts +0 -23
  364. package/modifiers/index.d.ts +0 -1
  365. package/performances/adaptive-dpr/adaptive-dpr.d.ts +0 -14
  366. package/performances/points/points-input.d.ts +0 -32
  367. package/performances/points/points.d.ts +0 -92
  368. package/performances/points/position-point.d.ts +0 -11
  369. package/performances/segments/segment-object.d.ts +0 -7
  370. package/performances/segments/segments.d.ts +0 -124
  371. package/shaders/blur-pass/blur-pass.d.ts +0 -23
  372. package/shaders/caustics/caustics-material.d.ts +0 -4
  373. package/shaders/caustics/caustics-projection-material.d.ts +0 -4
  374. package/shaders/convolution-material/convolution-material.d.ts +0 -7
  375. package/shaders/discard-material/discard-material.d.ts +0 -3
  376. package/shaders/grid-material/grid-material.d.ts +0 -37
  377. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +0 -295
  378. package/shaders/mesh-reflector-material/mesh-reflector-material.d.ts +0 -50
  379. package/shaders/mesh-refraction-material/mesh-refraction-material.d.ts +0 -4
  380. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +0 -25
  381. package/shaders/mesh-wobble-material/mesh-wobble-material.d.ts +0 -16
  382. package/shaders/shader-material/shader-material.d.ts +0 -6
  383. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +0 -19
  384. package/shaders/sparkles-material/sparkles-material.d.ts +0 -17
  385. package/shaders/spot-light-material/spot-light-material.d.ts +0 -13
  386. package/shaders/star-field-material/star-field-material.d.ts +0 -13
  387. package/shaders/wireframe-material/wireframe-material.d.ts +0 -58
  388. package/staging/accumulative-shadows/accumulative-shadows.d.ts +0 -146
  389. package/staging/accumulative-shadows/progressive-light-map.d.ts +0 -34
  390. package/staging/accumulative-shadows/randomized-lights.d.ts +0 -90
  391. package/staging/backdrop/backdrop.d.ts +0 -30
  392. package/staging/bb-anchor/bb-anchor.d.ts +0 -27
  393. package/staging/bounds/bounds.d.ts +0 -134
  394. package/staging/camera-shake/camera-shake.d.ts +0 -43
  395. package/staging/center/center.d.ts +0 -70
  396. package/staging/cloud/cloud.d.ts +0 -51
  397. package/staging/contact-shadows/contact-shadows.d.ts +0 -70
  398. package/staging/environment/assets.d.ts +0 -13
  399. package/staging/environment/environment-cube.d.ts +0 -15
  400. package/staging/environment/environment-ground.d.ts +0 -13
  401. package/staging/environment/environment-input.d.ts +0 -68
  402. package/staging/environment/environment-map.d.ts +0 -16
  403. package/staging/environment/environment-portal.d.ts +0 -18
  404. package/staging/environment/environment.d.ts +0 -8
  405. package/staging/environment/utils.d.ts +0 -7
  406. package/staging/float/float.d.ts +0 -31
  407. package/staging/matcap-texture/matcap-texture.d.ts +0 -13
  408. package/staging/normal-texture/normal-texture.d.ts +0 -16
  409. package/staging/sky/sky.d.ts +0 -48
  410. package/staging/sparkles/sparkles.d.ts +0 -63
  411. package/staging/spot-light/shadow-mesh-input.d.ts +0 -29
  412. package/staging/spot-light/shadow-mesh.d.ts +0 -37
  413. package/staging/spot-light/spot-light-input.d.ts +0 -38
  414. package/staging/spot-light/spot-light.d.ts +0 -39
  415. package/staging/spot-light/volumetric-mesh.d.ts +0 -24
  416. package/staging/stage/stage.d.ts +0 -130
  417. package/staging/stars/stars.d.ts +0 -45
  418. package/staging/wireframe/wireframe-input.d.ts +0 -65
  419. package/staging/wireframe/wireframe.d.ts +0 -28
  420. package/utils/README.md +0 -3
  421. package/utils/content/content.d.ts +0 -8
  422. package/utils/index.d.ts +0 -1
  423. /package/misc/{bake-shadows → lib}/bake-shadows.d.ts +0 -0
@@ -1,159 +1,379 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, effect, untracked, Directive, Input, computed, ElementRef, forwardRef, inject, Injector, Component, CUSTOM_ELEMENTS_SCHEMA, NgZone, TemplateRef, ContentChild } from '@angular/core';
3
- import { injectNgtStore, signalStore, injectNgtRef, extend, createInjectionToken, checkUpdate, injectBeforeRender, is, NgtArgs } from 'angular-three';
4
- import { NgIf, NgTemplateOutlet } from '@angular/common';
5
- import { NgtsSobaContent } from 'angular-three-soba/utils';
6
- import * as THREE from 'three';
7
- import { Points, BufferGeometry, BufferAttribute } from 'three';
2
+ import { input, afterNextRender, untracked, Directive, viewChild, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, inject, computed } from '@angular/core';
3
+ import { injectStore, omit, pick, extend, getLocalState, injectBeforeRender, resolveRef, checkUpdate, NgtArgs, vector3 } from 'angular-three';
4
+ import { injectAutoEffect } from 'ngxtension/auto-effect';
5
+ import { mergeInputs } from 'ngxtension/inject-inputs';
6
+ import { LOD, Matrix4, Mesh, Group, Color, Material, Vector3, Quaternion, DynamicDrawUsage, InstancedMesh, InstancedBufferAttribute, Ray, Sphere, Points, BufferAttribute, BufferGeometry, Vector2 } from 'three';
7
+ import { setUpdateRange } from 'angular-three-soba/misc';
8
8
  import { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';
9
9
 
10
10
  class NgtsAdaptiveDpr {
11
- set _pixelated(pixelated) {
12
- this.pixelated.set(pixelated);
13
- }
14
11
  constructor() {
15
- this.pixelated = signal(false);
16
- this.store = injectNgtStore();
17
- this.current = this.store.select('performance', 'current');
18
- this.active = this.store.get('internal', 'active');
19
- this.setDpr = this.store.get('setDpr');
20
- this.initialDpr = this.store.get('viewport', 'initialDpr');
21
- this.domElement = this.store.get('gl', 'domElement');
22
- effect((onCleanup) => {
23
- onCleanup(() => {
24
- if (this.active) {
25
- this.setDpr(this.initialDpr);
26
- }
27
- if (this.pixelated() && this.domElement) {
28
- this.domElement.style.imageRendering = 'auto';
29
- }
12
+ this.pixelated = input(false);
13
+ const store = injectStore();
14
+ const gl = store.select('gl');
15
+ const active = store.select('internal', 'active');
16
+ const current = store.select('performance', 'current');
17
+ const initialDpr = store.select('viewport', 'initialDpr');
18
+ const setDpr = store.select('setDpr');
19
+ const autoEffect = injectAutoEffect();
20
+ afterNextRender(() => {
21
+ autoEffect(() => {
22
+ const domElement = untracked(gl).domElement;
23
+ return () => {
24
+ const [_active, _setDpr, _initialDpr, pixelated] = [
25
+ untracked(active),
26
+ untracked(setDpr),
27
+ untracked(initialDpr),
28
+ untracked(this.pixelated),
29
+ ];
30
+ if (_active)
31
+ _setDpr(_initialDpr);
32
+ if (pixelated && domElement)
33
+ domElement.style.imageRendering = 'auto';
34
+ };
35
+ });
36
+ autoEffect(() => {
37
+ const [_current, pixelated, domElement, _setDpr, _initialDpr] = [
38
+ current(),
39
+ untracked(this.pixelated),
40
+ untracked(gl).domElement,
41
+ untracked(setDpr),
42
+ untracked(initialDpr),
43
+ ];
44
+ _setDpr(_current * _initialDpr);
45
+ if (pixelated && domElement)
46
+ domElement.style.imageRendering = _current === 1 ? 'auto' : 'pixelated';
30
47
  });
31
- });
32
- effect(() => {
33
- const current = this.current();
34
- this.setDpr(current * this.initialDpr);
35
- if (untracked(this.pixelated) && this.domElement) {
36
- this.domElement.style.imageRendering = current === 1 ? 'auto' : 'pixelated';
37
- }
38
48
  });
39
49
  }
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsAdaptiveDpr, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
41
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { _pixelated: ["pixelated", "_pixelated"] }, ngImport: i0 }); }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAdaptiveDpr, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
51
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.0", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { pixelated: { classPropertyName: "pixelated", publicName: "pixelated", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
42
52
  }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
44
54
  type: Directive,
45
55
  args: [{ selector: 'ngts-adaptive-dpr', standalone: true }]
46
- }], ctorParameters: function () { return []; }, propDecorators: { _pixelated: [{
47
- type: Input,
48
- args: [{ alias: 'pixelated' }]
49
- }] } });
56
+ }], ctorParameters: () => [] });
50
57
 
51
58
  class NgtsAdaptiveEvents {
52
59
  constructor() {
53
- this.store = injectNgtStore();
54
- this.setEvents = this.store.get('setEvents');
55
- this.current = this.store.select('performance', 'current');
56
- effect((onCleanup) => {
57
- const enabled = this.store.get('events', 'enabled');
58
- onCleanup(() => {
59
- this.setEvents({ enabled });
60
+ const autoEffect = injectAutoEffect();
61
+ const store = injectStore();
62
+ const current = store.select('performance', 'current');
63
+ afterNextRender(() => {
64
+ autoEffect(() => {
65
+ const enabled = store.snapshot.events.enabled;
66
+ return () => store.snapshot.setEvents({ enabled });
67
+ });
68
+ autoEffect(() => {
69
+ const _current = current();
70
+ return () => store.snapshot.setEvents({ enabled: _current === 1 });
60
71
  });
61
- });
62
- effect(() => {
63
- const current = this.current();
64
- this.setEvents({ enabled: current === 1 });
65
72
  });
66
73
  }
67
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsAdaptiveEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
68
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", ngImport: i0 }); }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAdaptiveEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
75
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", ngImport: i0 }); }
69
76
  }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
71
78
  type: Directive,
72
- args: [{ selector: 'ngts-adaptive-events', standalone: true }]
73
- }], ctorParameters: function () { return []; } });
79
+ args: [{ standalone: true, selector: 'ngts-adaptive-events' }]
80
+ }], ctorParameters: () => [] });
74
81
 
75
- class NgtsPointsInput {
82
+ const defaultOptions$1 = {
83
+ hysteresis: 0,
84
+ };
85
+ class NgtsDetailed {
76
86
  constructor() {
77
- this.inputs = signalStore({
78
- stride: 3,
79
- limit: 1000,
87
+ this.distances = input.required();
88
+ this.options = input(defaultOptions$1, { transform: mergeInputs(defaultOptions$1) });
89
+ this.parameters = omit(this.options, ['hysteresis']);
90
+ this.lodRef = viewChild.required('lod');
91
+ this.hysteresis = pick(this.options, 'hysteresis');
92
+ extend({ LOD });
93
+ const autoEffect = injectAutoEffect();
94
+ afterNextRender(() => {
95
+ autoEffect(() => {
96
+ const lod = this.lodRef().nativeElement;
97
+ const localState = getLocalState(lod);
98
+ if (!localState)
99
+ return;
100
+ const [, distances, hysteresis] = [localState.objects(), this.distances(), this.hysteresis()];
101
+ lod.levels.length = 0;
102
+ lod.children.forEach((object, index) => {
103
+ lod.levels.push({ object, distance: distances[index], hysteresis });
104
+ });
105
+ });
106
+ });
107
+ injectBeforeRender(({ camera }) => {
108
+ this.lodRef().nativeElement.update(camera);
80
109
  });
81
- this.pointsRef = injectNgtRef();
82
- this.limit = this.inputs.select('limit');
83
- this.range = this.inputs.select('range');
84
- this.positions = this.inputs.select('positions');
85
- this.colors = this.inputs.select('colors');
86
- this.colorsLength = computed(() => this.colors()?.length || 0);
87
- this.sizes = this.inputs.select('sizes');
88
- this.sizesLength = computed(() => this.sizes()?.length || 0);
89
- this.stride = this.inputs.select('stride');
90
110
  }
91
- set _range(range) {
92
- this.inputs.set({ range });
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsDetailed, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsDetailed, isStandalone: true, selector: "ngts-detailed", inputs: { distances: { classPropertyName: "distances", publicName: "distances", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lodRef", first: true, predicate: ["lod"], descendants: true, isSignal: true }], ngImport: i0, template: `
113
+ <ngt-lOD #lod [parameters]="parameters()">
114
+ <ng-content />
115
+ </ngt-lOD>
116
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
117
+ }
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsDetailed, decorators: [{
119
+ type: Component,
120
+ args: [{
121
+ selector: 'ngts-detailed',
122
+ standalone: true,
123
+ template: `
124
+ <ngt-lOD #lod [parameters]="parameters()">
125
+ <ng-content />
126
+ </ngt-lOD>
127
+ `,
128
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
129
+ changeDetection: ChangeDetectionStrategy.OnPush,
130
+ }]
131
+ }], ctorParameters: () => [] });
132
+
133
+ const _instanceLocalMatrix = new Matrix4();
134
+ const _instanceWorldMatrix = new Matrix4();
135
+ const _instanceIntersects = [];
136
+ const _mesh = new Mesh();
137
+ class PositionMesh extends Group {
138
+ constructor() {
139
+ super();
140
+ this.color = new Color('white');
141
+ this.instance = undefined;
93
142
  }
94
- set _limit(limit) {
95
- this.inputs.set({ limit });
143
+ // This will allow the virtual instance have bounds
144
+ get geometry() {
145
+ return resolveRef(this.instance)?.geometry;
96
146
  }
97
- set _positions(positions) {
98
- this.inputs.set({ positions });
147
+ // And this will allow the virtual instance to receive events
148
+ raycast(raycaster, intersects) {
149
+ const parent = resolveRef(this.instance);
150
+ if (!parent)
151
+ return;
152
+ if (!parent.geometry || !parent.material)
153
+ return;
154
+ _mesh.geometry = parent.geometry;
155
+ const matrixWorld = parent.matrixWorld;
156
+ const instanceId = parent.userData['instances'].indexOf(this);
157
+ // If the instance wasn't found or exceeds the parents draw range, bail out
158
+ if (instanceId === -1 || instanceId > parent.count)
159
+ return;
160
+ // calculate the world matrix for each instance
161
+ parent.getMatrixAt(instanceId, _instanceLocalMatrix);
162
+ _instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);
163
+ // the mesh represents this single instance
164
+ _mesh.matrixWorld = _instanceWorldMatrix;
165
+ // raycast side according to instance material
166
+ if (parent.material instanceof Material)
167
+ _mesh.material.side = parent.material.side;
168
+ else
169
+ _mesh.material.side = parent.material[0].side;
170
+ _mesh.raycast(raycaster, _instanceIntersects);
171
+ // process the result of raycast
172
+ for (let i = 0, l = _instanceIntersects.length; i < l; i++) {
173
+ const intersect = _instanceIntersects[i];
174
+ intersect.instanceId = instanceId;
175
+ intersect.object = this;
176
+ intersects.push(intersect);
177
+ }
178
+ _instanceIntersects.length = 0;
99
179
  }
100
- set _colors(colors) {
101
- this.inputs.set({ colors });
180
+ }
181
+
182
+ const parentMatrix$1 = new Matrix4();
183
+ const instanceMatrix = new Matrix4();
184
+ const tempMatrix = new Matrix4();
185
+ const translation = new Vector3();
186
+ const rotation = new Quaternion();
187
+ const scale = new Vector3();
188
+ class NgtsInstance {
189
+ constructor() {
190
+ this.options = input({});
191
+ this.instances = inject(NgtsInstances);
192
+ this.positionMeshRef = viewChild.required('positionMesh');
193
+ extend({ PositionMesh });
194
+ const autoEffect = injectAutoEffect();
195
+ afterNextRender(() => {
196
+ autoEffect(() => {
197
+ return this.instances.subscribe(this.positionMeshRef().nativeElement);
198
+ });
199
+ });
102
200
  }
103
- set _sizes(sizes) {
104
- this.inputs.set({ sizes });
201
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsInstance, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
202
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsInstance, isStandalone: true, selector: "ngts-instance", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "positionMeshRef", first: true, predicate: ["positionMesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
203
+ <ngt-position-mesh #positionMesh [instance]="instances.instancedMeshRef()" [parameters]="options()">
204
+ <ng-content />
205
+ </ngt-position-mesh>
206
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
207
+ }
208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsInstance, decorators: [{
209
+ type: Component,
210
+ args: [{
211
+ selector: 'ngts-instance',
212
+ standalone: true,
213
+ template: `
214
+ <ngt-position-mesh #positionMesh [instance]="instances.instancedMeshRef()" [parameters]="options()">
215
+ <ng-content />
216
+ </ngt-position-mesh>
217
+ `,
218
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
219
+ changeDetection: ChangeDetectionStrategy.OnPush,
220
+ }]
221
+ }], ctorParameters: () => [] });
222
+ const defaultOptions = {
223
+ limit: 1000,
224
+ frames: Infinity,
225
+ };
226
+ class NgtsInstances {
227
+ constructor() {
228
+ this.DynamicDrawUsage = DynamicDrawUsage;
229
+ this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
230
+ this.parameters = omit(this.options, ['limit', 'frames', 'range']);
231
+ this.instancedMeshRef = viewChild.required('instancedMesh');
232
+ this.limit = pick(this.options, 'limit');
233
+ this.buffers = computed(() => {
234
+ const limit = this.limit();
235
+ const matrices = new Float32Array(limit * 16);
236
+ for (let i = 0; i < limit; i++) {
237
+ tempMatrix.identity().toArray(matrices, i * 16);
238
+ }
239
+ const colors = new Float32Array([...Array.from({ length: limit * 3 }, () => 1)]);
240
+ return { matrices, colors };
241
+ });
242
+ this.instances = [];
243
+ extend({ InstancedMesh, InstancedBufferAttribute });
244
+ const autoEffect = injectAutoEffect();
245
+ afterNextRender(() => {
246
+ autoEffect(() => {
247
+ const instancedMesh = this.instancedMeshRef()?.nativeElement;
248
+ if (!instancedMesh)
249
+ return;
250
+ checkUpdate(instancedMesh.instanceMatrix);
251
+ });
252
+ });
253
+ let iterations = 0;
254
+ let count = 0;
255
+ injectBeforeRender(() => {
256
+ const instancedMesh = this.instancedMeshRef()?.nativeElement;
257
+ if (!instancedMesh)
258
+ return;
259
+ const { frames, limit, range } = this.options();
260
+ const { matrices, colors } = this.buffers();
261
+ if (frames === Infinity || iterations < frames) {
262
+ instancedMesh.updateMatrix();
263
+ instancedMesh.updateMatrixWorld();
264
+ parentMatrix$1.copy(instancedMesh.matrixWorld).invert();
265
+ count = Math.min(limit, range !== undefined ? range : limit, this.instances.length);
266
+ instancedMesh.count = count;
267
+ setUpdateRange(instancedMesh.instanceMatrix, { offset: 0, count: count * 16 });
268
+ if (instancedMesh.instanceColor) {
269
+ setUpdateRange(instancedMesh.instanceColor, { offset: 0, count: count * 3 });
270
+ }
271
+ for (let i = 0; i < this.instances.length; i++) {
272
+ const instance = resolveRef(this.instances[i]);
273
+ if (instance) {
274
+ // Multiply the inverse of the InstancedMesh world matrix or else
275
+ // Instances will be double-transformed if <Instances> isn't at identity
276
+ instance.matrixWorld.decompose(translation, rotation, scale);
277
+ instanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix$1);
278
+ instanceMatrix.toArray(matrices, i * 16);
279
+ checkUpdate(instancedMesh.instanceMatrix);
280
+ instance.color.toArray(colors, i * 3);
281
+ checkUpdate(instancedMesh.instanceColor);
282
+ }
283
+ }
284
+ iterations++;
285
+ }
286
+ });
105
287
  }
106
- set _stride(stride) {
107
- this.inputs.set({ stride });
288
+ subscribe(ref) {
289
+ this.instances.push(ref);
290
+ return () => {
291
+ this.instances = this.instances.filter((i) => i !== ref);
292
+ };
108
293
  }
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsPointsInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
110
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: NgtsPointsInput, inputs: { pointsRef: "pointsRef", _range: ["range", "_range"], _limit: ["limit", "_limit"], _positions: ["positions", "_positions"], _colors: ["colors", "_colors"], _sizes: ["sizes", "_sizes"], _stride: ["stride", "_stride"] }, ngImport: i0 }); }
294
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
295
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsInstances, isStandalone: true, selector: "ngts-instances", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "instancedMeshRef", first: true, predicate: ["instancedMesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
296
+ <ngt-instanced-mesh
297
+ #instancedMesh
298
+ [userData]="{ instances }"
299
+ [matrixAutoUpdate]="false"
300
+ [raycast]="null"
301
+ [parameters]="parameters()"
302
+ >
303
+ <ngt-instanced-buffer-attribute
304
+ attach="instanceMatrix"
305
+ [usage]="DynamicDrawUsage"
306
+ [count]="buffers().matrices.length / 16"
307
+ [array]="buffers().matrices"
308
+ [itemSize]="16"
309
+ />
310
+ <ngt-instanced-buffer-attribute
311
+ attach="instanceColor"
312
+ [usage]="DynamicDrawUsage"
313
+ [count]="buffers().colors.length / 3"
314
+ [array]="buffers().colors"
315
+ [itemSize]="3"
316
+ />
317
+ <ng-content />
318
+ </ngt-instanced-mesh>
319
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
111
320
  }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsPointsInput, decorators: [{
113
- type: Directive
114
- }], propDecorators: { pointsRef: [{
115
- type: Input
116
- }], _range: [{
117
- type: Input,
118
- args: [{ alias: 'range' }]
119
- }], _limit: [{
120
- type: Input,
121
- args: [{ alias: 'limit' }]
122
- }], _positions: [{
123
- type: Input,
124
- args: [{ alias: 'positions' }]
125
- }], _colors: [{
126
- type: Input,
127
- args: [{ alias: 'colors' }]
128
- }], _sizes: [{
129
- type: Input,
130
- args: [{ alias: 'sizes' }]
131
- }], _stride: [{
132
- type: Input,
133
- args: [{ alias: 'stride' }]
134
- }] } });
321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsInstances, decorators: [{
322
+ type: Component,
323
+ args: [{
324
+ selector: 'ngts-instances',
325
+ standalone: true,
326
+ template: `
327
+ <ngt-instanced-mesh
328
+ #instancedMesh
329
+ [userData]="{ instances }"
330
+ [matrixAutoUpdate]="false"
331
+ [raycast]="null"
332
+ [parameters]="parameters()"
333
+ >
334
+ <ngt-instanced-buffer-attribute
335
+ attach="instanceMatrix"
336
+ [usage]="DynamicDrawUsage"
337
+ [count]="buffers().matrices.length / 16"
338
+ [array]="buffers().matrices"
339
+ [itemSize]="16"
340
+ />
341
+ <ngt-instanced-buffer-attribute
342
+ attach="instanceColor"
343
+ [usage]="DynamicDrawUsage"
344
+ [count]="buffers().colors.length / 3"
345
+ [array]="buffers().colors"
346
+ [itemSize]="3"
347
+ />
348
+ <ng-content />
349
+ </ngt-instanced-mesh>
350
+ `,
351
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
352
+ changeDetection: ChangeDetectionStrategy.OnPush,
353
+ imports: [NgtArgs],
354
+ }]
355
+ }], ctorParameters: () => [] });
135
356
 
136
- const _inverseMatrix = /*@__PURE__*/ new THREE.Matrix4();
137
- const _ray = /*@__PURE__*/ new THREE.Ray();
138
- const _sphere = /*@__PURE__*/ new THREE.Sphere();
139
- const _position = /*@__PURE__*/ new THREE.Vector3();
140
- class PositionPoint extends THREE.Group {
357
+ const _inverseMatrix = new Matrix4();
358
+ const _ray = new Ray();
359
+ const _sphere = new Sphere();
360
+ const _position = new Vector3();
361
+ class PositionPoint extends Group {
141
362
  constructor() {
142
363
  super();
143
364
  this.size = 0;
144
- this.color = new THREE.Color('white');
145
- this.instance = new ElementRef(undefined);
146
- this.instanceKey = new ElementRef(undefined);
365
+ this.color = new Color('white');
366
+ this.instance = undefined;
147
367
  }
148
368
  // This will allow the virtual instance have bounds
149
369
  get geometry() {
150
- return this.instance.nativeElement?.geometry;
370
+ return resolveRef(this.instance)?.geometry;
151
371
  }
152
372
  raycast(raycaster, intersects) {
153
- const parent = this.instance.nativeElement;
373
+ const parent = resolveRef(this.instance);
154
374
  if (!parent || !parent.geometry)
155
375
  return;
156
- const instanceId = parent.userData['instances'].indexOf(this.instanceKey);
376
+ const instanceId = parent.userData['instances'].indexOf(this);
157
377
  // If the instance wasn't found or exceeds the parents draw range, bail out
158
378
  if (instanceId === -1 || instanceId > parent.geometry.drawRange.count)
159
379
  return;
@@ -167,7 +387,7 @@ class PositionPoint extends THREE.Group {
167
387
  const localThresholdSq = localThreshold * localThreshold;
168
388
  const rayPointDistanceSq = _ray.distanceSqToPoint(this.position);
169
389
  if (rayPointDistanceSq < localThresholdSq) {
170
- const intersectPoint = new THREE.Vector3();
390
+ const intersectPoint = new Vector3();
171
391
  _ray.closestPointToPoint(this.position, intersectPoint);
172
392
  intersectPoint.applyMatrix4(this.matrixWorld);
173
393
  const distance = raycaster.ray.origin.distanceTo(intersectPoint);
@@ -185,281 +405,265 @@ class PositionPoint extends THREE.Group {
185
405
  }
186
406
  }
187
407
 
188
- extend({ Points, BufferGeometry, BufferAttribute, PositionPoint });
189
- const [injectNgtsPointsInstanceApi, provideNgtsPointsInstancesApi] = createInjectionToken(function pointsInstancesApi(instances) {
190
- return instances.api;
191
- }, { isRoot: false, deps: [forwardRef(() => NgtsPointsInstances)] });
192
- class NgtsPointsInstances {
408
+ class NgtsPoint {
193
409
  constructor() {
194
- this.nullRaycast = () => null;
195
- this.DynamicDrawUsage = THREE.DynamicDrawUsage;
196
- this.pointsInput = inject(NgtsPointsInput);
197
- this.positionPoints = signal([]);
198
- this.parentMatrix = new THREE.Matrix4();
199
- this.position = new THREE.Vector3();
200
- this.points = this.positionPoints.asReadonly();
201
- this.positions = computed(() => new Float32Array(this.pointsInput.limit() * 3));
202
- this.colors = computed(() => Float32Array.from({ length: this.pointsInput.limit() * 3 }, () => 1));
203
- this.sizes = computed(() => Float32Array.from({ length: this.pointsInput.limit() }, () => 1));
204
- this.injector = inject(Injector);
205
- this.api = computed(() => ({
206
- getParent: () => this.pointsInput.pointsRef,
207
- subscribe: (pointRef) => {
208
- untracked(() => {
209
- this.positionPoints.update((s) => [...s, pointRef]);
210
- });
211
- return () => {
212
- untracked(() => {
213
- this.positionPoints.update((s) => s.filter((positionPoint) => positionPoint !== pointRef));
214
- });
215
- };
216
- },
217
- }));
218
- this.checkUpdatePositionAttribute();
219
- this.beforeRender();
220
- }
221
- checkUpdatePositionAttribute() {
222
- effect(() => {
223
- const points = this.pointsInput.pointsRef.nativeElement;
224
- if (!points)
225
- return;
226
- checkUpdate(points.geometry.attributes['position']);
410
+ this.options = input({});
411
+ this.positionPointRef = viewChild.required('positionPoint');
412
+ this.points = inject(NgtsPointsInstances);
413
+ extend({ PositionPoint });
414
+ const autoEffect = injectAutoEffect();
415
+ afterNextRender(() => {
416
+ autoEffect(() => {
417
+ return this.points.subscribe(this.positionPointRef().nativeElement);
418
+ });
227
419
  });
228
420
  }
229
- beforeRender() {
421
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPoint, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
422
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsPoint, isStandalone: true, selector: "ngts-point", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "positionPointRef", first: true, predicate: ["positionPoint"], descendants: true, isSignal: true }], ngImport: i0, template: `
423
+ <ngt-position-point #positionPoint [parameters]="options()" [instance]="points.pointsRef()">
424
+ <ng-content />
425
+ </ngt-position-point>
426
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
427
+ }
428
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPoint, decorators: [{
429
+ type: Component,
430
+ args: [{
431
+ selector: 'ngts-point',
432
+ standalone: true,
433
+ template: `
434
+ <ngt-position-point #positionPoint [parameters]="options()" [instance]="points.pointsRef()">
435
+ <ng-content />
436
+ </ngt-position-point>
437
+ `,
438
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
439
+ changeDetection: ChangeDetectionStrategy.OnPush,
440
+ }]
441
+ }], ctorParameters: () => [] });
442
+ class NgtsPointsBuffer {
443
+ constructor() {
444
+ this.positions = input.required();
445
+ this.colors = input();
446
+ this.sizes = input();
447
+ this.stride = input(3);
448
+ this.options = input({});
449
+ this.pointsRef = viewChild.required('points');
450
+ this.DynamicDrawUsage = DynamicDrawUsage;
451
+ extend({ Points, BufferAttribute, BufferGeometry });
230
452
  injectBeforeRender(() => {
231
- const points = this.pointsInput.pointsRef.nativeElement;
453
+ const points = this.pointsRef()?.nativeElement;
232
454
  if (!points)
233
455
  return;
234
- const [limit, range, positionPoints, positions, colors, sizes] = [
235
- this.pointsInput.limit(),
236
- this.pointsInput.range(),
237
- this.positionPoints(),
238
- this.positions(),
239
- this.colors(),
240
- this.sizes(),
241
- ];
242
- points.updateMatrix();
243
- points.updateMatrixWorld();
244
- this.parentMatrix.copy(points.matrixWorld).invert();
245
- points.geometry.drawRange.count = Math.min(limit, range !== undefined ? range : limit, positionPoints.length);
246
- for (let i = 0; i < positionPoints.length; i++) {
247
- const positionPointRef = positionPoints[i];
248
- const positionPoint = is.ref(positionPointRef) ? positionPointRef.nativeElement : positionPointRef;
249
- if (!positionPoint)
250
- continue;
251
- positionPoint.getWorldPosition(this.position).applyMatrix4(this.parentMatrix);
252
- this.position.toArray(positions, i * 3);
253
- checkUpdate(points.geometry.attributes['position']);
254
- positionPoint.matrixWorldNeedsUpdate = true;
255
- positionPoint.color.toArray(colors, i * 3);
256
- checkUpdate(points.geometry.attributes['color']);
257
- sizes.set([positionPoint.size], i);
258
- checkUpdate(points.geometry.attributes['size']);
259
- }
456
+ const attributes = points.geometry.attributes;
457
+ checkUpdate(attributes['position']);
458
+ if (this.colors())
459
+ checkUpdate(attributes['color']);
460
+ if (this.sizes())
461
+ checkUpdate(attributes['size']);
260
462
  });
261
463
  }
262
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsPointsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
263
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NgtsPointsInstances, isStandalone: true, selector: "ngts-points-instances", providers: [provideNgtsPointsInstancesApi()], ngImport: i0, template: `
264
- <ngt-points
265
- [ref]="pointsInput.pointsRef"
266
- [userData]="{ instances: points() }"
267
- [matrixAutoUpdate]="false"
268
- [raycast]="nullRaycast"
269
- ngtCompound
270
- >
464
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPointsBuffer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
465
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsPointsBuffer, isStandalone: true, selector: "ngts-points-buffer", inputs: { positions: { classPropertyName: "positions", publicName: "positions", isSignal: true, isRequired: true, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, sizes: { classPropertyName: "sizes", publicName: "sizes", isSignal: true, isRequired: false, transformFunction: null }, stride: { classPropertyName: "stride", publicName: "stride", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "pointsRef", first: true, predicate: ["points"], descendants: true, isSignal: true }], ngImport: i0, template: `
466
+ <ngt-points #points [parameters]="options()">
271
467
  <ngt-buffer-geometry>
272
468
  <ngt-buffer-attribute
273
469
  attach="attributes.position"
274
- [count]="positions().length / 3"
470
+ [count]="positions().length / stride()"
275
471
  [array]="positions()"
276
- [itemSize]="3"
277
- [usage]="DynamicDrawUsage"
278
- />
279
- <ngt-buffer-attribute
280
- attach="attributes.color"
281
- [count]="colors().length / 3"
282
- [array]="colors()"
283
- [itemSize]="3"
284
- [usage]="DynamicDrawUsage"
285
- />
286
- <ngt-buffer-attribute
287
- attach="attributes.size"
288
- [count]="sizes().length"
289
- [array]="sizes()"
290
- [itemSize]="1"
472
+ [itemSize]="stride()"
291
473
  [usage]="DynamicDrawUsage"
292
474
  />
475
+ @if (colors(); as colors) {
476
+ <ngt-buffer-attribute
477
+ attach="attributes.color"
478
+ [count]="colors.length / stride()"
479
+ [array]="colors"
480
+ [itemSize]="3"
481
+ [usage]="DynamicDrawUsage"
482
+ />
483
+ }
484
+ @if (sizes(); as sizes) {
485
+ <ngt-buffer-attribute
486
+ attach="attributes.size"
487
+ [count]="sizes.length / stride()"
488
+ [array]="sizes"
489
+ [itemSize]="1"
490
+ [usage]="DynamicDrawUsage"
491
+ />
492
+ }
293
493
  </ngt-buffer-geometry>
294
494
  <ng-content />
295
495
  </ngt-points>
296
- `, isInline: true }); }
496
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
297
497
  }
298
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsPointsInstances, decorators: [{
498
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPointsBuffer, decorators: [{
299
499
  type: Component,
300
500
  args: [{
301
- selector: 'ngts-points-instances',
501
+ selector: 'ngts-points-buffer',
302
502
  standalone: true,
303
503
  template: `
304
- <ngt-points
305
- [ref]="pointsInput.pointsRef"
306
- [userData]="{ instances: points() }"
307
- [matrixAutoUpdate]="false"
308
- [raycast]="nullRaycast"
309
- ngtCompound
310
- >
504
+ <ngt-points #points [parameters]="options()">
311
505
  <ngt-buffer-geometry>
312
506
  <ngt-buffer-attribute
313
507
  attach="attributes.position"
314
- [count]="positions().length / 3"
508
+ [count]="positions().length / stride()"
315
509
  [array]="positions()"
316
- [itemSize]="3"
317
- [usage]="DynamicDrawUsage"
318
- />
319
- <ngt-buffer-attribute
320
- attach="attributes.color"
321
- [count]="colors().length / 3"
322
- [array]="colors()"
323
- [itemSize]="3"
324
- [usage]="DynamicDrawUsage"
325
- />
326
- <ngt-buffer-attribute
327
- attach="attributes.size"
328
- [count]="sizes().length"
329
- [array]="sizes()"
330
- [itemSize]="1"
510
+ [itemSize]="stride()"
331
511
  [usage]="DynamicDrawUsage"
332
512
  />
513
+ @if (colors(); as colors) {
514
+ <ngt-buffer-attribute
515
+ attach="attributes.color"
516
+ [count]="colors.length / stride()"
517
+ [array]="colors"
518
+ [itemSize]="3"
519
+ [usage]="DynamicDrawUsage"
520
+ />
521
+ }
522
+ @if (sizes(); as sizes) {
523
+ <ngt-buffer-attribute
524
+ attach="attributes.size"
525
+ [count]="sizes.length / stride()"
526
+ [array]="sizes"
527
+ [itemSize]="1"
528
+ [usage]="DynamicDrawUsage"
529
+ />
530
+ }
333
531
  </ngt-buffer-geometry>
334
532
  <ng-content />
335
533
  </ngt-points>
336
534
  `,
337
- providers: [provideNgtsPointsInstancesApi()],
338
535
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
536
+ changeDetection: ChangeDetectionStrategy.OnPush,
339
537
  }]
340
- }], ctorParameters: function () { return []; } });
341
- class NgtsPoint {
538
+ }], ctorParameters: () => [] });
539
+ const parentMatrix = new Matrix4();
540
+ const position = new Vector3();
541
+ const defaultInstancesOptions = { limit: 1000 };
542
+ class NgtsPointsInstances {
342
543
  constructor() {
343
- this.pointRef = injectNgtRef();
344
- this.zone = inject(NgZone);
345
- this.injector = inject(Injector);
346
- this.pointsInstancesApi = injectNgtsPointsInstanceApi();
347
- }
348
- ngOnInit() {
349
- effect((onCleanup) => {
350
- const cleanup = this.zone.runOutsideAngular(() => {
351
- const api = this.pointsInstancesApi();
352
- return api.subscribe(this.pointRef);
544
+ this.options = input(defaultInstancesOptions, { transform: mergeInputs(defaultInstancesOptions) });
545
+ this.parameters = omit(this.options, ['limit', 'range']);
546
+ this.pointsRef = viewChild.required('points');
547
+ this.limit = pick(this.options, 'limit');
548
+ this.buffers = computed(() => {
549
+ const limit = this.limit();
550
+ return {
551
+ positions: new Float32Array(limit * 3),
552
+ colors: Float32Array.from({ length: limit * 3 }, () => 1),
553
+ sizes: Float32Array.from({ length: limit }, () => 1),
554
+ };
555
+ });
556
+ this.positionPoints = [];
557
+ this.DynamicDrawUsage = DynamicDrawUsage;
558
+ extend({ Points, BufferAttribute, BufferGeometry });
559
+ const autoEffect = injectAutoEffect();
560
+ afterNextRender(() => {
561
+ autoEffect(() => {
562
+ const points = this.pointsRef()?.nativeElement;
563
+ if (!points)
564
+ return;
565
+ checkUpdate(points.geometry.attributes['position']);
353
566
  });
354
- onCleanup(cleanup);
355
- }, { injector: this.injector });
356
- }
357
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsPoint, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
358
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NgtsPoint, isStandalone: true, selector: "ngts-point", inputs: { pointRef: "pointRef" }, ngImport: i0, template: `
359
- <ngt-position-point
360
- [instance]="pointsInstancesApi().getParent()"
361
- [ref]="pointRef"
362
- [instanceKey]="pointRef"
363
- ngtCompound
364
- >
365
- <ng-content />
366
- </ngt-position-point>
367
- `, isInline: true }); }
368
- }
369
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsPoint, decorators: [{
370
- type: Component,
371
- args: [{
372
- selector: 'ngts-point',
373
- standalone: true,
374
- template: `
375
- <ngt-position-point
376
- [instance]="pointsInstancesApi().getParent()"
377
- [ref]="pointRef"
378
- [instanceKey]="pointRef"
379
- ngtCompound
380
- >
381
- <ng-content />
382
- </ngt-position-point>
383
- `,
384
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
385
- }]
386
- }], propDecorators: { pointRef: [{
387
- type: Input
388
- }] } });
389
- class NgtsPointsBuffers {
390
- constructor() {
391
- this.DynamicDrawUsage = THREE.DynamicDrawUsage;
392
- this.pointsInput = inject(NgtsPointsInput);
393
- this.store = injectNgtStore();
567
+ });
394
568
  injectBeforeRender(() => {
395
- const points = this.pointsInput.pointsRef.nativeElement;
569
+ const points = this.pointsRef()?.nativeElement;
396
570
  if (!points)
397
571
  return;
398
- const [sizes, colors] = [this.pointsInput.sizes(), this.pointsInput.colors()];
399
- const attr = points.geometry.attributes;
400
- checkUpdate(attr['position']);
401
- if (colors)
402
- checkUpdate(attr['color']);
403
- if (sizes)
404
- checkUpdate(attr['size']);
572
+ const { limit, range } = this.options();
573
+ const { positions, sizes, colors } = this.buffers();
574
+ points.updateMatrix();
575
+ points.updateMatrixWorld();
576
+ parentMatrix.copy(points.matrixWorld).invert();
577
+ points.geometry.drawRange.count = Math.min(limit, range !== undefined ? range : limit, this.positionPoints.length);
578
+ for (let i = 0; i < this.positionPoints.length; i++) {
579
+ const positionPoint = resolveRef(this.positionPoints[i]);
580
+ if (positionPoint) {
581
+ positionPoint.getWorldPosition(position).applyMatrix4(parentMatrix);
582
+ position.toArray(positions, i * 3);
583
+ checkUpdate(points.geometry.attributes['position']);
584
+ positionPoint.matrixWorldNeedsUpdate = true;
585
+ positionPoint.color.toArray(colors, i * 3);
586
+ checkUpdate(points.geometry.attributes['color']);
587
+ sizes.set([positionPoint.size], i);
588
+ checkUpdate(points.geometry.attributes['size']);
589
+ }
590
+ }
405
591
  });
406
592
  }
407
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsPointsBuffers, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
408
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NgtsPointsBuffers, isStandalone: true, selector: "ngts-points-buffers", ngImport: i0, template: `
409
- <ngt-points [ref]="pointsInput.pointsRef" ngtCompound>
593
+ subscribe(ref) {
594
+ this.positionPoints.push(ref);
595
+ return () => {
596
+ this.positionPoints = this.positionPoints.filter((p) => p !== ref);
597
+ };
598
+ }
599
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPointsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
600
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsPointsInstances, isStandalone: true, selector: "ngts-points-instances", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "pointsRef", first: true, predicate: ["points"], descendants: true, isSignal: true }], ngImport: i0, template: `
601
+ <ngt-points
602
+ #points
603
+ [userData]="{ instances: positionPoints }"
604
+ [matrixAutoUpdate]="false"
605
+ [raycast]="null"
606
+ [parameters]="parameters()"
607
+ >
410
608
  <ngt-buffer-geometry>
411
609
  <ngt-buffer-attribute
412
610
  attach="attributes.position"
413
- [count]="pointsInput.positions().length / pointsInput.stride()"
414
- [array]="pointsInput.positions()"
415
- [itemSize]="pointsInput.stride()"
611
+ [count]="buffers().positions.length / 3"
612
+ [array]="buffers().positions"
613
+ [itemSize]="3"
416
614
  [usage]="DynamicDrawUsage"
417
615
  />
418
616
  <ngt-buffer-attribute
419
617
  attach="attributes.color"
420
- [count]="pointsInput.colorsLength() / pointsInput.stride()"
421
- [array]="pointsInput.colors()"
422
- [itemSize]="pointsInput.stride()"
618
+ [count]="buffers().colors.length / 3"
619
+ [array]="buffers().colors"
620
+ [itemSize]="3"
423
621
  [usage]="DynamicDrawUsage"
424
622
  />
425
623
  <ngt-buffer-attribute
426
624
  attach="attributes.size"
427
- [count]="pointsInput.sizesLength() / pointsInput.stride()"
428
- [array]="pointsInput.sizes()"
625
+ [count]="buffers().sizes.length"
626
+ [array]="buffers().sizes"
429
627
  [itemSize]="1"
430
628
  [usage]="DynamicDrawUsage"
431
629
  />
432
630
  </ngt-buffer-geometry>
433
631
  <ng-content />
434
632
  </ngt-points>
435
- `, isInline: true }); }
633
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
436
634
  }
437
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsPointsBuffers, decorators: [{
635
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPointsInstances, decorators: [{
438
636
  type: Component,
439
637
  args: [{
440
- selector: 'ngts-points-buffers',
638
+ selector: 'ngts-points-instances',
441
639
  standalone: true,
442
640
  template: `
443
- <ngt-points [ref]="pointsInput.pointsRef" ngtCompound>
641
+ <ngt-points
642
+ #points
643
+ [userData]="{ instances: positionPoints }"
644
+ [matrixAutoUpdate]="false"
645
+ [raycast]="null"
646
+ [parameters]="parameters()"
647
+ >
444
648
  <ngt-buffer-geometry>
445
649
  <ngt-buffer-attribute
446
650
  attach="attributes.position"
447
- [count]="pointsInput.positions().length / pointsInput.stride()"
448
- [array]="pointsInput.positions()"
449
- [itemSize]="pointsInput.stride()"
651
+ [count]="buffers().positions.length / 3"
652
+ [array]="buffers().positions"
653
+ [itemSize]="3"
450
654
  [usage]="DynamicDrawUsage"
451
655
  />
452
656
  <ngt-buffer-attribute
453
657
  attach="attributes.color"
454
- [count]="pointsInput.colorsLength() / pointsInput.stride()"
455
- [array]="pointsInput.colors()"
456
- [itemSize]="pointsInput.stride()"
658
+ [count]="buffers().colors.length / 3"
659
+ [array]="buffers().colors"
660
+ [itemSize]="3"
457
661
  [usage]="DynamicDrawUsage"
458
662
  />
459
663
  <ngt-buffer-attribute
460
664
  attach="attributes.size"
461
- [count]="pointsInput.sizesLength() / pointsInput.stride()"
462
- [array]="pointsInput.sizes()"
665
+ [count]="buffers().sizes.length"
666
+ [array]="buffers().sizes"
463
667
  [itemSize]="1"
464
668
  [usage]="DynamicDrawUsage"
465
669
  />
@@ -468,158 +672,86 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
468
672
  </ngt-points>
469
673
  `,
470
674
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
675
+ changeDetection: ChangeDetectionStrategy.OnPush,
471
676
  }]
472
- }], ctorParameters: function () { return []; } });
473
- class NgtsPoints extends NgtsPointsInput {
474
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsPoints, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
475
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NgtsPoints, isStandalone: true, selector: "ngts-points", providers: [{ provide: NgtsPointsInput, useExisting: NgtsPoints }], queries: [{ propertyName: "content", first: true, predicate: NgtsSobaContent, descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: `
476
- <ngts-points-buffers *ngIf="positions()">
477
- <ng-container *ngTemplateOutlet="content" />
478
- </ngts-points-buffers>
479
- <ngts-points-instances *ngIf="!positions()" #pointsInstances>
480
- <!-- NOTE: passing in the injector to templateOutlet allow the consumers to abstract ngts-point -->
481
- <ng-container *ngTemplateOutlet="content; injector: pointsInstances.injector" />
482
- </ngts-points-instances>
483
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgtsPointsBuffers, selector: "ngts-points-buffers" }, { kind: "component", type: NgtsPointsInstances, selector: "ngts-points-instances" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
484
- }
485
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsPoints, decorators: [{
486
- type: Component,
487
- args: [{
488
- selector: 'ngts-points',
489
- standalone: true,
490
- template: `
491
- <ngts-points-buffers *ngIf="positions()">
492
- <ng-container *ngTemplateOutlet="content" />
493
- </ngts-points-buffers>
494
- <ngts-points-instances *ngIf="!positions()" #pointsInstances>
495
- <!-- NOTE: passing in the injector to templateOutlet allow the consumers to abstract ngts-point -->
496
- <ng-container *ngTemplateOutlet="content; injector: pointsInstances.injector" />
497
- </ngts-points-instances>
498
- `,
499
- imports: [NgIf, NgtsPointsBuffers, NgtsPointsInstances, NgTemplateOutlet],
500
- providers: [{ provide: NgtsPointsInput, useExisting: NgtsPoints }],
501
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
502
- }]
503
- }], propDecorators: { content: [{
504
- type: ContentChild,
505
- args: [NgtsSobaContent, { static: true, read: TemplateRef }]
506
- }] } });
677
+ }], ctorParameters: () => [] });
507
678
 
508
679
  class SegmentObject {
509
680
  constructor() {
510
- this.color = new THREE.Color('white');
511
- this.start = new THREE.Vector3(0, 0, 0);
512
- this.end = new THREE.Vector3(0, 0, 0);
681
+ this.color = new Color('white');
682
+ this.start = new Vector3(0, 0, 0);
683
+ this.end = new Vector3(0, 0, 0);
513
684
  }
514
685
  }
515
686
 
516
- const normPos = (pos) => pos instanceof THREE.Vector3
517
- ? pos
518
- : new THREE.Vector3(...(typeof pos === 'number' ? [pos, pos, pos] : pos));
519
- extend({ SegmentObject });
520
- const [injectNgtsSegmentsApi, provideNgtsSegmentsApi] = createInjectionToken((segments) => segments.api, { isRoot: false, deps: [forwardRef(() => NgtsSegments)] });
521
687
  class NgtsSegment {
522
688
  constructor() {
523
- this.inputs = signalStore({});
524
- this.segmentRef = injectNgtRef();
525
- this.segmentsApi = injectNgtsSegmentsApi();
526
- this.injector = inject(Injector);
527
- this.zone = inject(NgZone);
528
- this.start = this.inputs.select('start');
529
- this.end = this.inputs.select('end');
530
- this.normalizedStart = computed(() => normPos(this.start()));
531
- this.normalizedEnd = computed(() => normPos(this.end()));
532
- this.color = this.inputs.select('color');
533
- }
534
- set _start(start) {
535
- this.inputs.set({ start });
536
- }
537
- set _end(end) {
538
- this.inputs.set({ end });
539
- }
540
- set _color(color) {
541
- this.inputs.set({ color });
542
- }
543
- ngOnInit() {
544
- effect((onCleanup) => {
545
- const cleanup = this.zone.runOutsideAngular(() => {
546
- const api = this.segmentsApi();
547
- return api.subscribe(this.segmentRef);
689
+ this.start = input.required();
690
+ this.end = input.required();
691
+ this.color = input();
692
+ this.normalizedStart = vector3(this.start);
693
+ this.normalizedEnd = vector3(this.end);
694
+ this.segmentRef = viewChild.required('segment');
695
+ this.segments = inject(NgtsSegments);
696
+ extend({ SegmentObject });
697
+ const autoEffect = injectAutoEffect();
698
+ afterNextRender(() => {
699
+ autoEffect(() => {
700
+ return this.segments.subscribe(this.segmentRef());
548
701
  });
549
- onCleanup(cleanup);
550
- }, { injector: this.injector });
702
+ });
551
703
  }
552
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsSegment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
553
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NgtsSegment, isStandalone: true, selector: "ngts-segment", inputs: { segmentRef: "segmentRef", _start: ["start", "_start"], _end: ["end", "_end"], _color: ["color", "_color"] }, ngImport: i0, template: `
554
- <ngt-segment-object [ref]="segmentRef" [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
555
- `, isInline: true }); }
704
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsSegment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
705
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsSegment, isStandalone: true, selector: "ngts-segment", inputs: { start: { classPropertyName: "start", publicName: "start", isSignal: true, isRequired: true, transformFunction: null }, end: { classPropertyName: "end", publicName: "end", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "segmentRef", first: true, predicate: ["segment"], descendants: true, isSignal: true }], ngImport: i0, template: `
706
+ <ngt-segment-object #segment [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
707
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
556
708
  }
557
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsSegment, decorators: [{
709
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsSegment, decorators: [{
558
710
  type: Component,
559
711
  args: [{
560
712
  selector: 'ngts-segment',
561
713
  standalone: true,
562
714
  template: `
563
- <ngt-segment-object [ref]="segmentRef" [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
715
+ <ngt-segment-object #segment [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
564
716
  `,
565
717
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
718
+ changeDetection: ChangeDetectionStrategy.OnPush,
566
719
  }]
567
- }], propDecorators: { segmentRef: [{
568
- type: Input
569
- }], _start: [{
570
- type: Input,
571
- args: [{ alias: 'start' }]
572
- }], _end: [{
573
- type: Input,
574
- args: [{ alias: 'end' }]
575
- }], _color: [{
576
- type: Input,
577
- args: [{ alias: 'color' }]
578
- }] } });
720
+ }], ctorParameters: () => [] });
721
+ const defaultSegmentsOptions = {
722
+ limit: 1000,
723
+ lineWidth: 1.0,
724
+ };
579
725
  class NgtsSegments {
580
- set _limit(limit) {
581
- this.inputs.set({ limit });
582
- }
583
- set _lineWidth(lineWidth) {
584
- this.inputs.set({ lineWidth });
585
- }
586
726
  constructor() {
587
- this.inputs = signalStore({ limit: 1000, lineWidth: 1 });
588
- this.segmentsRef = injectNgtRef();
589
- this.segments = signal([]);
590
- this.limit = this.inputs.select('limit');
591
- this.positions = computed(() => Array(this.limit() * 6).fill(0));
592
- this.colors = computed(() => Array(this.limit() * 6).fill(0));
593
- this.resolution = new THREE.Vector2(512, 512);
594
- this.lineWidth = this.inputs.select('lineWidth');
727
+ this.options = input(defaultSegmentsOptions, { transform: mergeInputs(defaultSegmentsOptions) });
728
+ this.parameters = omit(this.options, ['limit', 'lineWidth']);
729
+ this.lineWidth = pick(this.options, 'lineWidth');
730
+ this.limit = pick(this.options, 'limit');
731
+ this.lineRef = viewChild('line');
732
+ this.segments = [];
595
733
  this.line = new Line2();
596
734
  this.material = new LineMaterial();
597
735
  this.geometry = new LineSegmentsGeometry();
598
- this.api = computed(() => ({
599
- subscribe: (segmentRef) => {
600
- untracked(() => {
601
- this.segments.update((s) => [...s, segmentRef]);
602
- });
603
- return () => {
604
- untracked(() => {
605
- this.segments.update((s) => s.filter((segment) => segment !== segmentRef));
606
- });
607
- };
608
- },
736
+ this.resolution = new Vector2(512, 512);
737
+ this.materialParameters = computed(() => ({
738
+ vertexColors: true,
739
+ resolution: this.resolution,
740
+ linewidth: this.lineWidth(),
741
+ ...this.parameters(),
609
742
  }));
610
- this.beforeRender();
611
- }
612
- beforeRender() {
743
+ this.positions = computed(() => {
744
+ const limit = this.limit();
745
+ return Array.from({ length: limit * 6 }, () => 0);
746
+ });
747
+ this.colors = computed(() => {
748
+ const limit = this.limit();
749
+ return Array.from({ length: limit * 6 }, () => 0);
750
+ });
613
751
  injectBeforeRender(() => {
614
- const [segments, limit, positions, colors] = [
615
- this.segments(),
616
- this.limit(),
617
- this.positions(),
618
- this.colors(),
619
- ];
752
+ const [limit, positions, colors] = [this.limit(), this.positions(), this.colors()];
620
753
  for (let i = 0; i < limit; i++) {
621
- const segmentRef = segments[i];
622
- const segment = is.ref(segmentRef) ? segmentRef.nativeElement : segmentRef;
754
+ const segment = resolveRef(this.segments[i]);
623
755
  if (segment) {
624
756
  positions[i * 6 + 0] = segment.start.x;
625
757
  positions[i * 6 + 1] = segment.start.y;
@@ -640,58 +772,42 @@ class NgtsSegments {
640
772
  this.line.computeLineDistances();
641
773
  });
642
774
  }
643
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsSegments, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
644
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NgtsSegments, isStandalone: true, selector: "ngts-segments", inputs: { segmentsRef: "segmentsRef", _limit: ["limit", "_limit"], _lineWidth: ["lineWidth", "_lineWidth"] }, providers: [provideNgtsSegmentsApi()], ngImport: i0, template: `
645
- <ngt-primitive *args="[line]" [ref]="segmentsRef">
775
+ subscribe(ref) {
776
+ this.segments.push(ref);
777
+ return () => {
778
+ this.segments = this.segments.filter((i) => i !== ref);
779
+ };
780
+ }
781
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsSegments, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
782
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsSegments, isStandalone: true, selector: "ngts-segments", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lineRef", first: true, predicate: ["line"], descendants: true, isSignal: true }], ngImport: i0, template: `
783
+ <ngt-primitive #line *args="[line]">
646
784
  <ngt-primitive *args="[geometry]" attach="geometry" />
647
- <ngt-primitive
648
- *args="[material]"
649
- attach="material"
650
- ngtCompound
651
- [vertexColors]="true"
652
- [resolution]="resolution"
653
- [linewidth]="lineWidth()"
654
- />
785
+ <ngt-primitive *args="[material]" attach="material" [parameters]="materialParameters()" />
655
786
  <ng-content />
656
787
  </ngt-primitive>
657
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
788
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
658
789
  }
659
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsSegments, decorators: [{
790
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsSegments, decorators: [{
660
791
  type: Component,
661
792
  args: [{
662
793
  selector: 'ngts-segments',
663
794
  standalone: true,
664
795
  template: `
665
- <ngt-primitive *args="[line]" [ref]="segmentsRef">
796
+ <ngt-primitive #line *args="[line]">
666
797
  <ngt-primitive *args="[geometry]" attach="geometry" />
667
- <ngt-primitive
668
- *args="[material]"
669
- attach="material"
670
- ngtCompound
671
- [vertexColors]="true"
672
- [resolution]="resolution"
673
- [linewidth]="lineWidth()"
674
- />
798
+ <ngt-primitive *args="[material]" attach="material" [parameters]="materialParameters()" />
675
799
  <ng-content />
676
800
  </ngt-primitive>
677
801
  `,
678
- imports: [NgtArgs],
679
- providers: [provideNgtsSegmentsApi()],
680
802
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
803
+ changeDetection: ChangeDetectionStrategy.OnPush,
804
+ imports: [NgtArgs],
681
805
  }]
682
- }], ctorParameters: function () { return []; }, propDecorators: { segmentsRef: [{
683
- type: Input
684
- }], _limit: [{
685
- type: Input,
686
- args: [{ alias: 'limit' }]
687
- }], _lineWidth: [{
688
- type: Input,
689
- args: [{ alias: 'lineWidth' }]
690
- }] } });
806
+ }], ctorParameters: () => [] });
691
807
 
692
808
  /**
693
809
  * Generated bundle index. Do not edit.
694
810
  */
695
811
 
696
- export { NgtsAdaptiveDpr, NgtsAdaptiveEvents, NgtsPoint, NgtsPoints, NgtsPointsBuffers, NgtsPointsInstances, NgtsSegment, NgtsSegments, SegmentObject, injectNgtsPointsInstanceApi, injectNgtsSegmentsApi, provideNgtsPointsInstancesApi, provideNgtsSegmentsApi };
812
+ export { NgtsAdaptiveDpr, NgtsAdaptiveEvents, NgtsDetailed, NgtsInstance, NgtsInstances, NgtsPoint, NgtsPointsBuffer, NgtsPointsInstances, NgtsSegment, NgtsSegments };
697
813
  //# sourceMappingURL=angular-three-soba-performances.mjs.map